PageSourceSearch

https://www.martinguitar.com/on/demandware.static/Sites-MartinGuit…/-/default/v1790099069325/js/main.js

js martinguitar.com collected 2026-09-24 09:18:37 UTC 2,977,638 bytes, 80,415 lines download raw bytes

vendor: 3,686 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap
2/******/ 	// The module cache
3/******/ 	var installedModules = {};
4/******/
5/******/ 	// The require function
6/******/ 	function __webpack_require__(moduleId) {
7/******/
8/******/ 		// Check if module is in cache
9/******/ 		if(installedModules[moduleId]) {
10/******/ 			return installedModules[moduleId].exports;
11/******/ 		}
12/******/ 		// Create a new module (and put it into the cache)
13/******/ 		var module = installedModules[moduleId] = {
14/******/ 			i: moduleId,
15/******/ 			l: false,
16/******/ 			exports: {}
17/******/ 		};
18/******/
19/******/ 		// Execute the module function
20/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
21/******/
22/******/ 		// Flag the module as loaded
23/******/ 		module.l = true;
24/******/
25/******/ 		// Return the exports of the module
26/******/ 		return module.exports;
27/******/ 	}
28/******/
29/******/
30/******/ 	// expose the modules object (__webpack_modules__)
31/******/ 	__webpack_require__.m = modules;
32/******/
33/******/ 	// expose the module cache
34/******/ 	__webpack_require__.c = installedModules;
35/******/
36/******/ 	// define getter function for harmony exports
37/******/ 	__webpack_require__.d = function(exports, name, getter) {
38/******/ 		if(!__webpack_require__.o(exports, name)) {
39/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
40/******/ 		}
41/******/ 	};
42/******/
43/******/ 	// define __esModule on exports
44/******/ 	__webpack_require__.r = function(exports) {
45/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
46/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
47/******/ 		}
48/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
49/******/ 	};
50/******/
51/******/ 	// create a fake namespace object
52/******/ 	// mode & 1: value is a module id, require it
53/******/ 	// mode & 2: merge all properties of value into the ns
54/******/ 	// mode & 4: return value when already ns object
55/******/ 	// mode & 8|1: behave like require
56/******/ 	__webpack_require__.t = function(value, mode) {
57/******/ 		if(mode & 1) value = __webpack_require__(value);
58/******/ 		if(mode & 8) return value;
59/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
60/******/ 		var ns = Object.create(null);
61/******/ 		__webpack_require__.r(ns);
62/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
63/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
64/******/ 		return ns;
65/******/ 	};
66/******/
67/******/ 	// getDefaultExport function for compatibility with non-harmony modules
68/******/ 	__webpack_require__.n = function(module) {
69/******/ 		var getter = module && module.__esModule ?
70/******/ 			function getDefault() { return module['default']; } :
71/******/ 			function getModuleExports() { return module; };
72/******/ 		__webpack_require__.d(getter, 'a', getter);
73/******/ 		return getter;
74/******/ 	};
75/******/
76/******/ 	// Object.prototype.hasOwnProperty.call
77/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
78/******/
79/******/ 	// __webpack_public_path__
80/******/ 	__webpack_require__.p = "";
81/******/
82/******/
83/******/ 	// Load entry module and return exports
84/******/ 	return __webpack_require__(__webpack_require__.s = "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/main.js");
85/******/ })
86/************************************************************************/
87/******/ ({
88
89/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/backstage/backstage.js":
90/*!******************************************************************************************************************!*\
91  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/backstage/backstage.js ***!
92  \******************************************************************************************************************/
93/*! no static exports found */
94/***/ (function(module, exports) {
95
96module.exports = function () {
97  $('body').on('click', '.backstage-add-premium-to-cart', function (e) {
98    e.preventDefault(); // Serialize form, grab AJAX URL
99
100    var url = window.CachedData.premiumSignupSubmit; // Make AJAX call
101
102    $.ajax({
103      url: url,
104      success: function success(data) {
105        if (data.successMessage) {
106          successModal(data.redirectUrl);
107        } else if (data.success) {
108          var _window$CachedData;
109
110          if ((_window$CachedData = window.CachedData) !== null && _window$CachedData !== void 0 && _window$CachedData.flyoutFlyoutCreateAccountUrl && data.redirectUrl.startsWith(window.CachedData.flyoutLoginShowUrl)) {
111            $('#backstage-modal').modal('hide');
112            $('body').trigger('initFlyout', {
113              url: window.CachedData.flyoutFlyoutCreateAccountUrl
114            });
115          } else {
116            window.location = data.redirectUrl;
117          }
118        } else {
119          console.log(data.errors);
120        }
121      }
122    });
123  });
124};
125
126function successModal(redirectUrl) {
127  $('#backstage-modal .success-message').removeClass('d-none');
128  $('#backstage-modal .survey-content').html('');
129  $('#backstage-modal').on('hidden.bs.modal', function () {
130    if (redirectUrl) {
131      window.location = redirectUrl;
132    }
133  });
134}
135
136/***/ }),
137
138/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/antavo.js":
139/*!****************************************************************************************************************!*\
140  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/antavo.js ***!
141  \****************************************************************************************************************/
142/*! no static exports found */
143/***/ (function(module, exports, __webpack_require__) {
144
145"use strict";
146
147/**
148 * Antavo loyalty client-side wiring.
149 *
150 * The vendor cartridge ships its client logic as full reimplementations of the
151 * base cart/checkout files; importing those wholesale would shadow this
152 * project's customizations, so this module extracts only the Antavo-specific
153 * behavior as processInclude-d setup methods.
154 *
155 * Anything that participates in the checkout state machine lives in
156 * js/checkout.js instead — each webpack entry is a separate bundle with its own
157 * module cache, so wraps made here would be invisible to the state machine.
158 */
159
160function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
161
162var toast = __webpack_require__(/*! core/components/toast */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toast.js");
163/**
164 * PayPal and Affirm cannot combine with the LOYALTY_PAY tender: hide their
165 * billing tabs and panes while points are applied. Elements the server already
166 * suppressed at render are absent from the DOM, so restoring is a no-op there.
167 * @param {boolean} suppressed - true while points are applied
168 */
169
170
171function setAlternateTendersSuppressed(suppressed) {
172  var $tabs = $('.payment-options .nav-item[data-method-id="PayPal"], .payment-options .nav-item[data-method-id="Affirm"]');
173  $tabs.toggleClass('d-none', suppressed);
174  $('#paypal-content, #affirm-payment-content').toggleClass('d-none', suppressed); // If the suppressed tab was active, fall back to the credit card tab so the
175  // active pane (which supplies dwfrm_billing_paymentMethod) stays consistent.
176
177  if (suppressed && $tabs.find('.nav-link.active').length) {
178    $('.payment-options .nav-item[data-method-id="CREDIT_CARD"] .nav-link').trigger('click');
179  }
180}
181/**
182 * Format a points value as the currency amount it redeems for. Preview-only:
183 * applied-state money always comes back server-formatted.
184 * @param {jQuery} $form - the .loyalty-form element
185 * @param {number} points - points to convert
186 * @returns {string} formatted currency amount
187 */
188
189
190function formatPointsValue($form, points) {
191  var burnPoints = parseFloat($form.attr('data-burn-points'));
192  var burnAmount = parseFloat($form.attr('data-burn-amount'));
193  var amount = burnPoints > 0 ? points * (burnAmount / burnPoints) : 0;
194  return new Intl.NumberFormat(undefined, {
195    style: 'currency',
196    currency: $form.attr('data-currency-code')
197  }).format(amount);
198}
199/**
200 * Recompute data-redeem-all-points, the redemption ceiling in points:
201 * min(spendable balance, points needed to cover the redeemable amount). The
202 * server renders the initial value, but the basket can move afterwards
203 * (shipping method, tax, promotions), so recompute on every broadcast. The
204 * basis is the merchandise subtotal, not the gross total, so points never
205 * stretch over tax and shipping; LOYALTY_PAY is a tender and does not reduce
206 * it, so the ceiling is the same whether or not points are applied.
207 * @param {jQuery} $form - the .loyalty-form element
208 * @param {number} redeemableAmount - order totals.antavoRedeemableAmount
209 */
210
211
212function syncRedeemAll($form, redeemableAmount) {
213  var burnPoints = parseFloat($form.attr('data-burn-points'));
214  var burnAmount = parseFloat($form.attr('data-burn-amount'));
215  var spendable = parseInt($form.attr('data-spendable'), 10) || 0;
216
217  if (!(redeemableAmount > 0) || !(burnAmount > 0) || !(burnPoints > 0)) {
218    return;
219  }
220
221  var requiredPoints = Math.ceil(redeemableAmount / burnAmount * burnPoints);
222  $form.attr('data-redeem-all-points', Math.min(spendable, requiredPoints));
223}
224/**
225 * Read the manual input once and derive every figure the control needs. The
226 * posted value is clamped to the spendable balance because the route errors —
227 * not clamps — past it; the redemption ceiling bounds the preview.
228 * @param {jQuery} $form - the .loyalty-form element
229 * @returns {Object} typed points, spendable balance, postPoints
230 *   (balance-clamped value safe to POST), previewPoints (fully clamped value
231 *   to preview), and the overBalance / overCeiling flags
232 */
233
234
235function getInputState($form) {
236  var typed = parseInt($form.find('.antavo-points-input').val(), 10) || 0;
237  var spendable = parseInt($form.attr('data-spendable'), 10) || 0;
238  var redeemAllPoints = parseInt($form.attr('data-redeem-all-points'), 10) || 0;
239  return {
240    typed: typed,
241    spendable: spendable,
242    postPoints: Math.min(typed, spendable),
243    previewPoints: Math.min(typed, redeemAllPoints),
244    overBalance: typed > spendable,
245    overCeiling: typed > redeemAllPoints
246  };
247}
248/**
249 * Sync the default body with what's typed: enable Apply only for a usable
250 * amount, show the live discount preview, and explain whichever cap the typed
251 * amount ran into. One note element carries both messages; the balance note
252 * wins because it is the more fundamental limit.
253 * @param {jQuery} $form - the .loyalty-form element
254 */
255
256
257function updatePreview($form) {
258  var state = getInputState($form);
259  var hasInput = $form.find('.antavo-points-input').val() !== '';
260  var applied = $('.antavo-payment-form').attr('data-applied') === 'true';
261  $form.find('.antavo-redeem-btn').prop('disabled', state.previewPoints < 1);
262  var showPreview = hasInput && state.previewPoints >= 1 && !applied;
263  $form.find('.antavo-redeem-preview').toggleClass('d-none', !showPreview).text(showPreview ? $form.attr('data-msg-discount').replace('{0}', formatPointsValue($form, state.previewPoints)) : '');
264  var note = '';
265
266  if (state.overBalance) {
267    note = $form.attr('data-msg-clamp').replace('{0}', state.spendable).replace('{1}', state.previewPoints);
268  } else if (state.overCeiling && state.previewPoints >= 1) {
269    note = $form.attr('data-msg-cap').replace('{0}', state.previewPoints);
270  }
271
272  $form.find('.antavo-redeem-clamp-note').toggleClass('d-none', note === '').text(note);
273}
274/**
275 * Flip the control between its default (input) and applied (success bar)
276 * bodies. data-applied is the single state flag the rest of the module keys off.
277 * @param {boolean} applied - true to show the applied body
278 */
279
280
281function setRedemptionBody(applied) {
282  $('.antavo-payment-form').attr('data-applied', applied ? 'true' : 'false');
283  $('.antavo-redeem-default').toggleClass('d-none', applied);
284  $('.antavo-redeem-applied').toggleClass('d-none', !applied);
285}
286/**
287 * Write an apply result into the applied body.
288 * @param {jQuery} $form - the .loyalty-form element
289 * @param {number} applied - points the server actually redeemed
290 * @param {string} discount - server-formatted discount amount
291 */
292
293
294function fillAppliedState($form, applied, discount) {
295  $form.find('.antavo-applied-points-value').text(applied);
296  $form.find('.antavo-applied-discount').text($form.attr('data-msg-discount').replace('{0}', discount));
297}
298/**
299 * Reset the loyalty-owned checkout UI to the no-redemption state. This module
300 * toggles only what no checkout listener manages; everything else (totals,
301 * payment regions, billing fields, summaries) belongs to the
302 * checkout:updateCheckoutView listeners, so both callers pair this with that
303 * broadcast.
304 */
305
306
307function resetRedemptionUI() {
308  var $form = $('.loyalty-form');
309  setRedemptionBody(false);
310  $form.find('.antavo-points-input').val('');
311  $form.find('.antavo-redeem-btn').prop('disabled', true);
312  $form.find('.antavo-redeem-preview, .antavo-redeem-clamp-note').addClass('d-none').text('');
313  $form.find('.antavo-applied-points-value, .antavo-applied-discount').text('');
314  $('.order-total-summary .antavo-item').addClass('d-none'); // Revert the loyalty-owned pieces of the full-coverage UX.
315
316  $('.payment-options-block').removeClass('d-none');
317  $('.antavo-submit-payment').addClass('d-none').attr('data-loyalty-enabled', 'false');
318  $('.submit-payment').removeClass('d-none');
319  setAlternateTendersSuppressed(false);
320}
321/**
322 * POST the loyalty form to Antavo-SubmitPayment with an explicit points value.
323 * The form is serialized so the CSRF token rides along; the points field is
324 * overridden because Apply Maximum posts the full spendable balance regardless
325 * of what the input holds.
326 * @param {jQuery} $form - the .loyalty-form element
327 * @param {number} points - points to redeem
328 */
329
330
331function applyPoints($form, points) {
332  $.spinner().start();
333  var pointsFieldName = $form.find('.antavo-points-input').attr('name');
334  var params = $form.serializeArray().map(function (param) {
335    return param.name === pointsFieldName ? {
336      name: param.name,
337      value: points
338    } : param;
339  });
340  $.ajax({
341    url: $form.attr('action'),
342    type: 'POST',
343    dataType: 'json',
344    data: $.param(params),
345    success: function success(data) {
346      $.spinner().stop();
347      $form.find('.invalid-feedback').hide().text('');
348
349      if (!data.resultObj || data.resultObj.error) {
350        $form.find('.invalid-feedback').text(data.resultObj && data.resultObj.message || '').show();
351        return;
352      }
353
354      var applied = data.resultObj.totalPointsSpent;
355      var discount = data.order && data.order.totals ? data.order.totals.burnedAntavoPoints : '';
356      setAlternateTendersSuppressed(true); // The route may have applied fewer points than posted; the ceiling
357      // self-heals via loyaltyRedeemAllSync off the broadcast below.
358
359      fillAppliedState($form, applied, discount);
360      setRedemptionBody(true);
361      $form.find('.antavo-redeem-preview, .antavo-redeem-clamp-note').addClass('d-none').text(''); // Loyalty-owned summary row (no checkout listener manages it).
362
363      $('.order-total-summary .antavo-item .antavo-total').text('-' + discount);
364      $('.order-total-summary .antavo-item').removeClass('d-none'); // Full coverage: no payment is required, so hide the payment
365      // options and swap the submit buttons. The swapped button's click
366      // flows through the state machine into the handlePaymentStage wrap
367      // (js/checkout.js), which branches on data-loyalty-enabled and
368      // submits paymentMethod=LOYALTY_PAY.
369
370      if (data.resultObj.antavoPointsEnough) {
371        $('.payment-options-block').addClass('d-none');
372        $('.submit-payment').addClass('d-none');
373        $('.antavo-submit-payment').removeClass('d-none'); // data-loyalty-enabled renders server-side; keep it in sync
374        // with the live loyalty state.
375
376        $('.antavo-submit-payment').attr('data-loyalty-enabled', 'true');
377      } else {
378        $('.payment-options-block').removeClass('d-none');
379        $('.antavo-submit-payment').addClass('d-none').attr('data-loyalty-enabled', 'false');
380        $('.submit-payment').removeClass('d-none');
381      } // Applying points is a basket mutation like any other: broadcast
382      // the canonical resync event so the checkout listeners (totals,
383      // zero-due payment regions, billing info) update themselves —
384      // hand-patching subsets of that UI here drifts out of sync.
385
386
387      $('body').trigger('checkout:updateCheckoutView', {
388        order: data.order,
389        customer: data.customer
390      });
391    },
392    error: function error() {
393      $.spinner().stop();
394    }
395  });
396}
397/**
398 * POST to Antavo-RemovePoints and reset the control and checkout UI to the
399 * no-redemption state.
400 * @param {jQuery} $form - the .loyalty-form element
401 */
402
403
404function removePoints($form) {
405  $.spinner().start();
406  $.ajax({
407    url: $form.attr('data-remove-url'),
408    type: 'POST',
409    dataType: 'json',
410    data: {},
411    success: function success(data) {
412      $.spinner().stop();
413      $form.find('.invalid-feedback').hide().text('');
414
415      if (data.error) {
416        $form.find('.invalid-feedback').text(data.message || '').show();
417        return;
418      }
419
420      resetRedemptionUI(); // Broadcast the canonical resync event (see the applyPoints note);
421      // without it the zero-due listeners never hear about the removal
422      // and the billing-address fields stay hidden.
423
424      $('body').trigger('checkout:updateCheckoutView', {
425        order: data.order,
426        customer: data.customer
427      });
428    },
429    error: function error() {
430      $.spinner().stop();
431    }
432  });
433}
434
435module.exports = {
436  /**
437   * Refresh the cart-page earn-points value on every cart:update, which
438   * fires with the fresh cart model after every cart mutation. Only the
439   * number inside the server-rendered totals row is updated, leaving the
440   * enrollment-aware message untouched.
441   */
442  cartPoints: function cartPoints() {
443    $('body').on('cart:update', function (e, data) {
444      if (!data || !data.antavoRewardPoints) return;
445      var points = data.antavoRewardPoints.points;
446      if (points === undefined || points === null) return; // The localized unit rides in data-points-unit so no copy is
447      // hard-coded here.
448
449      var $value = $('.antavo-cart-points .antavo-points-value');
450      $value.text(points + ' ' + ($value.attr('data-points-unit') || ''));
451    });
452  },
453
454  /**
455   * Explicit Rewards Points redemption. Typing only updates the preview;
456   * nothing commits until Apply Points (the form's submit, so Enter works
457   * too) or Apply Maximum is clicked. The posted value is clamped to the
458   * member's balance client-side because the route errors — not clamps —
459   * past it; the route caps to the merchandise subtotal, which is why Apply
460   * Maximum can safely post the whole balance.
461   */
462  loyaltySubmit: function loyaltySubmit() {
463    $(document).on('input', '.loyalty-form .antavo-points-input', function () {
464      // Whole positive numbers only — strip anything parseInt could
465      // misread ("-", ".", "e", pasted text).
466      var digits = this.value.replace(/\D/g, '');
467
468      if (this.value !== digits) {
469        this.value = digits;
470      }
471
472      updatePreview($(this).closest('.loyalty-form'));
473    });
474    $(document).on('submit', '.loyalty-form', function (e) {
475      e.preventDefault();
476      var $form = $(this);
477      var state = getInputState($form); // Enter submits the form even while the Apply button is disabled.
478
479      if (state.postPoints >= 1) {
480        applyPoints($form, state.postPoints);
481      }
482    });
483    $(document).on('click', '.antavo-redeem-all-btn', function () {
484      var $form = $(this).closest('.loyalty-form');
485      applyPoints($form, parseInt($form.attr('data-spendable'), 10) || 0);
486    });
487  },
488
489  /**
490   * The applied body's Remove action (adjusting an amount is remove + redeem
491   * again). The legacy .remove-points-spent selector stays wired in case
492   * another surface still renders it.
493   */
494  loyaltyRemove: function loyaltyRemove() {
495    $(document).on('click', '.antavo-remove-points, .remove-points-spent', function (e) {
496      e.preventDefault();
497      removePoints($('.loyalty-form'));
498    });
499  },
500
501  /**
502   * The server strips the LOYALTY_PAY instrument whenever a basket change
503   * alters the total (e.g. a shipping edit changes taxes). If a broadcast
504   * order model no longer carries LOYALTY_PAY while the control still shows
505   * an applied state, reset it and restore the payment UI.
506   */
507  loyaltyBasketSync: function loyaltyBasketSync() {
508    $('body').on('checkout:updateCheckoutView', function (e, data) {
509      var $control = $('.antavo-payment-form');
510
511      if (!$control.length || $control.attr('data-applied') !== 'true' || !data || !data.order || !data.order.billing || !data.order.billing.payment) {
512        return;
513      }
514
515      var instruments = data.order.billing.payment.selectedPaymentInstruments || [];
516      var hasLoyaltyPay = instruments.some(function (instrument) {
517        return instrument.paymentMethod === 'LOYALTY_PAY';
518      });
519
520      if (!hasLoyaltyPay) {
521        resetRedemptionUI();
522      }
523    });
524  },
525
526  /**
527   * The redemption ceiling moves when the basket moves (shipping method,
528   * tax, promotions, cart edits). Recompute it from every broadcast order
529   * model so the control never lets more points on than the route accepts.
530   */
531  loyaltyRedeemAllSync: function loyaltyRedeemAllSync() {
532    $('body').on('checkout:updateCheckoutView', function (e, data) {
533      var $form = $('.loyalty-form');
534
535      if (!$form.length || !data || !data.order || !data.order.totals) {
536        return;
537      }
538
539      syncRedeemAll($form, data.order.totals.antavoRedeemableAmount);
540    });
541  },
542
543  /**
544   * The checkout points-to-earn card is server-rendered once, but its earn
545   * basis is net of applied points, so the number has to fall as points go
546   * on and recover when they come off; totals.antavoEarnPoints carries the
547   * recomputed value on every broadcast. A null or zero value hides the whole
548   * card rather than showing "0 Points", matching the server render. Only
549   * the value span is rewritten so the enrollment-aware message and tooltip
550   * are left alone.
551   */
552  checkoutPointsSync: function checkoutPointsSync() {
553    $('body').on('checkout:updateCheckoutView', function (e, data) {
554      var $card = $('.antavo-checkout-points');
555
556      if (!$card.length || !data || !data.order || !data.order.totals) {
557        return;
558      }
559
560      var points = data.order.totals.antavoEarnPoints;
561      var earns = points !== undefined && points !== null && points > 0;
562      $card.toggleClass('d-none', !earns);
563
564      if (earns) {
565        var $value = $card.find('.antavo-points-value');
566        $value.text(points + ' ' + ($value.attr('data-points-unit') || ''));
567      }
568    });
569  },
570
571  /**
572   * Hide the whole Payment card while applied points cover the entire
573   * basket — no payment is collected in that state. The server renders the
574   * initial state; this keys the same rule off every broadcast. Digital-only
575   * orders are exempt: they skip the shipping address, so the billing block
576   * is the only source of the member's name and phone. The has-LOYALTY_PAY
577   * condition keeps the gift-certificate zero-due flow untouched.
578   */
579  fullCoveragePaymentSection: function fullCoveragePaymentSection() {
580    $('body').on('checkout:updateCheckoutView', function (e, data) {
581      var $card = $('.card.payment-form');
582
583      if (!$card.length || $card.attr('data-digital-only') === 'true' || !data || !data.order || !data.order.totals || !data.order.billing || !data.order.billing.payment) {
584        return;
585      }
586
587      var instruments = data.order.billing.payment.selectedPaymentInstruments || [];
588      var hasLoyaltyPay = instruments.some(function (instrument) {
589        return instrument.paymentMethod === 'LOYALTY_PAY';
590      });
591      var isFullCoverage = hasLoyaltyPay && !data.order.totals.grandTotalLessGiftCertificatePaymentInstrumentsValue;
592      $card.toggleClass('d-none', isFullCoverage);
593    });
594  },
595
596  /**
597   * Modular "Join Backstage" enrollment button: delegated handler for any
598   * element carrying [data-component-loyalty-enroll] (Page Designer button
599   * or hand-authored content asset). The route returns a redirectUrl for
600   * both outcomes: an authenticated customer is enrolled, a guest is sent
601   * to registration to complete joining from there.
602   *
603   * Authored content links straight to the route instead of carrying the
604   * attribute, so whoever edits the page sees a real target in the link
605   * dialog rather than a bare "#". Those links are adopted here. The route
606   * is POST-only, so a prefetch or a no-JS click cannot enroll anyone.
607   */
608  loyaltyEnroll: function loyaltyEnroll() {
609    $('a[href*="Account-OptIn"]').attr('data-component-loyalty-enroll', '');
610    $('body').on('click', '[data-component-loyalty-enroll]', function (e) {
611      e.preventDefault();
612      var $btn = $(this);
613      var url = $btn.attr('data-url') || window.CachedData && window.CachedData.loyaltyEnrollUrl; // Often an authored link rather than a button, where the disabled
614      // property does nothing, so in-flight state is tracked by hand.
615
616      if (!url || $btn.data('loyaltyEnrollBusy')) return;
617      $.spinner().start();
618      $btn.data('loyaltyEnrollBusy', true).prop('disabled', true);
619      $.ajax({
620        url: url,
621        method: 'POST',
622        dataType: 'json',
623        // Enrollment lands back on the page the button was clicked
624        // from, so the content around it re-renders for a member.
625        data: {
626          returnUrl: $btn.attr('data-return-url') || window.location.pathname + window.location.search
627        },
628        success: function success(data) {
629          $.spinner().stop(); // Guest with the login flyout enabled: open it in place
630          // instead of navigating to the full login page.
631
632          if (data && data.requiresLogin && data.flyoutUrl) {
633            $btn.data('loyaltyEnrollBusy', false).prop('disabled', false);
634            $('body').trigger('initFlyout', {
635              url: data.flyoutUrl
636            });
637            return;
638          }
639
640          if (data && data.redirectUrl) {
641            window.location.href = data.redirectUrl;
642            return;
643          }
644
645          $btn.data('loyaltyEnrollBusy', false).prop('disabled', false);
646        },
647        error: function error() {
648          $.spinner().stop();
649          $btn.data('loyaltyEnrollBusy', false).prop('disabled', false);
650          toast.methods.show('danger', 'We could not complete your request. Please try again.');
651        }
652      });
653    });
654  },
655
656  /**
657   * Modular "Leave Backstage" opt-out button. The button lives on cached
658   * content pages, so user state is checked fresh on click: the GET returns
659   * the opt-out modal HTML for an enrolled member, or a JSON message for a
660   * guest / signed-in non-member.
661   */
662  loyaltyUnenroll: function loyaltyUnenroll() {
663    $('body').on('click', '[data-component-loyalty-unenroll]', function (e) {
664      e.preventDefault();
665      var $btn = $(this);
666      var url = $btn.attr('data-url');
667      if (!url) return;
668      $.spinner().start();
669      $.ajax({
670        url: url,
671        method: 'GET',
672        success: function success(data) {
673          $.spinner().stop(); // JSON means guest or signed-in non-member: info toast only.
674
675          if (_typeof(data) === 'object') {
676            if (data && data.message) {
677              toast.methods.show('info', data.message);
678            }
679
680            return;
681          } // HTML means the opt-out modal: inject into a body container and open it.
682
683
684          var $container = $('#loyalty-optout-modal-container');
685
686          if (!$container.length) {
687            $container = $('<div id="loyalty-optout-modal-container"></div>').appendTo('body');
688          }
689
690          $container.html(data); // Klaviyo's promo bar sits at z-index 90000, above Bootstrap's
691          // default backdrop. Tag this modal's backdrop so _integrations.scss
692          // can lift it above the Klaviyo layer; Bootstrap appends the
693          // backdrop node on show, so it can only be reached once shown.
694
695          $('#optOutModal').one('shown.bs.modal', function () {
696            $('.modal-backdrop').addClass('optout-modal-backdrop');
697          }).modal('show');
698        },
699        error: function error() {
700          $.spinner().stop();
701          toast.methods.show('danger', 'We could not complete your request. Please try again.');
702        }
703      });
704    });
705    $('body').on('submit', 'form.optout', function (e) {
706      e.preventDefault();
707      var $form = $(this);
708      var $feedback = $form.find('.invalid-feedback');
709      $feedback.hide().text('');
710      $.spinner().start();
711      $.ajax({
712        url: $form.attr('action'),
713        method: 'POST',
714        dataType: 'json',
715        data: $form.serialize(),
716        success: function success(data) {
717          $.spinner().stop();
718
719          if (data && data.success && data.redirectUrl) {
720            window.location.href = data.redirectUrl;
721            return;
722          }
723
724          $feedback.text(data && data.message || 'We could not complete your request. Please try again.').show();
725        },
726        error: function error() {
727          $.spinner().stop();
728          $feedback.text('We could not complete your request. Please try again.').show();
729        }
730      });
731    });
732  },
733
734  /**
735   * Load more of the activity history in place. The rows arrive as
736   * server-rendered HTML so no date or points formatting is reimplemented in
737   * the browser.
738   *
739   * data-offset is a raw event cursor, not a page number: the feed filters
740   * out events belonging to the second points account, so a page of rows can
741   * consume any number of raw events. The server reports where it stopped
742   * and that value is written back onto the button for the next click. The
743   * control removes itself when the feed reports no more.
744   */
745  loyaltyActivityLoadMore: function loyaltyActivityLoadMore() {
746    $('body').on('click', '[data-component-loyalty-activity-more]', function (e) {
747      e.preventDefault();
748      var $btn = $(this);
749      var url = $btn.attr('data-url');
750      if (!url) return;
751      var $rows = $btn.closest('.backstage-activity').find('[data-loyalty-activity-rows]');
752      if (!$rows.length) return;
753      $.spinner().start();
754      $btn.prop('disabled', true);
755      $.ajax({
756        url: url,
757        method: 'GET',
758        dataType: 'json',
759        data: {
760          offset: $btn.attr('data-offset') || 0,
761          pageSize: $btn.attr('data-page-size') || 5,
762          // Echoed back so every page hides the same event types as
763          // the first one.
764          excludedActions: $btn.attr('data-excluded-actions') || ''
765        },
766        success: function success(data) {
767          $.spinner().stop();
768
769          if (!data || data.error) {
770            // Leave what is on screen and stop offering more rather
771            // than showing an error over a readable list.
772            $btn.remove();
773            return;
774          }
775
776          if (data.html) {
777            $rows.append(data.html);
778          }
779
780          $btn.attr('data-offset', data.nextOffset);
781
782          if (data.hasMore) {
783            $btn.prop('disabled', false);
784          } else {
785            $btn.remove();
786          }
787        },
788        error: function error() {
789          $.spinner().stop();
790          $btn.remove();
791        }
792      });
793    });
794  }
795};
796
797/***/ }),
798
799/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/clientSideValidation.js":
800/*!******************************************************************************************************************************!*\
801  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/clientSideValidation.js ***!
802  \******************************************************************************************************************************/
803/*! no static exports found */
804/***/ (function(module, exports, __webpack_require__) {
805
806"use strict";
807 // Copied from core to wrap password logic in a function & trigger on login:reinit event (for login flyout - account creation screen)
808
809var base = __webpack_require__(/*! base/components/clientSideValidation */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/clientSideValidation.js");
810/**
811 * Validate whole form. Requires `this` to be set to form object
812 * @param {jQuery.event} event - Event to be canceled if form is invalid.
813 * @returns {boolean} - Flag to indicate if form is valid
814 */
815
816
817base.validateForm = function (event) {
818  var valid = true,
819      $this = $(this);
819 // Add check for contact us form recaptcha since it is using v2
820
821  if (document.querySelector('form#contact-us')) {
822    document.querySelector("form#contact-us").addEventListener("submit", function (event) {
823      var response = grecaptcha.getResponse();
824
825      if (response.length === 0) {
826        // reCAPTCHA is not checked, form will not submit
827        document.querySelector('.recaptcha-container').scrollIntoView({
828          behavior: "smooth"
829        });
830        $('.recaptcha-container .invalid-feedback').addClass('d-block');
831        event.preventDefault();
832        return false;
833      } else {
834        // reCAPTCHA is checked, form will submit
835        $('.recaptcha-container .invalid-feedback').removeClass('d-block');
836      }
837    });
838  }
839
840  if (this.checkValidity && !this.checkValidity()) {
841    valid = false;
842
843    if (event) {
844      event.preventDefault();
845      event.stopPropagation();
846      event.stopImmediatePropagation();
847    }
848
849    if (!this.validity.valid) {
850      if ($this.is('input, select')) {
851        // handle where 'this' is a form field
852        $this.trigger('invalid', this.validity);
853      } else {
854        $this.find('input, select').each(function () {
855          // handle where 'this' is a form
856          $this.trigger('invalid', this.validity);
857        });
858      }
859    }
860  }
861
862  return valid;
863};
864/**
865 * Password Messaging Helper Functions
866 */
867
868
869function initPasswordMessaging() {
870  $('form:has(input[type^=password])').each(function (i, form) {
871    var $form = $(form),
872        $passwordFields = $form.find('input:password'),
873        $passwordInput = $form.find('.password-validate'),
874        $passwordHelper = $form.find('.password-validation-helper li'),
875        //multiple
876    $showPassword = $form.find("#show-password"); // change the border of the input field to alert the user of acceptance|error
877
878    $passwordInput.on('validatepassword', function (e) {
879      if ($passwordHelper.hasClass("error") || $passwordHelper.hasClass("empty")) {
880        $passwordInput.removeClass("is-valid").addClass("is-invalid");
881        $passwordHelper.not(".valid").addClass("error").removeClass("empty");
882      } else {
883        $passwordInput.addClass("is-valid").removeClass("is-invalid");
884      }
885    });
886    $passwordInput.on("keyup", function (e) {
887      var $this = $(this);
888      var value = $this.val(); // first check if the form is in error state, then re-eval
889
890      if ($this.hasClass("is-invalid")) {
891        // leave the "error" states until valid
892        $passwordHelper.trigger('checkrequirement', [value, 'valid empty']);
893        $this.trigger('validatepassword');
894      } else {
895        $passwordHelper.trigger('checkrequirement', [value, 'error valid empty']);
896      }
897
898      ;
899    }); // change input decoration when user leaves, attach event only once
900
901    $passwordInput.one("change", function (e) {
902      var $this = $(this);
903      $this.on("blur", function (e) {
904        $this.trigger('validatepassword');
905      });
906    });
907    /**
908     * Display validation messages and highlight
909     * each one of the requirements for the password
910     * @param {string} clearClasses - which classes to clear
911     */
912
913    $passwordHelper.on('checkrequirement', function (e, value, clearClasses) {
914      var $this = $(this).removeClass(clearClasses).removeClass('valid error empty');
915      var regex = new RegExp($this.data('val-regex'));
916
917      if (regex.test(value)) {
918        $this.addClass("valid");
919      } else if (!regex.test(value) && $passwordInput.focus) {
920        $this.addClass("empty error");
921      } else {
922        $this.addClass("error");
923      }
924    }); //show password checkbox
925
926    $showPassword.on('click', function (event) {
927      var $checkbox = $(event.target);
928      $passwordFields.each(function (index, element) {
929        $(element).attr('type', $checkbox.prop('checked') ? 'text' : 'password');
930      });
931    });
932  });
933}
934
935initPasswordMessaging();
936$('body').on('login:reinit', function () {
937  return initPasswordMessaging();
938});
939
940function validateFormFix(form, event) {
941  base.validateForm.call(form, event || null);
942}
943
944base.functions.validateForm = validateFormFix;
945module.exports = base;
946
947/***/ }),
948
949/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/consentTracking.js":
950/*!*************************************************************************************************************************!*\
951  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/consentTracking.js ***!
952  \*************************************************************************************************************************/
953/*! no static exports found */
954/***/ (function(module, exports, __webpack_require__) {
955
956"use strict";
957
958
959var base = __webpack_require__(/*! core/components/consentTracking */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/consentTracking.js");
960
961base.getString = function (urlAccept, textAccept) {
962  return "<div class=\"consent-drawer\" id=\"consent-tracking\" role=\"dialog\">\n            <div class=\"consent-text-wrapper\"></div>\n            <div class=\"consent-button-wrapper ml-auto\">\n                <button class=\"affirm btn btn-primary\" data-url=\"".concat(urlAccept, "\" autofocus>\n                ").concat(textAccept, "\n                </button>\n            </div>\n        </div>");
963};
964
965module.exports = base;
966
967/***/ }),
968
969/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/flyout.js":
970/*!****************************************************************************************************************!*\
971  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/flyout.js ***!
972  \****************************************************************************************************************/
973/*! no static exports found */
974/***/ (function(module, exports, __webpack_require__) {
975
976"use strict";
977
978
979function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
980
981var createErrorNotification = __webpack_require__(/*! base/components/errorNotification */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/errorNotification.js");
982
983var formValidation = __webpack_require__(/*! base/components/formValidation */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js");
984
985var recaptcha = __webpack_require__(/*! core/components/recaptcha */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/recaptcha.js");
986
987function setupLoginLinkOverride() {
988  var _window$CachedData;
989
990  if (!((_window$CachedData = window.CachedData) !== null && _window$CachedData !== void 0 && _window$CachedData.flyoutLoginShowUrl)) {
991    return;
992  }
993
994  var flyoutLoginShowUrl = window.CachedData.flyoutLoginShowUrl;
995  var flyoutFlyoutLoginUrl = window.CachedData.flyoutFlyoutLoginUrl;
996  var flyoutFlyoutCreateAccountUrl = window.CachedData.flyoutFlyoutCreateAccountUrl; // Find all <a> elements where href starts with the value of loginShowUrl
997
998  var selector = 'a[href^="' + flyoutLoginShowUrl + '"]';
999  $(selector).each(function () {
1000    var $this = $(this);
1001
1002    if (!$this.data('url')) {
1003      if ($this.attr('href').indexOf('action=register') > -1) {
1004        $this.attr('data-url', flyoutFlyoutCreateAccountUrl);
1005      } else {
1006        $this.attr('data-url', flyoutFlyoutLoginUrl);
1007      }
1008    }
1009  }).attr('data-target', '#flyout-login').addClass('flyout-login-toggler');
1010}
1011
1012function setupRecaptcha() {
1013  var _window$CachedData2;
1014
1015  // If the recaptchaSiteKey is missing, then recaptcha is disabled
1016  if (!((_window$CachedData2 = window.CachedData) !== null && _window$CachedData2 !== void 0 && _window$CachedData2.recaptchaSiteKey)) {
1017    return;
1018  } // Check if the script is already added to avoid duplicate loading
1019
1020
1021  if (document.querySelector('script[src*="recaptcha/api.js"]')) {
1022    console.log('Recaptcha script already loaded.');
1023    return;
1024  }
1025
1026  var recaptchaScript = document.createElement('script');
1027  recaptchaScript.src = "https://www.google.com/recaptcha/api.js?render=".concat(window.CachedData.recaptchaSiteKey);
1028  recaptchaScript.async = true;
1029  recaptchaScript.defer = true;
1030  document.head.appendChild(recaptchaScript);
1031}
1032
1033module.exports = {
1034  setupFlyout: function setupFlyout() {
1035    console.log('Flyout setup initialized.');
1036    var body = $('body');
1037    var flyoutSelector = '.flyout';
1038    var backdropClass = 'flyout-backdrop';
1039    var openClass = 'flyout-open';
1040    var showClass = 'show'; // Function to hide the flyout
1041
1042    var hideFlyout = function hideFlyout() {
1043      var $flyout = $(this);
1044      var $backdrop = $('.' + backdropClass);
1045      body.removeClass(openClass);
1046      $flyout.removeClass(showClass);
1047      $backdrop.removeClass(showClass).one('transitionend', function () {
1048        $(this).remove();
1049      });
1050    }; // Function to show the flyout
1051
1052
1053    var showFlyout = function showFlyout() {
1054      var $flyout = $(this);
1055      var $backdrop = $('<div>', {
1056        "class": backdropClass
1057      });
1058      body.append($backdrop);
1059      body.addClass(openClass); // Force reflow to enable CSS transitions
1060
1061      $backdrop[0].offsetWidth;
1062      $backdrop.addClass(showClass); // Event listener to hide flyout when backdrop is clicked
1063
1064      $backdrop.on('click', function () {
1065        hideFlyout.call($flyout);
1066      }); // Show the flyout
1067
1068      $flyout.addClass(showClass);
1069    }; // Function to toggle the flyout
1070
1071
1072    var toggleFlyout = function toggleFlyout() {
1073      var $flyout = $(this);
1074
1075      if ($flyout.hasClass(showClass)) {
1076        hideFlyout.call($flyout);
1077      } else {
1078        showFlyout.call($flyout);
1079      }
1080    }; // jQuery plugin for flyout actions
1081
1082
1083    $.fn.flyout = function (action) {
1084      return this.each(function () {
1085        var $this = $(this);
1086
1087        switch (action) {
1088          case 'show':
1089            showFlyout.call($this);
1090            break;
1091
1092          case 'hide':
1093            hideFlyout.call($this);
1094            break;
1095
1096          case 'toggle':
1097            toggleFlyout.call($this);
1098            break;
1099
1100          default:
1101            console.warn("Unknown flyout action: ".concat(action));
1102        }
1103      });
1104    };
1105
1106    $(document).on('click', '[data-toggle="flyout"]', function (event) {
1107      event.preventDefault();
1108      var target = $(this).data('target');
1109      var $target = $(target);
1110      $target.flyout('show');
1111    }); // Set up login link overrides
1112
1113    setupLoginLinkOverride(); // Event delegation for toggling flyout
1114
1115    var handleLoginFlyout = function handleLoginFlyout(event, data) {
1116      event.preventDefault();
1117      var targetSelector = $(this).data('target') || '#flyout-login';
1118      var $flyout = $(targetSelector);
1119      var $flyoutContent = $flyout.find('.flyout-content'); // Clear any existing content in the flyout
1120
1121      $flyoutContent.empty(); // Toggle flyout visibility
1122
1123      $flyout.flyout('toggle');
1124      $flyout.spinner().start(); // Load login form via AJAX
1125
1126      var url = $(this).data('url') || data.url;
1127      var loginMessage = $(this).data('login-message'); // Create a URL object
1128
1129      var urlObj = new URL(url, window.location.origin); // Check if this is a link override that has a redirect query string parameter...
1130
1131      var href = $(this).attr('href');
1132      var hrefUrlObj = new URL(href, window.location.origin);
1133      var redirectParam = hrefUrlObj.searchParams.get('redirect');
1134
1135      if (redirectParam) {
1136        // Append the 'redirect' query parameter to urlObj
1137        urlObj.searchParams.append('redirect', redirectParam);
1138      }
1139
1140      if (loginMessage) {
1141        // Append the 'loginMessage' query parameter
1142        urlObj.searchParams.append('loginMessage', loginMessage);
1143      }
1144
1145      $.ajax({
1146        url: urlObj.toString(),
1147        method: 'GET',
1148        success: function success(data) {
1149          if (_typeof(data) === 'object') {
1150            if (data.redirectUrl) {
1151              window.location = data.redirectUrl;
1152            }
1153          } else {
1154            $flyout.spinner().stop();
1155            $flyoutContent.html(data);
1156            body.trigger('login:reinit');
1157            setupRecaptcha();
1158          }
1159        },
1160        error: function error(xhr, status, _error) {
1161          console.error("Failed to load login form: ".concat(_error));
1162          $flyout.spinner().stop();
1163          createErrorNotification($('.error-messaging'), 'Failed to load login form. Please try again.');
1164        }
1165      });
1166    };
1167
1168    $(document).on('click', '.flyout-login-toggler', handleLoginFlyout);
1169    $('body').on('initFlyout', handleLoginFlyout);
1170
1171    if (window.showLoginFlyout) {
1172      $('body').trigger('initFlyout', {
1173        url: window.showLoginFlyout
1174      });
1175    } // Event delegation for creating an account
1176
1177
1178    $(document).on('click', '.flyout-create-account', function (event) {
1179      event.preventDefault();
1180      var $flyout = $('.flyout');
1181      var $flyoutContent = $flyout.find('.flyout-content');
1182      $flyout.spinner().start();
1183      var url = $(this).is('button') ? $(this).data('url') : $(this).find('a').attr('href');
1184      $.ajax({
1185        url: url,
1186        method: 'GET',
1187        success: function success(data) {
1188          $flyout.spinner().stop();
1189          $flyoutContent.html(data);
1190          $('body').trigger('login:reinit');
1191        },
1192        error: function error(xhr, status, _error2) {
1193          console.error("Failed to load create account form: ".concat(_error2));
1194          $flyout.spinner().stop();
1195          createErrorNotification($('.error-messaging'), 'Failed to load create account form. Please try again.');
1196        }
1197      });
1198    }); // Event delegation for dismissing flyout via close button
1199
1200    $(document).on('click', '.flyout-toggler-dismiss', function (event) {
1201      event.preventDefault();
1202      var $flyout = $(this).closest(flyoutSelector);
1203      $flyout.flyout('hide');
1204    }); // Event delegation for forgot password
1205
1206    $(document).on('click', '.flyout-forgot-password', function (event) {
1207      event.preventDefault();
1208      var $flyout = $('.flyout');
1209      var $flyoutContent = $flyout.find('.flyout-content');
1210      $flyout.spinner().start();
1211      var url = $(this).find('a').attr('href');
1212      $.ajax({
1213        url: url,
1214        method: 'GET',
1215        success: function success(data) {
1216          $flyout.spinner().stop();
1217          $flyoutContent.html(data);
1218          body.trigger('password-reset:reinit');
1219        },
1220        error: function error(xhr, status, _error3) {
1221          console.error("Failed to load forgot password form: ".concat(_error3));
1222          $flyout.spinner().stop();
1223          createErrorNotification($('.error-messaging'), 'Failed to load forgot password form. Please try again.');
1224        }
1225      });
1226    }); // Submit forgot password form
1227
1228    $(document).on('submit', "".concat(flyoutSelector, " .reset-password-form"), function (event) {
1229      event.preventDefault();
1230      $('.flyout-forgot-password-email-doesnt-exist').addClass('d-none');
1231      var $form = $(this);
1232      var actionUrl = $form.attr('action');
1233      var formData = $form.serialize();
1234      var $flyout = $form.closest(flyoutSelector);
1235      var $spinner = $flyout.spinner();
1236      $spinner.start();
1237      recaptcha.check(event, {
1238        method: 'POST',
1239        url: actionUrl,
1240        data: formData,
1241        dataType: 'json',
1242        success: function success(response) {
1243          $spinner.stop();
1244
1245          if (response.showEmailDoesntExistError) {
1246            $('.flyout-forgot-password-email-doesnt-exist').removeClass('d-none');
1247            $('.reset-password-form [type="submit"]').addClass('disabled');
1248            $('.reset-password-form #reset-password-email').one('input', function () {
1249              $('.flyout-forgot-password-email-doesnt-exist').addClass('d-none');
1250              $('.reset-password-form [type="submit"]').removeClass('disabled');
1251            });
1252          } else {
1253            // Handle success (e.g., display confirmation message)
1254            console.log('Password reset successful:', response);
1255            $flyout.find('.flyout-login-page').addClass('d-none');
1256            $flyout.find('.flyout-success-email').text($form.find('#reset-password-email').val());
1257            $flyout.find('.flyout-forgot-password-success').removeClass('d-none');
1258          }
1259        },
1260        error: function error(xhr, status, _error4) {
1261          $spinner.stop();
1262          console.error("Password reset failed: ".concat(_error4));
1263          createErrorNotification($('.error-messaging'), 'Password reset failed. Please try again.');
1264        }
1265      });
1266    }); // Submit create account form
1267
1268    $(document).on('submit', 'form.registration', function (event) {
1269      event.preventDefault();
1270      var $form = $(this);
1271      var actionUrl = $form.attr('action');
1272      var formData = $form.serialize();
1273      var $flyout = $('.flyout');
1274      var $spinner = $flyout.spinner();
1275      $spinner.start();
1275 // Trigger pre-validation event
1276
1277      $form.trigger('login:register', event); // Perform reCAPTCHA verification
1278
1279      recaptcha.check(event, {
1280        url: actionUrl,
1281        type: 'post',
1282        dataType: 'json',
1283        data: formData,
1284        success: function success(data) {
1285          $spinner.stop();
1286
1287          if (!data.success) {
1288            // Trigger error event and perform form validation
1289            $form.trigger('login:register:error', data);
1290            formValidation($form, data);
1291          } else {
1292            // Trigger success event and redirect
1293            $form.trigger('login:register:success', data);
1294            window.location.href = data.redirectUrl;
1295          }
1296        },
1297        error: function error(err) {
1298          $spinner.stop();
1299
1300          if (err.responseJSON && err.responseJSON.redirectUrl) {
1301            window.location.href = err.responseJSON.redirectUrl;
1302          } else if (err.responseJSON && err.responseJSON.errorMessage) {
1303            createErrorNotification($('.error-messaging'), err.responseJSON.errorMessage);
1304          } else {
1305            createErrorNotification($('.error-messaging'), 'An unexpected error occurred. Please try again.');
1306          }
1307        }
1308      });
1309    }); // Event delegation for back button
1310
1311    $(document).on('click', '.flyout-back-btn, .js-flyout-back-btn', function (event) {
1312      event.preventDefault();
1313      var $flyout = $('.flyout');
1314      var $flyoutContent = $flyout.find('.flyout-content');
1315      var $backBtn = $(this);
1316      var url = $backBtn.attr('href');
1317      $flyout.spinner().start();
1318      $.ajax({
1319        method: 'GET',
1320        url: url,
1321        success: function success(response) {
1322          $flyout.spinner().stop();
1323          $flyoutContent.empty().html(response);
1324          $('body').trigger('login:reinit');
1325        },
1326        error: function error(xhr, status, _error5) {
1327          $flyout.spinner().stop();
1328          console.error("Back button action failed: ".concat(_error5));
1329          createErrorNotification($('.error-messaging'), 'Failed to load the previous content. Please try again.');
1330        }
1331      });
1332    });
1333  }
1334};
1335
1336/***/ }),
1337
1338/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/helpers.js":
1339/*!*****************************************************************************************************************!*\
1340  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/helpers.js ***!
1341  \*****************************************************************************************************************/
1342/*! no static exports found */
1343/***/ (function(module, exports) {
1344
1345function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1346
1347/**
1348 *
1349 * @param {Object} $select A jQuery Select object that corresponds to a country select
1350 * @param {string} context
1351 *
1352 * stateSelectObject should look like =
1353 * object = {
1354 *      'US': '[selector for the state select]',
1355 *      'CA': '[selector for the state select]'
1356 * };
1357 */
1358function handleCountrySelect($select, context) {
1359  // fetch the data
1360  var stateSelectData = $select.data('state-selects');
1361
1362  if (stateSelectData) {
1363    var stateSelectObject = _typeof(stateSelectData) === 'object' ? stateSelectData : JSON.parse(stateSelectData);
1364    $select.on('change', function () {
1365      var selectValue = $(this).val();
1366
1367      if (typeof stateSelectObject[selectValue] === 'string') {
1368        var stateSelect = $(stateSelectObject[selectValue]); // hide all the ones but selected one
1369
1370        Object.keys(stateSelectObject).forEach(function (key) {
1371          if (key !== selectValue) {
1372            var otherSelect = $(stateSelectObject[key]);
1373
1374            var _$parent = otherSelect.parent();
1375
1376            if (!_$parent.hasClass('d-none')) {
1377              _$parent.addClass('d-none'); // move it outside the form
1378
1379
1380              _$parent.detach().appendTo('.hidden-formfields');
1381            }
1382          }
1383        });
1384        var $parent = stateSelect.parent();
1385
1386        if ($parent.hasClass('d-none')) {
1387          var selector = getStateTarget({
1388            context: context,
1389            stateSelect: stateSelect
1390          });
1391          $parent.removeClass('d-none');
1392          $parent.detach().appendTo(selector);
1393        }
1394      } else {
1395        // this means a country code was selected that doesn't have a corresponding state/province select, so hide all of them
1396        // with exception to the first value - so confirm that the selectValue is not blank / empty
1397        Object.keys(stateSelectObject).forEach(function (key) {
1398          var otherSelect = $(stateSelectObject[key]);
1399          var $parent = otherSelect.parent();
1400
1401          if (!$parent.hasClass('d-none')) {
1402            $parent.addClass('d-none'); // move it outside the form
1403
1404            $parent.detach().appendTo('.hidden-formfields');
1405          }
1406        });
1407      }
1408    }); // look through the state select data for the country Select and move the hidden ones
1409
1410    Object.keys(stateSelectObject).forEach(function (key) {
1411      var stateSelect = $(stateSelectObject[key]);
1412      var $parent = stateSelect.parent();
1413
1414      if ($parent.hasClass('d-none')) {
1415        $parent.detach().appendTo('.hidden-formfields');
1416      }
1417    });
1418  }
1419}
1420/**
1421 * Find the target selector provided a context
1422 *
1423 * @param data
1424 * @returns {string}
1425 */
1426
1427
1428function getStateTarget(data) {
1429  switch (data.context) {
1430    case 'warranty':
1431      var targetSelector = '.dealer-block .states';
1432
1433      if (data.stateSelect.hasClass('ownerState')) {
1434        targetSelector = '.owner-address-block .states';
1435      }
1436
1437      return targetSelector;
1438
1439    default:
1440      return '.states';
1441  }
1442}
1443
1444module.exports = {
1445  methods: {
1446    handleCountrySelect: handleCountrySelect
1447  }
1448};
1449
1450/***/ }),
1451
1452/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/menu.js":
1453/*!**************************************************************************************************************!*\
1454  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/menu.js ***!
1455  \**************************************************************************************************************/
1456/*! no static exports found */
1457/***/ (function(module, exports, __webpack_require__) {
1458
1459var base = __webpack_require__(/*! core/components/menu */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/menu.js");
1460
1461var SiteConstants = __webpack_require__(/*! constants/SiteConstants */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/scripts/constants/SiteConstants.js");
1462
1463var ogDropdownMenu = base.dropdownMenu;
1464var ogClearSelection = base.clearSelection;
1465var ogToggleDrawer = base.toggleDrawer;
1466
1467function toggleDrawer(status) {
1468  ogToggleDrawer.call(this, status);
1469
1470  if (status !== 'open') {
1471    $('header .main-menu .navbar-nav .primary-category').detach();
1472  }
1473}
1474
1475function dropdownMenu() {
1476  ogDropdownMenu.apply(this, arguments); // Custom dropdown behaviors for top menu
1477
1478  var $dropdownMenu = $('.custom-dropdown:not(.disabled) [data-toggle="dropdown"]');
1479  $dropdownMenu.on('click', function (event) {
1480    event.stopPropagation();
1481
1482    if (window.isMobile()) {
1483      // Drawer behavior on mobile
1484      event.preventDefault();
1485      var $dropdownLink = $(event.target);
1486      var $dropdown = $dropdownLink.closest('.custom-dropdown');
1487      var $primaryCategory = $dropdown.closest('.dropdown-menu').find('.dropdown-item.primary-category');
1488
1489      if ($primaryCategory.length === 1) {
1490        $primaryCategory.clone().insertAfter($dropdown.children('.dropdown-menu').find('.nav-menu'));
1491      } else if ($dropdown.hasClass('megamenu')) {
1492        var $li = $('<li class="dropdown-item primary-category d-lg-none" role="button"></li>');
1493        var link = $dropdownLink.clone().removeClass('dropdown-toggle').removeAttr('data-toggle').removeAttr('aria-expanded').attr('aria-haspopup', 'false');
1494        $li.append(link);
1495        var $target = $dropdown.children('.dropdown-menu');
1496
1497        if ($target.find('.megamenu-asset-only:last-child').length === 0) {
1498          $li.insertAfter($target.find('.nav-menu'));
1499        }
1500      }
1501    }
1502  });
1503}
1504
1505function clearSelection(element) {
1506  var $currentPane = $(element).closest('.custom-dropdown.show');
1507  setTimeout(function () {
1508    $currentPane.find('.primary-category').detach();
1509  }, SiteConstants.TransitionSpeed);
1510  ogClearSelection.call(this, element);
1511}
1512
1513base.dropdownMenu = dropdownMenu;
1514base.clearSelection = clearSelection;
1515base.toggleDrawer = toggleDrawer;
1516module.exports = base;
1517
1518/***/ }),
1519
1520/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/slider.js":
1521/*!****************************************************************************************************************!*\
1522  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/slider.js ***!
1523  \****************************************************************************************************************/
1524/*! no static exports found */
1525/***/ (function(module, exports, __webpack_require__) {
1526
1527"use strict";
1528
1529
1530var base = __webpack_require__(/*! core/components/slider */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/slider.js");
1531
1532function getUpdatedSlideItems(images, assets, videos, isThumbnail) {
1533  var zoom = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;
1534  var slideItems = [];
1535  images['large'].forEach(function (image) {
1536    var $slideElement = $('<div></div>').attr('class', 'slide');
1537    var $imageElement = $('<img/>');
1538
1539    if (!isThumbnail) {
1540      $slideElement.attr('data-zoom-image', images['hi-res'].length ? images['hi-res'][image.index].url : images['large'][image.index].url);
1541    }
1542
1543    $imageElement.attr({
1544      'src': image.url,
1545      'alt': image.alt + ' image number ' + (parseInt(image.index) + 1).toFixed(0),
1546      'class': 'd-block img-fluid',
1547      'itemprop': 'image'
1548    });
1549    $slideElement.append($imageElement);
1550    slideItems.push($slideElement[0]);
1551  }); // base.getPDPGalleryAssetSlides(slideItems, assets, isThumbnail);
1552
1553  if (videos) {
1554    getVideoSlides(slideItems, videos, isThumbnail);
1555  }
1556
1557  if (!zoom) {
1558    slideItems.forEach(function (slide) {
1559      $(slide).addClass('no-zoom');
1560    });
1561  }
1562
1563  return slideItems;
1564}
1565
1566function getVideoSlides(slideItems, videos, isThumbnail) {
1567  if (isThumbnail) {
1568    videos.thumbnails.forEach(function (thumbnail, idx) {
1569      if (videos.URLs[idx]) {
1570        var $slideElement = $('<div></div>').attr('class', 'slide video-container');
1571        var $imageElement = $('<img/>');
1572        var $videoButton = $('<span class="video-thumbnail-button"></span>');
1573        $imageElement.attr({
1574          'src': thumbnail,
1575          'alt': 'Image number ' + (parseInt(thumbnail.index) + 1).toFixed(0),
1576          'class': 'd-block img-fluid',
1577          'itemprop': 'image'
1578        });
1579        $slideElement.append($imageElement);
1580        $slideElement.append($videoButton);
1581        slideItems.push($slideElement[0]);
1582      }
1583    });
1584  } else {
1585    videos.URLs.forEach(function (videoURL, idx) {
1586      if (videos.thumbnails[idx]) {
1587        var $slideElement = $('<div></div>').attr('class', 'slide no-zoom');
1588        var videoElement = $(videoURL);
1589        var videoContainer = $('<div></div>').attr('class', 'video-container aspect-ratio-16-9');
1590        var videoPlayer = $('<div></div>').attr('class', 'video-player');
1591        videoPlayer.append(videoElement);
1592        videoContainer.append(videoPlayer);
1593        $slideElement.append(videoContainer);
1594        slideItems.push($slideElement[0]);
1595      }
1596    });
1597  }
1598
1599  return slideItems;
1600}
1601
1602base.getUpdatedSlideItems = getUpdatedSlideItems;
1603module.exports = base;
1604
1605/***/ }),
1606
1607/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/timer.js":
1608/*!***************************************************************************************************************!*\
1609  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/timer.js ***!
1610  \***************************************************************************************************************/
1611/*! no static exports found */
1612/***/ (function(module, exports, __webpack_require__) {
1613
1614"use strict";
1615
1616
1617function pad2(n) {
1618  if (n <= 9) {
1619    n = "0" + n;
1620  }
1621
1622  return n;
1623}
1624
1625function startTimer() {
1626  var reservationContainer = document.querySelector('.reservation-copy');
1627  var countdownTimerElement = document.querySelector('.countdown-timer');
1628
1629  if (reservationContainer && countdownTimerElement) {
1630    var setCartExpiration = function setCartExpiration() {
1631      var now = new Date().getTime();
1632      var distance = atcTime - now;
1633      var hours = pad2(Math.floor(distance % (1000 * 60 * 60 * 24) / (1000 * 60 * 60)));
1634      var minutes = pad2(Math.floor(distance % (1000 * 60 * 60) / (1000 * 60)));
1635      var seconds = pad2(Math.floor(distance % (1000 * 60) / 1000));
1636      var countdownDisplay = hours + ':' + minutes + ":" + seconds.toString();
1637
1638      if (distance <= 0) {
1639        clearInterval(interval);
1640        countdownTimerElement.innerHTML = '00:00:00';
1641        $('#timeout-modal').modal('show');
1642        var action = document.querySelector('.page').dataset.action;
1643        var clearBasketURL = document.querySelector('.reservation-copy').dataset.clearbasketurl;
1644        $.ajax({
1645          url: clearBasketURL
1646        });
1647        $('#timeout-modal').on('hidden.bs.modal', function (e) {
1648          if (action == 'Cart-Show' || action == 'Checkout-Begin') {
1649            var redirectURL = document.querySelector('.reservation-copy').dataset.redirecturl;
1650            window.location.replace(redirectURL);
1651          } else {
1652            $('.minicart').trigger('count:update', {
1653              quantityTotal: 0,
1654              minicartCountOfItems: 'Cart 0 Items'
1655            });
1656            $('.notification-banner').remove();
1657          }
1658        });
1659      } else {
1660        countdownTimerElement.innerHTML = countdownDisplay;
1661      }
1662    };
1663
1664    ;
1665    var atcTime = document.querySelector('.reservation-copy').dataset.expiration;
1666    var interval = null;
1667    interval = setInterval(setCartExpiration, 1000);
1668    setCartExpiration();
1669  }
1670
1671  ;
1672}
1673
1674startTimer();
1675$('body').on('product:afterAddToCart', function (event, data) {
1676  if ($('.reservation-copy').length == 0) {
1677    setTimeout(function () {
1678      $('.notification-banner').hide().empty().append(data.cartExpirationHTML).fadeIn(1000);
1679      startTimer();
1680    }, 5000);
1681  }
1682});
1683$('body').on('cart:update', function (event, data) {
1684  if (!data.hasReservation) {
1685    $('.notification-banner .reservation-copy').remove();
1686  }
1687});
1688
1689/***/ }),
1690
1691/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/warranty.js":
1692/*!******************************************************************************************************************!*\
1693  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/warranty.js ***!
1694  \******************************************************************************************************************/
1695/*! no static exports found */
1696/***/ (function(module, exports, __webpack_require__) {
1697
1698var formValidation = __webpack_require__(/*! base/components/formValidation */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js");
1699
1700var handleCountrySelect = __webpack_require__(/*! ./helpers */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/helpers.js").methods.handleCountrySelect;
1701
1702function init() {
1703  var countrySelects = $('select[data-state-selects]');
1704  countrySelects.each(function () {
1705    handleCountrySelect($(this), 'warranty');
1706  });
1707}
1708
1709function submitForm() {
1710  $('form.warranty-form').submit(function (e) {
1711    e.preventDefault();
1712    var $form = $(this);
1713    var $formAlert = $form.siblings('.alert');
1714    $formAlert.addClass('d-none');
1715    $formAlert.removeClass('alert-danger');
1716    $formAlert.removeClass('alert-success');
1717    $form.spinner().start();
1718    $.ajax({
1719      url: $form.attr('action'),
1720      type: 'post',
1721      dataType: 'json',
1722      data: $form.serialize()
1723    }).then(function (data) {
1724      if (!data.success) {
1725        $formAlert.find('p').html(data.message);
1726        $formAlert.addClass('alert-danger').removeClass('d-none');
1727        formValidation($form, data);
1728      } else {
1729        $formAlert.find('p').html(data.message);
1730        $formAlert.addClass('alert-success').removeClass('d-none');
1731        $form.find('.card, .form-actions').addClass('d-none');
1732        $form.find('.reload-action').removeClass('d-none');
1733      }
1734
1735      $form.spinner().stop();
1736    })["catch"](function (err) {
1737      if (err.responseJSON.redirectUrl) {
1738        window.location.href = err.responseJSON.redirectUrl;
1739      } else {
1740        $form.spinner().stop();
1741      }
1742    });
1743  });
1744}
1745
1746module.exports = {
1747  init: init,
1748  submitForm: submitForm
1749};
1750
1751/***/ }),
1752
1753/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/yotpo.js":
1754/*!***************************************************************************************************************!*\
1755  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/yotpo.js ***!
1756  \***************************************************************************************************************/
1757/*! no static exports found */
1758/***/ (function(module, exports, __webpack_require__) {
1759
1760function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
1761
1762function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
1763
1764var moment = __webpack_require__(/*! moment */ "../autobahn_client_core/node_modules/moment/moment.js");
1765
1766var Cookies = __webpack_require__(/*! js-cookie */ "../autobahn_client_core/node_modules/js-cookie/dist/js.cookie.js");
1767
1768function setVoteCount($el, diff) {
1769  var voteCount = parseInt($el.text());
1770  var newCount = voteCount + diff;
1771  if (newCount < 0) newCount = 0;
1772  $el.text(newCount);
1773}
1774
1775module.exports = {
1776  methods: {
1777    initYotpoPDP: function () {
1778      var _initYotpoPDP = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
1779        var $container, url, response, $response, $reviews;
1780        return regeneratorRuntime.wrap(function _callee$(_context) {
1781          while (1) {
1782            switch (_context.prev = _context.next) {
1783              case 0:
1784                $container = $('.yotpo-reviews-container');
1785
1786                if ($container.length) {
1787                  _context.next = 4;
1788                  break;
1789                }
1790
1791                $('.product-number-rating').detach();
1792                return _context.abrupt("return");
1793
1794              case 4:
1795                url = $container.data('url');
1796                _context.next = 7;
1797                return $.ajax({
1798                  url: url,
1799                  dataType: 'html'
1800                });
1801
1802              case 7:
1803                response = _context.sent;
1804                $response = $(response); // because sfcc dev boxes inject comments
1805
1806                if ($response.length > 1) {
1807                  $response = $($response.get(0));
1808                }
1809
1810                $reviews = $response.find('.yotpo-review'); // remove the reviews container if we have none to show
1811
1812                if (!($reviews.length === 0)) {
1813                  _context.next = 17;
1814                  break;
1815                }
1816
1817                $('.yotpo-flyout-launcher').addClass('d-none');
1818                $container.detach();
1819                return _context.abrupt("return");
1820
1821              case 17:
1822                $('.yotpo-flyout-launcher').removeClass('d-none');
1823
1824              case 18:
1825                // set the human-readable timestamp when the review was posted
1826                $reviews.each(function () {
1827                  var $when = $(this).find('.when');
1828                  $when.text(moment($when.text()).fromNow()).addClass('dateset');
1829                }); // insert the reviews onto the page
1830
1831                $container.empty();
1832                $container.append($response); // make sure the stars at the top will scroll to reviews when clicked
1833
1834                $('body').on('click', '.star-clickable', function () {
1835                  $('html, body').animate({
1836                    scrollTop: $container.offset().top
1837                  }, 1000);
1838                }); // register vote behavior on each review
1839
1840                $response.find('.yotpo-review').each(function () {
1841                  var $review = $(this);
1842                  var $voteBtns = $review.find('.js-vote');
1843                  var reviewId = $review.data('reviewId');
1844                  $voteBtns.click(function (e) {
1845                    e.preventDefault(); // cookie tracks which direction they have voted (if at all)
1846
1847                    var voted = Cookies.get("voted-".concat(reviewId));
1848                    var $btn = $(this); // the current vote action direction
1849
1850                    var voteDirection = $btn.data('voteDirection');
1851                    var url = "https://api.yotpo.com/reviews/".concat(reviewId, "/vote/").concat(voteDirection);
1852                    var undo = Promise.resolve(); // remove previous vote
1853
1854                    if (voted) {
1855                      var _$btn = $voteBtns.filter("a[data-vote-direction=\"".concat(voted, "\"]"));
1856
1857                      undo = $.ajax({
1858                        url: "".concat(url, "/true"),
1859                        method: 'post'
1860                      });
1861                      setVoteCount(_$btn.find('.js-vote-count'), -1);
1862                    } // clear cookie if no current votes cast
1863
1864
1865                    if (voted === voteDirection) {
1866                      Cookies.remove("voted-".concat(reviewId));
1867                    } else {
1868                      // increment the vote count
1869                      setVoteCount($btn.find('.js-vote-count'), 1); // track the vote direction with a cookie
1870
1871                      Cookies.set("voted-".concat(reviewId), voteDirection); // cast the vote
1872
1873                      undo.then(function () {
1874                        $.ajax({
1875                          url: url,
1876                          method: 'post'
1877                        });
1878                      });
1879                    }
1880                  });
1881                }); // event handler for load more button
1882
1883                $('body').on('click', '.yotpo-reviews .loadmore .btn', function () {
1884                  $.spinner().start();
1885                  var loadMoreURL = $(this).data('url');
1886                  $.ajax({
1887                    url: loadMoreURL,
1888                    dataType: 'json',
1889                    success: function success(data) {
1890                      $('.loadmore').replaceWith(data.renderedTemplate);
1891                      $('.yotpo-review').each(function () {
1892                        var $when = $(this).find('.when:not(.dateset)');
1893                        $when.text(moment($when.text()).fromNow()).addClass('dateset');
1894                      });
1895                    }
1896                  }).done(function () {
1897                    $.spinner().stop();
1898                  });
1899                });
1900
1901              case 24:
1902              case "end":
1903                return _context.stop();
1904            }
1905          }
1906        }, _callee);
1907      }));
1908
1909      function initYotpoPDP() {
1910        return _initYotpoPDP.apply(this, arguments);
1911      }
1912
1913      return initYotpoPDP;
1914    }()
1915  }
1916};
1917
1918/***/ }),
1919
1920/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/_loyaltyActivities.js":
1921/*!*************************************************************************************************************************!*\
1922  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/_loyaltyActivities.js ***!
1923  \*************************************************************************************************************************/
1924/*! no static exports found */
1925/***/ (function(module, exports, __webpack_require__) {
1926
1927"use strict";
1928
1929/**
1930 * Antavo activity grid, client wiring.
1931 *
1932 * Loaded globally from main.js, NOT by the grid template: the grid's Page
1933 * Designer shell is page-cached and a cached component's render script does
1934 * not re-execute, so an `assets.addJs` inside it never reaches the browser;
1935 * an AJAX-rendered region includes no scripts at all. Loading here makes the
1936 * flows work wherever the grid is dropped. The card styles ride along in
1937 * global.css for the same reason.
1938 *
1939 * The grid itself is server-rendered per member via remote include; the
1940 * browser only handles the in-card flows (opening a survey or quiz,
1941 * answering, swapping in the next server-rendered fragment).
1942 *
1943 * The underscore prefix is mandatory: the builder emits every non-underscore
1944 * file under client/default/js/ as its own standalone bundle, so without it
1945 * this module ships twice.
1946 */
1947
1948var quiz = __webpack_require__(/*! ./activities/_quiz */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_quiz.js");
1949
1950var survey = __webpack_require__(/*! ./activities/_survey */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_survey.js");
1951
1952module.exports = {
1953  /**
1954   * Delegated from `body`, so a grid that arrives later in an AJAX-rendered
1955   * region is covered without re-initializing.
1956   */
1957  loyaltyActivityFlows: function loyaltyActivityFlows() {
1958    survey.init();
1959    quiz.init();
1960  }
1961};
1962
1963/***/ }),
1964
1965/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_flowAjax.js":
1966/*!***************************************************************************************************************************!*\
1967  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_flowAjax.js ***!
1968  \***************************************************************************************************************************/
1969/*! no static exports found */
1970/***/ (function(module, exports, __webpack_require__) {
1971
1972"use strict";
1973
1974/**
1975 * Shared plumbing for the in-card activity flows: the CSRF field, the
1976 * post-and-swap round trip, and the state animation. The underscore prefix
1977 * keeps the builder from emitting this shared module as its own standalone
1978 * bundle.
1979 */
1980
1981var toast = __webpack_require__(/*! core/components/toast */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toast.js");
1982/**
1983 * How long the outgoing fragment is given to fade before it is replaced,
1984 * and how long the card then takes to resize to the incoming one. Both must
1985 * stay in step with the --leaving and --resizing rules in
1986 * scss/components/_loyaltyActivities.scss.
1987 */
1988
1989
1990var LEAVE_DURATION = 140;
1991var RESIZE_DURATION = 220;
1992/**
1993 * @returns {boolean} - True when the visitor asked for reduced motion
1994 */
1995
1996function prefersReducedMotion() {
1997  return !!(window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches);
1998}
1999/**
2000 * Replaces a card's contents, fading the outgoing fragment and gliding the
2001 * card between the two heights — swapping in a single frame resizes the card
2002 * abruptly, which reads as a glitch mid-fade. The resting height is measured
2003 * by clearing the inline height rather than forcing `auto`, because the card
2004 * may be stretched by its grid item. Under a reduced-motion preference the
2005 * swap is immediate rather than merely still, so the step never feels like
2006 * lag.
2007 *
2008 * @param {jQuery} $card - The card whose contents are being replaced
2009 * @param {string} html - The fragment to swap in
2010 * @param {Function} [done] - Runs once the new fragment is in the DOM
2011 */
2012
2013
2014function swapCard($card, html, done) {
2015  if (prefersReducedMotion()) {
2016    $card.html(html);
2017
2018    if (done) {
2019      done();
2020    }
2021
2022    return;
2023  }
2024
2025  var startHeight = $card.outerHeight();
2026  $card.addClass('loyalty-activity-card--leaving');
2027  setTimeout(function () {
2028    $card.removeClass('loyalty-activity-card--leaving').html(html);
2029    $card.css('height', '');
2030    var endHeight = $card.outerHeight();
2031
2032    if (endHeight === startHeight) {
2033      if (done) {
2034        done();
2035      }
2036
2037      return;
2038    }
2039
2040    $card.css('height', startHeight + 'px'); // Flush the start height so the transition has something to run
2041    // from; without this the browser coalesces both writes.
2042
2043    $card[0].getBoundingClientRect();
2044    $card.addClass('loyalty-activity-card--resizing').css('height', endHeight + 'px');
2045    setTimeout(function () {
2046      $card.removeClass('loyalty-activity-card--resizing').css('height', '');
2047
2048      if (done) {
2049        done();
2050      }
2051    }, RESIZE_DURATION);
2052  }, LEAVE_DURATION);
2053}
2054/**
2055 * The card skeleton ships the localized flow-error copy in a data
2056 * attribute (attributes on the card root survive fragment swaps); the
2057 * literal is the last-resort fallback for a detached context.
2058 *
2059 * @param {jQuery} $card - The card root
2060 * @returns {string} - The member-facing generic error copy
2061 */
2062
2063
2064function genericError($card) {
2065  return $card && $card.attr('data-flow-error') || 'We could not complete your request. Please try again.';
2066}
2067/**
2068 * Antavo-sourced messages are HTML-encoded before they reach the toast, which
2069 * string-concatenates its markup.
2070 *
2071 * @param {string} text - Untrusted message text
2072 * @returns {string} - The HTML-encoded text
2073 */
2074
2075
2076function escapeHtml(text) {
2077  return $('<div/>').text(text).html();
2078}
2079
2080module.exports = {
2081  escapeHtml: escapeHtml,
2082
2083  /**
2084   * Adds the grid's CSRF token to a POST body. The token is rendered into
2085   * the grid fragment by a remote include, so it is never baked into the
2086   * page-cached shell; it is read from the DOM because the fragment is the
2087   * only thing that knows the current token, and a page may carry more than
2088   * one grid.
2089   *
2090   * @param {jQuery} $card - The card the flow is running in
2091   * @param {Object} data - The POST body fields
2092   * @returns {Object} - The body with the token field added
2093   */
2094  withCsrf: function withCsrf($card, data) {
2095    var $token = $card.closest('.js-loyalty-activity-grid').find('.js-loyalty-activity-csrf');
2096
2097    if (!$token.length) {
2098      // A card rendered outside a grid should not happen, but fall back
2099      // to the page rather than posting a request the route will reject.
2100      $token = $('.js-loyalty-activity-csrf').first();
2101    }
2102
2103    if ($token.length && $token.attr('name')) {
2104      data[$token.attr('name')] = $token.val();
2105    }
2106
2107    return data;
2108  },
2109
2110  /**
2111   * Posts a flow action and swaps the card to the returned fragment. An
2112   * app-level error ({error: true}) or a transport error keeps the
2113   * current fragment, re-enables the triggering control, and shows a
2114   * toast.
2115   *
2116   * @param {Object} options - {url, data, $card, $restore, onSwapped}
2117   *   where $restore is re-enabled on error and onSwapped(data) runs
2118   *   after a successful swap
2119   */
2120  post: function post(options) {
2121    $.spinner().start();
2122    $.ajax({
2123      url: options.url,
2124      type: 'POST',
2125      dataType: 'json',
2126      data: options.data,
2127      success: function success(data) {
2128        $.spinner().stop();
2129
2130        if (!data || data.error || !data.html) {
2131          if (options.$restore) {
2132            options.$restore.prop('disabled', false);
2133          } // The route decides what the member should read (Antavo's
2134          // wording vs. authored copy) and sends it as data.message;
2135          // this only needs a fallback for a response with no body.
2136          // The card deliberately stays on its current fragment, so
2137          // the toast is the only place the error appears.
2138
2139
2140          toast.methods.show('danger', escapeHtml(data && data.message || genericError(options.$card)));
2141          return;
2142        }
2143
2144        swapCard(options.$card, data.html, function () {
2145          if (options.onSwapped) {
2146            options.onSwapped(data);
2147          }
2148        });
2149      },
2150      error: function error() {
2151        $.spinner().stop();
2152
2153        if (options.$restore) {
2154          options.$restore.prop('disabled', false);
2155        }
2156
2157        toast.methods.show('danger', escapeHtml(genericError(options.$card)));
2158      }
2159    });
2160  }
2161};
2162
2163/***/ }),
2164
2165/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_quiz.js":
2166/*!***********************************************************************************************************************!*\
2167  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_quiz.js ***!
2168  \***********************************************************************************************************************/
2169/*! no static exports found */
2170/***/ (function(module, exports, __webpack_require__) {
2171
2172"use strict";
2173
2174/**
2175 * Quiz in-card flow. An Antavo quiz is a single question: the card CTA
2176 * fetches the question, one answer is submitted, and the response is the
2177 * graded result. All markup arrives server-rendered, so this module only
2178 * swaps fragments and posts the answer.
2179 *
2180 * The submitted answer is the option's ZERO-BASED INDEX, read from
2181 * data-value, not its text — Antavo's quiz answers are a flat array of plain
2182 * strings with no IDs, so the earn endpoint takes the position in that array.
2183 * The correct answer is never present in the DOM: the server strips it from
2184 * the quiz detail before rendering the question.
2185 */
2186
2187var flowAjax = __webpack_require__(/*! ./_flowAjax */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_flowAjax.js");
2188/**
2189 * @param {jQuery} $flow - The flow container
2190 * @returns {string|null} - The selected option's index as a string, or null
2191 */
2192
2193
2194function currentAnswer($flow) {
2195  var $selected = $flow.find('.js-quiz-option.selected');
2196  return $selected.length ? $selected.attr('data-value') : null;
2197}
2198
2199module.exports = {
2200  /**
2201   * Wires the delegated quiz-flow events.
2202   */
2203  init: function init() {
2204    // Card CTA: fetch the question. The options are not in the card, so
2205    // this round trip is what reveals them — see quizCard.isml for why
2206    // they are not rendered with the grid.
2207    $('body').on('click', '.js-quiz-start', function (e) {
2208      e.preventDefault();
2209      var $btn = $(this);
2210      var $card = $btn.closest('.js-loyalty-activity-card');
2211      $btn.prop('disabled', true);
2212      flowAjax.post({
2213        url: $btn.attr('data-url'),
2214        data: flowAjax.withCsrf($card, {
2215          quizId: $btn.attr('data-quiz-id')
2216        }),
2217        $card: $card,
2218        $restore: $btn
2219      });
2220    }); // Option select: a quiz takes exactly one answer, so selecting
2221    // replaces rather than toggles. aria-pressed mirrors the selected
2222    // class for assistive tech.
2223
2224    $('body').on('click', '.js-quiz-flow .js-quiz-option', function (e) {
2225      e.preventDefault();
2226      var $option = $(this);
2227      var $flow = $option.closest('.js-quiz-flow');
2228      $flow.find('.js-quiz-option').removeClass('selected').attr('aria-pressed', 'false');
2229      $option.addClass('selected').attr('aria-pressed', 'true');
2230      $flow.find('.js-quiz-submit').prop('disabled', false);
2231    }); // Submit the answer; the response is the graded result.
2232
2233    $('body').on('click', '.js-quiz-flow .js-quiz-submit', function (e) {
2234      e.preventDefault();
2235      var $btn = $(this);
2236      var $flow = $btn.closest('.js-quiz-flow');
2237      var $card = $flow.closest('.js-loyalty-activity-card');
2238      var answer = currentAnswer($flow);
2239
2240      if (answer === null) {
2241        return;
2242      }
2243
2244      $btn.prop('disabled', true);
2245      flowAjax.post({
2246        url: $flow.attr('data-answer-url'),
2247        data: flowAjax.withCsrf($card, {
2248          quizId: $flow.attr('data-quiz-id'),
2249          answer: answer,
2250          // Lets the route reject an obviously malformed index
2251          // without a round trip to Antavo. A hint, not a bound —
2252          // Antavo grades the answer either way.
2253          answerCount: $flow.attr('data-answer-count')
2254        }),
2255        $card: $card,
2256        $restore: $btn // No success toast. The result fragment that replaces the card
2257        // already carries Antavo's own message, so announcing it again
2258        // in a toast said the same thing twice.
2259
2260      });
2261    });
2262  }
2263};
2264
2265/***/ }),
2266
2267/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_survey.js":
2268/*!*************************************************************************************************************************!*\
2269  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_survey.js ***!
2270  \*************************************************************************************************************************/
2271/*! no static exports found */
2272/***/ (function(module, exports, __webpack_require__) {
2273
2274"use strict";
2275
2276/**
2277 * Survey (Antavo profiling flow) in-card step machine.
2278 *
2279 * The card CTA requests the flow's next question; every submitted answer
2280 * returns either the following question or the completion state. All markup
2281 * arrives server-rendered, so this module only swaps fragments and posts the
2282 * answer. The answer is derived from the rendered inputs at submit time, so
2283 * swapping in the next fragment resets the state naturally. The display-only
2284 * question count rides from the card through every post so the fragments can
2285 * show "Question N of M".
2286 */
2287
2288var flowAjax = __webpack_require__(/*! ./_flowAjax */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/activities/_flowAjax.js");
2289/**
2290 * Reads the flow's current answer from the rendered inputs.
2291 *
2292 * @param {jQuery} $flow - The flow container
2293 * @returns {string|Array|null} - The single value, the multi-choice array,
2294 *   or null when nothing is answered yet
2295 */
2296
2297
2298function currentAnswer($flow) {
2299  var $selected = $flow.find('.js-survey-option.selected');
2300
2301  if ($selected.length) {
2302    var values = $selected.map(function () {
2303      return $(this).attr('data-value');
2304    }).get();
2305    return $flow.attr('data-multi-choice') === 'true' ? values : values[0];
2306  }
2307
2308  var $input = $flow.find('.js-survey-value');
2309
2310  if ($input.length && $input.val()) {
2311    return $input.val();
2312  }
2313
2314  return null;
2315}
2316/**
2317 * @param {jQuery} $flow - The flow container
2318 */
2319
2320
2321function syncSubmitState($flow) {
2322  var answer = currentAnswer($flow);
2323  $flow.find('.js-survey-submit').prop('disabled', answer === null);
2324}
2325/**
2326 * A freshly swapped-in question may already carry an answerable value (the
2327 * slider renders pre-filled with its minimum); sync the submit button so
2328 * the default is submittable without touching the control.
2329 *
2330 * @param {jQuery} $card - The card that just received a fragment
2331 */
2332
2333
2334function onFragmentSwapped($card) {
2335  var $flow = $card.find('.js-survey-flow');
2336
2337  if ($flow.length) {
2338    syncSubmitState($flow);
2339  }
2340}
2341
2342module.exports = {
2343  /**
2344   * Wires the delegated survey-flow events.
2345   */
2346  init: function init() {
2347    // Card CTA: open the flow with its first unanswered question.
2348    $('body').on('click', '.js-survey-start', function (e) {
2349      e.preventDefault();
2350      var $btn = $(this);
2351      var $card = $btn.closest('.js-loyalty-activity-card');
2352      var data = {
2353        flowId: $btn.attr('data-flow-id')
2354      };
2355
2356      if ($btn.attr('data-question-count')) {
2357        data.questionCount = $btn.attr('data-question-count');
2358      }
2359
2360      $btn.prop('disabled', true);
2361      flowAjax.post({
2362        url: $btn.attr('data-url'),
2363        data: flowAjax.withCsrf($card, data),
2364        $card: $card,
2365        $restore: $btn,
2366        onSwapped: function onSwapped() {
2367          onFragmentSwapped($card);
2368        }
2369      });
2370    }); // Option select: single-select replaces the selection; a
2371    // multi-choice question toggles each option. aria-pressed mirrors
2372    // the selected class for assistive tech.
2373
2374    $('body').on('click', '.js-survey-flow .js-survey-option', function (e) {
2375      e.preventDefault();
2376      var $option = $(this);
2377      var $flow = $option.closest('.js-survey-flow');
2378
2379      if ($flow.attr('data-multi-choice') === 'true') {
2380        $option.toggleClass('selected');
2381        $option.attr('aria-pressed', String($option.hasClass('selected')));
2382      } else {
2383        $flow.find('.js-survey-option').removeClass('selected').attr('aria-pressed', 'false');
2384        $option.addClass('selected').attr('aria-pressed', 'true');
2385      }
2386
2387      syncSubmitState($flow);
2388    }); // Value inputs: numeric slider, date picker, and free text.
2389
2390    $('body').on('input change', '.js-survey-flow .js-survey-value', function () {
2391      var $input = $(this);
2392      var $flow = $input.closest('.js-survey-flow');
2393      $flow.find('.js-survey-slider-value').text($input.val());
2394      syncSubmitState($flow);
2395    }); // Submit the current answer; the response is the next question or
2396    // the completion state.
2397
2398    $('body').on('click', '.js-survey-flow .js-survey-submit', function (e) {
2399      e.preventDefault();
2400      var $btn = $(this);
2401      var $flow = $btn.closest('.js-survey-flow');
2402      var $card = $flow.closest('.js-loyalty-activity-card');
2403      var answer = currentAnswer($flow);
2404
2405      if (answer === null || Array.isArray(answer) && !answer.length) {
2406        return;
2407      }
2408
2409      var data = {
2410        flowId: $flow.attr('data-flow-id'),
2411        questionId: $flow.attr('data-question-id'),
2412        // Decides how the answer is typed on the wire: Antavo 500s
2413        // on a numeric_slider answer sent as a quoted string.
2414        questionType: $flow.attr('data-question-type')
2415      };
2416
2417      if ($flow.attr('data-question-count')) {
2418        data.questionCount = $flow.attr('data-question-count');
2419      }
2420
2421      if (Array.isArray(answer)) {
2422        data.answer = JSON.stringify(answer);
2423        data.multiChoice = 'true';
2424      } else {
2425        data.answer = String(answer);
2426      }
2427
2428      $btn.prop('disabled', true);
2429      flowAjax.post({
2430        url: $flow.attr('data-answer-url'),
2431        data: flowAjax.withCsrf($card, data),
2432        $card: $card,
2433        $restore: $btn,
2434        // No success toast: the completion fragment that replaces the
2435        // card already carries Antavo's own message, so a toast said
2436        // the same thing twice.
2437        onSwapped: function onSwapped() {
2438          onFragmentSwapped($card);
2439        }
2440      });
2441    });
2442  }
2443};
2444
2445/***/ }),
2446
2447/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/main.js":
2448/*!***************************************************************************************************!*\
2449  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/main.js ***!
2450  \***************************************************************************************************/
2451/*! no static exports found */
2452/***/ (function(module, exports, __webpack_require__) {
2453
2454"use strict";
2455
2456
2457__webpack_require__(/*! regenerator-runtime/runtime */ "../autobahn_client_core/node_modules/regenerator-runtime/runtime.js");
2458
2459var main = __webpack_require__(/*! integrations/main */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/main.js");
2460
2461main.baseFiles.menu = __webpack_require__(/*! ./components/menu */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/menu.js");
2462main.baseFiles.yotpo = __webpack_require__(/*! ./components/yotpo */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/yotpo.js");
2463main.baseFiles.consentTracking = __webpack_require__(/*! ./components/consentTracking */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/consentTracking.js");
2464main.baseFiles.warranty = __webpack_require__(/*! ./components/warranty */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/warranty.js");
2465main.baseFiles.slider = __webpack_require__(/*! ./components/slider */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/slider.js").init;
2466main.baseFiles.base = __webpack_require__(/*! ./product/base */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/product/base.js");
2467main.baseFiles.timer = __webpack_require__(/*! ./components/timer */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/timer.js");
2468main.baseFiles.search = __webpack_require__(/*! ./search/search */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/search/search.js");
2469main.baseFiles.flyout = __webpack_require__(/*! ./components/flyout */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/flyout.js");
2470main.baseFiles.clientSideValidation = __webpack_require__(/*! ./components/clientSideValidation */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/clientSideValidation.js");
2471main.baseFiles.backstage = __webpack_require__(/*! ./backstage/backstage */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/backstage/backstage.js");
2472main.baseFiles.antavo = __webpack_require__(/*! ./components/antavo */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/components/antavo.js"); // Global because the activity grid's Page Designer shell is page-cached (a
2473// cached render script never re-runs, so its assets.addJs never ships) and the
2474// grid can sit in an AJAX-rendered region that includes no scripts at all. The
2475// underscore prefix keeps the builder from also emitting this as its own
2476// standalone bundle.
2477
2478main.baseFiles.loyaltyActivities = __webpack_require__(/*! ./loyalty/_loyaltyActivities */ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/loyalty/_loyaltyActivities.js"); // add class to iframe for mobile video display
2479
2480window.focus();
2481window.addEventListener("blur", function () {
2482  setTimeout(function () {
2483    if (document.activeElement.tagName === "IFRAME") {
2484      var videoFrameClassList = document.activeElement.classList;
2485      document.activeElement.classList.toggle("active-iframe");
2486    }
2487  });
2488});
2489var interval = window.setInterval(trackClick, 100);
2490var inc = 0;
2491
2492function trackClick() {
2493  if (document.activeElement == document.querySelector("iframe[title='vimeo-player']")) {
2494    i++;
2495    window.focus();
2496  }
2497}
2498
2499function initVideoCloseEvent() {
2500  var theVideoCloseButton = document.querySelector(".product-media-body button.close[data-dismiss='modal']");
2501
2502  if (theVideoCloseButton) {
2503    theVideoCloseButton.addEventListener("click", function () {
2504      var videoFrame = document.querySelector("iframe[title='vimeo-player'].active-iframe");
2505
2506      if (videoFrame) {
2507        videoFrame.classList.remove("active-iframe");
2508        videoFrame.src = videoFrame.src; // reload iframe to stop video
2509      }
2510    });
2511  }
2512}
2513
2514function fixBlogTitle() {
2515  var thePageTitle = document.title;
2516
2517  if (thePageTitle.includes("Blog Landing Page")) {
2518    var newTitle = thePageTitle.replace("Blog Landing Page", "The Martin Blog");
2519    document.title = newTitle;
2520  }
2521}
2522
2523function isHidden(el) {
2524  return el.offsetParent === null;
2525} // remove all mention of affirm on retired product PDPs
2526
2527
2528function removeMentionOfAffirmRetired() {
2529  var retiredBadge = document.querySelector('.primary-images span.badge-product');
2530
2531  if (retiredBadge && retiredBadge.innerHTML == "RETIRED") {
2532    var affirmElements = document.querySelectorAll('.affirm-as-low-as, .checkout-continue .affirm-as-low-as');
2533    affirmElements.forEach(function (elem) {
2534      elem.remove();
2535    });
2536  }
2537} // remove affirm messaging if add to cart button is hidden
2538
2539
2540function removeAffirmMessagingCart() {
2541  var addToCartButton = document.querySelector(".btn.add-to-cart");
2542
2543  if (addToCartButton && isHidden(addToCartButton)) {
2544    var affirmMessaging = document.querySelectorAll('.affirm-as-low-as, .checkout-continue .affirm-as-low-as');
2545    affirmMessaging.forEach(function (el) {
2546      el.style.visibility = "hidden";
2547    });
2548  }
2549}
2550
2551function updateAffirmVisibilityVariant() {
2552  var allAffirmMessaging = document.querySelectorAll('.affirm-as-low-as, .checkout-continue .affirm-as-low-as');
2553  var HandednessButtons = document.querySelectorAll('button.guitar_Handedness-attribute,button.guitar_Electronics-attribute');
2554  HandednessButtons.forEach(function (elem) {
2555    elem.addEventListener('click', function () {
2556      setTimeout(function () {
2557        if (document.querySelector("button.add-to-cart") && document.querySelector(".col-auto.addtocartbutton").classList.contains("d-none")) {
2558          allAffirmMessaging.forEach(function (el) {
2559            el.style.visibility = "hidden";
2560          });
2561        } else {
2562          allAffirmMessaging.forEach(function (el) {
2563            el.style.visibility = "visible";
2564          });
2565        }
2566      }, 500);
2567    });
2568  });
2569} // remove dark mode on backstage - RW
2570
2571
2572var removeClassFromBlogs = function removeClassFromBlogs() {
2573  var blogContainer = document.querySelector('.blog.page-designer');
2574
2575  if (blogContainer && blogContainer.classList.contains("text--white")) {
2576    blogContainer.classList.remove("text--white");
2577  }
2578
2579  var blogContainerHome = document.querySelector('div.experience-component.experience-commerce_assets-wysiwyg > div.col-12.py-5');
2580
2581  if (blogContainerHome) {
2582    blogContainerHome.classList.remove("text--white");
2583  }
2584
2585  var blogHeadline = document.querySelector('div.experience-component.experience-commerce_assets-wysiwyg > div.px-5.text--white');
2586
2587  if (blogHeadline) {
2588    blogHeadline.classList.remove("text--white");
2589  }
2590};
2591
2592function addReadMoreToShortDescriptions() {
2593  var shortDescriptions = document.querySelectorAll('.container.product-detail div.mt-3 > p');
2594  var descButton = document.querySelector("a[data-target='#pdp-flyout-headline-description']");
2595
2596  if (shortDescriptions.innerHTML !== "") {
2597    shortDescriptions.forEach(function (desc) {
2598      var readMore = document.createElement('a');
2599      readMore.href = '#';
2600      readMore.textContent = 'Read More';
2601      readMore.style.display = 'inline-block';
2602      readMore.style.marginTop = '10px';
2603      readMore.addEventListener('click', function (e) {
2604        e.preventDefault();
2605        descButton.click();
2606      });
2607      desc.parentNode.insertBefore(readMore, desc.nextSibling);
2608    });
2609  }
2610}
2611
2612document.addEventListener("DOMContentLoaded", function (e) {
2613  removeClassFromBlogs();
2614  removeMentionOfAffirmRetired();
2615  removeAffirmMessagingCart();
2616  updateAffirmVisibilityVariant();
2617  fixBlogTitle();
2618  addReadMoreToShortDescriptions();
2619  initVideoCloseEvent();
2620});
2621module.exports = main;
2622
2623/***/ }),
2624
2625/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/product/base.js":
2626/*!***********************************************************************************************************!*\
2627  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/product/base.js ***!
2628  \***********************************************************************************************************/
2629/*! no static exports found */
2630/***/ (function(module, exports, __webpack_require__) {
2631
2632"use strict";
2633
2634
2635var baseCore = __webpack_require__(/*! integrations/product/base */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/product/base.js");
2636
2637baseCore.sizeChart = function () {
2638  $('body').on('click', '.size-chart .size-chart-launcher', function (event) {
2639    event.preventDefault();
2640    var url = $(event.target).attr('href');
2641    var productId = $(event.target).closest('.product-detail').attr('data-pid');
2642    var $sizeChartModal = $('.modal[data-product=' + productId + ']');
2643    var $modalBody = $sizeChartModal.find('.modal-body .size-chart-content');
2644    $.ajax({
2645      url: url,
2646      type: 'get',
2647      dataType: 'html',
2648      success: function success(data) {
2649        $modalBody.html(data);
2650      }
2651    }); //if the sizechart is from a quickview append after all the modal-backdrops
2652
2653    if ($(event.target).parents('.product-quickview').length) {
2654      var $sizeChartContainer = $(event.target).closest('.size-chart');
2655      $sizeChartModal.appendTo('body');
2656      $sizeChartModal.on('hide.bs.modal', function (event) {
2657        $sizeChartModal.appendTo($sizeChartContainer);
2658      });
2659    }
2660
2661    $sizeChartModal.modal('show');
2662  });
2663  $('body').on('click', '#sizeChartModal .close', function (event) {
2664    $(event.target).closest('#sizeChartModal').modal('hide');
2665  });
2666};
2667
2668baseCore.updateAttribute = function () {
2669  $('body').on('product:afterAttributeSelect', function (e, response) {
2670    // CLIENT MOD: Don't update the size chart modal after selecting variant because the size chart is linked to the master product
2671    // response.container.find('#sizeChartModal').attr('data-product', response.data.product.id);
2672    //Quickview
2673    if ($('.modal.show .product-quickview>.bundle-items').length) {
2674      $('.modal.show').find(response.container).data('pid', response.data.product.id);
2675      $('.modal.show').find(response.container).find('.product-id').text(response.data.product.id);
2676    } else if ($('.set-items').length) {
2677      response.container.find('.product-id').text(response.data.product.id);
2678    } else if ($('.modal.show .product-quickview').length) {
2679      $('.modal.show .product-quickview').data('pid', response.data.product.id);
2680      $('.modal.show .full-pdp-link').attr('href', response.data.product.selectedProductUrl);
2681      $('.modal.show').find(response.container).find('.product-id').text(response.data.product.id); //Main PDP
2682    } else if ($('.product-detail>.bundle-items').length) {
2683      response.container.data('pid', response.data.product.id);
2684      response.container.find('.product-id').text(response.data.product.id);
2685    } else if ($('.product-set-detail').eq(0)) {
2686      response.container.data('pid', response.data.product.id);
2687      response.container.find('.product-id').text(response.data.product.id);
2688      response.container.find('.add-to-cart').data('pid', response.data.product.id);
2689    } else {
2690      $('.product-detail .add-to-cart').data('pid', response.data.product.id);
2691      $('.product-id').text(response.data.product.id);
2692      $('.product-detail:not(".bundle-item")').data('pid', response.data.product.id);
2693    }
2694  });
2695}; // Modified to add classes for availability messages
2696
2697
2698baseCore.methods.updateAvailabilityProcess = function (response, $productContainer) {
2699  var availabilityValue = '';
2700  var availabilityMessages = response.product.availability.messages;
2701
2702  if (!response.product.readyToOrder) {
2703    availabilityValue = '<li><div class="' + response.resources.info_selectforstock.toLowerCase().replace(/ /g, '-') + '">' + response.resources.info_selectforstock + '</div></li>';
2704  } else {
2705    availabilityMessages.forEach(function (message) {
2706      availabilityValue += '<li><div class="' + message.toLowerCase().replace(/ /g, '-') + '">' + message + '</div></li>';
2707    });
2708  }
2709
2710  $($productContainer).trigger('product:updateAvailability', {
2711    product: response.product,
2712    $productContainer: $productContainer,
2713    message: availabilityValue,
2714    resources: response.resources
2715  });
2716};
2717/**
2718 * Updates media modal with PDP main images and videos from response
2719 * @param {Object[]} images - Array of large product images,along with related information
2720 * @param {jQuery} videos - Array of videos for the product
2721 */
2722
2723
2724baseCore.methods.updateMediaModal = function (images, videos) {
2725  var mediaModal = $('#productMediaModal');
2726  var photoContainer = mediaModal.find('.photo-container');
2727  var videoContainer = mediaModal.find('.videos-container');
2728  var videoTab = mediaModal.find('.video-tab');
2729
2730  if (!videos || videos.URLs.length === 0) {
2731    videoTab.addClass('d-none');
2732    videoContainer.addClass('d-none');
2733  } else {
2734    videoContainer.removeClass('d-none');
2735    videoTab.removeClass('d-none');
2736    videoContainer.empty();
2737    videos.URLs.forEach(function (URL) {
2738      var $videoContainer = $('<div></div>');
2739      var $videoElement = $(URL);
2740      $videoContainer.attr({
2741        'class': 'position-relative video-container d-flex justify-content-center'
2742      });
2743      $videoContainer.append($videoElement[0]);
2744      videoContainer.append($videoContainer[0]);
2745    });
2746  }
2747
2748  if (images) {
2749    photoContainer.empty();
2750    images.large.forEach(function (image) {
2751      var $imageElement = $('<img/>');
2752      $imageElement.attr({
2753        'src': image.absURL,
2754        'alt': image.alt + 'image number ' + (parseInt(image.index) + 1).toFixed(0),
2755        'class': 'd-block img-fluid zoomImg',
2756        'itemprop': 'image',
2757        'role': 'presentation'
2758      });
2759      photoContainer.append($imageElement[0]);
2760    });
2761  }
2762};
2763/**
2764 * Updates slider for PDP main images and thumbnails from response containing images
2765 * @param {Object[]} imgs - Array of large product images,along with related information
2766 * @param {jQuery} $productContainer - DOM element for a given product
2767 */
2768
2769
2770baseCore.methods.createSlider = function (images, assets, videos, $productContainer) {
2771  var $sliderContainers = $productContainer.find('.slider-container');
2772  var data = images !== null ? {
2773    images: images
2774  } : null;
2775  data.assets = assets || null;
2776  data.videos = videos; // Reversing order in which to update sliders so that thumbnails get initialized first
2777
2778  $($sliderContainers.get().reverse()).each(function (index, sliderContainer) {
2779    var $slider = $(sliderContainer).find('.slider'); // MARTIN MOD : carry through the no-zoom behavior from the previous variation
2780
2781    data.zoom = $slider.find('.no-zoom').length === 0;
2782    $slider.trigger('slider:update', data);
2783  });
2784};
2785/**
2786 * Parses JSON from Ajax call made whenever an attribute value is [de]selected
2787 * @param {Object} response - response from Ajax call
2788 * @param {Object} response.product - Product object
2789 * @param {string} response.product.id - Product ID
2790 * @param {Object[]} response.product.variationAttributes - Product attributes
2791 * @param {Object[]} response.product.images - Product images
2792 * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required
2793 *     attributes have been selected.  Used partially to
2794 *     determine whether the Add to Cart button can be enabled
2795 * @param {jQuery} $productContainer - DOM element for a given product.
2796 */
2797
2798
2799baseCore.methods.handleVariantResponse = function (response, $productContainer) {
2800  var isChoiceOfBonusProducts = $productContainer.parents('.choose-bonus-product-dialog').length > 0;
2801  var isVariant;
2802  var isSetItem = $productContainer.hasClass('product-set-item-detail') ? true : false;
2803
2804  if (response.product.variationAttributes) {
2805    baseCore.methods.updateAttrs(response.product.variationAttributes, $productContainer, response.resources);
2806    isVariant = response.product.productType === 'variant';
2807
2808    if (isChoiceOfBonusProducts && isVariant) {
2809      $productContainer.parent('.bonus-product-item').data('pid', response.product.id);
2810      $productContainer.parent('.bonus-product-item').data('ready-to-order', response.product.readyToOrder);
2811    }
2812  }
2813
2814  var videos = null;
2815  var videoThumbnails = [];
2816
2817  if (response.product.videoURLs) {
2818    response.product.videoThumbnail1 ? videoThumbnails.push(response.product.videoThumbnail1) : '';
2819    response.product.videoThumbnail2 ? videoThumbnails.push(response.product.videoThumbnail2) : '';
2820    response.product.videoThumbnail3 ? videoThumbnails.push(response.product.videoThumbnail3) : '';
2821    response.product.videoThumbnail4 ? videoThumbnails.push(response.product.videoThumbnail4) : '';
2822    var videos = {
2823      URLs: response.product.videoURLs,
2824      thumbnails: videoThumbnails
2825    };
2826  } // Update primary images
2827
2828
2829  var primaryImages = response.product.images;
2830  var pdpGalleryAssets = response.product.pdpGalleryAssets;
2831  var $oldWishlistIcon = $productContainer.find('div.slide .wishlist-toggle-product').first().clone(true);
2832  baseCore.methods.createSlider(primaryImages, pdpGalleryAssets, videos, $productContainer);
2833  baseCore.methods.updateMediaModal(primaryImages, videos); // if variant is a product set item, update the sample image
2834
2835  if (isSetItem) {
2836    $productContainer.find('.product-set-item-main-image').attr('src', primaryImages.large[0].url).attr('alt', primaryImages.large[0].alt);
2837  } // Update pricing
2838
2839
2840  if (!isChoiceOfBonusProducts) {
2841    var $priceSelector = $('.prices .price', $productContainer).length ? $('.prices .price', $productContainer) : $('.prices .price');
2842    $priceSelector.replaceWith(response.product.price.html);
2843  } // Update promotions
2844
2845
2846  $productContainer.find('.promotions').empty().html(response.product.promotionsHtml);
2847  baseCore.methods.updateAvailabilityProcess(response, $productContainer);
2848
2849  if (isChoiceOfBonusProducts) {
2850    var $selectButton = $productContainer.find('.select-bonus-product');
2851    $selectButton.trigger('bonusproduct:updateSelectButton', {
2852      product: response.product,
2853      $productContainer: $productContainer
2854    });
2855  } else {
2856    // Enable "Add to Cart" button if all required attributes have been selected
2857    $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {
2858      product: response.product,
2859      $productContainer: $productContainer
2860    }).trigger('product:statusUpdate', response.product);
2861  } // Update attributes
2862
2863
2864  $productContainer.find('.main-attributes').empty().html(baseCore.methods.getAttributesHtml(response.product.attributes)); // Update wishlist
2865
2866  if ($oldWishlistIcon && $oldWishlistIcon.length) {
2867    var $newWishlistIcon = $oldWishlistIcon;
2868    $newWishlistIcon.attr('data-wishlistpid', response.product.wishlistpid); //Make heart icon accurate
2869
2870    var wishlist = __webpack_require__(/*! core/wishlist/components/helpers.js */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
2871
2872    wishlist.updateLinkData($newWishlistIcon);
2873    var $newSliderMainImages = $productContainer.find('div.primary-images-main div.slide img');
2874    $newSliderMainImages.each(function (_i, newImage) {
2875      var $newImage = $(newImage);
2876      $newImage.after($newWishlistIcon.clone(true));
2877    });
2878  }
2879};
2880
2881module.exports = baseCore;
2882
2883/***/ }),
2884
2885/***/ "../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/search/search.js":
2886/*!************************************************************************************************************!*\
2887  !*** ../autobahn_client_core/cartridges/autobahn_client_core/cartridge/client/default/js/search/search.js ***!
2888  \************************************************************************************************************/
2889/*! no static exports found */
2890/***/ (function(module, exports, __webpack_require__) {
2891
2892"use strict";
2893
2894
2895$(document).ready(function () {
2896  $("body").on("click", "a.product-tile-image-link", function (e) {
2897    if ($('.permalink').length) {
2898      // Stop propagation, prevent link from redirecting
2899      e.stopPropagation();
2900      e.preventDefault(); // Retrieve the pid from the product tile, add it to our current URL
2901
2902      var pid = $(this).parents(".product-tile").data("pid");
2903      var url = new URL($(".permalink").val());
2904      url.searchParams.set("clickedpid", pid);
2905      history.pushState(null, document.title, url.toString()); // Follow the link 
2906
2907      window.location = $(this).attr('href');
2908      return false;
2909    }
2910  }); // Check for 'clickedpid' in the URL, scroll to it after .5s if it exists
2911
2912  var urlParams = new URLSearchParams(window.location.search);
2913  var clickedpid = urlParams.get("clickedpid");
2914
2915  if (clickedpid) {
2916    setTimeout(function () {
2917      $("[data-pid=" + clickedpid + "]")[0].scrollIntoView();
2918    }, 500);
2919  }
2920});
2921
2922var searchCore = __webpack_require__(/*! core/components/search */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/search.js").init; // Modified to add classes for availability messages
2923
2924
2925searchCore.showMore = function () {
2926  // Show more products
2927  $(".container").on("click", ".show-more button", function (e) {
2928    e.stopPropagation();
2929    e.preventDefault();
2930    var showMoreUrl = $(this).data("url");
2931    var $showMoreButton = $(e.target);
2932    $.spinner().start();
2933    $(this).trigger("search:showMore", e);
2934    $.ajax({
2935      url: showMoreUrl,
2936      data: {
2937        selectedUrl: showMoreUrl
2938      },
2939      method: "GET",
2940      success: function success(response) {
2941        var promoTileCount = $showMoreButton.closest(".product-grid").find('[class*="experience-promoTile"]').length;
2942        $(".grid-footer").replaceWith(response);
2943        $("body").trigger("search:showMore--success");
2944        $.spinner().stop();
2945      },
2946      error: function error() {
2947        $.spinner().stop();
2948      }
2949    });
2950  });
2951};
2952
2953searchCore.updateHistory = function () {
2954  $("body").on("search:showMore--success", function () {
2955    history.replaceState(null, document.title, $(".permalink").val());
2956  });
2957};
2958
2959module.exports = searchCore;
2960
2961/***/ }),
2962
vendor: 25,677 bytes, lines 2963-3422
2963/***/ "../autobahn_client_core/node_modules/js-cookie/dist/js.cookie.js":
2964/*!************************************************************************!*\
2965  !*** ../autobahn_client_core/node_modules/js-cookie/dist/js.cookie.js ***!
2966  \************************************************************************/
2967/*! no static exports found */
2968/***/ (function(module, exports, __webpack_require__) {
2969
2970var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
2971
2972/*! js-cookie v3.0.1 | MIT */
2973;
2974
2975(function (global, factory) {
2976  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() :  true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
2977				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
2978				(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
2979				__WEBPACK_AMD_DEFINE_FACTORY__),
2980				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : (undefined);
2981})(this, function () {
2982  'use strict';
2983  /* eslint-disable no-var */
2984
2985  function assign(target) {
2986    for (var i = 1; i < arguments.length; i++) {
2987      var source = arguments[i];
2988
2989      for (var key in source) {
2990        target[key] = source[key];
2991      }
2992    }
2993
2994    return target;
2995  }
2996  /* eslint-enable no-var */
2997
2998  /* eslint-disable no-var */
2999
3000
3001  var defaultConverter = {
3002    read: function read(value) {
3003      if (value[0] === '"') {
3004        value = value.slice(1, -1);
3005      }
3006
3007      return value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
3008    },
3009    write: function write(value) {
3010      return encodeURIComponent(value).replace(/%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g, decodeURIComponent);
3011    }
3012  };
3013  /* eslint-enable no-var */
3014
3015  /* eslint-disable no-var */
3016
3017  function init(converter, defaultAttributes) {
3018    function set(key, value, attributes) {
3019      if (typeof document === 'undefined') {
3020        return;
3021      }
3022
3023      attributes = assign({}, defaultAttributes, attributes);
3024
3025      if (typeof attributes.expires === 'number') {
3026        attributes.expires = new Date(Date.now() + attributes.expires * 864e5);
3027      }
3028
3029      if (attributes.expires) {
3030        attributes.expires = attributes.expires.toUTCString();
3031      }
3032
3033      key = encodeURIComponent(key).replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent).replace(/[()]/g, escape);
3034      var stringifiedAttributes = '';
3035
3036      for (var attributeName in attributes) {
3037        if (!attributes[attributeName]) {
3038          continue;
3039        }
3040
3041        stringifiedAttributes += '; ' + attributeName;
3042
3043        if (attributes[attributeName] === true) {
3044          continue;
3045        } // Considers RFC 6265 section 5.2:
3046        // ...
3047        // 3.  If the remaining unparsed-attributes contains a %x3B (";")
3048        //     character:
3049        // Consume the characters of the unparsed-attributes up to,
3050        // not including, the first %x3B (";") character.
3051        // ...
3052
3053
3054        stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
3055      }
3056
3057      return document.cookie = key + '=' + converter.write(value, key) + stringifiedAttributes;
3058    }
3059
3060    function get(key) {
3061      if (typeof document === 'undefined' || arguments.length && !key) {
3062        return;
3063      } // To prevent the for loop in the first place assign an empty array
3064      // in case there are no cookies at all.
3065
3066
3067      var cookies = document.cookie ? document.cookie.split('; ') : [];
3068      var jar = {};
3069
3070      for (var i = 0; i < cookies.length; i++) {
3071        var parts = cookies[i].split('=');
3072        var value = parts.slice(1).join('=');
3073
3074        try {
3075          var foundKey = decodeURIComponent(parts[0]);
3076          jar[foundKey] = converter.read(value, foundKey);
3077
3078          if (key === foundKey) {
3079            break;
3080          }
3081        } catch (e) {}
3082      }
3083
3084      return key ? jar[key] : jar;
3085    }
3086
3087    return Object.create({
3088      set: set,
3089      get: get,
3090      remove: function remove(key, attributes) {
3091        set(key, '', assign({}, attributes, {
3092          expires: -1
3093        }));
3094      },
3095      withAttributes: function withAttributes(attributes) {
3096        return init(this.converter, assign({}, this.attributes, attributes));
3097      },
3098      withConverter: function withConverter(converter) {
3099        return init(assign({}, this.converter, converter), this.attributes);
3100      }
3101    }, {
3102      attributes: {
3103        value: Object.freeze(defaultAttributes)
3104      },
3105      converter: {
3106        value: Object.freeze(converter)
3107      }
3108    });
3109  }
3110
3111  var api = init(defaultConverter, {
3112    path: '/'
3113  });
3114  /* eslint-enable no-var */
3115
3116  return api;
3117});
3118
3119/***/ }),
3120
3121/***/ "../autobahn_client_core/node_modules/moment/locale sync recursive ^\\.\\/.*$":
3122/*!************************************************************************!*\
3123  !*** ../autobahn_client_core/node_modules/moment/locale sync ^\.\/.*$ ***!
3124  \************************************************************************/
3125/*! no static exports found */
3126/***/ (function(module, exports, __webpack_require__) {
3127
3128var map = {
3129	"./af": "../autobahn_client_core/node_modules/moment/locale/af.js",
3130	"./af.js": "../autobahn_client_core/node_modules/moment/locale/af.js",
3131	"./ar": "../autobahn_client_core/node_modules/moment/locale/ar.js",
3132	"./ar-dz": "../autobahn_client_core/node_modules/moment/locale/ar-dz.js",
3133	"./ar-dz.js": "../autobahn_client_core/node_modules/moment/locale/ar-dz.js",
3134	"./ar-kw": "../autobahn_client_core/node_modules/moment/locale/ar-kw.js",
3135	"./ar-kw.js": "../autobahn_client_core/node_modules/moment/locale/ar-kw.js",
3136	"./ar-ly": "../autobahn_client_core/node_modules/moment/locale/ar-ly.js",
3137	"./ar-ly.js": "../autobahn_client_core/node_modules/moment/locale/ar-ly.js",
3138	"./ar-ma": "../autobahn_client_core/node_modules/moment/locale/ar-ma.js",
3139	"./ar-ma.js": "../autobahn_client_core/node_modules/moment/locale/ar-ma.js",
3140	"./ar-sa": "../autobahn_client_core/node_modules/moment/locale/ar-sa.js",
3141	"./ar-sa.js": "../autobahn_client_core/node_modules/moment/locale/ar-sa.js",
3142	"./ar-tn": "../autobahn_client_core/node_modules/moment/locale/ar-tn.js",
3143	"./ar-tn.js": "../autobahn_client_core/node_modules/moment/locale/ar-tn.js",
3144	"./ar.js": "../autobahn_client_core/node_modules/moment/locale/ar.js",
3145	"./az": "../autobahn_client_core/node_modules/moment/locale/az.js",
3146	"./az.js": "../autobahn_client_core/node_modules/moment/locale/az.js",
3147	"./be": "../autobahn_client_core/node_modules/moment/locale/be.js",
3148	"./be.js": "../autobahn_client_core/node_modules/moment/locale/be.js",
3149	"./bg": "../autobahn_client_core/node_modules/moment/locale/bg.js",
3150	"./bg.js": "../autobahn_client_core/node_modules/moment/locale/bg.js",
3151	"./bm": "../autobahn_client_core/node_modules/moment/locale/bm.js",
3152	"./bm.js": "../autobahn_client_core/node_modules/moment/locale/bm.js",
3153	"./bn": "../autobahn_client_core/node_modules/moment/locale/bn.js",
3154	"./bn-bd": "../autobahn_client_core/node_modules/moment/locale/bn-bd.js",
3155	"./bn-bd.js": "../autobahn_client_core/node_modules/moment/locale/bn-bd.js",
3156	"./bn.js": "../autobahn_client_core/node_modules/moment/locale/bn.js",
3157	"./bo": "../autobahn_client_core/node_modules/moment/locale/bo.js",
3158	"./bo.js": "../autobahn_client_core/node_modules/moment/locale/bo.js",
3159	"./br": "../autobahn_client_core/node_modules/moment/locale/br.js",
3160	"./br.js": "../autobahn_client_core/node_modules/moment/locale/br.js",
3161	"./bs": "../autobahn_client_core/node_modules/moment/locale/bs.js",
3162	"./bs.js": "../autobahn_client_core/node_modules/moment/locale/bs.js",
3163	"./ca": "../autobahn_client_core/node_modules/moment/locale/ca.js",
3164	"./ca.js": "../autobahn_client_core/node_modules/moment/locale/ca.js",
3165	"./cs": "../autobahn_client_core/node_modules/moment/locale/cs.js",
3166	"./cs.js": "../autobahn_client_core/node_modules/moment/locale/cs.js",
3167	"./cv": "../autobahn_client_core/node_modules/moment/locale/cv.js",
3168	"./cv.js": "../autobahn_client_core/node_modules/moment/locale/cv.js",
3169	"./cy": "../autobahn_client_core/node_modules/moment/locale/cy.js",
3170	"./cy.js": "../autobahn_client_core/node_modules/moment/locale/cy.js",
3171	"./da": "../autobahn_client_core/node_modules/moment/locale/da.js",
3172	"./da.js": "../autobahn_client_core/node_modules/moment/locale/da.js",
3173	"./de": "../autobahn_client_core/node_modules/moment/locale/de.js",
3174	"./de-at": "../autobahn_client_core/node_modules/moment/locale/de-at.js",
3175	"./de-at.js": "../autobahn_client_core/node_modules/moment/locale/de-at.js",
3176	"./de-ch": "../autobahn_client_core/node_modules/moment/locale/de-ch.js",
3177	"./de-ch.js": "../autobahn_client_core/node_modules/moment/locale/de-ch.js",
3178	"./de.js": "../autobahn_client_core/node_modules/moment/locale/de.js",
3179	"./dv": "../autobahn_client_core/node_modules/moment/locale/dv.js",
3180	"./dv.js": "../autobahn_client_core/node_modules/moment/locale/dv.js",
3181	"./el": "../autobahn_client_core/node_modules/moment/locale/el.js",
3182	"./el.js": "../autobahn_client_core/node_modules/moment/locale/el.js",
3183	"./en-au": "../autobahn_client_core/node_modules/moment/locale/en-au.js",
3184	"./en-au.js": "../autobahn_client_core/node_modules/moment/locale/en-au.js",
3185	"./en-ca": "../autobahn_client_core/node_modules/moment/locale/en-ca.js",
3186	"./en-ca.js": "../autobahn_client_core/node_modules/moment/locale/en-ca.js",
3187	"./en-gb": "../autobahn_client_core/node_modules/moment/locale/en-gb.js",
3188	"./en-gb.js": "../autobahn_client_core/node_modules/moment/locale/en-gb.js",
3189	"./en-ie": "../autobahn_client_core/node_modules/moment/locale/en-ie.js",
3190	"./en-ie.js": "../autobahn_client_core/node_modules/moment/locale/en-ie.js",
3191	"./en-il": "../autobahn_client_core/node_modules/moment/locale/en-il.js",
3192	"./en-il.js": "../autobahn_client_core/node_modules/moment/locale/en-il.js",
3193	"./en-in": "../autobahn_client_core/node_modules/moment/locale/en-in.js",
3194	"./en-in.js": "../autobahn_client_core/node_modules/moment/locale/en-in.js",
3195	"./en-nz": "../autobahn_client_core/node_modules/moment/locale/en-nz.js",
3196	"./en-nz.js": "../autobahn_client_core/node_modules/moment/locale/en-nz.js",
3197	"./en-sg": "../autobahn_client_core/node_modules/moment/locale/en-sg.js",
3198	"./en-sg.js": "../autobahn_client_core/node_modules/moment/locale/en-sg.js",
3199	"./eo": "../autobahn_client_core/node_modules/moment/locale/eo.js",
3200	"./eo.js": "../autobahn_client_core/node_modules/moment/locale/eo.js",
3201	"./es": "../autobahn_client_core/node_modules/moment/locale/es.js",
3202	"./es-do": "../autobahn_client_core/node_modules/moment/locale/es-do.js",
3203	"./es-do.js": "../autobahn_client_core/node_modules/moment/locale/es-do.js",
3204	"./es-mx": "../autobahn_client_core/node_modules/moment/locale/es-mx.js",
3205	"./es-mx.js": "../autobahn_client_core/node_modules/moment/locale/es-mx.js",
3206	"./es-us": "../autobahn_client_core/node_modules/moment/locale/es-us.js",
3207	"./es-us.js": "../autobahn_client_core/node_modules/moment/locale/es-us.js",
3208	"./es.js": "../autobahn_client_core/node_modules/moment/locale/es.js",
3209	"./et": "../autobahn_client_core/node_modules/moment/locale/et.js",
3210	"./et.js": "../autobahn_client_core/node_modules/moment/locale/et.js",
3211	"./eu": "../autobahn_client_core/node_modules/moment/locale/eu.js",
3212	"./eu.js": "../autobahn_client_core/node_modules/moment/locale/eu.js",
3213	"./fa": "../autobahn_client_core/node_modules/moment/locale/fa.js",
3214	"./fa.js": "../autobahn_client_core/node_modules/moment/locale/fa.js",
3215	"./fi": "../autobahn_client_core/node_modules/moment/locale/fi.js",
3216	"./fi.js": "../autobahn_client_core/node_modules/moment/locale/fi.js",
3217	"./fil": "../autobahn_client_core/node_modules/moment/locale/fil.js",
3218	"./fil.js": "../autobahn_client_core/node_modules/moment/locale/fil.js",
3219	"./fo": "../autobahn_client_core/node_modules/moment/locale/fo.js",
3220	"./fo.js": "../autobahn_client_core/node_modules/moment/locale/fo.js",
3221	"./fr": "../autobahn_client_core/node_modules/moment/locale/fr.js",
3222	"./fr-ca": "../autobahn_client_core/node_modules/moment/locale/fr-ca.js",
3223	"./fr-ca.js": "../autobahn_client_core/node_modules/moment/locale/fr-ca.js",
3224	"./fr-ch": "../autobahn_client_core/node_modules/moment/locale/fr-ch.js",
3225	"./fr-ch.js": "../autobahn_client_core/node_modules/moment/locale/fr-ch.js",
3226	"./fr.js": "../autobahn_client_core/node_modules/moment/locale/fr.js",
3227	"./fy": "../autobahn_client_core/node_modules/moment/locale/fy.js",
3228	"./fy.js": "../autobahn_client_core/node_modules/moment/locale/fy.js",
3229	"./ga": "../autobahn_client_core/node_modules/moment/locale/ga.js",
3230	"./ga.js": "../autobahn_client_core/node_modules/moment/locale/ga.js",
3231	"./gd": "../autobahn_client_core/node_modules/moment/locale/gd.js",
3232	"./gd.js": "../autobahn_client_core/node_modules/moment/locale/gd.js",
3233	"./gl": "../autobahn_client_core/node_modules/moment/locale/gl.js",
3234	"./gl.js": "../autobahn_client_core/node_modules/moment/locale/gl.js",
3235	"./gom-deva": "../autobahn_client_core/node_modules/moment/locale/gom-deva.js",
3236	"./gom-deva.js": "../autobahn_client_core/node_modules/moment/locale/gom-deva.js",
3237	"./gom-latn": "../autobahn_client_core/node_modules/moment/locale/gom-latn.js",
3238	"./gom-latn.js": "../autobahn_client_core/node_modules/moment/locale/gom-latn.js",
3239	"./gu": "../autobahn_client_core/node_modules/moment/locale/gu.js",
3240	"./gu.js": "../autobahn_client_core/node_modules/moment/locale/gu.js",
3241	"./he": "../autobahn_client_core/node_modules/moment/locale/he.js",
3242	"./he.js": "../autobahn_client_core/node_modules/moment/locale/he.js",
3243	"./hi": "../autobahn_client_core/node_modules/moment/locale/hi.js",
3244	"./hi.js": "../autobahn_client_core/node_modules/moment/locale/hi.js",
3245	"./hr": "../autobahn_client_core/node_modules/moment/locale/hr.js",
3246	"./hr.js": "../autobahn_client_core/node_modules/moment/locale/hr.js",
3247	"./hu": "../autobahn_client_core/node_modules/moment/locale/hu.js",
3248	"./hu.js": "../autobahn_client_core/node_modules/moment/locale/hu.js",
3249	"./hy-am": "../autobahn_client_core/node_modules/moment/locale/hy-am.js",
3250	"./hy-am.js": "../autobahn_client_core/node_modules/moment/locale/hy-am.js",
3251	"./id": "../autobahn_client_core/node_modules/moment/locale/id.js",
3252	"./id.js": "../autobahn_client_core/node_modules/moment/locale/id.js",
3253	"./is": "../autobahn_client_core/node_modules/moment/locale/is.js",
3254	"./is.js": "../autobahn_client_core/node_modules/moment/locale/is.js",
3255	"./it": "../autobahn_client_core/node_modules/moment/locale/it.js",
3256	"./it-ch": "../autobahn_client_core/node_modules/moment/locale/it-ch.js",
3257	"./it-ch.js": "../autobahn_client_core/node_modules/moment/locale/it-ch.js",
3258	"./it.js": "../autobahn_client_core/node_modules/moment/locale/it.js",
3259	"./ja": "../autobahn_client_core/node_modules/moment/locale/ja.js",
3260	"./ja.js": "../autobahn_client_core/node_modules/moment/locale/ja.js",
3261	"./jv": "../autobahn_client_core/node_modules/moment/locale/jv.js",
3262	"./jv.js": "../autobahn_client_core/node_modules/moment/locale/jv.js",
3263	"./ka": "../autobahn_client_core/node_modules/moment/locale/ka.js",
3264	"./ka.js": "../autobahn_client_core/node_modules/moment/locale/ka.js",
3265	"./kk": "../autobahn_client_core/node_modules/moment/locale/kk.js",
3266	"./kk.js": "../autobahn_client_core/node_modules/moment/locale/kk.js",
3267	"./km": "../autobahn_client_core/node_modules/moment/locale/km.js",
3268	"./km.js": "../autobahn_client_core/node_modules/moment/locale/km.js",
3269	"./kn": "../autobahn_client_core/node_modules/moment/locale/kn.js",
3270	"./kn.js": "../autobahn_client_core/node_modules/moment/locale/kn.js",
3271	"./ko": "../autobahn_client_core/node_modules/moment/locale/ko.js",
3272	"./ko.js": "../autobahn_client_core/node_modules/moment/locale/ko.js",
3273	"./ku": "../autobahn_client_core/node_modules/moment/locale/ku.js",
3274	"./ku.js": "../autobahn_client_core/node_modules/moment/locale/ku.js",
3275	"./ky": "../autobahn_client_core/node_modules/moment/locale/ky.js",
3276	"./ky.js": "../autobahn_client_core/node_modules/moment/locale/ky.js",
3277	"./lb": "../autobahn_client_core/node_modules/moment/locale/lb.js",
3278	"./lb.js": "../autobahn_client_core/node_modules/moment/locale/lb.js",
3279	"./lo": "../autobahn_client_core/node_modules/moment/locale/lo.js",
3280	"./lo.js": "../autobahn_client_core/node_modules/moment/locale/lo.js",
3281	"./lt": "../autobahn_client_core/node_modules/moment/locale/lt.js",
3282	"./lt.js": "../autobahn_client_core/node_modules/moment/locale/lt.js",
3283	"./lv": "../autobahn_client_core/node_modules/moment/locale/lv.js",
3284	"./lv.js": "../autobahn_client_core/node_modules/moment/locale/lv.js",
3285	"./me": "../autobahn_client_core/node_modules/moment/locale/me.js",
3286	"./me.js": "../autobahn_client_core/node_modules/moment/locale/me.js",
3287	"./mi": "../autobahn_client_core/node_modules/moment/locale/mi.js",
3288	"./mi.js": "../autobahn_client_core/node_modules/moment/locale/mi.js",
3289	"./mk": "../autobahn_client_core/node_modules/moment/locale/mk.js",
3290	"./mk.js": "../autobahn_client_core/node_modules/moment/locale/mk.js",
3291	"./ml": "../autobahn_client_core/node_modules/moment/locale/ml.js",
3292	"./ml.js": "../autobahn_client_core/node_modules/moment/locale/ml.js",
3293	"./mn": "../autobahn_client_core/node_modules/moment/locale/mn.js",
3294	"./mn.js": "../autobahn_client_core/node_modules/moment/locale/mn.js",
3295	"./mr": "../autobahn_client_core/node_modules/moment/locale/mr.js",
3296	"./mr.js": "../autobahn_client_core/node_modules/moment/locale/mr.js",
3297	"./ms": "../autobahn_client_core/node_modules/moment/locale/ms.js",
3298	"./ms-my": "../autobahn_client_core/node_modules/moment/locale/ms-my.js",
3299	"./ms-my.js": "../autobahn_client_core/node_modules/moment/locale/ms-my.js",
3300	"./ms.js": "../autobahn_client_core/node_modules/moment/locale/ms.js",
3301	"./mt": "../autobahn_client_core/node_modules/moment/locale/mt.js",
3302	"./mt.js": "../autobahn_client_core/node_modules/moment/locale/mt.js",
3303	"./my": "../autobahn_client_core/node_modules/moment/locale/my.js",
3304	"./my.js": "../autobahn_client_core/node_modules/moment/locale/my.js",
3305	"./nb": "../autobahn_client_core/node_modules/moment/locale/nb.js",
3306	"./nb.js": "../autobahn_client_core/node_modules/moment/locale/nb.js",
3307	"./ne": "../autobahn_client_core/node_modules/moment/locale/ne.js",
3308	"./ne.js": "../autobahn_client_core/node_modules/moment/locale/ne.js",
3309	"./nl": "../autobahn_client_core/node_modules/moment/locale/nl.js",
3310	"./nl-be": "../autobahn_client_core/node_modules/moment/locale/nl-be.js",
3311	"./nl-be.js": "../autobahn_client_core/node_modules/moment/locale/nl-be.js",
3312	"./nl.js": "../autobahn_client_core/node_modules/moment/locale/nl.js",
3313	"./nn": "../autobahn_client_core/node_modules/moment/locale/nn.js",
3314	"./nn.js": "../autobahn_client_core/node_modules/moment/locale/nn.js",
3315	"./oc-lnc": "../autobahn_client_core/node_modules/moment/locale/oc-lnc.js",
3316	"./oc-lnc.js": "../autobahn_client_core/node_modules/moment/locale/oc-lnc.js",
3317	"./pa-in": "../autobahn_client_core/node_modules/moment/locale/pa-in.js",
3318	"./pa-in.js": "../autobahn_client_core/node_modules/moment/locale/pa-in.js",
3319	"./pl": "../autobahn_client_core/node_modules/moment/locale/pl.js",
3320	"./pl.js": "../autobahn_client_core/node_modules/moment/locale/pl.js",
3321	"./pt": "../autobahn_client_core/node_modules/moment/locale/pt.js",
3322	"./pt-br": "../autobahn_client_core/node_modules/moment/locale/pt-br.js",
3323	"./pt-br.js": "../autobahn_client_core/node_modules/moment/locale/pt-br.js",
3324	"./pt.js": "../autobahn_client_core/node_modules/moment/locale/pt.js",
3325	"./ro": "../autobahn_client_core/node_modules/moment/locale/ro.js",
3326	"./ro.js": "../autobahn_client_core/node_modules/moment/locale/ro.js",
3327	"./ru": "../autobahn_client_core/node_modules/moment/locale/ru.js",
3328	"./ru.js": "../autobahn_client_core/node_modules/moment/locale/ru.js",
3329	"./sd": "../autobahn_client_core/node_modules/moment/locale/sd.js",
3330	"./sd.js": "../autobahn_client_core/node_modules/moment/locale/sd.js",
3331	"./se": "../autobahn_client_core/node_modules/moment/locale/se.js",
3332	"./se.js": "../autobahn_client_core/node_modules/moment/locale/se.js",
3333	"./si": "../autobahn_client_core/node_modules/moment/locale/si.js",
3334	"./si.js": "../autobahn_client_core/node_modules/moment/locale/si.js",
3335	"./sk": "../autobahn_client_core/node_modules/moment/locale/sk.js",
3336	"./sk.js": "../autobahn_client_core/node_modules/moment/locale/sk.js",
3337	"./sl": "../autobahn_client_core/node_modules/moment/locale/sl.js",
3338	"./sl.js": "../autobahn_client_core/node_modules/moment/locale/sl.js",
3339	"./sq": "../autobahn_client_core/node_modules/moment/locale/sq.js",
3340	"./sq.js": "../autobahn_client_core/node_modules/moment/locale/sq.js",
3341	"./sr": "../autobahn_client_core/node_modules/moment/locale/sr.js",
3342	"./sr-cyrl": "../autobahn_client_core/node_modules/moment/locale/sr-cyrl.js",
3343	"./sr-cyrl.js": "../autobahn_client_core/node_modules/moment/locale/sr-cyrl.js",
3344	"./sr.js": "../autobahn_client_core/node_modules/moment/locale/sr.js",
3345	"./ss": "../autobahn_client_core/node_modules/moment/locale/ss.js",
3346	"./ss.js": "../autobahn_client_core/node_modules/moment/locale/ss.js",
3347	"./sv": "../autobahn_client_core/node_modules/moment/locale/sv.js",
3348	"./sv.js": "../autobahn_client_core/node_modules/moment/locale/sv.js",
3349	"./sw": "../autobahn_client_core/node_modules/moment/locale/sw.js",
3350	"./sw.js": "../autobahn_client_core/node_modules/moment/locale/sw.js",
3351	"./ta": "../autobahn_client_core/node_modules/moment/locale/ta.js",
3352	"./ta.js": "../autobahn_client_core/node_modules/moment/locale/ta.js",
3353	"./te": "../autobahn_client_core/node_modules/moment/locale/te.js",
3354	"./te.js": "../autobahn_client_core/node_modules/moment/locale/te.js",
3355	"./tet": "../autobahn_client_core/node_modules/moment/locale/tet.js",
3356	"./tet.js": "../autobahn_client_core/node_modules/moment/locale/tet.js",
3357	"./tg": "../autobahn_client_core/node_modules/moment/locale/tg.js",
3358	"./tg.js": "../autobahn_client_core/node_modules/moment/locale/tg.js",
3359	"./th": "../autobahn_client_core/node_modules/moment/locale/th.js",
3360	"./th.js": "../autobahn_client_core/node_modules/moment/locale/th.js",
3361	"./tk": "../autobahn_client_core/node_modules/moment/locale/tk.js",
3362	"./tk.js": "../autobahn_client_core/node_modules/moment/locale/tk.js",
3363	"./tl-ph": "../autobahn_client_core/node_modules/moment/locale/tl-ph.js",
3364	"./tl-ph.js": "../autobahn_client_core/node_modules/moment/locale/tl-ph.js",
3365	"./tlh": "../autobahn_client_core/node_modules/moment/locale/tlh.js",
3366	"./tlh.js": "../autobahn_client_core/node_modules/moment/locale/tlh.js",
3367	"./tr": "../autobahn_client_core/node_modules/moment/locale/tr.js",
3368	"./tr.js": "../autobahn_client_core/node_modules/moment/locale/tr.js",
3369	"./tzl": "../autobahn_client_core/node_modules/moment/locale/tzl.js",
3370	"./tzl.js": "../autobahn_client_core/node_modules/moment/locale/tzl.js",
3371	"./tzm": "../autobahn_client_core/node_modules/moment/locale/tzm.js",
3372	"./tzm-latn": "../autobahn_client_core/node_modules/moment/locale/tzm-latn.js",
3373	"./tzm-latn.js": "../autobahn_client_core/node_modules/moment/locale/tzm-latn.js",
3374	"./tzm.js": "../autobahn_client_core/node_modules/moment/locale/tzm.js",
3375	"./ug-cn": "../autobahn_client_core/node_modules/moment/locale/ug-cn.js",
3376	"./ug-cn.js": "../autobahn_client_core/node_modules/moment/locale/ug-cn.js",
3377	"./uk": "../autobahn_client_core/node_modules/moment/locale/uk.js",
3378	"./uk.js": "../autobahn_client_core/node_modules/moment/locale/uk.js",
3379	"./ur": "../autobahn_client_core/node_modules/moment/locale/ur.js",
3380	"./ur.js": "../autobahn_client_core/node_modules/moment/locale/ur.js",
3381	"./uz": "../autobahn_client_core/node_modules/moment/locale/uz.js",
3382	"./uz-latn": "../autobahn_client_core/node_modules/moment/locale/uz-latn.js",
3383	"./uz-latn.js": "../autobahn_client_core/node_modules/moment/locale/uz-latn.js",
3384	"./uz.js": "../autobahn_client_core/node_modules/moment/locale/uz.js",
3385	"./vi": "../autobahn_client_core/node_modules/moment/locale/vi.js",
3386	"./vi.js": "../autobahn_client_core/node_modules/moment/locale/vi.js",
3387	"./x-pseudo": "../autobahn_client_core/node_modules/moment/locale/x-pseudo.js",
3388	"./x-pseudo.js": "../autobahn_client_core/node_modules/moment/locale/x-pseudo.js",
3389	"./yo": "../autobahn_client_core/node_modules/moment/locale/yo.js",
3390	"./yo.js": "../autobahn_client_core/node_modules/moment/locale/yo.js",
3391	"./zh-cn": "../autobahn_client_core/node_modules/moment/locale/zh-cn.js",
3392	"./zh-cn.js": "../autobahn_client_core/node_modules/moment/locale/zh-cn.js",
3393	"./zh-hk": "../autobahn_client_core/node_modules/moment/locale/zh-hk.js",
3394	"./zh-hk.js": "../autobahn_client_core/node_modules/moment/locale/zh-hk.js",
3395	"./zh-mo": "../autobahn_client_core/node_modules/moment/locale/zh-mo.js",
3396	"./zh-mo.js": "../autobahn_client_core/node_modules/moment/locale/zh-mo.js",
3397	"./zh-tw": "../autobahn_client_core/node_modules/moment/locale/zh-tw.js",
3398	"./zh-tw.js": "../autobahn_client_core/node_modules/moment/locale/zh-tw.js"
3399};
3400
3401
3402function webpackContext(req) {
3403	var id = webpackContextResolve(req);
3404	return __webpack_require__(id);
3405}
3406function webpackContextResolve(req) {
3407	if(!__webpack_require__.o(map, req)) {
3408		var e = new Error("Cannot find module '" + req + "'");
3409		e.code = 'MODULE_NOT_FOUND';
3410		throw e;
3411	}
3412	return map[req];
3413}
3414webpackContext.keys = function webpackContextKeys() {
3415	return Object.keys(map);
3416};
3417webpackContext.resolve = webpackContextResolve;
3418module.exports = webpackContext;
3419webpackContext.id = "../autobahn_client_core/node_modules/moment/locale sync recursive ^\\.\\/.*$";
3420
3421/***/ }),
3422
vendor: 3,707 bytes, lines 3423-3509
3423/***/ "../autobahn_client_core/node_modules/moment/locale/af.js":
3424/*!****************************************************************!*\
3425  !*** ../autobahn_client_core/node_modules/moment/locale/af.js ***!
3426  \****************************************************************/
3427/*! no static exports found */
3428/***/ (function(module, exports, __webpack_require__) {
3429
3430var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3431
3432//! moment.js locale configuration
3433//! locale : Afrikaans [af]
3434//! author : Werner Mollentze : https://github.com/wernerm
3435;
3436
3437(function (global, factory) {
3438  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3439				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3440				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3441				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
3442})(this, function (moment) {
3443  'use strict'; //! moment.js locale configuration
3444
3445  var af = moment.defineLocale('af', {
3446    months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
3447    monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
3448    weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
3449    weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
3450    weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
3451    meridiemParse: /vm|nm/i,
3452    isPM: function isPM(input) {
3453      return /^nm$/i.test(input);
3454    },
3455    meridiem: function meridiem(hours, minutes, isLower) {
3456      if (hours < 12) {
3457        return isLower ? 'vm' : 'VM';
3458      } else {
3459        return isLower ? 'nm' : 'NM';
3460      }
3461    },
3462    longDateFormat: {
3463      LT: 'HH:mm',
3464      LTS: 'HH:mm:ss',
3465      L: 'DD/MM/YYYY',
3466      LL: 'D MMMM YYYY',
3467      LLL: 'D MMMM YYYY HH:mm',
3468      LLLL: 'dddd, D MMMM YYYY HH:mm'
3469    },
3470    calendar: {
3471      sameDay: '[Vandag om] LT',
3472      nextDay: '[Môre om] LT',
3473      nextWeek: 'dddd [om] LT',
3474      lastDay: '[Gister om] LT',
3475      lastWeek: '[Laas] dddd [om] LT',
3476      sameElse: 'L'
3477    },
3478    relativeTime: {
3479      future: 'oor %s',
3480      past: '%s gelede',
3481      s: "'n paar sekondes",
3482      ss: '%d sekondes',
3483      m: "'n minuut",
3484      mm: '%d minute',
3485      h: "'n uur",
3486      hh: '%d ure',
3487      d: "'n dag",
3488      dd: '%d dae',
3489      M: "'n maand",
3490      MM: '%d maande',
3491      y: "'n jaar",
3492      yy: '%d jaar'
3493    },
3494    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
3495    ordinal: function ordinal(number) {
3496      return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
3497    },
3498    week: {
3499      dow: 1,
3500      // Maandag is die eerste dag van die week.
3501      doy: 4 // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
3502
3503    }
3504  });
3505  return af;
3506});
3507
3508/***/ }),
3509
vendor: 5,317 bytes, lines 3510-3625
3510/***/ "../autobahn_client_core/node_modules/moment/locale/ar-dz.js":
3511/*!*******************************************************************!*\
3512  !*** ../autobahn_client_core/node_modules/moment/locale/ar-dz.js ***!
3513  \*******************************************************************/
3514/*! no static exports found */
3515/***/ (function(module, exports, __webpack_require__) {
3516
3517var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3518
3519//! moment.js locale configuration
3520//! locale : Arabic (Algeria) [ar-dz]
3521//! author : Amine Roukh: https://github.com/Amine27
3522//! author : Abdel Said: https://github.com/abdelsaid
3523//! author : Ahmed Elkhatib
3524//! author : forabi https://github.com/forabi
3525//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem
3526;
3527
3528(function (global, factory) {
3529  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3530				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3531				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3532				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
3533})(this, function (moment) {
3534  'use strict'; //! moment.js locale configuration
3535
3536  var pluralForm = function pluralForm(n) {
3537    return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
3538  },
3539      plurals = {
3540    s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
3541    m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
3542    h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
3543    d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
3544    M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
3545    y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
3546  },
3547      pluralize = function pluralize(u) {
3548    return function (number, withoutSuffix, string, isFuture) {
3549      var f = pluralForm(number),
3550          str = plurals[u][pluralForm(number)];
3551
3552      if (f === 2) {
3553        str = str[withoutSuffix ? 0 : 1];
3554      }
3555
3556      return str.replace(/%d/i, number);
3557    };
3558  },
3559      months = ['جانفي', 'فيفري', 'مارس', 'أفريل', 'ماي', 'جوان', 'جويلية', 'أوت', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];
3560
3561  var arDz = moment.defineLocale('ar-dz', {
3562    months: months,
3563    monthsShort: months,
3564    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
3565    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
3566    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3567    weekdaysParseExact: true,
3568    longDateFormat: {
3569      LT: 'HH:mm',
3570      LTS: 'HH:mm:ss',
3571      L: "D/\u200FM/\u200FYYYY",
3572      LL: 'D MMMM YYYY',
3573      LLL: 'D MMMM YYYY HH:mm',
3574      LLLL: 'dddd D MMMM YYYY HH:mm'
3575    },
3576    meridiemParse: /ص|م/,
3577    isPM: function isPM(input) {
3578      return 'م' === input;
3579    },
3580    meridiem: function meridiem(hour, minute, isLower) {
3581      if (hour < 12) {
3582        return 'ص';
3583      } else {
3584        return 'م';
3585      }
3586    },
3587    calendar: {
3588      sameDay: '[اليوم عند الساعة] LT',
3589      nextDay: '[غدًا عند الساعة] LT',
3590      nextWeek: 'dddd [عند الساعة] LT',
3591      lastDay: '[أمس عند الساعة] LT',
3592      lastWeek: 'dddd [عند الساعة] LT',
3593      sameElse: 'L'
3594    },
3595    relativeTime: {
3596      future: 'بعد %s',
3597      past: 'منذ %s',
3598      s: pluralize('s'),
3599      ss: pluralize('s'),
3600      m: pluralize('m'),
3601      mm: pluralize('m'),
3602      h: pluralize('h'),
3603      hh: pluralize('h'),
3604      d: pluralize('d'),
3605      dd: pluralize('d'),
3606      M: pluralize('M'),
3607      MM: pluralize('M'),
3608      y: pluralize('y'),
3609      yy: pluralize('y')
3610    },
3611    postformat: function postformat(string) {
3612      return string.replace(/,/g, '،');
3613    },
3614    week: {
3615      dow: 0,
3616      // Sunday is the first day of the week.
3617      doy: 4 // The week that contains Jan 4th is the first week of the year.
3618
3619    }
3620  });
3621  return arDz;
3622});
3623
3624/***/ }),
3625
vendor: 3,527 bytes, lines 3626-3698
3626/***/ "../autobahn_client_core/node_modules/moment/locale/ar-kw.js":
3627/*!*******************************************************************!*\
3628  !*** ../autobahn_client_core/node_modules/moment/locale/ar-kw.js ***!
3629  \*******************************************************************/
3630/*! no static exports found */
3631/***/ (function(module, exports, __webpack_require__) {
3632
3633var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3634
3635//! moment.js locale configuration
3636//! locale : Arabic (Kuwait) [ar-kw]
3637//! author : Nusret Parlak: https://github.com/nusretparlak
3638;
3639
3640(function (global, factory) {
3641  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3642				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3643				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3644				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
3645})(this, function (moment) {
3646  'use strict'; //! moment.js locale configuration
3647
3648  var arKw = moment.defineLocale('ar-kw', {
3649    months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
3650    monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
3651    weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
3652    weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
3653    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3654    weekdaysParseExact: true,
3655    longDateFormat: {
3656      LT: 'HH:mm',
3657      LTS: 'HH:mm:ss',
3658      L: 'DD/MM/YYYY',
3659      LL: 'D MMMM YYYY',
3660      LLL: 'D MMMM YYYY HH:mm',
3661      LLLL: 'dddd D MMMM YYYY HH:mm'
3662    },
3663    calendar: {
3664      sameDay: '[اليوم على الساعة] LT',
3665      nextDay: '[غدا على الساعة] LT',
3666      nextWeek: 'dddd [على الساعة] LT',
3667      lastDay: '[أمس على الساعة] LT',
3668      lastWeek: 'dddd [على الساعة] LT',
3669      sameElse: 'L'
3670    },
3671    relativeTime: {
3672      future: 'في %s',
3673      past: 'منذ %s',
3674      s: 'ثوان',
3675      ss: '%d ثانية',
3676      m: 'دقيقة',
3677      mm: '%d دقائق',
3678      h: 'ساعة',
3679      hh: '%d ساعات',
3680      d: 'يوم',
3681      dd: '%d أيام',
3682      M: 'شهر',
3683      MM: '%d أشهر',
3684      y: 'سنة',
3685      yy: '%d سنوات'
3686    },
3687    week: {
3688      dow: 0,
3689      // Sunday is the first day of the week.
3690      doy: 12 // The week that contains Jan 12th is the first week of the year.
3691
3692    }
3693  });
3694  return arKw;
3695});
3696
3697/***/ }),
3698
vendor: 5,441 bytes, lines 3699-3827
3699/***/ "../autobahn_client_core/node_modules/moment/locale/ar-ly.js":
3700/*!*******************************************************************!*\
3701  !*** ../autobahn_client_core/node_modules/moment/locale/ar-ly.js ***!
3702  \*******************************************************************/
3703/*! no static exports found */
3704/***/ (function(module, exports, __webpack_require__) {
3705
3706var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3707
3708//! moment.js locale configuration
3709//! locale : Arabic (Libya) [ar-ly]
3710//! author : Ali Hmer: https://github.com/kikoanis
3711;
3712
3713(function (global, factory) {
3714  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3715				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3716				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3717				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
3718})(this, function (moment) {
3719  'use strict'; //! moment.js locale configuration
3720
3721  var symbolMap = {
3722    1: '1',
3723    2: '2',
3724    3: '3',
3725    4: '4',
3726    5: '5',
3727    6: '6',
3728    7: '7',
3729    8: '8',
3730    9: '9',
3731    0: '0'
3732  },
3733      pluralForm = function pluralForm(n) {
3734    return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
3735  },
3736      plurals = {
3737    s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
3738    m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
3739    h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
3740    d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
3741    M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
3742    y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
3743  },
3744      pluralize = function pluralize(u) {
3745    return function (number, withoutSuffix, string, isFuture) {
3746      var f = pluralForm(number),
3747          str = plurals[u][pluralForm(number)];
3748
3749      if (f === 2) {
3750        str = str[withoutSuffix ? 0 : 1];
3751      }
3752
3753      return str.replace(/%d/i, number);
3754    };
3755  },
3756      months = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];
3757
3758  var arLy = moment.defineLocale('ar-ly', {
3759    months: months,
3760    monthsShort: months,
3761    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
3762    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
3763    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3764    weekdaysParseExact: true,
3765    longDateFormat: {
3766      LT: 'HH:mm',
3767      LTS: 'HH:mm:ss',
3768      L: "D/\u200FM/\u200FYYYY",
3769      LL: 'D MMMM YYYY',
3770      LLL: 'D MMMM YYYY HH:mm',
3771      LLLL: 'dddd D MMMM YYYY HH:mm'
3772    },
3773    meridiemParse: /ص|م/,
3774    isPM: function isPM(input) {
3775      return 'م' === input;
3776    },
3777    meridiem: function meridiem(hour, minute, isLower) {
3778      if (hour < 12) {
3779        return 'ص';
3780      } else {
3781        return 'م';
3782      }
3783    },
3784    calendar: {
3785      sameDay: '[اليوم عند الساعة] LT',
3786      nextDay: '[غدًا عند الساعة] LT',
3787      nextWeek: 'dddd [عند الساعة] LT',
3788      lastDay: '[أمس عند الساعة] LT',
3789      lastWeek: 'dddd [عند الساعة] LT',
3790      sameElse: 'L'
3791    },
3792    relativeTime: {
3793      future: 'بعد %s',
3794      past: 'منذ %s',
3795      s: pluralize('s'),
3796      ss: pluralize('s'),
3797      m: pluralize('m'),
3798      mm: pluralize('m'),
3799      h: pluralize('h'),
3800      hh: pluralize('h'),
3801      d: pluralize('d'),
3802      dd: pluralize('d'),
3803      M: pluralize('M'),
3804      MM: pluralize('M'),
3805      y: pluralize('y'),
3806      yy: pluralize('y')
3807    },
3808    preparse: function preparse(string) {
3809      return string.replace(/،/g, ',');
3810    },
3811    postformat: function postformat(string) {
3812      return string.replace(/\d/g, function (match) {
3813        return symbolMap[match];
3814      }).replace(/,/g, '،');
3815    },
3816    week: {
3817      dow: 6,
3818      // Saturday is the first day of the week.
3819      doy: 12 // The week that contains Jan 12th is the first week of the year.
3820
3821    }
3822  });
3823  return arLy;
3824});
3825
3826/***/ }),
3827
vendor: 3,582 bytes, lines 3828-3901
3828/***/ "../autobahn_client_core/node_modules/moment/locale/ar-ma.js":
3829/*!*******************************************************************!*\
3830  !*** ../autobahn_client_core/node_modules/moment/locale/ar-ma.js ***!
3831  \*******************************************************************/
3832/*! no static exports found */
3833/***/ (function(module, exports, __webpack_require__) {
3834
3835var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3836
3837//! moment.js locale configuration
3838//! locale : Arabic (Morocco) [ar-ma]
3839//! author : ElFadili Yassine : https://github.com/ElFadiliY
3840//! author : Abdel Said : https://github.com/abdelsaid
3841;
3842
3843(function (global, factory) {
3844  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3845				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3846				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3847				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
3848})(this, function (moment) {
3849  'use strict'; //! moment.js locale configuration
3850
3851  var arMa = moment.defineLocale('ar-ma', {
3852    months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
3853    monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
3854    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
3855    weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
3856    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3857    weekdaysParseExact: true,
3858    longDateFormat: {
3859      LT: 'HH:mm',
3860      LTS: 'HH:mm:ss',
3861      L: 'DD/MM/YYYY',
3862      LL: 'D MMMM YYYY',
3863      LLL: 'D MMMM YYYY HH:mm',
3864      LLLL: 'dddd D MMMM YYYY HH:mm'
3865    },
3866    calendar: {
3867      sameDay: '[اليوم على الساعة] LT',
3868      nextDay: '[غدا على الساعة] LT',
3869      nextWeek: 'dddd [على الساعة] LT',
3870      lastDay: '[أمس على الساعة] LT',
3871      lastWeek: 'dddd [على الساعة] LT',
3872      sameElse: 'L'
3873    },
3874    relativeTime: {
3875      future: 'في %s',
3876      past: 'منذ %s',
3877      s: 'ثوان',
3878      ss: '%d ثانية',
3879      m: 'دقيقة',
3880      mm: '%d دقائق',
3881      h: 'ساعة',
3882      hh: '%d ساعات',
3883      d: 'يوم',
3884      dd: '%d أيام',
3885      M: 'شهر',
3886      MM: '%d أشهر',
3887      y: 'سنة',
3888      yy: '%d سنوات'
3889    },
3890    week: {
3891      dow: 1,
3892      // Monday is the first day of the week.
3893      doy: 4 // The week that contains Jan 4th is the first week of the year.
3894
3895    }
3896  });
3897  return arMa;
3898});
3899
3900/***/ }),
3901
vendor: 4,482 bytes, lines 3902-4019
3902/***/ "../autobahn_client_core/node_modules/moment/locale/ar-sa.js":
3903/*!*******************************************************************!*\
3904  !*** ../autobahn_client_core/node_modules/moment/locale/ar-sa.js ***!
3905  \*******************************************************************/
3906/*! no static exports found */
3907/***/ (function(module, exports, __webpack_require__) {
3908
3909var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
3910
3911//! moment.js locale configuration
3912//! locale : Arabic (Saudi Arabia) [ar-sa]
3913//! author : Suhail Alkowaileet : https://github.com/xsoh
3914;
3915
3916(function (global, factory) {
3917  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3918				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3919				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3920				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
3921})(this, function (moment) {
3922  'use strict'; //! moment.js locale configuration
3923
3924  var symbolMap = {
3925    1: 'Ù¡',
3926    2: 'Ù¢',
3927    3: 'Ù£',
3928    4: 'Ù¤',
3929    5: 'Ù¥',
3930    6: 'Ù¦',
3931    7: 'Ù§',
3932    8: 'Ù¨',
3933    9: 'Ù©',
3934    0: 'Ù '
3935  },
3936      numberMap = {
3937    'Ù¡': '1',
3938    'Ù¢': '2',
3939    'Ù£': '3',
3940    'Ù¤': '4',
3941    'Ù¥': '5',
3942    'Ù¦': '6',
3943    'Ù§': '7',
3944    'Ù¨': '8',
3945    'Ù©': '9',
3946    'Ù ': '0'
3947  };
3948  var arSa = moment.defineLocale('ar-sa', {
3949    months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
3950    monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
3951    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
3952    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
3953    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
3954    weekdaysParseExact: true,
3955    longDateFormat: {
3956      LT: 'HH:mm',
3957      LTS: 'HH:mm:ss',
3958      L: 'DD/MM/YYYY',
3959      LL: 'D MMMM YYYY',
3960      LLL: 'D MMMM YYYY HH:mm',
3961      LLLL: 'dddd D MMMM YYYY HH:mm'
3962    },
3963    meridiemParse: /ص|م/,
3964    isPM: function isPM(input) {
3965      return 'م' === input;
3966    },
3967    meridiem: function meridiem(hour, minute, isLower) {
3968      if (hour < 12) {
3969        return 'ص';
3970      } else {
3971        return 'م';
3972      }
3973    },
3974    calendar: {
3975      sameDay: '[اليوم على الساعة] LT',
3976      nextDay: '[غدا على الساعة] LT',
3977      nextWeek: 'dddd [على الساعة] LT',
3978      lastDay: '[أمس على الساعة] LT',
3979      lastWeek: 'dddd [على الساعة] LT',
3980      sameElse: 'L'
3981    },
3982    relativeTime: {
3983      future: 'في %s',
3984      past: 'منذ %s',
3985      s: 'ثوان',
3986      ss: '%d ثانية',
3987      m: 'دقيقة',
3988      mm: '%d دقائق',
3989      h: 'ساعة',
3990      hh: '%d ساعات',
3991      d: 'يوم',
3992      dd: '%d أيام',
3993      M: 'شهر',
3994      MM: '%d أشهر',
3995      y: 'سنة',
3996      yy: '%d سنوات'
3997    },
3998    preparse: function preparse(string) {
3999      return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4000        return numberMap[match];
4001      }).replace(/،/g, ',');
4002    },
4003    postformat: function postformat(string) {
4004      return string.replace(/\d/g, function (match) {
4005        return symbolMap[match];
4006      }).replace(/,/g, '،');
4007    },
4008    week: {
4009      dow: 0,
4010      // Sunday is the first day of the week.
4011      doy: 6 // The week that contains Jan 6th is the first week of the year.
4012
4013    }
4014  });
4015  return arSa;
4016});
4017
4018/***/ }),
4019
vendor: 3,529 bytes, lines 4020-4092
4020/***/ "../autobahn_client_core/node_modules/moment/locale/ar-tn.js":
4021/*!*******************************************************************!*\
4022  !*** ../autobahn_client_core/node_modules/moment/locale/ar-tn.js ***!
4023  \*******************************************************************/
4024/*! no static exports found */
4025/***/ (function(module, exports, __webpack_require__) {
4026
4027var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4028
4029//! moment.js locale configuration
4030//! locale  :  Arabic (Tunisia) [ar-tn]
4031//! author : Nader Toukabri : https://github.com/naderio
4032;
4033
4034(function (global, factory) {
4035  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4036				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4037				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4038				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4039})(this, function (moment) {
4040  'use strict'; //! moment.js locale configuration
4041
4042  var arTn = moment.defineLocale('ar-tn', {
4043    months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4044    monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4045    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4046    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4047    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4048    weekdaysParseExact: true,
4049    longDateFormat: {
4050      LT: 'HH:mm',
4051      LTS: 'HH:mm:ss',
4052      L: 'DD/MM/YYYY',
4053      LL: 'D MMMM YYYY',
4054      LLL: 'D MMMM YYYY HH:mm',
4055      LLLL: 'dddd D MMMM YYYY HH:mm'
4056    },
4057    calendar: {
4058      sameDay: '[اليوم على الساعة] LT',
4059      nextDay: '[غدا على الساعة] LT',
4060      nextWeek: 'dddd [على الساعة] LT',
4061      lastDay: '[أمس على الساعة] LT',
4062      lastWeek: 'dddd [على الساعة] LT',
4063      sameElse: 'L'
4064    },
4065    relativeTime: {
4066      future: 'في %s',
4067      past: 'منذ %s',
4068      s: 'ثوان',
4069      ss: '%d ثانية',
4070      m: 'دقيقة',
4071      mm: '%d دقائق',
4072      h: 'ساعة',
4073      hh: '%d ساعات',
4074      d: 'يوم',
4075      dd: '%d أيام',
4076      M: 'شهر',
4077      MM: '%d أشهر',
4078      y: 'سنة',
4079      yy: '%d سنوات'
4080    },
4081    week: {
4082      dow: 1,
4083      // Monday is the first day of the week.
4084      doy: 4 // The week that contains Jan 4th is the first week of the year.
4085
4086    }
4087  });
4088  return arTn;
4089});
4090
4091/***/ }),
4092
vendor: 5,768 bytes, lines 4093-4237
4093/***/ "../autobahn_client_core/node_modules/moment/locale/ar.js":
4094/*!****************************************************************!*\
4095  !*** ../autobahn_client_core/node_modules/moment/locale/ar.js ***!
4096  \****************************************************************/
4097/*! no static exports found */
4098/***/ (function(module, exports, __webpack_require__) {
4099
4100var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4101
4102//! moment.js locale configuration
4103//! locale : Arabic [ar]
4104//! author : Abdel Said: https://github.com/abdelsaid
4105//! author : Ahmed Elkhatib
4106//! author : forabi https://github.com/forabi
4107;
4108
4109(function (global, factory) {
4110  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4111				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4112				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4113				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4114})(this, function (moment) {
4115  'use strict'; //! moment.js locale configuration
4116
4117  var symbolMap = {
4118    1: 'Ù¡',
4119    2: 'Ù¢',
4120    3: 'Ù£',
4121    4: 'Ù¤',
4122    5: 'Ù¥',
4123    6: 'Ù¦',
4124    7: 'Ù§',
4125    8: 'Ù¨',
4126    9: 'Ù©',
4127    0: 'Ù '
4128  },
4129      numberMap = {
4130    'Ù¡': '1',
4131    'Ù¢': '2',
4132    'Ù£': '3',
4133    'Ù¤': '4',
4134    'Ù¥': '5',
4135    'Ù¦': '6',
4136    'Ù§': '7',
4137    'Ù¨': '8',
4138    'Ù©': '9',
4139    'Ù ': '0'
4140  },
4141      pluralForm = function pluralForm(n) {
4142    return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4143  },
4144      plurals = {
4145    s: ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4146    m: ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4147    h: ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4148    d: ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4149    M: ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4150    y: ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4151  },
4152      pluralize = function pluralize(u) {
4153    return function (number, withoutSuffix, string, isFuture) {
4154      var f = pluralForm(number),
4155          str = plurals[u][pluralForm(number)];
4156
4157      if (f === 2) {
4158        str = str[withoutSuffix ? 0 : 1];
4159      }
4160
4161      return str.replace(/%d/i, number);
4162    };
4163  },
4164      months = ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'];
4165
4166  var ar = moment.defineLocale('ar', {
4167    months: months,
4168    monthsShort: months,
4169    weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4170    weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4171    weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4172    weekdaysParseExact: true,
4173    longDateFormat: {
4174      LT: 'HH:mm',
4175      LTS: 'HH:mm:ss',
4176      L: "D/\u200FM/\u200FYYYY",
4177      LL: 'D MMMM YYYY',
4178      LLL: 'D MMMM YYYY HH:mm',
4179      LLLL: 'dddd D MMMM YYYY HH:mm'
4180    },
4181    meridiemParse: /ص|م/,
4182    isPM: function isPM(input) {
4183      return 'م' === input;
4184    },
4185    meridiem: function meridiem(hour, minute, isLower) {
4186      if (hour < 12) {
4187        return 'ص';
4188      } else {
4189        return 'م';
4190      }
4191    },
4192    calendar: {
4193      sameDay: '[اليوم عند الساعة] LT',
4194      nextDay: '[غدًا عند الساعة] LT',
4195      nextWeek: 'dddd [عند الساعة] LT',
4196      lastDay: '[أمس عند الساعة] LT',
4197      lastWeek: 'dddd [عند الساعة] LT',
4198      sameElse: 'L'
4199    },
4200    relativeTime: {
4201      future: 'بعد %s',
4202      past: 'منذ %s',
4203      s: pluralize('s'),
4204      ss: pluralize('s'),
4205      m: pluralize('m'),
4206      mm: pluralize('m'),
4207      h: pluralize('h'),
4208      hh: pluralize('h'),
4209      d: pluralize('d'),
4210      dd: pluralize('d'),
4211      M: pluralize('M'),
4212      MM: pluralize('M'),
4213      y: pluralize('y'),
4214      yy: pluralize('y')
4215    },
4216    preparse: function preparse(string) {
4217      return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4218        return numberMap[match];
4219      }).replace(/،/g, ',');
4220    },
4221    postformat: function postformat(string) {
4222      return string.replace(/\d/g, function (match) {
4223        return symbolMap[match];
4224      }).replace(/,/g, '،');
4225    },
4226    week: {
4227      dow: 6,
4228      // Saturday is the first day of the week.
4229      doy: 12 // The week that contains Jan 12th is the first week of the year.
4230
4231    }
4232  });
4233  return ar;
4234});
4235
4236/***/ }),
4237
vendor: 4,395 bytes, lines 4238-4357
4238/***/ "../autobahn_client_core/node_modules/moment/locale/az.js":
4239/*!****************************************************************!*\
4240  !*** ../autobahn_client_core/node_modules/moment/locale/az.js ***!
4241  \****************************************************************/
4242/*! no static exports found */
4243/***/ (function(module, exports, __webpack_require__) {
4244
4245var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4246
4247//! moment.js locale configuration
4248//! locale : Azerbaijani [az]
4249//! author : topchiyev : https://github.com/topchiyev
4250;
4251
4252(function (global, factory) {
4253  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4254				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4255				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4256				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4257})(this, function (moment) {
4258  'use strict'; //! moment.js locale configuration
4259
4260  var suffixes = {
4261    1: '-inci',
4262    5: '-inci',
4263    8: '-inci',
4264    70: '-inci',
4265    80: '-inci',
4266    2: '-nci',
4267    7: '-nci',
4268    20: '-nci',
4269    50: '-nci',
4270    3: '-üncü',
4271    4: '-üncü',
4272    100: '-üncü',
4273    6: '-ncı',
4274    9: '-uncu',
4275    10: '-uncu',
4276    30: '-uncu',
4277    60: '-ıncı',
4278    90: '-ıncı'
4279  };
4280  var az = moment.defineLocale('az', {
4281    months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
4282    monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
4283    weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
4284    weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
4285    weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
4286    weekdaysParseExact: true,
4287    longDateFormat: {
4288      LT: 'HH:mm',
4289      LTS: 'HH:mm:ss',
4290      L: 'DD.MM.YYYY',
4291      LL: 'D MMMM YYYY',
4292      LLL: 'D MMMM YYYY HH:mm',
4293      LLLL: 'dddd, D MMMM YYYY HH:mm'
4294    },
4295    calendar: {
4296      sameDay: '[bugün saat] LT',
4297      nextDay: '[sabah saat] LT',
4298      nextWeek: '[gələn həftə] dddd [saat] LT',
4299      lastDay: '[dünən] LT',
4300      lastWeek: '[keçən həftə] dddd [saat] LT',
4301      sameElse: 'L'
4302    },
4303    relativeTime: {
4304      future: '%s sonra',
4305      past: '%s əvvəl',
4306      s: 'bir neçə saniyə',
4307      ss: '%d saniyə',
4308      m: 'bir dəqiqə',
4309      mm: '%d dəqiqə',
4310      h: 'bir saat',
4311      hh: '%d saat',
4312      d: 'bir gün',
4313      dd: '%d gün',
4314      M: 'bir ay',
4315      MM: '%d ay',
4316      y: 'bir il',
4317      yy: '%d il'
4318    },
4319    meridiemParse: /gecə|səhər|gündüz|axşam/,
4320    isPM: function isPM(input) {
4321      return /^(gündüz|axşam)$/.test(input);
4322    },
4323    meridiem: function meridiem(hour, minute, isLower) {
4324      if (hour < 4) {
4325        return 'gecə';
4326      } else if (hour < 12) {
4327        return 'səhər';
4328      } else if (hour < 17) {
4329        return 'gündüz';
4330      } else {
4331        return 'axşam';
4332      }
4333    },
4334    dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
4335    ordinal: function ordinal(number) {
4336      if (number === 0) {
4337        // special case for zero
4338        return number + '-ıncı';
4339      }
4340
4341      var a = number % 10,
4342          b = number % 100 - a,
4343          c = number >= 100 ? 100 : null;
4344      return number + (suffixes[a] || suffixes[b] || suffixes[c]);
4345    },
4346    week: {
4347      dow: 1,
4348      // Monday is the first day of the week.
4349      doy: 7 // The week that contains Jan 7th is the first week of the year.
4350
4351    }
4352  });
4353  return az;
4354});
4355
4356/***/ }),
4357
vendor: 6,394 bytes, lines 4358-4508
4358/***/ "../autobahn_client_core/node_modules/moment/locale/be.js":
4359/*!****************************************************************!*\
4360  !*** ../autobahn_client_core/node_modules/moment/locale/be.js ***!
4361  \****************************************************************/
4362/*! no static exports found */
4363/***/ (function(module, exports, __webpack_require__) {
4364
4365var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4366
4367//! moment.js locale configuration
4368//! locale : Belarusian [be]
4369//! author : Dmitry Demidov : https://github.com/demidov91
4370//! author: Praleska: http://praleska.pro/
4371//! Author : Menelion Elensúle : https://github.com/Oire
4372;
4373
4374(function (global, factory) {
4375  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4376				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4377				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4378				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4379})(this, function (moment) {
4380  'use strict'; //! moment.js locale configuration
4381
4382  function plural(word, num) {
4383    var forms = word.split('_');
4384    return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];
4385  }
4386
4387  function relativeTimeWithPlural(number, withoutSuffix, key) {
4388    var format = {
4389      ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
4390      mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
4391      hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
4392      dd: 'дзень_дні_дзён',
4393      MM: 'месяц_месяцы_месяцаў',
4394      yy: 'год_гады_гадоў'
4395    };
4396
4397    if (key === 'm') {
4398      return withoutSuffix ? 'хвіліна' : 'хвіліну';
4399    } else if (key === 'h') {
4400      return withoutSuffix ? 'гадзіна' : 'гадзіну';
4401    } else {
4402      return number + ' ' + plural(format[key], +number);
4403    }
4404  }
4405
4406  var be = moment.defineLocale('be', {
4407    months: {
4408      format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
4409      standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
4410    },
4411    monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
4412    weekdays: {
4413      format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
4414      standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
4415      isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/
4416    },
4417    weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
4418    weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
4419    longDateFormat: {
4420      LT: 'HH:mm',
4421      LTS: 'HH:mm:ss',
4422      L: 'DD.MM.YYYY',
4423      LL: 'D MMMM YYYY г.',
4424      LLL: 'D MMMM YYYY г., HH:mm',
4425      LLLL: 'dddd, D MMMM YYYY г., HH:mm'
4426    },
4427    calendar: {
4428      sameDay: '[Сёння ў] LT',
4429      nextDay: '[Заўтра ў] LT',
4430      lastDay: '[Учора ў] LT',
4431      nextWeek: function nextWeek() {
4432        return '[У] dddd [ў] LT';
4433      },
4434      lastWeek: function lastWeek() {
4435        switch (this.day()) {
4436          case 0:
4437          case 3:
4438          case 5:
4439          case 6:
4440            return '[У мінулую] dddd [ў] LT';
4441
4442          case 1:
4443          case 2:
4444          case 4:
4445            return '[У мінулы] dddd [ў] LT';
4446        }
4447      },
4448      sameElse: 'L'
4449    },
4450    relativeTime: {
4451      future: 'праз %s',
4452      past: '%s таму',
4453      s: 'некалькі секунд',
4454      m: relativeTimeWithPlural,
4455      mm: relativeTimeWithPlural,
4456      h: relativeTimeWithPlural,
4457      hh: relativeTimeWithPlural,
4458      d: 'дзень',
4459      dd: relativeTimeWithPlural,
4460      M: 'месяц',
4461      MM: relativeTimeWithPlural,
4462      y: 'год',
4463      yy: relativeTimeWithPlural
4464    },
4465    meridiemParse: /ночы|раніцы|дня|вечара/,
4466    isPM: function isPM(input) {
4467      return /^(дня|вечара)$/.test(input);
4468    },
4469    meridiem: function meridiem(hour, minute, isLower) {
4470      if (hour < 4) {
4471        return 'ночы';
4472      } else if (hour < 12) {
4473        return 'раніцы';
4474      } else if (hour < 17) {
4475        return 'дня';
4476      } else {
4477        return 'вечара';
4478      }
4479    },
4480    dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
4481    ordinal: function ordinal(number, period) {
4482      switch (period) {
4483        case 'M':
4484        case 'd':
4485        case 'DDD':
4486        case 'w':
4487        case 'W':
4488          return (number % 10 === 2 || number % 10 === 3) && number % 100 !== 12 && number % 100 !== 13 ? number + '-і' : number + '-ы';
4489
4490        case 'D':
4491          return number + '-га';
4492
4493        default:
4494          return number;
4495      }
4496    },
4497    week: {
4498      dow: 1,
4499      // Monday is the first day of the week.
4500      doy: 7 // The week that contains Jan 7th is the first week of the year.
4501
4502    }
4503  });
4504  return be;
4505});
4506
4507/***/ }),
4508
vendor: 4,445 bytes, lines 4509-4616
4509/***/ "../autobahn_client_core/node_modules/moment/locale/bg.js":
4510/*!****************************************************************!*\
4511  !*** ../autobahn_client_core/node_modules/moment/locale/bg.js ***!
4512  \****************************************************************/
4513/*! no static exports found */
4514/***/ (function(module, exports, __webpack_require__) {
4515
4516var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4517
4518//! moment.js locale configuration
4519//! locale : Bulgarian [bg]
4520//! author : Krasen Borisov : https://github.com/kraz
4521;
4522
4523(function (global, factory) {
4524  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4525				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4526				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4527				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4528})(this, function (moment) {
4529  'use strict'; //! moment.js locale configuration
4530
4531  var bg = moment.defineLocale('bg', {
4532    months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
4533    monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
4534    weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
4535    weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
4536    weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
4537    longDateFormat: {
4538      LT: 'H:mm',
4539      LTS: 'H:mm:ss',
4540      L: 'D.MM.YYYY',
4541      LL: 'D MMMM YYYY',
4542      LLL: 'D MMMM YYYY H:mm',
4543      LLLL: 'dddd, D MMMM YYYY H:mm'
4544    },
4545    calendar: {
4546      sameDay: '[Днес в] LT',
4547      nextDay: '[Утре в] LT',
4548      nextWeek: 'dddd [в] LT',
4549      lastDay: '[Вчера в] LT',
4550      lastWeek: function lastWeek() {
4551        switch (this.day()) {
4552          case 0:
4553          case 3:
4554          case 6:
4555            return '[Миналата] dddd [в] LT';
4556
4557          case 1:
4558          case 2:
4559          case 4:
4560          case 5:
4561            return '[Миналия] dddd [в] LT';
4562        }
4563      },
4564      sameElse: 'L'
4565    },
4566    relativeTime: {
4567      future: 'след %s',
4568      past: 'преди %s',
4569      s: 'няколко секунди',
4570      ss: '%d секунди',
4571      m: 'минута',
4572      mm: '%d минути',
4573      h: 'час',
4574      hh: '%d часа',
4575      d: 'ден',
4576      dd: '%d дена',
4577      w: 'седмица',
4578      ww: '%d седмици',
4579      M: 'месец',
4580      MM: '%d месеца',
4581      y: 'година',
4582      yy: '%d години'
4583    },
4584    dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
4585    ordinal: function ordinal(number) {
4586      var lastDigit = number % 10,
4587          last2Digits = number % 100;
4588
4589      if (number === 0) {
4590        return number + '-ев';
4591      } else if (last2Digits === 0) {
4592        return number + '-ен';
4593      } else if (last2Digits > 10 && last2Digits < 20) {
4594        return number + '-ти';
4595      } else if (lastDigit === 1) {
4596        return number + '-ви';
4597      } else if (lastDigit === 2) {
4598        return number + '-ри';
4599      } else if (lastDigit === 7 || lastDigit === 8) {
4600        return number + '-ми';
4601      } else {
4602        return number + '-ти';
4603      }
4604    },
4605    week: {
4606      dow: 1,
4607      // Monday is the first day of the week.
4608      doy: 7 // The week that contains Jan 7th is the first week of the year.
4609
4610    }
4611  });
4612  return bg;
4613});
4614
4615/***/ }),
4616
vendor: 3,316 bytes, lines 4617-4688
4617/***/ "../autobahn_client_core/node_modules/moment/locale/bm.js":
4618/*!****************************************************************!*\
4619  !*** ../autobahn_client_core/node_modules/moment/locale/bm.js ***!
4620  \****************************************************************/
4621/*! no static exports found */
4622/***/ (function(module, exports, __webpack_require__) {
4623
4624var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4625
4626//! moment.js locale configuration
4627//! locale : Bambara [bm]
4628//! author : Estelle Comment : https://github.com/estellecomment
4629;
4630
4631(function (global, factory) {
4632  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4633				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4634				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4635				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4636})(this, function (moment) {
4637  'use strict'; //! moment.js locale configuration
4638
4639  var bm = moment.defineLocale('bm', {
4640    months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
4641    monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
4642    weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
4643    weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
4644    weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
4645    longDateFormat: {
4646      LT: 'HH:mm',
4647      LTS: 'HH:mm:ss',
4648      L: 'DD/MM/YYYY',
4649      LL: 'MMMM [tile] D [san] YYYY',
4650      LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
4651      LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
4652    },
4653    calendar: {
4654      sameDay: '[Bi lɛrɛ] LT',
4655      nextDay: '[Sini lɛrɛ] LT',
4656      nextWeek: 'dddd [don lɛrɛ] LT',
4657      lastDay: '[Kunu lɛrɛ] LT',
4658      lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
4659      sameElse: 'L'
4660    },
4661    relativeTime: {
4662      future: '%s kɔnɔ',
4663      past: 'a bɛ %s bɔ',
4664      s: 'sanga dama dama',
4665      ss: 'sekondi %d',
4666      m: 'miniti kelen',
4667      mm: 'miniti %d',
4668      h: 'lɛrɛ kelen',
4669      hh: 'lɛrɛ %d',
4670      d: 'tile kelen',
4671      dd: 'tile %d',
4672      M: 'kalo kelen',
4673      MM: 'kalo %d',
4674      y: 'san kelen',
4675      yy: 'san %d'
4676    },
4677    week: {
4678      dow: 1,
4679      // Monday is the first day of the week.
4680      doy: 4 // The week that contains Jan 4th is the first week of the year.
4681
4682    }
4683  });
4684  return bm;
4685});
4686
4687/***/ }),
4688
vendor: 5,776 bytes, lines 4689-4831
4689/***/ "../autobahn_client_core/node_modules/moment/locale/bn-bd.js":
4690/*!*******************************************************************!*\
4691  !*** ../autobahn_client_core/node_modules/moment/locale/bn-bd.js ***!
4692  \*******************************************************************/
4693/*! no static exports found */
4694/***/ (function(module, exports, __webpack_require__) {
4695
4696var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4697
4698//! moment.js locale configuration
4699//! locale : Bengali (Bangladesh) [bn-bd]
4700//! author : Asraf Hossain Patoary : https://github.com/ashwoolford
4701;
4702
4703(function (global, factory) {
4704  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4705				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4706				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4707				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4708})(this, function (moment) {
4709  'use strict'; //! moment.js locale configuration
4710
4711  var symbolMap = {
4712    1: 'à§§',
4713    2: '২',
4714    3: 'à§©',
4715    4: '৪',
4716    5: 'à§«',
4717    6: '৬',
4718    7: 'à§­',
4719    8: 'à§®',
4720    9: '৯',
4721    0: '০'
4722  },
4723      numberMap = {
4724    'à§§': '1',
4725    '২': '2',
4726    'à§©': '3',
4727    '৪': '4',
4728    'à§«': '5',
4729    '৬': '6',
4730    'à§­': '7',
4731    'à§®': '8',
4732    '৯': '9',
4733    '০': '0'
4734  };
4735  var bnBd = moment.defineLocale('bn-bd', {
4736    months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
4737    monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
4738    weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
4739    weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
4740    weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
4741    longDateFormat: {
4742      LT: 'A h:mm সময়',
4743      LTS: 'A h:mm:ss সময়',
4744      L: 'DD/MM/YYYY',
4745      LL: 'D MMMM YYYY',
4746      LLL: 'D MMMM YYYY, A h:mm সময়',
4747      LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'
4748    },
4749    calendar: {
4750      sameDay: '[আজ] LT',
4751      nextDay: '[আগামীকাল] LT',
4752      nextWeek: 'dddd, LT',
4753      lastDay: '[গতকাল] LT',
4754      lastWeek: '[গত] dddd, LT',
4755      sameElse: 'L'
4756    },
4757    relativeTime: {
4758      future: '%s পরে',
4759      past: '%s আগে',
4760      s: 'কয়েক সেকেন্ড',
4761      ss: '%d সেকেন্ড',
4762      m: 'এক মিনিট',
4763      mm: '%d মিনিট',
4764      h: 'এক ঘন্টা',
4765      hh: '%d ঘন্টা',
4766      d: 'এক দিন',
4767      dd: '%d দিন',
4768      M: 'এক মাস',
4769      MM: '%d মাস',
4770      y: 'এক বছর',
4771      yy: '%d বছর'
4772    },
4773    preparse: function preparse(string) {
4774      return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
4775        return numberMap[match];
4776      });
4777    },
4778    postformat: function postformat(string) {
4779      return string.replace(/\d/g, function (match) {
4780        return symbolMap[match];
4781      });
4782    },
4783    meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
4784    meridiemHour: function meridiemHour(hour, meridiem) {
4785      if (hour === 12) {
4786        hour = 0;
4787      }
4788
4789      if (meridiem === 'রাত') {
4790        return hour < 4 ? hour : hour + 12;
4791      } else if (meridiem === 'ভোর') {
4792        return hour;
4793      } else if (meridiem === 'সকাল') {
4794        return hour;
4795      } else if (meridiem === 'দুপুর') {
4796        return hour >= 3 ? hour : hour + 12;
4797      } else if (meridiem === 'বিকাল') {
4798        return hour + 12;
4799      } else if (meridiem === 'সন্ধ্যা') {
4800        return hour + 12;
4801      }
4802    },
4803    meridiem: function meridiem(hour, minute, isLower) {
4804      if (hour < 4) {
4805        return 'রাত';
4806      } else if (hour < 6) {
4807        return 'ভোর';
4808      } else if (hour < 12) {
4809        return 'সকাল';
4810      } else if (hour < 15) {
4811        return 'দুপুর';
4812      } else if (hour < 18) {
4813        return 'বিকাল';
4814      } else if (hour < 20) {
4815        return 'সন্ধ্যা';
4816      } else {
4817        return 'রাত';
4818      }
4819    },
4820    week: {
4821      dow: 0,
4822      // Sunday is the first day of the week.
4823      doy: 6 // The week that contains Jan 6th is the first week of the year.
4824
4825    }
4826  });
4827  return bnBd;
4828});
4829
4830/***/ }),
4831
vendor: 5,297 bytes, lines 4832-4962
4832/***/ "../autobahn_client_core/node_modules/moment/locale/bn.js":
4833/*!****************************************************************!*\
4834  !*** ../autobahn_client_core/node_modules/moment/locale/bn.js ***!
4835  \****************************************************************/
4836/*! no static exports found */
4837/***/ (function(module, exports, __webpack_require__) {
4838
4839var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4840
4841//! moment.js locale configuration
4842//! locale : Bengali [bn]
4843//! author : Kaushik Gandhi : https://github.com/kaushikgandhi
4844;
4845
4846(function (global, factory) {
4847  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4848				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4849				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4850				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4851})(this, function (moment) {
4852  'use strict'; //! moment.js locale configuration
4853
4854  var symbolMap = {
4855    1: 'à§§',
4856    2: '২',
4857    3: 'à§©',
4858    4: '৪',
4859    5: 'à§«',
4860    6: '৬',
4861    7: 'à§­',
4862    8: 'à§®',
4863    9: '৯',
4864    0: '০'
4865  },
4866      numberMap = {
4867    'à§§': '1',
4868    '২': '2',
4869    'à§©': '3',
4870    '৪': '4',
4871    'à§«': '5',
4872    '৬': '6',
4873    'à§­': '7',
4874    'à§®': '8',
4875    '৯': '9',
4876    '০': '0'
4877  };
4878  var bn = moment.defineLocale('bn', {
4879    months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
4880    monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
4881    weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
4882    weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
4883    weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
4884    longDateFormat: {
4885      LT: 'A h:mm সময়',
4886      LTS: 'A h:mm:ss সময়',
4887      L: 'DD/MM/YYYY',
4888      LL: 'D MMMM YYYY',
4889      LLL: 'D MMMM YYYY, A h:mm সময়',
4890      LLLL: 'dddd, D MMMM YYYY, A h:mm সময়'
4891    },
4892    calendar: {
4893      sameDay: '[আজ] LT',
4894      nextDay: '[আগামীকাল] LT',
4895      nextWeek: 'dddd, LT',
4896      lastDay: '[গতকাল] LT',
4897      lastWeek: '[গত] dddd, LT',
4898      sameElse: 'L'
4899    },
4900    relativeTime: {
4901      future: '%s পরে',
4902      past: '%s আগে',
4903      s: 'কয়েক সেকেন্ড',
4904      ss: '%d সেকেন্ড',
4905      m: 'এক মিনিট',
4906      mm: '%d মিনিট',
4907      h: 'এক ঘন্টা',
4908      hh: '%d ঘন্টা',
4909      d: 'এক দিন',
4910      dd: '%d দিন',
4911      M: 'এক মাস',
4912      MM: '%d মাস',
4913      y: 'এক বছর',
4914      yy: '%d বছর'
4915    },
4916    preparse: function preparse(string) {
4917      return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
4918        return numberMap[match];
4919      });
4920    },
4921    postformat: function postformat(string) {
4922      return string.replace(/\d/g, function (match) {
4923        return symbolMap[match];
4924      });
4925    },
4926    meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
4927    meridiemHour: function meridiemHour(hour, meridiem) {
4928      if (hour === 12) {
4929        hour = 0;
4930      }
4931
4932      if (meridiem === 'রাত' && hour >= 4 || meridiem === 'দুপুর' && hour < 5 || meridiem === 'বিকাল') {
4933        return hour + 12;
4934      } else {
4935        return hour;
4936      }
4937    },
4938    meridiem: function meridiem(hour, minute, isLower) {
4939      if (hour < 4) {
4940        return 'রাত';
4941      } else if (hour < 10) {
4942        return 'সকাল';
4943      } else if (hour < 17) {
4944        return 'দুপুর';
4945      } else if (hour < 20) {
4946        return 'বিকাল';
4947      } else {
4948        return 'রাত';
4949      }
4950    },
4951    week: {
4952      dow: 0,
4953      // Sunday is the first day of the week.
4954      doy: 6 // The week that contains Jan 6th is the first week of the year.
4955
4956    }
4957  });
4958  return bn;
4959});
4960
4961/***/ }),
4962
vendor: 5,768 bytes, lines 4963-5095
4963/***/ "../autobahn_client_core/node_modules/moment/locale/bo.js":
4964/*!****************************************************************!*\
4965  !*** ../autobahn_client_core/node_modules/moment/locale/bo.js ***!
4966  \****************************************************************/
4967/*! no static exports found */
4968/***/ (function(module, exports, __webpack_require__) {
4969
4970var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
4971
4972//! moment.js locale configuration
4973//! locale : Tibetan [bo]
4974//! author : Thupten N. Chakrishar : https://github.com/vajradog
4975;
4976
4977(function (global, factory) {
4978  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
4979				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
4980				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
4981				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
4982})(this, function (moment) {
4983  'use strict'; //! moment.js locale configuration
4984
4985  var symbolMap = {
4986    1: '༡',
4987    2: '༢',
4988    3: '༣',
4989    4: '༤',
4990    5: '༥',
4991    6: '༦',
4992    7: '༧',
4993    8: '༨',
4994    9: '༩',
4995    0: '༠'
4996  },
4997      numberMap = {
4998    '༡': '1',
4999    '༢': '2',
5000    '༣': '3',
5001    '༤': '4',
5002    '༥': '5',
5003    '༦': '6',
5004    '༧': '7',
5005    '༨': '8',
5006    '༩': '9',
5007    '༠': '0'
5008  };
5009  var bo = moment.defineLocale('bo', {
5010    months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5011    monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split('_'),
5012    monthsShortRegex: /^(ཟླ་\d{1,2})/,
5013    monthsParseExact: true,
5014    weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
5015    weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5016    weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
5017    longDateFormat: {
5018      LT: 'A h:mm',
5019      LTS: 'A h:mm:ss',
5020      L: 'DD/MM/YYYY',
5021      LL: 'D MMMM YYYY',
5022      LLL: 'D MMMM YYYY, A h:mm',
5023      LLLL: 'dddd, D MMMM YYYY, A h:mm'
5024    },
5025    calendar: {
5026      sameDay: '[དི་རིང] LT',
5027      nextDay: '[སང་ཉིན] LT',
5028      nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
5029      lastDay: '[ཁ་སང] LT',
5030      lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
5031      sameElse: 'L'
5032    },
5033    relativeTime: {
5034      future: '%s ལ་',
5035      past: '%s སྔན་ལ',
5036      s: 'ལམ་སང',
5037      ss: '%d སྐར་ཆ།',
5038      m: 'སྐར་མ་གཅིག',
5039      mm: '%d སྐར་མ',
5040      h: 'ཆུ་ཚོད་གཅིག',
5041      hh: '%d ཆུ་ཚོད',
5042      d: 'ཉིན་གཅིག',
5043      dd: '%d ཉིན་',
5044      M: 'ཟླ་བ་གཅིག',
5045      MM: '%d ཟླ་བ',
5046      y: 'ལོ་གཅིག',
5047      yy: '%d ལོ'
5048    },
5049    preparse: function preparse(string) {
5050      return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
5051        return numberMap[match];
5052      });
5053    },
5054    postformat: function postformat(string) {
5055      return string.replace(/\d/g, function (match) {
5056        return symbolMap[match];
5057      });
5058    },
5059    meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
5060    meridiemHour: function meridiemHour(hour, meridiem) {
5061      if (hour === 12) {
5062        hour = 0;
5063      }
5064
5065      if (meridiem === 'མཚན་མོ' && hour >= 4 || meridiem === 'ཉིན་གུང' && hour < 5 || meridiem === 'དགོང་དག') {
5066        return hour + 12;
5067      } else {
5068        return hour;
5069      }
5070    },
5071    meridiem: function meridiem(hour, minute, isLower) {
5072      if (hour < 4) {
5073        return 'མཚན་མོ';
5074      } else if (hour < 10) {
5075        return 'ཞོགས་ཀས';
5076      } else if (hour < 17) {
5077        return 'ཉིན་གུང';
5078      } else if (hour < 20) {
5079        return 'དགོང་དག';
5080      } else {
5081        return 'མཚན་མོ';
5082      }
5083    },
5084    week: {
5085      dow: 0,
5086      // Sunday is the first day of the week.
5087      doy: 6 // The week that contains Jan 6th is the first week of the year.
5088
5089    }
5090  });
5091  return bo;
5092});
5093
5094/***/ }),
5095
vendor: 5,850 bytes, lines 5096-5251
5096/***/ "../autobahn_client_core/node_modules/moment/locale/br.js":
5097/*!****************************************************************!*\
5098  !*** ../autobahn_client_core/node_modules/moment/locale/br.js ***!
5099  \****************************************************************/
5100/*! no static exports found */
5101/***/ (function(module, exports, __webpack_require__) {
5102
5103var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5104
5105//! moment.js locale configuration
5106//! locale : Breton [br]
5107//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou
5108;
5109
5110(function (global, factory) {
5111  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
5112				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
5113				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
5114				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
5115})(this, function (moment) {
5116  'use strict'; //! moment.js locale configuration
5117
5118  function relativeTimeWithMutation(number, withoutSuffix, key) {
5119    var format = {
5120      mm: 'munutenn',
5121      MM: 'miz',
5122      dd: 'devezh'
5123    };
5124    return number + ' ' + mutation(format[key], number);
5125  }
5126
5127  function specialMutationForYears(number) {
5128    switch (lastNumber(number)) {
5129      case 1:
5130      case 3:
5131      case 4:
5132      case 5:
5133      case 9:
5134        return number + ' bloaz';
5135
5136      default:
5137        return number + ' vloaz';
5138    }
5139  }
5140
5141  function lastNumber(number) {
5142    if (number > 9) {
5143      return lastNumber(number % 10);
5144    }
5145
5146    return number;
5147  }
5148
5149  function mutation(text, number) {
5150    if (number === 2) {
5151      return softMutation(text);
5152    }
5153
5154    return text;
5155  }
5156
5157  function softMutation(text) {
5158    var mutationTable = {
5159      m: 'v',
5160      b: 'v',
5161      d: 'z'
5162    };
5163
5164    if (mutationTable[text.charAt(0)] === undefined) {
5165      return text;
5166    }
5167
5168    return mutationTable[text.charAt(0)] + text.substring(1);
5169  }
5170
5171  var monthsParse = [/^gen/i, /^c[ʼ\']hwe/i, /^meu/i, /^ebr/i, /^mae/i, /^(mez|eve)/i, /^gou/i, /^eos/i, /^gwe/i, /^her/i, /^du/i, /^ker/i],
5172      monthsRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
5173      monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
5174      monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
5175      fullWeekdaysParse = [/^sul/i, /^lun/i, /^meurzh/i, /^merc[ʼ\']her/i, /^yaou/i, /^gwener/i, /^sadorn/i],
5176      shortWeekdaysParse = [/^Sul/i, /^Lun/i, /^Meu/i, /^Mer/i, /^Yao/i, /^Gwe/i, /^Sad/i],
5177      minWeekdaysParse = [/^Su/i, /^Lu/i, /^Me([^r]|$)/i, /^Mer/i, /^Ya/i, /^Gw/i, /^Sa/i];
5178  var br = moment.defineLocale('br', {
5179    months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
5180    monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
5181    weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
5182    weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
5183    weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
5184    weekdaysParse: minWeekdaysParse,
5185    fullWeekdaysParse: fullWeekdaysParse,
5186    shortWeekdaysParse: shortWeekdaysParse,
5187    minWeekdaysParse: minWeekdaysParse,
5188    monthsRegex: monthsRegex,
5189    monthsShortRegex: monthsRegex,
5190    monthsStrictRegex: monthsStrictRegex,
5191    monthsShortStrictRegex: monthsShortStrictRegex,
5192    monthsParse: monthsParse,
5193    longMonthsParse: monthsParse,
5194    shortMonthsParse: monthsParse,
5195    longDateFormat: {
5196      LT: 'HH:mm',
5197      LTS: 'HH:mm:ss',
5198      L: 'DD/MM/YYYY',
5199      LL: 'D [a viz] MMMM YYYY',
5200      LLL: 'D [a viz] MMMM YYYY HH:mm',
5201      LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm'
5202    },
5203    calendar: {
5204      sameDay: '[Hiziv da] LT',
5205      nextDay: '[Warcʼhoazh da] LT',
5206      nextWeek: 'dddd [da] LT',
5207      lastDay: '[Decʼh da] LT',
5208      lastWeek: 'dddd [paset da] LT',
5209      sameElse: 'L'
5210    },
5211    relativeTime: {
5212      future: 'a-benn %s',
5213      past: '%s ʼzo',
5214      s: 'un nebeud segondennoù',
5215      ss: '%d eilenn',
5216      m: 'ur vunutenn',
5217      mm: relativeTimeWithMutation,
5218      h: 'un eur',
5219      hh: '%d eur',
5220      d: 'un devezh',
5221      dd: relativeTimeWithMutation,
5222      M: 'ur miz',
5223      MM: relativeTimeWithMutation,
5224      y: 'ur bloaz',
5225      yy: specialMutationForYears
5226    },
5227    dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
5228    ordinal: function ordinal(number) {
5229      var output = number === 1 ? 'añ' : 'vet';
5230      return number + output;
5231    },
5232    week: {
5233      dow: 1,
5234      // Monday is the first day of the week.
5235      doy: 4 // The week that contains Jan 4th is the first week of the year.
5236
5237    },
5238    meridiemParse: /a.m.|g.m./,
5239    // goude merenn | a-raok merenn
5240    isPM: function isPM(token) {
5241      return token === 'g.m.';
5242    },
5243    meridiem: function meridiem(hour, minute, isLower) {
5244      return hour < 12 ? 'a.m.' : 'g.m.';
5245    }
5246  });
5247  return br;
5248});
5249
5250/***/ }),
5251
vendor: 5,675 bytes, lines 5252-5436
5252/***/ "../autobahn_client_core/node_modules/moment/locale/bs.js":
5253/*!****************************************************************!*\
5254  !*** ../autobahn_client_core/node_modules/moment/locale/bs.js ***!
5255  \****************************************************************/
5256/*! no static exports found */
5257/***/ (function(module, exports, __webpack_require__) {
5258
5259var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5260
5261//! moment.js locale configuration
5262//! locale : Bosnian [bs]
5263//! author : Nedim Cholich : https://github.com/frontyard
5264//! based on (hr) translation by Bojan Marković
5265;
5266
5267(function (global, factory) {
5268  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
5269				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
5270				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
5271				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
5272})(this, function (moment) {
5273  'use strict'; //! moment.js locale configuration
5274
5275  function translate(number, withoutSuffix, key) {
5276    var result = number + ' ';
5277
5278    switch (key) {
5279      case 'ss':
5280        if (number === 1) {
5281          result += 'sekunda';
5282        } else if (number === 2 || number === 3 || number === 4) {
5283          result += 'sekunde';
5284        } else {
5285          result += 'sekundi';
5286        }
5287
5288        return result;
5289
5290      case 'm':
5291        return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5292
5293      case 'mm':
5294        if (number === 1) {
5295          result += 'minuta';
5296        } else if (number === 2 || number === 3 || number === 4) {
5297          result += 'minute';
5298        } else {
5299          result += 'minuta';
5300        }
5301
5302        return result;
5303
5304      case 'h':
5305        return withoutSuffix ? 'jedan sat' : 'jednog sata';
5306
5307      case 'hh':
5308        if (number === 1) {
5309          result += 'sat';
5310        } else if (number === 2 || number === 3 || number === 4) {
5311          result += 'sata';
5312        } else {
5313          result += 'sati';
5314        }
5315
5316        return result;
5317
5318      case 'dd':
5319        if (number === 1) {
5320          result += 'dan';
5321        } else {
5322          result += 'dana';
5323        }
5324
5325        return result;
5326
5327      case 'MM':
5328        if (number === 1) {
5329          result += 'mjesec';
5330        } else if (number === 2 || number === 3 || number === 4) {
5331          result += 'mjeseca';
5332        } else {
5333          result += 'mjeseci';
5334        }
5335
5336        return result;
5337
5338      case 'yy':
5339        if (number === 1) {
5340          result += 'godina';
5341        } else if (number === 2 || number === 3 || number === 4) {
5342          result += 'godine';
5343        } else {
5344          result += 'godina';
5345        }
5346
5347        return result;
5348    }
5349  }
5350
5351  var bs = moment.defineLocale('bs', {
5352    months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
5353    monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
5354    monthsParseExact: true,
5355    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5356    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5357    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
5358    weekdaysParseExact: true,
5359    longDateFormat: {
5360      LT: 'H:mm',
5361      LTS: 'H:mm:ss',
5362      L: 'DD.MM.YYYY',
5363      LL: 'D. MMMM YYYY',
5364      LLL: 'D. MMMM YYYY H:mm',
5365      LLLL: 'dddd, D. MMMM YYYY H:mm'
5366    },
5367    calendar: {
5368      sameDay: '[danas u] LT',
5369      nextDay: '[sutra u] LT',
5370      nextWeek: function nextWeek() {
5371        switch (this.day()) {
5372          case 0:
5373            return '[u] [nedjelju] [u] LT';
5374
5375          case 3:
5376            return '[u] [srijedu] [u] LT';
5377
5378          case 6:
5379            return '[u] [subotu] [u] LT';
5380
5381          case 1:
5382          case 2:
5383          case 4:
5384          case 5:
5385            return '[u] dddd [u] LT';
5386        }
5387      },
5388      lastDay: '[jučer u] LT',
5389      lastWeek: function lastWeek() {
5390        switch (this.day()) {
5391          case 0:
5392          case 3:
5393            return '[prošlu] dddd [u] LT';
5394
5395          case 6:
5396            return '[prošle] [subote] [u] LT';
5397
5398          case 1:
5399          case 2:
5400          case 4:
5401          case 5:
5402            return '[prošli] dddd [u] LT';
5403        }
5404      },
5405      sameElse: 'L'
5406    },
5407    relativeTime: {
5408      future: 'za %s',
5409      past: 'prije %s',
5410      s: 'par sekundi',
5411      ss: translate,
5412      m: translate,
5413      mm: translate,
5414      h: translate,
5415      hh: translate,
5416      d: 'dan',
5417      dd: translate,
5418      M: 'mjesec',
5419      MM: translate,
5420      y: 'godinu',
5421      yy: translate
5422    },
5423    dayOfMonthOrdinalParse: /\d{1,2}\./,
5424    ordinal: '%d.',
5425    week: {
5426      dow: 1,
5427      // Monday is the first day of the week.
5428      doy: 7 // The week that contains Jan 7th is the first week of the year.
5429
5430    }
5431  });
5432  return bs;
5433});
5434
5435/***/ }),
5436
vendor: 4,315 bytes, lines 5437-5537
5437/***/ "../autobahn_client_core/node_modules/moment/locale/ca.js":
5438/*!****************************************************************!*\
5439  !*** ../autobahn_client_core/node_modules/moment/locale/ca.js ***!
5440  \****************************************************************/
5441/*! no static exports found */
5442/***/ (function(module, exports, __webpack_require__) {
5443
5444var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5445
5446//! moment.js locale configuration
5447//! locale : Catalan [ca]
5448//! author : Juan G. Hurtado : https://github.com/juanghurtado
5449;
5450
5451(function (global, factory) {
5452  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
5453				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
5454				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
5455				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
5456})(this, function (moment) {
5457  'use strict'; //! moment.js locale configuration
5458
5459  var ca = moment.defineLocale('ca', {
5460    months: {
5461      standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
5462      format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split('_'),
5463      isFormat: /D[oD]?(\s)+MMMM/
5464    },
5465    monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),
5466    monthsParseExact: true,
5467    weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
5468    weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
5469    weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
5470    weekdaysParseExact: true,
5471    longDateFormat: {
5472      LT: 'H:mm',
5473      LTS: 'H:mm:ss',
5474      L: 'DD/MM/YYYY',
5475      LL: 'D MMMM [de] YYYY',
5476      ll: 'D MMM YYYY',
5477      LLL: 'D MMMM [de] YYYY [a les] H:mm',
5478      lll: 'D MMM YYYY, H:mm',
5479      LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
5480      llll: 'ddd D MMM YYYY, H:mm'
5481    },
5482    calendar: {
5483      sameDay: function sameDay() {
5484        return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
5485      },
5486      nextDay: function nextDay() {
5487        return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
5488      },
5489      nextWeek: function nextWeek() {
5490        return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
5491      },
5492      lastDay: function lastDay() {
5493        return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
5494      },
5495      lastWeek: function lastWeek() {
5496        return '[el] dddd [passat a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
5497      },
5498      sameElse: 'L'
5499    },
5500    relativeTime: {
5501      future: "d'aquí %s",
5502      past: 'fa %s',
5503      s: 'uns segons',
5504      ss: '%d segons',
5505      m: 'un minut',
5506      mm: '%d minuts',
5507      h: 'una hora',
5508      hh: '%d hores',
5509      d: 'un dia',
5510      dd: '%d dies',
5511      M: 'un mes',
5512      MM: '%d mesos',
5513      y: 'un any',
5514      yy: '%d anys'
5515    },
5516    dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
5517    ordinal: function ordinal(number, period) {
5518      var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';
5519
5520      if (period === 'w' || period === 'W') {
5521        output = 'a';
5522      }
5523
5524      return number + output;
5525    },
5526    week: {
5527      dow: 1,
5528      // Monday is the first day of the week.
5529      doy: 4 // The week that contains Jan 4th is the first week of the year.
5530
5531    }
5532  });
5533  return ca;
5534});
5535
5536/***/ }),
5537
vendor: 7,898 bytes, lines 5538-5754
5538/***/ "../autobahn_client_core/node_modules/moment/locale/cs.js":
5539/*!****************************************************************!*\
5540  !*** ../autobahn_client_core/node_modules/moment/locale/cs.js ***!
5541  \****************************************************************/
5542/*! no static exports found */
5543/***/ (function(module, exports, __webpack_require__) {
5544
5545var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5546
5547//! moment.js locale configuration
5548//! locale : Czech [cs]
5549//! author : petrbela : https://github.com/petrbela
5550;
5551
5552(function (global, factory) {
5553  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
5554				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
5555				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
5556				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
5557})(this, function (moment) {
5558  'use strict'; //! moment.js locale configuration
5559
5560  var months = {
5561    format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
5562    standalone: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split('_')
5563  },
5564      monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
5565      monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i],
5566      // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
5567  // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
5568  monthsRegex = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
5569
5570  function plural(n) {
5571    return n > 1 && n < 5 && ~~(n / 10) !== 1;
5572  }
5573
5574  function translate(number, withoutSuffix, key, isFuture) {
5575    var result = number + ' ';
5576
5577    switch (key) {
5578      case 's':
5579        // a few seconds / in a few seconds / a few seconds ago
5580        return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
5581
5582      case 'ss':
5583        // 9 seconds / in 9 seconds / 9 seconds ago
5584        if (withoutSuffix || isFuture) {
5585          return result + (plural(number) ? 'sekundy' : 'sekund');
5586        } else {
5587          return result + 'sekundami';
5588        }
5589
5590      case 'm':
5591        // a minute / in a minute / a minute ago
5592        return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
5593
5594      case 'mm':
5595        // 9 minutes / in 9 minutes / 9 minutes ago
5596        if (withoutSuffix || isFuture) {
5597          return result + (plural(number) ? 'minuty' : 'minut');
5598        } else {
5599          return result + 'minutami';
5600        }
5601
5602      case 'h':
5603        // an hour / in an hour / an hour ago
5604        return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
5605
5606      case 'hh':
5607        // 9 hours / in 9 hours / 9 hours ago
5608        if (withoutSuffix || isFuture) {
5609          return result + (plural(number) ? 'hodiny' : 'hodin');
5610        } else {
5611          return result + 'hodinami';
5612        }
5613
5614      case 'd':
5615        // a day / in a day / a day ago
5616        return withoutSuffix || isFuture ? 'den' : 'dnem';
5617
5618      case 'dd':
5619        // 9 days / in 9 days / 9 days ago
5620        if (withoutSuffix || isFuture) {
5621          return result + (plural(number) ? 'dny' : 'dní');
5622        } else {
5623          return result + 'dny';
5624        }
5625
5626      case 'M':
5627        // a month / in a month / a month ago
5628        return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
5629
5630      case 'MM':
5631        // 9 months / in 9 months / 9 months ago
5632        if (withoutSuffix || isFuture) {
5633          return result + (plural(number) ? 'měsíce' : 'měsíců');
5634        } else {
5635          return result + 'měsíci';
5636        }
5637
5638      case 'y':
5639        // a year / in a year / a year ago
5640        return withoutSuffix || isFuture ? 'rok' : 'rokem';
5641
5642      case 'yy':
5643        // 9 years / in 9 years / 9 years ago
5644        if (withoutSuffix || isFuture) {
5645          return result + (plural(number) ? 'roky' : 'let');
5646        } else {
5647          return result + 'lety';
5648        }
5649
5650    }
5651  }
5652
5653  var cs = moment.defineLocale('cs', {
5654    months: months,
5655    monthsShort: monthsShort,
5656    monthsRegex: monthsRegex,
5657    monthsShortRegex: monthsRegex,
5658    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
5659    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
5660    monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
5661    monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
5662    monthsParse: monthsParse,
5663    longMonthsParse: monthsParse,
5664    shortMonthsParse: monthsParse,
5665    weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
5666    weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
5667    weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
5668    longDateFormat: {
5669      LT: 'H:mm',
5670      LTS: 'H:mm:ss',
5671      L: 'DD.MM.YYYY',
5672      LL: 'D. MMMM YYYY',
5673      LLL: 'D. MMMM YYYY H:mm',
5674      LLLL: 'dddd D. MMMM YYYY H:mm',
5675      l: 'D. M. YYYY'
5676    },
5677    calendar: {
5678      sameDay: '[dnes v] LT',
5679      nextDay: '[zítra v] LT',
5680      nextWeek: function nextWeek() {
5681        switch (this.day()) {
5682          case 0:
5683            return '[v neděli v] LT';
5684
5685          case 1:
5686          case 2:
5687            return '[v] dddd [v] LT';
5688
5689          case 3:
5690            return '[ve středu v] LT';
5691
5692          case 4:
5693            return '[ve čtvrtek v] LT';
5694
5695          case 5:
5696            return '[v pátek v] LT';
5697
5698          case 6:
5699            return '[v sobotu v] LT';
5700        }
5701      },
5702      lastDay: '[včera v] LT',
5703      lastWeek: function lastWeek() {
5704        switch (this.day()) {
5705          case 0:
5706            return '[minulou neděli v] LT';
5707
5708          case 1:
5709          case 2:
5710            return '[minulé] dddd [v] LT';
5711
5712          case 3:
5713            return '[minulou středu v] LT';
5714
5715          case 4:
5716          case 5:
5717            return '[minulý] dddd [v] LT';
5718
5719          case 6:
5720            return '[minulou sobotu v] LT';
5721        }
5722      },
5723      sameElse: 'L'
5724    },
5725    relativeTime: {
5726      future: 'za %s',
5727      past: 'před %s',
5728      s: translate,
5729      ss: translate,
5730      m: translate,
5731      mm: translate,
5732      h: translate,
5733      hh: translate,
5734      d: translate,
5735      dd: translate,
5736      M: translate,
5737      MM: translate,
5738      y: translate,
5739      yy: translate
5740    },
5741    dayOfMonthOrdinalParse: /\d{1,2}\./,
5742    ordinal: '%d.',
5743    week: {
5744      dow: 1,
5745      // Monday is the first day of the week.
5746      doy: 4 // The week that contains Jan 4th is the first week of the year.
5747
5748    }
5749  });
5750  return cs;
5751});
5752
5753/***/ }),
5754
vendor: 3,850 bytes, lines 5755-5831
5755/***/ "../autobahn_client_core/node_modules/moment/locale/cv.js":
5756/*!****************************************************************!*\
5757  !*** ../autobahn_client_core/node_modules/moment/locale/cv.js ***!
5758  \****************************************************************/
5759/*! no static exports found */
5760/***/ (function(module, exports, __webpack_require__) {
5761
5762var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5763
5764//! moment.js locale configuration
5765//! locale : Chuvash [cv]
5766//! author : Anatoly Mironov : https://github.com/mirontoli
5767;
5768
5769(function (global, factory) {
5770  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
5771				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
5772				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
5773				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
5774})(this, function (moment) {
5775  'use strict'; //! moment.js locale configuration
5776
5777  var cv = moment.defineLocale('cv', {
5778    months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
5779    monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
5780    weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
5781    weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
5782    weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
5783    longDateFormat: {
5784      LT: 'HH:mm',
5785      LTS: 'HH:mm:ss',
5786      L: 'DD-MM-YYYY',
5787      LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
5788      LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
5789      LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
5790    },
5791    calendar: {
5792      sameDay: '[Паян] LT [сехетре]',
5793      nextDay: '[Ыран] LT [сехетре]',
5794      lastDay: '[Ӗнер] LT [сехетре]',
5795      nextWeek: '[Ҫитес] dddd LT [сехетре]',
5796      lastWeek: '[Иртнӗ] dddd LT [сехетре]',
5797      sameElse: 'L'
5798    },
5799    relativeTime: {
5800      future: function future(output) {
5801        var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
5802        return output + affix;
5803      },
5804      past: '%s каялла',
5805      s: 'пӗр-ик ҫеккунт',
5806      ss: '%d ҫеккунт',
5807      m: 'пӗр минут',
5808      mm: '%d минут',
5809      h: 'пӗр сехет',
5810      hh: '%d сехет',
5811      d: 'пӗр кун',
5812      dd: '%d кун',
5813      M: 'пӗр уйӑх',
5814      MM: '%d уйӑх',
5815      y: 'пӗр ҫул',
5816      yy: '%d ҫул'
5817    },
5818    dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
5819    ordinal: '%d-мӗш',
5820    week: {
5821      dow: 1,
5822      // Monday is the first day of the week.
5823      doy: 7 // The week that contains Jan 7th is the first week of the year.
5824
5825    }
5826  });
5827  return cv;
5828});
5829
5830/***/ }),
5831
vendor: 4,026 bytes, lines 5832-5927
5832/***/ "../autobahn_client_core/node_modules/moment/locale/cy.js":
5833/*!****************************************************************!*\
5834  !*** ../autobahn_client_core/node_modules/moment/locale/cy.js ***!
5835  \****************************************************************/
5836/*! no static exports found */
5837/***/ (function(module, exports, __webpack_require__) {
5838
5839var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5840
5841//! moment.js locale configuration
5842//! locale : Welsh [cy]
5843//! author : Robert Allen : https://github.com/robgallen
5844//! author : https://github.com/ryangreaves
5845;
5846
5847(function (global, factory) {
5848  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
5849				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
5850				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
5851				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
5852})(this, function (moment) {
5853  'use strict'; //! moment.js locale configuration
5854
5855  var cy = moment.defineLocale('cy', {
5856    months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
5857    monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
5858    weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
5859    weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
5860    weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
5861    weekdaysParseExact: true,
5862    // time formats are the same as en-gb
5863    longDateFormat: {
5864      LT: 'HH:mm',
5865      LTS: 'HH:mm:ss',
5866      L: 'DD/MM/YYYY',
5867      LL: 'D MMMM YYYY',
5868      LLL: 'D MMMM YYYY HH:mm',
5869      LLLL: 'dddd, D MMMM YYYY HH:mm'
5870    },
5871    calendar: {
5872      sameDay: '[Heddiw am] LT',
5873      nextDay: '[Yfory am] LT',
5874      nextWeek: 'dddd [am] LT',
5875      lastDay: '[Ddoe am] LT',
5876      lastWeek: 'dddd [diwethaf am] LT',
5877      sameElse: 'L'
5878    },
5879    relativeTime: {
5880      future: 'mewn %s',
5881      past: '%s yn ôl',
5882      s: 'ychydig eiliadau',
5883      ss: '%d eiliad',
5884      m: 'munud',
5885      mm: '%d munud',
5886      h: 'awr',
5887      hh: '%d awr',
5888      d: 'diwrnod',
5889      dd: '%d diwrnod',
5890      M: 'mis',
5891      MM: '%d mis',
5892      y: 'blwyddyn',
5893      yy: '%d flynedd'
5894    },
5895    dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
5896    // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
5897    ordinal: function ordinal(number) {
5898      var b = number,
5899          output = '',
5900          lookup = ['', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
5901      'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
5902      ];
5903
5904      if (b > 20) {
5905        if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
5906          output = 'fed'; // not 30ain, 70ain or 90ain
5907        } else {
5908          output = 'ain';
5909        }
5910      } else if (b > 0) {
5911        output = lookup[b];
5912      }
5913
5914      return number + output;
5915    },
5916    week: {
5917      dow: 1,
5918      // Monday is the first day of the week.
5919      doy: 4 // The week that contains Jan 4th is the first week of the year.
5920
5921    }
5922  });
5923  return cy;
5924});
5925
5926/***/ }),
5927
vendor: 3,236 bytes, lines 5928-6001
5928/***/ "../autobahn_client_core/node_modules/moment/locale/da.js":
5929/*!****************************************************************!*\
5930  !*** ../autobahn_client_core/node_modules/moment/locale/da.js ***!
5931  \****************************************************************/
5932/*! no static exports found */
5933/***/ (function(module, exports, __webpack_require__) {
5934
5935var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
5936
5937//! moment.js locale configuration
5938//! locale : Danish [da]
5939//! author : Ulrik Nielsen : https://github.com/mrbase
5940;
5941
5942(function (global, factory) {
5943  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
5944				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
5945				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
5946				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
5947})(this, function (moment) {
5948  'use strict'; //! moment.js locale configuration
5949
5950  var da = moment.defineLocale('da', {
5951    months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
5952    monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
5953    weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
5954    weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
5955    weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
5956    longDateFormat: {
5957      LT: 'HH:mm',
5958      LTS: 'HH:mm:ss',
5959      L: 'DD.MM.YYYY',
5960      LL: 'D. MMMM YYYY',
5961      LLL: 'D. MMMM YYYY HH:mm',
5962      LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
5963    },
5964    calendar: {
5965      sameDay: '[i dag kl.] LT',
5966      nextDay: '[i morgen kl.] LT',
5967      nextWeek: 'på dddd [kl.] LT',
5968      lastDay: '[i går kl.] LT',
5969      lastWeek: '[i] dddd[s kl.] LT',
5970      sameElse: 'L'
5971    },
5972    relativeTime: {
5973      future: 'om %s',
5974      past: '%s siden',
5975      s: 'få sekunder',
5976      ss: '%d sekunder',
5977      m: 'et minut',
5978      mm: '%d minutter',
5979      h: 'en time',
5980      hh: '%d timer',
5981      d: 'en dag',
5982      dd: '%d dage',
5983      M: 'en måned',
5984      MM: '%d måneder',
5985      y: 'et år',
5986      yy: '%d år'
5987    },
5988    dayOfMonthOrdinalParse: /\d{1,2}\./,
5989    ordinal: '%d.',
5990    week: {
5991      dow: 1,
5992      // Monday is the first day of the week.
5993      doy: 4 // The week that contains Jan 4th is the first week of the year.
5994
5995    }
5996  });
5997  return da;
5998});
5999
6000/***/ }),
6001
vendor: 4,201 bytes, lines 6002-6097
6002/***/ "../autobahn_client_core/node_modules/moment/locale/de-at.js":
6003/*!*******************************************************************!*\
6004  !*** ../autobahn_client_core/node_modules/moment/locale/de-at.js ***!
6005  \*******************************************************************/
6006/*! no static exports found */
6007/***/ (function(module, exports, __webpack_require__) {
6008
6009var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6010
6011//! moment.js locale configuration
6012//! locale : German (Austria) [de-at]
6013//! author : lluchs : https://github.com/lluchs
6014//! author: Menelion Elensúle: https://github.com/Oire
6015//! author : Martin Groller : https://github.com/MadMG
6016//! author : Mikolaj Dadela : https://github.com/mik01aj
6017;
6018
6019(function (global, factory) {
6020  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6021				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6022				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6023				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6024})(this, function (moment) {
6025  'use strict'; //! moment.js locale configuration
6026
6027  function processRelativeTime(number, withoutSuffix, key, isFuture) {
6028    var format = {
6029      m: ['eine Minute', 'einer Minute'],
6030      h: ['eine Stunde', 'einer Stunde'],
6031      d: ['ein Tag', 'einem Tag'],
6032      dd: [number + ' Tage', number + ' Tagen'],
6033      w: ['eine Woche', 'einer Woche'],
6034      M: ['ein Monat', 'einem Monat'],
6035      MM: [number + ' Monate', number + ' Monaten'],
6036      y: ['ein Jahr', 'einem Jahr'],
6037      yy: [number + ' Jahre', number + ' Jahren']
6038    };
6039    return withoutSuffix ? format[key][0] : format[key][1];
6040  }
6041
6042  var deAt = moment.defineLocale('de-at', {
6043    months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6044    monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6045    monthsParseExact: true,
6046    weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6047    weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6048    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6049    weekdaysParseExact: true,
6050    longDateFormat: {
6051      LT: 'HH:mm',
6052      LTS: 'HH:mm:ss',
6053      L: 'DD.MM.YYYY',
6054      LL: 'D. MMMM YYYY',
6055      LLL: 'D. MMMM YYYY HH:mm',
6056      LLLL: 'dddd, D. MMMM YYYY HH:mm'
6057    },
6058    calendar: {
6059      sameDay: '[heute um] LT [Uhr]',
6060      sameElse: 'L',
6061      nextDay: '[morgen um] LT [Uhr]',
6062      nextWeek: 'dddd [um] LT [Uhr]',
6063      lastDay: '[gestern um] LT [Uhr]',
6064      lastWeek: '[letzten] dddd [um] LT [Uhr]'
6065    },
6066    relativeTime: {
6067      future: 'in %s',
6068      past: 'vor %s',
6069      s: 'ein paar Sekunden',
6070      ss: '%d Sekunden',
6071      m: processRelativeTime,
6072      mm: '%d Minuten',
6073      h: processRelativeTime,
6074      hh: '%d Stunden',
6075      d: processRelativeTime,
6076      dd: processRelativeTime,
6077      w: processRelativeTime,
6078      ww: '%d Wochen',
6079      M: processRelativeTime,
6080      MM: processRelativeTime,
6081      y: processRelativeTime,
6082      yy: processRelativeTime
6083    },
6084    dayOfMonthOrdinalParse: /\d{1,2}\./,
6085    ordinal: '%d.',
6086    week: {
6087      dow: 1,
6088      // Monday is the first day of the week.
6089      doy: 4 // The week that contains Jan 4th is the first week of the year.
6090
6091    }
6092  });
6093  return deAt;
6094});
6095
6096/***/ }),
6097
vendor: 4,036 bytes, lines 6098-6190
6098/***/ "../autobahn_client_core/node_modules/moment/locale/de-ch.js":
6099/*!*******************************************************************!*\
6100  !*** ../autobahn_client_core/node_modules/moment/locale/de-ch.js ***!
6101  \*******************************************************************/
6102/*! no static exports found */
6103/***/ (function(module, exports, __webpack_require__) {
6104
6105var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6106
6107//! moment.js locale configuration
6108//! locale : German (Switzerland) [de-ch]
6109//! author : sschueller : https://github.com/sschueller
6110;
6111
6112(function (global, factory) {
6113  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6114				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6115				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6116				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6117})(this, function (moment) {
6118  'use strict'; //! moment.js locale configuration
6119
6120  function processRelativeTime(number, withoutSuffix, key, isFuture) {
6121    var format = {
6122      m: ['eine Minute', 'einer Minute'],
6123      h: ['eine Stunde', 'einer Stunde'],
6124      d: ['ein Tag', 'einem Tag'],
6125      dd: [number + ' Tage', number + ' Tagen'],
6126      w: ['eine Woche', 'einer Woche'],
6127      M: ['ein Monat', 'einem Monat'],
6128      MM: [number + ' Monate', number + ' Monaten'],
6129      y: ['ein Jahr', 'einem Jahr'],
6130      yy: [number + ' Jahre', number + ' Jahren']
6131    };
6132    return withoutSuffix ? format[key][0] : format[key][1];
6133  }
6134
6135  var deCh = moment.defineLocale('de-ch', {
6136    months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6137    monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6138    monthsParseExact: true,
6139    weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6140    weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6141    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6142    weekdaysParseExact: true,
6143    longDateFormat: {
6144      LT: 'HH:mm',
6145      LTS: 'HH:mm:ss',
6146      L: 'DD.MM.YYYY',
6147      LL: 'D. MMMM YYYY',
6148      LLL: 'D. MMMM YYYY HH:mm',
6149      LLLL: 'dddd, D. MMMM YYYY HH:mm'
6150    },
6151    calendar: {
6152      sameDay: '[heute um] LT [Uhr]',
6153      sameElse: 'L',
6154      nextDay: '[morgen um] LT [Uhr]',
6155      nextWeek: 'dddd [um] LT [Uhr]',
6156      lastDay: '[gestern um] LT [Uhr]',
6157      lastWeek: '[letzten] dddd [um] LT [Uhr]'
6158    },
6159    relativeTime: {
6160      future: 'in %s',
6161      past: 'vor %s',
6162      s: 'ein paar Sekunden',
6163      ss: '%d Sekunden',
6164      m: processRelativeTime,
6165      mm: '%d Minuten',
6166      h: processRelativeTime,
6167      hh: '%d Stunden',
6168      d: processRelativeTime,
6169      dd: processRelativeTime,
6170      w: processRelativeTime,
6171      ww: '%d Wochen',
6172      M: processRelativeTime,
6173      MM: processRelativeTime,
6174      y: processRelativeTime,
6175      yy: processRelativeTime
6176    },
6177    dayOfMonthOrdinalParse: /\d{1,2}\./,
6178    ordinal: '%d.',
6179    week: {
6180      dow: 1,
6181      // Monday is the first day of the week.
6182      doy: 4 // The week that contains Jan 4th is the first week of the year.
6183
6184    }
6185  });
6186  return deCh;
6187});
6188
6189/***/ }),
6190
vendor: 4,112 bytes, lines 6191-6285
6191/***/ "../autobahn_client_core/node_modules/moment/locale/de.js":
6192/*!****************************************************************!*\
6193  !*** ../autobahn_client_core/node_modules/moment/locale/de.js ***!
6194  \****************************************************************/
6195/*! no static exports found */
6196/***/ (function(module, exports, __webpack_require__) {
6197
6198var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6199
6200//! moment.js locale configuration
6201//! locale : German [de]
6202//! author : lluchs : https://github.com/lluchs
6203//! author: Menelion Elensúle: https://github.com/Oire
6204//! author : Mikolaj Dadela : https://github.com/mik01aj
6205;
6206
6207(function (global, factory) {
6208  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6209				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6210				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6211				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6212})(this, function (moment) {
6213  'use strict'; //! moment.js locale configuration
6214
6215  function processRelativeTime(number, withoutSuffix, key, isFuture) {
6216    var format = {
6217      m: ['eine Minute', 'einer Minute'],
6218      h: ['eine Stunde', 'einer Stunde'],
6219      d: ['ein Tag', 'einem Tag'],
6220      dd: [number + ' Tage', number + ' Tagen'],
6221      w: ['eine Woche', 'einer Woche'],
6222      M: ['ein Monat', 'einem Monat'],
6223      MM: [number + ' Monate', number + ' Monaten'],
6224      y: ['ein Jahr', 'einem Jahr'],
6225      yy: [number + ' Jahre', number + ' Jahren']
6226    };
6227    return withoutSuffix ? format[key][0] : format[key][1];
6228  }
6229
6230  var de = moment.defineLocale('de', {
6231    months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6232    monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6233    monthsParseExact: true,
6234    weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6235    weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6236    weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6237    weekdaysParseExact: true,
6238    longDateFormat: {
6239      LT: 'HH:mm',
6240      LTS: 'HH:mm:ss',
6241      L: 'DD.MM.YYYY',
6242      LL: 'D. MMMM YYYY',
6243      LLL: 'D. MMMM YYYY HH:mm',
6244      LLLL: 'dddd, D. MMMM YYYY HH:mm'
6245    },
6246    calendar: {
6247      sameDay: '[heute um] LT [Uhr]',
6248      sameElse: 'L',
6249      nextDay: '[morgen um] LT [Uhr]',
6250      nextWeek: 'dddd [um] LT [Uhr]',
6251      lastDay: '[gestern um] LT [Uhr]',
6252      lastWeek: '[letzten] dddd [um] LT [Uhr]'
6253    },
6254    relativeTime: {
6255      future: 'in %s',
6256      past: 'vor %s',
6257      s: 'ein paar Sekunden',
6258      ss: '%d Sekunden',
6259      m: processRelativeTime,
6260      mm: '%d Minuten',
6261      h: processRelativeTime,
6262      hh: '%d Stunden',
6263      d: processRelativeTime,
6264      dd: processRelativeTime,
6265      w: processRelativeTime,
6266      ww: '%d Wochen',
6267      M: processRelativeTime,
6268      MM: processRelativeTime,
6269      y: processRelativeTime,
6270      yy: processRelativeTime
6271    },
6272    dayOfMonthOrdinalParse: /\d{1,2}\./,
6273    ordinal: '%d.',
6274    week: {
6275      dow: 1,
6276      // Monday is the first day of the week.
6277      doy: 4 // The week that contains Jan 4th is the first week of the year.
6278
6279    }
6280  });
6281  return de;
6282});
6283
6284/***/ }),
6285
vendor: 3,932 bytes, lines 6286-6376
6286/***/ "../autobahn_client_core/node_modules/moment/locale/dv.js":
6287/*!****************************************************************!*\
6288  !*** ../autobahn_client_core/node_modules/moment/locale/dv.js ***!
6289  \****************************************************************/
6290/*! no static exports found */
6291/***/ (function(module, exports, __webpack_require__) {
6292
6293var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6294
6295//! moment.js locale configuration
6296//! locale : Maldivian [dv]
6297//! author : Jawish Hameed : https://github.com/jawish
6298;
6299
6300(function (global, factory) {
6301  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6302				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6303				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6304				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6305})(this, function (moment) {
6306  'use strict'; //! moment.js locale configuration
6307
6308  var months = ['ޖެނުއަރީ', 'ފެބްރުއަރީ', 'މާރިޗު', 'އޭޕްރީލު', 'މޭ', 'ޖޫން', 'ޖުލައި', 'އޯގަސްޓު', 'ސެޕްޓެމްބަރު', 'އޮކްޓޯބަރު', 'ނޮވެމްބަރު', 'ޑިސެމްބަރު'],
6309      weekdays = ['އާދިއްތަ', 'ހޯމަ', 'އަންގާރަ', 'ބުދަ', 'ބުރާސްފަތި', 'ހުކުރު', 'ހޮނިހިރު'];
6310  var dv = moment.defineLocale('dv', {
6311    months: months,
6312    monthsShort: months,
6313    weekdays: weekdays,
6314    weekdaysShort: weekdays,
6315    weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
6316    longDateFormat: {
6317      LT: 'HH:mm',
6318      LTS: 'HH:mm:ss',
6319      L: 'D/M/YYYY',
6320      LL: 'D MMMM YYYY',
6321      LLL: 'D MMMM YYYY HH:mm',
6322      LLLL: 'dddd D MMMM YYYY HH:mm'
6323    },
6324    meridiemParse: /މކ|މފ/,
6325    isPM: function isPM(input) {
6326      return 'މފ' === input;
6327    },
6328    meridiem: function meridiem(hour, minute, isLower) {
6329      if (hour < 12) {
6330        return 'މކ';
6331      } else {
6332        return 'މފ';
6333      }
6334    },
6335    calendar: {
6336      sameDay: '[މިއަދު] LT',
6337      nextDay: '[މާދަމާ] LT',
6338      nextWeek: 'dddd LT',
6339      lastDay: '[އިއްޔެ] LT',
6340      lastWeek: '[ފާއިތުވި] dddd LT',
6341      sameElse: 'L'
6342    },
6343    relativeTime: {
6344      future: 'ތެރޭގައި %s',
6345      past: 'ކުރިން %s',
6346      s: 'ސިކުންތުކޮޅެއް',
6347      ss: 'd% ސިކުންތު',
6348      m: 'މިނިޓެއް',
6349      mm: 'މިނިޓު %d',
6350      h: 'ގަޑިއިރެއް',
6351      hh: 'ގަޑިއިރު %d',
6352      d: 'ދުވަހެއް',
6353      dd: 'ދުވަސް %d',
6354      M: 'މަހެއް',
6355      MM: 'މަސް %d',
6356      y: 'އަހަރެއް',
6357      yy: 'އަހަރު %d'
6358    },
6359    preparse: function preparse(string) {
6360      return string.replace(/،/g, ',');
6361    },
6362    postformat: function postformat(string) {
6363      return string.replace(/,/g, '،');
6364    },
6365    week: {
6366      dow: 7,
6367      // Sunday is the first day of the week.
6368      doy: 12 // The week that contains Jan 12th is the first week of the year.
6369
6370    }
6371  });
6372  return dv;
6373});
6374
6375/***/ }),
6376
vendor: 5,313 bytes, lines 6377-6494
6377/***/ "../autobahn_client_core/node_modules/moment/locale/el.js":
6378/*!****************************************************************!*\
6379  !*** ../autobahn_client_core/node_modules/moment/locale/el.js ***!
6380  \****************************************************************/
6381/*! no static exports found */
6382/***/ (function(module, exports, __webpack_require__) {
6383
6384var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6385
6386//! moment.js locale configuration
6387//! locale : Greek [el]
6388//! author : Aggelos Karalias : https://github.com/mehiel
6389;
6390
6391(function (global, factory) {
6392  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6393				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6394				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6395				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6396})(this, function (moment) {
6397  'use strict'; //! moment.js locale configuration
6398
6399  function isFunction(input) {
6400    return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
6401  }
6402
6403  var el = moment.defineLocale('el', {
6404    monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
6405    monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
6406    months: function months(momentToFormat, format) {
6407      if (!momentToFormat) {
6408        return this._monthsNominativeEl;
6409      } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) {
6410        // if there is a day number before 'MMMM'
6411        return this._monthsGenitiveEl[momentToFormat.month()];
6412      } else {
6413        return this._monthsNominativeEl[momentToFormat.month()];
6414      }
6415    },
6416    monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
6417    weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
6418    weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
6419    weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
6420    meridiem: function meridiem(hours, minutes, isLower) {
6421      if (hours > 11) {
6422        return isLower ? 'μμ' : 'ΜΜ';
6423      } else {
6424        return isLower ? 'πμ' : 'ΠΜ';
6425      }
6426    },
6427    isPM: function isPM(input) {
6428      return (input + '').toLowerCase()[0] === 'μ';
6429    },
6430    meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
6431    longDateFormat: {
6432      LT: 'h:mm A',
6433      LTS: 'h:mm:ss A',
6434      L: 'DD/MM/YYYY',
6435      LL: 'D MMMM YYYY',
6436      LLL: 'D MMMM YYYY h:mm A',
6437      LLLL: 'dddd, D MMMM YYYY h:mm A'
6438    },
6439    calendarEl: {
6440      sameDay: '[Σήμερα {}] LT',
6441      nextDay: '[Αύριο {}] LT',
6442      nextWeek: 'dddd [{}] LT',
6443      lastDay: '[Χθες {}] LT',
6444      lastWeek: function lastWeek() {
6445        switch (this.day()) {
6446          case 6:
6447            return '[το προηγούμενο] dddd [{}] LT';
6448
6449          default:
6450            return '[την προηγούμενη] dddd [{}] LT';
6451        }
6452      },
6453      sameElse: 'L'
6454    },
6455    calendar: function calendar(key, mom) {
6456      var output = this._calendarEl[key],
6457          hours = mom && mom.hours();
6458
6459      if (isFunction(output)) {
6460        output = output.apply(mom);
6461      }
6462
6463      return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
6464    },
6465    relativeTime: {
6466      future: 'σε %s',
6467      past: '%s πριν',
6468      s: 'λίγα δευτερόλεπτα',
6469      ss: '%d δευτερόλεπτα',
6470      m: 'ένα λεπτό',
6471      mm: '%d λεπτά',
6472      h: 'μία ώρα',
6473      hh: '%d ώρες',
6474      d: 'μία μέρα',
6475      dd: '%d μέρες',
6476      M: 'ένας μήνας',
6477      MM: '%d μήνες',
6478      y: 'ένας χρόνος',
6479      yy: '%d χρόνια'
6480    },
6481    dayOfMonthOrdinalParse: /\d{1,2}η/,
6482    ordinal: '%dη',
6483    week: {
6484      dow: 1,
6485      // Monday is the first day of the week.
6486      doy: 4 // The week that contains Jan 4st is the first week of the year.
6487
6488    }
6489  });
6490  return el;
6491});
6492
6493/***/ }),
6494
vendor: 3,461 bytes, lines 6495-6572
6495/***/ "../autobahn_client_core/node_modules/moment/locale/en-au.js":
6496/*!*******************************************************************!*\
6497  !*** ../autobahn_client_core/node_modules/moment/locale/en-au.js ***!
6498  \*******************************************************************/
6499/*! no static exports found */
6500/***/ (function(module, exports, __webpack_require__) {
6501
6502var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6503
6504//! moment.js locale configuration
6505//! locale : English (Australia) [en-au]
6506//! author : Jared Morse : https://github.com/jarcoal
6507;
6508
6509(function (global, factory) {
6510  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6511				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6512				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6513				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6514})(this, function (moment) {
6515  'use strict'; //! moment.js locale configuration
6516
6517  var enAu = moment.defineLocale('en-au', {
6518    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6519    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6520    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6521    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6522    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6523    longDateFormat: {
6524      LT: 'h:mm A',
6525      LTS: 'h:mm:ss A',
6526      L: 'DD/MM/YYYY',
6527      LL: 'D MMMM YYYY',
6528      LLL: 'D MMMM YYYY h:mm A',
6529      LLLL: 'dddd, D MMMM YYYY h:mm A'
6530    },
6531    calendar: {
6532      sameDay: '[Today at] LT',
6533      nextDay: '[Tomorrow at] LT',
6534      nextWeek: 'dddd [at] LT',
6535      lastDay: '[Yesterday at] LT',
6536      lastWeek: '[Last] dddd [at] LT',
6537      sameElse: 'L'
6538    },
6539    relativeTime: {
6540      future: 'in %s',
6541      past: '%s ago',
6542      s: 'a few seconds',
6543      ss: '%d seconds',
6544      m: 'a minute',
6545      mm: '%d minutes',
6546      h: 'an hour',
6547      hh: '%d hours',
6548      d: 'a day',
6549      dd: '%d days',
6550      M: 'a month',
6551      MM: '%d months',
6552      y: 'a year',
6553      yy: '%d years'
6554    },
6555    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6556    ordinal: function ordinal(number) {
6557      var b = number % 10,
6558          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
6559      return number + output;
6560    },
6561    week: {
6562      dow: 0,
6563      // Sunday is the first day of the week.
6564      doy: 4 // The week that contains Jan 4th is the first week of the year.
6565
6566    }
6567  });
6568  return enAu;
6569});
6570
6571/***/ }),
6572
vendor: 3,308 bytes, lines 6573-6644
6573/***/ "../autobahn_client_core/node_modules/moment/locale/en-ca.js":
6574/*!*******************************************************************!*\
6575  !*** ../autobahn_client_core/node_modules/moment/locale/en-ca.js ***!
6576  \*******************************************************************/
6577/*! no static exports found */
6578/***/ (function(module, exports, __webpack_require__) {
6579
6580var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6581
6582//! moment.js locale configuration
6583//! locale : English (Canada) [en-ca]
6584//! author : Jonathan Abourbih : https://github.com/jonbca
6585;
6586
6587(function (global, factory) {
6588  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6589				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6590				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6591				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6592})(this, function (moment) {
6593  'use strict'; //! moment.js locale configuration
6594
6595  var enCa = moment.defineLocale('en-ca', {
6596    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6597    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6598    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6599    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6600    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6601    longDateFormat: {
6602      LT: 'h:mm A',
6603      LTS: 'h:mm:ss A',
6604      L: 'YYYY-MM-DD',
6605      LL: 'MMMM D, YYYY',
6606      LLL: 'MMMM D, YYYY h:mm A',
6607      LLLL: 'dddd, MMMM D, YYYY h:mm A'
6608    },
6609    calendar: {
6610      sameDay: '[Today at] LT',
6611      nextDay: '[Tomorrow at] LT',
6612      nextWeek: 'dddd [at] LT',
6613      lastDay: '[Yesterday at] LT',
6614      lastWeek: '[Last] dddd [at] LT',
6615      sameElse: 'L'
6616    },
6617    relativeTime: {
6618      future: 'in %s',
6619      past: '%s ago',
6620      s: 'a few seconds',
6621      ss: '%d seconds',
6622      m: 'a minute',
6623      mm: '%d minutes',
6624      h: 'an hour',
6625      hh: '%d hours',
6626      d: 'a day',
6627      dd: '%d days',
6628      M: 'a month',
6629      MM: '%d months',
6630      y: 'a year',
6631      yy: '%d years'
6632    },
6633    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6634    ordinal: function ordinal(number) {
6635      var b = number % 10,
6636          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
6637      return number + output;
6638    }
6639  });
6640  return enCa;
6641});
6642
6643/***/ }),
6644
vendor: 3,467 bytes, lines 6645-6722
6645/***/ "../autobahn_client_core/node_modules/moment/locale/en-gb.js":
6646/*!*******************************************************************!*\
6647  !*** ../autobahn_client_core/node_modules/moment/locale/en-gb.js ***!
6648  \*******************************************************************/
6649/*! no static exports found */
6650/***/ (function(module, exports, __webpack_require__) {
6651
6652var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6653
6654//! moment.js locale configuration
6655//! locale : English (United Kingdom) [en-gb]
6656//! author : Chris Gedrim : https://github.com/chrisgedrim
6657;
6658
6659(function (global, factory) {
6660  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6661				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6662				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6663				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6664})(this, function (moment) {
6665  'use strict'; //! moment.js locale configuration
6666
6667  var enGb = moment.defineLocale('en-gb', {
6668    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6669    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6670    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6671    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6672    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6673    longDateFormat: {
6674      LT: 'HH:mm',
6675      LTS: 'HH:mm:ss',
6676      L: 'DD/MM/YYYY',
6677      LL: 'D MMMM YYYY',
6678      LLL: 'D MMMM YYYY HH:mm',
6679      LLLL: 'dddd, D MMMM YYYY HH:mm'
6680    },
6681    calendar: {
6682      sameDay: '[Today at] LT',
6683      nextDay: '[Tomorrow at] LT',
6684      nextWeek: 'dddd [at] LT',
6685      lastDay: '[Yesterday at] LT',
6686      lastWeek: '[Last] dddd [at] LT',
6687      sameElse: 'L'
6688    },
6689    relativeTime: {
6690      future: 'in %s',
6691      past: '%s ago',
6692      s: 'a few seconds',
6693      ss: '%d seconds',
6694      m: 'a minute',
6695      mm: '%d minutes',
6696      h: 'an hour',
6697      hh: '%d hours',
6698      d: 'a day',
6699      dd: '%d days',
6700      M: 'a month',
6701      MM: '%d months',
6702      y: 'a year',
6703      yy: '%d years'
6704    },
6705    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6706    ordinal: function ordinal(number) {
6707      var b = number % 10,
6708          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
6709      return number + output;
6710    },
6711    week: {
6712      dow: 1,
6713      // Monday is the first day of the week.
6714      doy: 4 // The week that contains Jan 4th is the first week of the year.
6715
6716    }
6717  });
6718  return enGb;
6719});
6720
6721/***/ }),
6722
vendor: 3,465 bytes, lines 6723-6800
6723/***/ "../autobahn_client_core/node_modules/moment/locale/en-ie.js":
6724/*!*******************************************************************!*\
6725  !*** ../autobahn_client_core/node_modules/moment/locale/en-ie.js ***!
6726  \*******************************************************************/
6727/*! no static exports found */
6728/***/ (function(module, exports, __webpack_require__) {
6729
6730var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6731
6732//! moment.js locale configuration
6733//! locale : English (Ireland) [en-ie]
6734//! author : Chris Cartlidge : https://github.com/chriscartlidge
6735;
6736
6737(function (global, factory) {
6738  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6739				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6740				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6741				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6742})(this, function (moment) {
6743  'use strict'; //! moment.js locale configuration
6744
6745  var enIe = moment.defineLocale('en-ie', {
6746    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6747    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6748    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6749    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6750    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6751    longDateFormat: {
6752      LT: 'HH:mm',
6753      LTS: 'HH:mm:ss',
6754      L: 'DD/MM/YYYY',
6755      LL: 'D MMMM YYYY',
6756      LLL: 'D MMMM YYYY HH:mm',
6757      LLLL: 'dddd D MMMM YYYY HH:mm'
6758    },
6759    calendar: {
6760      sameDay: '[Today at] LT',
6761      nextDay: '[Tomorrow at] LT',
6762      nextWeek: 'dddd [at] LT',
6763      lastDay: '[Yesterday at] LT',
6764      lastWeek: '[Last] dddd [at] LT',
6765      sameElse: 'L'
6766    },
6767    relativeTime: {
6768      future: 'in %s',
6769      past: '%s ago',
6770      s: 'a few seconds',
6771      ss: '%d seconds',
6772      m: 'a minute',
6773      mm: '%d minutes',
6774      h: 'an hour',
6775      hh: '%d hours',
6776      d: 'a day',
6777      dd: '%d days',
6778      M: 'a month',
6779      MM: '%d months',
6780      y: 'a year',
6781      yy: '%d years'
6782    },
6783    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6784    ordinal: function ordinal(number) {
6785      var b = number % 10,
6786          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
6787      return number + output;
6788    },
6789    week: {
6790      dow: 1,
6791      // Monday is the first day of the week.
6792      doy: 4 // The week that contains Jan 4th is the first week of the year.
6793
6794    }
6795  });
6796  return enIe;
6797});
6798
6799/***/ }),
6800
vendor: 3,301 bytes, lines 6801-6872
6801/***/ "../autobahn_client_core/node_modules/moment/locale/en-il.js":
6802/*!*******************************************************************!*\
6803  !*** ../autobahn_client_core/node_modules/moment/locale/en-il.js ***!
6804  \*******************************************************************/
6805/*! no static exports found */
6806/***/ (function(module, exports, __webpack_require__) {
6807
6808var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6809
6810//! moment.js locale configuration
6811//! locale : English (Israel) [en-il]
6812//! author : Chris Gedrim : https://github.com/chrisgedrim
6813;
6814
6815(function (global, factory) {
6816  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6817				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6818				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6819				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6820})(this, function (moment) {
6821  'use strict'; //! moment.js locale configuration
6822
6823  var enIl = moment.defineLocale('en-il', {
6824    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6825    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6826    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6827    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6828    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6829    longDateFormat: {
6830      LT: 'HH:mm',
6831      LTS: 'HH:mm:ss',
6832      L: 'DD/MM/YYYY',
6833      LL: 'D MMMM YYYY',
6834      LLL: 'D MMMM YYYY HH:mm',
6835      LLLL: 'dddd, D MMMM YYYY HH:mm'
6836    },
6837    calendar: {
6838      sameDay: '[Today at] LT',
6839      nextDay: '[Tomorrow at] LT',
6840      nextWeek: 'dddd [at] LT',
6841      lastDay: '[Yesterday at] LT',
6842      lastWeek: '[Last] dddd [at] LT',
6843      sameElse: 'L'
6844    },
6845    relativeTime: {
6846      future: 'in %s',
6847      past: '%s ago',
6848      s: 'a few seconds',
6849      ss: '%d seconds',
6850      m: 'a minute',
6851      mm: '%d minutes',
6852      h: 'an hour',
6853      hh: '%d hours',
6854      d: 'a day',
6855      dd: '%d days',
6856      M: 'a month',
6857      MM: '%d months',
6858      y: 'a year',
6859      yy: '%d years'
6860    },
6861    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6862    ordinal: function ordinal(number) {
6863      var b = number % 10,
6864          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
6865      return number + output;
6866    }
6867  });
6868  return enIl;
6869});
6870
6871/***/ }),
6872
vendor: 3,461 bytes, lines 6873-6950
6873/***/ "../autobahn_client_core/node_modules/moment/locale/en-in.js":
6874/*!*******************************************************************!*\
6875  !*** ../autobahn_client_core/node_modules/moment/locale/en-in.js ***!
6876  \*******************************************************************/
6877/*! no static exports found */
6878/***/ (function(module, exports, __webpack_require__) {
6879
6880var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6881
6882//! moment.js locale configuration
6883//! locale : English (India) [en-in]
6884//! author : Jatin Agrawal : https://github.com/jatinag22
6885;
6886
6887(function (global, factory) {
6888  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6889				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6890				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6891				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6892})(this, function (moment) {
6893  'use strict'; //! moment.js locale configuration
6894
6895  var enIn = moment.defineLocale('en-in', {
6896    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6897    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6898    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6899    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6900    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6901    longDateFormat: {
6902      LT: 'h:mm A',
6903      LTS: 'h:mm:ss A',
6904      L: 'DD/MM/YYYY',
6905      LL: 'D MMMM YYYY',
6906      LLL: 'D MMMM YYYY h:mm A',
6907      LLLL: 'dddd, D MMMM YYYY h:mm A'
6908    },
6909    calendar: {
6910      sameDay: '[Today at] LT',
6911      nextDay: '[Tomorrow at] LT',
6912      nextWeek: 'dddd [at] LT',
6913      lastDay: '[Yesterday at] LT',
6914      lastWeek: '[Last] dddd [at] LT',
6915      sameElse: 'L'
6916    },
6917    relativeTime: {
6918      future: 'in %s',
6919      past: '%s ago',
6920      s: 'a few seconds',
6921      ss: '%d seconds',
6922      m: 'a minute',
6923      mm: '%d minutes',
6924      h: 'an hour',
6925      hh: '%d hours',
6926      d: 'a day',
6927      dd: '%d days',
6928      M: 'a month',
6929      MM: '%d months',
6930      y: 'a year',
6931      yy: '%d years'
6932    },
6933    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6934    ordinal: function ordinal(number) {
6935      var b = number % 10,
6936          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
6937      return number + output;
6938    },
6939    week: {
6940      dow: 0,
6941      // Sunday is the first day of the week.
6942      doy: 6 // The week that contains Jan 1st is the first week of the year.
6943
6944    }
6945  });
6946  return enIn;
6947});
6948
6949/***/ }),
6950
vendor: 3,470 bytes, lines 6951-7028
6951/***/ "../autobahn_client_core/node_modules/moment/locale/en-nz.js":
6952/*!*******************************************************************!*\
6953  !*** ../autobahn_client_core/node_modules/moment/locale/en-nz.js ***!
6954  \*******************************************************************/
6955/*! no static exports found */
6956/***/ (function(module, exports, __webpack_require__) {
6957
6958var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
6959
6960//! moment.js locale configuration
6961//! locale : English (New Zealand) [en-nz]
6962//! author : Luke McGregor : https://github.com/lukemcgregor
6963;
6964
6965(function (global, factory) {
6966  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
6967				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
6968				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
6969				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
6970})(this, function (moment) {
6971  'use strict'; //! moment.js locale configuration
6972
6973  var enNz = moment.defineLocale('en-nz', {
6974    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6975    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6976    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6977    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6978    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6979    longDateFormat: {
6980      LT: 'h:mm A',
6981      LTS: 'h:mm:ss A',
6982      L: 'DD/MM/YYYY',
6983      LL: 'D MMMM YYYY',
6984      LLL: 'D MMMM YYYY h:mm A',
6985      LLLL: 'dddd, D MMMM YYYY h:mm A'
6986    },
6987    calendar: {
6988      sameDay: '[Today at] LT',
6989      nextDay: '[Tomorrow at] LT',
6990      nextWeek: 'dddd [at] LT',
6991      lastDay: '[Yesterday at] LT',
6992      lastWeek: '[Last] dddd [at] LT',
6993      sameElse: 'L'
6994    },
6995    relativeTime: {
6996      future: 'in %s',
6997      past: '%s ago',
6998      s: 'a few seconds',
6999      ss: '%d seconds',
7000      m: 'a minute',
7001      mm: '%d minutes',
7002      h: 'an hour',
7003      hh: '%d hours',
7004      d: 'a day',
7005      dd: '%d days',
7006      M: 'a month',
7007      MM: '%d months',
7008      y: 'a year',
7009      yy: '%d years'
7010    },
7011    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
7012    ordinal: function ordinal(number) {
7013      var b = number % 10,
7014          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
7015      return number + output;
7016    },
7017    week: {
7018      dow: 1,
7019      // Monday is the first day of the week.
7020      doy: 4 // The week that contains Jan 4th is the first week of the year.
7021
7022    }
7023  });
7024  return enNz;
7025});
7026
7027/***/ }),
7028
vendor: 3,479 bytes, lines 7029-7106
7029/***/ "../autobahn_client_core/node_modules/moment/locale/en-sg.js":
7030/*!*******************************************************************!*\
7031  !*** ../autobahn_client_core/node_modules/moment/locale/en-sg.js ***!
7032  \*******************************************************************/
7033/*! no static exports found */
7034/***/ (function(module, exports, __webpack_require__) {
7035
7036var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7037
7038//! moment.js locale configuration
7039//! locale : English (Singapore) [en-sg]
7040//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension
7041;
7042
7043(function (global, factory) {
7044  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7045				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7046				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7047				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7048})(this, function (moment) {
7049  'use strict'; //! moment.js locale configuration
7050
7051  var enSg = moment.defineLocale('en-sg', {
7052    months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
7053    monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
7054    weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
7055    weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
7056    weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
7057    longDateFormat: {
7058      LT: 'HH:mm',
7059      LTS: 'HH:mm:ss',
7060      L: 'DD/MM/YYYY',
7061      LL: 'D MMMM YYYY',
7062      LLL: 'D MMMM YYYY HH:mm',
7063      LLLL: 'dddd, D MMMM YYYY HH:mm'
7064    },
7065    calendar: {
7066      sameDay: '[Today at] LT',
7067      nextDay: '[Tomorrow at] LT',
7068      nextWeek: 'dddd [at] LT',
7069      lastDay: '[Yesterday at] LT',
7070      lastWeek: '[Last] dddd [at] LT',
7071      sameElse: 'L'
7072    },
7073    relativeTime: {
7074      future: 'in %s',
7075      past: '%s ago',
7076      s: 'a few seconds',
7077      ss: '%d seconds',
7078      m: 'a minute',
7079      mm: '%d minutes',
7080      h: 'an hour',
7081      hh: '%d hours',
7082      d: 'a day',
7083      dd: '%d days',
7084      M: 'a month',
7085      MM: '%d months',
7086      y: 'a year',
7087      yy: '%d years'
7088    },
7089    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
7090    ordinal: function ordinal(number) {
7091      var b = number % 10,
7092          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
7093      return number + output;
7094    },
7095    week: {
7096      dow: 1,
7097      // Monday is the first day of the week.
7098      doy: 4 // The week that contains Jan 4th is the first week of the year.
7099
7100    }
7101  });
7102  return enSg;
7103});
7104
7105/***/ }),
7106
vendor: 3,945 bytes, lines 7107-7196
7107/***/ "../autobahn_client_core/node_modules/moment/locale/eo.js":
7108/*!****************************************************************!*\
7109  !*** ../autobahn_client_core/node_modules/moment/locale/eo.js ***!
7110  \****************************************************************/
7111/*! no static exports found */
7112/***/ (function(module, exports, __webpack_require__) {
7113
7114var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7115
7116//! moment.js locale configuration
7117//! locale : Esperanto [eo]
7118//! author : Colin Dean : https://github.com/colindean
7119//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia
7120//! comment : miestasmia corrected the translation by colindean
7121//! comment : Vivakvo corrected the translation by colindean and miestasmia
7122;
7123
7124(function (global, factory) {
7125  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7126				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7127				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7128				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7129})(this, function (moment) {
7130  'use strict'; //! moment.js locale configuration
7131
7132  var eo = moment.defineLocale('eo', {
7133    months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'),
7134    monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aÅ­g_sept_okt_nov_dec'.split('_'),
7135    weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
7136    weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
7137    weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
7138    longDateFormat: {
7139      LT: 'HH:mm',
7140      LTS: 'HH:mm:ss',
7141      L: 'YYYY-MM-DD',
7142      LL: '[la] D[-an de] MMMM, YYYY',
7143      LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
7144      LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
7145      llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm'
7146    },
7147    meridiemParse: /[ap]\.t\.m/i,
7148    isPM: function isPM(input) {
7149      return input.charAt(0).toLowerCase() === 'p';
7150    },
7151    meridiem: function meridiem(hours, minutes, isLower) {
7152      if (hours > 11) {
7153        return isLower ? 'p.t.m.' : 'P.T.M.';
7154      } else {
7155        return isLower ? 'a.t.m.' : 'A.T.M.';
7156      }
7157    },
7158    calendar: {
7159      sameDay: '[HodiaÅ­ je] LT',
7160      nextDay: '[MorgaÅ­ je] LT',
7161      nextWeek: 'dddd[n je] LT',
7162      lastDay: '[HieraÅ­ je] LT',
7163      lastWeek: '[pasintan] dddd[n je] LT',
7164      sameElse: 'L'
7165    },
7166    relativeTime: {
7167      future: 'post %s',
7168      past: 'antaÅ­ %s',
7169      s: 'kelkaj sekundoj',
7170      ss: '%d sekundoj',
7171      m: 'unu minuto',
7172      mm: '%d minutoj',
7173      h: 'unu horo',
7174      hh: '%d horoj',
7175      d: 'unu tago',
7176      //ne 'diurno', ĉar estas uzita por proksimumo
7177      dd: '%d tagoj',
7178      M: 'unu monato',
7179      MM: '%d monatoj',
7180      y: 'unu jaro',
7181      yy: '%d jaroj'
7182    },
7183    dayOfMonthOrdinalParse: /\d{1,2}a/,
7184    ordinal: '%da',
7185    week: {
7186      dow: 1,
7187      // Monday is the first day of the week.
7188      doy: 7 // The week that contains Jan 7th is the first week of the year.
7189
7190    }
7191  });
7192  return eo;
7193});
7194
7195/***/ }),
7196
vendor: 4,847 bytes, lines 7197-7302
7197/***/ "../autobahn_client_core/node_modules/moment/locale/es-do.js":
7198/*!*******************************************************************!*\
7199  !*** ../autobahn_client_core/node_modules/moment/locale/es-do.js ***!
7200  \*******************************************************************/
7201/*! no static exports found */
7202/***/ (function(module, exports, __webpack_require__) {
7203
7204var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7205
7206//! moment.js locale configuration
7207//! locale : Spanish (Dominican Republic) [es-do]
7208;
7209
7210(function (global, factory) {
7211  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7212				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7213				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7214				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7215})(this, function (moment) {
7216  'use strict'; //! moment.js locale configuration
7217
7218  var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7219      _monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
7220      monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],
7221      monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
7222
7223  var esDo = moment.defineLocale('es-do', {
7224    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7225    monthsShort: function monthsShort(m, format) {
7226      if (!m) {
7227        return monthsShortDot;
7228      } else if (/-MMM-/.test(format)) {
7229        return _monthsShort[m.month()];
7230      } else {
7231        return monthsShortDot[m.month()];
7232      }
7233    },
7234    monthsRegex: monthsRegex,
7235    monthsShortRegex: monthsRegex,
7236    monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7237    monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7238    monthsParse: monthsParse,
7239    longMonthsParse: monthsParse,
7240    shortMonthsParse: monthsParse,
7241    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7242    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7243    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7244    weekdaysParseExact: true,
7245    longDateFormat: {
7246      LT: 'h:mm A',
7247      LTS: 'h:mm:ss A',
7248      L: 'DD/MM/YYYY',
7249      LL: 'D [de] MMMM [de] YYYY',
7250      LLL: 'D [de] MMMM [de] YYYY h:mm A',
7251      LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'
7252    },
7253    calendar: {
7254      sameDay: function sameDay() {
7255        return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7256      },
7257      nextDay: function nextDay() {
7258        return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7259      },
7260      nextWeek: function nextWeek() {
7261        return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7262      },
7263      lastDay: function lastDay() {
7264        return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7265      },
7266      lastWeek: function lastWeek() {
7267        return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7268      },
7269      sameElse: 'L'
7270    },
7271    relativeTime: {
7272      future: 'en %s',
7273      past: 'hace %s',
7274      s: 'unos segundos',
7275      ss: '%d segundos',
7276      m: 'un minuto',
7277      mm: '%d minutos',
7278      h: 'una hora',
7279      hh: '%d horas',
7280      d: 'un día',
7281      dd: '%d días',
7282      w: 'una semana',
7283      ww: '%d semanas',
7284      M: 'un mes',
7285      MM: '%d meses',
7286      y: 'un año',
7287      yy: '%d años'
7288    },
7289    dayOfMonthOrdinalParse: /\d{1,2}º/,
7290    ordinal: '%dº',
7291    week: {
7292      dow: 1,
7293      // Monday is the first day of the week.
7294      doy: 4 // The week that contains Jan 4th is the first week of the year.
7295
7296    }
7297  });
7298  return esDo;
7299});
7300
7301/***/ }),
7302
vendor: 4,916 bytes, lines 7303-7410
7303/***/ "../autobahn_client_core/node_modules/moment/locale/es-mx.js":
7304/*!*******************************************************************!*\
7305  !*** ../autobahn_client_core/node_modules/moment/locale/es-mx.js ***!
7306  \*******************************************************************/
7307/*! no static exports found */
7308/***/ (function(module, exports, __webpack_require__) {
7309
7310var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7311
7312//! moment.js locale configuration
7313//! locale : Spanish (Mexico) [es-mx]
7314//! author : JC Franco : https://github.com/jcfranco
7315;
7316
7317(function (global, factory) {
7318  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7319				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7320				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7321				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7322})(this, function (moment) {
7323  'use strict'; //! moment.js locale configuration
7324
7325  var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7326      _monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
7327      monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],
7328      monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
7329
7330  var esMx = moment.defineLocale('es-mx', {
7331    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7332    monthsShort: function monthsShort(m, format) {
7333      if (!m) {
7334        return monthsShortDot;
7335      } else if (/-MMM-/.test(format)) {
7336        return _monthsShort[m.month()];
7337      } else {
7338        return monthsShortDot[m.month()];
7339      }
7340    },
7341    monthsRegex: monthsRegex,
7342    monthsShortRegex: monthsRegex,
7343    monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7344    monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7345    monthsParse: monthsParse,
7346    longMonthsParse: monthsParse,
7347    shortMonthsParse: monthsParse,
7348    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7349    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7350    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7351    weekdaysParseExact: true,
7352    longDateFormat: {
7353      LT: 'H:mm',
7354      LTS: 'H:mm:ss',
7355      L: 'DD/MM/YYYY',
7356      LL: 'D [de] MMMM [de] YYYY',
7357      LLL: 'D [de] MMMM [de] YYYY H:mm',
7358      LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
7359    },
7360    calendar: {
7361      sameDay: function sameDay() {
7362        return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7363      },
7364      nextDay: function nextDay() {
7365        return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7366      },
7367      nextWeek: function nextWeek() {
7368        return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7369      },
7370      lastDay: function lastDay() {
7371        return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7372      },
7373      lastWeek: function lastWeek() {
7374        return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7375      },
7376      sameElse: 'L'
7377    },
7378    relativeTime: {
7379      future: 'en %s',
7380      past: 'hace %s',
7381      s: 'unos segundos',
7382      ss: '%d segundos',
7383      m: 'un minuto',
7384      mm: '%d minutos',
7385      h: 'una hora',
7386      hh: '%d horas',
7387      d: 'un día',
7388      dd: '%d días',
7389      w: 'una semana',
7390      ww: '%d semanas',
7391      M: 'un mes',
7392      MM: '%d meses',
7393      y: 'un año',
7394      yy: '%d años'
7395    },
7396    dayOfMonthOrdinalParse: /\d{1,2}º/,
7397    ordinal: '%dº',
7398    week: {
7399      dow: 0,
7400      // Sunday is the first day of the week.
7401      doy: 4 // The week that contains Jan 4th is the first week of the year.
7402
7403    },
7404    invalidDate: 'Fecha inválida'
7405  });
7406  return esMx;
7407});
7408
7409/***/ }),
7410
vendor: 4,944 bytes, lines 7411-7518
7411/***/ "../autobahn_client_core/node_modules/moment/locale/es-us.js":
7412/*!*******************************************************************!*\
7413  !*** ../autobahn_client_core/node_modules/moment/locale/es-us.js ***!
7414  \*******************************************************************/
7415/*! no static exports found */
7416/***/ (function(module, exports, __webpack_require__) {
7417
7418var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7419
7420//! moment.js locale configuration
7421//! locale : Spanish (United States) [es-us]
7422//! author : bustta : https://github.com/bustta
7423//! author : chrisrodz : https://github.com/chrisrodz
7424;
7425
7426(function (global, factory) {
7427  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7428				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7429				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7430				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7431})(this, function (moment) {
7432  'use strict'; //! moment.js locale configuration
7433
7434  var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7435      _monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
7436      monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],
7437      monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
7438
7439  var esUs = moment.defineLocale('es-us', {
7440    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7441    monthsShort: function monthsShort(m, format) {
7442      if (!m) {
7443        return monthsShortDot;
7444      } else if (/-MMM-/.test(format)) {
7445        return _monthsShort[m.month()];
7446      } else {
7447        return monthsShortDot[m.month()];
7448      }
7449    },
7450    monthsRegex: monthsRegex,
7451    monthsShortRegex: monthsRegex,
7452    monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7453    monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7454    monthsParse: monthsParse,
7455    longMonthsParse: monthsParse,
7456    shortMonthsParse: monthsParse,
7457    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7458    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7459    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7460    weekdaysParseExact: true,
7461    longDateFormat: {
7462      LT: 'h:mm A',
7463      LTS: 'h:mm:ss A',
7464      L: 'MM/DD/YYYY',
7465      LL: 'D [de] MMMM [de] YYYY',
7466      LLL: 'D [de] MMMM [de] YYYY h:mm A',
7467      LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A'
7468    },
7469    calendar: {
7470      sameDay: function sameDay() {
7471        return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7472      },
7473      nextDay: function nextDay() {
7474        return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7475      },
7476      nextWeek: function nextWeek() {
7477        return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7478      },
7479      lastDay: function lastDay() {
7480        return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7481      },
7482      lastWeek: function lastWeek() {
7483        return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7484      },
7485      sameElse: 'L'
7486    },
7487    relativeTime: {
7488      future: 'en %s',
7489      past: 'hace %s',
7490      s: 'unos segundos',
7491      ss: '%d segundos',
7492      m: 'un minuto',
7493      mm: '%d minutos',
7494      h: 'una hora',
7495      hh: '%d horas',
7496      d: 'un día',
7497      dd: '%d días',
7498      w: 'una semana',
7499      ww: '%d semanas',
7500      M: 'un mes',
7501      MM: '%d meses',
7502      y: 'un año',
7503      yy: '%d años'
7504    },
7505    dayOfMonthOrdinalParse: /\d{1,2}º/,
7506    ordinal: '%dº',
7507    week: {
7508      dow: 0,
7509      // Sunday is the first day of the week.
7510      doy: 6 // The week that contains Jan 6th is the first week of the year.
7511
7512    }
7513  });
7514  return esUs;
7515});
7516
7517/***/ }),
7518
vendor: 4,888 bytes, lines 7519-7626
7519/***/ "../autobahn_client_core/node_modules/moment/locale/es.js":
7520/*!****************************************************************!*\
7521  !*** ../autobahn_client_core/node_modules/moment/locale/es.js ***!
7522  \****************************************************************/
7523/*! no static exports found */
7524/***/ (function(module, exports, __webpack_require__) {
7525
7526var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7527
7528//! moment.js locale configuration
7529//! locale : Spanish [es]
7530//! author : Julio Napurí : https://github.com/julionc
7531;
7532
7533(function (global, factory) {
7534  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7535				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7536				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7537				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7538})(this, function (moment) {
7539  'use strict'; //! moment.js locale configuration
7540
7541  var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7542      _monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
7543      monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i],
7544      monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
7545
7546  var es = moment.defineLocale('es', {
7547    months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7548    monthsShort: function monthsShort(m, format) {
7549      if (!m) {
7550        return monthsShortDot;
7551      } else if (/-MMM-/.test(format)) {
7552        return _monthsShort[m.month()];
7553      } else {
7554        return monthsShortDot[m.month()];
7555      }
7556    },
7557    monthsRegex: monthsRegex,
7558    monthsShortRegex: monthsRegex,
7559    monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7560    monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7561    monthsParse: monthsParse,
7562    longMonthsParse: monthsParse,
7563    shortMonthsParse: monthsParse,
7564    weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7565    weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7566    weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7567    weekdaysParseExact: true,
7568    longDateFormat: {
7569      LT: 'H:mm',
7570      LTS: 'H:mm:ss',
7571      L: 'DD/MM/YYYY',
7572      LL: 'D [de] MMMM [de] YYYY',
7573      LLL: 'D [de] MMMM [de] YYYY H:mm',
7574      LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
7575    },
7576    calendar: {
7577      sameDay: function sameDay() {
7578        return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7579      },
7580      nextDay: function nextDay() {
7581        return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7582      },
7583      nextWeek: function nextWeek() {
7584        return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7585      },
7586      lastDay: function lastDay() {
7587        return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7588      },
7589      lastWeek: function lastWeek() {
7590        return '[el] dddd [pasado a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
7591      },
7592      sameElse: 'L'
7593    },
7594    relativeTime: {
7595      future: 'en %s',
7596      past: 'hace %s',
7597      s: 'unos segundos',
7598      ss: '%d segundos',
7599      m: 'un minuto',
7600      mm: '%d minutos',
7601      h: 'una hora',
7602      hh: '%d horas',
7603      d: 'un día',
7604      dd: '%d días',
7605      w: 'una semana',
7606      ww: '%d semanas',
7607      M: 'un mes',
7608      MM: '%d meses',
7609      y: 'un año',
7610      yy: '%d años'
7611    },
7612    dayOfMonthOrdinalParse: /\d{1,2}º/,
7613    ordinal: '%dº',
7614    week: {
7615      dow: 1,
7616      // Monday is the first day of the week.
7617      doy: 4 // The week that contains Jan 4th is the first week of the year.
7618
7619    },
7620    invalidDate: 'Fecha inválida'
7621  });
7622  return es;
7623});
7624
7625/***/ }),
7626
vendor: 4,181 bytes, lines 7627-7723
7627/***/ "../autobahn_client_core/node_modules/moment/locale/et.js":
7628/*!****************************************************************!*\
7629  !*** ../autobahn_client_core/node_modules/moment/locale/et.js ***!
7630  \****************************************************************/
7631/*! no static exports found */
7632/***/ (function(module, exports, __webpack_require__) {
7633
7634var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7635
7636//! moment.js locale configuration
7637//! locale : Estonian [et]
7638//! author : Henry Kehlmann : https://github.com/madhenry
7639//! improvements : Illimar Tambek : https://github.com/ragulka
7640;
7641
7642(function (global, factory) {
7643  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7644				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7645				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7646				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7647})(this, function (moment) {
7648  'use strict'; //! moment.js locale configuration
7649
7650  function processRelativeTime(number, withoutSuffix, key, isFuture) {
7651    var format = {
7652      s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
7653      ss: [number + 'sekundi', number + 'sekundit'],
7654      m: ['ühe minuti', 'üks minut'],
7655      mm: [number + ' minuti', number + ' minutit'],
7656      h: ['ühe tunni', 'tund aega', 'üks tund'],
7657      hh: [number + ' tunni', number + ' tundi'],
7658      d: ['ühe päeva', 'üks päev'],
7659      M: ['kuu aja', 'kuu aega', 'üks kuu'],
7660      MM: [number + ' kuu', number + ' kuud'],
7661      y: ['ühe aasta', 'aasta', 'üks aasta'],
7662      yy: [number + ' aasta', number + ' aastat']
7663    };
7664
7665    if (withoutSuffix) {
7666      return format[key][2] ? format[key][2] : format[key][1];
7667    }
7668
7669    return isFuture ? format[key][0] : format[key][1];
7670  }
7671
7672  var et = moment.defineLocale('et', {
7673    months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
7674    monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
7675    weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
7676    weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
7677    weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
7678    longDateFormat: {
7679      LT: 'H:mm',
7680      LTS: 'H:mm:ss',
7681      L: 'DD.MM.YYYY',
7682      LL: 'D. MMMM YYYY',
7683      LLL: 'D. MMMM YYYY H:mm',
7684      LLLL: 'dddd, D. MMMM YYYY H:mm'
7685    },
7686    calendar: {
7687      sameDay: '[Täna,] LT',
7688      nextDay: '[Homme,] LT',
7689      nextWeek: '[Järgmine] dddd LT',
7690      lastDay: '[Eile,] LT',
7691      lastWeek: '[Eelmine] dddd LT',
7692      sameElse: 'L'
7693    },
7694    relativeTime: {
7695      future: '%s pärast',
7696      past: '%s tagasi',
7697      s: processRelativeTime,
7698      ss: processRelativeTime,
7699      m: processRelativeTime,
7700      mm: processRelativeTime,
7701      h: processRelativeTime,
7702      hh: processRelativeTime,
7703      d: processRelativeTime,
7704      dd: '%d päeva',
7705      M: processRelativeTime,
7706      MM: processRelativeTime,
7707      y: processRelativeTime,
7708      yy: processRelativeTime
7709    },
7710    dayOfMonthOrdinalParse: /\d{1,2}\./,
7711    ordinal: '%d.',
7712    week: {
7713      dow: 1,
7714      // Monday is the first day of the week.
7715      doy: 4 // The week that contains Jan 4th is the first week of the year.
7716
7717    }
7718  });
7719  return et;
7720});
7721
7722/***/ }),
7723
vendor: 3,503 bytes, lines 7724-7803
7724/***/ "../autobahn_client_core/node_modules/moment/locale/eu.js":
7725/*!****************************************************************!*\
7726  !*** ../autobahn_client_core/node_modules/moment/locale/eu.js ***!
7727  \****************************************************************/
7728/*! no static exports found */
7729/***/ (function(module, exports, __webpack_require__) {
7730
7731var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7732
7733//! moment.js locale configuration
7734//! locale : Basque [eu]
7735//! author : Eneko Illarramendi : https://github.com/eillarra
7736;
7737
7738(function (global, factory) {
7739  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7740				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7741				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7742				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7743})(this, function (moment) {
7744  'use strict'; //! moment.js locale configuration
7745
7746  var eu = moment.defineLocale('eu', {
7747    months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
7748    monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
7749    monthsParseExact: true,
7750    weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
7751    weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
7752    weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
7753    weekdaysParseExact: true,
7754    longDateFormat: {
7755      LT: 'HH:mm',
7756      LTS: 'HH:mm:ss',
7757      L: 'YYYY-MM-DD',
7758      LL: 'YYYY[ko] MMMM[ren] D[a]',
7759      LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
7760      LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
7761      l: 'YYYY-M-D',
7762      ll: 'YYYY[ko] MMM D[a]',
7763      lll: 'YYYY[ko] MMM D[a] HH:mm',
7764      llll: 'ddd, YYYY[ko] MMM D[a] HH:mm'
7765    },
7766    calendar: {
7767      sameDay: '[gaur] LT[etan]',
7768      nextDay: '[bihar] LT[etan]',
7769      nextWeek: 'dddd LT[etan]',
7770      lastDay: '[atzo] LT[etan]',
7771      lastWeek: '[aurreko] dddd LT[etan]',
7772      sameElse: 'L'
7773    },
7774    relativeTime: {
7775      future: '%s barru',
7776      past: 'duela %s',
7777      s: 'segundo batzuk',
7778      ss: '%d segundo',
7779      m: 'minutu bat',
7780      mm: '%d minutu',
7781      h: 'ordu bat',
7782      hh: '%d ordu',
7783      d: 'egun bat',
7784      dd: '%d egun',
7785      M: 'hilabete bat',
7786      MM: '%d hilabete',
7787      y: 'urte bat',
7788      yy: '%d urte'
7789    },
7790    dayOfMonthOrdinalParse: /\d{1,2}\./,
7791    ordinal: '%d.',
7792    week: {
7793      dow: 1,
7794      // Monday is the first day of the week.
7795      doy: 7 // The week that contains Jan 7th is the first week of the year.
7796
7797    }
7798  });
7799  return eu;
7800});
7801
7802/***/ }),
7803
vendor: 4,922 bytes, lines 7804-7923
7804/***/ "../autobahn_client_core/node_modules/moment/locale/fa.js":
7805/*!****************************************************************!*\
7806  !*** ../autobahn_client_core/node_modules/moment/locale/fa.js ***!
7807  \****************************************************************/
7808/*! no static exports found */
7809/***/ (function(module, exports, __webpack_require__) {
7810
7811var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7812
7813//! moment.js locale configuration
7814//! locale : Persian [fa]
7815//! author : Ebrahim Byagowi : https://github.com/ebraminio
7816;
7817
7818(function (global, factory) {
7819  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7820				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7821				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7822				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7823})(this, function (moment) {
7824  'use strict'; //! moment.js locale configuration
7825
7826  var symbolMap = {
7827    1: 'Û±',
7828    2: 'Û²',
7829    3: 'Û³',
7830    4: 'Û´',
7831    5: 'Ûµ',
7832    6: 'Û¶',
7833    7: 'Û·',
7834    8: 'Û¸',
7835    9: 'Û¹',
7836    0: 'Û°'
7837  },
7838      numberMap = {
7839    'Û±': '1',
7840    'Û²': '2',
7841    'Û³': '3',
7842    'Û´': '4',
7843    'Ûµ': '5',
7844    'Û¶': '6',
7845    'Û·': '7',
7846    'Û¸': '8',
7847    'Û¹': '9',
7848    'Û°': '0'
7849  };
7850  var fa = moment.defineLocale('fa', {
7851    months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7852    monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7853    weekdays: "\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647_\u062F\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200C\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647_\u062C\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split('_'),
7854    weekdaysShort: "\u06CC\u06A9\u200C\u0634\u0646\u0628\u0647_\u062F\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200C\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067E\u0646\u062C\u200C\u0634\u0646\u0628\u0647_\u062C\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split('_'),
7855    weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
7856    weekdaysParseExact: true,
7857    longDateFormat: {
7858      LT: 'HH:mm',
7859      LTS: 'HH:mm:ss',
7860      L: 'DD/MM/YYYY',
7861      LL: 'D MMMM YYYY',
7862      LLL: 'D MMMM YYYY HH:mm',
7863      LLLL: 'dddd, D MMMM YYYY HH:mm'
7864    },
7865    meridiemParse: /قبل از ظهر|بعد از ظهر/,
7866    isPM: function isPM(input) {
7867      return /بعد از ظهر/.test(input);
7868    },
7869    meridiem: function meridiem(hour, minute, isLower) {
7870      if (hour < 12) {
7871        return 'قبل از ظهر';
7872      } else {
7873        return 'بعد از ظهر';
7874      }
7875    },
7876    calendar: {
7877      sameDay: '[امروز ساعت] LT',
7878      nextDay: '[فردا ساعت] LT',
7879      nextWeek: 'dddd [ساعت] LT',
7880      lastDay: '[دیروز ساعت] LT',
7881      lastWeek: 'dddd [پیش] [ساعت] LT',
7882      sameElse: 'L'
7883    },
7884    relativeTime: {
7885      future: 'در %s',
7886      past: '%s پیش',
7887      s: 'چند ثانیه',
7888      ss: '%d ثانیه',
7889      m: 'یک دقیقه',
7890      mm: '%d دقیقه',
7891      h: 'یک ساعت',
7892      hh: '%d ساعت',
7893      d: 'یک روز',
7894      dd: '%d روز',
7895      M: 'یک ماه',
7896      MM: '%d ماه',
7897      y: 'یک سال',
7898      yy: '%d سال'
7899    },
7900    preparse: function preparse(string) {
7901      return string.replace(/[Û°-Û¹]/g, function (match) {
7902        return numberMap[match];
7903      }).replace(/،/g, ',');
7904    },
7905    postformat: function postformat(string) {
7906      return string.replace(/\d/g, function (match) {
7907        return symbolMap[match];
7908      }).replace(/,/g, '،');
7909    },
7910    dayOfMonthOrdinalParse: /\d{1,2}م/,
7911    ordinal: '%dم',
7912    week: {
7913      dow: 6,
7914      // Saturday is the first day of the week.
7915      doy: 12 // The week that contains Jan 12th is the first week of the year.
7916
7917    }
7918  });
7919  return fa;
7920});
7921
7922/***/ }),
7923
vendor: 4,945 bytes, lines 7924-8059
7924/***/ "../autobahn_client_core/node_modules/moment/locale/fi.js":
7925/*!****************************************************************!*\
7926  !*** ../autobahn_client_core/node_modules/moment/locale/fi.js ***!
7927  \****************************************************************/
7928/*! no static exports found */
7929/***/ (function(module, exports, __webpack_require__) {
7930
7931var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
7932
7933//! moment.js locale configuration
7934//! locale : Finnish [fi]
7935//! author : Tarmo Aidantausta : https://github.com/bleadof
7936;
7937
7938(function (global, factory) {
7939  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
7940				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
7941				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
7942				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
7943})(this, function (moment) {
7944  'use strict'; //! moment.js locale configuration
7945
7946  var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
7947      numbersFuture = ['nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden', numbersPast[7], numbersPast[8], numbersPast[9]];
7948
7949  function translate(number, withoutSuffix, key, isFuture) {
7950    var result = '';
7951
7952    switch (key) {
7953      case 's':
7954        return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
7955
7956      case 'ss':
7957        result = isFuture ? 'sekunnin' : 'sekuntia';
7958        break;
7959
7960      case 'm':
7961        return isFuture ? 'minuutin' : 'minuutti';
7962
7963      case 'mm':
7964        result = isFuture ? 'minuutin' : 'minuuttia';
7965        break;
7966
7967      case 'h':
7968        return isFuture ? 'tunnin' : 'tunti';
7969
7970      case 'hh':
7971        result = isFuture ? 'tunnin' : 'tuntia';
7972        break;
7973
7974      case 'd':
7975        return isFuture ? 'päivän' : 'päivä';
7976
7977      case 'dd':
7978        result = isFuture ? 'päivän' : 'päivää';
7979        break;
7980
7981      case 'M':
7982        return isFuture ? 'kuukauden' : 'kuukausi';
7983
7984      case 'MM':
7985        result = isFuture ? 'kuukauden' : 'kuukautta';
7986        break;
7987
7988      case 'y':
7989        return isFuture ? 'vuoden' : 'vuosi';
7990
7991      case 'yy':
7992        result = isFuture ? 'vuoden' : 'vuotta';
7993        break;
7994    }
7995
7996    result = verbalNumber(number, isFuture) + ' ' + result;
7997    return result;
7998  }
7999
8000  function verbalNumber(number, isFuture) {
8001    return number < 10 ? isFuture ? numbersFuture[number] : numbersPast[number] : number;
8002  }
8003
8004  var fi = moment.defineLocale('fi', {
8005    months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
8006    monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
8007    weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
8008    weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
8009    weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
8010    longDateFormat: {
8011      LT: 'HH.mm',
8012      LTS: 'HH.mm.ss',
8013      L: 'DD.MM.YYYY',
8014      LL: 'Do MMMM[ta] YYYY',
8015      LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
8016      LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
8017      l: 'D.M.YYYY',
8018      ll: 'Do MMM YYYY',
8019      lll: 'Do MMM YYYY, [klo] HH.mm',
8020      llll: 'ddd, Do MMM YYYY, [klo] HH.mm'
8021    },
8022    calendar: {
8023      sameDay: '[tänään] [klo] LT',
8024      nextDay: '[huomenna] [klo] LT',
8025      nextWeek: 'dddd [klo] LT',
8026      lastDay: '[eilen] [klo] LT',
8027      lastWeek: '[viime] dddd[na] [klo] LT',
8028      sameElse: 'L'
8029    },
8030    relativeTime: {
8031      future: '%s päästä',
8032      past: '%s sitten',
8033      s: translate,
8034      ss: translate,
8035      m: translate,
8036      mm: translate,
8037      h: translate,
8038      hh: translate,
8039      d: translate,
8040      dd: translate,
8041      M: translate,
8042      MM: translate,
8043      y: translate,
8044      yy: translate
8045    },
8046    dayOfMonthOrdinalParse: /\d{1,2}\./,
8047    ordinal: '%d.',
8048    week: {
8049      dow: 1,
8050      // Monday is the first day of the week.
8051      doy: 4 // The week that contains Jan 4th is the first week of the year.
8052
8053    }
8054  });
8055  return fi;
8056});
8057
8058/***/ }),
8059
vendor: 3,380 bytes, lines 8060-8136
8060/***/ "../autobahn_client_core/node_modules/moment/locale/fil.js":
8061/*!*****************************************************************!*\
8062  !*** ../autobahn_client_core/node_modules/moment/locale/fil.js ***!
8063  \*****************************************************************/
8064/*! no static exports found */
8065/***/ (function(module, exports, __webpack_require__) {
8066
8067var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8068
8069//! moment.js locale configuration
8070//! locale : Filipino [fil]
8071//! author : Dan Hagman : https://github.com/hagmandan
8072//! author : Matthew Co : https://github.com/matthewdeeco
8073;
8074
8075(function (global, factory) {
8076  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8077				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8078				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8079				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8080})(this, function (moment) {
8081  'use strict'; //! moment.js locale configuration
8082
8083  var fil = moment.defineLocale('fil', {
8084    months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
8085    monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
8086    weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
8087    weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
8088    weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
8089    longDateFormat: {
8090      LT: 'HH:mm',
8091      LTS: 'HH:mm:ss',
8092      L: 'MM/D/YYYY',
8093      LL: 'MMMM D, YYYY',
8094      LLL: 'MMMM D, YYYY HH:mm',
8095      LLLL: 'dddd, MMMM DD, YYYY HH:mm'
8096    },
8097    calendar: {
8098      sameDay: 'LT [ngayong araw]',
8099      nextDay: '[Bukas ng] LT',
8100      nextWeek: 'LT [sa susunod na] dddd',
8101      lastDay: 'LT [kahapon]',
8102      lastWeek: 'LT [noong nakaraang] dddd',
8103      sameElse: 'L'
8104    },
8105    relativeTime: {
8106      future: 'sa loob ng %s',
8107      past: '%s ang nakalipas',
8108      s: 'ilang segundo',
8109      ss: '%d segundo',
8110      m: 'isang minuto',
8111      mm: '%d minuto',
8112      h: 'isang oras',
8113      hh: '%d oras',
8114      d: 'isang araw',
8115      dd: '%d araw',
8116      M: 'isang buwan',
8117      MM: '%d buwan',
8118      y: 'isang taon',
8119      yy: '%d taon'
8120    },
8121    dayOfMonthOrdinalParse: /\d{1,2}/,
8122    ordinal: function ordinal(number) {
8123      return number;
8124    },
8125    week: {
8126      dow: 1,
8127      // Monday is the first day of the week.
8128      doy: 4 // The week that contains Jan 4th is the first week of the year.
8129
8130    }
8131  });
8132  return fil;
8133});
8134
8135/***/ }),
8136
vendor: 3,349 bytes, lines 8137-8211
8137/***/ "../autobahn_client_core/node_modules/moment/locale/fo.js":
8138/*!****************************************************************!*\
8139  !*** ../autobahn_client_core/node_modules/moment/locale/fo.js ***!
8140  \****************************************************************/
8141/*! no static exports found */
8142/***/ (function(module, exports, __webpack_require__) {
8143
8144var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8145
8146//! moment.js locale configuration
8147//! locale : Faroese [fo]
8148//! author : Ragnar Johannesen : https://github.com/ragnar123
8149//! author : Kristian Sakarisson : https://github.com/sakarisson
8150;
8151
8152(function (global, factory) {
8153  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8154				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8155				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8156				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8157})(this, function (moment) {
8158  'use strict'; //! moment.js locale configuration
8159
8160  var fo = moment.defineLocale('fo', {
8161    months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
8162    monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
8163    weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
8164    weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
8165    weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
8166    longDateFormat: {
8167      LT: 'HH:mm',
8168      LTS: 'HH:mm:ss',
8169      L: 'DD/MM/YYYY',
8170      LL: 'D MMMM YYYY',
8171      LLL: 'D MMMM YYYY HH:mm',
8172      LLLL: 'dddd D. MMMM, YYYY HH:mm'
8173    },
8174    calendar: {
8175      sameDay: '[Í dag kl.] LT',
8176      nextDay: '[Í morgin kl.] LT',
8177      nextWeek: 'dddd [kl.] LT',
8178      lastDay: '[Í gjár kl.] LT',
8179      lastWeek: '[síðstu] dddd [kl] LT',
8180      sameElse: 'L'
8181    },
8182    relativeTime: {
8183      future: 'um %s',
8184      past: '%s síðani',
8185      s: 'fá sekund',
8186      ss: '%d sekundir',
8187      m: 'ein minuttur',
8188      mm: '%d minuttir',
8189      h: 'ein tími',
8190      hh: '%d tímar',
8191      d: 'ein dagur',
8192      dd: '%d dagar',
8193      M: 'ein mánaður',
8194      MM: '%d mánaðir',
8195      y: 'eitt ár',
8196      yy: '%d ár'
8197    },
8198    dayOfMonthOrdinalParse: /\d{1,2}\./,
8199    ordinal: '%d.',
8200    week: {
8201      dow: 1,
8202      // Monday is the first day of the week.
8203      doy: 4 // The week that contains Jan 4th is the first week of the year.
8204
8205    }
8206  });
8207  return fo;
8208});
8209
8210/***/ }),
8211
vendor: 3,646 bytes, lines 8212-8297
8212/***/ "../autobahn_client_core/node_modules/moment/locale/fr-ca.js":
8213/*!*******************************************************************!*\
8214  !*** ../autobahn_client_core/node_modules/moment/locale/fr-ca.js ***!
8215  \*******************************************************************/
8216/*! no static exports found */
8217/***/ (function(module, exports, __webpack_require__) {
8218
8219var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8220
8221//! moment.js locale configuration
8222//! locale : French (Canada) [fr-ca]
8223//! author : Jonathan Abourbih : https://github.com/jonbca
8224;
8225
8226(function (global, factory) {
8227  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8228				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8229				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8230				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8231})(this, function (moment) {
8232  'use strict'; //! moment.js locale configuration
8233
8234  var frCa = moment.defineLocale('fr-ca', {
8235    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
8236    monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
8237    monthsParseExact: true,
8238    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
8239    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
8240    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
8241    weekdaysParseExact: true,
8242    longDateFormat: {
8243      LT: 'HH:mm',
8244      LTS: 'HH:mm:ss',
8245      L: 'YYYY-MM-DD',
8246      LL: 'D MMMM YYYY',
8247      LLL: 'D MMMM YYYY HH:mm',
8248      LLLL: 'dddd D MMMM YYYY HH:mm'
8249    },
8250    calendar: {
8251      sameDay: '[Aujourd’hui à] LT',
8252      nextDay: '[Demain à] LT',
8253      nextWeek: 'dddd [à] LT',
8254      lastDay: '[Hier à] LT',
8255      lastWeek: 'dddd [dernier à] LT',
8256      sameElse: 'L'
8257    },
8258    relativeTime: {
8259      future: 'dans %s',
8260      past: 'il y a %s',
8261      s: 'quelques secondes',
8262      ss: '%d secondes',
8263      m: 'une minute',
8264      mm: '%d minutes',
8265      h: 'une heure',
8266      hh: '%d heures',
8267      d: 'un jour',
8268      dd: '%d jours',
8269      M: 'un mois',
8270      MM: '%d mois',
8271      y: 'un an',
8272      yy: '%d ans'
8273    },
8274    dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
8275    ordinal: function ordinal(number, period) {
8276      switch (period) {
8277        // Words with masculine grammatical gender: mois, trimestre, jour
8278        default:
8279        case 'M':
8280        case 'Q':
8281        case 'D':
8282        case 'DDD':
8283        case 'd':
8284          return number + (number === 1 ? 'er' : 'e');
8285        // Words with feminine grammatical gender: semaine
8286
8287        case 'w':
8288        case 'W':
8289          return number + (number === 1 ? 're' : 'e');
8290      }
8291    }
8292  });
8293  return frCa;
8294});
8295
8296/***/ }),
8297
vendor: 3,807 bytes, lines 8298-8389
8298/***/ "../autobahn_client_core/node_modules/moment/locale/fr-ch.js":
8299/*!*******************************************************************!*\
8300  !*** ../autobahn_client_core/node_modules/moment/locale/fr-ch.js ***!
8301  \*******************************************************************/
8302/*! no static exports found */
8303/***/ (function(module, exports, __webpack_require__) {
8304
8305var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8306
8307//! moment.js locale configuration
8308//! locale : French (Switzerland) [fr-ch]
8309//! author : Gaspard Bucher : https://github.com/gaspard
8310;
8311
8312(function (global, factory) {
8313  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8314				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8315				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8316				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8317})(this, function (moment) {
8318  'use strict'; //! moment.js locale configuration
8319
8320  var frCh = moment.defineLocale('fr-ch', {
8321    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
8322    monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
8323    monthsParseExact: true,
8324    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
8325    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
8326    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
8327    weekdaysParseExact: true,
8328    longDateFormat: {
8329      LT: 'HH:mm',
8330      LTS: 'HH:mm:ss',
8331      L: 'DD.MM.YYYY',
8332      LL: 'D MMMM YYYY',
8333      LLL: 'D MMMM YYYY HH:mm',
8334      LLLL: 'dddd D MMMM YYYY HH:mm'
8335    },
8336    calendar: {
8337      sameDay: '[Aujourd’hui à] LT',
8338      nextDay: '[Demain à] LT',
8339      nextWeek: 'dddd [à] LT',
8340      lastDay: '[Hier à] LT',
8341      lastWeek: 'dddd [dernier à] LT',
8342      sameElse: 'L'
8343    },
8344    relativeTime: {
8345      future: 'dans %s',
8346      past: 'il y a %s',
8347      s: 'quelques secondes',
8348      ss: '%d secondes',
8349      m: 'une minute',
8350      mm: '%d minutes',
8351      h: 'une heure',
8352      hh: '%d heures',
8353      d: 'un jour',
8354      dd: '%d jours',
8355      M: 'un mois',
8356      MM: '%d mois',
8357      y: 'un an',
8358      yy: '%d ans'
8359    },
8360    dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
8361    ordinal: function ordinal(number, period) {
8362      switch (period) {
8363        // Words with masculine grammatical gender: mois, trimestre, jour
8364        default:
8365        case 'M':
8366        case 'Q':
8367        case 'D':
8368        case 'DDD':
8369        case 'd':
8370          return number + (number === 1 ? 'er' : 'e');
8371        // Words with feminine grammatical gender: semaine
8372
8373        case 'w':
8374        case 'W':
8375          return number + (number === 1 ? 're' : 'e');
8376      }
8377    },
8378    week: {
8379      dow: 1,
8380      // Monday is the first day of the week.
8381      doy: 4 // The week that contains Jan 4th is the first week of the year.
8382
8383    }
8384  });
8385  return frCh;
8386});
8387
8388/***/ }),
8389
vendor: 4,857 bytes, lines 8390-8498
8390/***/ "../autobahn_client_core/node_modules/moment/locale/fr.js":
8391/*!****************************************************************!*\
8392  !*** ../autobahn_client_core/node_modules/moment/locale/fr.js ***!
8393  \****************************************************************/
8394/*! no static exports found */
8395/***/ (function(module, exports, __webpack_require__) {
8396
8397var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8398
8399//! moment.js locale configuration
8400//! locale : French [fr]
8401//! author : John Fischer : https://github.com/jfroffice
8402;
8403
8404(function (global, factory) {
8405  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8406				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8407				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8408				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8409})(this, function (moment) {
8410  'use strict'; //! moment.js locale configuration
8411
8412  var monthsStrictRegex = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
8413      monthsShortStrictRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
8414      monthsRegex = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
8415      monthsParse = [/^janv/i, /^févr/i, /^mars/i, /^avr/i, /^mai/i, /^juin/i, /^juil/i, /^août/i, /^sept/i, /^oct/i, /^nov/i, /^déc/i];
8416  var fr = moment.defineLocale('fr', {
8417    months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
8418    monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
8419    monthsRegex: monthsRegex,
8420    monthsShortRegex: monthsRegex,
8421    monthsStrictRegex: monthsStrictRegex,
8422    monthsShortStrictRegex: monthsShortStrictRegex,
8423    monthsParse: monthsParse,
8424    longMonthsParse: monthsParse,
8425    shortMonthsParse: monthsParse,
8426    weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
8427    weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
8428    weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
8429    weekdaysParseExact: true,
8430    longDateFormat: {
8431      LT: 'HH:mm',
8432      LTS: 'HH:mm:ss',
8433      L: 'DD/MM/YYYY',
8434      LL: 'D MMMM YYYY',
8435      LLL: 'D MMMM YYYY HH:mm',
8436      LLLL: 'dddd D MMMM YYYY HH:mm'
8437    },
8438    calendar: {
8439      sameDay: '[Aujourd’hui à] LT',
8440      nextDay: '[Demain à] LT',
8441      nextWeek: 'dddd [à] LT',
8442      lastDay: '[Hier à] LT',
8443      lastWeek: 'dddd [dernier à] LT',
8444      sameElse: 'L'
8445    },
8446    relativeTime: {
8447      future: 'dans %s',
8448      past: 'il y a %s',
8449      s: 'quelques secondes',
8450      ss: '%d secondes',
8451      m: 'une minute',
8452      mm: '%d minutes',
8453      h: 'une heure',
8454      hh: '%d heures',
8455      d: 'un jour',
8456      dd: '%d jours',
8457      w: 'une semaine',
8458      ww: '%d semaines',
8459      M: 'un mois',
8460      MM: '%d mois',
8461      y: 'un an',
8462      yy: '%d ans'
8463    },
8464    dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
8465    ordinal: function ordinal(number, period) {
8466      switch (period) {
8467        // TODO: Return 'e' when day of month > 1. Move this case inside
8468        // block for masculine words below.
8469        // See https://github.com/moment/moment/issues/3375
8470        case 'D':
8471          return number + (number === 1 ? 'er' : '');
8472        // Words with masculine grammatical gender: mois, trimestre, jour
8473
8474        default:
8475        case 'M':
8476        case 'Q':
8477        case 'DDD':
8478        case 'd':
8479          return number + (number === 1 ? 'er' : 'e');
8480        // Words with feminine grammatical gender: semaine
8481
8482        case 'w':
8483        case 'W':
8484          return number + (number === 1 ? 're' : 'e');
8485      }
8486    },
8487    week: {
8488      dow: 1,
8489      // Monday is the first day of the week.
8490      doy: 4 // The week that contains Jan 4th is the first week of the year.
8491
8492    }
8493  });
8494  return fr;
8495});
8496
8497/***/ }),
8498
vendor: 3,815 bytes, lines 8499-8586
8499/***/ "../autobahn_client_core/node_modules/moment/locale/fy.js":
8500/*!****************************************************************!*\
8501  !*** ../autobahn_client_core/node_modules/moment/locale/fy.js ***!
8502  \****************************************************************/
8503/*! no static exports found */
8504/***/ (function(module, exports, __webpack_require__) {
8505
8506var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8507
8508//! moment.js locale configuration
8509//! locale : Frisian [fy]
8510//! author : Robin van der Vliet : https://github.com/robin0van0der0v
8511;
8512
8513(function (global, factory) {
8514  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8515				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8516				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8517				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8518})(this, function (moment) {
8519  'use strict'; //! moment.js locale configuration
8520
8521  var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
8522      monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
8523  var fy = moment.defineLocale('fy', {
8524    months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
8525    monthsShort: function monthsShort(m, format) {
8526      if (!m) {
8527        return monthsShortWithDots;
8528      } else if (/-MMM-/.test(format)) {
8529        return monthsShortWithoutDots[m.month()];
8530      } else {
8531        return monthsShortWithDots[m.month()];
8532      }
8533    },
8534    monthsParseExact: true,
8535    weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
8536    weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
8537    weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
8538    weekdaysParseExact: true,
8539    longDateFormat: {
8540      LT: 'HH:mm',
8541      LTS: 'HH:mm:ss',
8542      L: 'DD-MM-YYYY',
8543      LL: 'D MMMM YYYY',
8544      LLL: 'D MMMM YYYY HH:mm',
8545      LLLL: 'dddd D MMMM YYYY HH:mm'
8546    },
8547    calendar: {
8548      sameDay: '[hjoed om] LT',
8549      nextDay: '[moarn om] LT',
8550      nextWeek: 'dddd [om] LT',
8551      lastDay: '[juster om] LT',
8552      lastWeek: '[ôfrûne] dddd [om] LT',
8553      sameElse: 'L'
8554    },
8555    relativeTime: {
8556      future: 'oer %s',
8557      past: '%s lyn',
8558      s: 'in pear sekonden',
8559      ss: '%d sekonden',
8560      m: 'ien minút',
8561      mm: '%d minuten',
8562      h: 'ien oere',
8563      hh: '%d oeren',
8564      d: 'ien dei',
8565      dd: '%d dagen',
8566      M: 'ien moanne',
8567      MM: '%d moannen',
8568      y: 'ien jier',
8569      yy: '%d jierren'
8570    },
8571    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
8572    ordinal: function ordinal(number) {
8573      return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');
8574    },
8575    week: {
8576      dow: 1,
8577      // Monday is the first day of the week.
8578      doy: 4 // The week that contains Jan 4th is the first week of the year.
8579
8580    }
8581  });
8582  return fy;
8583});
8584
8585/***/ }),
8586
vendor: 3,724 bytes, lines 8587-8669
8587/***/ "../autobahn_client_core/node_modules/moment/locale/ga.js":
8588/*!****************************************************************!*\
8589  !*** ../autobahn_client_core/node_modules/moment/locale/ga.js ***!
8590  \****************************************************************/
8591/*! no static exports found */
8592/***/ (function(module, exports, __webpack_require__) {
8593
8594var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8595
8596//! moment.js locale configuration
8597//! locale : Irish or Irish Gaelic [ga]
8598//! author : André Silva : https://github.com/askpt
8599;
8600
8601(function (global, factory) {
8602  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8603				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8604				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8605				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8606})(this, function (moment) {
8607  'use strict'; //! moment.js locale configuration
8608
8609  var months = ['Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Meitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deireadh Fómhair', 'Samhain', 'Nollaig'],
8610      monthsShort = ['Ean', 'Feabh', 'Márt', 'Aib', 'Beal', 'Meith', 'Iúil', 'Lún', 'M.F.', 'D.F.', 'Samh', 'Noll'],
8611      weekdays = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Sathairn'],
8612      weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
8613      weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
8614  var ga = moment.defineLocale('ga', {
8615    months: months,
8616    monthsShort: monthsShort,
8617    monthsParseExact: true,
8618    weekdays: weekdays,
8619    weekdaysShort: weekdaysShort,
8620    weekdaysMin: weekdaysMin,
8621    longDateFormat: {
8622      LT: 'HH:mm',
8623      LTS: 'HH:mm:ss',
8624      L: 'DD/MM/YYYY',
8625      LL: 'D MMMM YYYY',
8626      LLL: 'D MMMM YYYY HH:mm',
8627      LLLL: 'dddd, D MMMM YYYY HH:mm'
8628    },
8629    calendar: {
8630      sameDay: '[Inniu ag] LT',
8631      nextDay: '[Amárach ag] LT',
8632      nextWeek: 'dddd [ag] LT',
8633      lastDay: '[Inné ag] LT',
8634      lastWeek: 'dddd [seo caite] [ag] LT',
8635      sameElse: 'L'
8636    },
8637    relativeTime: {
8638      future: 'i %s',
8639      past: '%s ó shin',
8640      s: 'cúpla soicind',
8641      ss: '%d soicind',
8642      m: 'nóiméad',
8643      mm: '%d nóiméad',
8644      h: 'uair an chloig',
8645      hh: '%d uair an chloig',
8646      d: 'lá',
8647      dd: '%d lá',
8648      M: 'mí',
8649      MM: '%d míonna',
8650      y: 'bliain',
8651      yy: '%d bliain'
8652    },
8653    dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
8654    ordinal: function ordinal(number) {
8655      var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
8656      return number + output;
8657    },
8658    week: {
8659      dow: 1,
8660      // Monday is the first day of the week.
8661      doy: 4 // The week that contains Jan 4th is the first week of the year.
8662
8663    }
8664  });
8665  return ga;
8666});
8667
8668/***/ }),
8669
vendor: 3,744 bytes, lines 8670-8752
8670/***/ "../autobahn_client_core/node_modules/moment/locale/gd.js":
8671/*!****************************************************************!*\
8672  !*** ../autobahn_client_core/node_modules/moment/locale/gd.js ***!
8673  \****************************************************************/
8674/*! no static exports found */
8675/***/ (function(module, exports, __webpack_require__) {
8676
8677var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8678
8679//! moment.js locale configuration
8680//! locale : Scottish Gaelic [gd]
8681//! author : Jon Ashdown : https://github.com/jonashdown
8682;
8683
8684(function (global, factory) {
8685  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8686				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8687				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8688				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8689})(this, function (moment) {
8690  'use strict'; //! moment.js locale configuration
8691
8692  var months = ['Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'],
8693      monthsShort = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'],
8694      weekdays = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'],
8695      weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
8696      weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
8697  var gd = moment.defineLocale('gd', {
8698    months: months,
8699    monthsShort: monthsShort,
8700    monthsParseExact: true,
8701    weekdays: weekdays,
8702    weekdaysShort: weekdaysShort,
8703    weekdaysMin: weekdaysMin,
8704    longDateFormat: {
8705      LT: 'HH:mm',
8706      LTS: 'HH:mm:ss',
8707      L: 'DD/MM/YYYY',
8708      LL: 'D MMMM YYYY',
8709      LLL: 'D MMMM YYYY HH:mm',
8710      LLLL: 'dddd, D MMMM YYYY HH:mm'
8711    },
8712    calendar: {
8713      sameDay: '[An-diugh aig] LT',
8714      nextDay: '[A-màireach aig] LT',
8715      nextWeek: 'dddd [aig] LT',
8716      lastDay: '[An-dè aig] LT',
8717      lastWeek: 'dddd [seo chaidh] [aig] LT',
8718      sameElse: 'L'
8719    },
8720    relativeTime: {
8721      future: 'ann an %s',
8722      past: 'bho chionn %s',
8723      s: 'beagan diogan',
8724      ss: '%d diogan',
8725      m: 'mionaid',
8726      mm: '%d mionaidean',
8727      h: 'uair',
8728      hh: '%d uairean',
8729      d: 'latha',
8730      dd: '%d latha',
8731      M: 'mìos',
8732      MM: '%d mìosan',
8733      y: 'bliadhna',
8734      yy: '%d bliadhna'
8735    },
8736    dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
8737    ordinal: function ordinal(number) {
8738      var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
8739      return number + output;
8740    },
8741    week: {
8742      dow: 1,
8743      // Monday is the first day of the week.
8744      doy: 4 // The week that contains Jan 4th is the first week of the year.
8745
8746    }
8747  });
8748  return gd;
8749});
8750
8751/***/ }),
8752
vendor: 3,886 bytes, lines 8753-8844
8753/***/ "../autobahn_client_core/node_modules/moment/locale/gl.js":
8754/*!****************************************************************!*\
8755  !*** ../autobahn_client_core/node_modules/moment/locale/gl.js ***!
8756  \****************************************************************/
8757/*! no static exports found */
8758/***/ (function(module, exports, __webpack_require__) {
8759
8760var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8761
8762//! moment.js locale configuration
8763//! locale : Galician [gl]
8764//! author : Juan G. Hurtado : https://github.com/juanghurtado
8765;
8766
8767(function (global, factory) {
8768  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8769				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8770				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8771				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8772})(this, function (moment) {
8773  'use strict'; //! moment.js locale configuration
8774
8775  var gl = moment.defineLocale('gl', {
8776    months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
8777    monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
8778    monthsParseExact: true,
8779    weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
8780    weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
8781    weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
8782    weekdaysParseExact: true,
8783    longDateFormat: {
8784      LT: 'H:mm',
8785      LTS: 'H:mm:ss',
8786      L: 'DD/MM/YYYY',
8787      LL: 'D [de] MMMM [de] YYYY',
8788      LLL: 'D [de] MMMM [de] YYYY H:mm',
8789      LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm'
8790    },
8791    calendar: {
8792      sameDay: function sameDay() {
8793        return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
8794      },
8795      nextDay: function nextDay() {
8796        return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
8797      },
8798      nextWeek: function nextWeek() {
8799        return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
8800      },
8801      lastDay: function lastDay() {
8802        return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
8803      },
8804      lastWeek: function lastWeek() {
8805        return '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
8806      },
8807      sameElse: 'L'
8808    },
8809    relativeTime: {
8810      future: function future(str) {
8811        if (str.indexOf('un') === 0) {
8812          return 'n' + str;
8813        }
8814
8815        return 'en ' + str;
8816      },
8817      past: 'hai %s',
8818      s: 'uns segundos',
8819      ss: '%d segundos',
8820      m: 'un minuto',
8821      mm: '%d minutos',
8822      h: 'unha hora',
8823      hh: '%d horas',
8824      d: 'un día',
8825      dd: '%d días',
8826      M: 'un mes',
8827      MM: '%d meses',
8828      y: 'un ano',
8829      yy: '%d anos'
8830    },
8831    dayOfMonthOrdinalParse: /\d{1,2}º/,
8832    ordinal: '%dº',
8833    week: {
8834      dow: 1,
8835      // Monday is the first day of the week.
8836      doy: 4 // The week that contains Jan 4th is the first week of the year.
8837
8838    }
8839  });
8840  return gl;
8841});
8842
8843/***/ }),
8844
vendor: 6,948 bytes, lines 8845-8987
8845/***/ "../autobahn_client_core/node_modules/moment/locale/gom-deva.js":
8846/*!**********************************************************************!*\
8847  !*** ../autobahn_client_core/node_modules/moment/locale/gom-deva.js ***!
8848  \**********************************************************************/
8849/*! no static exports found */
8850/***/ (function(module, exports, __webpack_require__) {
8851
8852var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8853
8854//! moment.js locale configuration
8855//! locale : Konkani Devanagari script [gom-deva]
8856//! author : The Discoverer : https://github.com/WikiDiscoverer
8857;
8858
8859(function (global, factory) {
8860  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
8861				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
8862				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
8863				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
8864})(this, function (moment) {
8865  'use strict'; //! moment.js locale configuration
8866
8867  function processRelativeTime(number, withoutSuffix, key, isFuture) {
8868    var format = {
8869      s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
8870      ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
8871      m: ['एका मिणटान', 'एक मिनूट'],
8872      mm: [number + ' मिणटांनी', number + ' मिणटां'],
8873      h: ['एका वरान', 'एक वर'],
8874      hh: [number + ' वरांनी', number + ' वरां'],
8875      d: ['एका दिसान', 'एक दीस'],
8876      dd: [number + ' दिसांनी', number + ' दीस'],
8877      M: ['एका म्हयन्यान', 'एक म्हयनो'],
8878      MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
8879      y: ['एका वर्सान', 'एक वर्स'],
8880      yy: [number + ' वर्सांनी', number + ' वर्सां']
8881    };
8882    return isFuture ? format[key][0] : format[key][1];
8883  }
8884
8885  var gomDeva = moment.defineLocale('gom-deva', {
8886    months: {
8887      standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
8888      format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split('_'),
8889      isFormat: /MMMM(\s)+D[oD]?/
8890    },
8891    monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
8892    monthsParseExact: true,
8893    weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
8894    weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
8895    weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
8896    weekdaysParseExact: true,
8897    longDateFormat: {
8898      LT: 'A h:mm [वाजतां]',
8899      LTS: 'A h:mm:ss [वाजतां]',
8900      L: 'DD-MM-YYYY',
8901      LL: 'D MMMM YYYY',
8902      LLL: 'D MMMM YYYY A h:mm [वाजतां]',
8903      LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
8904      llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]'
8905    },
8906    calendar: {
8907      sameDay: '[आयज] LT',
8908      nextDay: '[फाल्यां] LT',
8909      nextWeek: '[फुडलो] dddd[,] LT',
8910      lastDay: '[काल] LT',
8911      lastWeek: '[फाटलो] dddd[,] LT',
8912      sameElse: 'L'
8913    },
8914    relativeTime: {
8915      future: '%s',
8916      past: '%s आदीं',
8917      s: processRelativeTime,
8918      ss: processRelativeTime,
8919      m: processRelativeTime,
8920      mm: processRelativeTime,
8921      h: processRelativeTime,
8922      hh: processRelativeTime,
8923      d: processRelativeTime,
8924      dd: processRelativeTime,
8925      M: processRelativeTime,
8926      MM: processRelativeTime,
8927      y: processRelativeTime,
8928      yy: processRelativeTime
8929    },
8930    dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
8931    ordinal: function ordinal(number, period) {
8932      switch (period) {
8933        // the ordinal 'वेर' only applies to day of the month
8934        case 'D':
8935          return number + 'वेर';
8936
8937        default:
8938        case 'M':
8939        case 'Q':
8940        case 'DDD':
8941        case 'd':
8942        case 'w':
8943        case 'W':
8944          return number;
8945      }
8946    },
8947    week: {
8948      dow: 0,
8949      // Sunday is the first day of the week
8950      doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
8951
8952    },
8953    meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
8954    meridiemHour: function meridiemHour(hour, meridiem) {
8955      if (hour === 12) {
8956        hour = 0;
8957      }
8958
8959      if (meridiem === 'राती') {
8960        return hour < 4 ? hour : hour + 12;
8961      } else if (meridiem === 'सकाळीं') {
8962        return hour;
8963      } else if (meridiem === 'दनपारां') {
8964        return hour > 12 ? hour : hour + 12;
8965      } else if (meridiem === 'सांजे') {
8966        return hour + 12;
8967      }
8968    },
8969    meridiem: function meridiem(hour, minute, isLower) {
8970      if (hour < 4) {
8971        return 'राती';
8972      } else if (hour < 12) {
8973        return 'सकाळीं';
8974      } else if (hour < 16) {
8975        return 'दनपारां';
8976      } else if (hour < 20) {
8977        return 'सांजे';
8978      } else {
8979        return 'राती';
8980      }
8981    }
8982  });
8983  return gomDeva;
8984});
8985
8986/***/ }),
8987
vendor: 5,594 bytes, lines 8988-9130
8988/***/ "../autobahn_client_core/node_modules/moment/locale/gom-latn.js":
8989/*!**********************************************************************!*\
8990  !*** ../autobahn_client_core/node_modules/moment/locale/gom-latn.js ***!
8991  \**********************************************************************/
8992/*! no static exports found */
8993/***/ (function(module, exports, __webpack_require__) {
8994
8995var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
8996
8997//! moment.js locale configuration
8998//! locale : Konkani Latin script [gom-latn]
8999//! author : The Discoverer : https://github.com/WikiDiscoverer
9000;
9001
9002(function (global, factory) {
9003  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
9004				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
9005				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
9006				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
9007})(this, function (moment) {
9008  'use strict'; //! moment.js locale configuration
9009
9010  function processRelativeTime(number, withoutSuffix, key, isFuture) {
9011    var format = {
9012      s: ['thoddea sekondamni', 'thodde sekond'],
9013      ss: [number + ' sekondamni', number + ' sekond'],
9014      m: ['eka mintan', 'ek minut'],
9015      mm: [number + ' mintamni', number + ' mintam'],
9016      h: ['eka voran', 'ek vor'],
9017      hh: [number + ' voramni', number + ' voram'],
9018      d: ['eka disan', 'ek dis'],
9019      dd: [number + ' disamni', number + ' dis'],
9020      M: ['eka mhoinean', 'ek mhoino'],
9021      MM: [number + ' mhoineamni', number + ' mhoine'],
9022      y: ['eka vorsan', 'ek voros'],
9023      yy: [number + ' vorsamni', number + ' vorsam']
9024    };
9025    return isFuture ? format[key][0] : format[key][1];
9026  }
9027
9028  var gomLatn = moment.defineLocale('gom-latn', {
9029    months: {
9030      standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),
9031      format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split('_'),
9032      isFormat: /MMMM(\s)+D[oD]?/
9033    },
9034    monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
9035    monthsParseExact: true,
9036    weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
9037    weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
9038    weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
9039    weekdaysParseExact: true,
9040    longDateFormat: {
9041      LT: 'A h:mm [vazta]',
9042      LTS: 'A h:mm:ss [vazta]',
9043      L: 'DD-MM-YYYY',
9044      LL: 'D MMMM YYYY',
9045      LLL: 'D MMMM YYYY A h:mm [vazta]',
9046      LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
9047      llll: 'ddd, D MMM YYYY, A h:mm [vazta]'
9048    },
9049    calendar: {
9050      sameDay: '[Aiz] LT',
9051      nextDay: '[Faleam] LT',
9052      nextWeek: '[Fuddlo] dddd[,] LT',
9053      lastDay: '[Kal] LT',
9054      lastWeek: '[Fattlo] dddd[,] LT',
9055      sameElse: 'L'
9056    },
9057    relativeTime: {
9058      future: '%s',
9059      past: '%s adim',
9060      s: processRelativeTime,
9061      ss: processRelativeTime,
9062      m: processRelativeTime,
9063      mm: processRelativeTime,
9064      h: processRelativeTime,
9065      hh: processRelativeTime,
9066      d: processRelativeTime,
9067      dd: processRelativeTime,
9068      M: processRelativeTime,
9069      MM: processRelativeTime,
9070      y: processRelativeTime,
9071      yy: processRelativeTime
9072    },
9073    dayOfMonthOrdinalParse: /\d{1,2}(er)/,
9074    ordinal: function ordinal(number, period) {
9075      switch (period) {
9076        // the ordinal 'er' only applies to day of the month
9077        case 'D':
9078          return number + 'er';
9079
9080        default:
9081        case 'M':
9082        case 'Q':
9083        case 'DDD':
9084        case 'd':
9085        case 'w':
9086        case 'W':
9087          return number;
9088      }
9089    },
9090    week: {
9091      dow: 0,
9092      // Sunday is the first day of the week
9093      doy: 3 // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
9094
9095    },
9096    meridiemParse: /rati|sokallim|donparam|sanje/,
9097    meridiemHour: function meridiemHour(hour, meridiem) {
9098      if (hour === 12) {
9099        hour = 0;
9100      }
9101
9102      if (meridiem === 'rati') {
9103        return hour < 4 ? hour : hour + 12;
9104      } else if (meridiem === 'sokallim') {
9105        return hour;
9106      } else if (meridiem === 'donparam') {
9107        return hour > 12 ? hour : hour + 12;
9108      } else if (meridiem === 'sanje') {
9109        return hour + 12;
9110      }
9111    },
9112    meridiem: function meridiem(hour, minute, isLower) {
9113      if (hour < 4) {
9114        return 'rati';
9115      } else if (hour < 12) {
9116        return 'sokallim';
9117      } else if (hour < 16) {
9118        return 'donparam';
9119      } else if (hour < 20) {
9120        return 'sanje';
9121      } else {
9122        return 'rati';
9123      }
9124    }
9125  });
9126  return gomLatn;
9127});
9128
9129/***/ }),
9130
vendor: 5,569 bytes, lines 9131-9268
9131/***/ "../autobahn_client_core/node_modules/moment/locale/gu.js":
9132/*!****************************************************************!*\
9133  !*** ../autobahn_client_core/node_modules/moment/locale/gu.js ***!
9134  \****************************************************************/
9135/*! no static exports found */
9136/***/ (function(module, exports, __webpack_require__) {
9137
9138var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9139
9140//! moment.js locale configuration
9141//! locale : Gujarati [gu]
9142//! author : Kaushik Thanki : https://github.com/Kaushik1987
9143;
9144
9145(function (global, factory) {
9146  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
9147				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
9148				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
9149				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
9150})(this, function (moment) {
9151  'use strict'; //! moment.js locale configuration
9152
9153  var symbolMap = {
9154    1: 'à«§',
9155    2: '૨',
9156    3: 'à«©',
9157    4: '૪',
9158    5: 'à««',
9159    6: '૬',
9160    7: 'à«­',
9161    8: 'à«®',
9162    9: '૯',
9163    0: '૦'
9164  },
9165      numberMap = {
9166    'à«§': '1',
9167    '૨': '2',
9168    'à«©': '3',
9169    '૪': '4',
9170    'à««': '5',
9171    '૬': '6',
9172    'à«­': '7',
9173    'à«®': '8',
9174    '૯': '9',
9175    '૦': '0'
9176  };
9177  var gu = moment.defineLocale('gu', {
9178    months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),
9179    monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),
9180    monthsParseExact: true,
9181    weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),
9182    weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
9183    weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
9184    longDateFormat: {
9185      LT: 'A h:mm વાગ્યે',
9186      LTS: 'A h:mm:ss વાગ્યે',
9187      L: 'DD/MM/YYYY',
9188      LL: 'D MMMM YYYY',
9189      LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
9190      LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'
9191    },
9192    calendar: {
9193      sameDay: '[આજ] LT',
9194      nextDay: '[કાલે] LT',
9195      nextWeek: 'dddd, LT',
9196      lastDay: '[ગઇકાલે] LT',
9197      lastWeek: '[પાછલા] dddd, LT',
9198      sameElse: 'L'
9199    },
9200    relativeTime: {
9201      future: '%s મા',
9202      past: '%s પહેલા',
9203      s: 'અમુક પળો',
9204      ss: '%d સેકંડ',
9205      m: 'એક મિનિટ',
9206      mm: '%d મિનિટ',
9207      h: 'એક કલાક',
9208      hh: '%d કલાક',
9209      d: 'એક દિવસ',
9210      dd: '%d દિવસ',
9211      M: 'એક મહિનો',
9212      MM: '%d મહિનો',
9213      y: 'એક વર્ષ',
9214      yy: '%d વર્ષ'
9215    },
9216    preparse: function preparse(string) {
9217      return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
9218        return numberMap[match];
9219      });
9220    },
9221    postformat: function postformat(string) {
9222      return string.replace(/\d/g, function (match) {
9223        return symbolMap[match];
9224      });
9225    },
9226    // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
9227    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
9228    meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
9229    meridiemHour: function meridiemHour(hour, meridiem) {
9230      if (hour === 12) {
9231        hour = 0;
9232      }
9233
9234      if (meridiem === 'રાત') {
9235        return hour < 4 ? hour : hour + 12;
9236      } else if (meridiem === 'સવાર') {
9237        return hour;
9238      } else if (meridiem === 'બપોર') {
9239        return hour >= 10 ? hour : hour + 12;
9240      } else if (meridiem === 'સાંજ') {
9241        return hour + 12;
9242      }
9243    },
9244    meridiem: function meridiem(hour, minute, isLower) {
9245      if (hour < 4) {
9246        return 'રાત';
9247      } else if (hour < 10) {
9248        return 'સવાર';
9249      } else if (hour < 17) {
9250        return 'બપોર';
9251      } else if (hour < 20) {
9252        return 'સાંજ';
9253      } else {
9254        return 'રાત';
9255      }
9256    },
9257    week: {
9258      dow: 0,
9259      // Sunday is the first day of the week.
9260      doy: 6 // The week that contains Jan 6th is the first week of the year.
9261
9262    }
9263  });
9264  return gu;
9265});
9266
9267/***/ }),
9268
vendor: 4,692 bytes, lines 9269-9383
9269/***/ "../autobahn_client_core/node_modules/moment/locale/he.js":
9270/*!****************************************************************!*\
9271  !*** ../autobahn_client_core/node_modules/moment/locale/he.js ***!
9272  \****************************************************************/
9273/*! no static exports found */
9274/***/ (function(module, exports, __webpack_require__) {
9275
9276var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9277
9278//! moment.js locale configuration
9279//! locale : Hebrew [he]
9280//! author : Tomer Cohen : https://github.com/tomer
9281//! author : Moshe Simantov : https://github.com/DevelopmentIL
9282//! author : Tal Ater : https://github.com/TalAter
9283;
9284
9285(function (global, factory) {
9286  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
9287				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
9288				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
9289				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
9290})(this, function (moment) {
9291  'use strict'; //! moment.js locale configuration
9292
9293  var he = moment.defineLocale('he', {
9294    months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
9295    monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
9296    weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
9297    weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
9298    weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
9299    longDateFormat: {
9300      LT: 'HH:mm',
9301      LTS: 'HH:mm:ss',
9302      L: 'DD/MM/YYYY',
9303      LL: 'D [ב]MMMM YYYY',
9304      LLL: 'D [ב]MMMM YYYY HH:mm',
9305      LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
9306      l: 'D/M/YYYY',
9307      ll: 'D MMM YYYY',
9308      lll: 'D MMM YYYY HH:mm',
9309      llll: 'ddd, D MMM YYYY HH:mm'
9310    },
9311    calendar: {
9312      sameDay: '[היום ב־]LT',
9313      nextDay: '[מחר ב־]LT',
9314      nextWeek: 'dddd [בשעה] LT',
9315      lastDay: '[אתמול ב־]LT',
9316      lastWeek: '[ביום] dddd [האחרון בשעה] LT',
9317      sameElse: 'L'
9318    },
9319    relativeTime: {
9320      future: 'בעוד %s',
9321      past: 'לפני %s',
9322      s: 'מספר שניות',
9323      ss: '%d שניות',
9324      m: 'דקה',
9325      mm: '%d דקות',
9326      h: 'שעה',
9327      hh: function hh(number) {
9328        if (number === 2) {
9329          return 'שעתיים';
9330        }
9331
9332        return number + ' שעות';
9333      },
9334      d: 'יום',
9335      dd: function dd(number) {
9336        if (number === 2) {
9337          return 'יומיים';
9338        }
9339
9340        return number + ' ימים';
9341      },
9342      M: 'חודש',
9343      MM: function MM(number) {
9344        if (number === 2) {
9345          return 'חודשיים';
9346        }
9347
9348        return number + ' חודשים';
9349      },
9350      y: 'שנה',
9351      yy: function yy(number) {
9352        if (number === 2) {
9353          return 'שנתיים';
9354        } else if (number % 10 === 0 && number !== 10) {
9355          return number + ' שנה';
9356        }
9357
9358        return number + ' שנים';
9359      }
9360    },
9361    meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
9362    isPM: function isPM(input) {
9363      return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
9364    },
9365    meridiem: function meridiem(hour, minute, isLower) {
9366      if (hour < 5) {
9367        return 'לפנות בוקר';
9368      } else if (hour < 10) {
9369        return 'בבוקר';
9370      } else if (hour < 12) {
9371        return isLower ? 'לפנה"צ' : 'לפני הצהריים';
9372      } else if (hour < 18) {
9373        return isLower ? 'אחה"צ' : 'אחרי הצהריים';
9374      } else {
9375        return 'בערב';
9376      }
9377    }
9378  });
9379  return he;
9380});
9381
9382/***/ }),
9383
vendor: 7,599 bytes, lines 9384-9532
9384/***/ "../autobahn_client_core/node_modules/moment/locale/hi.js":
9385/*!****************************************************************!*\
9386  !*** ../autobahn_client_core/node_modules/moment/locale/hi.js ***!
9387  \****************************************************************/
9388/*! no static exports found */
9389/***/ (function(module, exports, __webpack_require__) {
9390
9391var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9392
9393//! moment.js locale configuration
9394//! locale : Hindi [hi]
9395//! author : Mayank Singhal : https://github.com/mayanksinghal
9396;
9397
9398(function (global, factory) {
9399  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
9400				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
9401				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
9402				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
9403})(this, function (moment) {
9404  'use strict'; //! moment.js locale configuration
9405
9406  var symbolMap = {
9407    1: '१',
9408    2: '२',
9409    3: '३',
9410    4: '४',
9411    5: '५',
9412    6: '६',
9413    7: '७',
9414    8: '८',
9415    9: '९',
9416    0: '०'
9417  },
9418      numberMap = {
9419    '१': '1',
9420    '२': '2',
9421    '३': '3',
9422    '४': '4',
9423    '५': '5',
9424    '६': '6',
9425    '७': '7',
9426    '८': '8',
9427    '९': '9',
9428    '०': '0'
9429  },
9430      monthsParse = [/^जन/i, /^फ़र|फर/i, /^मार्च/i, /^अप्रै/i, /^मई/i, /^जून/i, /^जुल/i, /^अग/i, /^सितं|सित/i, /^अक्टू/i, /^नव|नवं/i, /^दिसं|दिस/i],
9431      shortMonthsParse = [/^जन/i, /^फ़र/i, /^मार्च/i, /^अप्रै/i, /^मई/i, /^जून/i, /^जुल/i, /^अग/i, /^सित/i, /^अक्टू/i, /^नव/i, /^दिस/i];
9432  var hi = moment.defineLocale('hi', {
9433    months: {
9434      format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
9435      standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split('_')
9436    },
9437    monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
9438    weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
9439    weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
9440    weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
9441    longDateFormat: {
9442      LT: 'A h:mm बजे',
9443      LTS: 'A h:mm:ss बजे',
9444      L: 'DD/MM/YYYY',
9445      LL: 'D MMMM YYYY',
9446      LLL: 'D MMMM YYYY, A h:mm बजे',
9447      LLLL: 'dddd, D MMMM YYYY, A h:mm बजे'
9448    },
9449    monthsParse: monthsParse,
9450    longMonthsParse: monthsParse,
9451    shortMonthsParse: shortMonthsParse,
9452    monthsRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
9453    monthsShortRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
9454    monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
9455    monthsShortStrictRegex: /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
9456    calendar: {
9457      sameDay: '[आज] LT',
9458      nextDay: '[कल] LT',
9459      nextWeek: 'dddd, LT',
9460      lastDay: '[कल] LT',
9461      lastWeek: '[पिछले] dddd, LT',
9462      sameElse: 'L'
9463    },
9464    relativeTime: {
9465      future: '%s में',
9466      past: '%s पहले',
9467      s: 'कुछ ही क्षण',
9468      ss: '%d सेकंड',
9469      m: 'एक मिनट',
9470      mm: '%d मिनट',
9471      h: 'एक घंटा',
9472      hh: '%d घंटे',
9473      d: 'एक दिन',
9474      dd: '%d दिन',
9475      M: 'एक महीने',
9476      MM: '%d महीने',
9477      y: 'एक वर्ष',
9478      yy: '%d वर्ष'
9479    },
9480    preparse: function preparse(string) {
9481      return string.replace(/[१२३४५६७८९०]/g, function (match) {
9482        return numberMap[match];
9483      });
9484    },
9485    postformat: function postformat(string) {
9486      return string.replace(/\d/g, function (match) {
9487        return symbolMap[match];
9488      });
9489    },
9490    // Hindi notation for meridiems are quite fuzzy in practice. While there exists
9491    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
9492    meridiemParse: /रात|सुबह|दोपहर|शाम/,
9493    meridiemHour: function meridiemHour(hour, meridiem) {
9494      if (hour === 12) {
9495        hour = 0;
9496      }
9497
9498      if (meridiem === 'रात') {
9499        return hour < 4 ? hour : hour + 12;
9500      } else if (meridiem === 'सुबह') {
9501        return hour;
9502      } else if (meridiem === 'दोपहर') {
9503        return hour >= 10 ? hour : hour + 12;
9504      } else if (meridiem === 'शाम') {
9505        return hour + 12;
9506      }
9507    },
9508    meridiem: function meridiem(hour, minute, isLower) {
9509      if (hour < 4) {
9510        return 'रात';
9511      } else if (hour < 10) {
9512        return 'सुबह';
9513      } else if (hour < 17) {
9514        return 'दोपहर';
9515      } else if (hour < 20) {
9516        return 'शाम';
9517      } else {
9518        return 'रात';
9519      }
9520    },
9521    week: {
9522      dow: 0,
9523      // Sunday is the first day of the week.
9524      doy: 6 // The week that contains Jan 6th is the first week of the year.
9525
9526    }
9527  });
9528  return hi;
9529});
9530
9531/***/ }),
9532
vendor: 5,856 bytes, lines 9533-9721
9533/***/ "../autobahn_client_core/node_modules/moment/locale/hr.js":
9534/*!****************************************************************!*\
9535  !*** ../autobahn_client_core/node_modules/moment/locale/hr.js ***!
9536  \****************************************************************/
9537/*! no static exports found */
9538/***/ (function(module, exports, __webpack_require__) {
9539
9540var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9541
9542//! moment.js locale configuration
9543//! locale : Croatian [hr]
9544//! author : Bojan Marković : https://github.com/bmarkovic
9545;
9546
9547(function (global, factory) {
9548  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
9549				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
9550				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
9551				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
9552})(this, function (moment) {
9553  'use strict'; //! moment.js locale configuration
9554
9555  function translate(number, withoutSuffix, key) {
9556    var result = number + ' ';
9557
9558    switch (key) {
9559      case 'ss':
9560        if (number === 1) {
9561          result += 'sekunda';
9562        } else if (number === 2 || number === 3 || number === 4) {
9563          result += 'sekunde';
9564        } else {
9565          result += 'sekundi';
9566        }
9567
9568        return result;
9569
9570      case 'm':
9571        return withoutSuffix ? 'jedna minuta' : 'jedne minute';
9572
9573      case 'mm':
9574        if (number === 1) {
9575          result += 'minuta';
9576        } else if (number === 2 || number === 3 || number === 4) {
9577          result += 'minute';
9578        } else {
9579          result += 'minuta';
9580        }
9581
9582        return result;
9583
9584      case 'h':
9585        return withoutSuffix ? 'jedan sat' : 'jednog sata';
9586
9587      case 'hh':
9588        if (number === 1) {
9589          result += 'sat';
9590        } else if (number === 2 || number === 3 || number === 4) {
9591          result += 'sata';
9592        } else {
9593          result += 'sati';
9594        }
9595
9596        return result;
9597
9598      case 'dd':
9599        if (number === 1) {
9600          result += 'dan';
9601        } else {
9602          result += 'dana';
9603        }
9604
9605        return result;
9606
9607      case 'MM':
9608        if (number === 1) {
9609          result += 'mjesec';
9610        } else if (number === 2 || number === 3 || number === 4) {
9611          result += 'mjeseca';
9612        } else {
9613          result += 'mjeseci';
9614        }
9615
9616        return result;
9617
9618      case 'yy':
9619        if (number === 1) {
9620          result += 'godina';
9621        } else if (number === 2 || number === 3 || number === 4) {
9622          result += 'godine';
9623        } else {
9624          result += 'godina';
9625        }
9626
9627        return result;
9628    }
9629  }
9630
9631  var hr = moment.defineLocale('hr', {
9632    months: {
9633      format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
9634      standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
9635    },
9636    monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
9637    monthsParseExact: true,
9638    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
9639    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
9640    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
9641    weekdaysParseExact: true,
9642    longDateFormat: {
9643      LT: 'H:mm',
9644      LTS: 'H:mm:ss',
9645      L: 'DD.MM.YYYY',
9646      LL: 'Do MMMM YYYY',
9647      LLL: 'Do MMMM YYYY H:mm',
9648      LLLL: 'dddd, Do MMMM YYYY H:mm'
9649    },
9650    calendar: {
9651      sameDay: '[danas u] LT',
9652      nextDay: '[sutra u] LT',
9653      nextWeek: function nextWeek() {
9654        switch (this.day()) {
9655          case 0:
9656            return '[u] [nedjelju] [u] LT';
9657
9658          case 3:
9659            return '[u] [srijedu] [u] LT';
9660
9661          case 6:
9662            return '[u] [subotu] [u] LT';
9663
9664          case 1:
9665          case 2:
9666          case 4:
9667          case 5:
9668            return '[u] dddd [u] LT';
9669        }
9670      },
9671      lastDay: '[jučer u] LT',
9672      lastWeek: function lastWeek() {
9673        switch (this.day()) {
9674          case 0:
9675            return '[prošlu] [nedjelju] [u] LT';
9676
9677          case 3:
9678            return '[prošlu] [srijedu] [u] LT';
9679
9680          case 6:
9681            return '[prošle] [subote] [u] LT';
9682
9683          case 1:
9684          case 2:
9685          case 4:
9686          case 5:
9687            return '[prošli] dddd [u] LT';
9688        }
9689      },
9690      sameElse: 'L'
9691    },
9692    relativeTime: {
9693      future: 'za %s',
9694      past: 'prije %s',
9695      s: 'par sekundi',
9696      ss: translate,
9697      m: translate,
9698      mm: translate,
9699      h: translate,
9700      hh: translate,
9701      d: 'dan',
9702      dd: translate,
9703      M: 'mjesec',
9704      MM: translate,
9705      y: 'godinu',
9706      yy: translate
9707    },
9708    dayOfMonthOrdinalParse: /\d{1,2}\./,
9709    ordinal: '%d.',
9710    week: {
9711      dow: 1,
9712      // Monday is the first day of the week.
9713      doy: 7 // The week that contains Jan 7th is the first week of the year.
9714
9715    }
9716  });
9717  return hr;
9718});
9719
9720/***/ }),
9721
vendor: 5,237 bytes, lines 9722-9862
9722/***/ "../autobahn_client_core/node_modules/moment/locale/hu.js":
9723/*!****************************************************************!*\
9724  !*** ../autobahn_client_core/node_modules/moment/locale/hu.js ***!
9725  \****************************************************************/
9726/*! no static exports found */
9727/***/ (function(module, exports, __webpack_require__) {
9728
9729var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9730
9731//! moment.js locale configuration
9732//! locale : Hungarian [hu]
9733//! author : Adam Brunner : https://github.com/adambrunner
9734//! author : Peter Viszt  : https://github.com/passatgt
9735;
9736
9737(function (global, factory) {
9738  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
9739				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
9740				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
9741				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
9742})(this, function (moment) {
9743  'use strict'; //! moment.js locale configuration
9744
9745  var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
9746
9747  function translate(number, withoutSuffix, key, isFuture) {
9748    var num = number;
9749
9750    switch (key) {
9751      case 's':
9752        return isFuture || withoutSuffix ? 'néhány másodperc' : 'néhány másodperce';
9753
9754      case 'ss':
9755        return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';
9756
9757      case 'm':
9758        return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
9759
9760      case 'mm':
9761        return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
9762
9763      case 'h':
9764        return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
9765
9766      case 'hh':
9767        return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
9768
9769      case 'd':
9770        return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
9771
9772      case 'dd':
9773        return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
9774
9775      case 'M':
9776        return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
9777
9778      case 'MM':
9779        return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
9780
9781      case 'y':
9782        return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
9783
9784      case 'yy':
9785        return num + (isFuture || withoutSuffix ? ' év' : ' éve');
9786    }
9787
9788    return '';
9789  }
9790
9791  function week(isFuture) {
9792    return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
9793  }
9794
9795  var hu = moment.defineLocale('hu', {
9796    months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
9797    monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split('_'),
9798    monthsParseExact: true,
9799    weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
9800    weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
9801    weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
9802    longDateFormat: {
9803      LT: 'H:mm',
9804      LTS: 'H:mm:ss',
9805      L: 'YYYY.MM.DD.',
9806      LL: 'YYYY. MMMM D.',
9807      LLL: 'YYYY. MMMM D. H:mm',
9808      LLLL: 'YYYY. MMMM D., dddd H:mm'
9809    },
9810    meridiemParse: /de|du/i,
9811    isPM: function isPM(input) {
9812      return input.charAt(1).toLowerCase() === 'u';
9813    },
9814    meridiem: function meridiem(hours, minutes, isLower) {
9815      if (hours < 12) {
9816        return isLower === true ? 'de' : 'DE';
9817      } else {
9818        return isLower === true ? 'du' : 'DU';
9819      }
9820    },
9821    calendar: {
9822      sameDay: '[ma] LT[-kor]',
9823      nextDay: '[holnap] LT[-kor]',
9824      nextWeek: function nextWeek() {
9825        return week.call(this, true);
9826      },
9827      lastDay: '[tegnap] LT[-kor]',
9828      lastWeek: function lastWeek() {
9829        return week.call(this, false);
9830      },
9831      sameElse: 'L'
9832    },
9833    relativeTime: {
9834      future: '%s múlva',
9835      past: '%s',
9836      s: translate,
9837      ss: translate,
9838      m: translate,
9839      mm: translate,
9840      h: translate,
9841      hh: translate,
9842      d: translate,
9843      dd: translate,
9844      M: translate,
9845      MM: translate,
9846      y: translate,
9847      yy: translate
9848    },
9849    dayOfMonthOrdinalParse: /\d{1,2}\./,
9850    ordinal: '%d.',
9851    week: {
9852      dow: 1,
9853      // Monday is the first day of the week.
9854      doy: 4 // The week that contains Jan 4th is the first week of the year.
9855
9856    }
9857  });
9858  return hu;
9859});
9860
9861/***/ }),
9862
vendor: 4,715 bytes, lines 9863-9973
9863/***/ "../autobahn_client_core/node_modules/moment/locale/hy-am.js":
9864/*!*******************************************************************!*\
9865  !*** ../autobahn_client_core/node_modules/moment/locale/hy-am.js ***!
9866  \*******************************************************************/
9867/*! no static exports found */
9868/***/ (function(module, exports, __webpack_require__) {
9869
9870var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9871
9872//! moment.js locale configuration
9873//! locale : Armenian [hy-am]
9874//! author : Armendarabyan : https://github.com/armendarabyan
9875;
9876
9877(function (global, factory) {
9878  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
9879				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
9880				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
9881				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
9882})(this, function (moment) {
9883  'use strict'; //! moment.js locale configuration
9884
9885  var hyAm = moment.defineLocale('hy-am', {
9886    months: {
9887      format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
9888      standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
9889    },
9890    monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
9891    weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
9892    weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
9893    weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
9894    longDateFormat: {
9895      LT: 'HH:mm',
9896      LTS: 'HH:mm:ss',
9897      L: 'DD.MM.YYYY',
9898      LL: 'D MMMM YYYY Õ©.',
9899      LLL: 'D MMMM YYYY Õ©., HH:mm',
9900      LLLL: 'dddd, D MMMM YYYY Õ©., HH:mm'
9901    },
9902    calendar: {
9903      sameDay: '[այսօր] LT',
9904      nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
9905      lastDay: '[երեկ] LT',
9906      nextWeek: function nextWeek() {
9907        return 'dddd [օրը ժամը] LT';
9908      },
9909      lastWeek: function lastWeek() {
9910        return '[անցած] dddd [օրը ժամը] LT';
9911      },
9912      sameElse: 'L'
9913    },
9914    relativeTime: {
9915      future: '%s Õ°Õ¥Õ¿Õ¸',
9916      past: '%s Õ¡Õ¼Õ¡Õ»',
9917      s: 'մի քանի վայրկյան',
9918      ss: '%d վայրկյան',
9919      m: 'րոպե',
9920      mm: '%d րոպե',
9921      h: 'ÕªÕ¡Õ´',
9922      hh: '%d ÕªÕ¡Õ´',
9923      d: 'օր',
9924      dd: '%d օր',
9925      M: 'Õ¡Õ´Õ«Õ½',
9926      MM: '%d Õ¡Õ´Õ«Õ½',
9927      y: 'տարի',
9928      yy: '%d տարի'
9929    },
9930    meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
9931    isPM: function isPM(input) {
9932      return /^(ցերեկվա|երեկոյան)$/.test(input);
9933    },
9934    meridiem: function meridiem(hour) {
9935      if (hour < 4) {
9936        return 'գիշերվա';
9937      } else if (hour < 12) {
9938        return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
9939      } else if (hour < 17) {
9940        return 'ցերեկվա';
9941      } else {
9942        return 'երեկոյան';
9943      }
9944    },
9945    dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
9946    ordinal: function ordinal(number, period) {
9947      switch (period) {
9948        case 'DDD':
9949        case 'w':
9950        case 'W':
9951        case 'DDDo':
9952          if (number === 1) {
9953            return number + '-Õ«Õ¶';
9954          }
9955
9956          return number + '-րդ';
9957
9958        default:
9959          return number;
9960      }
9961    },
9962    week: {
9963      dow: 1,
9964      // Monday is the first day of the week.
9965      doy: 7 // The week that contains Jan 7th is the first week of the year.
9966
9967    }
9968  });
9969  return hyAm;
9970});
9971
9972/***/ }),
9973
vendor: 3,949 bytes, lines 9974-10071
9974/***/ "../autobahn_client_core/node_modules/moment/locale/id.js":
9975/*!****************************************************************!*\
9976  !*** ../autobahn_client_core/node_modules/moment/locale/id.js ***!
9977  \****************************************************************/
9978/*! no static exports found */
9979/***/ (function(module, exports, __webpack_require__) {
9980
9981var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
9982
9983//! moment.js locale configuration
9984//! locale : Indonesian [id]
9985//! author : Mohammad Satrio Utomo : https://github.com/tyok
9986//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan
9987;
9988
9989(function (global, factory) {
9990  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
9991				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
9992				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
9993				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
9994})(this, function (moment) {
9995  'use strict'; //! moment.js locale configuration
9996
9997  var id = moment.defineLocale('id', {
9998    months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
9999    monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
10000    weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
10001    weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
10002    weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
10003    longDateFormat: {
10004      LT: 'HH.mm',
10005      LTS: 'HH.mm.ss',
10006      L: 'DD/MM/YYYY',
10007      LL: 'D MMMM YYYY',
10008      LLL: 'D MMMM YYYY [pukul] HH.mm',
10009      LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
10010    },
10011    meridiemParse: /pagi|siang|sore|malam/,
10012    meridiemHour: function meridiemHour(hour, meridiem) {
10013      if (hour === 12) {
10014        hour = 0;
10015      }
10016
10017      if (meridiem === 'pagi') {
10018        return hour;
10019      } else if (meridiem === 'siang') {
10020        return hour >= 11 ? hour : hour + 12;
10021      } else if (meridiem === 'sore' || meridiem === 'malam') {
10022        return hour + 12;
10023      }
10024    },
10025    meridiem: function meridiem(hours, minutes, isLower) {
10026      if (hours < 11) {
10027        return 'pagi';
10028      } else if (hours < 15) {
10029        return 'siang';
10030      } else if (hours < 19) {
10031        return 'sore';
10032      } else {
10033        return 'malam';
10034      }
10035    },
10036    calendar: {
10037      sameDay: '[Hari ini pukul] LT',
10038      nextDay: '[Besok pukul] LT',
10039      nextWeek: 'dddd [pukul] LT',
10040      lastDay: '[Kemarin pukul] LT',
10041      lastWeek: 'dddd [lalu pukul] LT',
10042      sameElse: 'L'
10043    },
10044    relativeTime: {
10045      future: 'dalam %s',
10046      past: '%s yang lalu',
10047      s: 'beberapa detik',
10048      ss: '%d detik',
10049      m: 'semenit',
10050      mm: '%d menit',
10051      h: 'sejam',
10052      hh: '%d jam',
10053      d: 'sehari',
10054      dd: '%d hari',
10055      M: 'sebulan',
10056      MM: '%d bulan',
10057      y: 'setahun',
10058      yy: '%d tahun'
10059    },
10060    week: {
10061      dow: 0,
10062      // Sunday is the first day of the week.
10063      doy: 6 // The week that contains Jan 6th is the first week of the year.
10064
10065    }
10066  });
10067  return id;
10068});
10069
10070/***/ }),
10071
vendor: 5,574 bytes, lines 10072-10240
10072/***/ "../autobahn_client_core/node_modules/moment/locale/is.js":
10073/*!****************************************************************!*\
10074  !*** ../autobahn_client_core/node_modules/moment/locale/is.js ***!
10075  \****************************************************************/
10076/*! no static exports found */
10077/***/ (function(module, exports, __webpack_require__) {
10078
10079var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10080
10081//! moment.js locale configuration
10082//! locale : Icelandic [is]
10083//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik
10084;
10085
10086(function (global, factory) {
10087  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
10088				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
10089				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
10090				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
10091})(this, function (moment) {
10092  'use strict'; //! moment.js locale configuration
10093
10094  function plural(n) {
10095    if (n % 100 === 11) {
10096      return true;
10097    } else if (n % 10 === 1) {
10098      return false;
10099    }
10100
10101    return true;
10102  }
10103
10104  function translate(number, withoutSuffix, key, isFuture) {
10105    var result = number + ' ';
10106
10107    switch (key) {
10108      case 's':
10109        return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
10110
10111      case 'ss':
10112        if (plural(number)) {
10113          return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');
10114        }
10115
10116        return result + 'sekúnda';
10117
10118      case 'm':
10119        return withoutSuffix ? 'mínúta' : 'mínútu';
10120
10121      case 'mm':
10122        if (plural(number)) {
10123          return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
10124        } else if (withoutSuffix) {
10125          return result + 'mínúta';
10126        }
10127
10128        return result + 'mínútu';
10129
10130      case 'hh':
10131        if (plural(number)) {
10132          return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
10133        }
10134
10135        return result + 'klukkustund';
10136
10137      case 'd':
10138        if (withoutSuffix) {
10139          return 'dagur';
10140        }
10141
10142        return isFuture ? 'dag' : 'degi';
10143
10144      case 'dd':
10145        if (plural(number)) {
10146          if (withoutSuffix) {
10147            return result + 'dagar';
10148          }
10149
10150          return result + (isFuture ? 'daga' : 'dögum');
10151        } else if (withoutSuffix) {
10152          return result + 'dagur';
10153        }
10154
10155        return result + (isFuture ? 'dag' : 'degi');
10156
10157      case 'M':
10158        if (withoutSuffix) {
10159          return 'mánuður';
10160        }
10161
10162        return isFuture ? 'mánuð' : 'mánuði';
10163
10164      case 'MM':
10165        if (plural(number)) {
10166          if (withoutSuffix) {
10167            return result + 'mánuðir';
10168          }
10169
10170          return result + (isFuture ? 'mánuði' : 'mánuðum');
10171        } else if (withoutSuffix) {
10172          return result + 'mánuður';
10173        }
10174
10175        return result + (isFuture ? 'mánuð' : 'mánuði');
10176
10177      case 'y':
10178        return withoutSuffix || isFuture ? 'ár' : 'ári';
10179
10180      case 'yy':
10181        if (plural(number)) {
10182          return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
10183        }
10184
10185        return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
10186    }
10187  }
10188
10189  var is = moment.defineLocale('is', {
10190    months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
10191    monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
10192    weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
10193    weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
10194    weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
10195    longDateFormat: {
10196      LT: 'H:mm',
10197      LTS: 'H:mm:ss',
10198      L: 'DD.MM.YYYY',
10199      LL: 'D. MMMM YYYY',
10200      LLL: 'D. MMMM YYYY [kl.] H:mm',
10201      LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm'
10202    },
10203    calendar: {
10204      sameDay: '[í dag kl.] LT',
10205      nextDay: '[á morgun kl.] LT',
10206      nextWeek: 'dddd [kl.] LT',
10207      lastDay: '[í gær kl.] LT',
10208      lastWeek: '[síðasta] dddd [kl.] LT',
10209      sameElse: 'L'
10210    },
10211    relativeTime: {
10212      future: 'eftir %s',
10213      past: 'fyrir %s síðan',
10214      s: translate,
10215      ss: translate,
10216      m: translate,
10217      mm: translate,
10218      h: 'klukkustund',
10219      hh: translate,
10220      d: translate,
10221      dd: translate,
10222      M: translate,
10223      MM: translate,
10224      y: translate,
10225      yy: translate
10226    },
10227    dayOfMonthOrdinalParse: /\d{1,2}\./,
10228    ordinal: '%d.',
10229    week: {
10230      dow: 1,
10231      // Monday is the first day of the week.
10232      doy: 4 // The week that contains Jan 4th is the first week of the year.
10233
10234    }
10235  });
10236  return is;
10237});
10238
10239/***/ }),
10240
vendor: 3,521 bytes, lines 10241-10324
10241/***/ "../autobahn_client_core/node_modules/moment/locale/it-ch.js":
10242/*!*******************************************************************!*\
10243  !*** ../autobahn_client_core/node_modules/moment/locale/it-ch.js ***!
10244  \*******************************************************************/
10245/*! no static exports found */
10246/***/ (function(module, exports, __webpack_require__) {
10247
10248var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10249
10250//! moment.js locale configuration
10251//! locale : Italian (Switzerland) [it-ch]
10252//! author : xfh : https://github.com/xfh
10253;
10254
10255(function (global, factory) {
10256  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
10257				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
10258				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
10259				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
10260})(this, function (moment) {
10261  'use strict'; //! moment.js locale configuration
10262
10263  var itCh = moment.defineLocale('it-ch', {
10264    months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
10265    monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
10266    weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
10267    weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
10268    weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
10269    longDateFormat: {
10270      LT: 'HH:mm',
10271      LTS: 'HH:mm:ss',
10272      L: 'DD.MM.YYYY',
10273      LL: 'D MMMM YYYY',
10274      LLL: 'D MMMM YYYY HH:mm',
10275      LLLL: 'dddd D MMMM YYYY HH:mm'
10276    },
10277    calendar: {
10278      sameDay: '[Oggi alle] LT',
10279      nextDay: '[Domani alle] LT',
10280      nextWeek: 'dddd [alle] LT',
10281      lastDay: '[Ieri alle] LT',
10282      lastWeek: function lastWeek() {
10283        switch (this.day()) {
10284          case 0:
10285            return '[la scorsa] dddd [alle] LT';
10286
10287          default:
10288            return '[lo scorso] dddd [alle] LT';
10289        }
10290      },
10291      sameElse: 'L'
10292    },
10293    relativeTime: {
10294      future: function future(s) {
10295        return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
10296      },
10297      past: '%s fa',
10298      s: 'alcuni secondi',
10299      ss: '%d secondi',
10300      m: 'un minuto',
10301      mm: '%d minuti',
10302      h: "un'ora",
10303      hh: '%d ore',
10304      d: 'un giorno',
10305      dd: '%d giorni',
10306      M: 'un mese',
10307      MM: '%d mesi',
10308      y: 'un anno',
10309      yy: '%d anni'
10310    },
10311    dayOfMonthOrdinalParse: /\d{1,2}º/,
10312    ordinal: '%dº',
10313    week: {
10314      dow: 1,
10315      // Monday is the first day of the week.
10316      doy: 4 // The week that contains Jan 4th is the first week of the year.
10317
10318    }
10319  });
10320  return itCh;
10321});
10322
10323/***/ }),
10324
vendor: 4,144 bytes, lines 10325-10418
10325/***/ "../autobahn_client_core/node_modules/moment/locale/it.js":
10326/*!****************************************************************!*\
10327  !*** ../autobahn_client_core/node_modules/moment/locale/it.js ***!
10328  \****************************************************************/
10329/*! no static exports found */
10330/***/ (function(module, exports, __webpack_require__) {
10331
10332var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10333
10334//! moment.js locale configuration
10335//! locale : Italian [it]
10336//! author : Lorenzo : https://github.com/aliem
10337//! author: Mattia Larentis: https://github.com/nostalgiaz
10338//! author: Marco : https://github.com/Manfre98
10339;
10340
10341(function (global, factory) {
10342  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
10343				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
10344				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
10345				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
10346})(this, function (moment) {
10347  'use strict'; //! moment.js locale configuration
10348
10349  var it = moment.defineLocale('it', {
10350    months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
10351    monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
10352    weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
10353    weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
10354    weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
10355    longDateFormat: {
10356      LT: 'HH:mm',
10357      LTS: 'HH:mm:ss',
10358      L: 'DD/MM/YYYY',
10359      LL: 'D MMMM YYYY',
10360      LLL: 'D MMMM YYYY HH:mm',
10361      LLLL: 'dddd D MMMM YYYY HH:mm'
10362    },
10363    calendar: {
10364      sameDay: function sameDay() {
10365        return '[Oggi a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT';
10366      },
10367      nextDay: function nextDay() {
10368        return '[Domani a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT';
10369      },
10370      nextWeek: function nextWeek() {
10371        return 'dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT';
10372      },
10373      lastDay: function lastDay() {
10374        return '[Ieri a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT';
10375      },
10376      lastWeek: function lastWeek() {
10377        switch (this.day()) {
10378          case 0:
10379            return '[La scorsa] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT';
10380
10381          default:
10382            return '[Lo scorso] dddd [a' + (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") + ']LT';
10383        }
10384      },
10385      sameElse: 'L'
10386    },
10387    relativeTime: {
10388      future: 'tra %s',
10389      past: '%s fa',
10390      s: 'alcuni secondi',
10391      ss: '%d secondi',
10392      m: 'un minuto',
10393      mm: '%d minuti',
10394      h: "un'ora",
10395      hh: '%d ore',
10396      d: 'un giorno',
10397      dd: '%d giorni',
10398      w: 'una settimana',
10399      ww: '%d settimane',
10400      M: 'un mese',
10401      MM: '%d mesi',
10402      y: 'un anno',
10403      yy: '%d anni'
10404    },
10405    dayOfMonthOrdinalParse: /\d{1,2}º/,
10406    ordinal: '%dº',
10407    week: {
10408      dow: 1,
10409      // Monday is the first day of the week.
10410      doy: 4 // The week that contains Jan 4th is the first week of the year.
10411
10412    }
10413  });
10414  return it;
10415});
10416
10417/***/ }),
10418
vendor: 5,152 bytes, lines 10419-10579
10419/***/ "../autobahn_client_core/node_modules/moment/locale/ja.js":
10420/*!****************************************************************!*\
10421  !*** ../autobahn_client_core/node_modules/moment/locale/ja.js ***!
10422  \****************************************************************/
10423/*! no static exports found */
10424/***/ (function(module, exports, __webpack_require__) {
10425
10426var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10427
10428//! moment.js locale configuration
10429//! locale : Japanese [ja]
10430//! author : LI Long : https://github.com/baryon
10431;
10432
10433(function (global, factory) {
10434  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
10435				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
10436				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
10437				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
10438})(this, function (moment) {
10439  'use strict'; //! moment.js locale configuration
10440
10441  var ja = moment.defineLocale('ja', {
10442    eras: [{
10443      since: '2019-05-01',
10444      offset: 1,
10445      name: '令和',
10446      narrow: '㋿',
10447      abbr: 'R'
10448    }, {
10449      since: '1989-01-08',
10450      until: '2019-04-30',
10451      offset: 1,
10452      name: '平成',
10453      narrow: '㍻',
10454      abbr: 'H'
10455    }, {
10456      since: '1926-12-25',
10457      until: '1989-01-07',
10458      offset: 1,
10459      name: '昭和',
10460      narrow: '㍼',
10461      abbr: 'S'
10462    }, {
10463      since: '1912-07-30',
10464      until: '1926-12-24',
10465      offset: 1,
10466      name: '大正',
10467      narrow: '㍽',
10468      abbr: 'T'
10469    }, {
10470      since: '1873-01-01',
10471      until: '1912-07-29',
10472      offset: 6,
10473      name: '明治',
10474      narrow: '㍾',
10475      abbr: 'M'
10476    }, {
10477      since: '0001-01-01',
10478      until: '1873-12-31',
10479      offset: 1,
10480      name: '西暦',
10481      narrow: 'AD',
10482      abbr: 'AD'
10483    }, {
10484      since: '0000-12-31',
10485      until: -Infinity,
10486      offset: 1,
10487      name: '紀元前',
10488      narrow: 'BC',
10489      abbr: 'BC'
10490    }],
10491    eraYearOrdinalRegex: /(元|\d+)年/,
10492    eraYearOrdinalParse: function eraYearOrdinalParse(input, match) {
10493      return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
10494    },
10495    months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
10496    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
10497    weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
10498    weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
10499    weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
10500    longDateFormat: {
10501      LT: 'HH:mm',
10502      LTS: 'HH:mm:ss',
10503      L: 'YYYY/MM/DD',
10504      LL: 'YYYY年M月D日',
10505      LLL: 'YYYY年M月D日 HH:mm',
10506      LLLL: 'YYYY年M月D日 dddd HH:mm',
10507      l: 'YYYY/MM/DD',
10508      ll: 'YYYY年M月D日',
10509      lll: 'YYYY年M月D日 HH:mm',
10510      llll: 'YYYY年M月D日(ddd) HH:mm'
10511    },
10512    meridiemParse: /午前|午後/i,
10513    isPM: function isPM(input) {
10514      return input === '午後';
10515    },
10516    meridiem: function meridiem(hour, minute, isLower) {
10517      if (hour < 12) {
10518        return '午前';
10519      } else {
10520        return '午後';
10521      }
10522    },
10523    calendar: {
10524      sameDay: '[今日] LT',
10525      nextDay: '[明日] LT',
10526      nextWeek: function nextWeek(now) {
10527        if (now.week() !== this.week()) {
10528          return '[来週]dddd LT';
10529        } else {
10530          return 'dddd LT';
10531        }
10532      },
10533      lastDay: '[昨日] LT',
10534      lastWeek: function lastWeek(now) {
10535        if (this.week() !== now.week()) {
10536          return '[先週]dddd LT';
10537        } else {
10538          return 'dddd LT';
10539        }
10540      },
10541      sameElse: 'L'
10542    },
10543    dayOfMonthOrdinalParse: /\d{1,2}日/,
10544    ordinal: function ordinal(number, period) {
10545      switch (period) {
10546        case 'y':
10547          return number === 1 ? '元年' : number + '年';
10548
10549        case 'd':
10550        case 'D':
10551        case 'DDD':
10552          return number + '日';
10553
10554        default:
10555          return number;
10556      }
10557    },
10558    relativeTime: {
10559      future: '%s後',
10560      past: '%s前',
10561      s: '数秒',
10562      ss: '%d秒',
10563      m: '1分',
10564      mm: '%d分',
10565      h: '1時間',
10566      hh: '%d時間',
10567      d: '1日',
10568      dd: '%d日',
10569      M: '1ヶ月',
10570      MM: '%dヶ月',
10571      y: '1å¹´',
10572      yy: '%då¹´'
10573    }
10574  });
10575  return ja;
10576});
10577
10578/***/ }),
10579
vendor: 3,958 bytes, lines 10580-10677
10580/***/ "../autobahn_client_core/node_modules/moment/locale/jv.js":
10581/*!****************************************************************!*\
10582  !*** ../autobahn_client_core/node_modules/moment/locale/jv.js ***!
10583  \****************************************************************/
10584/*! no static exports found */
10585/***/ (function(module, exports, __webpack_require__) {
10586
10587var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10588
10589//! moment.js locale configuration
10590//! locale : Javanese [jv]
10591//! author : Rony Lantip : https://github.com/lantip
10592//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa
10593;
10594
10595(function (global, factory) {
10596  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
10597				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
10598				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
10599				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
10600})(this, function (moment) {
10601  'use strict'; //! moment.js locale configuration
10602
10603  var jv = moment.defineLocale('jv', {
10604    months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
10605    monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
10606    weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
10607    weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
10608    weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
10609    longDateFormat: {
10610      LT: 'HH.mm',
10611      LTS: 'HH.mm.ss',
10612      L: 'DD/MM/YYYY',
10613      LL: 'D MMMM YYYY',
10614      LLL: 'D MMMM YYYY [pukul] HH.mm',
10615      LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
10616    },
10617    meridiemParse: /enjing|siyang|sonten|ndalu/,
10618    meridiemHour: function meridiemHour(hour, meridiem) {
10619      if (hour === 12) {
10620        hour = 0;
10621      }
10622
10623      if (meridiem === 'enjing') {
10624        return hour;
10625      } else if (meridiem === 'siyang') {
10626        return hour >= 11 ? hour : hour + 12;
10627      } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
10628        return hour + 12;
10629      }
10630    },
10631    meridiem: function meridiem(hours, minutes, isLower) {
10632      if (hours < 11) {
10633        return 'enjing';
10634      } else if (hours < 15) {
10635        return 'siyang';
10636      } else if (hours < 19) {
10637        return 'sonten';
10638      } else {
10639        return 'ndalu';
10640      }
10641    },
10642    calendar: {
10643      sameDay: '[Dinten puniko pukul] LT',
10644      nextDay: '[Mbenjang pukul] LT',
10645      nextWeek: 'dddd [pukul] LT',
10646      lastDay: '[Kala wingi pukul] LT',
10647      lastWeek: 'dddd [kepengker pukul] LT',
10648      sameElse: 'L'
10649    },
10650    relativeTime: {
10651      future: 'wonten ing %s',
10652      past: '%s ingkang kepengker',
10653      s: 'sawetawis detik',
10654      ss: '%d detik',
10655      m: 'setunggal menit',
10656      mm: '%d menit',
10657      h: 'setunggal jam',
10658      hh: '%d jam',
10659      d: 'sedinten',
10660      dd: '%d dinten',
10661      M: 'sewulan',
10662      MM: '%d wulan',
10663      y: 'setaun',
10664      yy: '%d taun'
10665    },
10666    week: {
10667      dow: 1,
10668      // Monday is the first day of the week.
10669      doy: 7 // The week that contains Jan 7th is the first week of the year.
10670
10671    }
10672  });
10673  return jv;
10674});
10675
10676/***/ }),
10677
vendor: 4,877 bytes, lines 10678-10781
10678/***/ "../autobahn_client_core/node_modules/moment/locale/ka.js":
10679/*!****************************************************************!*\
10680  !*** ../autobahn_client_core/node_modules/moment/locale/ka.js ***!
10681  \****************************************************************/
10682/*! no static exports found */
10683/***/ (function(module, exports, __webpack_require__) {
10684
10685var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10686
10687//! moment.js locale configuration
10688//! locale : Georgian [ka]
10689//! author : Irakli Janiashvili : https://github.com/IrakliJani
10690;
10691
10692(function (global, factory) {
10693  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
10694				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
10695				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
10696				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
10697})(this, function (moment) {
10698  'use strict'; //! moment.js locale configuration
10699
10700  var ka = moment.defineLocale('ka', {
10701    months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
10702    monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
10703    weekdays: {
10704      standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
10705      format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
10706      isFormat: /(წინა|შემდეგ)/
10707    },
10708    weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
10709    weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
10710    longDateFormat: {
10711      LT: 'HH:mm',
10712      LTS: 'HH:mm:ss',
10713      L: 'DD/MM/YYYY',
10714      LL: 'D MMMM YYYY',
10715      LLL: 'D MMMM YYYY HH:mm',
10716      LLLL: 'dddd, D MMMM YYYY HH:mm'
10717    },
10718    calendar: {
10719      sameDay: '[დღეს] LT[-ზე]',
10720      nextDay: '[ხვალ] LT[-ზე]',
10721      lastDay: '[გუშინ] LT[-ზე]',
10722      nextWeek: '[შემდეგ] dddd LT[-ზე]',
10723      lastWeek: '[წინა] dddd LT-ზე',
10724      sameElse: 'L'
10725    },
10726    relativeTime: {
10727      future: function future(s) {
10728        return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function ($0, $1, $2) {
10729          return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
10730        });
10731      },
10732      past: function past(s) {
10733        if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
10734          return s.replace(/(ი|ე)$/, 'ის წინ');
10735        }
10736
10737        if (/წელი/.test(s)) {
10738          return s.replace(/წელი$/, 'წლის წინ');
10739        }
10740
10741        return s;
10742      },
10743      s: 'რამდენიმე წამი',
10744      ss: '%d წამი',
10745      m: 'წუთი',
10746      mm: '%d წუთი',
10747      h: 'საათი',
10748      hh: '%d საათი',
10749      d: 'დღე',
10750      dd: '%d დღე',
10751      M: 'თვე',
10752      MM: '%d თვე',
10753      y: 'წელი',
10754      yy: '%d წელი'
10755    },
10756    dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
10757    ordinal: function ordinal(number) {
10758      if (number === 0) {
10759        return number;
10760      }
10761
10762      if (number === 1) {
10763        return number + '-ლი';
10764      }
10765
10766      if (number < 20 || number <= 100 && number % 20 === 0 || number % 100 === 0) {
10767        return 'მე-' + number;
10768      }
10769
10770      return number + '-ე';
10771    },
10772    week: {
10773      dow: 1,
10774      doy: 7
10775    }
10776  });
10777  return ka;
10778});
10779
10780/***/ }),
10781
vendor: 4,091 bytes, lines 10782-10881
10782/***/ "../autobahn_client_core/node_modules/moment/locale/kk.js":
10783/*!****************************************************************!*\
10784  !*** ../autobahn_client_core/node_modules/moment/locale/kk.js ***!
10785  \****************************************************************/
10786/*! no static exports found */
10787/***/ (function(module, exports, __webpack_require__) {
10788
10789var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10790
10791//! moment.js locale configuration
10792//! locale : Kazakh [kk]
10793//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan
10794;
10795
10796(function (global, factory) {
10797  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
10798				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
10799				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
10800				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
10801})(this, function (moment) {
10802  'use strict'; //! moment.js locale configuration
10803
10804  var suffixes = {
10805    0: '-ші',
10806    1: '-ші',
10807    2: '-ші',
10808    3: '-ші',
10809    4: '-ші',
10810    5: '-ші',
10811    6: '-шы',
10812    7: '-ші',
10813    8: '-ші',
10814    9: '-шы',
10815    10: '-шы',
10816    20: '-шы',
10817    30: '-шы',
10818    40: '-шы',
10819    50: '-ші',
10820    60: '-шы',
10821    70: '-ші',
10822    80: '-ші',
10823    90: '-шы',
10824    100: '-ші'
10825  };
10826  var kk = moment.defineLocale('kk', {
10827    months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
10828    monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
10829    weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
10830    weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
10831    weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
10832    longDateFormat: {
10833      LT: 'HH:mm',
10834      LTS: 'HH:mm:ss',
10835      L: 'DD.MM.YYYY',
10836      LL: 'D MMMM YYYY',
10837      LLL: 'D MMMM YYYY HH:mm',
10838      LLLL: 'dddd, D MMMM YYYY HH:mm'
10839    },
10840    calendar: {
10841      sameDay: '[Бүгін сағат] LT',
10842      nextDay: '[Ертең сағат] LT',
10843      nextWeek: 'dddd [сағат] LT',
10844      lastDay: '[Кеше сағат] LT',
10845      lastWeek: '[Өткен аптаның] dddd [сағат] LT',
10846      sameElse: 'L'
10847    },
10848    relativeTime: {
10849      future: '%s ішінде',
10850      past: '%s бұрын',
10851      s: 'бірнеше секунд',
10852      ss: '%d секунд',
10853      m: 'бір минут',
10854      mm: '%d минут',
10855      h: 'бір сағат',
10856      hh: '%d сағат',
10857      d: 'бір күн',
10858      dd: '%d күн',
10859      M: 'бір ай',
10860      MM: '%d ай',
10861      y: 'бір жыл',
10862      yy: '%d жыл'
10863    },
10864    dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
10865    ordinal: function ordinal(number) {
10866      var a = number % 10,
10867          b = number >= 100 ? 100 : null;
10868      return number + (suffixes[number] || suffixes[a] || suffixes[b]);
10869    },
10870    week: {
10871      dow: 1,
10872      // Monday is the first day of the week.
10873      doy: 7 // The week that contains Jan 7th is the first week of the year.
10874
10875    }
10876  });
10877  return kk;
10878});
10879
10880/***/ }),
10881
vendor: 4,854 bytes, lines 10882-11001
10882/***/ "../autobahn_client_core/node_modules/moment/locale/km.js":
10883/*!****************************************************************!*\
10884  !*** ../autobahn_client_core/node_modules/moment/locale/km.js ***!
10885  \****************************************************************/
10886/*! no static exports found */
10887/***/ (function(module, exports, __webpack_require__) {
10888
10889var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10890
10891//! moment.js locale configuration
10892//! locale : Cambodian [km]
10893//! author : Kruy Vanna : https://github.com/kruyvanna
10894;
10895
10896(function (global, factory) {
10897  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
10898				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
10899				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
10900				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
10901})(this, function (moment) {
10902  'use strict'; //! moment.js locale configuration
10903
10904  var symbolMap = {
10905    1: '១',
10906    2: '២',
10907    3: '៣',
10908    4: '៤',
10909    5: '៥',
10910    6: '៦',
10911    7: '៧',
10912    8: '៨',
10913    9: '៩',
10914    0: '០'
10915  },
10916      numberMap = {
10917    '១': '1',
10918    '២': '2',
10919    '៣': '3',
10920    '៤': '4',
10921    '៥': '5',
10922    '៦': '6',
10923    '៧': '7',
10924    '៨': '8',
10925    '៩': '9',
10926    '០': '0'
10927  };
10928  var km = moment.defineLocale('km', {
10929    months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
10930    monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split('_'),
10931    weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
10932    weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
10933    weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
10934    weekdaysParseExact: true,
10935    longDateFormat: {
10936      LT: 'HH:mm',
10937      LTS: 'HH:mm:ss',
10938      L: 'DD/MM/YYYY',
10939      LL: 'D MMMM YYYY',
10940      LLL: 'D MMMM YYYY HH:mm',
10941      LLLL: 'dddd, D MMMM YYYY HH:mm'
10942    },
10943    meridiemParse: /ព្រឹក|ល្ងាច/,
10944    isPM: function isPM(input) {
10945      return input === 'ល្ងាច';
10946    },
10947    meridiem: function meridiem(hour, minute, isLower) {
10948      if (hour < 12) {
10949        return 'ព្រឹក';
10950      } else {
10951        return 'ល្ងាច';
10952      }
10953    },
10954    calendar: {
10955      sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
10956      nextDay: '[ស្អែក ម៉ោង] LT',
10957      nextWeek: 'dddd [ម៉ោង] LT',
10958      lastDay: '[ម្សិលមិញ ម៉ោង] LT',
10959      lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
10960      sameElse: 'L'
10961    },
10962    relativeTime: {
10963      future: '%sទៀត',
10964      past: '%sមុន',
10965      s: 'ប៉ុន្មានវិនាទី',
10966      ss: '%d វិនាទី',
10967      m: 'មួយនាទី',
10968      mm: '%d នាទី',
10969      h: 'មួយម៉ោង',
10970      hh: '%d ម៉ោង',
10971      d: 'មួយថ្ងៃ',
10972      dd: '%d ថ្ងៃ',
10973      M: 'មួយខែ',
10974      MM: '%d ខែ',
10975      y: 'មួយឆ្នាំ',
10976      yy: '%d ឆ្នាំ'
10977    },
10978    dayOfMonthOrdinalParse: /ទី\d{1,2}/,
10979    ordinal: 'ទី%d',
10980    preparse: function preparse(string) {
10981      return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
10982        return numberMap[match];
10983      });
10984    },
10985    postformat: function postformat(string) {
10986      return string.replace(/\d/g, function (match) {
10987        return symbolMap[match];
10988      });
10989    },
10990    week: {
10991      dow: 1,
10992      // Monday is the first day of the week.
10993      doy: 4 // The week that contains Jan 4th is the first week of the year.
10994
10995    }
10996  });
10997  return km;
10998});
10999
11000/***/ }),
11001
vendor: 5,694 bytes, lines 11002-11141
11002/***/ "../autobahn_client_core/node_modules/moment/locale/kn.js":
11003/*!****************************************************************!*\
11004  !*** ../autobahn_client_core/node_modules/moment/locale/kn.js ***!
11005  \****************************************************************/
11006/*! no static exports found */
11007/***/ (function(module, exports, __webpack_require__) {
11008
11009var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11010
11011//! moment.js locale configuration
11012//! locale : Kannada [kn]
11013//! author : Rajeev Naik : https://github.com/rajeevnaikte
11014;
11015
11016(function (global, factory) {
11017  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11018				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11019				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11020				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11021})(this, function (moment) {
11022  'use strict'; //! moment.js locale configuration
11023
11024  var symbolMap = {
11025    1: 'à³§',
11026    2: '೨',
11027    3: '೩',
11028    4: '೪',
11029    5: '೫',
11030    6: '೬',
11031    7: 'à³­',
11032    8: 'à³®',
11033    9: '೯',
11034    0: '೦'
11035  },
11036      numberMap = {
11037    'à³§': '1',
11038    '೨': '2',
11039    '೩': '3',
11040    '೪': '4',
11041    '೫': '5',
11042    '೬': '6',
11043    'à³­': '7',
11044    'à³®': '8',
11045    '೯': '9',
11046    '೦': '0'
11047  };
11048  var kn = moment.defineLocale('kn', {
11049    months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),
11050    monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),
11051    monthsParseExact: true,
11052    weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),
11053    weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
11054    weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
11055    longDateFormat: {
11056      LT: 'A h:mm',
11057      LTS: 'A h:mm:ss',
11058      L: 'DD/MM/YYYY',
11059      LL: 'D MMMM YYYY',
11060      LLL: 'D MMMM YYYY, A h:mm',
11061      LLLL: 'dddd, D MMMM YYYY, A h:mm'
11062    },
11063    calendar: {
11064      sameDay: '[ಇಂದು] LT',
11065      nextDay: '[ನಾಳೆ] LT',
11066      nextWeek: 'dddd, LT',
11067      lastDay: '[ನಿನ್ನೆ] LT',
11068      lastWeek: '[ಕೊನೆಯ] dddd, LT',
11069      sameElse: 'L'
11070    },
11071    relativeTime: {
11072      future: '%s ನಂತರ',
11073      past: '%s ಹಿಂದೆ',
11074      s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
11075      ss: '%d ಸೆಕೆಂಡುಗಳು',
11076      m: 'ಒಂದು ನಿಮಿಷ',
11077      mm: '%d ನಿಮಿಷ',
11078      h: 'ಒಂದು ಗಂಟೆ',
11079      hh: '%d ಗಂಟೆ',
11080      d: 'ಒಂದು ದಿನ',
11081      dd: '%d ದಿನ',
11082      M: 'ಒಂದು ತಿಂಗಳು',
11083      MM: '%d ತಿಂಗಳು',
11084      y: 'ಒಂದು ವರ್ಷ',
11085      yy: '%d ವರ್ಷ'
11086    },
11087    preparse: function preparse(string) {
11088      return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
11089        return numberMap[match];
11090      });
11091    },
11092    postformat: function postformat(string) {
11093      return string.replace(/\d/g, function (match) {
11094        return symbolMap[match];
11095      });
11096    },
11097    meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
11098    meridiemHour: function meridiemHour(hour, meridiem) {
11099      if (hour === 12) {
11100        hour = 0;
11101      }
11102
11103      if (meridiem === 'ರಾತ್ರಿ') {
11104        return hour < 4 ? hour : hour + 12;
11105      } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
11106        return hour;
11107      } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
11108        return hour >= 10 ? hour : hour + 12;
11109      } else if (meridiem === 'ಸಂಜೆ') {
11110        return hour + 12;
11111      }
11112    },
11113    meridiem: function meridiem(hour, minute, isLower) {
11114      if (hour < 4) {
11115        return 'ರಾತ್ರಿ';
11116      } else if (hour < 10) {
11117        return 'ಬೆಳಿಗ್ಗೆ';
11118      } else if (hour < 17) {
11119        return 'ಮಧ್ಯಾಹ್ನ';
11120      } else if (hour < 20) {
11121        return 'ಸಂಜೆ';
11122      } else {
11123        return 'ರಾತ್ರಿ';
11124      }
11125    },
11126    dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
11127    ordinal: function ordinal(number) {
11128      return number + 'ನೇ';
11129    },
11130    week: {
11131      dow: 0,
11132      // Sunday is the first day of the week.
11133      doy: 6 // The week that contains Jan 6th is the first week of the year.
11134
11135    }
11136  });
11137  return kn;
11138});
11139
11140/***/ }),
11141
vendor: 3,782 bytes, lines 11142-11238
11142/***/ "../autobahn_client_core/node_modules/moment/locale/ko.js":
11143/*!****************************************************************!*\
11144  !*** ../autobahn_client_core/node_modules/moment/locale/ko.js ***!
11145  \****************************************************************/
11146/*! no static exports found */
11147/***/ (function(module, exports, __webpack_require__) {
11148
11149var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11150
11151//! moment.js locale configuration
11152//! locale : Korean [ko]
11153//! author : Kyungwook, Park : https://github.com/kyungw00k
11154//! author : Jeeeyul Lee <[email protected]>
11155;
11156
11157(function (global, factory) {
11158  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11159				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11160				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11161				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11162})(this, function (moment) {
11163  'use strict'; //! moment.js locale configuration
11164
11165  var ko = moment.defineLocale('ko', {
11166    months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
11167    monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
11168    weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
11169    weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
11170    weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
11171    longDateFormat: {
11172      LT: 'A h:mm',
11173      LTS: 'A h:mm:ss',
11174      L: 'YYYY.MM.DD.',
11175      LL: 'YYYY년 MMMM D일',
11176      LLL: 'YYYY년 MMMM D일 A h:mm',
11177      LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
11178      l: 'YYYY.MM.DD.',
11179      ll: 'YYYY년 MMMM D일',
11180      lll: 'YYYY년 MMMM D일 A h:mm',
11181      llll: 'YYYY년 MMMM D일 dddd A h:mm'
11182    },
11183    calendar: {
11184      sameDay: '오늘 LT',
11185      nextDay: '내일 LT',
11186      nextWeek: 'dddd LT',
11187      lastDay: '어제 LT',
11188      lastWeek: '지난주 dddd LT',
11189      sameElse: 'L'
11190    },
11191    relativeTime: {
11192      future: '%s 후',
11193      past: '%s 전',
11194      s: '몇 초',
11195      ss: '%d초',
11196      m: '1분',
11197      mm: '%d분',
11198      h: '한 시간',
11199      hh: '%d시간',
11200      d: '하루',
11201      dd: '%d일',
11202      M: '한 달',
11203      MM: '%d달',
11204      y: '일 년',
11205      yy: '%d년'
11206    },
11207    dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
11208    ordinal: function ordinal(number, period) {
11209      switch (period) {
11210        case 'd':
11211        case 'D':
11212        case 'DDD':
11213          return number + '일';
11214
11215        case 'M':
11216          return number + '월';
11217
11218        case 'w':
11219        case 'W':
11220          return number + '주';
11221
11222        default:
11223          return number;
11224      }
11225    },
11226    meridiemParse: /오전|오후/,
11227    isPM: function isPM(token) {
11228      return token === '오후';
11229    },
11230    meridiem: function meridiem(hour, minute, isUpper) {
11231      return hour < 12 ? '오전' : '오후';
11232    }
11233  });
11234  return ko;
11235});
11236
11237/***/ }),
11238
vendor: 4,659 bytes, lines 11239-11357
11239/***/ "../autobahn_client_core/node_modules/moment/locale/ku.js":
11240/*!****************************************************************!*\
11241  !*** ../autobahn_client_core/node_modules/moment/locale/ku.js ***!
11242  \****************************************************************/
11243/*! no static exports found */
11244/***/ (function(module, exports, __webpack_require__) {
11245
11246var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11247
11248//! moment.js locale configuration
11249//! locale : Kurdish [ku]
11250//! author : Shahram Mebashar : https://github.com/ShahramMebashar
11251;
11252
11253(function (global, factory) {
11254  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11255				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11256				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11257				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11258})(this, function (moment) {
11259  'use strict'; //! moment.js locale configuration
11260
11261  var symbolMap = {
11262    1: 'Ù¡',
11263    2: 'Ù¢',
11264    3: 'Ù£',
11265    4: 'Ù¤',
11266    5: 'Ù¥',
11267    6: 'Ù¦',
11268    7: 'Ù§',
11269    8: 'Ù¨',
11270    9: 'Ù©',
11271    0: 'Ù '
11272  },
11273      numberMap = {
11274    'Ù¡': '1',
11275    'Ù¢': '2',
11276    'Ù£': '3',
11277    'Ù¤': '4',
11278    'Ù¥': '5',
11279    'Ù¦': '6',
11280    'Ù§': '7',
11281    'Ù¨': '8',
11282    'Ù©': '9',
11283    'Ù ': '0'
11284  },
11285      months = ['کانونی دووەم', 'شوبات', 'ئازار', 'نیسان', 'ئایار', 'حوزەیران', 'تەمموز', 'ئاب', 'ئەیلوول', 'تشرینی یەكەم', 'تشرینی دووەم', 'كانونی یەکەم'];
11286  var ku = moment.defineLocale('ku', {
11287    months: months,
11288    monthsShort: months,
11289    weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),
11290    weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
11291    weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
11292    weekdaysParseExact: true,
11293    longDateFormat: {
11294      LT: 'HH:mm',
11295      LTS: 'HH:mm:ss',
11296      L: 'DD/MM/YYYY',
11297      LL: 'D MMMM YYYY',
11298      LLL: 'D MMMM YYYY HH:mm',
11299      LLLL: 'dddd, D MMMM YYYY HH:mm'
11300    },
11301    meridiemParse: /ئێواره‌|به‌یانی/,
11302    isPM: function isPM(input) {
11303      return /ئێواره‌/.test(input);
11304    },
11305    meridiem: function meridiem(hour, minute, isLower) {
11306      if (hour < 12) {
11307        return 'به‌یانی';
11308      } else {
11309        return 'ئێواره‌';
11310      }
11311    },
11312    calendar: {
11313      sameDay: '[ئه‌مرۆ كاتژمێر] LT',
11314      nextDay: '[به‌یانی كاتژمێر] LT',
11315      nextWeek: 'dddd [كاتژمێر] LT',
11316      lastDay: '[دوێنێ كاتژمێر] LT',
11317      lastWeek: 'dddd [كاتژمێر] LT',
11318      sameElse: 'L'
11319    },
11320    relativeTime: {
11321      future: 'له‌ %s',
11322      past: '%s',
11323      s: 'چه‌ند چركه‌یه‌ك',
11324      ss: 'چركه‌ %d',
11325      m: 'یه‌ك خوله‌ك',
11326      mm: '%d خوله‌ك',
11327      h: 'یه‌ك كاتژمێر',
11328      hh: '%d كاتژمێر',
11329      d: 'یه‌ك ڕۆژ',
11330      dd: '%d ڕۆژ',
11331      M: 'یه‌ك مانگ',
11332      MM: '%d مانگ',
11333      y: 'یه‌ك ساڵ',
11334      yy: '%d ساڵ'
11335    },
11336    preparse: function preparse(string) {
11337      return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
11338        return numberMap[match];
11339      }).replace(/،/g, ',');
11340    },
11341    postformat: function postformat(string) {
11342      return string.replace(/\d/g, function (match) {
11343        return symbolMap[match];
11344      }).replace(/,/g, '،');
11345    },
11346    week: {
11347      dow: 6,
11348      // Saturday is the first day of the week.
11349      doy: 12 // The week that contains Jan 12th is the first week of the year.
11350
11351    }
11352  });
11353  return ku;
11354});
11355
11356/***/ }),
11357
vendor: 4,103 bytes, lines 11358-11457
11358/***/ "../autobahn_client_core/node_modules/moment/locale/ky.js":
11359/*!****************************************************************!*\
11360  !*** ../autobahn_client_core/node_modules/moment/locale/ky.js ***!
11361  \****************************************************************/
11362/*! no static exports found */
11363/***/ (function(module, exports, __webpack_require__) {
11364
11365var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11366
11367//! moment.js locale configuration
11368//! locale : Kyrgyz [ky]
11369//! author : Chyngyz Arystan uulu : https://github.com/chyngyz
11370;
11371
11372(function (global, factory) {
11373  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11374				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11375				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11376				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11377})(this, function (moment) {
11378  'use strict'; //! moment.js locale configuration
11379
11380  var suffixes = {
11381    0: '-чү',
11382    1: '-чи',
11383    2: '-чи',
11384    3: '-чү',
11385    4: '-чү',
11386    5: '-чи',
11387    6: '-чы',
11388    7: '-чи',
11389    8: '-чи',
11390    9: '-чу',
11391    10: '-чу',
11392    20: '-чы',
11393    30: '-чу',
11394    40: '-чы',
11395    50: '-чү',
11396    60: '-чы',
11397    70: '-чи',
11398    80: '-чи',
11399    90: '-чу',
11400    100: '-чү'
11401  };
11402  var ky = moment.defineLocale('ky', {
11403    months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
11404    monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
11405    weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
11406    weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
11407    weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
11408    longDateFormat: {
11409      LT: 'HH:mm',
11410      LTS: 'HH:mm:ss',
11411      L: 'DD.MM.YYYY',
11412      LL: 'D MMMM YYYY',
11413      LLL: 'D MMMM YYYY HH:mm',
11414      LLLL: 'dddd, D MMMM YYYY HH:mm'
11415    },
11416    calendar: {
11417      sameDay: '[Бүгүн саат] LT',
11418      nextDay: '[Эртең саат] LT',
11419      nextWeek: 'dddd [саат] LT',
11420      lastDay: '[Кечээ саат] LT',
11421      lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
11422      sameElse: 'L'
11423    },
11424    relativeTime: {
11425      future: '%s ичинде',
11426      past: '%s мурун',
11427      s: 'бирнече секунд',
11428      ss: '%d секунд',
11429      m: 'бир мүнөт',
11430      mm: '%d мүнөт',
11431      h: 'бир саат',
11432      hh: '%d саат',
11433      d: 'бир күн',
11434      dd: '%d күн',
11435      M: 'бир ай',
11436      MM: '%d ай',
11437      y: 'бир жыл',
11438      yy: '%d жыл'
11439    },
11440    dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
11441    ordinal: function ordinal(number) {
11442      var a = number % 10,
11443          b = number >= 100 ? 100 : null;
11444      return number + (suffixes[number] || suffixes[a] || suffixes[b]);
11445    },
11446    week: {
11447      dow: 1,
11448      // Monday is the first day of the week.
11449      doy: 7 // The week that contains Jan 7th is the first week of the year.
11450
11451    }
11452  });
11453  return ky;
11454});
11455
11456/***/ }),
11457
vendor: 5,754 bytes, lines 11458-11624
11458/***/ "../autobahn_client_core/node_modules/moment/locale/lb.js":
11459/*!****************************************************************!*\
11460  !*** ../autobahn_client_core/node_modules/moment/locale/lb.js ***!
11461  \****************************************************************/
11462/*! no static exports found */
11463/***/ (function(module, exports, __webpack_require__) {
11464
11465var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11466
11467//! moment.js locale configuration
11468//! locale : Luxembourgish [lb]
11469//! author : mweimerskirch : https://github.com/mweimerskirch
11470//! author : David Raison : https://github.com/kwisatz
11471;
11472
11473(function (global, factory) {
11474  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11475				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11476				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11477				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11478})(this, function (moment) {
11479  'use strict'; //! moment.js locale configuration
11480
11481  function processRelativeTime(number, withoutSuffix, key, isFuture) {
11482    var format = {
11483      m: ['eng Minutt', 'enger Minutt'],
11484      h: ['eng Stonn', 'enger Stonn'],
11485      d: ['een Dag', 'engem Dag'],
11486      M: ['ee Mount', 'engem Mount'],
11487      y: ['ee Joer', 'engem Joer']
11488    };
11489    return withoutSuffix ? format[key][0] : format[key][1];
11490  }
11491
11492  function processFutureTime(string) {
11493    var number = string.substr(0, string.indexOf(' '));
11494
11495    if (eifelerRegelAppliesToNumber(number)) {
11496      return 'a ' + string;
11497    }
11498
11499    return 'an ' + string;
11500  }
11501
11502  function processPastTime(string) {
11503    var number = string.substr(0, string.indexOf(' '));
11504
11505    if (eifelerRegelAppliesToNumber(number)) {
11506      return 'viru ' + string;
11507    }
11508
11509    return 'virun ' + string;
11510  }
11511  /**
11512   * Returns true if the word before the given number loses the '-n' ending.
11513   * e.g. 'an 10 Deeg' but 'a 5 Deeg'
11514   *
11515   * @param number {integer}
11516   * @returns {boolean}
11517   */
11518
11519
11520  function eifelerRegelAppliesToNumber(number) {
11521    number = parseInt(number, 10);
11522
11523    if (isNaN(number)) {
11524      return false;
11525    }
11526
11527    if (number < 0) {
11528      // Negative Number --> always true
11529      return true;
11530    } else if (number < 10) {
11531      // Only 1 digit
11532      if (4 <= number && number <= 7) {
11533        return true;
11534      }
11535
11536      return false;
11537    } else if (number < 100) {
11538      // 2 digits
11539      var lastDigit = number % 10,
11540          firstDigit = number / 10;
11541
11542      if (lastDigit === 0) {
11543        return eifelerRegelAppliesToNumber(firstDigit);
11544      }
11545
11546      return eifelerRegelAppliesToNumber(lastDigit);
11547    } else if (number < 10000) {
11548      // 3 or 4 digits --> recursively check first digit
11549      while (number >= 10) {
11550        number = number / 10;
11551      }
11552
11553      return eifelerRegelAppliesToNumber(number);
11554    } else {
11555      // Anything larger than 4 digits: recursively check first n-3 digits
11556      number = number / 1000;
11557      return eifelerRegelAppliesToNumber(number);
11558    }
11559  }
11560
11561  var lb = moment.defineLocale('lb', {
11562    months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
11563    monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
11564    monthsParseExact: true,
11565    weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
11566    weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
11567    weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
11568    weekdaysParseExact: true,
11569    longDateFormat: {
11570      LT: 'H:mm [Auer]',
11571      LTS: 'H:mm:ss [Auer]',
11572      L: 'DD.MM.YYYY',
11573      LL: 'D. MMMM YYYY',
11574      LLL: 'D. MMMM YYYY H:mm [Auer]',
11575      LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
11576    },
11577    calendar: {
11578      sameDay: '[Haut um] LT',
11579      sameElse: 'L',
11580      nextDay: '[Muer um] LT',
11581      nextWeek: 'dddd [um] LT',
11582      lastDay: '[Gëschter um] LT',
11583      lastWeek: function lastWeek() {
11584        // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
11585        switch (this.day()) {
11586          case 2:
11587          case 4:
11588            return '[Leschten] dddd [um] LT';
11589
11590          default:
11591            return '[Leschte] dddd [um] LT';
11592        }
11593      }
11594    },
11595    relativeTime: {
11596      future: processFutureTime,
11597      past: processPastTime,
11598      s: 'e puer Sekonnen',
11599      ss: '%d Sekonnen',
11600      m: processRelativeTime,
11601      mm: '%d Minutten',
11602      h: processRelativeTime,
11603      hh: '%d Stonnen',
11604      d: processRelativeTime,
11605      dd: '%d Deeg',
11606      M: processRelativeTime,
11607      MM: '%d Méint',
11608      y: processRelativeTime,
11609      yy: '%d Joer'
11610    },
11611    dayOfMonthOrdinalParse: /\d{1,2}\./,
11612    ordinal: '%d.',
11613    week: {
11614      dow: 1,
11615      // Monday is the first day of the week.
11616      doy: 4 // The week that contains Jan 4th is the first week of the year.
11617
11618    }
11619  });
11620  return lb;
11621});
11622
11623/***/ }),
11624
vendor: 4,161 bytes, lines 11625-11706
11625/***/ "../autobahn_client_core/node_modules/moment/locale/lo.js":
11626/*!****************************************************************!*\
11627  !*** ../autobahn_client_core/node_modules/moment/locale/lo.js ***!
11628  \****************************************************************/
11629/*! no static exports found */
11630/***/ (function(module, exports, __webpack_require__) {
11631
11632var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11633
11634//! moment.js locale configuration
11635//! locale : Lao [lo]
11636//! author : Ryan Hart : https://github.com/ryanhart2
11637;
11638
11639(function (global, factory) {
11640  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11641				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11642				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11643				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11644})(this, function (moment) {
11645  'use strict'; //! moment.js locale configuration
11646
11647  var lo = moment.defineLocale('lo', {
11648    months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
11649    monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
11650    weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
11651    weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
11652    weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
11653    weekdaysParseExact: true,
11654    longDateFormat: {
11655      LT: 'HH:mm',
11656      LTS: 'HH:mm:ss',
11657      L: 'DD/MM/YYYY',
11658      LL: 'D MMMM YYYY',
11659      LLL: 'D MMMM YYYY HH:mm',
11660      LLLL: 'ວັນdddd D MMMM YYYY HH:mm'
11661    },
11662    meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
11663    isPM: function isPM(input) {
11664      return input === 'ຕອນແລງ';
11665    },
11666    meridiem: function meridiem(hour, minute, isLower) {
11667      if (hour < 12) {
11668        return 'ຕອນເຊົ້າ';
11669      } else {
11670        return 'ຕອນແລງ';
11671      }
11672    },
11673    calendar: {
11674      sameDay: '[ມື້ນີ້ເວລາ] LT',
11675      nextDay: '[ມື້ອື່ນເວລາ] LT',
11676      nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
11677      lastDay: '[ມື້ວານນີ້ເວລາ] LT',
11678      lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
11679      sameElse: 'L'
11680    },
11681    relativeTime: {
11682      future: 'ອີກ %s',
11683      past: '%sຜ່ານມາ',
11684      s: 'ບໍ່ເທົ່າໃດວິນາທີ',
11685      ss: '%d ວິນາທີ',
11686      m: '1 ນາທີ',
11687      mm: '%d ນາທີ',
11688      h: '1 ຊົ່ວໂມງ',
11689      hh: '%d ຊົ່ວໂມງ',
11690      d: '1 ມື້',
11691      dd: '%d ມື້',
11692      M: '1 ເດືອນ',
11693      MM: '%d ເດືອນ',
11694      y: '1 ປີ',
11695      yy: '%d ປີ'
11696    },
11697    dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
11698    ordinal: function ordinal(number) {
11699      return 'ທີ່' + number;
11700    }
11701  });
11702  return lo;
11703});
11704
11705/***/ }),
11706
vendor: 5,431 bytes, lines 11707-11845
11707/***/ "../autobahn_client_core/node_modules/moment/locale/lt.js":
11708/*!****************************************************************!*\
11709  !*** ../autobahn_client_core/node_modules/moment/locale/lt.js ***!
11710  \****************************************************************/
11711/*! no static exports found */
11712/***/ (function(module, exports, __webpack_require__) {
11713
11714var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11715
11716//! moment.js locale configuration
11717//! locale : Lithuanian [lt]
11718//! author : Mindaugas Mozūras : https://github.com/mmozuras
11719;
11720
11721(function (global, factory) {
11722  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11723				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11724				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11725				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11726})(this, function (moment) {
11727  'use strict'; //! moment.js locale configuration
11728
11729  var units = {
11730    ss: 'sekundė_sekundžių_sekundes',
11731    m: 'minutė_minutės_minutę',
11732    mm: 'minutės_minučių_minutes',
11733    h: 'valanda_valandos_valandą',
11734    hh: 'valandos_valandų_valandas',
11735    d: 'diena_dienos_dieną',
11736    dd: 'dienos_dienų_dienas',
11737    M: 'mėnuo_mėnesio_mėnesį',
11738    MM: 'mėnesiai_mėnesių_mėnesius',
11739    y: 'metai_metų_metus',
11740    yy: 'metai_metų_metus'
11741  };
11742
11743  function translateSeconds(number, withoutSuffix, key, isFuture) {
11744    if (withoutSuffix) {
11745      return 'kelios sekundės';
11746    } else {
11747      return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
11748    }
11749  }
11750
11751  function translateSingular(number, withoutSuffix, key, isFuture) {
11752    return withoutSuffix ? forms(key)[0] : isFuture ? forms(key)[1] : forms(key)[2];
11753  }
11754
11755  function special(number) {
11756    return number % 10 === 0 || number > 10 && number < 20;
11757  }
11758
11759  function forms(key) {
11760    return units[key].split('_');
11761  }
11762
11763  function translate(number, withoutSuffix, key, isFuture) {
11764    var result = number + ' ';
11765
11766    if (number === 1) {
11767      return result + translateSingular(number, withoutSuffix, key[0], isFuture);
11768    } else if (withoutSuffix) {
11769      return result + (special(number) ? forms(key)[1] : forms(key)[0]);
11770    } else {
11771      if (isFuture) {
11772        return result + forms(key)[1];
11773      } else {
11774        return result + (special(number) ? forms(key)[1] : forms(key)[2]);
11775      }
11776    }
11777  }
11778
11779  var lt = moment.defineLocale('lt', {
11780    months: {
11781      format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
11782      standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
11783      isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
11784    },
11785    monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
11786    weekdays: {
11787      format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
11788      standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
11789      isFormat: /dddd HH:mm/
11790    },
11791    weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
11792    weekdaysMin: 'S_P_A_T_K_Pn_Å '.split('_'),
11793    weekdaysParseExact: true,
11794    longDateFormat: {
11795      LT: 'HH:mm',
11796      LTS: 'HH:mm:ss',
11797      L: 'YYYY-MM-DD',
11798      LL: 'YYYY [m.] MMMM D [d.]',
11799      LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
11800      LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
11801      l: 'YYYY-MM-DD',
11802      ll: 'YYYY [m.] MMMM D [d.]',
11803      lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
11804      llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
11805    },
11806    calendar: {
11807      sameDay: '[Å iandien] LT',
11808      nextDay: '[Rytoj] LT',
11809      nextWeek: 'dddd LT',
11810      lastDay: '[Vakar] LT',
11811      lastWeek: '[Praėjusį] dddd LT',
11812      sameElse: 'L'
11813    },
11814    relativeTime: {
11815      future: 'po %s',
11816      past: 'prieš %s',
11817      s: translateSeconds,
11818      ss: translate,
11819      m: translateSingular,
11820      mm: translate,
11821      h: translateSingular,
11822      hh: translate,
11823      d: translateSingular,
11824      dd: translate,
11825      M: translateSingular,
11826      MM: translate,
11827      y: translateSingular,
11828      yy: translate
11829    },
11830    dayOfMonthOrdinalParse: /\d{1,2}-oji/,
11831    ordinal: function ordinal(number) {
11832      return number + '-oji';
11833    },
11834    week: {
11835      dow: 1,
11836      // Monday is the first day of the week.
11837      doy: 4 // The week that contains Jan 4th is the first week of the year.
11838
11839    }
11840  });
11841  return lt;
11842});
11843
11844/***/ }),
11845
vendor: 5,045 bytes, lines 11846-11961
11846/***/ "../autobahn_client_core/node_modules/moment/locale/lv.js":
11847/*!****************************************************************!*\
11848  !*** ../autobahn_client_core/node_modules/moment/locale/lv.js ***!
11849  \****************************************************************/
11850/*! no static exports found */
11851/***/ (function(module, exports, __webpack_require__) {
11852
11853var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11854
11855//! moment.js locale configuration
11856//! locale : Latvian [lv]
11857//! author : Kristaps Karlsons : https://github.com/skakri
11858//! author : Jānis Elmeris : https://github.com/JanisE
11859;
11860
11861(function (global, factory) {
11862  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11863				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11864				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11865				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11866})(this, function (moment) {
11867  'use strict'; //! moment.js locale configuration
11868
11869  var units = {
11870    ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
11871    m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
11872    mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
11873    h: 'stundas_stundām_stunda_stundas'.split('_'),
11874    hh: 'stundas_stundām_stunda_stundas'.split('_'),
11875    d: 'dienas_dienām_diena_dienas'.split('_'),
11876    dd: 'dienas_dienām_diena_dienas'.split('_'),
11877    M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
11878    MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
11879    y: 'gada_gadiem_gads_gadi'.split('_'),
11880    yy: 'gada_gadiem_gads_gadi'.split('_')
11881  };
11882  /**
11883   * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
11884   */
11885
11886  function format(forms, number, withoutSuffix) {
11887    if (withoutSuffix) {
11888      // E.g. "21 minūte", "3 minūtes".
11889      return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
11890    } else {
11891      // E.g. "21 minūtes" as in "pēc 21 minūtes".
11892      // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
11893      return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
11894    }
11895  }
11896
11897  function relativeTimeWithPlural(number, withoutSuffix, key) {
11898    return number + ' ' + format(units[key], number, withoutSuffix);
11899  }
11900
11901  function relativeTimeWithSingular(number, withoutSuffix, key) {
11902    return format(units[key], number, withoutSuffix);
11903  }
11904
11905  function relativeSeconds(number, withoutSuffix) {
11906    return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
11907  }
11908
11909  var lv = moment.defineLocale('lv', {
11910    months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
11911    monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
11912    weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
11913    weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
11914    weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
11915    weekdaysParseExact: true,
11916    longDateFormat: {
11917      LT: 'HH:mm',
11918      LTS: 'HH:mm:ss',
11919      L: 'DD.MM.YYYY.',
11920      LL: 'YYYY. [gada] D. MMMM',
11921      LLL: 'YYYY. [gada] D. MMMM, HH:mm',
11922      LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm'
11923    },
11924    calendar: {
11925      sameDay: '[Å odien pulksten] LT',
11926      nextDay: '[Rīt pulksten] LT',
11927      nextWeek: 'dddd [pulksten] LT',
11928      lastDay: '[Vakar pulksten] LT',
11929      lastWeek: '[Pagājušā] dddd [pulksten] LT',
11930      sameElse: 'L'
11931    },
11932    relativeTime: {
11933      future: 'pēc %s',
11934      past: 'pirms %s',
11935      s: relativeSeconds,
11936      ss: relativeTimeWithPlural,
11937      m: relativeTimeWithSingular,
11938      mm: relativeTimeWithPlural,
11939      h: relativeTimeWithSingular,
11940      hh: relativeTimeWithPlural,
11941      d: relativeTimeWithSingular,
11942      dd: relativeTimeWithPlural,
11943      M: relativeTimeWithSingular,
11944      MM: relativeTimeWithPlural,
11945      y: relativeTimeWithSingular,
11946      yy: relativeTimeWithPlural
11947    },
11948    dayOfMonthOrdinalParse: /\d{1,2}\./,
11949    ordinal: '%d.',
11950    week: {
11951      dow: 1,
11952      // Monday is the first day of the week.
11953      doy: 4 // The week that contains Jan 4th is the first week of the year.
11954
11955    }
11956  });
11957  return lv;
11958});
11959
11960/***/ }),
11961
vendor: 4,928 bytes, lines 11962-12082
11962/***/ "../autobahn_client_core/node_modules/moment/locale/me.js":
11963/*!****************************************************************!*\
11964  !*** ../autobahn_client_core/node_modules/moment/locale/me.js ***!
11965  \****************************************************************/
11966/*! no static exports found */
11967/***/ (function(module, exports, __webpack_require__) {
11968
11969var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
11970
11971//! moment.js locale configuration
11972//! locale : Montenegrin [me]
11973//! author : Miodrag Nikač <[email protected]> : https://github.com/miodragnikac
11974;
11975
11976(function (global, factory) {
11977  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
11978				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
11979				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
11980				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
11981})(this, function (moment) {
11982  'use strict'; //! moment.js locale configuration
11983
11984  var translator = {
11985    words: {
11986      //Different grammatical cases
11987      ss: ['sekund', 'sekunda', 'sekundi'],
11988      m: ['jedan minut', 'jednog minuta'],
11989      mm: ['minut', 'minuta', 'minuta'],
11990      h: ['jedan sat', 'jednog sata'],
11991      hh: ['sat', 'sata', 'sati'],
11992      dd: ['dan', 'dana', 'dana'],
11993      MM: ['mjesec', 'mjeseca', 'mjeseci'],
11994      yy: ['godina', 'godine', 'godina']
11995    },
11996    correctGrammaticalCase: function correctGrammaticalCase(number, wordKey) {
11997      return number === 1 ? wordKey[0] : number >= 2 && number <= 4 ? wordKey[1] : wordKey[2];
11998    },
11999    translate: function translate(number, withoutSuffix, key) {
12000      var wordKey = translator.words[key];
12001
12002      if (key.length === 1) {
12003        return withoutSuffix ? wordKey[0] : wordKey[1];
12004      } else {
12005        return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
12006      }
12007    }
12008  };
12009  var me = moment.defineLocale('me', {
12010    months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
12011    monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
12012    monthsParseExact: true,
12013    weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
12014    weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
12015    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
12016    weekdaysParseExact: true,
12017    longDateFormat: {
12018      LT: 'H:mm',
12019      LTS: 'H:mm:ss',
12020      L: 'DD.MM.YYYY',
12021      LL: 'D. MMMM YYYY',
12022      LLL: 'D. MMMM YYYY H:mm',
12023      LLLL: 'dddd, D. MMMM YYYY H:mm'
12024    },
12025    calendar: {
12026      sameDay: '[danas u] LT',
12027      nextDay: '[sjutra u] LT',
12028      nextWeek: function nextWeek() {
12029        switch (this.day()) {
12030          case 0:
12031            return '[u] [nedjelju] [u] LT';
12032
12033          case 3:
12034            return '[u] [srijedu] [u] LT';
12035
12036          case 6:
12037            return '[u] [subotu] [u] LT';
12038
12039          case 1:
12040          case 2:
12041          case 4:
12042          case 5:
12043            return '[u] dddd [u] LT';
12044        }
12045      },
12046      lastDay: '[juče u] LT',
12047      lastWeek: function lastWeek() {
12048        var lastWeekDays = ['[prošle] [nedjelje] [u] LT', '[prošlog] [ponedjeljka] [u] LT', '[prošlog] [utorka] [u] LT', '[prošle] [srijede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', '[prošle] [subote] [u] LT'];
12049        return lastWeekDays[this.day()];
12050      },
12051      sameElse: 'L'
12052    },
12053    relativeTime: {
12054      future: 'za %s',
12055      past: 'prije %s',
12056      s: 'nekoliko sekundi',
12057      ss: translator.translate,
12058      m: translator.translate,
12059      mm: translator.translate,
12060      h: translator.translate,
12061      hh: translator.translate,
12062      d: 'dan',
12063      dd: translator.translate,
12064      M: 'mjesec',
12065      MM: translator.translate,
12066      y: 'godinu',
12067      yy: translator.translate
12068    },
12069    dayOfMonthOrdinalParse: /\d{1,2}\./,
12070    ordinal: '%d.',
12071    week: {
12072      dow: 1,
12073      // Monday is the first day of the week.
12074      doy: 7 // The week that contains Jan 7th is the first week of the year.
12075
12076    }
12077  });
12078  return me;
12079});
12080
12081/***/ }),
12082
vendor: 3,600 bytes, lines 12083-12160
12083/***/ "../autobahn_client_core/node_modules/moment/locale/mi.js":
12084/*!****************************************************************!*\
12085  !*** ../autobahn_client_core/node_modules/moment/locale/mi.js ***!
12086  \****************************************************************/
12087/*! no static exports found */
12088/***/ (function(module, exports, __webpack_require__) {
12089
12090var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12091
12092//! moment.js locale configuration
12093//! locale : Maori [mi]
12094//! author : John Corrigan <[email protected]> : https://github.com/johnideal
12095;
12096
12097(function (global, factory) {
12098  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
12099				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12100				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
12101				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
12102})(this, function (moment) {
12103  'use strict'; //! moment.js locale configuration
12104
12105  var mi = moment.defineLocale('mi', {
12106    months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split('_'),
12107    monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
12108    monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
12109    monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
12110    monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
12111    monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
12112    weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
12113    weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
12114    weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
12115    longDateFormat: {
12116      LT: 'HH:mm',
12117      LTS: 'HH:mm:ss',
12118      L: 'DD/MM/YYYY',
12119      LL: 'D MMMM YYYY',
12120      LLL: 'D MMMM YYYY [i] HH:mm',
12121      LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
12122    },
12123    calendar: {
12124      sameDay: '[i teie mahana, i] LT',
12125      nextDay: '[apopo i] LT',
12126      nextWeek: 'dddd [i] LT',
12127      lastDay: '[inanahi i] LT',
12128      lastWeek: 'dddd [whakamutunga i] LT',
12129      sameElse: 'L'
12130    },
12131    relativeTime: {
12132      future: 'i roto i %s',
12133      past: '%s i mua',
12134      s: 'te hēkona ruarua',
12135      ss: '%d hēkona',
12136      m: 'he meneti',
12137      mm: '%d meneti',
12138      h: 'te haora',
12139      hh: '%d haora',
12140      d: 'he ra',
12141      dd: '%d ra',
12142      M: 'he marama',
12143      MM: '%d marama',
12144      y: 'he tau',
12145      yy: '%d tau'
12146    },
12147    dayOfMonthOrdinalParse: /\d{1,2}º/,
12148    ordinal: '%dº',
12149    week: {
12150      dow: 1,
12151      // Monday is the first day of the week.
12152      doy: 4 // The week that contains Jan 4th is the first week of the year.
12153
12154    }
12155  });
12156  return mi;
12157});
12158
12159/***/ }),
12160
vendor: 4,516 bytes, lines 12161-12267
12161/***/ "../autobahn_client_core/node_modules/moment/locale/mk.js":
12162/*!****************************************************************!*\
12163  !*** ../autobahn_client_core/node_modules/moment/locale/mk.js ***!
12164  \****************************************************************/
12165/*! no static exports found */
12166/***/ (function(module, exports, __webpack_require__) {
12167
12168var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12169
12170//! moment.js locale configuration
12171//! locale : Macedonian [mk]
12172//! author : Borislav Mickov : https://github.com/B0k0
12173//! author : Sashko Todorov : https://github.com/bkyceh
12174;
12175
12176(function (global, factory) {
12177  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
12178				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12179				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
12180				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
12181})(this, function (moment) {
12182  'use strict'; //! moment.js locale configuration
12183
12184  var mk = moment.defineLocale('mk', {
12185    months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
12186    monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
12187    weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
12188    weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
12189    weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
12190    longDateFormat: {
12191      LT: 'H:mm',
12192      LTS: 'H:mm:ss',
12193      L: 'D.MM.YYYY',
12194      LL: 'D MMMM YYYY',
12195      LLL: 'D MMMM YYYY H:mm',
12196      LLLL: 'dddd, D MMMM YYYY H:mm'
12197    },
12198    calendar: {
12199      sameDay: '[Денес во] LT',
12200      nextDay: '[Утре во] LT',
12201      nextWeek: '[Во] dddd [во] LT',
12202      lastDay: '[Вчера во] LT',
12203      lastWeek: function lastWeek() {
12204        switch (this.day()) {
12205          case 0:
12206          case 3:
12207          case 6:
12208            return '[Изминатата] dddd [во] LT';
12209
12210          case 1:
12211          case 2:
12212          case 4:
12213          case 5:
12214            return '[Изминатиот] dddd [во] LT';
12215        }
12216      },
12217      sameElse: 'L'
12218    },
12219    relativeTime: {
12220      future: 'за %s',
12221      past: 'пред %s',
12222      s: 'неколку секунди',
12223      ss: '%d секунди',
12224      m: 'една минута',
12225      mm: '%d минути',
12226      h: 'еден час',
12227      hh: '%d часа',
12228      d: 'еден ден',
12229      dd: '%d дена',
12230      M: 'еден месец',
12231      MM: '%d месеци',
12232      y: 'една година',
12233      yy: '%d години'
12234    },
12235    dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
12236    ordinal: function ordinal(number) {
12237      var lastDigit = number % 10,
12238          last2Digits = number % 100;
12239
12240      if (number === 0) {
12241        return number + '-ев';
12242      } else if (last2Digits === 0) {
12243        return number + '-ен';
12244      } else if (last2Digits > 10 && last2Digits < 20) {
12245        return number + '-ти';
12246      } else if (lastDigit === 1) {
12247        return number + '-ви';
12248      } else if (lastDigit === 2) {
12249        return number + '-ри';
12250      } else if (lastDigit === 7 || lastDigit === 8) {
12251        return number + '-ми';
12252      } else {
12253        return number + '-ти';
12254      }
12255    },
12256    week: {
12257      dow: 1,
12258      // Monday is the first day of the week.
12259      doy: 7 // The week that contains Jan 7th is the first week of the year.
12260
12261    }
12262  });
12263  return mk;
12264});
12265
12266/***/ }),
12267
vendor: 4,751 bytes, lines 12268-12359
12268/***/ "../autobahn_client_core/node_modules/moment/locale/ml.js":
12269/*!****************************************************************!*\
12270  !*** ../autobahn_client_core/node_modules/moment/locale/ml.js ***!
12271  \****************************************************************/
12272/*! no static exports found */
12273/***/ (function(module, exports, __webpack_require__) {
12274
12275var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12276
12277//! moment.js locale configuration
12278//! locale : Malayalam [ml]
12279//! author : Floyd Pink : https://github.com/floydpink
12280;
12281
12282(function (global, factory) {
12283  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
12284				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12285				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
12286				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
12287})(this, function (moment) {
12288  'use strict'; //! moment.js locale configuration
12289
12290  var ml = moment.defineLocale('ml', {
12291    months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
12292    monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
12293    monthsParseExact: true,
12294    weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
12295    weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
12296    weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
12297    longDateFormat: {
12298      LT: 'A h:mm -നു',
12299      LTS: 'A h:mm:ss -നു',
12300      L: 'DD/MM/YYYY',
12301      LL: 'D MMMM YYYY',
12302      LLL: 'D MMMM YYYY, A h:mm -നു',
12303      LLLL: 'dddd, D MMMM YYYY, A h:mm -നു'
12304    },
12305    calendar: {
12306      sameDay: '[ഇന്ന്] LT',
12307      nextDay: '[നാളെ] LT',
12308      nextWeek: 'dddd, LT',
12309      lastDay: '[ഇന്നലെ] LT',
12310      lastWeek: '[കഴിഞ്ഞ] dddd, LT',
12311      sameElse: 'L'
12312    },
12313    relativeTime: {
12314      future: '%s കഴിഞ്ഞ്',
12315      past: '%s മുൻപ്',
12316      s: 'അൽപ നിമിഷങ്ങൾ',
12317      ss: '%d സെക്കൻഡ്',
12318      m: 'ഒരു മിനിറ്റ്',
12319      mm: '%d മിനിറ്റ്',
12320      h: 'ഒരു മണിക്കൂർ',
12321      hh: '%d മണിക്കൂർ',
12322      d: 'ഒരു ദിവസം',
12323      dd: '%d ദിവസം',
12324      M: 'ഒരു മാസം',
12325      MM: '%d മാസം',
12326      y: 'ഒരു വർഷം',
12327      yy: '%d വർഷം'
12328    },
12329    meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
12330    meridiemHour: function meridiemHour(hour, meridiem) {
12331      if (hour === 12) {
12332        hour = 0;
12333      }
12334
12335      if (meridiem === 'രാത്രി' && hour >= 4 || meridiem === 'ഉച്ച കഴിഞ്ഞ്' || meridiem === 'വൈകുന്നേരം') {
12336        return hour + 12;
12337      } else {
12338        return hour;
12339      }
12340    },
12341    meridiem: function meridiem(hour, minute, isLower) {
12342      if (hour < 4) {
12343        return 'രാത്രി';
12344      } else if (hour < 12) {
12345        return 'രാവിലെ';
12346      } else if (hour < 17) {
12347        return 'ഉച്ച കഴിഞ്ഞ്';
12348      } else if (hour < 20) {
12349        return 'വൈകുന്നേരം';
12350      } else {
12351        return 'രാത്രി';
12352      }
12353    }
12354  });
12355  return ml;
12356});
12357
12358/***/ }),
12359
vendor: 4,914 bytes, lines 12360-12483
12360/***/ "../autobahn_client_core/node_modules/moment/locale/mn.js":
12361/*!****************************************************************!*\
12362  !*** ../autobahn_client_core/node_modules/moment/locale/mn.js ***!
12363  \****************************************************************/
12364/*! no static exports found */
12365/***/ (function(module, exports, __webpack_require__) {
12366
12367var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12368
12369//! moment.js locale configuration
12370//! locale : Mongolian [mn]
12371//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7
12372;
12373
12374(function (global, factory) {
12375  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
12376				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12377				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
12378				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
12379})(this, function (moment) {
12380  'use strict'; //! moment.js locale configuration
12381
12382  function translate(number, withoutSuffix, key, isFuture) {
12383    switch (key) {
12384      case 's':
12385        return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
12386
12387      case 'ss':
12388        return number + (withoutSuffix ? ' секунд' : ' секундын');
12389
12390      case 'm':
12391      case 'mm':
12392        return number + (withoutSuffix ? ' минут' : ' минутын');
12393
12394      case 'h':
12395      case 'hh':
12396        return number + (withoutSuffix ? ' цаг' : ' цагийн');
12397
12398      case 'd':
12399      case 'dd':
12400        return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
12401
12402      case 'M':
12403      case 'MM':
12404        return number + (withoutSuffix ? ' сар' : ' сарын');
12405
12406      case 'y':
12407      case 'yy':
12408        return number + (withoutSuffix ? ' жил' : ' жилийн');
12409
12410      default:
12411        return number;
12412    }
12413  }
12414
12415  var mn = moment.defineLocale('mn', {
12416    months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),
12417    monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),
12418    monthsParseExact: true,
12419    weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
12420    weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
12421    weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
12422    weekdaysParseExact: true,
12423    longDateFormat: {
12424      LT: 'HH:mm',
12425      LTS: 'HH:mm:ss',
12426      L: 'YYYY-MM-DD',
12427      LL: 'YYYY оны MMMMын D',
12428      LLL: 'YYYY оны MMMMын D HH:mm',
12429      LLLL: 'dddd, YYYY оны MMMMын D HH:mm'
12430    },
12431    meridiemParse: /ҮӨ|ҮХ/i,
12432    isPM: function isPM(input) {
12433      return input === 'ҮХ';
12434    },
12435    meridiem: function meridiem(hour, minute, isLower) {
12436      if (hour < 12) {
12437        return 'Ò®Ó¨';
12438      } else {
12439        return 'ҮХ';
12440      }
12441    },
12442    calendar: {
12443      sameDay: '[Өнөөдөр] LT',
12444      nextDay: '[Маргааш] LT',
12445      nextWeek: '[Ирэх] dddd LT',
12446      lastDay: '[Өчигдөр] LT',
12447      lastWeek: '[Өнгөрсөн] dddd LT',
12448      sameElse: 'L'
12449    },
12450    relativeTime: {
12451      future: '%s дараа',
12452      past: '%s өмнө',
12453      s: translate,
12454      ss: translate,
12455      m: translate,
12456      mm: translate,
12457      h: translate,
12458      hh: translate,
12459      d: translate,
12460      dd: translate,
12461      M: translate,
12462      MM: translate,
12463      y: translate,
12464      yy: translate
12465    },
12466    dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
12467    ordinal: function ordinal(number, period) {
12468      switch (period) {
12469        case 'd':
12470        case 'D':
12471        case 'DDD':
12472          return number + ' өдөр';
12473
12474        default:
12475          return number;
12476      }
12477    }
12478  });
12479  return mn;
12480});
12481
12482/***/ }),
12483
vendor: 7,628 bytes, lines 12484-12725
12484/***/ "../autobahn_client_core/node_modules/moment/locale/mr.js":
12485/*!****************************************************************!*\
12486  !*** ../autobahn_client_core/node_modules/moment/locale/mr.js ***!
12487  \****************************************************************/
12488/*! no static exports found */
12489/***/ (function(module, exports, __webpack_require__) {
12490
12491var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12492
12493//! moment.js locale configuration
12494//! locale : Marathi [mr]
12495//! author : Harshad Kale : https://github.com/kalehv
12496//! author : Vivek Athalye : https://github.com/vnathalye
12497;
12498
12499(function (global, factory) {
12500  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
12501				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12502				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
12503				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
12504})(this, function (moment) {
12505  'use strict'; //! moment.js locale configuration
12506
12507  var symbolMap = {
12508    1: '१',
12509    2: '२',
12510    3: '३',
12511    4: '४',
12512    5: '५',
12513    6: '६',
12514    7: '७',
12515    8: '८',
12516    9: '९',
12517    0: '०'
12518  },
12519      numberMap = {
12520    '१': '1',
12521    '२': '2',
12522    '३': '3',
12523    '४': '4',
12524    '५': '5',
12525    '६': '6',
12526    '७': '7',
12527    '८': '8',
12528    '९': '9',
12529    '०': '0'
12530  };
12531
12532  function relativeTimeMr(number, withoutSuffix, string, isFuture) {
12533    var output = '';
12534
12535    if (withoutSuffix) {
12536      switch (string) {
12537        case 's':
12538          output = 'काही सेकंद';
12539          break;
12540
12541        case 'ss':
12542          output = '%d सेकंद';
12543          break;
12544
12545        case 'm':
12546          output = 'एक मिनिट';
12547          break;
12548
12549        case 'mm':
12550          output = '%d मिनिटे';
12551          break;
12552
12553        case 'h':
12554          output = 'एक तास';
12555          break;
12556
12557        case 'hh':
12558          output = '%d तास';
12559          break;
12560
12561        case 'd':
12562          output = 'एक दिवस';
12563          break;
12564
12565        case 'dd':
12566          output = '%d दिवस';
12567          break;
12568
12569        case 'M':
12570          output = 'एक महिना';
12571          break;
12572
12573        case 'MM':
12574          output = '%d महिने';
12575          break;
12576
12577        case 'y':
12578          output = 'एक वर्ष';
12579          break;
12580
12581        case 'yy':
12582          output = '%d वर्षे';
12583          break;
12584      }
12585    } else {
12586      switch (string) {
12587        case 's':
12588          output = 'काही सेकंदां';
12589          break;
12590
12591        case 'ss':
12592          output = '%d सेकंदां';
12593          break;
12594
12595        case 'm':
12596          output = 'एका मिनिटा';
12597          break;
12598
12599        case 'mm':
12600          output = '%d मिनिटां';
12601          break;
12602
12603        case 'h':
12604          output = 'एका तासा';
12605          break;
12606
12607        case 'hh':
12608          output = '%d तासां';
12609          break;
12610
12611        case 'd':
12612          output = 'एका दिवसा';
12613          break;
12614
12615        case 'dd':
12616          output = '%d दिवसां';
12617          break;
12618
12619        case 'M':
12620          output = 'एका महिन्या';
12621          break;
12622
12623        case 'MM':
12624          output = '%d महिन्यां';
12625          break;
12626
12627        case 'y':
12628          output = 'एका वर्षा';
12629          break;
12630
12631        case 'yy':
12632          output = '%d वर्षां';
12633          break;
12634      }
12635    }
12636
12637    return output.replace(/%d/i, number);
12638  }
12639
12640  var mr = moment.defineLocale('mr', {
12641    months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
12642    monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
12643    monthsParseExact: true,
12644    weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
12645    weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
12646    weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
12647    longDateFormat: {
12648      LT: 'A h:mm वाजता',
12649      LTS: 'A h:mm:ss वाजता',
12650      L: 'DD/MM/YYYY',
12651      LL: 'D MMMM YYYY',
12652      LLL: 'D MMMM YYYY, A h:mm वाजता',
12653      LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता'
12654    },
12655    calendar: {
12656      sameDay: '[आज] LT',
12657      nextDay: '[उद्या] LT',
12658      nextWeek: 'dddd, LT',
12659      lastDay: '[काल] LT',
12660      lastWeek: '[मागील] dddd, LT',
12661      sameElse: 'L'
12662    },
12663    relativeTime: {
12664      future: '%sमध्ये',
12665      past: '%sपूर्वी',
12666      s: relativeTimeMr,
12667      ss: relativeTimeMr,
12668      m: relativeTimeMr,
12669      mm: relativeTimeMr,
12670      h: relativeTimeMr,
12671      hh: relativeTimeMr,
12672      d: relativeTimeMr,
12673      dd: relativeTimeMr,
12674      M: relativeTimeMr,
12675      MM: relativeTimeMr,
12676      y: relativeTimeMr,
12677      yy: relativeTimeMr
12678    },
12679    preparse: function preparse(string) {
12680      return string.replace(/[१२३४५६७८९०]/g, function (match) {
12681        return numberMap[match];
12682      });
12683    },
12684    postformat: function postformat(string) {
12685      return string.replace(/\d/g, function (match) {
12686        return symbolMap[match];
12687      });
12688    },
12689    meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
12690    meridiemHour: function meridiemHour(hour, meridiem) {
12691      if (hour === 12) {
12692        hour = 0;
12693      }
12694
12695      if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
12696        return hour;
12697      } else if (meridiem === 'दुपारी' || meridiem === 'सायंकाळी' || meridiem === 'रात्री') {
12698        return hour >= 12 ? hour : hour + 12;
12699      }
12700    },
12701    meridiem: function meridiem(hour, minute, isLower) {
12702      if (hour >= 0 && hour < 6) {
12703        return 'पहाटे';
12704      } else if (hour < 12) {
12705        return 'सकाळी';
12706      } else if (hour < 17) {
12707        return 'दुपारी';
12708      } else if (hour < 20) {
12709        return 'सायंकाळी';
12710      } else {
12711        return 'रात्री';
12712      }
12713    },
12714    week: {
12715      dow: 0,
12716      // Sunday is the first day of the week.
12717      doy: 6 // The week that contains Jan 6th is the first week of the year.
12718
12719    }
12720  });
12721  return mr;
12722});
12723
12724/***/ }),
12725
vendor: 3,920 bytes, lines 12726-12823
12726/***/ "../autobahn_client_core/node_modules/moment/locale/ms-my.js":
12727/*!*******************************************************************!*\
12728  !*** ../autobahn_client_core/node_modules/moment/locale/ms-my.js ***!
12729  \*******************************************************************/
12730/*! no static exports found */
12731/***/ (function(module, exports, __webpack_require__) {
12732
12733var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12734
12735//! moment.js locale configuration
12736//! locale : Malay [ms-my]
12737//! note : DEPRECATED, the correct one is [ms]
12738//! author : Weldan Jamili : https://github.com/weldan
12739;
12740
12741(function (global, factory) {
12742  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
12743				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12744				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
12745				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
12746})(this, function (moment) {
12747  'use strict'; //! moment.js locale configuration
12748
12749  var msMy = moment.defineLocale('ms-my', {
12750    months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
12751    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
12752    weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
12753    weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
12754    weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
12755    longDateFormat: {
12756      LT: 'HH.mm',
12757      LTS: 'HH.mm.ss',
12758      L: 'DD/MM/YYYY',
12759      LL: 'D MMMM YYYY',
12760      LLL: 'D MMMM YYYY [pukul] HH.mm',
12761      LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
12762    },
12763    meridiemParse: /pagi|tengahari|petang|malam/,
12764    meridiemHour: function meridiemHour(hour, meridiem) {
12765      if (hour === 12) {
12766        hour = 0;
12767      }
12768
12769      if (meridiem === 'pagi') {
12770        return hour;
12771      } else if (meridiem === 'tengahari') {
12772        return hour >= 11 ? hour : hour + 12;
12773      } else if (meridiem === 'petang' || meridiem === 'malam') {
12774        return hour + 12;
12775      }
12776    },
12777    meridiem: function meridiem(hours, minutes, isLower) {
12778      if (hours < 11) {
12779        return 'pagi';
12780      } else if (hours < 15) {
12781        return 'tengahari';
12782      } else if (hours < 19) {
12783        return 'petang';
12784      } else {
12785        return 'malam';
12786      }
12787    },
12788    calendar: {
12789      sameDay: '[Hari ini pukul] LT',
12790      nextDay: '[Esok pukul] LT',
12791      nextWeek: 'dddd [pukul] LT',
12792      lastDay: '[Kelmarin pukul] LT',
12793      lastWeek: 'dddd [lepas pukul] LT',
12794      sameElse: 'L'
12795    },
12796    relativeTime: {
12797      future: 'dalam %s',
12798      past: '%s yang lepas',
12799      s: 'beberapa saat',
12800      ss: '%d saat',
12801      m: 'seminit',
12802      mm: '%d minit',
12803      h: 'sejam',
12804      hh: '%d jam',
12805      d: 'sehari',
12806      dd: '%d hari',
12807      M: 'sebulan',
12808      MM: '%d bulan',
12809      y: 'setahun',
12810      yy: '%d tahun'
12811    },
12812    week: {
12813      dow: 1,
12814      // Monday is the first day of the week.
12815      doy: 7 // The week that contains Jan 7th is the first week of the year.
12816
12817    }
12818  });
12819  return msMy;
12820});
12821
12822/***/ }),
12823
vendor: 3,851 bytes, lines 12824-12920
12824/***/ "../autobahn_client_core/node_modules/moment/locale/ms.js":
12825/*!****************************************************************!*\
12826  !*** ../autobahn_client_core/node_modules/moment/locale/ms.js ***!
12827  \****************************************************************/
12828/*! no static exports found */
12829/***/ (function(module, exports, __webpack_require__) {
12830
12831var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12832
12833//! moment.js locale configuration
12834//! locale : Malay [ms]
12835//! author : Weldan Jamili : https://github.com/weldan
12836;
12837
12838(function (global, factory) {
12839  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
12840				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12841				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
12842				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
12843})(this, function (moment) {
12844  'use strict'; //! moment.js locale configuration
12845
12846  var ms = moment.defineLocale('ms', {
12847    months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
12848    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
12849    weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
12850    weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
12851    weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
12852    longDateFormat: {
12853      LT: 'HH.mm',
12854      LTS: 'HH.mm.ss',
12855      L: 'DD/MM/YYYY',
12856      LL: 'D MMMM YYYY',
12857      LLL: 'D MMMM YYYY [pukul] HH.mm',
12858      LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm'
12859    },
12860    meridiemParse: /pagi|tengahari|petang|malam/,
12861    meridiemHour: function meridiemHour(hour, meridiem) {
12862      if (hour === 12) {
12863        hour = 0;
12864      }
12865
12866      if (meridiem === 'pagi') {
12867        return hour;
12868      } else if (meridiem === 'tengahari') {
12869        return hour >= 11 ? hour : hour + 12;
12870      } else if (meridiem === 'petang' || meridiem === 'malam') {
12871        return hour + 12;
12872      }
12873    },
12874    meridiem: function meridiem(hours, minutes, isLower) {
12875      if (hours < 11) {
12876        return 'pagi';
12877      } else if (hours < 15) {
12878        return 'tengahari';
12879      } else if (hours < 19) {
12880        return 'petang';
12881      } else {
12882        return 'malam';
12883      }
12884    },
12885    calendar: {
12886      sameDay: '[Hari ini pukul] LT',
12887      nextDay: '[Esok pukul] LT',
12888      nextWeek: 'dddd [pukul] LT',
12889      lastDay: '[Kelmarin pukul] LT',
12890      lastWeek: 'dddd [lepas pukul] LT',
12891      sameElse: 'L'
12892    },
12893    relativeTime: {
12894      future: 'dalam %s',
12895      past: '%s yang lepas',
12896      s: 'beberapa saat',
12897      ss: '%d saat',
12898      m: 'seminit',
12899      mm: '%d minit',
12900      h: 'sejam',
12901      hh: '%d jam',
12902      d: 'sehari',
12903      dd: '%d hari',
12904      M: 'sebulan',
12905      MM: '%d bulan',
12906      y: 'setahun',
12907      yy: '%d tahun'
12908    },
12909    week: {
12910      dow: 1,
12911      // Monday is the first day of the week.
12912      doy: 7 // The week that contains Jan 7th is the first week of the year.
12913
12914    }
12915  });
12916  return ms;
12917});
12918
12919/***/ }),
12920
vendor: 3,261 bytes, lines 12921-12994
12921/***/ "../autobahn_client_core/node_modules/moment/locale/mt.js":
12922/*!****************************************************************!*\
12923  !*** ../autobahn_client_core/node_modules/moment/locale/mt.js ***!
12924  \****************************************************************/
12925/*! no static exports found */
12926/***/ (function(module, exports, __webpack_require__) {
12927
12928var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
12929
12930//! moment.js locale configuration
12931//! locale : Maltese (Malta) [mt]
12932//! author : Alessandro Maruccia : https://github.com/alesma
12933;
12934
12935(function (global, factory) {
12936  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
12937				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
12938				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
12939				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
12940})(this, function (moment) {
12941  'use strict'; //! moment.js locale configuration
12942
12943  var mt = moment.defineLocale('mt', {
12944    months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),
12945    monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
12946    weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),
12947    weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
12948    weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
12949    longDateFormat: {
12950      LT: 'HH:mm',
12951      LTS: 'HH:mm:ss',
12952      L: 'DD/MM/YYYY',
12953      LL: 'D MMMM YYYY',
12954      LLL: 'D MMMM YYYY HH:mm',
12955      LLLL: 'dddd, D MMMM YYYY HH:mm'
12956    },
12957    calendar: {
12958      sameDay: '[Illum fil-]LT',
12959      nextDay: '[Għada fil-]LT',
12960      nextWeek: 'dddd [fil-]LT',
12961      lastDay: '[Il-bieraħ fil-]LT',
12962      lastWeek: 'dddd [li għadda] [fil-]LT',
12963      sameElse: 'L'
12964    },
12965    relativeTime: {
12966      future: 'f’ %s',
12967      past: '%s ilu',
12968      s: 'ftit sekondi',
12969      ss: '%d sekondi',
12970      m: 'minuta',
12971      mm: '%d minuti',
12972      h: 'siegħa',
12973      hh: '%d siegħat',
12974      d: 'ġurnata',
12975      dd: '%d ġranet',
12976      M: 'xahar',
12977      MM: '%d xhur',
12978      y: 'sena',
12979      yy: '%d sni'
12980    },
12981    dayOfMonthOrdinalParse: /\d{1,2}º/,
12982    ordinal: '%dº',
12983    week: {
12984      dow: 1,
12985      // Monday is the first day of the week.
12986      doy: 4 // The week that contains Jan 4th is the first week of the year.
12987
12988    }
12989  });
12990  return mt;
12991});
12992
12993/***/ }),
12994
vendor: 4,605 bytes, lines 12995-13102
12995/***/ "../autobahn_client_core/node_modules/moment/locale/my.js":
12996/*!****************************************************************!*\
12997  !*** ../autobahn_client_core/node_modules/moment/locale/my.js ***!
12998  \****************************************************************/
12999/*! no static exports found */
13000/***/ (function(module, exports, __webpack_require__) {
13001
13002var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13003
13004//! moment.js locale configuration
13005//! locale : Burmese [my]
13006//! author : Squar team, mysquar.com
13007//! author : David Rossellat : https://github.com/gholadr
13008//! author : Tin Aung Lin : https://github.com/thanyawzinmin
13009;
13010
13011(function (global, factory) {
13012  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13013				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13014				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13015				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13016})(this, function (moment) {
13017  'use strict'; //! moment.js locale configuration
13018
13019  var symbolMap = {
13020    1: '၁',
13021    2: '၂',
13022    3: '၃',
13023    4: '၄',
13024    5: '၅',
13025    6: '၆',
13026    7: '၇',
13027    8: '၈',
13028    9: '၉',
13029    0: '၀'
13030  },
13031      numberMap = {
13032    '၁': '1',
13033    '၂': '2',
13034    '၃': '3',
13035    '၄': '4',
13036    '၅': '5',
13037    '၆': '6',
13038    '၇': '7',
13039    '၈': '8',
13040    '၉': '9',
13041    '၀': '0'
13042  };
13043  var my = moment.defineLocale('my', {
13044    months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
13045    monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
13046    weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
13047    weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
13048    weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
13049    longDateFormat: {
13050      LT: 'HH:mm',
13051      LTS: 'HH:mm:ss',
13052      L: 'DD/MM/YYYY',
13053      LL: 'D MMMM YYYY',
13054      LLL: 'D MMMM YYYY HH:mm',
13055      LLLL: 'dddd D MMMM YYYY HH:mm'
13056    },
13057    calendar: {
13058      sameDay: '[ယနေ.] LT [မှာ]',
13059      nextDay: '[မနက်ဖြန်] LT [မှာ]',
13060      nextWeek: 'dddd LT [မှာ]',
13061      lastDay: '[မနေ.က] LT [မှာ]',
13062      lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
13063      sameElse: 'L'
13064    },
13065    relativeTime: {
13066      future: 'လာမည့် %s မှာ',
13067      past: 'လွန်ခဲ့သော %s က',
13068      s: 'စက္ကန်.အနည်းငယ်',
13069      ss: '%d စက္ကန့်',
13070      m: 'တစ်မိနစ်',
13071      mm: '%d မိနစ်',
13072      h: 'တစ်နာရီ',
13073      hh: '%d နာရီ',
13074      d: 'တစ်ရက်',
13075      dd: '%d ရက်',
13076      M: 'တစ်လ',
13077      MM: '%d လ',
13078      y: 'တစ်နှစ်',
13079      yy: '%d နှစ်'
13080    },
13081    preparse: function preparse(string) {
13082      return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
13083        return numberMap[match];
13084      });
13085    },
13086    postformat: function postformat(string) {
13087      return string.replace(/\d/g, function (match) {
13088        return symbolMap[match];
13089      });
13090    },
13091    week: {
13092      dow: 1,
13093      // Monday is the first day of the week.
13094      doy: 4 // The week that contains Jan 4th is the first week of the year.
13095
13096    }
13097  });
13098  return my;
13099});
13100
13101/***/ }),
13102
vendor: 3,494 bytes, lines 13103-13182
13103/***/ "../autobahn_client_core/node_modules/moment/locale/nb.js":
13104/*!****************************************************************!*\
13105  !*** ../autobahn_client_core/node_modules/moment/locale/nb.js ***!
13106  \****************************************************************/
13107/*! no static exports found */
13108/***/ (function(module, exports, __webpack_require__) {
13109
13110var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13111
13112//! moment.js locale configuration
13113//! locale : Norwegian Bokmål [nb]
13114//! authors : Espen Hovlandsdal : https://github.com/rexxars
13115//!           Sigurd Gartmann : https://github.com/sigurdga
13116//!           Stephen Ramthun : https://github.com/stephenramthun
13117;
13118
13119(function (global, factory) {
13120  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13121				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13122				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13123				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13124})(this, function (moment) {
13125  'use strict'; //! moment.js locale configuration
13126
13127  var nb = moment.defineLocale('nb', {
13128    months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
13129    monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
13130    monthsParseExact: true,
13131    weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
13132    weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
13133    weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
13134    weekdaysParseExact: true,
13135    longDateFormat: {
13136      LT: 'HH:mm',
13137      LTS: 'HH:mm:ss',
13138      L: 'DD.MM.YYYY',
13139      LL: 'D. MMMM YYYY',
13140      LLL: 'D. MMMM YYYY [kl.] HH:mm',
13141      LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'
13142    },
13143    calendar: {
13144      sameDay: '[i dag kl.] LT',
13145      nextDay: '[i morgen kl.] LT',
13146      nextWeek: 'dddd [kl.] LT',
13147      lastDay: '[i går kl.] LT',
13148      lastWeek: '[forrige] dddd [kl.] LT',
13149      sameElse: 'L'
13150    },
13151    relativeTime: {
13152      future: 'om %s',
13153      past: '%s siden',
13154      s: 'noen sekunder',
13155      ss: '%d sekunder',
13156      m: 'ett minutt',
13157      mm: '%d minutter',
13158      h: 'en time',
13159      hh: '%d timer',
13160      d: 'en dag',
13161      dd: '%d dager',
13162      w: 'en uke',
13163      ww: '%d uker',
13164      M: 'en måned',
13165      MM: '%d måneder',
13166      y: 'ett år',
13167      yy: '%d år'
13168    },
13169    dayOfMonthOrdinalParse: /\d{1,2}\./,
13170    ordinal: '%d.',
13171    week: {
13172      dow: 1,
13173      // Monday is the first day of the week.
13174      doy: 4 // The week that contains Jan 4th is the first week of the year.
13175
13176    }
13177  });
13178  return nb;
13179});
13180
13181/***/ }),
13182
vendor: 5,468 bytes, lines 13183-13319
13183/***/ "../autobahn_client_core/node_modules/moment/locale/ne.js":
13184/*!****************************************************************!*\
13185  !*** ../autobahn_client_core/node_modules/moment/locale/ne.js ***!
13186  \****************************************************************/
13187/*! no static exports found */
13188/***/ (function(module, exports, __webpack_require__) {
13189
13190var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13191
13192//! moment.js locale configuration
13193//! locale : Nepalese [ne]
13194//! author : suvash : https://github.com/suvash
13195;
13196
13197(function (global, factory) {
13198  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13199				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13200				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13201				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13202})(this, function (moment) {
13203  'use strict'; //! moment.js locale configuration
13204
13205  var symbolMap = {
13206    1: '१',
13207    2: '२',
13208    3: '३',
13209    4: '४',
13210    5: '५',
13211    6: '६',
13212    7: '७',
13213    8: '८',
13214    9: '९',
13215    0: '०'
13216  },
13217      numberMap = {
13218    '१': '1',
13219    '२': '2',
13220    '३': '3',
13221    '४': '4',
13222    '५': '5',
13223    '६': '6',
13224    '७': '7',
13225    '८': '8',
13226    '९': '9',
13227    '०': '0'
13228  };
13229  var ne = moment.defineLocale('ne', {
13230    months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
13231    monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
13232    monthsParseExact: true,
13233    weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
13234    weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
13235    weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
13236    weekdaysParseExact: true,
13237    longDateFormat: {
13238      LT: 'Aको h:mm बजे',
13239      LTS: 'Aको h:mm:ss बजे',
13240      L: 'DD/MM/YYYY',
13241      LL: 'D MMMM YYYY',
13242      LLL: 'D MMMM YYYY, Aको h:mm बजे',
13243      LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे'
13244    },
13245    preparse: function preparse(string) {
13246      return string.replace(/[१२३४५६७८९०]/g, function (match) {
13247        return numberMap[match];
13248      });
13249    },
13250    postformat: function postformat(string) {
13251      return string.replace(/\d/g, function (match) {
13252        return symbolMap[match];
13253      });
13254    },
13255    meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
13256    meridiemHour: function meridiemHour(hour, meridiem) {
13257      if (hour === 12) {
13258        hour = 0;
13259      }
13260
13261      if (meridiem === 'राति') {
13262        return hour < 4 ? hour : hour + 12;
13263      } else if (meridiem === 'बिहान') {
13264        return hour;
13265      } else if (meridiem === 'दिउँसो') {
13266        return hour >= 10 ? hour : hour + 12;
13267      } else if (meridiem === 'साँझ') {
13268        return hour + 12;
13269      }
13270    },
13271    meridiem: function meridiem(hour, minute, isLower) {
13272      if (hour < 3) {
13273        return 'राति';
13274      } else if (hour < 12) {
13275        return 'बिहान';
13276      } else if (hour < 16) {
13277        return 'दिउँसो';
13278      } else if (hour < 20) {
13279        return 'साँझ';
13280      } else {
13281        return 'राति';
13282      }
13283    },
13284    calendar: {
13285      sameDay: '[आज] LT',
13286      nextDay: '[भोलि] LT',
13287      nextWeek: '[आउँदो] dddd[,] LT',
13288      lastDay: '[हिजो] LT',
13289      lastWeek: '[गएको] dddd[,] LT',
13290      sameElse: 'L'
13291    },
13292    relativeTime: {
13293      future: '%sमा',
13294      past: '%s अगाडि',
13295      s: 'केही क्षण',
13296      ss: '%d सेकेण्ड',
13297      m: 'एक मिनेट',
13298      mm: '%d मिनेट',
13299      h: 'एक घण्टा',
13300      hh: '%d घण्टा',
13301      d: 'एक दिन',
13302      dd: '%d दिन',
13303      M: 'एक महिना',
13304      MM: '%d महिना',
13305      y: 'एक बर्ष',
13306      yy: '%d बर्ष'
13307    },
13308    week: {
13309      dow: 0,
13310      // Sunday is the first day of the week.
13311      doy: 6 // The week that contains Jan 6th is the first week of the year.
13312
13313    }
13314  });
13315  return ne;
13316});
13317
13318/***/ }),
13319
vendor: 4,605 bytes, lines 13320-13416
13320/***/ "../autobahn_client_core/node_modules/moment/locale/nl-be.js":
13321/*!*******************************************************************!*\
13322  !*** ../autobahn_client_core/node_modules/moment/locale/nl-be.js ***!
13323  \*******************************************************************/
13324/*! no static exports found */
13325/***/ (function(module, exports, __webpack_require__) {
13326
13327var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13328
13329//! moment.js locale configuration
13330//! locale : Dutch (Belgium) [nl-be]
13331//! author : Joris Röling : https://github.com/jorisroling
13332//! author : Jacob Middag : https://github.com/middagj
13333;
13334
13335(function (global, factory) {
13336  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13337				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13338				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13339				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13340})(this, function (moment) {
13341  'use strict'; //! moment.js locale configuration
13342
13343  var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
13344      monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
13345      monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],
13346      monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
13347  var nlBe = moment.defineLocale('nl-be', {
13348    months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
13349    monthsShort: function monthsShort(m, format) {
13350      if (!m) {
13351        return monthsShortWithDots;
13352      } else if (/-MMM-/.test(format)) {
13353        return monthsShortWithoutDots[m.month()];
13354      } else {
13355        return monthsShortWithDots[m.month()];
13356      }
13357    },
13358    monthsRegex: monthsRegex,
13359    monthsShortRegex: monthsRegex,
13360    monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
13361    monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
13362    monthsParse: monthsParse,
13363    longMonthsParse: monthsParse,
13364    shortMonthsParse: monthsParse,
13365    weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
13366    weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
13367    weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
13368    weekdaysParseExact: true,
13369    longDateFormat: {
13370      LT: 'HH:mm',
13371      LTS: 'HH:mm:ss',
13372      L: 'DD/MM/YYYY',
13373      LL: 'D MMMM YYYY',
13374      LLL: 'D MMMM YYYY HH:mm',
13375      LLLL: 'dddd D MMMM YYYY HH:mm'
13376    },
13377    calendar: {
13378      sameDay: '[vandaag om] LT',
13379      nextDay: '[morgen om] LT',
13380      nextWeek: 'dddd [om] LT',
13381      lastDay: '[gisteren om] LT',
13382      lastWeek: '[afgelopen] dddd [om] LT',
13383      sameElse: 'L'
13384    },
13385    relativeTime: {
13386      future: 'over %s',
13387      past: '%s geleden',
13388      s: 'een paar seconden',
13389      ss: '%d seconden',
13390      m: 'één minuut',
13391      mm: '%d minuten',
13392      h: 'één uur',
13393      hh: '%d uur',
13394      d: 'één dag',
13395      dd: '%d dagen',
13396      M: 'één maand',
13397      MM: '%d maanden',
13398      y: 'één jaar',
13399      yy: '%d jaar'
13400    },
13401    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
13402    ordinal: function ordinal(number) {
13403      return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');
13404    },
13405    week: {
13406      dow: 1,
13407      // Monday is the first day of the week.
13408      doy: 4 // The week that contains Jan 4th is the first week of the year.
13409
13410    }
13411  });
13412  return nlBe;
13413});
13414
13415/***/ }),
13416
vendor: 4,618 bytes, lines 13417-13515
13417/***/ "../autobahn_client_core/node_modules/moment/locale/nl.js":
13418/*!****************************************************************!*\
13419  !*** ../autobahn_client_core/node_modules/moment/locale/nl.js ***!
13420  \****************************************************************/
13421/*! no static exports found */
13422/***/ (function(module, exports, __webpack_require__) {
13423
13424var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13425
13426//! moment.js locale configuration
13427//! locale : Dutch [nl]
13428//! author : Joris Röling : https://github.com/jorisroling
13429//! author : Jacob Middag : https://github.com/middagj
13430;
13431
13432(function (global, factory) {
13433  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13434				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13435				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13436				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13437})(this, function (moment) {
13438  'use strict'; //! moment.js locale configuration
13439
13440  var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
13441      monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
13442      monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i],
13443      monthsRegex = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
13444  var nl = moment.defineLocale('nl', {
13445    months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
13446    monthsShort: function monthsShort(m, format) {
13447      if (!m) {
13448        return monthsShortWithDots;
13449      } else if (/-MMM-/.test(format)) {
13450        return monthsShortWithoutDots[m.month()];
13451      } else {
13452        return monthsShortWithDots[m.month()];
13453      }
13454    },
13455    monthsRegex: monthsRegex,
13456    monthsShortRegex: monthsRegex,
13457    monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
13458    monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
13459    monthsParse: monthsParse,
13460    longMonthsParse: monthsParse,
13461    shortMonthsParse: monthsParse,
13462    weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
13463    weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
13464    weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
13465    weekdaysParseExact: true,
13466    longDateFormat: {
13467      LT: 'HH:mm',
13468      LTS: 'HH:mm:ss',
13469      L: 'DD-MM-YYYY',
13470      LL: 'D MMMM YYYY',
13471      LLL: 'D MMMM YYYY HH:mm',
13472      LLLL: 'dddd D MMMM YYYY HH:mm'
13473    },
13474    calendar: {
13475      sameDay: '[vandaag om] LT',
13476      nextDay: '[morgen om] LT',
13477      nextWeek: 'dddd [om] LT',
13478      lastDay: '[gisteren om] LT',
13479      lastWeek: '[afgelopen] dddd [om] LT',
13480      sameElse: 'L'
13481    },
13482    relativeTime: {
13483      future: 'over %s',
13484      past: '%s geleden',
13485      s: 'een paar seconden',
13486      ss: '%d seconden',
13487      m: 'één minuut',
13488      mm: '%d minuten',
13489      h: 'één uur',
13490      hh: '%d uur',
13491      d: 'één dag',
13492      dd: '%d dagen',
13493      w: 'één week',
13494      ww: '%d weken',
13495      M: 'één maand',
13496      MM: '%d maanden',
13497      y: 'één jaar',
13498      yy: '%d jaar'
13499    },
13500    dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
13501    ordinal: function ordinal(number) {
13502      return number + (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de');
13503    },
13504    week: {
13505      dow: 1,
13506      // Monday is the first day of the week.
13507      doy: 4 // The week that contains Jan 4th is the first week of the year.
13508
13509    }
13510  });
13511  return nl;
13512});
13513
13514/***/ }),
13515
vendor: 3,423 bytes, lines 13516-13594
13516/***/ "../autobahn_client_core/node_modules/moment/locale/nn.js":
13517/*!****************************************************************!*\
13518  !*** ../autobahn_client_core/node_modules/moment/locale/nn.js ***!
13519  \****************************************************************/
13520/*! no static exports found */
13521/***/ (function(module, exports, __webpack_require__) {
13522
13523var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13524
13525//! moment.js locale configuration
13526//! locale : Nynorsk [nn]
13527//! authors : https://github.com/mechuwind
13528//!           Stephen Ramthun : https://github.com/stephenramthun
13529;
13530
13531(function (global, factory) {
13532  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13533				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13534				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13535				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13536})(this, function (moment) {
13537  'use strict'; //! moment.js locale configuration
13538
13539  var nn = moment.defineLocale('nn', {
13540    months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
13541    monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
13542    monthsParseExact: true,
13543    weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
13544    weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
13545    weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
13546    weekdaysParseExact: true,
13547    longDateFormat: {
13548      LT: 'HH:mm',
13549      LTS: 'HH:mm:ss',
13550      L: 'DD.MM.YYYY',
13551      LL: 'D. MMMM YYYY',
13552      LLL: 'D. MMMM YYYY [kl.] H:mm',
13553      LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm'
13554    },
13555    calendar: {
13556      sameDay: '[I dag klokka] LT',
13557      nextDay: '[I morgon klokka] LT',
13558      nextWeek: 'dddd [klokka] LT',
13559      lastDay: '[I går klokka] LT',
13560      lastWeek: '[Føregåande] dddd [klokka] LT',
13561      sameElse: 'L'
13562    },
13563    relativeTime: {
13564      future: 'om %s',
13565      past: '%s sidan',
13566      s: 'nokre sekund',
13567      ss: '%d sekund',
13568      m: 'eit minutt',
13569      mm: '%d minutt',
13570      h: 'ein time',
13571      hh: '%d timar',
13572      d: 'ein dag',
13573      dd: '%d dagar',
13574      w: 'ei veke',
13575      ww: '%d veker',
13576      M: 'ein månad',
13577      MM: '%d månader',
13578      y: 'eit år',
13579      yy: '%d år'
13580    },
13581    dayOfMonthOrdinalParse: /\d{1,2}\./,
13582    ordinal: '%d.',
13583    week: {
13584      dow: 1,
13585      // Monday is the first day of the week.
13586      doy: 4 // The week that contains Jan 4th is the first week of the year.
13587
13588    }
13589  });
13590  return nn;
13591});
13592
13593/***/ }),
13594
vendor: 3,850 bytes, lines 13595-13684
13595/***/ "../autobahn_client_core/node_modules/moment/locale/oc-lnc.js":
13596/*!********************************************************************!*\
13597  !*** ../autobahn_client_core/node_modules/moment/locale/oc-lnc.js ***!
13598  \********************************************************************/
13599/*! no static exports found */
13600/***/ (function(module, exports, __webpack_require__) {
13601
13602var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13603
13604//! moment.js locale configuration
13605//! locale : Occitan, lengadocian dialecte [oc-lnc]
13606//! author : Quentin PAGÈS : https://github.com/Quenty31
13607;
13608
13609(function (global, factory) {
13610  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13611				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13612				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13613				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13614})(this, function (moment) {
13615  'use strict'; //! moment.js locale configuration
13616
13617  var ocLnc = moment.defineLocale('oc-lnc', {
13618    months: {
13619      standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split('_'),
13620      format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split('_'),
13621      isFormat: /D[oD]?(\s)+MMMM/
13622    },
13623    monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split('_'),
13624    monthsParseExact: true,
13625    weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split('_'),
13626    weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
13627    weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
13628    weekdaysParseExact: true,
13629    longDateFormat: {
13630      LT: 'H:mm',
13631      LTS: 'H:mm:ss',
13632      L: 'DD/MM/YYYY',
13633      LL: 'D MMMM [de] YYYY',
13634      ll: 'D MMM YYYY',
13635      LLL: 'D MMMM [de] YYYY [a] H:mm',
13636      lll: 'D MMM YYYY, H:mm',
13637      LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
13638      llll: 'ddd D MMM YYYY, H:mm'
13639    },
13640    calendar: {
13641      sameDay: '[uèi a] LT',
13642      nextDay: '[deman a] LT',
13643      nextWeek: 'dddd [a] LT',
13644      lastDay: '[ièr a] LT',
13645      lastWeek: 'dddd [passat a] LT',
13646      sameElse: 'L'
13647    },
13648    relativeTime: {
13649      future: "d'aquí %s",
13650      past: 'fa %s',
13651      s: 'unas segondas',
13652      ss: '%d segondas',
13653      m: 'una minuta',
13654      mm: '%d minutas',
13655      h: 'una ora',
13656      hh: '%d oras',
13657      d: 'un jorn',
13658      dd: '%d jorns',
13659      M: 'un mes',
13660      MM: '%d meses',
13661      y: 'un an',
13662      yy: '%d ans'
13663    },
13664    dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
13665    ordinal: function ordinal(number, period) {
13666      var output = number === 1 ? 'r' : number === 2 ? 'n' : number === 3 ? 'r' : number === 4 ? 't' : 'è';
13667
13668      if (period === 'w' || period === 'W') {
13669        output = 'a';
13670      }
13671
13672      return number + output;
13673    },
13674    week: {
13675      dow: 1,
13676      // Monday is the first day of the week.
13677      doy: 4
13678    }
13679  });
13680  return ocLnc;
13681});
13682
13683/***/ }),
13684
vendor: 5,651 bytes, lines 13685-13822
13685/***/ "../autobahn_client_core/node_modules/moment/locale/pa-in.js":
13686/*!*******************************************************************!*\
13687  !*** ../autobahn_client_core/node_modules/moment/locale/pa-in.js ***!
13688  \*******************************************************************/
13689/*! no static exports found */
13690/***/ (function(module, exports, __webpack_require__) {
13691
13692var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13693
13694//! moment.js locale configuration
13695//! locale : Punjabi (India) [pa-in]
13696//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit
13697;
13698
13699(function (global, factory) {
13700  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13701				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13702				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13703				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13704})(this, function (moment) {
13705  'use strict'; //! moment.js locale configuration
13706
13707  var symbolMap = {
13708    1: 'à©§',
13709    2: '੨',
13710    3: 'à©©',
13711    4: '੪',
13712    5: 'à©«',
13713    6: '੬',
13714    7: 'à©­',
13715    8: 'à©®',
13716    9: '੯',
13717    0: '੦'
13718  },
13719      numberMap = {
13720    'à©§': '1',
13721    '੨': '2',
13722    'à©©': '3',
13723    '੪': '4',
13724    'à©«': '5',
13725    '੬': '6',
13726    'à©­': '7',
13727    'à©®': '8',
13728    '੯': '9',
13729    '੦': '0'
13730  };
13731  var paIn = moment.defineLocale('pa-in', {
13732    // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
13733    months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
13734    monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
13735    weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
13736    weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
13737    weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
13738    longDateFormat: {
13739      LT: 'A h:mm ਵਜੇ',
13740      LTS: 'A h:mm:ss ਵਜੇ',
13741      L: 'DD/MM/YYYY',
13742      LL: 'D MMMM YYYY',
13743      LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
13744      LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
13745    },
13746    calendar: {
13747      sameDay: '[ਅਜ] LT',
13748      nextDay: '[ਕਲ] LT',
13749      nextWeek: '[ਅਗਲਾ] dddd, LT',
13750      lastDay: '[ਕਲ] LT',
13751      lastWeek: '[ਪਿਛਲੇ] dddd, LT',
13752      sameElse: 'L'
13753    },
13754    relativeTime: {
13755      future: '%s ਵਿੱਚ',
13756      past: '%s ਪਿਛਲੇ',
13757      s: 'ਕੁਝ ਸਕਿੰਟ',
13758      ss: '%d ਸਕਿੰਟ',
13759      m: 'ਇਕ ਮਿੰਟ',
13760      mm: '%d ਮਿੰਟ',
13761      h: 'ਇੱਕ ਘੰਟਾ',
13762      hh: '%d ਘੰਟੇ',
13763      d: 'ਇੱਕ ਦਿਨ',
13764      dd: '%d ਦਿਨ',
13765      M: 'ਇੱਕ ਮਹੀਨਾ',
13766      MM: '%d ਮਹੀਨੇ',
13767      y: 'ਇੱਕ ਸਾਲ',
13768      yy: '%d ਸਾਲ'
13769    },
13770    preparse: function preparse(string) {
13771      return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
13772        return numberMap[match];
13773      });
13774    },
13775    postformat: function postformat(string) {
13776      return string.replace(/\d/g, function (match) {
13777        return symbolMap[match];
13778      });
13779    },
13780    // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
13781    // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
13782    meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
13783    meridiemHour: function meridiemHour(hour, meridiem) {
13784      if (hour === 12) {
13785        hour = 0;
13786      }
13787
13788      if (meridiem === 'ਰਾਤ') {
13789        return hour < 4 ? hour : hour + 12;
13790      } else if (meridiem === 'ਸਵੇਰ') {
13791        return hour;
13792      } else if (meridiem === 'ਦੁਪਹਿਰ') {
13793        return hour >= 10 ? hour : hour + 12;
13794      } else if (meridiem === 'ਸ਼ਾਮ') {
13795        return hour + 12;
13796      }
13797    },
13798    meridiem: function meridiem(hour, minute, isLower) {
13799      if (hour < 4) {
13800        return 'ਰਾਤ';
13801      } else if (hour < 10) {
13802        return 'ਸਵੇਰ';
13803      } else if (hour < 17) {
13804        return 'ਦੁਪਹਿਰ';
13805      } else if (hour < 20) {
13806        return 'ਸ਼ਾਮ';
13807      } else {
13808        return 'ਰਾਤ';
13809      }
13810    },
13811    week: {
13812      dow: 0,
13813      // Sunday is the first day of the week.
13814      doy: 6 // The week that contains Jan 6th is the first week of the year.
13815
13816    }
13817  });
13818  return paIn;
13819});
13820
13821/***/ }),
13822
vendor: 5,447 bytes, lines 13823-13978
13823/***/ "../autobahn_client_core/node_modules/moment/locale/pl.js":
13824/*!****************************************************************!*\
13825  !*** ../autobahn_client_core/node_modules/moment/locale/pl.js ***!
13826  \****************************************************************/
13827/*! no static exports found */
13828/***/ (function(module, exports, __webpack_require__) {
13829
13830var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13831
13832//! moment.js locale configuration
13833//! locale : Polish [pl]
13834//! author : Rafal Hirsz : https://github.com/evoL
13835;
13836
13837(function (global, factory) {
13838  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13839				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13840				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13841				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13842})(this, function (moment) {
13843  'use strict'; //! moment.js locale configuration
13844
13845  var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
13846      monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_'),
13847      monthsParse = [/^sty/i, /^lut/i, /^mar/i, /^kwi/i, /^maj/i, /^cze/i, /^lip/i, /^sie/i, /^wrz/i, /^paź/i, /^lis/i, /^gru/i];
13848
13849  function plural(n) {
13850    return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
13851  }
13852
13853  function translate(number, withoutSuffix, key) {
13854    var result = number + ' ';
13855
13856    switch (key) {
13857      case 'ss':
13858        return result + (plural(number) ? 'sekundy' : 'sekund');
13859
13860      case 'm':
13861        return withoutSuffix ? 'minuta' : 'minutę';
13862
13863      case 'mm':
13864        return result + (plural(number) ? 'minuty' : 'minut');
13865
13866      case 'h':
13867        return withoutSuffix ? 'godzina' : 'godzinę';
13868
13869      case 'hh':
13870        return result + (plural(number) ? 'godziny' : 'godzin');
13871
13872      case 'ww':
13873        return result + (plural(number) ? 'tygodnie' : 'tygodni');
13874
13875      case 'MM':
13876        return result + (plural(number) ? 'miesiące' : 'miesięcy');
13877
13878      case 'yy':
13879        return result + (plural(number) ? 'lata' : 'lat');
13880    }
13881  }
13882
13883  var pl = moment.defineLocale('pl', {
13884    months: function months(momentToFormat, format) {
13885      if (!momentToFormat) {
13886        return monthsNominative;
13887      } else if (/D MMMM/.test(format)) {
13888        return monthsSubjective[momentToFormat.month()];
13889      } else {
13890        return monthsNominative[momentToFormat.month()];
13891      }
13892    },
13893    monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
13894    monthsParse: monthsParse,
13895    longMonthsParse: monthsParse,
13896    shortMonthsParse: monthsParse,
13897    weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
13898    weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
13899    weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
13900    longDateFormat: {
13901      LT: 'HH:mm',
13902      LTS: 'HH:mm:ss',
13903      L: 'DD.MM.YYYY',
13904      LL: 'D MMMM YYYY',
13905      LLL: 'D MMMM YYYY HH:mm',
13906      LLLL: 'dddd, D MMMM YYYY HH:mm'
13907    },
13908    calendar: {
13909      sameDay: '[Dziś o] LT',
13910      nextDay: '[Jutro o] LT',
13911      nextWeek: function nextWeek() {
13912        switch (this.day()) {
13913          case 0:
13914            return '[W niedzielę o] LT';
13915
13916          case 2:
13917            return '[We wtorek o] LT';
13918
13919          case 3:
13920            return '[W środę o] LT';
13921
13922          case 6:
13923            return '[W sobotę o] LT';
13924
13925          default:
13926            return '[W] dddd [o] LT';
13927        }
13928      },
13929      lastDay: '[Wczoraj o] LT',
13930      lastWeek: function lastWeek() {
13931        switch (this.day()) {
13932          case 0:
13933            return '[W zeszłą niedzielę o] LT';
13934
13935          case 3:
13936            return '[W zeszłą środę o] LT';
13937
13938          case 6:
13939            return '[W zeszłą sobotę o] LT';
13940
13941          default:
13942            return '[W zeszły] dddd [o] LT';
13943        }
13944      },
13945      sameElse: 'L'
13946    },
13947    relativeTime: {
13948      future: 'za %s',
13949      past: '%s temu',
13950      s: 'kilka sekund',
13951      ss: translate,
13952      m: translate,
13953      mm: translate,
13954      h: translate,
13955      hh: translate,
13956      d: '1 dzień',
13957      dd: '%d dni',
13958      w: 'tydzień',
13959      ww: translate,
13960      M: 'miesiąc',
13961      MM: translate,
13962      y: 'rok',
13963      yy: translate
13964    },
13965    dayOfMonthOrdinalParse: /\d{1,2}\./,
13966    ordinal: '%d.',
13967    week: {
13968      dow: 1,
13969      // Monday is the first day of the week.
13970      doy: 4 // The week that contains Jan 4th is the first week of the year.
13971
13972    }
13973  });
13974  return pl;
13975});
13976
13977/***/ }),
13978
vendor: 3,423 bytes, lines 13979-14051
13979/***/ "../autobahn_client_core/node_modules/moment/locale/pt-br.js":
13980/*!*******************************************************************!*\
13981  !*** ../autobahn_client_core/node_modules/moment/locale/pt-br.js ***!
13982  \*******************************************************************/
13983/*! no static exports found */
13984/***/ (function(module, exports, __webpack_require__) {
13985
13986var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
13987
13988//! moment.js locale configuration
13989//! locale : Portuguese (Brazil) [pt-br]
13990//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
13991;
13992
13993(function (global, factory) {
13994  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
13995				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
13996				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
13997				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
13998})(this, function (moment) {
13999  'use strict'; //! moment.js locale configuration
14000
14001  var ptBr = moment.defineLocale('pt-br', {
14002    months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
14003    monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
14004    weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split('_'),
14005    weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
14006    weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
14007    weekdaysParseExact: true,
14008    longDateFormat: {
14009      LT: 'HH:mm',
14010      LTS: 'HH:mm:ss',
14011      L: 'DD/MM/YYYY',
14012      LL: 'D [de] MMMM [de] YYYY',
14013      LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
14014      LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
14015    },
14016    calendar: {
14017      sameDay: '[Hoje às] LT',
14018      nextDay: '[Amanhã às] LT',
14019      nextWeek: 'dddd [às] LT',
14020      lastDay: '[Ontem às] LT',
14021      lastWeek: function lastWeek() {
14022        return this.day() === 0 || this.day() === 6 ? '[Último] dddd [às] LT' // Saturday + Sunday
14023        : '[Última] dddd [às] LT'; // Monday - Friday
14024      },
14025      sameElse: 'L'
14026    },
14027    relativeTime: {
14028      future: 'em %s',
14029      past: 'há %s',
14030      s: 'poucos segundos',
14031      ss: '%d segundos',
14032      m: 'um minuto',
14033      mm: '%d minutos',
14034      h: 'uma hora',
14035      hh: '%d horas',
14036      d: 'um dia',
14037      dd: '%d dias',
14038      M: 'um mês',
14039      MM: '%d meses',
14040      y: 'um ano',
14041      yy: '%d anos'
14042    },
14043    dayOfMonthOrdinalParse: /\d{1,2}º/,
14044    ordinal: '%dº',
14045    invalidDate: 'Data inválida'
14046  });
14047  return ptBr;
14048});
14049
14050/***/ }),
14051
vendor: 3,519 bytes, lines 14052-14131
14052/***/ "../autobahn_client_core/node_modules/moment/locale/pt.js":
14053/*!****************************************************************!*\
14054  !*** ../autobahn_client_core/node_modules/moment/locale/pt.js ***!
14055  \****************************************************************/
14056/*! no static exports found */
14057/***/ (function(module, exports, __webpack_require__) {
14058
14059var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14060
14061//! moment.js locale configuration
14062//! locale : Portuguese [pt]
14063//! author : Jefferson : https://github.com/jalex79
14064;
14065
14066(function (global, factory) {
14067  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
14068				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
14069				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
14070				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
14071})(this, function (moment) {
14072  'use strict'; //! moment.js locale configuration
14073
14074  var pt = moment.defineLocale('pt', {
14075    months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
14076    monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
14077    weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
14078    weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
14079    weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
14080    weekdaysParseExact: true,
14081    longDateFormat: {
14082      LT: 'HH:mm',
14083      LTS: 'HH:mm:ss',
14084      L: 'DD/MM/YYYY',
14085      LL: 'D [de] MMMM [de] YYYY',
14086      LLL: 'D [de] MMMM [de] YYYY HH:mm',
14087      LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm'
14088    },
14089    calendar: {
14090      sameDay: '[Hoje às] LT',
14091      nextDay: '[Amanhã às] LT',
14092      nextWeek: 'dddd [às] LT',
14093      lastDay: '[Ontem às] LT',
14094      lastWeek: function lastWeek() {
14095        return this.day() === 0 || this.day() === 6 ? '[Último] dddd [às] LT' // Saturday + Sunday
14096        : '[Última] dddd [às] LT'; // Monday - Friday
14097      },
14098      sameElse: 'L'
14099    },
14100    relativeTime: {
14101      future: 'em %s',
14102      past: 'há %s',
14103      s: 'segundos',
14104      ss: '%d segundos',
14105      m: 'um minuto',
14106      mm: '%d minutos',
14107      h: 'uma hora',
14108      hh: '%d horas',
14109      d: 'um dia',
14110      dd: '%d dias',
14111      w: 'uma semana',
14112      ww: '%d semanas',
14113      M: 'um mês',
14114      MM: '%d meses',
14115      y: 'um ano',
14116      yy: '%d anos'
14117    },
14118    dayOfMonthOrdinalParse: /\d{1,2}º/,
14119    ordinal: '%dº',
14120    week: {
14121      dow: 1,
14122      // Monday is the first day of the week.
14123      doy: 4 // The week that contains Jan 4th is the first week of the year.
14124
14125    }
14126  });
14127  return pt;
14128});
14129
14130/***/ }),
14131
vendor: 3,847 bytes, lines 14132-14227
14132/***/ "../autobahn_client_core/node_modules/moment/locale/ro.js":
14133/*!****************************************************************!*\
14134  !*** ../autobahn_client_core/node_modules/moment/locale/ro.js ***!
14135  \****************************************************************/
14136/*! no static exports found */
14137/***/ (function(module, exports, __webpack_require__) {
14138
14139var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14140
14141//! moment.js locale configuration
14142//! locale : Romanian [ro]
14143//! author : Vlad Gurdiga : https://github.com/gurdiga
14144//! author : Valentin Agachi : https://github.com/avaly
14145//! author : Emanuel Cepoi : https://github.com/cepem
14146;
14147
14148(function (global, factory) {
14149  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
14150				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
14151				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
14152				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
14153})(this, function (moment) {
14154  'use strict'; //! moment.js locale configuration
14155
14156  function relativeTimeWithPlural(number, withoutSuffix, key) {
14157    var format = {
14158      ss: 'secunde',
14159      mm: 'minute',
14160      hh: 'ore',
14161      dd: 'zile',
14162      ww: 'săptămâni',
14163      MM: 'luni',
14164      yy: 'ani'
14165    },
14166        separator = ' ';
14167
14168    if (number % 100 >= 20 || number >= 100 && number % 100 === 0) {
14169      separator = ' de ';
14170    }
14171
14172    return number + separator + format[key];
14173  }
14174
14175  var ro = moment.defineLocale('ro', {
14176    months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
14177    monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
14178    monthsParseExact: true,
14179    weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
14180    weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
14181    weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
14182    longDateFormat: {
14183      LT: 'H:mm',
14184      LTS: 'H:mm:ss',
14185      L: 'DD.MM.YYYY',
14186      LL: 'D MMMM YYYY',
14187      LLL: 'D MMMM YYYY H:mm',
14188      LLLL: 'dddd, D MMMM YYYY H:mm'
14189    },
14190    calendar: {
14191      sameDay: '[azi la] LT',
14192      nextDay: '[mâine la] LT',
14193      nextWeek: 'dddd [la] LT',
14194      lastDay: '[ieri la] LT',
14195      lastWeek: '[fosta] dddd [la] LT',
14196      sameElse: 'L'
14197    },
14198    relativeTime: {
14199      future: 'peste %s',
14200      past: '%s în urmă',
14201      s: 'câteva secunde',
14202      ss: relativeTimeWithPlural,
14203      m: 'un minut',
14204      mm: relativeTimeWithPlural,
14205      h: 'o oră',
14206      hh: relativeTimeWithPlural,
14207      d: 'o zi',
14208      dd: relativeTimeWithPlural,
14209      w: 'o săptămână',
14210      ww: relativeTimeWithPlural,
14211      M: 'o lună',
14212      MM: relativeTimeWithPlural,
14213      y: 'un an',
14214      yy: relativeTimeWithPlural
14215    },
14216    week: {
14217      dow: 1,
14218      // Monday is the first day of the week.
14219      doy: 7 // The week that contains Jan 7th is the first week of the year.
14220
14221    }
14222  });
14223  return ro;
14224});
14225
14226/***/ }),
14227
vendor: 9,369 bytes, lines 14228-14432
14228/***/ "../autobahn_client_core/node_modules/moment/locale/ru.js":
14229/*!****************************************************************!*\
14230  !*** ../autobahn_client_core/node_modules/moment/locale/ru.js ***!
14231  \****************************************************************/
14232/*! no static exports found */
14233/***/ (function(module, exports, __webpack_require__) {
14234
14235var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14236
14237//! moment.js locale configuration
14238//! locale : Russian [ru]
14239//! author : Viktorminator : https://github.com/Viktorminator
14240//! author : Menelion Elensúle : https://github.com/Oire
14241//! author : Коренберг Марк : https://github.com/socketpair
14242;
14243
14244(function (global, factory) {
14245  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
14246				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
14247				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
14248				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
14249})(this, function (moment) {
14250  'use strict'; //! moment.js locale configuration
14251
14252  function plural(word, num) {
14253    var forms = word.split('_');
14254    return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];
14255  }
14256
14257  function relativeTimeWithPlural(number, withoutSuffix, key) {
14258    var format = {
14259      ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
14260      mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
14261      hh: 'час_часа_часов',
14262      dd: 'день_дня_дней',
14263      ww: 'неделя_недели_недель',
14264      MM: 'месяц_месяца_месяцев',
14265      yy: 'год_года_лет'
14266    };
14267
14268    if (key === 'm') {
14269      return withoutSuffix ? 'минута' : 'минуту';
14270    } else {
14271      return number + ' ' + plural(format[key], +number);
14272    }
14273  }
14274
14275  var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i]; // http://new.gramota.ru/spravka/rules/139-prop : § 103
14276  // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
14277  // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
14278
14279  var ru = moment.defineLocale('ru', {
14280    months: {
14281      format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
14282      standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
14283    },
14284    monthsShort: {
14285      // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
14286      format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
14287      standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
14288    },
14289    weekdays: {
14290      standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
14291      format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
14292      isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/
14293    },
14294    weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
14295    weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
14296    monthsParse: monthsParse,
14297    longMonthsParse: monthsParse,
14298    shortMonthsParse: monthsParse,
14299    // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
14300    monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
14301    // копия предыдущего
14302    monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
14303    // полные названия с падежами
14304    monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
14305    // Выражение, которое соответствует только сокращённым формам
14306    monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
14307    longDateFormat: {
14308      LT: 'H:mm',
14309      LTS: 'H:mm:ss',
14310      L: 'DD.MM.YYYY',
14311      LL: 'D MMMM YYYY г.',
14312      LLL: 'D MMMM YYYY г., H:mm',
14313      LLLL: 'dddd, D MMMM YYYY г., H:mm'
14314    },
14315    calendar: {
14316      sameDay: '[Сегодня, в] LT',
14317      nextDay: '[Завтра, в] LT',
14318      lastDay: '[Вчера, в] LT',
14319      nextWeek: function nextWeek(now) {
14320        if (now.week() !== this.week()) {
14321          switch (this.day()) {
14322            case 0:
14323              return '[В следующее] dddd, [в] LT';
14324
14325            case 1:
14326            case 2:
14327            case 4:
14328              return '[В следующий] dddd, [в] LT';
14329
14330            case 3:
14331            case 5:
14332            case 6:
14333              return '[В следующую] dddd, [в] LT';
14334          }
14335        } else {
14336          if (this.day() === 2) {
14337            return '[Во] dddd, [в] LT';
14338          } else {
14339            return '[В] dddd, [в] LT';
14340          }
14341        }
14342      },
14343      lastWeek: function lastWeek(now) {
14344        if (now.week() !== this.week()) {
14345          switch (this.day()) {
14346            case 0:
14347              return '[В прошлое] dddd, [в] LT';
14348
14349            case 1:
14350            case 2:
14351            case 4:
14352              return '[В прошлый] dddd, [в] LT';
14353
14354            case 3:
14355            case 5:
14356            case 6:
14357              return '[В прошлую] dddd, [в] LT';
14358          }
14359        } else {
14360          if (this.day() === 2) {
14361            return '[Во] dddd, [в] LT';
14362          } else {
14363            return '[В] dddd, [в] LT';
14364          }
14365        }
14366      },
14367      sameElse: 'L'
14368    },
14369    relativeTime: {
14370      future: 'через %s',
14371      past: '%s назад',
14372      s: 'несколько секунд',
14373      ss: relativeTimeWithPlural,
14374      m: relativeTimeWithPlural,
14375      mm: relativeTimeWithPlural,
14376      h: 'час',
14377      hh: relativeTimeWithPlural,
14378      d: 'день',
14379      dd: relativeTimeWithPlural,
14380      w: 'неделя',
14381      ww: relativeTimeWithPlural,
14382      M: 'месяц',
14383      MM: relativeTimeWithPlural,
14384      y: 'год',
14385      yy: relativeTimeWithPlural
14386    },
14387    meridiemParse: /ночи|утра|дня|вечера/i,
14388    isPM: function isPM(input) {
14389      return /^(дня|вечера)$/.test(input);
14390    },
14391    meridiem: function meridiem(hour, minute, isLower) {
14392      if (hour < 4) {
14393        return 'ночи';
14394      } else if (hour < 12) {
14395        return 'утра';
14396      } else if (hour < 17) {
14397        return 'дня';
14398      } else {
14399        return 'вечера';
14400      }
14401    },
14402    dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
14403    ordinal: function ordinal(number, period) {
14404      switch (period) {
14405        case 'M':
14406        case 'd':
14407        case 'DDD':
14408          return number + '-й';
14409
14410        case 'D':
14411          return number + '-го';
14412
14413        case 'w':
14414        case 'W':
14415          return number + '-я';
14416
14417        default:
14418          return number;
14419      }
14420    },
14421    week: {
14422      dow: 1,
14423      // Monday is the first day of the week.
14424      doy: 4 // The week that contains Jan 4th is the first week of the year.
14425
14426    }
14427  });
14428  return ru;
14429});
14430
14431/***/ }),
14432
vendor: 3,689 bytes, lines 14433-14523
14433/***/ "../autobahn_client_core/node_modules/moment/locale/sd.js":
14434/*!****************************************************************!*\
14435  !*** ../autobahn_client_core/node_modules/moment/locale/sd.js ***!
14436  \****************************************************************/
14437/*! no static exports found */
14438/***/ (function(module, exports, __webpack_require__) {
14439
14440var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14441
14442//! moment.js locale configuration
14443//! locale : Sindhi [sd]
14444//! author : Narain Sagar : https://github.com/narainsagar
14445;
14446
14447(function (global, factory) {
14448  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
14449				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
14450				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
14451				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
14452})(this, function (moment) {
14453  'use strict'; //! moment.js locale configuration
14454
14455  var months = ['جنوري', 'فيبروري', 'مارچ', 'اپريل', 'مئي', 'جون', 'جولاءِ', 'آگسٽ', 'سيپٽمبر', 'آڪٽوبر', 'نومبر', 'ڊسمبر'],
14456      days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
14457  var sd = moment.defineLocale('sd', {
14458    months: months,
14459    monthsShort: months,
14460    weekdays: days,
14461    weekdaysShort: days,
14462    weekdaysMin: days,
14463    longDateFormat: {
14464      LT: 'HH:mm',
14465      LTS: 'HH:mm:ss',
14466      L: 'DD/MM/YYYY',
14467      LL: 'D MMMM YYYY',
14468      LLL: 'D MMMM YYYY HH:mm',
14469      LLLL: 'dddd، D MMMM YYYY HH:mm'
14470    },
14471    meridiemParse: /صبح|شام/,
14472    isPM: function isPM(input) {
14473      return 'شام' === input;
14474    },
14475    meridiem: function meridiem(hour, minute, isLower) {
14476      if (hour < 12) {
14477        return 'صبح';
14478      }
14479
14480      return 'شام';
14481    },
14482    calendar: {
14483      sameDay: '[اڄ] LT',
14484      nextDay: '[سڀاڻي] LT',
14485      nextWeek: 'dddd [اڳين هفتي تي] LT',
14486      lastDay: '[ڪالهه] LT',
14487      lastWeek: '[گزريل هفتي] dddd [تي] LT',
14488      sameElse: 'L'
14489    },
14490    relativeTime: {
14491      future: '%s پوء',
14492      past: '%s اڳ',
14493      s: 'چند سيڪنڊ',
14494      ss: '%d سيڪنڊ',
14495      m: 'هڪ منٽ',
14496      mm: '%d منٽ',
14497      h: 'هڪ ڪلاڪ',
14498      hh: '%d ڪلاڪ',
14499      d: 'هڪ ڏينهن',
14500      dd: '%d ڏينهن',
14501      M: 'هڪ مهينو',
14502      MM: '%d مهينا',
14503      y: 'هڪ سال',
14504      yy: '%d سال'
14505    },
14506    preparse: function preparse(string) {
14507      return string.replace(/،/g, ',');
14508    },
14509    postformat: function postformat(string) {
14510      return string.replace(/,/g, '،');
14511    },
14512    week: {
14513      dow: 1,
14514      // Monday is the first day of the week.
14515      doy: 4 // The week that contains Jan 4th is the first week of the year.
14516
14517    }
14518  });
14519  return sd;
14520});
14521
14522/***/ }),
14523
vendor: 3,418 bytes, lines 14524-14597
14524/***/ "../autobahn_client_core/node_modules/moment/locale/se.js":
14525/*!****************************************************************!*\
14526  !*** ../autobahn_client_core/node_modules/moment/locale/se.js ***!
14527  \****************************************************************/
14528/*! no static exports found */
14529/***/ (function(module, exports, __webpack_require__) {
14530
14531var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14532
14533//! moment.js locale configuration
14534//! locale : Northern Sami [se]
14535//! authors : BÃ¥rd Rolstad Henriksen : https://github.com/karamell
14536;
14537
14538(function (global, factory) {
14539  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
14540				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
14541				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
14542				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
14543})(this, function (moment) {
14544  'use strict'; //! moment.js locale configuration
14545
14546  var se = moment.defineLocale('se', {
14547    months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split('_'),
14548    monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
14549    weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
14550    weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
14551    weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
14552    longDateFormat: {
14553      LT: 'HH:mm',
14554      LTS: 'HH:mm:ss',
14555      L: 'DD.MM.YYYY',
14556      LL: 'MMMM D. [b.] YYYY',
14557      LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
14558      LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
14559    },
14560    calendar: {
14561      sameDay: '[otne ti] LT',
14562      nextDay: '[ihttin ti] LT',
14563      nextWeek: 'dddd [ti] LT',
14564      lastDay: '[ikte ti] LT',
14565      lastWeek: '[ovddit] dddd [ti] LT',
14566      sameElse: 'L'
14567    },
14568    relativeTime: {
14569      future: '%s geažes',
14570      past: 'maŋit %s',
14571      s: 'moadde sekunddat',
14572      ss: '%d sekunddat',
14573      m: 'okta minuhta',
14574      mm: '%d minuhtat',
14575      h: 'okta diimmu',
14576      hh: '%d diimmut',
14577      d: 'okta beaivi',
14578      dd: '%d beaivvit',
14579      M: 'okta mánnu',
14580      MM: '%d mánut',
14581      y: 'okta jahki',
14582      yy: '%d jagit'
14583    },
14584    dayOfMonthOrdinalParse: /\d{1,2}\./,
14585    ordinal: '%d.',
14586    week: {
14587      dow: 1,
14588      // Monday is the first day of the week.
14589      doy: 4 // The week that contains Jan 4th is the first week of the year.
14590
14591    }
14592  });
14593  return se;
14594});
14595
14596/***/ }),
14597
vendor: 4,246 bytes, lines 14598-14681
14598/***/ "../autobahn_client_core/node_modules/moment/locale/si.js":
14599/*!****************************************************************!*\
14600  !*** ../autobahn_client_core/node_modules/moment/locale/si.js ***!
14601  \****************************************************************/
14602/*! no static exports found */
14603/***/ (function(module, exports, __webpack_require__) {
14604
14605var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14606
14607//! moment.js locale configuration
14608//! locale : Sinhalese [si]
14609//! author : Sampath Sitinamaluwa : https://github.com/sampathsris
14610;
14611
14612(function (global, factory) {
14613  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
14614				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
14615				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
14616				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
14617})(this, function (moment) {
14618  'use strict'; //! moment.js locale configuration
14619
14620  /*jshint -W100*/
14621
14622  var si = moment.defineLocale('si', {
14623    months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
14624    monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
14625    weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
14626    weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
14627    weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
14628    weekdaysParseExact: true,
14629    longDateFormat: {
14630      LT: 'a h:mm',
14631      LTS: 'a h:mm:ss',
14632      L: 'YYYY/MM/DD',
14633      LL: 'YYYY MMMM D',
14634      LLL: 'YYYY MMMM D, a h:mm',
14635      LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
14636    },
14637    calendar: {
14638      sameDay: '[අද] LT[ට]',
14639      nextDay: '[හෙට] LT[ට]',
14640      nextWeek: 'dddd LT[à¶§]',
14641      lastDay: '[ඊයේ] LT[ට]',
14642      lastWeek: '[පසුගිය] dddd LT[ට]',
14643      sameElse: 'L'
14644    },
14645    relativeTime: {
14646      future: '%sකින්',
14647      past: '%sකට පෙර',
14648      s: 'තත්පර කිහිපය',
14649      ss: 'තත්පර %d',
14650      m: 'මිනිත්තුව',
14651      mm: 'මිනිත්තු %d',
14652      h: 'පැය',
14653      hh: 'පැය %d',
14654      d: 'දිනය',
14655      dd: 'දින %d',
14656      M: 'මාසය',
14657      MM: 'මාස %d',
14658      y: 'වසර',
14659      yy: 'වසර %d'
14660    },
14661    dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
14662    ordinal: function ordinal(number) {
14663      return number + ' වැනි';
14664    },
14665    meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
14666    isPM: function isPM(input) {
14667      return input === 'ප.ව.' || input === 'පස් වරු';
14668    },
14669    meridiem: function meridiem(hours, minutes, isLower) {
14670      if (hours > 11) {
14671        return isLower ? 'ප.ව.' : 'පස් වරු';
14672      } else {
14673        return isLower ? 'පෙ.ව.' : 'පෙර වරු';
14674      }
14675    }
14676  });
14677  return si;
14678});
14679
14680/***/ }),
14681
vendor: 6,528 bytes, lines 14682-14882
14682/***/ "../autobahn_client_core/node_modules/moment/locale/sk.js":
14683/*!****************************************************************!*\
14684  !*** ../autobahn_client_core/node_modules/moment/locale/sk.js ***!
14685  \****************************************************************/
14686/*! no static exports found */
14687/***/ (function(module, exports, __webpack_require__) {
14688
14689var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14690
14691//! moment.js locale configuration
14692//! locale : Slovak [sk]
14693//! author : Martin Minka : https://github.com/k2s
14694//! based on work of petrbela : https://github.com/petrbela
14695;
14696
14697(function (global, factory) {
14698  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
14699				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
14700				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
14701				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
14702})(this, function (moment) {
14703  'use strict'; //! moment.js locale configuration
14704
14705  var months = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
14706      monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
14707
14708  function plural(n) {
14709    return n > 1 && n < 5;
14710  }
14711
14712  function translate(number, withoutSuffix, key, isFuture) {
14713    var result = number + ' ';
14714
14715    switch (key) {
14716      case 's':
14717        // a few seconds / in a few seconds / a few seconds ago
14718        return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
14719
14720      case 'ss':
14721        // 9 seconds / in 9 seconds / 9 seconds ago
14722        if (withoutSuffix || isFuture) {
14723          return result + (plural(number) ? 'sekundy' : 'sekúnd');
14724        } else {
14725          return result + 'sekundami';
14726        }
14727
14728      case 'm':
14729        // a minute / in a minute / a minute ago
14730        return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
14731
14732      case 'mm':
14733        // 9 minutes / in 9 minutes / 9 minutes ago
14734        if (withoutSuffix || isFuture) {
14735          return result + (plural(number) ? 'minúty' : 'minút');
14736        } else {
14737          return result + 'minútami';
14738        }
14739
14740      case 'h':
14741        // an hour / in an hour / an hour ago
14742        return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
14743
14744      case 'hh':
14745        // 9 hours / in 9 hours / 9 hours ago
14746        if (withoutSuffix || isFuture) {
14747          return result + (plural(number) ? 'hodiny' : 'hodín');
14748        } else {
14749          return result + 'hodinami';
14750        }
14751
14752      case 'd':
14753        // a day / in a day / a day ago
14754        return withoutSuffix || isFuture ? 'deň' : 'dňom';
14755
14756      case 'dd':
14757        // 9 days / in 9 days / 9 days ago
14758        if (withoutSuffix || isFuture) {
14759          return result + (plural(number) ? 'dni' : 'dní');
14760        } else {
14761          return result + 'dňami';
14762        }
14763
14764      case 'M':
14765        // a month / in a month / a month ago
14766        return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
14767
14768      case 'MM':
14769        // 9 months / in 9 months / 9 months ago
14770        if (withoutSuffix || isFuture) {
14771          return result + (plural(number) ? 'mesiace' : 'mesiacov');
14772        } else {
14773          return result + 'mesiacmi';
14774        }
14775
14776      case 'y':
14777        // a year / in a year / a year ago
14778        return withoutSuffix || isFuture ? 'rok' : 'rokom';
14779
14780      case 'yy':
14781        // 9 years / in 9 years / 9 years ago
14782        if (withoutSuffix || isFuture) {
14783          return result + (plural(number) ? 'roky' : 'rokov');
14784        } else {
14785          return result + 'rokmi';
14786        }
14787
14788    }
14789  }
14790
14791  var sk = moment.defineLocale('sk', {
14792    months: months,
14793    monthsShort: monthsShort,
14794    weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
14795    weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
14796    weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
14797    longDateFormat: {
14798      LT: 'H:mm',
14799      LTS: 'H:mm:ss',
14800      L: 'DD.MM.YYYY',
14801      LL: 'D. MMMM YYYY',
14802      LLL: 'D. MMMM YYYY H:mm',
14803      LLLL: 'dddd D. MMMM YYYY H:mm'
14804    },
14805    calendar: {
14806      sameDay: '[dnes o] LT',
14807      nextDay: '[zajtra o] LT',
14808      nextWeek: function nextWeek() {
14809        switch (this.day()) {
14810          case 0:
14811            return '[v nedeľu o] LT';
14812
14813          case 1:
14814          case 2:
14815            return '[v] dddd [o] LT';
14816
14817          case 3:
14818            return '[v stredu o] LT';
14819
14820          case 4:
14821            return '[vo štvrtok o] LT';
14822
14823          case 5:
14824            return '[v piatok o] LT';
14825
14826          case 6:
14827            return '[v sobotu o] LT';
14828        }
14829      },
14830      lastDay: '[včera o] LT',
14831      lastWeek: function lastWeek() {
14832        switch (this.day()) {
14833          case 0:
14834            return '[minulú nedeľu o] LT';
14835
14836          case 1:
14837          case 2:
14838            return '[minulý] dddd [o] LT';
14839
14840          case 3:
14841            return '[minulú stredu o] LT';
14842
14843          case 4:
14844          case 5:
14845            return '[minulý] dddd [o] LT';
14846
14847          case 6:
14848            return '[minulú sobotu o] LT';
14849        }
14850      },
14851      sameElse: 'L'
14852    },
14853    relativeTime: {
14854      future: 'za %s',
14855      past: 'pred %s',
14856      s: translate,
14857      ss: translate,
14858      m: translate,
14859      mm: translate,
14860      h: translate,
14861      hh: translate,
14862      d: translate,
14863      dd: translate,
14864      M: translate,
14865      MM: translate,
14866      y: translate,
14867      yy: translate
14868    },
14869    dayOfMonthOrdinalParse: /\d{1,2}\./,
14870    ordinal: '%d.',
14871    week: {
14872      dow: 1,
14873      // Monday is the first day of the week.
14874      doy: 4 // The week that contains Jan 4th is the first week of the year.
14875
14876    }
14877  });
14878  return sk;
14879});
14880
14881/***/ }),
14882
vendor: 7,209 bytes, lines 14883-15092
14883/***/ "../autobahn_client_core/node_modules/moment/locale/sl.js":
14884/*!****************************************************************!*\
14885  !*** ../autobahn_client_core/node_modules/moment/locale/sl.js ***!
14886  \****************************************************************/
14887/*! no static exports found */
14888/***/ (function(module, exports, __webpack_require__) {
14889
14890var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
14891
14892//! moment.js locale configuration
14893//! locale : Slovenian [sl]
14894//! author : Robert Sedovšek : https://github.com/sedovsek
14895;
14896
14897(function (global, factory) {
14898  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
14899				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
14900				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
14901				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
14902})(this, function (moment) {
14903  'use strict'; //! moment.js locale configuration
14904
14905  function processRelativeTime(number, withoutSuffix, key, isFuture) {
14906    var result = number + ' ';
14907
14908    switch (key) {
14909      case 's':
14910        return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
14911
14912      case 'ss':
14913        if (number === 1) {
14914          result += withoutSuffix ? 'sekundo' : 'sekundi';
14915        } else if (number === 2) {
14916          result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
14917        } else if (number < 5) {
14918          result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
14919        } else {
14920          result += 'sekund';
14921        }
14922
14923        return result;
14924
14925      case 'm':
14926        return withoutSuffix ? 'ena minuta' : 'eno minuto';
14927
14928      case 'mm':
14929        if (number === 1) {
14930          result += withoutSuffix ? 'minuta' : 'minuto';
14931        } else if (number === 2) {
14932          result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
14933        } else if (number < 5) {
14934          result += withoutSuffix || isFuture ? 'minute' : 'minutami';
14935        } else {
14936          result += withoutSuffix || isFuture ? 'minut' : 'minutami';
14937        }
14938
14939        return result;
14940
14941      case 'h':
14942        return withoutSuffix ? 'ena ura' : 'eno uro';
14943
14944      case 'hh':
14945        if (number === 1) {
14946          result += withoutSuffix ? 'ura' : 'uro';
14947        } else if (number === 2) {
14948          result += withoutSuffix || isFuture ? 'uri' : 'urama';
14949        } else if (number < 5) {
14950          result += withoutSuffix || isFuture ? 'ure' : 'urami';
14951        } else {
14952          result += withoutSuffix || isFuture ? 'ur' : 'urami';
14953        }
14954
14955        return result;
14956
14957      case 'd':
14958        return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
14959
14960      case 'dd':
14961        if (number === 1) {
14962          result += withoutSuffix || isFuture ? 'dan' : 'dnem';
14963        } else if (number === 2) {
14964          result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
14965        } else {
14966          result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
14967        }
14968
14969        return result;
14970
14971      case 'M':
14972        return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
14973
14974      case 'MM':
14975        if (number === 1) {
14976          result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
14977        } else if (number === 2) {
14978          result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
14979        } else if (number < 5) {
14980          result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
14981        } else {
14982          result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
14983        }
14984
14985        return result;
14986
14987      case 'y':
14988        return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
14989
14990      case 'yy':
14991        if (number === 1) {
14992          result += withoutSuffix || isFuture ? 'leto' : 'letom';
14993        } else if (number === 2) {
14994          result += withoutSuffix || isFuture ? 'leti' : 'letoma';
14995        } else if (number < 5) {
14996          result += withoutSuffix || isFuture ? 'leta' : 'leti';
14997        } else {
14998          result += withoutSuffix || isFuture ? 'let' : 'leti';
14999        }
15000
15001        return result;
15002    }
15003  }
15004
15005  var sl = moment.defineLocale('sl', {
15006    months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
15007    monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
15008    monthsParseExact: true,
15009    weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
15010    weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
15011    weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
15012    weekdaysParseExact: true,
15013    longDateFormat: {
15014      LT: 'H:mm',
15015      LTS: 'H:mm:ss',
15016      L: 'DD. MM. YYYY',
15017      LL: 'D. MMMM YYYY',
15018      LLL: 'D. MMMM YYYY H:mm',
15019      LLLL: 'dddd, D. MMMM YYYY H:mm'
15020    },
15021    calendar: {
15022      sameDay: '[danes ob] LT',
15023      nextDay: '[jutri ob] LT',
15024      nextWeek: function nextWeek() {
15025        switch (this.day()) {
15026          case 0:
15027            return '[v] [nedeljo] [ob] LT';
15028
15029          case 3:
15030            return '[v] [sredo] [ob] LT';
15031
15032          case 6:
15033            return '[v] [soboto] [ob] LT';
15034
15035          case 1:
15036          case 2:
15037          case 4:
15038          case 5:
15039            return '[v] dddd [ob] LT';
15040        }
15041      },
15042      lastDay: '[včeraj ob] LT',
15043      lastWeek: function lastWeek() {
15044        switch (this.day()) {
15045          case 0:
15046            return '[prejšnjo] [nedeljo] [ob] LT';
15047
15048          case 3:
15049            return '[prejšnjo] [sredo] [ob] LT';
15050
15051          case 6:
15052            return '[prejšnjo] [soboto] [ob] LT';
15053
15054          case 1:
15055          case 2:
15056          case 4:
15057          case 5:
15058            return '[prejšnji] dddd [ob] LT';
15059        }
15060      },
15061      sameElse: 'L'
15062    },
15063    relativeTime: {
15064      future: 'čez %s',
15065      past: 'pred %s',
15066      s: processRelativeTime,
15067      ss: processRelativeTime,
15068      m: processRelativeTime,
15069      mm: processRelativeTime,
15070      h: processRelativeTime,
15071      hh: processRelativeTime,
15072      d: processRelativeTime,
15073      dd: processRelativeTime,
15074      M: processRelativeTime,
15075      MM: processRelativeTime,
15076      y: processRelativeTime,
15077      yy: processRelativeTime
15078    },
15079    dayOfMonthOrdinalParse: /\d{1,2}\./,
15080    ordinal: '%d.',
15081    week: {
15082      dow: 1,
15083      // Monday is the first day of the week.
15084      doy: 7 // The week that contains Jan 7th is the first week of the year.
15085
15086    }
15087  });
15088  return sl;
15089});
15090
15091/***/ }),
15092
vendor: 3,588 bytes, lines 15093-15176
15093/***/ "../autobahn_client_core/node_modules/moment/locale/sq.js":
15094/*!****************************************************************!*\
15095  !*** ../autobahn_client_core/node_modules/moment/locale/sq.js ***!
15096  \****************************************************************/
15097/*! no static exports found */
15098/***/ (function(module, exports, __webpack_require__) {
15099
15100var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15101
15102//! moment.js locale configuration
15103//! locale : Albanian [sq]
15104//! author : Flakërim Ismani : https://github.com/flakerimi
15105//! author : Menelion Elensúle : https://github.com/Oire
15106//! author : Oerd Cukalla : https://github.com/oerd
15107;
15108
15109(function (global, factory) {
15110  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15111				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15112				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15113				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15114})(this, function (moment) {
15115  'use strict'; //! moment.js locale configuration
15116
15117  var sq = moment.defineLocale('sq', {
15118    months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
15119    monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
15120    weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
15121    weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
15122    weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
15123    weekdaysParseExact: true,
15124    meridiemParse: /PD|MD/,
15125    isPM: function isPM(input) {
15126      return input.charAt(0) === 'M';
15127    },
15128    meridiem: function meridiem(hours, minutes, isLower) {
15129      return hours < 12 ? 'PD' : 'MD';
15130    },
15131    longDateFormat: {
15132      LT: 'HH:mm',
15133      LTS: 'HH:mm:ss',
15134      L: 'DD/MM/YYYY',
15135      LL: 'D MMMM YYYY',
15136      LLL: 'D MMMM YYYY HH:mm',
15137      LLLL: 'dddd, D MMMM YYYY HH:mm'
15138    },
15139    calendar: {
15140      sameDay: '[Sot në] LT',
15141      nextDay: '[Nesër në] LT',
15142      nextWeek: 'dddd [në] LT',
15143      lastDay: '[Dje në] LT',
15144      lastWeek: 'dddd [e kaluar në] LT',
15145      sameElse: 'L'
15146    },
15147    relativeTime: {
15148      future: 'në %s',
15149      past: '%s më parë',
15150      s: 'disa sekonda',
15151      ss: '%d sekonda',
15152      m: 'një minutë',
15153      mm: '%d minuta',
15154      h: 'një orë',
15155      hh: '%d orë',
15156      d: 'një ditë',
15157      dd: '%d ditë',
15158      M: 'një muaj',
15159      MM: '%d muaj',
15160      y: 'një vit',
15161      yy: '%d vite'
15162    },
15163    dayOfMonthOrdinalParse: /\d{1,2}\./,
15164    ordinal: '%d.',
15165    week: {
15166      dow: 1,
15167      // Monday is the first day of the week.
15168      doy: 4 // The week that contains Jan 4th is the first week of the year.
15169
15170    }
15171  });
15172  return sq;
15173});
15174
15175/***/ }),
15176
vendor: 6,101 bytes, lines 15177-15314
15177/***/ "../autobahn_client_core/node_modules/moment/locale/sr-cyrl.js":
15178/*!*********************************************************************!*\
15179  !*** ../autobahn_client_core/node_modules/moment/locale/sr-cyrl.js ***!
15180  \*********************************************************************/
15181/*! no static exports found */
15182/***/ (function(module, exports, __webpack_require__) {
15183
15184var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15185
15186//! moment.js locale configuration
15187//! locale : Serbian Cyrillic [sr-cyrl]
15188//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
15189//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
15190;
15191
15192(function (global, factory) {
15193  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15194				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15195				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15196				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15197})(this, function (moment) {
15198  'use strict'; //! moment.js locale configuration
15199
15200  var translator = {
15201    words: {
15202      //Different grammatical cases
15203      ss: ['секунда', 'секунде', 'секунди'],
15204      m: ['један минут', 'једног минута'],
15205      mm: ['минут', 'минута', 'минута'],
15206      h: ['један сат', 'једног сата'],
15207      hh: ['сат', 'сата', 'сати'],
15208      d: ['један дан', 'једног дана'],
15209      dd: ['дан', 'дана', 'дана'],
15210      M: ['један месец', 'једног месеца'],
15211      MM: ['месец', 'месеца', 'месеци'],
15212      y: ['једну годину', 'једне године'],
15213      yy: ['годину', 'године', 'година']
15214    },
15215    correctGrammaticalCase: function correctGrammaticalCase(number, wordKey) {
15216      if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {
15217        return number % 10 === 1 ? wordKey[0] : wordKey[1];
15218      }
15219
15220      return wordKey[2];
15221    },
15222    translate: function translate(number, withoutSuffix, key, isFuture) {
15223      var wordKey = translator.words[key],
15224          word;
15225
15226      if (key.length === 1) {
15227        // Nominativ
15228        if (key === 'y' && withoutSuffix) return 'једна година';
15229        return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
15230      }
15231
15232      word = translator.correctGrammaticalCase(number, wordKey); // Nominativ
15233
15234      if (key === 'yy' && withoutSuffix && word === 'годину') {
15235        return number + ' година';
15236      }
15237
15238      return number + ' ' + word;
15239    }
15240  };
15241  var srCyrl = moment.defineLocale('sr-cyrl', {
15242    months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
15243    monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
15244    monthsParseExact: true,
15245    weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
15246    weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
15247    weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
15248    weekdaysParseExact: true,
15249    longDateFormat: {
15250      LT: 'H:mm',
15251      LTS: 'H:mm:ss',
15252      L: 'D. M. YYYY.',
15253      LL: 'D. MMMM YYYY.',
15254      LLL: 'D. MMMM YYYY. H:mm',
15255      LLLL: 'dddd, D. MMMM YYYY. H:mm'
15256    },
15257    calendar: {
15258      sameDay: '[данас у] LT',
15259      nextDay: '[сутра у] LT',
15260      nextWeek: function nextWeek() {
15261        switch (this.day()) {
15262          case 0:
15263            return '[у] [недељу] [у] LT';
15264
15265          case 3:
15266            return '[у] [среду] [у] LT';
15267
15268          case 6:
15269            return '[у] [суботу] [у] LT';
15270
15271          case 1:
15272          case 2:
15273          case 4:
15274          case 5:
15275            return '[у] dddd [у] LT';
15276        }
15277      },
15278      lastDay: '[јуче у] LT',
15279      lastWeek: function lastWeek() {
15280        var lastWeekDays = ['[прошле] [недеље] [у] LT', '[прошлог] [понедељка] [у] LT', '[прошлог] [уторка] [у] LT', '[прошле] [среде] [у] LT', '[прошлог] [четвртка] [у] LT', '[прошлог] [петка] [у] LT', '[прошле] [суботе] [у] LT'];
15281        return lastWeekDays[this.day()];
15282      },
15283      sameElse: 'L'
15284    },
15285    relativeTime: {
15286      future: 'за %s',
15287      past: 'пре %s',
15288      s: 'неколико секунди',
15289      ss: translator.translate,
15290      m: translator.translate,
15291      mm: translator.translate,
15292      h: translator.translate,
15293      hh: translator.translate,
15294      d: translator.translate,
15295      dd: translator.translate,
15296      M: translator.translate,
15297      MM: translator.translate,
15298      y: translator.translate,
15299      yy: translator.translate
15300    },
15301    dayOfMonthOrdinalParse: /\d{1,2}\./,
15302    ordinal: '%d.',
15303    week: {
15304      dow: 1,
15305      // Monday is the first day of the week.
15306      doy: 7 // The week that contains Jan 1st is the first week of the year.
15307
15308    }
15309  });
15310  return srCyrl;
15311});
15312
15313/***/ }),
15314
vendor: 5,506 bytes, lines 15315-15452
15315/***/ "../autobahn_client_core/node_modules/moment/locale/sr.js":
15316/*!****************************************************************!*\
15317  !*** ../autobahn_client_core/node_modules/moment/locale/sr.js ***!
15318  \****************************************************************/
15319/*! no static exports found */
15320/***/ (function(module, exports, __webpack_require__) {
15321
15322var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15323
15324//! moment.js locale configuration
15325//! locale : Serbian [sr]
15326//! author : Milan Janačković<[email protected]> : https://github.com/milan-j
15327//! author : Stefan Crnjaković <[email protected]> : https://github.com/crnjakovic
15328;
15329
15330(function (global, factory) {
15331  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15332				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15333				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15334				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15335})(this, function (moment) {
15336  'use strict'; //! moment.js locale configuration
15337
15338  var translator = {
15339    words: {
15340      //Different grammatical cases
15341      ss: ['sekunda', 'sekunde', 'sekundi'],
15342      m: ['jedan minut', 'jednog minuta'],
15343      mm: ['minut', 'minuta', 'minuta'],
15344      h: ['jedan sat', 'jednog sata'],
15345      hh: ['sat', 'sata', 'sati'],
15346      d: ['jedan dan', 'jednog dana'],
15347      dd: ['dan', 'dana', 'dana'],
15348      M: ['jedan mesec', 'jednog meseca'],
15349      MM: ['mesec', 'meseca', 'meseci'],
15350      y: ['jednu godinu', 'jedne godine'],
15351      yy: ['godinu', 'godine', 'godina']
15352    },
15353    correctGrammaticalCase: function correctGrammaticalCase(number, wordKey) {
15354      if (number % 10 >= 1 && number % 10 <= 4 && (number % 100 < 10 || number % 100 >= 20)) {
15355        return number % 10 === 1 ? wordKey[0] : wordKey[1];
15356      }
15357
15358      return wordKey[2];
15359    },
15360    translate: function translate(number, withoutSuffix, key, isFuture) {
15361      var wordKey = translator.words[key],
15362          word;
15363
15364      if (key.length === 1) {
15365        // Nominativ
15366        if (key === 'y' && withoutSuffix) return 'jedna godina';
15367        return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];
15368      }
15369
15370      word = translator.correctGrammaticalCase(number, wordKey); // Nominativ
15371
15372      if (key === 'yy' && withoutSuffix && word === 'godinu') {
15373        return number + ' godina';
15374      }
15375
15376      return number + ' ' + word;
15377    }
15378  };
15379  var sr = moment.defineLocale('sr', {
15380    months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
15381    monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
15382    monthsParseExact: true,
15383    weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
15384    weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
15385    weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
15386    weekdaysParseExact: true,
15387    longDateFormat: {
15388      LT: 'H:mm',
15389      LTS: 'H:mm:ss',
15390      L: 'D. M. YYYY.',
15391      LL: 'D. MMMM YYYY.',
15392      LLL: 'D. MMMM YYYY. H:mm',
15393      LLLL: 'dddd, D. MMMM YYYY. H:mm'
15394    },
15395    calendar: {
15396      sameDay: '[danas u] LT',
15397      nextDay: '[sutra u] LT',
15398      nextWeek: function nextWeek() {
15399        switch (this.day()) {
15400          case 0:
15401            return '[u] [nedelju] [u] LT';
15402
15403          case 3:
15404            return '[u] [sredu] [u] LT';
15405
15406          case 6:
15407            return '[u] [subotu] [u] LT';
15408
15409          case 1:
15410          case 2:
15411          case 4:
15412          case 5:
15413            return '[u] dddd [u] LT';
15414        }
15415      },
15416      lastDay: '[juče u] LT',
15417      lastWeek: function lastWeek() {
15418        var lastWeekDays = ['[prošle] [nedelje] [u] LT', '[prošlog] [ponedeljka] [u] LT', '[prošlog] [utorka] [u] LT', '[prošle] [srede] [u] LT', '[prošlog] [četvrtka] [u] LT', '[prošlog] [petka] [u] LT', '[prošle] [subote] [u] LT'];
15419        return lastWeekDays[this.day()];
15420      },
15421      sameElse: 'L'
15422    },
15423    relativeTime: {
15424      future: 'za %s',
15425      past: 'pre %s',
15426      s: 'nekoliko sekundi',
15427      ss: translator.translate,
15428      m: translator.translate,
15429      mm: translator.translate,
15430      h: translator.translate,
15431      hh: translator.translate,
15432      d: translator.translate,
15433      dd: translator.translate,
15434      M: translator.translate,
15435      MM: translator.translate,
15436      y: translator.translate,
15437      yy: translator.translate
15438    },
15439    dayOfMonthOrdinalParse: /\d{1,2}\./,
15440    ordinal: '%d.',
15441    week: {
15442      dow: 1,
15443      // Monday is the first day of the week.
15444      doy: 7 // The week that contains Jan 7th is the first week of the year.
15445
15446    }
15447  });
15448  return sr;
15449});
15450
15451/***/ }),
15452
vendor: 4,103 bytes, lines 15453-15556
15453/***/ "../autobahn_client_core/node_modules/moment/locale/ss.js":
15454/*!****************************************************************!*\
15455  !*** ../autobahn_client_core/node_modules/moment/locale/ss.js ***!
15456  \****************************************************************/
15457/*! no static exports found */
15458/***/ (function(module, exports, __webpack_require__) {
15459
15460var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15461
15462//! moment.js locale configuration
15463//! locale : siSwati [ss]
15464//! author : Nicolai Davies<[email protected]> : https://github.com/nicolaidavies
15465;
15466
15467(function (global, factory) {
15468  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15469				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15470				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15471				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15472})(this, function (moment) {
15473  'use strict'; //! moment.js locale configuration
15474
15475  var ss = moment.defineLocale('ss', {
15476    months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
15477    monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
15478    weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
15479    weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
15480    weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
15481    weekdaysParseExact: true,
15482    longDateFormat: {
15483      LT: 'h:mm A',
15484      LTS: 'h:mm:ss A',
15485      L: 'DD/MM/YYYY',
15486      LL: 'D MMMM YYYY',
15487      LLL: 'D MMMM YYYY h:mm A',
15488      LLLL: 'dddd, D MMMM YYYY h:mm A'
15489    },
15490    calendar: {
15491      sameDay: '[Namuhla nga] LT',
15492      nextDay: '[Kusasa nga] LT',
15493      nextWeek: 'dddd [nga] LT',
15494      lastDay: '[Itolo nga] LT',
15495      lastWeek: 'dddd [leliphelile] [nga] LT',
15496      sameElse: 'L'
15497    },
15498    relativeTime: {
15499      future: 'nga %s',
15500      past: 'wenteka nga %s',
15501      s: 'emizuzwana lomcane',
15502      ss: '%d mzuzwana',
15503      m: 'umzuzu',
15504      mm: '%d emizuzu',
15505      h: 'lihora',
15506      hh: '%d emahora',
15507      d: 'lilanga',
15508      dd: '%d emalanga',
15509      M: 'inyanga',
15510      MM: '%d tinyanga',
15511      y: 'umnyaka',
15512      yy: '%d iminyaka'
15513    },
15514    meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
15515    meridiem: function meridiem(hours, minutes, isLower) {
15516      if (hours < 11) {
15517        return 'ekuseni';
15518      } else if (hours < 15) {
15519        return 'emini';
15520      } else if (hours < 19) {
15521        return 'entsambama';
15522      } else {
15523        return 'ebusuku';
15524      }
15525    },
15526    meridiemHour: function meridiemHour(hour, meridiem) {
15527      if (hour === 12) {
15528        hour = 0;
15529      }
15530
15531      if (meridiem === 'ekuseni') {
15532        return hour;
15533      } else if (meridiem === 'emini') {
15534        return hour >= 11 ? hour : hour + 12;
15535      } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
15536        if (hour === 0) {
15537          return 0;
15538        }
15539
15540        return hour + 12;
15541      }
15542    },
15543    dayOfMonthOrdinalParse: /\d{1,2}/,
15544    ordinal: '%d',
15545    week: {
15546      dow: 1,
15547      // Monday is the first day of the week.
15548      doy: 4 // The week that contains Jan 4th is the first week of the year.
15549
15550    }
15551  });
15552  return ss;
15553});
15554
15555/***/ }),
15556
vendor: 3,492 bytes, lines 15557-15636
15557/***/ "../autobahn_client_core/node_modules/moment/locale/sv.js":
15558/*!****************************************************************!*\
15559  !*** ../autobahn_client_core/node_modules/moment/locale/sv.js ***!
15560  \****************************************************************/
15561/*! no static exports found */
15562/***/ (function(module, exports, __webpack_require__) {
15563
15564var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15565
15566//! moment.js locale configuration
15567//! locale : Swedish [sv]
15568//! author : Jens Alm : https://github.com/ulmus
15569;
15570
15571(function (global, factory) {
15572  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15573				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15574				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15575				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15576})(this, function (moment) {
15577  'use strict'; //! moment.js locale configuration
15578
15579  var sv = moment.defineLocale('sv', {
15580    months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
15581    monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
15582    weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
15583    weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
15584    weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
15585    longDateFormat: {
15586      LT: 'HH:mm',
15587      LTS: 'HH:mm:ss',
15588      L: 'YYYY-MM-DD',
15589      LL: 'D MMMM YYYY',
15590      LLL: 'D MMMM YYYY [kl.] HH:mm',
15591      LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
15592      lll: 'D MMM YYYY HH:mm',
15593      llll: 'ddd D MMM YYYY HH:mm'
15594    },
15595    calendar: {
15596      sameDay: '[Idag] LT',
15597      nextDay: '[Imorgon] LT',
15598      lastDay: '[Igår] LT',
15599      nextWeek: '[PÃ¥] dddd LT',
15600      lastWeek: '[I] dddd[s] LT',
15601      sameElse: 'L'
15602    },
15603    relativeTime: {
15604      future: 'om %s',
15605      past: 'för %s sedan',
15606      s: 'några sekunder',
15607      ss: '%d sekunder',
15608      m: 'en minut',
15609      mm: '%d minuter',
15610      h: 'en timme',
15611      hh: '%d timmar',
15612      d: 'en dag',
15613      dd: '%d dagar',
15614      M: 'en månad',
15615      MM: '%d månader',
15616      y: 'ett år',
15617      yy: '%d år'
15618    },
15619    dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
15620    ordinal: function ordinal(number) {
15621      var b = number % 10,
15622          output = ~~(number % 100 / 10) === 1 ? ':e' : b === 1 ? ':a' : b === 2 ? ':a' : b === 3 ? ':e' : ':e';
15623      return number + output;
15624    },
15625    week: {
15626      dow: 1,
15627      // Monday is the first day of the week.
15628      doy: 4 // The week that contains Jan 4th is the first week of the year.
15629
15630    }
15631  });
15632  return sv;
15633});
15634
15635/***/ }),
15636
vendor: 3,228 bytes, lines 15637-15709
15637/***/ "../autobahn_client_core/node_modules/moment/locale/sw.js":
15638/*!****************************************************************!*\
15639  !*** ../autobahn_client_core/node_modules/moment/locale/sw.js ***!
15640  \****************************************************************/
15641/*! no static exports found */
15642/***/ (function(module, exports, __webpack_require__) {
15643
15644var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15645
15646//! moment.js locale configuration
15647//! locale : Swahili [sw]
15648//! author : Fahad Kassim : https://github.com/fadsel
15649;
15650
15651(function (global, factory) {
15652  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15653				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15654				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15655				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15656})(this, function (moment) {
15657  'use strict'; //! moment.js locale configuration
15658
15659  var sw = moment.defineLocale('sw', {
15660    months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
15661    monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
15662    weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
15663    weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
15664    weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
15665    weekdaysParseExact: true,
15666    longDateFormat: {
15667      LT: 'hh:mm A',
15668      LTS: 'HH:mm:ss',
15669      L: 'DD.MM.YYYY',
15670      LL: 'D MMMM YYYY',
15671      LLL: 'D MMMM YYYY HH:mm',
15672      LLLL: 'dddd, D MMMM YYYY HH:mm'
15673    },
15674    calendar: {
15675      sameDay: '[leo saa] LT',
15676      nextDay: '[kesho saa] LT',
15677      nextWeek: '[wiki ijayo] dddd [saat] LT',
15678      lastDay: '[jana] LT',
15679      lastWeek: '[wiki iliyopita] dddd [saat] LT',
15680      sameElse: 'L'
15681    },
15682    relativeTime: {
15683      future: '%s baadaye',
15684      past: 'tokea %s',
15685      s: 'hivi punde',
15686      ss: 'sekunde %d',
15687      m: 'dakika moja',
15688      mm: 'dakika %d',
15689      h: 'saa limoja',
15690      hh: 'masaa %d',
15691      d: 'siku moja',
15692      dd: 'siku %d',
15693      M: 'mwezi mmoja',
15694      MM: 'miezi %d',
15695      y: 'mwaka mmoja',
15696      yy: 'miaka %d'
15697    },
15698    week: {
15699      dow: 1,
15700      // Monday is the first day of the week.
15701      doy: 7 // The week that contains Jan 7th is the first week of the year.
15702
15703    }
15704  });
15705  return sw;
15706});
15707
15708/***/ }),
15709
vendor: 6,200 bytes, lines 15710-15853
15710/***/ "../autobahn_client_core/node_modules/moment/locale/ta.js":
15711/*!****************************************************************!*\
15712  !*** ../autobahn_client_core/node_modules/moment/locale/ta.js ***!
15713  \****************************************************************/
15714/*! no static exports found */
15715/***/ (function(module, exports, __webpack_require__) {
15716
15717var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15718
15719//! moment.js locale configuration
15720//! locale : Tamil [ta]
15721//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404
15722;
15723
15724(function (global, factory) {
15725  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15726				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15727				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15728				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15729})(this, function (moment) {
15730  'use strict'; //! moment.js locale configuration
15731
15732  var symbolMap = {
15733    1: '௧',
15734    2: '௨',
15735    3: '௩',
15736    4: '௪',
15737    5: '௫',
15738    6: '௬',
15739    7: '௭',
15740    8: '௮',
15741    9: '௯',
15742    0: '௦'
15743  },
15744      numberMap = {
15745    '௧': '1',
15746    '௨': '2',
15747    '௩': '3',
15748    '௪': '4',
15749    '௫': '5',
15750    '௬': '6',
15751    '௭': '7',
15752    '௮': '8',
15753    '௯': '9',
15754    '௦': '0'
15755  };
15756  var ta = moment.defineLocale('ta', {
15757    months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
15758    monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
15759    weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
15760    weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
15761    weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
15762    longDateFormat: {
15763      LT: 'HH:mm',
15764      LTS: 'HH:mm:ss',
15765      L: 'DD/MM/YYYY',
15766      LL: 'D MMMM YYYY',
15767      LLL: 'D MMMM YYYY, HH:mm',
15768      LLLL: 'dddd, D MMMM YYYY, HH:mm'
15769    },
15770    calendar: {
15771      sameDay: '[இன்று] LT',
15772      nextDay: '[நாளை] LT',
15773      nextWeek: 'dddd, LT',
15774      lastDay: '[நேற்று] LT',
15775      lastWeek: '[கடந்த வாரம்] dddd, LT',
15776      sameElse: 'L'
15777    },
15778    relativeTime: {
15779      future: '%s இல்',
15780      past: '%s முன்',
15781      s: 'ஒரு சில விநாடிகள்',
15782      ss: '%d விநாடிகள்',
15783      m: 'ஒரு நிமிடம்',
15784      mm: '%d நிமிடங்கள்',
15785      h: 'ஒரு மணி நேரம்',
15786      hh: '%d மணி நேரம்',
15787      d: 'ஒரு நாள்',
15788      dd: '%d நாட்கள்',
15789      M: 'ஒரு மாதம்',
15790      MM: '%d மாதங்கள்',
15791      y: 'ஒரு வருடம்',
15792      yy: '%d ஆண்டுகள்'
15793    },
15794    dayOfMonthOrdinalParse: /\d{1,2}வது/,
15795    ordinal: function ordinal(number) {
15796      return number + 'வது';
15797    },
15798    preparse: function preparse(string) {
15799      return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
15800        return numberMap[match];
15801      });
15802    },
15803    postformat: function postformat(string) {
15804      return string.replace(/\d/g, function (match) {
15805        return symbolMap[match];
15806      });
15807    },
15808    // refer http://ta.wikipedia.org/s/1er1
15809    meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
15810    meridiem: function meridiem(hour, minute, isLower) {
15811      if (hour < 2) {
15812        return ' யாமம்';
15813      } else if (hour < 6) {
15814        return ' வைகறை'; // வைகறை
15815      } else if (hour < 10) {
15816        return ' காலை'; // காலை
15817      } else if (hour < 14) {
15818        return ' நண்பகல்'; // நண்பகல்
15819      } else if (hour < 18) {
15820        return ' எற்பாடு'; // எற்பாடு
15821      } else if (hour < 22) {
15822        return ' மாலை'; // மாலை
15823      } else {
15824        return ' யாமம்';
15825      }
15826    },
15827    meridiemHour: function meridiemHour(hour, meridiem) {
15828      if (hour === 12) {
15829        hour = 0;
15830      }
15831
15832      if (meridiem === 'யாமம்') {
15833        return hour < 2 ? hour : hour + 12;
15834      } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
15835        return hour;
15836      } else if (meridiem === 'நண்பகல்') {
15837        return hour >= 10 ? hour : hour + 12;
15838      } else {
15839        return hour + 12;
15840      }
15841    },
15842    week: {
15843      dow: 0,
15844      // Sunday is the first day of the week.
15845      doy: 6 // The week that contains Jan 6th is the first week of the year.
15846
15847    }
15848  });
15849  return ta;
15850});
15851
15852/***/ }),
15853
vendor: 4,894 bytes, lines 15854-15957
15854/***/ "../autobahn_client_core/node_modules/moment/locale/te.js":
15855/*!****************************************************************!*\
15856  !*** ../autobahn_client_core/node_modules/moment/locale/te.js ***!
15857  \****************************************************************/
15858/*! no static exports found */
15859/***/ (function(module, exports, __webpack_require__) {
15860
15861var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15862
15863//! moment.js locale configuration
15864//! locale : Telugu [te]
15865//! author : Krishna Chaitanya Thota : https://github.com/kcthota
15866;
15867
15868(function (global, factory) {
15869  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15870				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15871				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15872				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15873})(this, function (moment) {
15874  'use strict'; //! moment.js locale configuration
15875
15876  var te = moment.defineLocale('te', {
15877    months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
15878    monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
15879    monthsParseExact: true,
15880    weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
15881    weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
15882    weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
15883    longDateFormat: {
15884      LT: 'A h:mm',
15885      LTS: 'A h:mm:ss',
15886      L: 'DD/MM/YYYY',
15887      LL: 'D MMMM YYYY',
15888      LLL: 'D MMMM YYYY, A h:mm',
15889      LLLL: 'dddd, D MMMM YYYY, A h:mm'
15890    },
15891    calendar: {
15892      sameDay: '[నేడు] LT',
15893      nextDay: '[రేపు] LT',
15894      nextWeek: 'dddd, LT',
15895      lastDay: '[నిన్న] LT',
15896      lastWeek: '[గత] dddd, LT',
15897      sameElse: 'L'
15898    },
15899    relativeTime: {
15900      future: '%s లో',
15901      past: '%s క్రితం',
15902      s: 'కొన్ని క్షణాలు',
15903      ss: '%d సెకన్లు',
15904      m: 'ఒక నిమిషం',
15905      mm: '%d నిమిషాలు',
15906      h: 'ఒక గంట',
15907      hh: '%d గంటలు',
15908      d: 'ఒక రోజు',
15909      dd: '%d రోజులు',
15910      M: 'ఒక నెల',
15911      MM: '%d నెలలు',
15912      y: 'ఒక సంవత్సరం',
15913      yy: '%d సంవత్సరాలు'
15914    },
15915    dayOfMonthOrdinalParse: /\d{1,2}à°µ/,
15916    ordinal: '%dà°µ',
15917    meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
15918    meridiemHour: function meridiemHour(hour, meridiem) {
15919      if (hour === 12) {
15920        hour = 0;
15921      }
15922
15923      if (meridiem === 'రాత్రి') {
15924        return hour < 4 ? hour : hour + 12;
15925      } else if (meridiem === 'ఉదయం') {
15926        return hour;
15927      } else if (meridiem === 'మధ్యాహ్నం') {
15928        return hour >= 10 ? hour : hour + 12;
15929      } else if (meridiem === 'సాయంత్రం') {
15930        return hour + 12;
15931      }
15932    },
15933    meridiem: function meridiem(hour, minute, isLower) {
15934      if (hour < 4) {
15935        return 'రాత్రి';
15936      } else if (hour < 10) {
15937        return 'ఉదయం';
15938      } else if (hour < 17) {
15939        return 'మధ్యాహ్నం';
15940      } else if (hour < 20) {
15941        return 'సాయంత్రం';
15942      } else {
15943        return 'రాత్రి';
15944      }
15945    },
15946    week: {
15947      dow: 0,
15948      // Sunday is the first day of the week.
15949      doy: 6 // The week that contains Jan 6th is the first week of the year.
15950
15951    }
15952  });
15953  return te;
15954});
15955
15956/***/ }),
15957
vendor: 3,591 bytes, lines 15958-16037
15958/***/ "../autobahn_client_core/node_modules/moment/locale/tet.js":
15959/*!*****************************************************************!*\
15960  !*** ../autobahn_client_core/node_modules/moment/locale/tet.js ***!
15961  \*****************************************************************/
15962/*! no static exports found */
15963/***/ (function(module, exports, __webpack_require__) {
15964
15965var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
15966
15967//! moment.js locale configuration
15968//! locale : Tetun Dili (East Timor) [tet]
15969//! author : Joshua Brooks : https://github.com/joshbrooks
15970//! author : Onorio De J. Afonso : https://github.com/marobo
15971//! author : Sonia Simoes : https://github.com/soniasimoes
15972;
15973
15974(function (global, factory) {
15975  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
15976				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
15977				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
15978				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
15979})(this, function (moment) {
15980  'use strict'; //! moment.js locale configuration
15981
15982  var tet = moment.defineLocale('tet', {
15983    months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
15984    monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
15985    weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
15986    weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
15987    weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
15988    longDateFormat: {
15989      LT: 'HH:mm',
15990      LTS: 'HH:mm:ss',
15991      L: 'DD/MM/YYYY',
15992      LL: 'D MMMM YYYY',
15993      LLL: 'D MMMM YYYY HH:mm',
15994      LLLL: 'dddd, D MMMM YYYY HH:mm'
15995    },
15996    calendar: {
15997      sameDay: '[Ohin iha] LT',
15998      nextDay: '[Aban iha] LT',
15999      nextWeek: 'dddd [iha] LT',
16000      lastDay: '[Horiseik iha] LT',
16001      lastWeek: 'dddd [semana kotuk] [iha] LT',
16002      sameElse: 'L'
16003    },
16004    relativeTime: {
16005      future: 'iha %s',
16006      past: '%s liuba',
16007      s: 'segundu balun',
16008      ss: 'segundu %d',
16009      m: 'minutu ida',
16010      mm: 'minutu %d',
16011      h: 'oras ida',
16012      hh: 'oras %d',
16013      d: 'loron ida',
16014      dd: 'loron %d',
16015      M: 'fulan ida',
16016      MM: 'fulan %d',
16017      y: 'tinan ida',
16018      yy: 'tinan %d'
16019    },
16020    dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
16021    ordinal: function ordinal(number) {
16022      var b = number % 10,
16023          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
16024      return number + output;
16025    },
16026    week: {
16027      dow: 1,
16028      // Monday is the first day of the week.
16029      doy: 4 // The week that contains Jan 4th is the first week of the year.
16030
16031    }
16032  });
16033  return tet;
16034});
16035
16036/***/ }),
16037
vendor: 5,102 bytes, lines 16038-16170
16038/***/ "../autobahn_client_core/node_modules/moment/locale/tg.js":
16039/*!****************************************************************!*\
16040  !*** ../autobahn_client_core/node_modules/moment/locale/tg.js ***!
16041  \****************************************************************/
16042/*! no static exports found */
16043/***/ (function(module, exports, __webpack_require__) {
16044
16045var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16046
16047//! moment.js locale configuration
16048//! locale : Tajik [tg]
16049//! author : Orif N. Jr. : https://github.com/orif-jr
16050;
16051
16052(function (global, factory) {
16053  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16054				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16055				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16056				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16057})(this, function (moment) {
16058  'use strict'; //! moment.js locale configuration
16059
16060  var suffixes = {
16061    0: '-ум',
16062    1: '-ум',
16063    2: '-юм',
16064    3: '-юм',
16065    4: '-ум',
16066    5: '-ум',
16067    6: '-ум',
16068    7: '-ум',
16069    8: '-ум',
16070    9: '-ум',
16071    10: '-ум',
16072    12: '-ум',
16073    13: '-ум',
16074    20: '-ум',
16075    30: '-юм',
16076    40: '-ум',
16077    50: '-ум',
16078    60: '-ум',
16079    70: '-ум',
16080    80: '-ум',
16081    90: '-ум',
16082    100: '-ум'
16083  };
16084  var tg = moment.defineLocale('tg', {
16085    months: {
16086      format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split('_'),
16087      standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_')
16088    },
16089    monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
16090    weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),
16091    weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
16092    weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
16093    longDateFormat: {
16094      LT: 'HH:mm',
16095      LTS: 'HH:mm:ss',
16096      L: 'DD.MM.YYYY',
16097      LL: 'D MMMM YYYY',
16098      LLL: 'D MMMM YYYY HH:mm',
16099      LLLL: 'dddd, D MMMM YYYY HH:mm'
16100    },
16101    calendar: {
16102      sameDay: '[Имрӯз соати] LT',
16103      nextDay: '[Фардо соати] LT',
16104      lastDay: '[Дирӯз соати] LT',
16105      nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
16106      lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
16107      sameElse: 'L'
16108    },
16109    relativeTime: {
16110      future: 'баъди %s',
16111      past: '%s пеш',
16112      s: 'якчанд сония',
16113      m: 'як дақиқа',
16114      mm: '%d дақиқа',
16115      h: 'як соат',
16116      hh: '%d соат',
16117      d: 'як рӯз',
16118      dd: '%d рӯз',
16119      M: 'як моҳ',
16120      MM: '%d моҳ',
16121      y: 'як сол',
16122      yy: '%d сол'
16123    },
16124    meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
16125    meridiemHour: function meridiemHour(hour, meridiem) {
16126      if (hour === 12) {
16127        hour = 0;
16128      }
16129
16130      if (meridiem === 'шаб') {
16131        return hour < 4 ? hour : hour + 12;
16132      } else if (meridiem === 'субҳ') {
16133        return hour;
16134      } else if (meridiem === 'рӯз') {
16135        return hour >= 11 ? hour : hour + 12;
16136      } else if (meridiem === 'бегоҳ') {
16137        return hour + 12;
16138      }
16139    },
16140    meridiem: function meridiem(hour, minute, isLower) {
16141      if (hour < 4) {
16142        return 'шаб';
16143      } else if (hour < 11) {
16144        return 'субҳ';
16145      } else if (hour < 16) {
16146        return 'рӯз';
16147      } else if (hour < 19) {
16148        return 'бегоҳ';
16149      } else {
16150        return 'шаб';
16151      }
16152    },
16153    dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
16154    ordinal: function ordinal(number) {
16155      var a = number % 10,
16156          b = number >= 100 ? 100 : null;
16157      return number + (suffixes[number] || suffixes[a] || suffixes[b]);
16158    },
16159    week: {
16160      dow: 1,
16161      // Monday is the first day of the week.
16162      doy: 7 // The week that contains Jan 1th is the first week of the year.
16163
16164    }
16165  });
16166  return tg;
16167});
16168
16169/***/ }),
16170
vendor: 4,307 bytes, lines 16171-16252
16171/***/ "../autobahn_client_core/node_modules/moment/locale/th.js":
16172/*!****************************************************************!*\
16173  !*** ../autobahn_client_core/node_modules/moment/locale/th.js ***!
16174  \****************************************************************/
16175/*! no static exports found */
16176/***/ (function(module, exports, __webpack_require__) {
16177
16178var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16179
16180//! moment.js locale configuration
16181//! locale : Thai [th]
16182//! author : Kridsada Thanabulpong : https://github.com/sirn
16183;
16184
16185(function (global, factory) {
16186  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16187				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16188				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16189				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16190})(this, function (moment) {
16191  'use strict'; //! moment.js locale configuration
16192
16193  var th = moment.defineLocale('th', {
16194    months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
16195    monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
16196    monthsParseExact: true,
16197    weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
16198    weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'),
16199    // yes, three characters difference
16200    weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
16201    weekdaysParseExact: true,
16202    longDateFormat: {
16203      LT: 'H:mm',
16204      LTS: 'H:mm:ss',
16205      L: 'DD/MM/YYYY',
16206      LL: 'D MMMM YYYY',
16207      LLL: 'D MMMM YYYY เวลา H:mm',
16208      LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm'
16209    },
16210    meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
16211    isPM: function isPM(input) {
16212      return input === 'หลังเที่ยง';
16213    },
16214    meridiem: function meridiem(hour, minute, isLower) {
16215      if (hour < 12) {
16216        return 'ก่อนเที่ยง';
16217      } else {
16218        return 'หลังเที่ยง';
16219      }
16220    },
16221    calendar: {
16222      sameDay: '[วันนี้ เวลา] LT',
16223      nextDay: '[พรุ่งนี้ เวลา] LT',
16224      nextWeek: 'dddd[หน้า เวลา] LT',
16225      lastDay: '[เมื่อวานนี้ เวลา] LT',
16226      lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
16227      sameElse: 'L'
16228    },
16229    relativeTime: {
16230      future: 'อีก %s',
16231      past: '%sที่แล้ว',
16232      s: 'ไม่กี่วินาที',
16233      ss: '%d วินาที',
16234      m: '1 นาที',
16235      mm: '%d นาที',
16236      h: '1 ชั่วโมง',
16237      hh: '%d ชั่วโมง',
16238      d: '1 วัน',
16239      dd: '%d วัน',
16240      w: '1 สัปดาห์',
16241      ww: '%d สัปดาห์',
16242      M: '1 เดือน',
16243      MM: '%d เดือน',
16244      y: '1 ปี',
16245      yy: '%d ปี'
16246    }
16247  });
16248  return th;
16249});
16250
16251/***/ }),
16252
vendor: 4,010 bytes, lines 16253-16363
16253/***/ "../autobahn_client_core/node_modules/moment/locale/tk.js":
16254/*!****************************************************************!*\
16255  !*** ../autobahn_client_core/node_modules/moment/locale/tk.js ***!
16256  \****************************************************************/
16257/*! no static exports found */
16258/***/ (function(module, exports, __webpack_require__) {
16259
16260var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16261
16262//! moment.js locale configuration
16263//! locale : Turkmen [tk]
16264//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy
16265;
16266
16267(function (global, factory) {
16268  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16269				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16270				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16271				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16272})(this, function (moment) {
16273  'use strict'; //! moment.js locale configuration
16274
16275  var suffixes = {
16276    1: "'inji",
16277    5: "'inji",
16278    8: "'inji",
16279    70: "'inji",
16280    80: "'inji",
16281    2: "'nji",
16282    7: "'nji",
16283    20: "'nji",
16284    50: "'nji",
16285    3: "'ünji",
16286    4: "'ünji",
16287    100: "'ünji",
16288    6: "'njy",
16289    9: "'unjy",
16290    10: "'unjy",
16291    30: "'unjy",
16292    60: "'ynjy",
16293    90: "'ynjy"
16294  };
16295  var tk = moment.defineLocale('tk', {
16296    months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split('_'),
16297    monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
16298    weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split('_'),
16299    weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
16300    weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
16301    longDateFormat: {
16302      LT: 'HH:mm',
16303      LTS: 'HH:mm:ss',
16304      L: 'DD.MM.YYYY',
16305      LL: 'D MMMM YYYY',
16306      LLL: 'D MMMM YYYY HH:mm',
16307      LLLL: 'dddd, D MMMM YYYY HH:mm'
16308    },
16309    calendar: {
16310      sameDay: '[bugün sagat] LT',
16311      nextDay: '[ertir sagat] LT',
16312      nextWeek: '[indiki] dddd [sagat] LT',
16313      lastDay: '[düýn] LT',
16314      lastWeek: '[geçen] dddd [sagat] LT',
16315      sameElse: 'L'
16316    },
16317    relativeTime: {
16318      future: '%s soň',
16319      past: '%s öň',
16320      s: 'birnäçe sekunt',
16321      m: 'bir minut',
16322      mm: '%d minut',
16323      h: 'bir sagat',
16324      hh: '%d sagat',
16325      d: 'bir gün',
16326      dd: '%d gün',
16327      M: 'bir aý',
16328      MM: '%d aý',
16329      y: 'bir ýyl',
16330      yy: '%d ýyl'
16331    },
16332    ordinal: function ordinal(number, period) {
16333      switch (period) {
16334        case 'd':
16335        case 'D':
16336        case 'Do':
16337        case 'DD':
16338          return number;
16339
16340        default:
16341          if (number === 0) {
16342            // special case for zero
16343            return number + "'unjy";
16344          }
16345
16346          var a = number % 10,
16347              b = number % 100 - a,
16348              c = number >= 100 ? 100 : null;
16349          return number + (suffixes[a] || suffixes[b] || suffixes[c]);
16350      }
16351    },
16352    week: {
16353      dow: 1,
16354      // Monday is the first day of the week.
16355      doy: 7 // The week that contains Jan 7th is the first week of the year.
16356
16357    }
16358  });
16359  return tk;
16360});
16361
16362/***/ }),
16363
vendor: 3,349 bytes, lines 16364-16439
16364/***/ "../autobahn_client_core/node_modules/moment/locale/tl-ph.js":
16365/*!*******************************************************************!*\
16366  !*** ../autobahn_client_core/node_modules/moment/locale/tl-ph.js ***!
16367  \*******************************************************************/
16368/*! no static exports found */
16369/***/ (function(module, exports, __webpack_require__) {
16370
16371var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16372
16373//! moment.js locale configuration
16374//! locale : Tagalog (Philippines) [tl-ph]
16375//! author : Dan Hagman : https://github.com/hagmandan
16376;
16377
16378(function (global, factory) {
16379  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16380				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16381				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16382				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16383})(this, function (moment) {
16384  'use strict'; //! moment.js locale configuration
16385
16386  var tlPh = moment.defineLocale('tl-ph', {
16387    months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
16388    monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
16389    weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
16390    weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
16391    weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
16392    longDateFormat: {
16393      LT: 'HH:mm',
16394      LTS: 'HH:mm:ss',
16395      L: 'MM/D/YYYY',
16396      LL: 'MMMM D, YYYY',
16397      LLL: 'MMMM D, YYYY HH:mm',
16398      LLLL: 'dddd, MMMM DD, YYYY HH:mm'
16399    },
16400    calendar: {
16401      sameDay: 'LT [ngayong araw]',
16402      nextDay: '[Bukas ng] LT',
16403      nextWeek: 'LT [sa susunod na] dddd',
16404      lastDay: 'LT [kahapon]',
16405      lastWeek: 'LT [noong nakaraang] dddd',
16406      sameElse: 'L'
16407    },
16408    relativeTime: {
16409      future: 'sa loob ng %s',
16410      past: '%s ang nakalipas',
16411      s: 'ilang segundo',
16412      ss: '%d segundo',
16413      m: 'isang minuto',
16414      mm: '%d minuto',
16415      h: 'isang oras',
16416      hh: '%d oras',
16417      d: 'isang araw',
16418      dd: '%d araw',
16419      M: 'isang buwan',
16420      MM: '%d buwan',
16421      y: 'isang taon',
16422      yy: '%d taon'
16423    },
16424    dayOfMonthOrdinalParse: /\d{1,2}/,
16425    ordinal: function ordinal(number) {
16426      return number;
16427    },
16428    week: {
16429      dow: 1,
16430      // Monday is the first day of the week.
16431      doy: 4 // The week that contains Jan 4th is the first week of the year.
16432
16433    }
16434  });
16435  return tlPh;
16436});
16437
16438/***/ }),
16439
vendor: 5,130 bytes, lines 16440-16573
16440/***/ "../autobahn_client_core/node_modules/moment/locale/tlh.js":
16441/*!*****************************************************************!*\
16442  !*** ../autobahn_client_core/node_modules/moment/locale/tlh.js ***!
16443  \*****************************************************************/
16444/*! no static exports found */
16445/***/ (function(module, exports, __webpack_require__) {
16446
16447var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16448
16449//! moment.js locale configuration
16450//! locale : Klingon [tlh]
16451//! author : Dominika Kruk : https://github.com/amaranthrose
16452;
16453
16454(function (global, factory) {
16455  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16456				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16457				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16458				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16459})(this, function (moment) {
16460  'use strict'; //! moment.js locale configuration
16461
16462  var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
16463
16464  function translateFuture(output) {
16465    var time = output;
16466    time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'leS' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'waQ' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'nem' : time + ' pIq';
16467    return time;
16468  }
16469
16470  function translatePast(output) {
16471    var time = output;
16472    time = output.indexOf('jaj') !== -1 ? time.slice(0, -3) + 'Hu’' : output.indexOf('jar') !== -1 ? time.slice(0, -3) + 'wen' : output.indexOf('DIS') !== -1 ? time.slice(0, -3) + 'ben' : time + ' ret';
16473    return time;
16474  }
16475
16476  function translate(number, withoutSuffix, string, isFuture) {
16477    var numberNoun = numberAsNoun(number);
16478
16479    switch (string) {
16480      case 'ss':
16481        return numberNoun + ' lup';
16482
16483      case 'mm':
16484        return numberNoun + ' tup';
16485
16486      case 'hh':
16487        return numberNoun + ' rep';
16488
16489      case 'dd':
16490        return numberNoun + ' jaj';
16491
16492      case 'MM':
16493        return numberNoun + ' jar';
16494
16495      case 'yy':
16496        return numberNoun + ' DIS';
16497    }
16498  }
16499
16500  function numberAsNoun(number) {
16501    var hundred = Math.floor(number % 1000 / 100),
16502        ten = Math.floor(number % 100 / 10),
16503        one = number % 10,
16504        word = '';
16505
16506    if (hundred > 0) {
16507      word += numbersNouns[hundred] + 'vatlh';
16508    }
16509
16510    if (ten > 0) {
16511      word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
16512    }
16513
16514    if (one > 0) {
16515      word += (word !== '' ? ' ' : '') + numbersNouns[one];
16516    }
16517
16518    return word === '' ? 'pagh' : word;
16519  }
16520
16521  var tlh = moment.defineLocale('tlh', {
16522    months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split('_'),
16523    monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split('_'),
16524    monthsParseExact: true,
16525    weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
16526    weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
16527    weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
16528    longDateFormat: {
16529      LT: 'HH:mm',
16530      LTS: 'HH:mm:ss',
16531      L: 'DD.MM.YYYY',
16532      LL: 'D MMMM YYYY',
16533      LLL: 'D MMMM YYYY HH:mm',
16534      LLLL: 'dddd, D MMMM YYYY HH:mm'
16535    },
16536    calendar: {
16537      sameDay: '[DaHjaj] LT',
16538      nextDay: '[wa’leS] LT',
16539      nextWeek: 'LLL',
16540      lastDay: '[wa’Hu’] LT',
16541      lastWeek: 'LLL',
16542      sameElse: 'L'
16543    },
16544    relativeTime: {
16545      future: translateFuture,
16546      past: translatePast,
16547      s: 'puS lup',
16548      ss: translate,
16549      m: 'wa’ tup',
16550      mm: translate,
16551      h: 'wa’ rep',
16552      hh: translate,
16553      d: 'wa’ jaj',
16554      dd: translate,
16555      M: 'wa’ jar',
16556      MM: translate,
16557      y: 'wa’ DIS',
16558      yy: translate
16559    },
16560    dayOfMonthOrdinalParse: /\d{1,2}\./,
16561    ordinal: '%d.',
16562    week: {
16563      dow: 1,
16564      // Monday is the first day of the week.
16565      doy: 4 // The week that contains Jan 4th is the first week of the year.
16566
16567    }
16568  });
16569  return tlh;
16570});
16571
16572/***/ }),
16573
vendor: 4,439 bytes, lines 16574-16699
16574/***/ "../autobahn_client_core/node_modules/moment/locale/tr.js":
16575/*!****************************************************************!*\
16576  !*** ../autobahn_client_core/node_modules/moment/locale/tr.js ***!
16577  \****************************************************************/
16578/*! no static exports found */
16579/***/ (function(module, exports, __webpack_require__) {
16580
16581var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16582
16583//! moment.js locale configuration
16584//! locale : Turkish [tr]
16585//! authors : Erhan Gundogan : https://github.com/erhangundogan,
16586//!           Burak Yiğit Kaya: https://github.com/BYK
16587;
16588
16589(function (global, factory) {
16590  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16591				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16592				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16593				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16594})(this, function (moment) {
16595  'use strict'; //! moment.js locale configuration
16596
16597  var suffixes = {
16598    1: "'inci",
16599    5: "'inci",
16600    8: "'inci",
16601    70: "'inci",
16602    80: "'inci",
16603    2: "'nci",
16604    7: "'nci",
16605    20: "'nci",
16606    50: "'nci",
16607    3: "'üncü",
16608    4: "'üncü",
16609    100: "'üncü",
16610    6: "'ncı",
16611    9: "'uncu",
16612    10: "'uncu",
16613    30: "'uncu",
16614    60: "'ıncı",
16615    90: "'ıncı"
16616  };
16617  var tr = moment.defineLocale('tr', {
16618    months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
16619    monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
16620    weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
16621    weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),
16622    weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
16623    meridiem: function meridiem(hours, minutes, isLower) {
16624      if (hours < 12) {
16625        return isLower ? 'öö' : 'ÖÖ';
16626      } else {
16627        return isLower ? 'ös' : 'ÖS';
16628      }
16629    },
16630    meridiemParse: /öö|ÖÖ|ös|ÖS/,
16631    isPM: function isPM(input) {
16632      return input === 'ös' || input === 'ÖS';
16633    },
16634    longDateFormat: {
16635      LT: 'HH:mm',
16636      LTS: 'HH:mm:ss',
16637      L: 'DD.MM.YYYY',
16638      LL: 'D MMMM YYYY',
16639      LLL: 'D MMMM YYYY HH:mm',
16640      LLLL: 'dddd, D MMMM YYYY HH:mm'
16641    },
16642    calendar: {
16643      sameDay: '[bugün saat] LT',
16644      nextDay: '[yarın saat] LT',
16645      nextWeek: '[gelecek] dddd [saat] LT',
16646      lastDay: '[dün] LT',
16647      lastWeek: '[geçen] dddd [saat] LT',
16648      sameElse: 'L'
16649    },
16650    relativeTime: {
16651      future: '%s sonra',
16652      past: '%s önce',
16653      s: 'birkaç saniye',
16654      ss: '%d saniye',
16655      m: 'bir dakika',
16656      mm: '%d dakika',
16657      h: 'bir saat',
16658      hh: '%d saat',
16659      d: 'bir gün',
16660      dd: '%d gün',
16661      w: 'bir hafta',
16662      ww: '%d hafta',
16663      M: 'bir ay',
16664      MM: '%d ay',
16665      y: 'bir yıl',
16666      yy: '%d yıl'
16667    },
16668    ordinal: function ordinal(number, period) {
16669      switch (period) {
16670        case 'd':
16671        case 'D':
16672        case 'Do':
16673        case 'DD':
16674          return number;
16675
16676        default:
16677          if (number === 0) {
16678            // special case for zero
16679            return number + "'ıncı";
16680          }
16681
16682          var a = number % 10,
16683              b = number % 100 - a,
16684              c = number >= 100 ? 100 : null;
16685          return number + (suffixes[a] || suffixes[b] || suffixes[c]);
16686      }
16687    },
16688    week: {
16689      dow: 1,
16690      // Monday is the first day of the week.
16691      doy: 7 // The week that contains Jan 7th is the first week of the year.
16692
16693    }
16694  });
16695  return tr;
16696});
16697
16698/***/ }),
16699
vendor: 4,670 bytes, lines 16700-16806
16700/***/ "../autobahn_client_core/node_modules/moment/locale/tzl.js":
16701/*!*****************************************************************!*\
16702  !*** ../autobahn_client_core/node_modules/moment/locale/tzl.js ***!
16703  \*****************************************************************/
16704/*! no static exports found */
16705/***/ (function(module, exports, __webpack_require__) {
16706
16707var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16708
16709//! moment.js locale configuration
16710//! locale : Talossan [tzl]
16711//! author : Robin van der Vliet : https://github.com/robin0van0der0v
16712//! author : Iustì Canun
16713;
16714
16715(function (global, factory) {
16716  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16717				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16718				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16719				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16720})(this, function (moment) {
16721  'use strict'; //! moment.js locale configuration
16722  // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
16723  // This is currently too difficult (maybe even impossible) to add.
16724
16725  var tzl = moment.defineLocale('tzl', {
16726    months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
16727    monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
16728    weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
16729    weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
16730    weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
16731    longDateFormat: {
16732      LT: 'HH.mm',
16733      LTS: 'HH.mm.ss',
16734      L: 'DD.MM.YYYY',
16735      LL: 'D. MMMM [dallas] YYYY',
16736      LLL: 'D. MMMM [dallas] YYYY HH.mm',
16737      LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
16738    },
16739    meridiemParse: /d\'o|d\'a/i,
16740    isPM: function isPM(input) {
16741      return "d'o" === input.toLowerCase();
16742    },
16743    meridiem: function meridiem(hours, minutes, isLower) {
16744      if (hours > 11) {
16745        return isLower ? "d'o" : "D'O";
16746      } else {
16747        return isLower ? "d'a" : "D'A";
16748      }
16749    },
16750    calendar: {
16751      sameDay: '[oxhi à] LT',
16752      nextDay: '[demà à] LT',
16753      nextWeek: 'dddd [à] LT',
16754      lastDay: '[ieiri à] LT',
16755      lastWeek: '[sür el] dddd [lasteu à] LT',
16756      sameElse: 'L'
16757    },
16758    relativeTime: {
16759      future: 'osprei %s',
16760      past: 'ja%s',
16761      s: processRelativeTime,
16762      ss: processRelativeTime,
16763      m: processRelativeTime,
16764      mm: processRelativeTime,
16765      h: processRelativeTime,
16766      hh: processRelativeTime,
16767      d: processRelativeTime,
16768      dd: processRelativeTime,
16769      M: processRelativeTime,
16770      MM: processRelativeTime,
16771      y: processRelativeTime,
16772      yy: processRelativeTime
16773    },
16774    dayOfMonthOrdinalParse: /\d{1,2}\./,
16775    ordinal: '%d.',
16776    week: {
16777      dow: 1,
16778      // Monday is the first day of the week.
16779      doy: 4 // The week that contains Jan 4th is the first week of the year.
16780
16781    }
16782  });
16783
16784  function processRelativeTime(number, withoutSuffix, key, isFuture) {
16785    var format = {
16786      s: ['viensas secunds', "'iensas secunds"],
16787      ss: [number + ' secunds', '' + number + ' secunds'],
16788      m: ["'n míut", "'iens míut"],
16789      mm: [number + ' míuts', '' + number + ' míuts'],
16790      h: ["'n þora", "'iensa þora"],
16791      hh: [number + ' þoras', '' + number + ' þoras'],
16792      d: ["'n ziua", "'iensa ziua"],
16793      dd: [number + ' ziuas', '' + number + ' ziuas'],
16794      M: ["'n mes", "'iens mes"],
16795      MM: [number + ' mesen', '' + number + ' mesen'],
16796      y: ["'n ar", "'iens ar"],
16797      yy: [number + ' ars', '' + number + ' ars']
16798    };
16799    return isFuture ? format[key][0] : withoutSuffix ? format[key][0] : format[key][1];
16800  }
16801
16802  return tzl;
16803});
16804
16805/***/ }),
16806
vendor: 3,302 bytes, lines 16807-16878
16807/***/ "../autobahn_client_core/node_modules/moment/locale/tzm-latn.js":
16808/*!**********************************************************************!*\
16809  !*** ../autobahn_client_core/node_modules/moment/locale/tzm-latn.js ***!
16810  \**********************************************************************/
16811/*! no static exports found */
16812/***/ (function(module, exports, __webpack_require__) {
16813
16814var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16815
16816//! moment.js locale configuration
16817//! locale : Central Atlas Tamazight Latin [tzm-latn]
16818//! author : Abdel Said : https://github.com/abdelsaid
16819;
16820
16821(function (global, factory) {
16822  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16823				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16824				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16825				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16826})(this, function (moment) {
16827  'use strict'; //! moment.js locale configuration
16828
16829  var tzmLatn = moment.defineLocale('tzm-latn', {
16830    months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
16831    monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
16832    weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16833    weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16834    weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16835    longDateFormat: {
16836      LT: 'HH:mm',
16837      LTS: 'HH:mm:ss',
16838      L: 'DD/MM/YYYY',
16839      LL: 'D MMMM YYYY',
16840      LLL: 'D MMMM YYYY HH:mm',
16841      LLLL: 'dddd D MMMM YYYY HH:mm'
16842    },
16843    calendar: {
16844      sameDay: '[asdkh g] LT',
16845      nextDay: '[aska g] LT',
16846      nextWeek: 'dddd [g] LT',
16847      lastDay: '[assant g] LT',
16848      lastWeek: 'dddd [g] LT',
16849      sameElse: 'L'
16850    },
16851    relativeTime: {
16852      future: 'dadkh s yan %s',
16853      past: 'yan %s',
16854      s: 'imik',
16855      ss: '%d imik',
16856      m: 'minuḍ',
16857      mm: '%d minuḍ',
16858      h: 'saɛa',
16859      hh: '%d tassaɛin',
16860      d: 'ass',
16861      dd: '%d ossan',
16862      M: 'ayowr',
16863      MM: '%d iyyirn',
16864      y: 'asgas',
16865      yy: '%d isgasn'
16866    },
16867    week: {
16868      dow: 6,
16869      // Saturday is the first day of the week.
16870      doy: 12 // The week that contains Jan 12th is the first week of the year.
16871
16872    }
16873  });
16874  return tzmLatn;
16875});
16876
16877/***/ }),
16878
vendor: 3,905 bytes, lines 16879-16950
16879/***/ "../autobahn_client_core/node_modules/moment/locale/tzm.js":
16880/*!*****************************************************************!*\
16881  !*** ../autobahn_client_core/node_modules/moment/locale/tzm.js ***!
16882  \*****************************************************************/
16883/*! no static exports found */
16884/***/ (function(module, exports, __webpack_require__) {
16885
16886var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16887
16888//! moment.js locale configuration
16889//! locale : Central Atlas Tamazight [tzm]
16890//! author : Abdel Said : https://github.com/abdelsaid
16891;
16892
16893(function (global, factory) {
16894  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16895				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16896				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16897				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16898})(this, function (moment) {
16899  'use strict'; //! moment.js locale configuration
16900
16901  var tzm = moment.defineLocale('tzm', {
16902    months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
16903    monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
16904    weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
16905    weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
16906    weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
16907    longDateFormat: {
16908      LT: 'HH:mm',
16909      LTS: 'HH:mm:ss',
16910      L: 'DD/MM/YYYY',
16911      LL: 'D MMMM YYYY',
16912      LLL: 'D MMMM YYYY HH:mm',
16913      LLLL: 'dddd D MMMM YYYY HH:mm'
16914    },
16915    calendar: {
16916      sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
16917      nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
16918      nextWeek: 'dddd [â´´] LT',
16919      lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
16920      lastWeek: 'dddd [â´´] LT',
16921      sameElse: 'L'
16922    },
16923    relativeTime: {
16924      future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
16925      past: 'ⵢⴰⵏ %s',
16926      s: 'ⵉⵎⵉⴽ',
16927      ss: '%d ⵉⵎⵉⴽ',
16928      m: 'ⵎⵉⵏⵓⴺ',
16929      mm: '%d ⵎⵉⵏⵓⴺ',
16930      h: 'ⵙⴰⵄⴰ',
16931      hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
16932      d: 'ⴰⵙⵙ',
16933      dd: '%d oⵙⵙⴰⵏ',
16934      M: 'ⴰⵢoⵓⵔ',
16935      MM: '%d ⵉⵢⵢⵉⵔⵏ',
16936      y: 'ⴰⵙⴳⴰⵙ',
16937      yy: '%d ⵉⵙⴳⴰⵙⵏ'
16938    },
16939    week: {
16940      dow: 6,
16941      // Saturday is the first day of the week.
16942      doy: 12 // The week that contains Jan 12th is the first week of the year.
16943
16944    }
16945  });
16946  return tzm;
16947});
16948
16949/***/ }),
16950
vendor: 5,341 bytes, lines 16951-17076
16951/***/ "../autobahn_client_core/node_modules/moment/locale/ug-cn.js":
16952/*!*******************************************************************!*\
16953  !*** ../autobahn_client_core/node_modules/moment/locale/ug-cn.js ***!
16954  \*******************************************************************/
16955/*! no static exports found */
16956/***/ (function(module, exports, __webpack_require__) {
16957
16958var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
16959
16960//! moment.js locale configuration
16961//! locale : Uyghur (China) [ug-cn]
16962//! author: boyaq : https://github.com/boyaq
16963;
16964
16965(function (global, factory) {
16966  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
16967				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
16968				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
16969				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
16970})(this, function (moment) {
16971  'use strict'; //! moment.js locale configuration
16972
16973  var ugCn = moment.defineLocale('ug-cn', {
16974    months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),
16975    monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split('_'),
16976    weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split('_'),
16977    weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
16978    weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
16979    longDateFormat: {
16980      LT: 'HH:mm',
16981      LTS: 'HH:mm:ss',
16982      L: 'YYYY-MM-DD',
16983      LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
16984      LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
16985      LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'
16986    },
16987    meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
16988    meridiemHour: function meridiemHour(hour, meridiem) {
16989      if (hour === 12) {
16990        hour = 0;
16991      }
16992
16993      if (meridiem === 'يېرىم كېچە' || meridiem === 'سەھەر' || meridiem === 'چۈشتىن بۇرۇن') {
16994        return hour;
16995      } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
16996        return hour + 12;
16997      } else {
16998        return hour >= 11 ? hour : hour + 12;
16999      }
17000    },
17001    meridiem: function meridiem(hour, minute, isLower) {
17002      var hm = hour * 100 + minute;
17003
17004      if (hm < 600) {
17005        return 'يېرىم كېچە';
17006      } else if (hm < 900) {
17007        return 'سەھەر';
17008      } else if (hm < 1130) {
17009        return 'چۈشتىن بۇرۇن';
17010      } else if (hm < 1230) {
17011        return 'چۈش';
17012      } else if (hm < 1800) {
17013        return 'چۈشتىن كېيىن';
17014      } else {
17015        return 'كەچ';
17016      }
17017    },
17018    calendar: {
17019      sameDay: '[بۈگۈن سائەت] LT',
17020      nextDay: '[ئەتە سائەت] LT',
17021      nextWeek: '[كېلەركى] dddd [سائەت] LT',
17022      lastDay: '[تۆنۈگۈن] LT',
17023      lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
17024      sameElse: 'L'
17025    },
17026    relativeTime: {
17027      future: '%s كېيىن',
17028      past: '%s بۇرۇن',
17029      s: 'نەچچە سېكونت',
17030      ss: '%d سېكونت',
17031      m: 'بىر مىنۇت',
17032      mm: '%d مىنۇت',
17033      h: 'بىر سائەت',
17034      hh: '%d سائەت',
17035      d: 'بىر كۈن',
17036      dd: '%d كۈن',
17037      M: 'بىر ئاي',
17038      MM: '%d ئاي',
17039      y: 'بىر يىل',
17040      yy: '%d يىل'
17041    },
17042    dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
17043    ordinal: function ordinal(number, period) {
17044      switch (period) {
17045        case 'd':
17046        case 'D':
17047        case 'DDD':
17048          return number + '-كۈنى';
17049
17050        case 'w':
17051        case 'W':
17052          return number + '-ھەپتە';
17053
17054        default:
17055          return number;
17056      }
17057    },
17058    preparse: function preparse(string) {
17059      return string.replace(/،/g, ',');
17060    },
17061    postformat: function postformat(string) {
17062      return string.replace(/,/g, '،');
17063    },
17064    week: {
17065      // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
17066      dow: 1,
17067      // Monday is the first day of the week.
17068      doy: 7 // The week that contains Jan 1st is the first week of the year.
17069
17070    }
17071  });
17072  return ugCn;
17073});
17074
17075/***/ }),
17076
vendor: 7,098 bytes, lines 17077-17248
17077/***/ "../autobahn_client_core/node_modules/moment/locale/uk.js":
17078/*!****************************************************************!*\
17079  !*** ../autobahn_client_core/node_modules/moment/locale/uk.js ***!
17080  \****************************************************************/
17081/*! no static exports found */
17082/***/ (function(module, exports, __webpack_require__) {
17083
17084var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17085
17086//! moment.js locale configuration
17087//! locale : Ukrainian [uk]
17088//! author : zemlanin : https://github.com/zemlanin
17089//! Author : Menelion Elensúle : https://github.com/Oire
17090;
17091
17092(function (global, factory) {
17093  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17094				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17095				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17096				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17097})(this, function (moment) {
17098  'use strict'; //! moment.js locale configuration
17099
17100  function plural(word, num) {
17101    var forms = word.split('_');
17102    return num % 10 === 1 && num % 100 !== 11 ? forms[0] : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2];
17103  }
17104
17105  function relativeTimeWithPlural(number, withoutSuffix, key) {
17106    var format = {
17107      ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
17108      mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
17109      hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
17110      dd: 'день_дні_днів',
17111      MM: 'місяць_місяці_місяців',
17112      yy: 'рік_роки_років'
17113    };
17114
17115    if (key === 'm') {
17116      return withoutSuffix ? 'хвилина' : 'хвилину';
17117    } else if (key === 'h') {
17118      return withoutSuffix ? 'година' : 'годину';
17119    } else {
17120      return number + ' ' + plural(format[key], +number);
17121    }
17122  }
17123
17124  function weekdaysCaseReplace(m, format) {
17125    var weekdays = {
17126      nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
17127      accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
17128      genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
17129    },
17130        nounCase;
17131
17132    if (m === true) {
17133      return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));
17134    }
17135
17136    if (!m) {
17137      return weekdays['nominative'];
17138    }
17139
17140    nounCase = /(\[[ВвУу]\]) ?dddd/.test(format) ? 'accusative' : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format) ? 'genitive' : 'nominative';
17141    return weekdays[nounCase][m.day()];
17142  }
17143
17144  function processHoursFunction(str) {
17145    return function () {
17146      return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
17147    };
17148  }
17149
17150  var uk = moment.defineLocale('uk', {
17151    months: {
17152      format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
17153      standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
17154    },
17155    monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
17156    weekdays: weekdaysCaseReplace,
17157    weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
17158    weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
17159    longDateFormat: {
17160      LT: 'HH:mm',
17161      LTS: 'HH:mm:ss',
17162      L: 'DD.MM.YYYY',
17163      LL: 'D MMMM YYYY р.',
17164      LLL: 'D MMMM YYYY р., HH:mm',
17165      LLLL: 'dddd, D MMMM YYYY р., HH:mm'
17166    },
17167    calendar: {
17168      sameDay: processHoursFunction('[Сьогодні '),
17169      nextDay: processHoursFunction('[Завтра '),
17170      lastDay: processHoursFunction('[Вчора '),
17171      nextWeek: processHoursFunction('[У] dddd ['),
17172      lastWeek: function lastWeek() {
17173        switch (this.day()) {
17174          case 0:
17175          case 3:
17176          case 5:
17177          case 6:
17178            return processHoursFunction('[Минулої] dddd [').call(this);
17179
17180          case 1:
17181          case 2:
17182          case 4:
17183            return processHoursFunction('[Минулого] dddd [').call(this);
17184        }
17185      },
17186      sameElse: 'L'
17187    },
17188    relativeTime: {
17189      future: 'за %s',
17190      past: '%s тому',
17191      s: 'декілька секунд',
17192      ss: relativeTimeWithPlural,
17193      m: relativeTimeWithPlural,
17194      mm: relativeTimeWithPlural,
17195      h: 'годину',
17196      hh: relativeTimeWithPlural,
17197      d: 'день',
17198      dd: relativeTimeWithPlural,
17199      M: 'місяць',
17200      MM: relativeTimeWithPlural,
17201      y: 'рік',
17202      yy: relativeTimeWithPlural
17203    },
17204    // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
17205    meridiemParse: /ночі|ранку|дня|вечора/,
17206    isPM: function isPM(input) {
17207      return /^(дня|вечора)$/.test(input);
17208    },
17209    meridiem: function meridiem(hour, minute, isLower) {
17210      if (hour < 4) {
17211        return 'ночі';
17212      } else if (hour < 12) {
17213        return 'ранку';
17214      } else if (hour < 17) {
17215        return 'дня';
17216      } else {
17217        return 'вечора';
17218      }
17219    },
17220    dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
17221    ordinal: function ordinal(number, period) {
17222      switch (period) {
17223        case 'M':
17224        case 'd':
17225        case 'DDD':
17226        case 'w':
17227        case 'W':
17228          return number + '-й';
17229
17230        case 'D':
17231          return number + '-го';
17232
17233        default:
17234          return number;
17235      }
17236    },
17237    week: {
17238      dow: 1,
17239      // Monday is the first day of the week.
17240      doy: 7 // The week that contains Jan 7th is the first week of the year.
17241
17242    }
17243  });
17244  return uk;
17245});
17246
17247/***/ }),
17248
vendor: 3,736 bytes, lines 17249-17340
17249/***/ "../autobahn_client_core/node_modules/moment/locale/ur.js":
17250/*!****************************************************************!*\
17251  !*** ../autobahn_client_core/node_modules/moment/locale/ur.js ***!
17252  \****************************************************************/
17253/*! no static exports found */
17254/***/ (function(module, exports, __webpack_require__) {
17255
17256var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17257
17258//! moment.js locale configuration
17259//! locale : Urdu [ur]
17260//! author : Sawood Alam : https://github.com/ibnesayeed
17261//! author : Zack : https://github.com/ZackVision
17262;
17263
17264(function (global, factory) {
17265  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17266				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17267				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17268				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17269})(this, function (moment) {
17270  'use strict'; //! moment.js locale configuration
17271
17272  var months = ['جنوری', 'فروری', 'مارچ', 'اپریل', 'مئی', 'جون', 'جولائی', 'اگست', 'ستمبر', 'اکتوبر', 'نومبر', 'دسمبر'],
17273      days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
17274  var ur = moment.defineLocale('ur', {
17275    months: months,
17276    monthsShort: months,
17277    weekdays: days,
17278    weekdaysShort: days,
17279    weekdaysMin: days,
17280    longDateFormat: {
17281      LT: 'HH:mm',
17282      LTS: 'HH:mm:ss',
17283      L: 'DD/MM/YYYY',
17284      LL: 'D MMMM YYYY',
17285      LLL: 'D MMMM YYYY HH:mm',
17286      LLLL: 'dddd، D MMMM YYYY HH:mm'
17287    },
17288    meridiemParse: /صبح|شام/,
17289    isPM: function isPM(input) {
17290      return 'شام' === input;
17291    },
17292    meridiem: function meridiem(hour, minute, isLower) {
17293      if (hour < 12) {
17294        return 'صبح';
17295      }
17296
17297      return 'شام';
17298    },
17299    calendar: {
17300      sameDay: '[آج بوقت] LT',
17301      nextDay: '[کل بوقت] LT',
17302      nextWeek: 'dddd [بوقت] LT',
17303      lastDay: '[گذشتہ روز بوقت] LT',
17304      lastWeek: '[گذشتہ] dddd [بوقت] LT',
17305      sameElse: 'L'
17306    },
17307    relativeTime: {
17308      future: '%s بعد',
17309      past: '%s قبل',
17310      s: 'چند سیکنڈ',
17311      ss: '%d سیکنڈ',
17312      m: 'ایک منٹ',
17313      mm: '%d منٹ',
17314      h: 'ایک گھنٹہ',
17315      hh: '%d گھنٹے',
17316      d: 'ایک دن',
17317      dd: '%d دن',
17318      M: 'ایک ماہ',
17319      MM: '%d ماہ',
17320      y: 'ایک سال',
17321      yy: '%d سال'
17322    },
17323    preparse: function preparse(string) {
17324      return string.replace(/،/g, ',');
17325    },
17326    postformat: function postformat(string) {
17327      return string.replace(/,/g, '،');
17328    },
17329    week: {
17330      dow: 1,
17331      // Monday is the first day of the week.
17332      doy: 4 // The week that contains Jan 4th is the first week of the year.
17333
17334    }
17335  });
17336  return ur;
17337});
17338
17339/***/ }),
17340
vendor: 3,244 bytes, lines 17341-17412
17341/***/ "../autobahn_client_core/node_modules/moment/locale/uz-latn.js":
17342/*!*********************************************************************!*\
17343  !*** ../autobahn_client_core/node_modules/moment/locale/uz-latn.js ***!
17344  \*********************************************************************/
17345/*! no static exports found */
17346/***/ (function(module, exports, __webpack_require__) {
17347
17348var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17349
17350//! moment.js locale configuration
17351//! locale : Uzbek Latin [uz-latn]
17352//! author : Rasulbek Mirzayev : github.com/Rasulbeeek
17353;
17354
17355(function (global, factory) {
17356  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17357				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17358				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17359				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17360})(this, function (moment) {
17361  'use strict'; //! moment.js locale configuration
17362
17363  var uzLatn = moment.defineLocale('uz-latn', {
17364    months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),
17365    monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
17366    weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),
17367    weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
17368    weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
17369    longDateFormat: {
17370      LT: 'HH:mm',
17371      LTS: 'HH:mm:ss',
17372      L: 'DD/MM/YYYY',
17373      LL: 'D MMMM YYYY',
17374      LLL: 'D MMMM YYYY HH:mm',
17375      LLLL: 'D MMMM YYYY, dddd HH:mm'
17376    },
17377    calendar: {
17378      sameDay: '[Bugun soat] LT [da]',
17379      nextDay: '[Ertaga] LT [da]',
17380      nextWeek: 'dddd [kuni soat] LT [da]',
17381      lastDay: '[Kecha soat] LT [da]',
17382      lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
17383      sameElse: 'L'
17384    },
17385    relativeTime: {
17386      future: 'Yaqin %s ichida',
17387      past: 'Bir necha %s oldin',
17388      s: 'soniya',
17389      ss: '%d soniya',
17390      m: 'bir daqiqa',
17391      mm: '%d daqiqa',
17392      h: 'bir soat',
17393      hh: '%d soat',
17394      d: 'bir kun',
17395      dd: '%d kun',
17396      M: 'bir oy',
17397      MM: '%d oy',
17398      y: 'bir yil',
17399      yy: '%d yil'
17400    },
17401    week: {
17402      dow: 1,
17403      // Monday is the first day of the week.
17404      doy: 7 // The week that contains Jan 7th is the first week of the year.
17405
17406    }
17407  });
17408  return uzLatn;
17409});
17410
17411/***/ }),
17412
vendor: 3,492 bytes, lines 17413-17484
17413/***/ "../autobahn_client_core/node_modules/moment/locale/uz.js":
17414/*!****************************************************************!*\
17415  !*** ../autobahn_client_core/node_modules/moment/locale/uz.js ***!
17416  \****************************************************************/
17417/*! no static exports found */
17418/***/ (function(module, exports, __webpack_require__) {
17419
17420var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17421
17422//! moment.js locale configuration
17423//! locale : Uzbek [uz]
17424//! author : Sardor Muminov : https://github.com/muminoff
17425;
17426
17427(function (global, factory) {
17428  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17429				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17430				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17431				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17432})(this, function (moment) {
17433  'use strict'; //! moment.js locale configuration
17434
17435  var uz = moment.defineLocale('uz', {
17436    months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
17437    monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
17438    weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
17439    weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
17440    weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
17441    longDateFormat: {
17442      LT: 'HH:mm',
17443      LTS: 'HH:mm:ss',
17444      L: 'DD/MM/YYYY',
17445      LL: 'D MMMM YYYY',
17446      LLL: 'D MMMM YYYY HH:mm',
17447      LLLL: 'D MMMM YYYY, dddd HH:mm'
17448    },
17449    calendar: {
17450      sameDay: '[Бугун соат] LT [да]',
17451      nextDay: '[Эртага] LT [да]',
17452      nextWeek: 'dddd [куни соат] LT [да]',
17453      lastDay: '[Кеча соат] LT [да]',
17454      lastWeek: '[Утган] dddd [куни соат] LT [да]',
17455      sameElse: 'L'
17456    },
17457    relativeTime: {
17458      future: 'Якин %s ичида',
17459      past: 'Бир неча %s олдин',
17460      s: 'фурсат',
17461      ss: '%d фурсат',
17462      m: 'бир дакика',
17463      mm: '%d дакика',
17464      h: 'бир соат',
17465      hh: '%d соат',
17466      d: 'бир кун',
17467      dd: '%d кун',
17468      M: 'бир ой',
17469      MM: '%d ой',
17470      y: 'бир йил',
17471      yy: '%d йил'
17472    },
17473    week: {
17474      dow: 1,
17475      // Monday is the first day of the week.
17476      doy: 7 // The week that contains Jan 4th is the first week of the year.
17477
17478    }
17479  });
17480  return uz;
17481});
17482
17483/***/ }),
17484
vendor: 3,982 bytes, lines 17485-17580
17485/***/ "../autobahn_client_core/node_modules/moment/locale/vi.js":
17486/*!****************************************************************!*\
17487  !*** ../autobahn_client_core/node_modules/moment/locale/vi.js ***!
17488  \****************************************************************/
17489/*! no static exports found */
17490/***/ (function(module, exports, __webpack_require__) {
17491
17492var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17493
17494//! moment.js locale configuration
17495//! locale : Vietnamese [vi]
17496//! author : Bang Nguyen : https://github.com/bangnk
17497//! author : Chien Kira : https://github.com/chienkira
17498;
17499
17500(function (global, factory) {
17501  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17502				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17503				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17504				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17505})(this, function (moment) {
17506  'use strict'; //! moment.js locale configuration
17507
17508  var vi = moment.defineLocale('vi', {
17509    months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split('_'),
17510    monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split('_'),
17511    monthsParseExact: true,
17512    weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
17513    weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
17514    weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
17515    weekdaysParseExact: true,
17516    meridiemParse: /sa|ch/i,
17517    isPM: function isPM(input) {
17518      return /^ch$/i.test(input);
17519    },
17520    meridiem: function meridiem(hours, minutes, isLower) {
17521      if (hours < 12) {
17522        return isLower ? 'sa' : 'SA';
17523      } else {
17524        return isLower ? 'ch' : 'CH';
17525      }
17526    },
17527    longDateFormat: {
17528      LT: 'HH:mm',
17529      LTS: 'HH:mm:ss',
17530      L: 'DD/MM/YYYY',
17531      LL: 'D MMMM [năm] YYYY',
17532      LLL: 'D MMMM [năm] YYYY HH:mm',
17533      LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
17534      l: 'DD/M/YYYY',
17535      ll: 'D MMM YYYY',
17536      lll: 'D MMM YYYY HH:mm',
17537      llll: 'ddd, D MMM YYYY HH:mm'
17538    },
17539    calendar: {
17540      sameDay: '[Hôm nay lúc] LT',
17541      nextDay: '[Ngày mai lúc] LT',
17542      nextWeek: 'dddd [tuần tới lúc] LT',
17543      lastDay: '[Hôm qua lúc] LT',
17544      lastWeek: 'dddd [tuần trước lúc] LT',
17545      sameElse: 'L'
17546    },
17547    relativeTime: {
17548      future: '%s tới',
17549      past: '%s trước',
17550      s: 'vài giây',
17551      ss: '%d giây',
17552      m: 'một phút',
17553      mm: '%d phút',
17554      h: 'một giờ',
17555      hh: '%d giờ',
17556      d: 'một ngày',
17557      dd: '%d ngày',
17558      w: 'một tuần',
17559      ww: '%d tuần',
17560      M: 'một tháng',
17561      MM: '%d tháng',
17562      y: 'một năm',
17563      yy: '%d năm'
17564    },
17565    dayOfMonthOrdinalParse: /\d{1,2}/,
17566    ordinal: function ordinal(number) {
17567      return number;
17568    },
17569    week: {
17570      dow: 1,
17571      // Monday is the first day of the week.
17572      doy: 4 // The week that contains Jan 4th is the first week of the year.
17573
17574    }
17575  });
17576  return vi;
17577});
17578
17579/***/ }),
17580
vendor: 3,754 bytes, lines 17581-17659
17581/***/ "../autobahn_client_core/node_modules/moment/locale/x-pseudo.js":
17582/*!**********************************************************************!*\
17583  !*** ../autobahn_client_core/node_modules/moment/locale/x-pseudo.js ***!
17584  \**********************************************************************/
17585/*! no static exports found */
17586/***/ (function(module, exports, __webpack_require__) {
17587
17588var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17589
17590//! moment.js locale configuration
17591//! locale : Pseudo [x-pseudo]
17592//! author : Andrew Hood : https://github.com/andrewhood125
17593;
17594
17595(function (global, factory) {
17596  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17597				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17598				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17599				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17600})(this, function (moment) {
17601  'use strict'; //! moment.js locale configuration
17602
17603  var xPseudo = moment.defineLocale('x-pseudo', {
17604    months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split('_'),
17605    monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
17606    monthsParseExact: true,
17607    weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
17608    weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
17609    weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
17610    weekdaysParseExact: true,
17611    longDateFormat: {
17612      LT: 'HH:mm',
17613      L: 'DD/MM/YYYY',
17614      LL: 'D MMMM YYYY',
17615      LLL: 'D MMMM YYYY HH:mm',
17616      LLLL: 'dddd, D MMMM YYYY HH:mm'
17617    },
17618    calendar: {
17619      sameDay: '[T~ódá~ý át] LT',
17620      nextDay: '[T~ómó~rró~w át] LT',
17621      nextWeek: 'dddd [át] LT',
17622      lastDay: '[Ý~ést~érdá~ý át] LT',
17623      lastWeek: '[L~ást] dddd [át] LT',
17624      sameElse: 'L'
17625    },
17626    relativeTime: {
17627      future: 'í~ñ %s',
17628      past: '%s á~gó',
17629      s: 'á ~féw ~sécó~ñds',
17630      ss: '%d s~écóñ~ds',
17631      m: 'á ~míñ~úté',
17632      mm: '%d m~íñú~tés',
17633      h: 'á~ñ hó~úr',
17634      hh: '%d h~óúrs',
17635      d: 'á ~dáý',
17636      dd: '%d d~áýs',
17637      M: 'á ~móñ~th',
17638      MM: '%d m~óñt~hs',
17639      y: 'á ~ýéár',
17640      yy: '%d ý~éárs'
17641    },
17642    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
17643    ordinal: function ordinal(number) {
17644      var b = number % 10,
17645          output = ~~(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
17646      return number + output;
17647    },
17648    week: {
17649      dow: 1,
17650      // Monday is the first day of the week.
17651      doy: 4 // The week that contains Jan 4th is the first week of the year.
17652
17653    }
17654  });
17655  return xPseudo;
17656});
17657
17658/***/ }),
17659
vendor: 3,494 bytes, lines 17660-17733
17660/***/ "../autobahn_client_core/node_modules/moment/locale/yo.js":
17661/*!****************************************************************!*\
17662  !*** ../autobahn_client_core/node_modules/moment/locale/yo.js ***!
17663  \****************************************************************/
17664/*! no static exports found */
17665/***/ (function(module, exports, __webpack_require__) {
17666
17667var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17668
17669//! moment.js locale configuration
17670//! locale : Yoruba Nigeria [yo]
17671//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe
17672;
17673
17674(function (global, factory) {
17675  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17676				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17677				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17678				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17679})(this, function (moment) {
17680  'use strict'; //! moment.js locale configuration
17681
17682  var yo = moment.defineLocale('yo', {
17683    months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
17684    monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
17685    weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
17686    weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
17687    weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
17688    longDateFormat: {
17689      LT: 'h:mm A',
17690      LTS: 'h:mm:ss A',
17691      L: 'DD/MM/YYYY',
17692      LL: 'D MMMM YYYY',
17693      LLL: 'D MMMM YYYY h:mm A',
17694      LLLL: 'dddd, D MMMM YYYY h:mm A'
17695    },
17696    calendar: {
17697      sameDay: '[Ònì ni] LT',
17698      nextDay: '[Ọ̀la ni] LT',
17699      nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
17700      lastDay: '[Àna ni] LT',
17701      lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
17702      sameElse: 'L'
17703    },
17704    relativeTime: {
17705      future: 'ní %s',
17706      past: '%s kọjá',
17707      s: 'ìsẹjú aayá die',
17708      ss: 'aayá %d',
17709      m: 'ìsẹjú kan',
17710      mm: 'ìsẹjú %d',
17711      h: 'wákati kan',
17712      hh: 'wákati %d',
17713      d: 'ọjọ́ kan',
17714      dd: 'ọjọ́ %d',
17715      M: 'osù kan',
17716      MM: 'osù %d',
17717      y: 'ọdún kan',
17718      yy: 'ọdún %d'
17719    },
17720    dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
17721    ordinal: 'ọjọ́ %d',
17722    week: {
17723      dow: 1,
17724      // Monday is the first day of the week.
17725      doy: 4 // The week that contains Jan 4th is the first week of the year.
17726
17727    }
17728  });
17729  return yo;
17730});
17731
17732/***/ }),
17733
vendor: 5,174 bytes, lines 17734-17877
17734/***/ "../autobahn_client_core/node_modules/moment/locale/zh-cn.js":
17735/*!*******************************************************************!*\
17736  !*** ../autobahn_client_core/node_modules/moment/locale/zh-cn.js ***!
17737  \*******************************************************************/
17738/*! no static exports found */
17739/***/ (function(module, exports, __webpack_require__) {
17740
17741var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17742
17743//! moment.js locale configuration
17744//! locale : Chinese (China) [zh-cn]
17745//! author : suupic : https://github.com/suupic
17746//! author : Zeno Zeng : https://github.com/zenozeng
17747//! author : uu109 : https://github.com/uu109
17748;
17749
17750(function (global, factory) {
17751  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17752				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17753				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17754				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17755})(this, function (moment) {
17756  'use strict'; //! moment.js locale configuration
17757
17758  var zhCn = moment.defineLocale('zh-cn', {
17759    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
17760    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
17761    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17762    weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
17763    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17764    longDateFormat: {
17765      LT: 'HH:mm',
17766      LTS: 'HH:mm:ss',
17767      L: 'YYYY/MM/DD',
17768      LL: 'YYYY年M月D日',
17769      LLL: 'YYYY年M月D日Ah点mm分',
17770      LLLL: 'YYYY年M月D日ddddAh点mm分',
17771      l: 'YYYY/M/D',
17772      ll: 'YYYY年M月D日',
17773      lll: 'YYYY年M月D日 HH:mm',
17774      llll: 'YYYY年M月D日dddd HH:mm'
17775    },
17776    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17777    meridiemHour: function meridiemHour(hour, meridiem) {
17778      if (hour === 12) {
17779        hour = 0;
17780      }
17781
17782      if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17783        return hour;
17784      } else if (meridiem === '下午' || meridiem === '晚上') {
17785        return hour + 12;
17786      } else {
17787        // '中午'
17788        return hour >= 11 ? hour : hour + 12;
17789      }
17790    },
17791    meridiem: function meridiem(hour, minute, isLower) {
17792      var hm = hour * 100 + minute;
17793
17794      if (hm < 600) {
17795        return '凌晨';
17796      } else if (hm < 900) {
17797        return '早上';
17798      } else if (hm < 1130) {
17799        return '上午';
17800      } else if (hm < 1230) {
17801        return '中午';
17802      } else if (hm < 1800) {
17803        return '下午';
17804      } else {
17805        return '晚上';
17806      }
17807    },
17808    calendar: {
17809      sameDay: '[今天]LT',
17810      nextDay: '[明天]LT',
17811      nextWeek: function nextWeek(now) {
17812        if (now.week() !== this.week()) {
17813          return '[下]dddLT';
17814        } else {
17815          return '[本]dddLT';
17816        }
17817      },
17818      lastDay: '[昨天]LT',
17819      lastWeek: function lastWeek(now) {
17820        if (this.week() !== now.week()) {
17821          return '[上]dddLT';
17822        } else {
17823          return '[本]dddLT';
17824        }
17825      },
17826      sameElse: 'L'
17827    },
17828    dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
17829    ordinal: function ordinal(number, period) {
17830      switch (period) {
17831        case 'd':
17832        case 'D':
17833        case 'DDD':
17834          return number + '日';
17835
17836        case 'M':
17837          return number + '月';
17838
17839        case 'w':
17840        case 'W':
17841          return number + '周';
17842
17843        default:
17844          return number;
17845      }
17846    },
17847    relativeTime: {
17848      future: '%s后',
17849      past: '%s前',
17850      s: '几秒',
17851      ss: '%d 秒',
17852      m: '1 分钟',
17853      mm: '%d 分钟',
17854      h: '1 小时',
17855      hh: '%d 小时',
17856      d: '1 天',
17857      dd: '%d 天',
17858      w: '1 周',
17859      ww: '%d 周',
17860      M: '1 个月',
17861      MM: '%d 个月',
17862      y: '1 å¹´',
17863      yy: '%d å¹´'
17864    },
17865    week: {
17866      // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
17867      dow: 1,
17868      // Monday is the first day of the week.
17869      doy: 4 // The week that contains Jan 4th is the first week of the year.
17870
17871    }
17872  });
17873  return zhCn;
17874});
17875
17876/***/ }),
17877
vendor: 4,623 bytes, lines 17878-18000
17878/***/ "../autobahn_client_core/node_modules/moment/locale/zh-hk.js":
17879/*!*******************************************************************!*\
17880  !*** ../autobahn_client_core/node_modules/moment/locale/zh-hk.js ***!
17881  \*******************************************************************/
17882/*! no static exports found */
17883/***/ (function(module, exports, __webpack_require__) {
17884
17885var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
17886
17887//! moment.js locale configuration
17888//! locale : Chinese (Hong Kong) [zh-hk]
17889//! author : Ben : https://github.com/ben-lin
17890//! author : Chris Lam : https://github.com/hehachris
17891//! author : Konstantin : https://github.com/skfd
17892//! author : Anthony : https://github.com/anthonylau
17893;
17894
17895(function (global, factory) {
17896  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
17897				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
17898				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
17899				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
17900})(this, function (moment) {
17901  'use strict'; //! moment.js locale configuration
17902
17903  var zhHk = moment.defineLocale('zh-hk', {
17904    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
17905    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
17906    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17907    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
17908    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17909    longDateFormat: {
17910      LT: 'HH:mm',
17911      LTS: 'HH:mm:ss',
17912      L: 'YYYY/MM/DD',
17913      LL: 'YYYY年M月D日',
17914      LLL: 'YYYY年M月D日 HH:mm',
17915      LLLL: 'YYYY年M月D日dddd HH:mm',
17916      l: 'YYYY/M/D',
17917      ll: 'YYYY年M月D日',
17918      lll: 'YYYY年M月D日 HH:mm',
17919      llll: 'YYYY年M月D日dddd HH:mm'
17920    },
17921    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17922    meridiemHour: function meridiemHour(hour, meridiem) {
17923      if (hour === 12) {
17924        hour = 0;
17925      }
17926
17927      if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17928        return hour;
17929      } else if (meridiem === '中午') {
17930        return hour >= 11 ? hour : hour + 12;
17931      } else if (meridiem === '下午' || meridiem === '晚上') {
17932        return hour + 12;
17933      }
17934    },
17935    meridiem: function meridiem(hour, minute, isLower) {
17936      var hm = hour * 100 + minute;
17937
17938      if (hm < 600) {
17939        return '凌晨';
17940      } else if (hm < 900) {
17941        return '早上';
17942      } else if (hm < 1200) {
17943        return '上午';
17944      } else if (hm === 1200) {
17945        return '中午';
17946      } else if (hm < 1800) {
17947        return '下午';
17948      } else {
17949        return '晚上';
17950      }
17951    },
17952    calendar: {
17953      sameDay: '[今天]LT',
17954      nextDay: '[明天]LT',
17955      nextWeek: '[下]ddddLT',
17956      lastDay: '[昨天]LT',
17957      lastWeek: '[上]ddddLT',
17958      sameElse: 'L'
17959    },
17960    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
17961    ordinal: function ordinal(number, period) {
17962      switch (period) {
17963        case 'd':
17964        case 'D':
17965        case 'DDD':
17966          return number + '日';
17967
17968        case 'M':
17969          return number + '月';
17970
17971        case 'w':
17972        case 'W':
17973          return number + '週';
17974
17975        default:
17976          return number;
17977      }
17978    },
17979    relativeTime: {
17980      future: '%s後',
17981      past: '%s前',
17982      s: '幾秒',
17983      ss: '%d 秒',
17984      m: '1 分鐘',
17985      mm: '%d 分鐘',
17986      h: '1 小時',
17987      hh: '%d 小時',
17988      d: '1 天',
17989      dd: '%d 天',
17990      M: '1 個月',
17991      MM: '%d 個月',
17992      y: '1 å¹´',
17993      yy: '%d å¹´'
17994    }
17995  });
17996  return zhHk;
17997});
17998
17999/***/ }),
18000
vendor: 4,573 bytes, lines 18001-18122
18001/***/ "../autobahn_client_core/node_modules/moment/locale/zh-mo.js":
18002/*!*******************************************************************!*\
18003  !*** ../autobahn_client_core/node_modules/moment/locale/zh-mo.js ***!
18004  \*******************************************************************/
18005/*! no static exports found */
18006/***/ (function(module, exports, __webpack_require__) {
18007
18008var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
18009
18010//! moment.js locale configuration
18011//! locale : Chinese (Macau) [zh-mo]
18012//! author : Ben : https://github.com/ben-lin
18013//! author : Chris Lam : https://github.com/hehachris
18014//! author : Tan Yuanhong : https://github.com/le0tan
18015;
18016
18017(function (global, factory) {
18018  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
18019				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
18020				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
18021				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
18022})(this, function (moment) {
18023  'use strict'; //! moment.js locale configuration
18024
18025  var zhMo = moment.defineLocale('zh-mo', {
18026    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
18027    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
18028    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
18029    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
18030    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
18031    longDateFormat: {
18032      LT: 'HH:mm',
18033      LTS: 'HH:mm:ss',
18034      L: 'DD/MM/YYYY',
18035      LL: 'YYYY年M月D日',
18036      LLL: 'YYYY年M月D日 HH:mm',
18037      LLLL: 'YYYY年M月D日dddd HH:mm',
18038      l: 'D/M/YYYY',
18039      ll: 'YYYY年M月D日',
18040      lll: 'YYYY年M月D日 HH:mm',
18041      llll: 'YYYY年M月D日dddd HH:mm'
18042    },
18043    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
18044    meridiemHour: function meridiemHour(hour, meridiem) {
18045      if (hour === 12) {
18046        hour = 0;
18047      }
18048
18049      if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
18050        return hour;
18051      } else if (meridiem === '中午') {
18052        return hour >= 11 ? hour : hour + 12;
18053      } else if (meridiem === '下午' || meridiem === '晚上') {
18054        return hour + 12;
18055      }
18056    },
18057    meridiem: function meridiem(hour, minute, isLower) {
18058      var hm = hour * 100 + minute;
18059
18060      if (hm < 600) {
18061        return '凌晨';
18062      } else if (hm < 900) {
18063        return '早上';
18064      } else if (hm < 1130) {
18065        return '上午';
18066      } else if (hm < 1230) {
18067        return '中午';
18068      } else if (hm < 1800) {
18069        return '下午';
18070      } else {
18071        return '晚上';
18072      }
18073    },
18074    calendar: {
18075      sameDay: '[今天] LT',
18076      nextDay: '[明天] LT',
18077      nextWeek: '[下]dddd LT',
18078      lastDay: '[昨天] LT',
18079      lastWeek: '[上]dddd LT',
18080      sameElse: 'L'
18081    },
18082    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
18083    ordinal: function ordinal(number, period) {
18084      switch (period) {
18085        case 'd':
18086        case 'D':
18087        case 'DDD':
18088          return number + '日';
18089
18090        case 'M':
18091          return number + '月';
18092
18093        case 'w':
18094        case 'W':
18095          return number + '週';
18096
18097        default:
18098          return number;
18099      }
18100    },
18101    relativeTime: {
18102      future: '%s內',
18103      past: '%s前',
18104      s: '幾秒',
18105      ss: '%d 秒',
18106      m: '1 分鐘',
18107      mm: '%d 分鐘',
18108      h: '1 小時',
18109      hh: '%d 小時',
18110      d: '1 天',
18111      dd: '%d 天',
18112      M: '1 個月',
18113      MM: '%d 個月',
18114      y: '1 å¹´',
18115      yy: '%d å¹´'
18116    }
18117  });
18118  return zhMo;
18119});
18120
18121/***/ }),
18122
vendor: 4,520 bytes, lines 18123-18243
18123/***/ "../autobahn_client_core/node_modules/moment/locale/zh-tw.js":
18124/*!*******************************************************************!*\
18125  !*** ../autobahn_client_core/node_modules/moment/locale/zh-tw.js ***!
18126  \*******************************************************************/
18127/*! no static exports found */
18128/***/ (function(module, exports, __webpack_require__) {
18129
18130var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
18131
18132//! moment.js locale configuration
18133//! locale : Chinese (Taiwan) [zh-tw]
18134//! author : Ben : https://github.com/ben-lin
18135//! author : Chris Lam : https://github.com/hehachris
18136;
18137
18138(function (global, factory) {
18139  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' && "function" === 'function' ? factory(__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ../moment */ "../autobahn_client_core/node_modules/moment/moment.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
18140				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
18141				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
18142				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
18143})(this, function (moment) {
18144  'use strict'; //! moment.js locale configuration
18145
18146  var zhTw = moment.defineLocale('zh-tw', {
18147    months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
18148    monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
18149    weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
18150    weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
18151    weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
18152    longDateFormat: {
18153      LT: 'HH:mm',
18154      LTS: 'HH:mm:ss',
18155      L: 'YYYY/MM/DD',
18156      LL: 'YYYY年M月D日',
18157      LLL: 'YYYY年M月D日 HH:mm',
18158      LLLL: 'YYYY年M月D日dddd HH:mm',
18159      l: 'YYYY/M/D',
18160      ll: 'YYYY年M月D日',
18161      lll: 'YYYY年M月D日 HH:mm',
18162      llll: 'YYYY年M月D日dddd HH:mm'
18163    },
18164    meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
18165    meridiemHour: function meridiemHour(hour, meridiem) {
18166      if (hour === 12) {
18167        hour = 0;
18168      }
18169
18170      if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
18171        return hour;
18172      } else if (meridiem === '中午') {
18173        return hour >= 11 ? hour : hour + 12;
18174      } else if (meridiem === '下午' || meridiem === '晚上') {
18175        return hour + 12;
18176      }
18177    },
18178    meridiem: function meridiem(hour, minute, isLower) {
18179      var hm = hour * 100 + minute;
18180
18181      if (hm < 600) {
18182        return '凌晨';
18183      } else if (hm < 900) {
18184        return '早上';
18185      } else if (hm < 1130) {
18186        return '上午';
18187      } else if (hm < 1230) {
18188        return '中午';
18189      } else if (hm < 1800) {
18190        return '下午';
18191      } else {
18192        return '晚上';
18193      }
18194    },
18195    calendar: {
18196      sameDay: '[今天] LT',
18197      nextDay: '[明天] LT',
18198      nextWeek: '[下]dddd LT',
18199      lastDay: '[昨天] LT',
18200      lastWeek: '[上]dddd LT',
18201      sameElse: 'L'
18202    },
18203    dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
18204    ordinal: function ordinal(number, period) {
18205      switch (period) {
18206        case 'd':
18207        case 'D':
18208        case 'DDD':
18209          return number + '日';
18210
18211        case 'M':
18212          return number + '月';
18213
18214        case 'w':
18215        case 'W':
18216          return number + '週';
18217
18218        default:
18219          return number;
18220      }
18221    },
18222    relativeTime: {
18223      future: '%s後',
18224      past: '%s前',
18225      s: '幾秒',
18226      ss: '%d 秒',
18227      m: '1 分鐘',
18228      mm: '%d 分鐘',
18229      h: '1 小時',
18230      hh: '%d 小時',
18231      d: '1 天',
18232      dd: '%d 天',
18233      M: '1 個月',
18234      MM: '%d 個月',
18235      y: '1 å¹´',
18236      yy: '%d å¹´'
18237    }
18238  });
18239  return zhTw;
18240});
18241
18242/***/ }),
18243
vendor: 146,793 bytes, lines 18244-23387
18244/***/ "../autobahn_client_core/node_modules/moment/moment.js":
18245/*!*************************************************************!*\
18246  !*** ../autobahn_client_core/node_modules/moment/moment.js ***!
18247  \*************************************************************/
18248/*! no static exports found */
18249/***/ (function(module, exports, __webpack_require__) {
18250
18251/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;var require;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
18252
18253//! moment.js
18254//! version : 2.29.4
18255//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
18256//! license : MIT
18257//! momentjs.com
18258;
18259
18260(function (global, factory) {
18261  ( false ? undefined : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? module.exports = factory() :  true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
18262				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
18263				(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
18264				__WEBPACK_AMD_DEFINE_FACTORY__),
18265				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
18266})(this, function () {
18267  'use strict';
18268
18269  var hookCallback;
18270
18271  function hooks() {
18272    return hookCallback.apply(null, arguments);
18273  } // This is done to register the method called with moment()
18274  // without creating circular dependencies.
18275
18276
18277  function setHookCallback(callback) {
18278    hookCallback = callback;
18279  }
18280
18281  function isArray(input) {
18282    return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
18283  }
18284
18285  function isObject(input) {
18286    // IE8 will treat undefined and null as object if it wasn't for
18287    // input != null
18288    return input != null && Object.prototype.toString.call(input) === '[object Object]';
18289  }
18290
18291  function hasOwnProp(a, b) {
18292    return Object.prototype.hasOwnProperty.call(a, b);
18293  }
18294
18295  function isObjectEmpty(obj) {
18296    if (Object.getOwnPropertyNames) {
18297      return Object.getOwnPropertyNames(obj).length === 0;
18298    } else {
18299      var k;
18300
18301      for (k in obj) {
18302        if (hasOwnProp(obj, k)) {
18303          return false;
18304        }
18305      }
18306
18307      return true;
18308    }
18309  }
18310
18311  function isUndefined(input) {
18312    return input === void 0;
18313  }
18314
18315  function isNumber(input) {
18316    return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
18317  }
18318
18319  function isDate(input) {
18320    return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
18321  }
18322
18323  function map(arr, fn) {
18324    var res = [],
18325        i,
18326        arrLen = arr.length;
18327
18328    for (i = 0; i < arrLen; ++i) {
18329      res.push(fn(arr[i], i));
18330    }
18331
18332    return res;
18333  }
18334
18335  function extend(a, b) {
18336    for (var i in b) {
18337      if (hasOwnProp(b, i)) {
18338        a[i] = b[i];
18339      }
18340    }
18341
18342    if (hasOwnProp(b, 'toString')) {
18343      a.toString = b.toString;
18344    }
18345
18346    if (hasOwnProp(b, 'valueOf')) {
18347      a.valueOf = b.valueOf;
18348    }
18349
18350    return a;
18351  }
18352
18353  function createUTC(input, format, locale, strict) {
18354    return createLocalOrUTC(input, format, locale, strict, true).utc();
18355  }
18356
18357  function defaultParsingFlags() {
18358    // We need to deep clone this object.
18359    return {
18360      empty: false,
18361      unusedTokens: [],
18362      unusedInput: [],
18363      overflow: -2,
18364      charsLeftOver: 0,
18365      nullInput: false,
18366      invalidEra: null,
18367      invalidMonth: null,
18368      invalidFormat: false,
18369      userInvalidated: false,
18370      iso: false,
18371      parsedDateParts: [],
18372      era: null,
18373      meridiem: null,
18374      rfc2822: false,
18375      weekdayMismatch: false
18376    };
18377  }
18378
18379  function getParsingFlags(m) {
18380    if (m._pf == null) {
18381      m._pf = defaultParsingFlags();
18382    }
18383
18384    return m._pf;
18385  }
18386
18387  var some;
18388
18389  if (Array.prototype.some) {
18390    some = Array.prototype.some;
18391  } else {
18392    some = function some(fun) {
18393      var t = Object(this),
18394          len = t.length >>> 0,
18395          i;
18396
18397      for (i = 0; i < len; i++) {
18398        if (i in t && fun.call(this, t[i], i, t)) {
18399          return true;
18400        }
18401      }
18402
18403      return false;
18404    };
18405  }
18406
18407  function isValid(m) {
18408    if (m._isValid == null) {
18409      var flags = getParsingFlags(m),
18410          parsedParts = some.call(flags.parsedDateParts, function (i) {
18411        return i != null;
18412      }),
18413          isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);
18414
18415      if (m._strict) {
18416        isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === undefined;
18417      }
18418
18419      if (Object.isFrozen == null || !Object.isFrozen(m)) {
18420        m._isValid = isNowValid;
18421      } else {
18422        return isNowValid;
18423      }
18424    }
18425
18426    return m._isValid;
18427  }
18428
18429  function createInvalid(flags) {
18430    var m = createUTC(NaN);
18431
18432    if (flags != null) {
18433      extend(getParsingFlags(m), flags);
18434    } else {
18435      getParsingFlags(m).userInvalidated = true;
18436    }
18437
18438    return m;
18439  } // Plugins that add properties should also add the key here (null value),
18440  // so we can properly clone ourselves.
18441
18442
18443  var momentProperties = hooks.momentProperties = [],
18444      updateInProgress = false;
18445
18446  function copyConfig(to, from) {
18447    var i,
18448        prop,
18449        val,
18450        momentPropertiesLen = momentProperties.length;
18451
18452    if (!isUndefined(from._isAMomentObject)) {
18453      to._isAMomentObject = from._isAMomentObject;
18454    }
18455
18456    if (!isUndefined(from._i)) {
18457      to._i = from._i;
18458    }
18459
18460    if (!isUndefined(from._f)) {
18461      to._f = from._f;
18462    }
18463
18464    if (!isUndefined(from._l)) {
18465      to._l = from._l;
18466    }
18467
18468    if (!isUndefined(from._strict)) {
18469      to._strict = from._strict;
18470    }
18471
18472    if (!isUndefined(from._tzm)) {
18473      to._tzm = from._tzm;
18474    }
18475
18476    if (!isUndefined(from._isUTC)) {
18477      to._isUTC = from._isUTC;
18478    }
18479
18480    if (!isUndefined(from._offset)) {
18481      to._offset = from._offset;
18482    }
18483
18484    if (!isUndefined(from._pf)) {
18485      to._pf = getParsingFlags(from);
18486    }
18487
18488    if (!isUndefined(from._locale)) {
18489      to._locale = from._locale;
18490    }
18491
18492    if (momentPropertiesLen > 0) {
18493      for (i = 0; i < momentPropertiesLen; i++) {
18494        prop = momentProperties[i];
18495        val = from[prop];
18496
18497        if (!isUndefined(val)) {
18498          to[prop] = val;
18499        }
18500      }
18501    }
18502
18503    return to;
18504  } // Moment prototype object
18505
18506
18507  function Moment(config) {
18508    copyConfig(this, config);
18509    this._d = new Date(config._d != null ? config._d.getTime() : NaN);
18510
18511    if (!this.isValid()) {
18512      this._d = new Date(NaN);
18513    } // Prevent infinite loop in case updateOffset creates new moment
18514    // objects.
18515
18516
18517    if (updateInProgress === false) {
18518      updateInProgress = true;
18519      hooks.updateOffset(this);
18520      updateInProgress = false;
18521    }
18522  }
18523
18524  function isMoment(obj) {
18525    return obj instanceof Moment || obj != null && obj._isAMomentObject != null;
18526  }
18527
18528  function warn(msg) {
18529    if (hooks.suppressDeprecationWarnings === false && typeof console !== 'undefined' && console.warn) {
18530      console.warn('Deprecation warning: ' + msg);
18531    }
18532  }
18533
18534  function deprecate(msg, fn) {
18535    var firstTime = true;
18536    return extend(function () {
18537      if (hooks.deprecationHandler != null) {
18538        hooks.deprecationHandler(null, msg);
18539      }
18540
18541      if (firstTime) {
18542        var args = [],
18543            arg,
18544            i,
18545            key,
18546            argLen = arguments.length;
18547
18548        for (i = 0; i < argLen; i++) {
18549          arg = '';
18550
18551          if (_typeof(arguments[i]) === 'object') {
18552            arg += '\n[' + i + '] ';
18553
18554            for (key in arguments[0]) {
18555              if (hasOwnProp(arguments[0], key)) {
18556                arg += key + ': ' + arguments[0][key] + ', ';
18557              }
18558            }
18559
18560            arg = arg.slice(0, -2); // Remove trailing comma and space
18561          } else {
18562            arg = arguments[i];
18563          }
18564
18565          args.push(arg);
18566        }
18567
18568        warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + new Error().stack);
18569        firstTime = false;
18570      }
18571
18572      return fn.apply(this, arguments);
18573    }, fn);
18574  }
18575
18576  var deprecations = {};
18577
18578  function deprecateSimple(name, msg) {
18579    if (hooks.deprecationHandler != null) {
18580      hooks.deprecationHandler(name, msg);
18581    }
18582
18583    if (!deprecations[name]) {
18584      warn(msg);
18585      deprecations[name] = true;
18586    }
18587  }
18588
18589  hooks.suppressDeprecationWarnings = false;
18590  hooks.deprecationHandler = null;
18591
18592  function isFunction(input) {
18593    return typeof Function !== 'undefined' && input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
18594  }
18595
18596  function set(config) {
18597    var prop, i;
18598
18599    for (i in config) {
18600      if (hasOwnProp(config, i)) {
18601        prop = config[i];
18602
18603        if (isFunction(prop)) {
18604          this[i] = prop;
18605        } else {
18606          this['_' + i] = prop;
18607        }
18608      }
18609    }
18610
18611    this._config = config; // Lenient ordinal parsing accepts just a number in addition to
18612    // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
18613    // TODO: Remove "ordinalParse" fallback in next major release.
18614
18615    this._dayOfMonthOrdinalParseLenient = new RegExp((this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + '|' + /\d{1,2}/.source);
18616  }
18617
18618  function mergeConfigs(parentConfig, childConfig) {
18619    var res = extend({}, parentConfig),
18620        prop;
18621
18622    for (prop in childConfig) {
18623      if (hasOwnProp(childConfig, prop)) {
18624        if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
18625          res[prop] = {};
18626          extend(res[prop], parentConfig[prop]);
18627          extend(res[prop], childConfig[prop]);
18628        } else if (childConfig[prop] != null) {
18629          res[prop] = childConfig[prop];
18630        } else {
18631          delete res[prop];
18632        }
18633      }
18634    }
18635
18636    for (prop in parentConfig) {
18637      if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject(parentConfig[prop])) {
18638        // make sure changes to properties don't modify parent config
18639        res[prop] = extend({}, res[prop]);
18640      }
18641    }
18642
18643    return res;
18644  }
18645
18646  function Locale(config) {
18647    if (config != null) {
18648      this.set(config);
18649    }
18650  }
18651
18652  var keys;
18653
18654  if (Object.keys) {
18655    keys = Object.keys;
18656  } else {
18657    keys = function keys(obj) {
18658      var i,
18659          res = [];
18660
18661      for (i in obj) {
18662        if (hasOwnProp(obj, i)) {
18663          res.push(i);
18664        }
18665      }
18666
18667      return res;
18668    };
18669  }
18670
18671  var defaultCalendar = {
18672    sameDay: '[Today at] LT',
18673    nextDay: '[Tomorrow at] LT',
18674    nextWeek: 'dddd [at] LT',
18675    lastDay: '[Yesterday at] LT',
18676    lastWeek: '[Last] dddd [at] LT',
18677    sameElse: 'L'
18678  };
18679
18680  function calendar(key, mom, now) {
18681    var output = this._calendar[key] || this._calendar['sameElse'];
18682    return isFunction(output) ? output.call(mom, now) : output;
18683  }
18684
18685  function zeroFill(number, targetLength, forceSign) {
18686    var absNumber = '' + Math.abs(number),
18687        zerosToFill = targetLength - absNumber.length,
18688        sign = number >= 0;
18689    return (sign ? forceSign ? '+' : '' : '-') + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
18690  }
18691
18692  var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
18693      localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
18694      formatFunctions = {},
18695      formatTokenFunctions = {}; // token:    'M'
18696  // padded:   ['MM', 2]
18697  // ordinal:  'Mo'
18698  // callback: function () { this.month() + 1 }
18699
18700  function addFormatToken(token, padded, ordinal, callback) {
18701    var func = callback;
18702
18703    if (typeof callback === 'string') {
18704      func = function func() {
18705        return this[callback]();
18706      };
18707    }
18708
18709    if (token) {
18710      formatTokenFunctions[token] = func;
18711    }
18712
18713    if (padded) {
18714      formatTokenFunctions[padded[0]] = function () {
18715        return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
18716      };
18717    }
18718
18719    if (ordinal) {
18720      formatTokenFunctions[ordinal] = function () {
18721        return this.localeData().ordinal(func.apply(this, arguments), token);
18722      };
18723    }
18724  }
18725
18726  function removeFormattingTokens(input) {
18727    if (input.match(/\[[\s\S]/)) {
18728      return input.replace(/^\[|\]$/g, '');
18729    }
18730
18731    return input.replace(/\\/g, '');
18732  }
18733
18734  function makeFormatFunction(format) {
18735    var array = format.match(formattingTokens),
18736        i,
18737        length;
18738
18739    for (i = 0, length = array.length; i < length; i++) {
18740      if (formatTokenFunctions[array[i]]) {
18741        array[i] = formatTokenFunctions[array[i]];
18742      } else {
18743        array[i] = removeFormattingTokens(array[i]);
18744      }
18745    }
18746
18747    return function (mom) {
18748      var output = '',
18749          i;
18750
18751      for (i = 0; i < length; i++) {
18752        output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
18753      }
18754
18755      return output;
18756    };
18757  } // format date using native date object
18758
18759
18760  function formatMoment(m, format) {
18761    if (!m.isValid()) {
18762      return m.localeData().invalidDate();
18763    }
18764
18765    format = expandFormat(format, m.localeData());
18766    formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
18767    return formatFunctions[format](m);
18768  }
18769
18770  function expandFormat(format, locale) {
18771    var i = 5;
18772
18773    function replaceLongDateFormatTokens(input) {
18774      return locale.longDateFormat(input) || input;
18775    }
18776
18777    localFormattingTokens.lastIndex = 0;
18778
18779    while (i >= 0 && localFormattingTokens.test(format)) {
18780      format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
18781      localFormattingTokens.lastIndex = 0;
18782      i -= 1;
18783    }
18784
18785    return format;
18786  }
18787
18788  var defaultLongDateFormat = {
18789    LTS: 'h:mm:ss A',
18790    LT: 'h:mm A',
18791    L: 'MM/DD/YYYY',
18792    LL: 'MMMM D, YYYY',
18793    LLL: 'MMMM D, YYYY h:mm A',
18794    LLLL: 'dddd, MMMM D, YYYY h:mm A'
18795  };
18796
18797  function longDateFormat(key) {
18798    var format = this._longDateFormat[key],
18799        formatUpper = this._longDateFormat[key.toUpperCase()];
18800
18801    if (format || !formatUpper) {
18802      return format;
18803    }
18804
18805    this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function (tok) {
18806      if (tok === 'MMMM' || tok === 'MM' || tok === 'DD' || tok === 'dddd') {
18807        return tok.slice(1);
18808      }
18809
18810      return tok;
18811    }).join('');
18812    return this._longDateFormat[key];
18813  }
18814
18815  var defaultInvalidDate = 'Invalid date';
18816
18817  function invalidDate() {
18818    return this._invalidDate;
18819  }
18820
18821  var defaultOrdinal = '%d',
18822      defaultDayOfMonthOrdinalParse = /\d{1,2}/;
18823
18824  function ordinal(number) {
18825    return this._ordinal.replace('%d', number);
18826  }
18827
18828  var defaultRelativeTime = {
18829    future: 'in %s',
18830    past: '%s ago',
18831    s: 'a few seconds',
18832    ss: '%d seconds',
18833    m: 'a minute',
18834    mm: '%d minutes',
18835    h: 'an hour',
18836    hh: '%d hours',
18837    d: 'a day',
18838    dd: '%d days',
18839    w: 'a week',
18840    ww: '%d weeks',
18841    M: 'a month',
18842    MM: '%d months',
18843    y: 'a year',
18844    yy: '%d years'
18845  };
18846
18847  function relativeTime(number, withoutSuffix, string, isFuture) {
18848    var output = this._relativeTime[string];
18849    return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);
18850  }
18851
18852  function pastFuture(diff, output) {
18853    var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
18854    return isFunction(format) ? format(output) : format.replace(/%s/i, output);
18855  }
18856
18857  var aliases = {};
18858
18859  function addUnitAlias(unit, shorthand) {
18860    var lowerCase = unit.toLowerCase();
18861    aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
18862  }
18863
18864  function normalizeUnits(units) {
18865    return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
18866  }
18867
18868  function normalizeObjectUnits(inputObject) {
18869    var normalizedInput = {},
18870        normalizedProp,
18871        prop;
18872
18873    for (prop in inputObject) {
18874      if (hasOwnProp(inputObject, prop)) {
18875        normalizedProp = normalizeUnits(prop);
18876
18877        if (normalizedProp) {
18878          normalizedInput[normalizedProp] = inputObject[prop];
18879        }
18880      }
18881    }
18882
18883    return normalizedInput;
18884  }
18885
18886  var priorities = {};
18887
18888  function addUnitPriority(unit, priority) {
18889    priorities[unit] = priority;
18890  }
18891
18892  function getPrioritizedUnits(unitsObj) {
18893    var units = [],
18894        u;
18895
18896    for (u in unitsObj) {
18897      if (hasOwnProp(unitsObj, u)) {
18898        units.push({
18899          unit: u,
18900          priority: priorities[u]
18901        });
18902      }
18903    }
18904
18905    units.sort(function (a, b) {
18906      return a.priority - b.priority;
18907    });
18908    return units;
18909  }
18910
18911  function isLeapYear(year) {
18912    return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
18913  }
18914
18915  function absFloor(number) {
18916    if (number < 0) {
18917      // -0 -> 0
18918      return Math.ceil(number) || 0;
18919    } else {
18920      return Math.floor(number);
18921    }
18922  }
18923
18924  function toInt(argumentForCoercion) {
18925    var coercedNumber = +argumentForCoercion,
18926        value = 0;
18927
18928    if (coercedNumber !== 0 && isFinite(coercedNumber)) {
18929      value = absFloor(coercedNumber);
18930    }
18931
18932    return value;
18933  }
18934
18935  function makeGetSet(unit, keepTime) {
18936    return function (value) {
18937      if (value != null) {
18938        set$1(this, unit, value);
18939        hooks.updateOffset(this, keepTime);
18940        return this;
18941      } else {
18942        return get(this, unit);
18943      }
18944    };
18945  }
18946
18947  function get(mom, unit) {
18948    return mom.isValid() ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
18949  }
18950
18951  function set$1(mom, unit, value) {
18952    if (mom.isValid() && !isNaN(value)) {
18953      if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
18954        value = toInt(value);
18955
18956        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
18957      } else {
18958        mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
18959      }
18960    }
18961  } // MOMENTS
18962
18963
18964  function stringGet(units) {
18965    units = normalizeUnits(units);
18966
18967    if (isFunction(this[units])) {
18968      return this[units]();
18969    }
18970
18971    return this;
18972  }
18973
18974  function stringSet(units, value) {
18975    if (_typeof(units) === 'object') {
18976      units = normalizeObjectUnits(units);
18977      var prioritized = getPrioritizedUnits(units),
18978          i,
18979          prioritizedLen = prioritized.length;
18980
18981      for (i = 0; i < prioritizedLen; i++) {
18982        this[prioritized[i].unit](units[prioritized[i].unit]);
18983      }
18984    } else {
18985      units = normalizeUnits(units);
18986
18987      if (isFunction(this[units])) {
18988        return this[units](value);
18989      }
18990    }
18991
18992    return this;
18993  }
18994
18995  var match1 = /\d/,
18996      //       0 - 9
18997  match2 = /\d\d/,
18998      //      00 - 99
18999  match3 = /\d{3}/,
19000      //     000 - 999
19001  match4 = /\d{4}/,
19002      //    0000 - 9999
19003  match6 = /[+-]?\d{6}/,
19004      // -999999 - 999999
19005  match1to2 = /\d\d?/,
19006      //       0 - 99
19007  match3to4 = /\d\d\d\d?/,
19008      //     999 - 9999
19009  match5to6 = /\d\d\d\d\d\d?/,
19010      //   99999 - 999999
19011  match1to3 = /\d{1,3}/,
19012      //       0 - 999
19013  match1to4 = /\d{1,4}/,
19014      //       0 - 9999
19015  match1to6 = /[+-]?\d{1,6}/,
19016      // -999999 - 999999
19017  matchUnsigned = /\d+/,
19018      //       0 - inf
19019  matchSigned = /[+-]?\d+/,
19020      //    -inf - inf
19021  matchOffset = /Z|[+-]\d\d:?\d\d/gi,
19022      // +00:00 -00:00 +0000 -0000 or Z
19023  matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi,
19024      // +00 -00 +00:00 -00:00 +0000 -0000 or Z
19025  matchTimestamp = /[+-]?\d+(\.\d{1,3})?/,
19026      // 123456789 123456789.123
19027  // any word (or two) characters or numbers including two/three word month in arabic.
19028  // includes scottish gaelic two word and hyphenated months
19029  matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
19030      regexes;
19031  regexes = {};
19032
19033  function addRegexToken(token, regex, strictRegex) {
19034    regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
19035      return isStrict && strictRegex ? strictRegex : regex;
19036    };
19037  }
19038
19039  function getParseRegexForToken(token, config) {
19040    if (!hasOwnProp(regexes, token)) {
19041      return new RegExp(unescapeFormat(token));
19042    }
19043
19044    return regexes[token](config._strict, config._locale);
19045  } // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
19046
19047
19048  function unescapeFormat(s) {
19049    return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
19050      return p1 || p2 || p3 || p4;
19051    }));
19052  }
19053
19054  function regexEscape(s) {
19055    return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
19056  }
19057
19058  var tokens = {};
19059
19060  function addParseToken(token, callback) {
19061    var i,
19062        func = callback,
19063        tokenLen;
19064
19065    if (typeof token === 'string') {
19066      token = [token];
19067    }
19068
19069    if (isNumber(callback)) {
19070      func = function func(input, array) {
19071        array[callback] = toInt(input);
19072      };
19073    }
19074
19075    tokenLen = token.length;
19076
19077    for (i = 0; i < tokenLen; i++) {
19078      tokens[token[i]] = func;
19079    }
19080  }
19081
19082  function addWeekParseToken(token, callback) {
19083    addParseToken(token, function (input, array, config, token) {
19084      config._w = config._w || {};
19085      callback(input, config._w, config, token);
19086    });
19087  }
19088
19089  function addTimeToArrayFromToken(token, input, config) {
19090    if (input != null && hasOwnProp(tokens, token)) {
19091      tokens[token](input, config._a, config, token);
19092    }
19093  }
19094
19095  var YEAR = 0,
19096      MONTH = 1,
19097      DATE = 2,
19098      HOUR = 3,
19099      MINUTE = 4,
19100      SECOND = 5,
19101      MILLISECOND = 6,
19102      WEEK = 7,
19103      WEEKDAY = 8;
19104
19105  function mod(n, x) {
19106    return (n % x + x) % x;
19107  }
19108
19109  var indexOf;
19110
19111  if (Array.prototype.indexOf) {
19112    indexOf = Array.prototype.indexOf;
19113  } else {
19114    indexOf = function indexOf(o) {
19115      // I know
19116      var i;
19117
19118      for (i = 0; i < this.length; ++i) {
19119        if (this[i] === o) {
19120          return i;
19121        }
19122      }
19123
19124      return -1;
19125    };
19126  }
19127
19128  function daysInMonth(year, month) {
19129    if (isNaN(year) || isNaN(month)) {
19130      return NaN;
19131    }
19132
19133    var modMonth = mod(month, 12);
19134    year += (month - modMonth) / 12;
19135    return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;
19136  } // FORMATTING
19137
19138
19139  addFormatToken('M', ['MM', 2], 'Mo', function () {
19140    return this.month() + 1;
19141  });
19142  addFormatToken('MMM', 0, 0, function (format) {
19143    return this.localeData().monthsShort(this, format);
19144  });
19145  addFormatToken('MMMM', 0, 0, function (format) {
19146    return this.localeData().months(this, format);
19147  }); // ALIASES
19148
19149  addUnitAlias('month', 'M'); // PRIORITY
19150
19151  addUnitPriority('month', 8); // PARSING
19152
19153  addRegexToken('M', match1to2);
19154  addRegexToken('MM', match1to2, match2);
19155  addRegexToken('MMM', function (isStrict, locale) {
19156    return locale.monthsShortRegex(isStrict);
19157  });
19158  addRegexToken('MMMM', function (isStrict, locale) {
19159    return locale.monthsRegex(isStrict);
19160  });
19161  addParseToken(['M', 'MM'], function (input, array) {
19162    array[MONTH] = toInt(input) - 1;
19163  });
19164  addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
19165    var month = config._locale.monthsParse(input, token, config._strict); // if we didn't find a month name, mark the date as invalid.
19166
19167
19168    if (month != null) {
19169      array[MONTH] = month;
19170    } else {
19171      getParsingFlags(config).invalidMonth = input;
19172    }
19173  }); // LOCALES
19174
19175  var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
19176      defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
19177      MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
19178      defaultMonthsShortRegex = matchWord,
19179      defaultMonthsRegex = matchWord;
19180
19181  function localeMonths(m, format) {
19182    if (!m) {
19183      return isArray(this._months) ? this._months : this._months['standalone'];
19184    }
19185
19186    return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
19187  }
19188
19189  function localeMonthsShort(m, format) {
19190    if (!m) {
19191      return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort['standalone'];
19192    }
19193
19194    return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
19195  }
19196
19197  function handleStrictParse(monthName, format, strict) {
19198    var i,
19199        ii,
19200        mom,
19201        llc = monthName.toLocaleLowerCase();
19202
19203    if (!this._monthsParse) {
19204      // this is not used
19205      this._monthsParse = [];
19206      this._longMonthsParse = [];
19207      this._shortMonthsParse = [];
19208
19209      for (i = 0; i < 12; ++i) {
19210        mom = createUTC([2000, i]);
19211        this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
19212        this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
19213      }
19214    }
19215
19216    if (strict) {
19217      if (format === 'MMM') {
19218        ii = indexOf.call(this._shortMonthsParse, llc);
19219        return ii !== -1 ? ii : null;
19220      } else {
19221        ii = indexOf.call(this._longMonthsParse, llc);
19222        return ii !== -1 ? ii : null;
19223      }
19224    } else {
19225      if (format === 'MMM') {
19226        ii = indexOf.call(this._shortMonthsParse, llc);
19227
19228        if (ii !== -1) {
19229          return ii;
19230        }
19231
19232        ii = indexOf.call(this._longMonthsParse, llc);
19233        return ii !== -1 ? ii : null;
19234      } else {
19235        ii = indexOf.call(this._longMonthsParse, llc);
19236
19237        if (ii !== -1) {
19238          return ii;
19239        }
19240
19241        ii = indexOf.call(this._shortMonthsParse, llc);
19242        return ii !== -1 ? ii : null;
19243      }
19244    }
19245  }
19246
19247  function localeMonthsParse(monthName, format, strict) {
19248    var i, mom, regex;
19249
19250    if (this._monthsParseExact) {
19251      return handleStrictParse.call(this, monthName, format, strict);
19252    }
19253
19254    if (!this._monthsParse) {
19255      this._monthsParse = [];
19256      this._longMonthsParse = [];
19257      this._shortMonthsParse = [];
19258    } // TODO: add sorting
19259    // Sorting makes sure if one month (or abbr) is a prefix of another
19260    // see sorting in computeMonthsParse
19261
19262
19263    for (i = 0; i < 12; i++) {
19264      // make the regex if we don't have it already
19265      mom = createUTC([2000, i]);
19266
19267      if (strict && !this._longMonthsParse[i]) {
19268        this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
19269        this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
19270      }
19271
19272      if (!strict && !this._monthsParse[i]) {
19273        regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
19274        this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
19275      } // test the regex
19276
19277
19278      if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
19279        return i;
19280      } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
19281        return i;
19282      } else if (!strict && this._monthsParse[i].test(monthName)) {
19283        return i;
19284      }
19285    }
19286  } // MOMENTS
19287
19288
19289  function setMonth(mom, value) {
19290    var dayOfMonth;
19291
19292    if (!mom.isValid()) {
19293      // No op
19294      return mom;
19295    }
19296
19297    if (typeof value === 'string') {
19298      if (/^\d+$/.test(value)) {
19299        value = toInt(value);
19300      } else {
19301        value = mom.localeData().monthsParse(value); // TODO: Another silent failure?
19302
19303        if (!isNumber(value)) {
19304          return mom;
19305        }
19306      }
19307    }
19308
19309    dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
19310
19311    mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
19312
19313    return mom;
19314  }
19315
19316  function getSetMonth(value) {
19317    if (value != null) {
19318      setMonth(this, value);
19319      hooks.updateOffset(this, true);
19320      return this;
19321    } else {
19322      return get(this, 'Month');
19323    }
19324  }
19325
19326  function getDaysInMonth() {
19327    return daysInMonth(this.year(), this.month());
19328  }
19329
19330  function monthsShortRegex(isStrict) {
19331    if (this._monthsParseExact) {
19332      if (!hasOwnProp(this, '_monthsRegex')) {
19333        computeMonthsParse.call(this);
19334      }
19335
19336      if (isStrict) {
19337        return this._monthsShortStrictRegex;
19338      } else {
19339        return this._monthsShortRegex;
19340      }
19341    } else {
19342      if (!hasOwnProp(this, '_monthsShortRegex')) {
19343        this._monthsShortRegex = defaultMonthsShortRegex;
19344      }
19345
19346      return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;
19347    }
19348  }
19349
19350  function monthsRegex(isStrict) {
19351    if (this._monthsParseExact) {
19352      if (!hasOwnProp(this, '_monthsRegex')) {
19353        computeMonthsParse.call(this);
19354      }
19355
19356      if (isStrict) {
19357        return this._monthsStrictRegex;
19358      } else {
19359        return this._monthsRegex;
19360      }
19361    } else {
19362      if (!hasOwnProp(this, '_monthsRegex')) {
19363        this._monthsRegex = defaultMonthsRegex;
19364      }
19365
19366      return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;
19367    }
19368  }
19369
19370  function computeMonthsParse() {
19371    function cmpLenRev(a, b) {
19372      return b.length - a.length;
19373    }
19374
19375    var shortPieces = [],
19376        longPieces = [],
19377        mixedPieces = [],
19378        i,
19379        mom;
19380
19381    for (i = 0; i < 12; i++) {
19382      // make the regex if we don't have it already
19383      mom = createUTC([2000, i]);
19384      shortPieces.push(this.monthsShort(mom, ''));
19385      longPieces.push(this.months(mom, ''));
19386      mixedPieces.push(this.months(mom, ''));
19387      mixedPieces.push(this.monthsShort(mom, ''));
19388    } // Sorting makes sure if one month (or abbr) is a prefix of another it
19389    // will match the longer piece.
19390
19391
19392    shortPieces.sort(cmpLenRev);
19393    longPieces.sort(cmpLenRev);
19394    mixedPieces.sort(cmpLenRev);
19395
19396    for (i = 0; i < 12; i++) {
19397      shortPieces[i] = regexEscape(shortPieces[i]);
19398      longPieces[i] = regexEscape(longPieces[i]);
19399    }
19400
19401    for (i = 0; i < 24; i++) {
19402      mixedPieces[i] = regexEscape(mixedPieces[i]);
19403    }
19404
19405    this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
19406    this._monthsShortRegex = this._monthsRegex;
19407    this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
19408    this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
19409  } // FORMATTING
19410
19411
19412  addFormatToken('Y', 0, 0, function () {
19413    var y = this.year();
19414    return y <= 9999 ? zeroFill(y, 4) : '+' + y;
19415  });
19416  addFormatToken(0, ['YY', 2], 0, function () {
19417    return this.year() % 100;
19418  });
19419  addFormatToken(0, ['YYYY', 4], 0, 'year');
19420  addFormatToken(0, ['YYYYY', 5], 0, 'year');
19421  addFormatToken(0, ['YYYYYY', 6, true], 0, 'year'); // ALIASES
19422
19423  addUnitAlias('year', 'y'); // PRIORITIES
19424
19425  addUnitPriority('year', 1); // PARSING
19426
19427  addRegexToken('Y', matchSigned);
19428  addRegexToken('YY', match1to2, match2);
19429  addRegexToken('YYYY', match1to4, match4);
19430  addRegexToken('YYYYY', match1to6, match6);
19431  addRegexToken('YYYYYY', match1to6, match6);
19432  addParseToken(['YYYYY', 'YYYYYY'], YEAR);
19433  addParseToken('YYYY', function (input, array) {
19434    array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
19435  });
19436  addParseToken('YY', function (input, array) {
19437    array[YEAR] = hooks.parseTwoDigitYear(input);
19438  });
19439  addParseToken('Y', function (input, array) {
19440    array[YEAR] = parseInt(input, 10);
19441  }); // HELPERS
19442
19443  function daysInYear(year) {
19444    return isLeapYear(year) ? 366 : 365;
19445  } // HOOKS
19446
19447
19448  hooks.parseTwoDigitYear = function (input) {
19449    return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
19450  }; // MOMENTS
19451
19452
19453  var getSetYear = makeGetSet('FullYear', true);
19454
19455  function getIsLeapYear() {
19456    return isLeapYear(this.year());
19457  }
19458
19459  function createDate(y, m, d, h, M, s, ms) {
19460    // can't just apply() to create a date:
19461    // https://stackoverflow.com/q/181348
19462    var date; // the date constructor remaps years 0-99 to 1900-1999
19463
19464    if (y < 100 && y >= 0) {
19465      // preserve leap years using a full 400 year cycle, then reset
19466      date = new Date(y + 400, m, d, h, M, s, ms);
19467
19468      if (isFinite(date.getFullYear())) {
19469        date.setFullYear(y);
19470      }
19471    } else {
19472      date = new Date(y, m, d, h, M, s, ms);
19473    }
19474
19475    return date;
19476  }
19477
19478  function createUTCDate(y) {
19479    var date, args; // the Date.UTC function remaps years 0-99 to 1900-1999
19480
19481    if (y < 100 && y >= 0) {
19482      args = Array.prototype.slice.call(arguments); // preserve leap years using a full 400 year cycle, then reset
19483
19484      args[0] = y + 400;
19485      date = new Date(Date.UTC.apply(null, args));
19486
19487      if (isFinite(date.getUTCFullYear())) {
19488        date.setUTCFullYear(y);
19489      }
19490    } else {
19491      date = new Date(Date.UTC.apply(null, arguments));
19492    }
19493
19494    return date;
19495  } // start-of-first-week - start-of-year
19496
19497
19498  function firstWeekOffset(year, dow, doy) {
19499    var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
19500    fwd = 7 + dow - doy,
19501        // first-week day local weekday -- which local weekday is fwd
19502    fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
19503    return -fwdlw + fwd - 1;
19504  } // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
19505
19506
19507  function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
19508    var localWeekday = (7 + weekday - dow) % 7,
19509        weekOffset = firstWeekOffset(year, dow, doy),
19510        dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
19511        resYear,
19512        resDayOfYear;
19513
19514    if (dayOfYear <= 0) {
19515      resYear = year - 1;
19516      resDayOfYear = daysInYear(resYear) + dayOfYear;
19517    } else if (dayOfYear > daysInYear(year)) {
19518      resYear = year + 1;
19519      resDayOfYear = dayOfYear - daysInYear(year);
19520    } else {
19521      resYear = year;
19522      resDayOfYear = dayOfYear;
19523    }
19524
19525    return {
19526      year: resYear,
19527      dayOfYear: resDayOfYear
19528    };
19529  }
19530
19531  function weekOfYear(mom, dow, doy) {
19532    var weekOffset = firstWeekOffset(mom.year(), dow, doy),
19533        week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
19534        resWeek,
19535        resYear;
19536
19537    if (week < 1) {
19538      resYear = mom.year() - 1;
19539      resWeek = week + weeksInYear(resYear, dow, doy);
19540    } else if (week > weeksInYear(mom.year(), dow, doy)) {
19541      resWeek = week - weeksInYear(mom.year(), dow, doy);
19542      resYear = mom.year() + 1;
19543    } else {
19544      resYear = mom.year();
19545      resWeek = week;
19546    }
19547
19548    return {
19549      week: resWeek,
19550      year: resYear
19551    };
19552  }
19553
19554  function weeksInYear(year, dow, doy) {
19555    var weekOffset = firstWeekOffset(year, dow, doy),
19556        weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
19557    return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
19558  } // FORMATTING
19559
19560
19561  addFormatToken('w', ['ww', 2], 'wo', 'week');
19562  addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek'); // ALIASES
19563
19564  addUnitAlias('week', 'w');
19565  addUnitAlias('isoWeek', 'W'); // PRIORITIES
19566
19567  addUnitPriority('week', 5);
19568  addUnitPriority('isoWeek', 5); // PARSING
19569
19570  addRegexToken('w', match1to2);
19571  addRegexToken('ww', match1to2, match2);
19572  addRegexToken('W', match1to2);
19573  addRegexToken('WW', match1to2, match2);
19574  addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
19575    week[token.substr(0, 1)] = toInt(input);
19576  }); // HELPERS
19577  // LOCALES
19578
19579  function localeWeek(mom) {
19580    return weekOfYear(mom, this._week.dow, this._week.doy).week;
19581  }
19582
19583  var defaultLocaleWeek = {
19584    dow: 0,
19585    // Sunday is the first day of the week.
19586    doy: 6 // The week that contains Jan 6th is the first week of the year.
19587
19588  };
19589
19590  function localeFirstDayOfWeek() {
19591    return this._week.dow;
19592  }
19593
19594  function localeFirstDayOfYear() {
19595    return this._week.doy;
19596  } // MOMENTS
19597
19598
19599  function getSetWeek(input) {
19600    var week = this.localeData().week(this);
19601    return input == null ? week : this.add((input - week) * 7, 'd');
19602  }
19603
19604  function getSetISOWeek(input) {
19605    var week = weekOfYear(this, 1, 4).week;
19606    return input == null ? week : this.add((input - week) * 7, 'd');
19607  } // FORMATTING
19608
19609
19610  addFormatToken('d', 0, 'do', 'day');
19611  addFormatToken('dd', 0, 0, function (format) {
19612    return this.localeData().weekdaysMin(this, format);
19613  });
19614  addFormatToken('ddd', 0, 0, function (format) {
19615    return this.localeData().weekdaysShort(this, format);
19616  });
19617  addFormatToken('dddd', 0, 0, function (format) {
19618    return this.localeData().weekdays(this, format);
19619  });
19620  addFormatToken('e', 0, 0, 'weekday');
19621  addFormatToken('E', 0, 0, 'isoWeekday'); // ALIASES
19622
19623  addUnitAlias('day', 'd');
19624  addUnitAlias('weekday', 'e');
19625  addUnitAlias('isoWeekday', 'E'); // PRIORITY
19626
19627  addUnitPriority('day', 11);
19628  addUnitPriority('weekday', 11);
19629  addUnitPriority('isoWeekday', 11); // PARSING
19630
19631  addRegexToken('d', match1to2);
19632  addRegexToken('e', match1to2);
19633  addRegexToken('E', match1to2);
19634  addRegexToken('dd', function (isStrict, locale) {
19635    return locale.weekdaysMinRegex(isStrict);
19636  });
19637  addRegexToken('ddd', function (isStrict, locale) {
19638    return locale.weekdaysShortRegex(isStrict);
19639  });
19640  addRegexToken('dddd', function (isStrict, locale) {
19641    return locale.weekdaysRegex(isStrict);
19642  });
19643  addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
19644    var weekday = config._locale.weekdaysParse(input, token, config._strict); // if we didn't get a weekday name, mark the date as invalid
19645
19646
19647    if (weekday != null) {
19648      week.d = weekday;
19649    } else {
19650      getParsingFlags(config).invalidWeekday = input;
19651    }
19652  });
19653  addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
19654    week[token] = toInt(input);
19655  }); // HELPERS
19656
19657  function parseWeekday(input, locale) {
19658    if (typeof input !== 'string') {
19659      return input;
19660    }
19661
19662    if (!isNaN(input)) {
19663      return parseInt(input, 10);
19664    }
19665
19666    input = locale.weekdaysParse(input);
19667
19668    if (typeof input === 'number') {
19669      return input;
19670    }
19671
19672    return null;
19673  }
19674
19675  function parseIsoWeekday(input, locale) {
19676    if (typeof input === 'string') {
19677      return locale.weekdaysParse(input) % 7 || 7;
19678    }
19679
19680    return isNaN(input) ? null : input;
19681  } // LOCALES
19682
19683
19684  function shiftWeekdays(ws, n) {
19685    return ws.slice(n, 7).concat(ws.slice(0, n));
19686  }
19687
19688  var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
19689      defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
19690      defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
19691      defaultWeekdaysRegex = matchWord,
19692      defaultWeekdaysShortRegex = matchWord,
19693      defaultWeekdaysMinRegex = matchWord;
19694
19695  function localeWeekdays(m, format) {
19696    var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format) ? 'format' : 'standalone'];
19697    return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;
19698  }
19699
19700  function localeWeekdaysShort(m) {
19701    return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;
19702  }
19703
19704  function localeWeekdaysMin(m) {
19705    return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;
19706  }
19707
19708  function handleStrictParse$1(weekdayName, format, strict) {
19709    var i,
19710        ii,
19711        mom,
19712        llc = weekdayName.toLocaleLowerCase();
19713
19714    if (!this._weekdaysParse) {
19715      this._weekdaysParse = [];
19716      this._shortWeekdaysParse = [];
19717      this._minWeekdaysParse = [];
19718
19719      for (i = 0; i < 7; ++i) {
19720        mom = createUTC([2000, 1]).day(i);
19721        this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
19722        this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
19723        this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
19724      }
19725    }
19726
19727    if (strict) {
19728      if (format === 'dddd') {
19729        ii = indexOf.call(this._weekdaysParse, llc);
19730        return ii !== -1 ? ii : null;
19731      } else if (format === 'ddd') {
19732        ii = indexOf.call(this._shortWeekdaysParse, llc);
19733        return ii !== -1 ? ii : null;
19734      } else {
19735        ii = indexOf.call(this._minWeekdaysParse, llc);
19736        return ii !== -1 ? ii : null;
19737      }
19738    } else {
19739      if (format === 'dddd') {
19740        ii = indexOf.call(this._weekdaysParse, llc);
19741
19742        if (ii !== -1) {
19743          return ii;
19744        }
19745
19746        ii = indexOf.call(this._shortWeekdaysParse, llc);
19747
19748        if (ii !== -1) {
19749          return ii;
19750        }
19751
19752        ii = indexOf.call(this._minWeekdaysParse, llc);
19753        return ii !== -1 ? ii : null;
19754      } else if (format === 'ddd') {
19755        ii = indexOf.call(this._shortWeekdaysParse, llc);
19756
19757        if (ii !== -1) {
19758          return ii;
19759        }
19760
19761        ii = indexOf.call(this._weekdaysParse, llc);
19762
19763        if (ii !== -1) {
19764          return ii;
19765        }
19766
19767        ii = indexOf.call(this._minWeekdaysParse, llc);
19768        return ii !== -1 ? ii : null;
19769      } else {
19770        ii = indexOf.call(this._minWeekdaysParse, llc);
19771
19772        if (ii !== -1) {
19773          return ii;
19774        }
19775
19776        ii = indexOf.call(this._weekdaysParse, llc);
19777
19778        if (ii !== -1) {
19779          return ii;
19780        }
19781
19782        ii = indexOf.call(this._shortWeekdaysParse, llc);
19783        return ii !== -1 ? ii : null;
19784      }
19785    }
19786  }
19787
19788  function localeWeekdaysParse(weekdayName, format, strict) {
19789    var i, mom, regex;
19790
19791    if (this._weekdaysParseExact) {
19792      return handleStrictParse$1.call(this, weekdayName, format, strict);
19793    }
19794
19795    if (!this._weekdaysParse) {
19796      this._weekdaysParse = [];
19797      this._minWeekdaysParse = [];
19798      this._shortWeekdaysParse = [];
19799      this._fullWeekdaysParse = [];
19800    }
19801
19802    for (i = 0; i < 7; i++) {
19803      // make the regex if we don't have it already
19804      mom = createUTC([2000, 1]).day(i);
19805
19806      if (strict && !this._fullWeekdaysParse[i]) {
19807        this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');
19808        this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');
19809        this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');
19810      }
19811
19812      if (!this._weekdaysParse[i]) {
19813        regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
19814        this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
19815      } // test the regex
19816
19817
19818      if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
19819        return i;
19820      } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
19821        return i;
19822      } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
19823        return i;
19824      } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
19825        return i;
19826      }
19827    }
19828  } // MOMENTS
19829
19830
19831  function getSetDayOfWeek(input) {
19832    if (!this.isValid()) {
19833      return input != null ? this : NaN;
19834    }
19835
19836    var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
19837
19838    if (input != null) {
19839      input = parseWeekday(input, this.localeData());
19840      return this.add(input - day, 'd');
19841    } else {
19842      return day;
19843    }
19844  }
19845
19846  function getSetLocaleDayOfWeek(input) {
19847    if (!this.isValid()) {
19848      return input != null ? this : NaN;
19849    }
19850
19851    var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
19852    return input == null ? weekday : this.add(input - weekday, 'd');
19853  }
19854
19855  function getSetISODayOfWeek(input) {
19856    if (!this.isValid()) {
19857      return input != null ? this : NaN;
19858    } // behaves the same as moment#day except
19859    // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
19860    // as a setter, sunday should belong to the previous week.
19861
19862
19863    if (input != null) {
19864      var weekday = parseIsoWeekday(input, this.localeData());
19865      return this.day(this.day() % 7 ? weekday : weekday - 7);
19866    } else {
19867      return this.day() || 7;
19868    }
19869  }
19870
19871  function weekdaysRegex(isStrict) {
19872    if (this._weekdaysParseExact) {
19873      if (!hasOwnProp(this, '_weekdaysRegex')) {
19874        computeWeekdaysParse.call(this);
19875      }
19876
19877      if (isStrict) {
19878        return this._weekdaysStrictRegex;
19879      } else {
19880        return this._weekdaysRegex;
19881      }
19882    } else {
19883      if (!hasOwnProp(this, '_weekdaysRegex')) {
19884        this._weekdaysRegex = defaultWeekdaysRegex;
19885      }
19886
19887      return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;
19888    }
19889  }
19890
19891  function weekdaysShortRegex(isStrict) {
19892    if (this._weekdaysParseExact) {
19893      if (!hasOwnProp(this, '_weekdaysRegex')) {
19894        computeWeekdaysParse.call(this);
19895      }
19896
19897      if (isStrict) {
19898        return this._weekdaysShortStrictRegex;
19899      } else {
19900        return this._weekdaysShortRegex;
19901      }
19902    } else {
19903      if (!hasOwnProp(this, '_weekdaysShortRegex')) {
19904        this._weekdaysShortRegex = defaultWeekdaysShortRegex;
19905      }
19906
19907      return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
19908    }
19909  }
19910
19911  function weekdaysMinRegex(isStrict) {
19912    if (this._weekdaysParseExact) {
19913      if (!hasOwnProp(this, '_weekdaysRegex')) {
19914        computeWeekdaysParse.call(this);
19915      }
19916
19917      if (isStrict) {
19918        return this._weekdaysMinStrictRegex;
19919      } else {
19920        return this._weekdaysMinRegex;
19921      }
19922    } else {
19923      if (!hasOwnProp(this, '_weekdaysMinRegex')) {
19924        this._weekdaysMinRegex = defaultWeekdaysMinRegex;
19925      }
19926
19927      return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
19928    }
19929  }
19930
19931  function computeWeekdaysParse() {
19932    function cmpLenRev(a, b) {
19933      return b.length - a.length;
19934    }
19935
19936    var minPieces = [],
19937        shortPieces = [],
19938        longPieces = [],
19939        mixedPieces = [],
19940        i,
19941        mom,
19942        minp,
19943        shortp,
19944        longp;
19945
19946    for (i = 0; i < 7; i++) {
19947      // make the regex if we don't have it already
19948      mom = createUTC([2000, 1]).day(i);
19949      minp = regexEscape(this.weekdaysMin(mom, ''));
19950      shortp = regexEscape(this.weekdaysShort(mom, ''));
19951      longp = regexEscape(this.weekdays(mom, ''));
19952      minPieces.push(minp);
19953      shortPieces.push(shortp);
19954      longPieces.push(longp);
19955      mixedPieces.push(minp);
19956      mixedPieces.push(shortp);
19957      mixedPieces.push(longp);
19958    } // Sorting makes sure if one weekday (or abbr) is a prefix of another it
19959    // will match the longer piece.
19960
19961
19962    minPieces.sort(cmpLenRev);
19963    shortPieces.sort(cmpLenRev);
19964    longPieces.sort(cmpLenRev);
19965    mixedPieces.sort(cmpLenRev);
19966    this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
19967    this._weekdaysShortRegex = this._weekdaysRegex;
19968    this._weekdaysMinRegex = this._weekdaysRegex;
19969    this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
19970    this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
19971    this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
19972  } // FORMATTING
19973
19974
19975  function hFormat() {
19976    return this.hours() % 12 || 12;
19977  }
19978
19979  function kFormat() {
19980    return this.hours() || 24;
19981  }
19982
19983  addFormatToken('H', ['HH', 2], 0, 'hour');
19984  addFormatToken('h', ['hh', 2], 0, hFormat);
19985  addFormatToken('k', ['kk', 2], 0, kFormat);
19986  addFormatToken('hmm', 0, 0, function () {
19987    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
19988  });
19989  addFormatToken('hmmss', 0, 0, function () {
19990    return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);
19991  });
19992  addFormatToken('Hmm', 0, 0, function () {
19993    return '' + this.hours() + zeroFill(this.minutes(), 2);
19994  });
19995  addFormatToken('Hmmss', 0, 0, function () {
19996    return '' + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);
19997  });
19998
19999  function meridiem(token, lowercase) {
20000    addFormatToken(token, 0, 0, function () {
20001      return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
20002    });
20003  }
20004
20005  meridiem('a', true);
20006  meridiem('A', false); // ALIASES
20007
20008  addUnitAlias('hour', 'h'); // PRIORITY
20009
20010  addUnitPriority('hour', 13); // PARSING
20011
20012  function matchMeridiem(isStrict, locale) {
20013    return locale._meridiemParse;
20014  }
20015
20016  addRegexToken('a', matchMeridiem);
20017  addRegexToken('A', matchMeridiem);
20018  addRegexToken('H', match1to2);
20019  addRegexToken('h', match1to2);
20020  addRegexToken('k', match1to2);
20021  addRegexToken('HH', match1to2, match2);
20022  addRegexToken('hh', match1to2, match2);
20023  addRegexToken('kk', match1to2, match2);
20024  addRegexToken('hmm', match3to4);
20025  addRegexToken('hmmss', match5to6);
20026  addRegexToken('Hmm', match3to4);
20027  addRegexToken('Hmmss', match5to6);
20028  addParseToken(['H', 'HH'], HOUR);
20029  addParseToken(['k', 'kk'], function (input, array, config) {
20030    var kInput = toInt(input);
20031    array[HOUR] = kInput === 24 ? 0 : kInput;
20032  });
20033  addParseToken(['a', 'A'], function (input, array, config) {
20034    config._isPm = config._locale.isPM(input);
20035    config._meridiem = input;
20036  });
20037  addParseToken(['h', 'hh'], function (input, array, config) {
20038    array[HOUR] = toInt(input);
20039    getParsingFlags(config).bigHour = true;
20040  });
20041  addParseToken('hmm', function (input, array, config) {
20042    var pos = input.length - 2;
20043    array[HOUR] = toInt(input.substr(0, pos));
20044    array[MINUTE] = toInt(input.substr(pos));
20045    getParsingFlags(config).bigHour = true;
20046  });
20047  addParseToken('hmmss', function (input, array, config) {
20048    var pos1 = input.length - 4,
20049        pos2 = input.length - 2;
20050    array[HOUR] = toInt(input.substr(0, pos1));
20051    array[MINUTE] = toInt(input.substr(pos1, 2));
20052    array[SECOND] = toInt(input.substr(pos2));
20053    getParsingFlags(config).bigHour = true;
20054  });
20055  addParseToken('Hmm', function (input, array, config) {
20056    var pos = input.length - 2;
20057    array[HOUR] = toInt(input.substr(0, pos));
20058    array[MINUTE] = toInt(input.substr(pos));
20059  });
20060  addParseToken('Hmmss', function (input, array, config) {
20061    var pos1 = input.length - 4,
20062        pos2 = input.length - 2;
20063    array[HOUR] = toInt(input.substr(0, pos1));
20064    array[MINUTE] = toInt(input.substr(pos1, 2));
20065    array[SECOND] = toInt(input.substr(pos2));
20066  }); // LOCALES
20067
20068  function localeIsPM(input) {
20069    // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
20070    // Using charAt should be more compatible.
20071    return (input + '').toLowerCase().charAt(0) === 'p';
20072  }
20073
20074  var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
20075      // Setting the hour should keep the time, because the user explicitly
20076  // specified which hour they want. So trying to maintain the same hour (in
20077  // a new timezone) makes sense. Adding/subtracting hours does not follow
20078  // this rule.
20079  getSetHour = makeGetSet('Hours', true);
20080
20081  function localeMeridiem(hours, minutes, isLower) {
20082    if (hours > 11) {
20083      return isLower ? 'pm' : 'PM';
20084    } else {
20085      return isLower ? 'am' : 'AM';
20086    }
20087  }
20088
20089  var baseConfig = {
20090    calendar: defaultCalendar,
20091    longDateFormat: defaultLongDateFormat,
20092    invalidDate: defaultInvalidDate,
20093    ordinal: defaultOrdinal,
20094    dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
20095    relativeTime: defaultRelativeTime,
20096    months: defaultLocaleMonths,
20097    monthsShort: defaultLocaleMonthsShort,
20098    week: defaultLocaleWeek,
20099    weekdays: defaultLocaleWeekdays,
20100    weekdaysMin: defaultLocaleWeekdaysMin,
20101    weekdaysShort: defaultLocaleWeekdaysShort,
20102    meridiemParse: defaultLocaleMeridiemParse
20103  }; // internal storage for locale config files
20104
20105  var locales = {},
20106      localeFamilies = {},
20107      globalLocale;
20108
20109  function commonPrefix(arr1, arr2) {
20110    var i,
20111        minl = Math.min(arr1.length, arr2.length);
20112
20113    for (i = 0; i < minl; i += 1) {
20114      if (arr1[i] !== arr2[i]) {
20115        return i;
20116      }
20117    }
20118
20119    return minl;
20120  }
20121
20122  function normalizeLocale(key) {
20123    return key ? key.toLowerCase().replace('_', '-') : key;
20124  } // pick the locale from the array
20125  // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
20126  // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
20127
20128
20129  function chooseLocale(names) {
20130    var i = 0,
20131        j,
20132        next,
20133        locale,
20134        split;
20135
20136    while (i < names.length) {
20137      split = normalizeLocale(names[i]).split('-');
20138      j = split.length;
20139      next = normalizeLocale(names[i + 1]);
20140      next = next ? next.split('-') : null;
20141
20142      while (j > 0) {
20143        locale = loadLocale(split.slice(0, j).join('-'));
20144
20145        if (locale) {
20146          return locale;
20147        }
20148
20149        if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {
20150          //the next array item is better than a shallower substring of this one
20151          break;
20152        }
20153
20154        j--;
20155      }
20156
20157      i++;
20158    }
20159
20160    return globalLocale;
20161  }
20162
20163  function isLocaleNameSane(name) {
20164    // Prevent names that look like filesystem paths, i.e contain '/' or '\'
20165    return name.match('^[^/\\\\]*$') != null;
20166  }
20167
20168  function loadLocale(name) {
20169    var oldLocale = null,
20170        aliasedRequire; // TODO: Find a better way to register and load all the locales in Node
20171
20172    if (locales[name] === undefined && typeof module !== 'undefined' && module && module.exports && isLocaleNameSane(name)) {
20173      try {
20174        oldLocale = globalLocale._abbr;
20175        aliasedRequire = require;
20176        __webpack_require__("../autobahn_client_core/node_modules/moment/locale sync recursive ^\\.\\/.*$")("./" + name);
20177        getSetGlobalLocale(oldLocale);
20178      } catch (e) {
20179        // mark as not found to avoid repeating expensive file require call causing high CPU
20180        // when trying to find en-US, en_US, en-us for every format call
20181        locales[name] = null; // null means not found
20182      }
20183    }
20184
20185    return locales[name];
20186  } // This function will load locale and then set the global locale.  If
20187  // no arguments are passed in, it will simply return the current global
20188  // locale key.
20189
20190
20191  function getSetGlobalLocale(key, values) {
20192    var data;
20193
20194    if (key) {
20195      if (isUndefined(values)) {
20196        data = getLocale(key);
20197      } else {
20198        data = defineLocale(key, values);
20199      }
20200
20201      if (data) {
20202        // moment.duration._locale = moment._locale = data;
20203        globalLocale = data;
20204      } else {
20205        if (typeof console !== 'undefined' && console.warn) {
20206          //warn user if arguments are passed but the locale could not be set
20207          console.warn('Locale ' + key + ' not found. Did you forget to load it?');
20208        }
20209      }
20210    }
20211
20212    return globalLocale._abbr;
20213  }
20214
20215  function defineLocale(name, config) {
20216    if (config !== null) {
20217      var locale,
20218          parentConfig = baseConfig;
20219      config.abbr = name;
20220
20221      if (locales[name] != null) {
20222        deprecateSimple('defineLocaleOverride', 'use moment.updateLocale(localeName, config) to change ' + 'an existing locale. moment.defineLocale(localeName, ' + 'config) should only be used for creating a new locale ' + 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
20223        parentConfig = locales[name]._config;
20224      } else if (config.parentLocale != null) {
20225        if (locales[config.parentLocale] != null) {
20226          parentConfig = locales[config.parentLocale]._config;
20227        } else {
20228          locale = loadLocale(config.parentLocale);
20229
20230          if (locale != null) {
20231            parentConfig = locale._config;
20232          } else {
20233            if (!localeFamilies[config.parentLocale]) {
20234              localeFamilies[config.parentLocale] = [];
20235            }
20236
20237            localeFamilies[config.parentLocale].push({
20238              name: name,
20239              config: config
20240            });
20241            return null;
20242          }
20243        }
20244      }
20245
20246      locales[name] = new Locale(mergeConfigs(parentConfig, config));
20247
20248      if (localeFamilies[name]) {
20249        localeFamilies[name].forEach(function (x) {
20250          defineLocale(x.name, x.config);
20251        });
20252      } // backwards compat for now: also set the locale
20253      // make sure we set the locale AFTER all child locales have been
20254      // created, so we won't end up with the child locale set.
20255
20256
20257      getSetGlobalLocale(name);
20258      return locales[name];
20259    } else {
20260      // useful for testing
20261      delete locales[name];
20262      return null;
20263    }
20264  }
20265
20266  function updateLocale(name, config) {
20267    if (config != null) {
20268      var locale,
20269          tmpLocale,
20270          parentConfig = baseConfig;
20271
20272      if (locales[name] != null && locales[name].parentLocale != null) {
20273        // Update existing child locale in-place to avoid memory-leaks
20274        locales[name].set(mergeConfigs(locales[name]._config, config));
20275      } else {
20276        // MERGE
20277        tmpLocale = loadLocale(name);
20278
20279        if (tmpLocale != null) {
20280          parentConfig = tmpLocale._config;
20281        }
20282
20283        config = mergeConfigs(parentConfig, config);
20284
20285        if (tmpLocale == null) {
20286          // updateLocale is called for creating a new locale
20287          // Set abbr so it will have a name (getters return
20288          // undefined otherwise).
20289          config.abbr = name;
20290        }
20291
20292        locale = new Locale(config);
20293        locale.parentLocale = locales[name];
20294        locales[name] = locale;
20295      } // backwards compat for now: also set the locale
20296
20297
20298      getSetGlobalLocale(name);
20299    } else {
20300      // pass null for config to unupdate, useful for tests
20301      if (locales[name] != null) {
20302        if (locales[name].parentLocale != null) {
20303          locales[name] = locales[name].parentLocale;
20304
20305          if (name === getSetGlobalLocale()) {
20306            getSetGlobalLocale(name);
20307          }
20308        } else if (locales[name] != null) {
20309          delete locales[name];
20310        }
20311      }
20312    }
20313
20314    return locales[name];
20315  } // returns locale data
20316
20317
20318  function getLocale(key) {
20319    var locale;
20320
20321    if (key && key._locale && key._locale._abbr) {
20322      key = key._locale._abbr;
20323    }
20324
20325    if (!key) {
20326      return globalLocale;
20327    }
20328
20329    if (!isArray(key)) {
20330      //short-circuit everything else
20331      locale = loadLocale(key);
20332
20333      if (locale) {
20334        return locale;
20335      }
20336
20337      key = [key];
20338    }
20339
20340    return chooseLocale(key);
20341  }
20342
20343  function listLocales() {
20344    return keys(locales);
20345  }
20346
20347  function checkOverflow(m) {
20348    var overflow,
20349        a = m._a;
20350
20351    if (a && getParsingFlags(m).overflow === -2) {
20352      overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;
20353
20354      if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
20355        overflow = DATE;
20356      }
20357
20358      if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
20359        overflow = WEEK;
20360      }
20361
20362      if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
20363        overflow = WEEKDAY;
20364      }
20365
20366      getParsingFlags(m).overflow = overflow;
20367    }
20368
20369    return m;
20370  } // iso 8601 regex
20371  // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)
20372
20373
20374  var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
20375      basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
20376      tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
20377      isoDates = [['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/], ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/], ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/], ['GGGG-[W]WW', /\d{4}-W\d\d/, false], ['YYYY-DDD', /\d{4}-\d{3}/], ['YYYY-MM', /\d{4}-\d\d/, false], ['YYYYYYMMDD', /[+-]\d{10}/], ['YYYYMMDD', /\d{8}/], ['GGGG[W]WWE', /\d{4}W\d{3}/], ['GGGG[W]WW', /\d{4}W\d{2}/, false], ['YYYYDDD', /\d{7}/], ['YYYYMM', /\d{6}/, false], ['YYYY', /\d{4}/, false]],
20378      // iso time formats and regexes
20379  isoTimes = [['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/], ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/], ['HH:mm:ss', /\d\d:\d\d:\d\d/], ['HH:mm', /\d\d:\d\d/], ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/], ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/], ['HHmmss', /\d\d\d\d\d\d/], ['HHmm', /\d\d\d\d/], ['HH', /\d\d/]],
20380      aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
20381      // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
20382  rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
20383      obsOffsets = {
20384    UT: 0,
20385    GMT: 0,
20386    EDT: -4 * 60,
20387    EST: -5 * 60,
20388    CDT: -5 * 60,
20389    CST: -6 * 60,
20390    MDT: -6 * 60,
20391    MST: -7 * 60,
20392    PDT: -7 * 60,
20393    PST: -8 * 60
20394  }; // date from iso format
20395
20396  function configFromISO(config) {
20397    var i,
20398        l,
20399        string = config._i,
20400        match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
20401        allowTime,
20402        dateFormat,
20403        timeFormat,
20404        tzFormat,
20405        isoDatesLen = isoDates.length,
20406        isoTimesLen = isoTimes.length;
20407
20408    if (match) {
20409      getParsingFlags(config).iso = true;
20410
20411      for (i = 0, l = isoDatesLen; i < l; i++) {
20412        if (isoDates[i][1].exec(match[1])) {
20413          dateFormat = isoDates[i][0];
20414          allowTime = isoDates[i][2] !== false;
20415          break;
20416        }
20417      }
20418
20419      if (dateFormat == null) {
20420        config._isValid = false;
20421        return;
20422      }
20423
20424      if (match[3]) {
20425        for (i = 0, l = isoTimesLen; i < l; i++) {
20426          if (isoTimes[i][1].exec(match[3])) {
20427            // match[2] should be 'T' or space
20428            timeFormat = (match[2] || ' ') + isoTimes[i][0];
20429            break;
20430          }
20431        }
20432
20433        if (timeFormat == null) {
20434          config._isValid = false;
20435          return;
20436        }
20437      }
20438
20439      if (!allowTime && timeFormat != null) {
20440        config._isValid = false;
20441        return;
20442      }
20443
20444      if (match[4]) {
20445        if (tzRegex.exec(match[4])) {
20446          tzFormat = 'Z';
20447        } else {
20448          config._isValid = false;
20449          return;
20450        }
20451      }
20452
20453      config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
20454      configFromStringAndFormat(config);
20455    } else {
20456      config._isValid = false;
20457    }
20458  }
20459
20460  function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
20461    var result = [untruncateYear(yearStr), defaultLocaleMonthsShort.indexOf(monthStr), parseInt(dayStr, 10), parseInt(hourStr, 10), parseInt(minuteStr, 10)];
20462
20463    if (secondStr) {
20464      result.push(parseInt(secondStr, 10));
20465    }
20466
20467    return result;
20468  }
20469
20470  function untruncateYear(yearStr) {
20471    var year = parseInt(yearStr, 10);
20472
20473    if (year <= 49) {
20474      return 2000 + year;
20475    } else if (year <= 999) {
20476      return 1900 + year;
20477    }
20478
20479    return year;
20480  }
20481
20482  function preprocessRFC2822(s) {
20483    // Remove comments and folding whitespace and replace multiple-spaces with a single space
20484    return s.replace(/\([^()]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
20485  }
20486
20487  function checkWeekday(weekdayStr, parsedInput, config) {
20488    if (weekdayStr) {
20489      // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
20490      var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
20491          weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
20492
20493      if (weekdayProvided !== weekdayActual) {
20494        getParsingFlags(config).weekdayMismatch = true;
20495        config._isValid = false;
20496        return false;
20497      }
20498    }
20499
20500    return true;
20501  }
20502
20503  function calculateOffset(obsOffset, militaryOffset, numOffset) {
20504    if (obsOffset) {
20505      return obsOffsets[obsOffset];
20506    } else if (militaryOffset) {
20507      // the only allowed military tz is Z
20508      return 0;
20509    } else {
20510      var hm = parseInt(numOffset, 10),
20511          m = hm % 100,
20512          h = (hm - m) / 100;
20513      return h * 60 + m;
20514    }
20515  } // date and time from ref 2822 format
20516
20517
20518  function configFromRFC2822(config) {
20519    var match = rfc2822.exec(preprocessRFC2822(config._i)),
20520        parsedArray;
20521
20522    if (match) {
20523      parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
20524
20525      if (!checkWeekday(match[1], parsedArray, config)) {
20526        return;
20527      }
20528
20529      config._a = parsedArray;
20530      config._tzm = calculateOffset(match[8], match[9], match[10]);
20531      config._d = createUTCDate.apply(null, config._a);
20532
20533      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
20534
20535      getParsingFlags(config).rfc2822 = true;
20536    } else {
20537      config._isValid = false;
20538    }
20539  } // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
20540
20541
20542  function configFromString(config) {
20543    var matched = aspNetJsonRegex.exec(config._i);
20544
20545    if (matched !== null) {
20546      config._d = new Date(+matched[1]);
20547      return;
20548    }
20549
20550    configFromISO(config);
20551
20552    if (config._isValid === false) {
20553      delete config._isValid;
20554    } else {
20555      return;
20556    }
20557
20558    configFromRFC2822(config);
20559
20560    if (config._isValid === false) {
20561      delete config._isValid;
20562    } else {
20563      return;
20564    }
20565
20566    if (config._strict) {
20567      config._isValid = false;
20568    } else {
20569      // Final attempt, use Input Fallback
20570      hooks.createFromInputFallback(config);
20571    }
20572  }
20573
20574  hooks.createFromInputFallback = deprecate('value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' + 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' + 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.', function (config) {
20575    config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
20576  }); // Pick the first defined of two or three arguments.
20577
20578  function defaults(a, b, c) {
20579    if (a != null) {
20580      return a;
20581    }
20582
20583    if (b != null) {
20584      return b;
20585    }
20586
20587    return c;
20588  }
20589
20590  function currentDateArray(config) {
20591    // hooks is actually the exported moment object
20592    var nowValue = new Date(hooks.now());
20593
20594    if (config._useUTC) {
20595      return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
20596    }
20597
20598    return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
20599  } // convert an array to a date.
20600  // the array should mirror the parameters below
20601  // note: all values past the year are optional and will default to the lowest possible value.
20602  // [year, month, day , hour, minute, second, millisecond]
20603
20604
20605  function configFromArray(config) {
20606    var i,
20607        date,
20608        input = [],
20609        currentDate,
20610        expectedWeekday,
20611        yearToUse;
20612
20613    if (config._d) {
20614      return;
20615    }
20616
20617    currentDate = currentDateArray(config); //compute day of the year from weeks and weekdays
20618
20619    if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
20620      dayOfYearFromWeekInfo(config);
20621    } //if the day of the year is set, figure out what it is
20622
20623
20624    if (config._dayOfYear != null) {
20625      yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
20626
20627      if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
20628        getParsingFlags(config)._overflowDayOfYear = true;
20629      }
20630
20631      date = createUTCDate(yearToUse, 0, config._dayOfYear);
20632      config._a[MONTH] = date.getUTCMonth();
20633      config._a[DATE] = date.getUTCDate();
20634    } // Default to current date.
20635    // * if no year, month, day of month are given, default to today
20636    // * if day of month is given, default month and year
20637    // * if month is given, default only year
20638    // * if year is given, don't default anything
20639
20640
20641    for (i = 0; i < 3 && config._a[i] == null; ++i) {
20642      config._a[i] = input[i] = currentDate[i];
20643    } // Zero out whatever was not defaulted, including time
20644
20645
20646    for (; i < 7; i++) {
20647      config._a[i] = input[i] = config._a[i] == null ? i === 2 ? 1 : 0 : config._a[i];
20648    } // Check for 24:00:00.000
20649
20650
20651    if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {
20652      config._nextDay = true;
20653      config._a[HOUR] = 0;
20654    }
20655
20656    config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
20657    expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay(); // Apply timezone offset from input. The actual utcOffset can be changed
20658    // with parseZone.
20659
20660    if (config._tzm != null) {
20661      config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
20662    }
20663
20664    if (config._nextDay) {
20665      config._a[HOUR] = 24;
20666    } // check for mismatching day of week
20667
20668
20669    if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {
20670      getParsingFlags(config).weekdayMismatch = true;
20671    }
20672  }
20673
20674  function dayOfYearFromWeekInfo(config) {
20675    var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
20676    w = config._w;
20677
20678    if (w.GG != null || w.W != null || w.E != null) {
20679      dow = 1;
20680      doy = 4; // TODO: We need to take the current isoWeekYear, but that depends on
20681      // how we interpret now (local, utc, fixed offset). So create
20682      // a now version of current config (take local/utc/offset flags, and
20683      // create now).
20684
20685      weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
20686      week = defaults(w.W, 1);
20687      weekday = defaults(w.E, 1);
20688
20689      if (weekday < 1 || weekday > 7) {
20690        weekdayOverflow = true;
20691      }
20692    } else {
20693      dow = config._locale._week.dow;
20694      doy = config._locale._week.doy;
20695      curWeek = weekOfYear(createLocal(), dow, doy);
20696      weekYear = defaults(w.gg, config._a[YEAR], curWeek.year); // Default to current week.
20697
20698      week = defaults(w.w, curWeek.week);
20699
20700      if (w.d != null) {
20701        // weekday -- low day numbers are considered next week
20702        weekday = w.d;
20703
20704        if (weekday < 0 || weekday > 6) {
20705          weekdayOverflow = true;
20706        }
20707      } else if (w.e != null) {
20708        // local weekday -- counting starts from beginning of week
20709        weekday = w.e + dow;
20710
20711        if (w.e < 0 || w.e > 6) {
20712          weekdayOverflow = true;
20713        }
20714      } else {
20715        // default to beginning of week
20716        weekday = dow;
20717      }
20718    }
20719
20720    if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
20721      getParsingFlags(config)._overflowWeeks = true;
20722    } else if (weekdayOverflow != null) {
20723      getParsingFlags(config)._overflowWeekday = true;
20724    } else {
20725      temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
20726      config._a[YEAR] = temp.year;
20727      config._dayOfYear = temp.dayOfYear;
20728    }
20729  } // constant that refers to the ISO standard
20730
20731
20732  hooks.ISO_8601 = function () {}; // constant that refers to the RFC 2822 form
20733
20734
20735  hooks.RFC_2822 = function () {}; // date from string and format string
20736
20737
20738  function configFromStringAndFormat(config) {
20739    // TODO: Move this to another part of the creation flow to prevent circular deps
20740    if (config._f === hooks.ISO_8601) {
20741      configFromISO(config);
20742      return;
20743    }
20744
20745    if (config._f === hooks.RFC_2822) {
20746      configFromRFC2822(config);
20747      return;
20748    }
20749
20750    config._a = [];
20751    getParsingFlags(config).empty = true; // This array is used to make a Date, either with `new Date` or `Date.UTC`
20752
20753    var string = '' + config._i,
20754        i,
20755        parsedInput,
20756        tokens,
20757        token,
20758        skipped,
20759        stringLength = string.length,
20760        totalParsedInputLength = 0,
20761        era,
20762        tokenLen;
20763    tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
20764    tokenLen = tokens.length;
20765
20766    for (i = 0; i < tokenLen; i++) {
20767      token = tokens[i];
20768      parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
20769
20770      if (parsedInput) {
20771        skipped = string.substr(0, string.indexOf(parsedInput));
20772
20773        if (skipped.length > 0) {
20774          getParsingFlags(config).unusedInput.push(skipped);
20775        }
20776
20777        string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
20778        totalParsedInputLength += parsedInput.length;
20779      } // don't parse if it's not a known token
20780
20781
20782      if (formatTokenFunctions[token]) {
20783        if (parsedInput) {
20784          getParsingFlags(config).empty = false;
20785        } else {
20786          getParsingFlags(config).unusedTokens.push(token);
20787        }
20788
20789        addTimeToArrayFromToken(token, parsedInput, config);
20790      } else if (config._strict && !parsedInput) {
20791        getParsingFlags(config).unusedTokens.push(token);
20792      }
20793    } // add remaining unparsed input length to the string
20794
20795
20796    getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
20797
20798    if (string.length > 0) {
20799      getParsingFlags(config).unusedInput.push(string);
20800    } // clear _12h flag if hour is <= 12
20801
20802
20803    if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {
20804      getParsingFlags(config).bigHour = undefined;
20805    }
20806
20807    getParsingFlags(config).parsedDateParts = config._a.slice(0);
20808    getParsingFlags(config).meridiem = config._meridiem; // handle meridiem
20809
20810    config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem); // handle era
20811
20812    era = getParsingFlags(config).era;
20813
20814    if (era !== null) {
20815      config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
20816    }
20817
20818    configFromArray(config);
20819    checkOverflow(config);
20820  }
20821
20822  function meridiemFixWrap(locale, hour, meridiem) {
20823    var isPm;
20824
20825    if (meridiem == null) {
20826      // nothing to do
20827      return hour;
20828    }
20829
20830    if (locale.meridiemHour != null) {
20831      return locale.meridiemHour(hour, meridiem);
20832    } else if (locale.isPM != null) {
20833      // Fallback
20834      isPm = locale.isPM(meridiem);
20835
20836      if (isPm && hour < 12) {
20837        hour += 12;
20838      }
20839
20840      if (!isPm && hour === 12) {
20841        hour = 0;
20842      }
20843
20844      return hour;
20845    } else {
20846      // this is not supposed to happen
20847      return hour;
20848    }
20849  } // date from string and array of format strings
20850
20851
20852  function configFromStringAndArray(config) {
20853    var tempConfig,
20854        bestMoment,
20855        scoreToBeat,
20856        i,
20857        currentScore,
20858        validFormatFound,
20859        bestFormatIsValid = false,
20860        configfLen = config._f.length;
20861
20862    if (configfLen === 0) {
20863      getParsingFlags(config).invalidFormat = true;
20864      config._d = new Date(NaN);
20865      return;
20866    }
20867
20868    for (i = 0; i < configfLen; i++) {
20869      currentScore = 0;
20870      validFormatFound = false;
20871      tempConfig = copyConfig({}, config);
20872
20873      if (config._useUTC != null) {
20874        tempConfig._useUTC = config._useUTC;
20875      }
20876
20877      tempConfig._f = config._f[i];
20878      configFromStringAndFormat(tempConfig);
20879
20880      if (isValid(tempConfig)) {
20881        validFormatFound = true;
20882      } // if there is any input that was not parsed add a penalty for that format
20883
20884
20885      currentScore += getParsingFlags(tempConfig).charsLeftOver; //or tokens
20886
20887      currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
20888      getParsingFlags(tempConfig).score = currentScore;
20889
20890      if (!bestFormatIsValid) {
20891        if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {
20892          scoreToBeat = currentScore;
20893          bestMoment = tempConfig;
20894
20895          if (validFormatFound) {
20896            bestFormatIsValid = true;
20897          }
20898        }
20899      } else {
20900        if (currentScore < scoreToBeat) {
20901          scoreToBeat = currentScore;
20902          bestMoment = tempConfig;
20903        }
20904      }
20905    }
20906
20907    extend(config, bestMoment || tempConfig);
20908  }
20909
20910  function configFromObject(config) {
20911    if (config._d) {
20912      return;
20913    }
20914
20915    var i = normalizeObjectUnits(config._i),
20916        dayOrDate = i.day === undefined ? i.date : i.day;
20917    config._a = map([i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond], function (obj) {
20918      return obj && parseInt(obj, 10);
20919    });
20920    configFromArray(config);
20921  }
20922
20923  function createFromConfig(config) {
20924    var res = new Moment(checkOverflow(prepareConfig(config)));
20925
20926    if (res._nextDay) {
20927      // Adding is smart enough around DST
20928      res.add(1, 'd');
20929      res._nextDay = undefined;
20930    }
20931
20932    return res;
20933  }
20934
20935  function prepareConfig(config) {
20936    var input = config._i,
20937        format = config._f;
20938    config._locale = config._locale || getLocale(config._l);
20939
20940    if (input === null || format === undefined && input === '') {
20941      return createInvalid({
20942        nullInput: true
20943      });
20944    }
20945
20946    if (typeof input === 'string') {
20947      config._i = input = config._locale.preparse(input);
20948    }
20949
20950    if (isMoment(input)) {
20951      return new Moment(checkOverflow(input));
20952    } else if (isDate(input)) {
20953      config._d = input;
20954    } else if (isArray(format)) {
20955      configFromStringAndArray(config);
20956    } else if (format) {
20957      configFromStringAndFormat(config);
20958    } else {
20959      configFromInput(config);
20960    }
20961
20962    if (!isValid(config)) {
20963      config._d = null;
20964    }
20965
20966    return config;
20967  }
20968
20969  function configFromInput(config) {
20970    var input = config._i;
20971
20972    if (isUndefined(input)) {
20973      config._d = new Date(hooks.now());
20974    } else if (isDate(input)) {
20975      config._d = new Date(input.valueOf());
20976    } else if (typeof input === 'string') {
20977      configFromString(config);
20978    } else if (isArray(input)) {
20979      config._a = map(input.slice(0), function (obj) {
20980        return parseInt(obj, 10);
20981      });
20982      configFromArray(config);
20983    } else if (isObject(input)) {
20984      configFromObject(config);
20985    } else if (isNumber(input)) {
20986      // from milliseconds
20987      config._d = new Date(input);
20988    } else {
20989      hooks.createFromInputFallback(config);
20990    }
20991  }
20992
20993  function createLocalOrUTC(input, format, locale, strict, isUTC) {
20994    var c = {};
20995
20996    if (format === true || format === false) {
20997      strict = format;
20998      format = undefined;
20999    }
21000
21001    if (locale === true || locale === false) {
21002      strict = locale;
21003      locale = undefined;
21004    }
21005
21006    if (isObject(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {
21007      input = undefined;
21008    } // object construction must be done this way.
21009    // https://github.com/moment/moment/issues/1423
21010
21011
21012    c._isAMomentObject = true;
21013    c._useUTC = c._isUTC = isUTC;
21014    c._l = locale;
21015    c._i = input;
21016    c._f = format;
21017    c._strict = strict;
21018    return createFromConfig(c);
21019  }
21020
21021  function createLocal(input, format, locale, strict) {
21022    return createLocalOrUTC(input, format, locale, strict, false);
21023  }
21024
21025  var prototypeMin = deprecate('moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/', function () {
21026    var other = createLocal.apply(null, arguments);
21027
21028    if (this.isValid() && other.isValid()) {
21029      return other < this ? this : other;
21030    } else {
21031      return createInvalid();
21032    }
21033  }),
21034      prototypeMax = deprecate('moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/', function () {
21035    var other = createLocal.apply(null, arguments);
21036
21037    if (this.isValid() && other.isValid()) {
21038      return other > this ? this : other;
21039    } else {
21040      return createInvalid();
21041    }
21042  }); // Pick a moment m from moments so that m[fn](other) is true for all
21043  // other. This relies on the function fn to be transitive.
21044  //
21045  // moments should either be an array of moment objects or an array, whose
21046  // first element is an array of moment objects.
21047
21048  function pickBy(fn, moments) {
21049    var res, i;
21050
21051    if (moments.length === 1 && isArray(moments[0])) {
21052      moments = moments[0];
21053    }
21054
21055    if (!moments.length) {
21056      return createLocal();
21057    }
21058
21059    res = moments[0];
21060
21061    for (i = 1; i < moments.length; ++i) {
21062      if (!moments[i].isValid() || moments[i][fn](res)) {
21063        res = moments[i];
21064      }
21065    }
21066
21067    return res;
21068  } // TODO: Use [].sort instead?
21069
21070
21071  function min() {
21072    var args = [].slice.call(arguments, 0);
21073    return pickBy('isBefore', args);
21074  }
21075
21076  function max() {
21077    var args = [].slice.call(arguments, 0);
21078    return pickBy('isAfter', args);
21079  }
21080
21081  var now = function now() {
21082    return Date.now ? Date.now() : +new Date();
21083  };
21084
21085  var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
21086
21087  function isDurationValid(m) {
21088    var key,
21089        unitHasDecimal = false,
21090        i,
21091        orderLen = ordering.length;
21092
21093    for (key in m) {
21094      if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
21095        return false;
21096      }
21097    }
21098
21099    for (i = 0; i < orderLen; ++i) {
21100      if (m[ordering[i]]) {
21101        if (unitHasDecimal) {
21102          return false; // only allow non-integers for smallest unit
21103        }
21104
21105        if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
21106          unitHasDecimal = true;
21107        }
21108      }
21109    }
21110
21111    return true;
21112  }
21113
21114  function isValid$1() {
21115    return this._isValid;
21116  }
21117
21118  function createInvalid$1() {
21119    return createDuration(NaN);
21120  }
21121
21122  function Duration(duration) {
21123    var normalizedInput = normalizeObjectUnits(duration),
21124        years = normalizedInput.year || 0,
21125        quarters = normalizedInput.quarter || 0,
21126        months = normalizedInput.month || 0,
21127        weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
21128        days = normalizedInput.day || 0,
21129        hours = normalizedInput.hour || 0,
21130        minutes = normalizedInput.minute || 0,
21131        seconds = normalizedInput.second || 0,
21132        milliseconds = normalizedInput.millisecond || 0;
21133    this._isValid = isDurationValid(normalizedInput); // representation for dateAddRemove
21134
21135    this._milliseconds = +milliseconds + seconds * 1e3 + // 1000
21136    minutes * 6e4 + // 1000 * 60
21137    hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
21138    // Because of dateAddRemove treats 24 hours as different from a
21139    // day when working around DST, we need to store them separately
21140
21141    this._days = +days + weeks * 7; // It is impossible to translate months into days without knowing
21142    // which months you are are talking about, so we have to store
21143    // it separately.
21144
21145    this._months = +months + quarters * 3 + years * 12;
21146    this._data = {};
21147    this._locale = getLocale();
21148
21149    this._bubble();
21150  }
21151
21152  function isDuration(obj) {
21153    return obj instanceof Duration;
21154  }
21155
21156  function absRound(number) {
21157    if (number < 0) {
21158      return Math.round(-1 * number) * -1;
21159    } else {
21160      return Math.round(number);
21161    }
21162  } // compare two arrays, return the number of differences
21163
21164
21165  function compareArrays(array1, array2, dontConvert) {
21166    var len = Math.min(array1.length, array2.length),
21167        lengthDiff = Math.abs(array1.length - array2.length),
21168        diffs = 0,
21169        i;
21170
21171    for (i = 0; i < len; i++) {
21172      if (dontConvert && array1[i] !== array2[i] || !dontConvert && toInt(array1[i]) !== toInt(array2[i])) {
21173        diffs++;
21174      }
21175    }
21176
21177    return diffs + lengthDiff;
21178  } // FORMATTING
21179
21180
21181  function offset(token, separator) {
21182    addFormatToken(token, 0, 0, function () {
21183      var offset = this.utcOffset(),
21184          sign = '+';
21185
21186      if (offset < 0) {
21187        offset = -offset;
21188        sign = '-';
21189      }
21190
21191      return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~offset % 60, 2);
21192    });
21193  }
21194
21195  offset('Z', ':');
21196  offset('ZZ', ''); // PARSING
21197
21198  addRegexToken('Z', matchShortOffset);
21199  addRegexToken('ZZ', matchShortOffset);
21200  addParseToken(['Z', 'ZZ'], function (input, array, config) {
21201    config._useUTC = true;
21202    config._tzm = offsetFromString(matchShortOffset, input);
21203  }); // HELPERS
21204  // timezone chunker
21205  // '+10:00' > ['10',  '00']
21206  // '-1530'  > ['-15', '30']
21207
21208  var chunkOffset = /([\+\-]|\d\d)/gi;
21209
21210  function offsetFromString(matcher, string) {
21211    var matches = (string || '').match(matcher),
21212        chunk,
21213        parts,
21214        minutes;
21215
21216    if (matches === null) {
21217      return null;
21218    }
21219
21220    chunk = matches[matches.length - 1] || [];
21221    parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
21222    minutes = +(parts[1] * 60) + toInt(parts[2]);
21223    return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
21224  } // Return a moment from input, that is local/utc/zone equivalent to model.
21225
21226
21227  function cloneWithOffset(input, model) {
21228    var res, diff;
21229
21230    if (model._isUTC) {
21231      res = model.clone();
21232      diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf(); // Use low-level api, because this fn is low-level api.
21233
21234      res._d.setTime(res._d.valueOf() + diff);
21235
21236      hooks.updateOffset(res, false);
21237      return res;
21238    } else {
21239      return createLocal(input).local();
21240    }
21241  }
21242
21243  function getDateOffset(m) {
21244    // On Firefox.24 Date#getTimezoneOffset returns a floating point.
21245    // https://github.com/moment/moment/pull/1871
21246    return -Math.round(m._d.getTimezoneOffset());
21247  } // HOOKS
21248  // This function will be called whenever a moment is mutated.
21249  // It is intended to keep the offset in sync with the timezone.
21250
21251
21252  hooks.updateOffset = function () {}; // MOMENTS
21253  // keepLocalTime = true means only change the timezone, without
21254  // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
21255  // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
21256  // +0200, so we adjust the time as needed, to be valid.
21257  //
21258  // Keeping the time actually adds/subtracts (one hour)
21259  // from the actual represented time. That is why we call updateOffset
21260  // a second time. In case it wants us to change the offset again
21261  // _changeInProgress == true case, then we have to adjust, because
21262  // there is no such time in the given timezone.
21263
21264
21265  function getSetOffset(input, keepLocalTime, keepMinutes) {
21266    var offset = this._offset || 0,
21267        localAdjust;
21268
21269    if (!this.isValid()) {
21270      return input != null ? this : NaN;
21271    }
21272
21273    if (input != null) {
21274      if (typeof input === 'string') {
21275        input = offsetFromString(matchShortOffset, input);
21276
21277        if (input === null) {
21278          return this;
21279        }
21280      } else if (Math.abs(input) < 16 && !keepMinutes) {
21281        input = input * 60;
21282      }
21283
21284      if (!this._isUTC && keepLocalTime) {
21285        localAdjust = getDateOffset(this);
21286      }
21287
21288      this._offset = input;
21289      this._isUTC = true;
21290
21291      if (localAdjust != null) {
21292        this.add(localAdjust, 'm');
21293      }
21294
21295      if (offset !== input) {
21296        if (!keepLocalTime || this._changeInProgress) {
21297          addSubtract(this, createDuration(input - offset, 'm'), 1, false);
21298        } else if (!this._changeInProgress) {
21299          this._changeInProgress = true;
21300          hooks.updateOffset(this, true);
21301          this._changeInProgress = null;
21302        }
21303      }
21304
21305      return this;
21306    } else {
21307      return this._isUTC ? offset : getDateOffset(this);
21308    }
21309  }
21310
21311  function getSetZone(input, keepLocalTime) {
21312    if (input != null) {
21313      if (typeof input !== 'string') {
21314        input = -input;
21315      }
21316
21317      this.utcOffset(input, keepLocalTime);
21318      return this;
21319    } else {
21320      return -this.utcOffset();
21321    }
21322  }
21323
21324  function setOffsetToUTC(keepLocalTime) {
21325    return this.utcOffset(0, keepLocalTime);
21326  }
21327
21328  function setOffsetToLocal(keepLocalTime) {
21329    if (this._isUTC) {
21330      this.utcOffset(0, keepLocalTime);
21331      this._isUTC = false;
21332
21333      if (keepLocalTime) {
21334        this.subtract(getDateOffset(this), 'm');
21335      }
21336    }
21337
21338    return this;
21339  }
21340
21341  function setOffsetToParsedOffset() {
21342    if (this._tzm != null) {
21343      this.utcOffset(this._tzm, false, true);
21344    } else if (typeof this._i === 'string') {
21345      var tZone = offsetFromString(matchOffset, this._i);
21346
21347      if (tZone != null) {
21348        this.utcOffset(tZone);
21349      } else {
21350        this.utcOffset(0, true);
21351      }
21352    }
21353
21354    return this;
21355  }
21356
21357  function hasAlignedHourOffset(input) {
21358    if (!this.isValid()) {
21359      return false;
21360    }
21361
21362    input = input ? createLocal(input).utcOffset() : 0;
21363    return (this.utcOffset() - input) % 60 === 0;
21364  }
21365
21366  function isDaylightSavingTime() {
21367    return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();
21368  }
21369
21370  function isDaylightSavingTimeShifted() {
21371    if (!isUndefined(this._isDSTShifted)) {
21372      return this._isDSTShifted;
21373    }
21374
21375    var c = {},
21376        other;
21377    copyConfig(c, this);
21378    c = prepareConfig(c);
21379
21380    if (c._a) {
21381      other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
21382      this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;
21383    } else {
21384      this._isDSTShifted = false;
21385    }
21386
21387    return this._isDSTShifted;
21388  }
21389
21390  function isLocal() {
21391    return this.isValid() ? !this._isUTC : false;
21392  }
21393
21394  function isUtcOffset() {
21395    return this.isValid() ? this._isUTC : false;
21396  }
21397
21398  function isUtc() {
21399    return this.isValid() ? this._isUTC && this._offset === 0 : false;
21400  } // ASP.NET json date format regex
21401
21402
21403  var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
21404      // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
21405  // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
21406  // and further modified to allow for strings containing both week and day
21407  isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
21408
21409  function createDuration(input, key) {
21410    var duration = input,
21411        // matching against regexp is expensive, do it on demand
21412    match = null,
21413        sign,
21414        ret,
21415        diffRes;
21416
21417    if (isDuration(input)) {
21418      duration = {
21419        ms: input._milliseconds,
21420        d: input._days,
21421        M: input._months
21422      };
21423    } else if (isNumber(input) || !isNaN(+input)) {
21424      duration = {};
21425
21426      if (key) {
21427        duration[key] = +input;
21428      } else {
21429        duration.milliseconds = +input;
21430      }
21431    } else if (match = aspNetRegex.exec(input)) {
21432      sign = match[1] === '-' ? -1 : 1;
21433      duration = {
21434        y: 0,
21435        d: toInt(match[DATE]) * sign,
21436        h: toInt(match[HOUR]) * sign,
21437        m: toInt(match[MINUTE]) * sign,
21438        s: toInt(match[SECOND]) * sign,
21439        ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
21440
21441      };
21442    } else if (match = isoRegex.exec(input)) {
21443      sign = match[1] === '-' ? -1 : 1;
21444      duration = {
21445        y: parseIso(match[2], sign),
21446        M: parseIso(match[3], sign),
21447        w: parseIso(match[4], sign),
21448        d: parseIso(match[5], sign),
21449        h: parseIso(match[6], sign),
21450        m: parseIso(match[7], sign),
21451        s: parseIso(match[8], sign)
21452      };
21453    } else if (duration == null) {
21454      // checks for null or undefined
21455      duration = {};
21456    } else if (_typeof(duration) === 'object' && ('from' in duration || 'to' in duration)) {
21457      diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
21458      duration = {};
21459      duration.ms = diffRes.milliseconds;
21460      duration.M = diffRes.months;
21461    }
21462
21463    ret = new Duration(duration);
21464
21465    if (isDuration(input) && hasOwnProp(input, '_locale')) {
21466      ret._locale = input._locale;
21467    }
21468
21469    if (isDuration(input) && hasOwnProp(input, '_isValid')) {
21470      ret._isValid = input._isValid;
21471    }
21472
21473    return ret;
21474  }
21475
21476  createDuration.fn = Duration.prototype;
21477  createDuration.invalid = createInvalid$1;
21478
21479  function parseIso(inp, sign) {
21480    // We'd normally use ~~inp for this, but unfortunately it also
21481    // converts floats to ints.
21482    // inp may be undefined, so careful calling replace on it.
21483    var res = inp && parseFloat(inp.replace(',', '.')); // apply sign while we're at it
21484
21485    return (isNaN(res) ? 0 : res) * sign;
21486  }
21487
21488  function positiveMomentsDifference(base, other) {
21489    var res = {};
21490    res.months = other.month() - base.month() + (other.year() - base.year()) * 12;
21491
21492    if (base.clone().add(res.months, 'M').isAfter(other)) {
21493      --res.months;
21494    }
21495
21496    res.milliseconds = +other - +base.clone().add(res.months, 'M');
21497    return res;
21498  }
21499
21500  function momentsDifference(base, other) {
21501    var res;
21502
21503    if (!(base.isValid() && other.isValid())) {
21504      return {
21505        milliseconds: 0,
21506        months: 0
21507      };
21508    }
21509
21510    other = cloneWithOffset(other, base);
21511
21512    if (base.isBefore(other)) {
21513      res = positiveMomentsDifference(base, other);
21514    } else {
21515      res = positiveMomentsDifference(other, base);
21516      res.milliseconds = -res.milliseconds;
21517      res.months = -res.months;
21518    }
21519
21520    return res;
21521  } // TODO: remove 'name' arg after deprecation is removed
21522
21523
21524  function createAdder(direction, name) {
21525    return function (val, period) {
21526      var dur, tmp; //invert the arguments, but complain about it
21527
21528      if (period !== null && !isNaN(+period)) {
21529        deprecateSimple(name, 'moment().' + name + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' + 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
21530        tmp = val;
21531        val = period;
21532        period = tmp;
21533      }
21534
21535      dur = createDuration(val, period);
21536      addSubtract(this, dur, direction);
21537      return this;
21538    };
21539  }
21540
21541  function addSubtract(mom, duration, isAdding, updateOffset) {
21542    var milliseconds = duration._milliseconds,
21543        days = absRound(duration._days),
21544        months = absRound(duration._months);
21545
21546    if (!mom.isValid()) {
21547      // No op
21548      return;
21549    }
21550
21551    updateOffset = updateOffset == null ? true : updateOffset;
21552
21553    if (months) {
21554      setMonth(mom, get(mom, 'Month') + months * isAdding);
21555    }
21556
21557    if (days) {
21558      set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
21559    }
21560
21561    if (milliseconds) {
21562      mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
21563    }
21564
21565    if (updateOffset) {
21566      hooks.updateOffset(mom, days || months);
21567    }
21568  }
21569
21570  var add = createAdder(1, 'add'),
21571      subtract = createAdder(-1, 'subtract');
21572
21573  function isString(input) {
21574    return typeof input === 'string' || input instanceof String;
21575  } // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
21576
21577
21578  function isMomentInput(input) {
21579    return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === undefined;
21580  }
21581
21582  function isMomentInputObject(input) {
21583    var objectTest = isObject(input) && !isObjectEmpty(input),
21584        propertyTest = false,
21585        properties = ['years', 'year', 'y', 'months', 'month', 'M', 'days', 'day', 'd', 'dates', 'date', 'D', 'hours', 'hour', 'h', 'minutes', 'minute', 'm', 'seconds', 'second', 's', 'milliseconds', 'millisecond', 'ms'],
21586        i,
21587        property,
21588        propertyLen = properties.length;
21589
21590    for (i = 0; i < propertyLen; i += 1) {
21591      property = properties[i];
21592      propertyTest = propertyTest || hasOwnProp(input, property);
21593    }
21594
21595    return objectTest && propertyTest;
21596  }
21597
21598  function isNumberOrStringArray(input) {
21599    var arrayTest = isArray(input),
21600        dataTypeTest = false;
21601
21602    if (arrayTest) {
21603      dataTypeTest = input.filter(function (item) {
21604        return !isNumber(item) && isString(input);
21605      }).length === 0;
21606    }
21607
21608    return arrayTest && dataTypeTest;
21609  }
21610
21611  function isCalendarSpec(input) {
21612    var objectTest = isObject(input) && !isObjectEmpty(input),
21613        propertyTest = false,
21614        properties = ['sameDay', 'nextDay', 'lastDay', 'nextWeek', 'lastWeek', 'sameElse'],
21615        i,
21616        property;
21617
21618    for (i = 0; i < properties.length; i += 1) {
21619      property = properties[i];
21620      propertyTest = propertyTest || hasOwnProp(input, property);
21621    }
21622
21623    return objectTest && propertyTest;
21624  }
21625
21626  function getCalendarFormat(myMoment, now) {
21627    var diff = myMoment.diff(now, 'days', true);
21628    return diff < -6 ? 'sameElse' : diff < -1 ? 'lastWeek' : diff < 0 ? 'lastDay' : diff < 1 ? 'sameDay' : diff < 2 ? 'nextDay' : diff < 7 ? 'nextWeek' : 'sameElse';
21629  }
21630
21631  function calendar$1(time, formats) {
21632    // Support for single parameter, formats only overload to the calendar function
21633    if (arguments.length === 1) {
21634      if (!arguments[0]) {
21635        time = undefined;
21636        formats = undefined;
21637      } else if (isMomentInput(arguments[0])) {
21638        time = arguments[0];
21639        formats = undefined;
21640      } else if (isCalendarSpec(arguments[0])) {
21641        formats = arguments[0];
21642        time = undefined;
21643      }
21644    } // We want to compare the start of today, vs this.
21645    // Getting start-of-today depends on whether we're local/utc/offset or not.
21646
21647
21648    var now = time || createLocal(),
21649        sod = cloneWithOffset(now, this).startOf('day'),
21650        format = hooks.calendarFormat(this, sod) || 'sameElse',
21651        output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
21652    return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
21653  }
21654
21655  function clone() {
21656    return new Moment(this);
21657  }
21658
21659  function isAfter(input, units) {
21660    var localInput = isMoment(input) ? input : createLocal(input);
21661
21662    if (!(this.isValid() && localInput.isValid())) {
21663      return false;
21664    }
21665
21666    units = normalizeUnits(units) || 'millisecond';
21667
21668    if (units === 'millisecond') {
21669      return this.valueOf() > localInput.valueOf();
21670    } else {
21671      return localInput.valueOf() < this.clone().startOf(units).valueOf();
21672    }
21673  }
21674
21675  function isBefore(input, units) {
21676    var localInput = isMoment(input) ? input : createLocal(input);
21677
21678    if (!(this.isValid() && localInput.isValid())) {
21679      return false;
21680    }
21681
21682    units = normalizeUnits(units) || 'millisecond';
21683
21684    if (units === 'millisecond') {
21685      return this.valueOf() < localInput.valueOf();
21686    } else {
21687      return this.clone().endOf(units).valueOf() < localInput.valueOf();
21688    }
21689  }
21690
21691  function isBetween(from, to, units, inclusivity) {
21692    var localFrom = isMoment(from) ? from : createLocal(from),
21693        localTo = isMoment(to) ? to : createLocal(to);
21694
21695    if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
21696      return false;
21697    }
21698
21699    inclusivity = inclusivity || '()';
21700    return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));
21701  }
21702
21703  function isSame(input, units) {
21704    var localInput = isMoment(input) ? input : createLocal(input),
21705        inputMs;
21706
21707    if (!(this.isValid() && localInput.isValid())) {
21708      return false;
21709    }
21710
21711    units = normalizeUnits(units) || 'millisecond';
21712
21713    if (units === 'millisecond') {
21714      return this.valueOf() === localInput.valueOf();
21715    } else {
21716      inputMs = localInput.valueOf();
21717      return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
21718    }
21719  }
21720
21721  function isSameOrAfter(input, units) {
21722    return this.isSame(input, units) || this.isAfter(input, units);
21723  }
21724
21725  function isSameOrBefore(input, units) {
21726    return this.isSame(input, units) || this.isBefore(input, units);
21727  }
21728
21729  function diff(input, units, asFloat) {
21730    var that, zoneDelta, output;
21731
21732    if (!this.isValid()) {
21733      return NaN;
21734    }
21735
21736    that = cloneWithOffset(input, this);
21737
21738    if (!that.isValid()) {
21739      return NaN;
21740    }
21741
21742    zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
21743    units = normalizeUnits(units);
21744
21745    switch (units) {
21746      case 'year':
21747        output = monthDiff(this, that) / 12;
21748        break;
21749
21750      case 'month':
21751        output = monthDiff(this, that);
21752        break;
21753
21754      case 'quarter':
21755        output = monthDiff(this, that) / 3;
21756        break;
21757
21758      case 'second':
21759        output = (this - that) / 1e3;
21760        break;
21761      // 1000
21762
21763      case 'minute':
21764        output = (this - that) / 6e4;
21765        break;
21766      // 1000 * 60
21767
21768      case 'hour':
21769        output = (this - that) / 36e5;
21770        break;
21771      // 1000 * 60 * 60
21772
21773      case 'day':
21774        output = (this - that - zoneDelta) / 864e5;
21775        break;
21776      // 1000 * 60 * 60 * 24, negate dst
21777
21778      case 'week':
21779        output = (this - that - zoneDelta) / 6048e5;
21780        break;
21781      // 1000 * 60 * 60 * 24 * 7, negate dst
21782
21783      default:
21784        output = this - that;
21785    }
21786
21787    return asFloat ? output : absFloor(output);
21788  }
21789
21790  function monthDiff(a, b) {
21791    if (a.date() < b.date()) {
21792      // end-of-month calculations work correct when the start month has more
21793      // days than the end month.
21794      return -monthDiff(b, a);
21795    } // difference in months
21796
21797
21798    var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
21799        // b is in (anchor - 1 month, anchor + 1 month)
21800    anchor = a.clone().add(wholeMonthDiff, 'months'),
21801        anchor2,
21802        adjust;
21803
21804    if (b - anchor < 0) {
21805      anchor2 = a.clone().add(wholeMonthDiff - 1, 'months'); // linear across the month
21806
21807      adjust = (b - anchor) / (anchor - anchor2);
21808    } else {
21809      anchor2 = a.clone().add(wholeMonthDiff + 1, 'months'); // linear across the month
21810
21811      adjust = (b - anchor) / (anchor2 - anchor);
21812    } //check for negative zero, return zero if negative zero
21813
21814
21815    return -(wholeMonthDiff + adjust) || 0;
21816  }
21817
21818  hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
21819  hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
21820
21821  function toString() {
21822    return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
21823  }
21824
21825  function toISOString(keepOffset) {
21826    if (!this.isValid()) {
21827      return null;
21828    }
21829
21830    var utc = keepOffset !== true,
21831        m = utc ? this.clone().utc() : this;
21832
21833    if (m.year() < 0 || m.year() > 9999) {
21834      return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');
21835    }
21836
21837    if (isFunction(Date.prototype.toISOString)) {
21838      // native implementation is ~50x faster, use it when we can
21839      if (utc) {
21840        return this.toDate().toISOString();
21841      } else {
21842        return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));
21843      }
21844    }
21845
21846    return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');
21847  }
21848  /**
21849   * Return a human readable representation of a moment that can
21850   * also be evaluated to get a new moment which is the same
21851   *
21852   * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
21853   */
21854
21855
21856  function inspect() {
21857    if (!this.isValid()) {
21858      return 'moment.invalid(/* ' + this._i + ' */)';
21859    }
21860
21861    var func = 'moment',
21862        zone = '',
21863        prefix,
21864        year,
21865        datetime,
21866        suffix;
21867
21868    if (!this.isLocal()) {
21869      func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
21870      zone = 'Z';
21871    }
21872
21873    prefix = '[' + func + '("]';
21874    year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
21875    datetime = '-MM-DD[T]HH:mm:ss.SSS';
21876    suffix = zone + '[")]';
21877    return this.format(prefix + year + datetime + suffix);
21878  }
21879
21880  function format(inputString) {
21881    if (!inputString) {
21882      inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
21883    }
21884
21885    var output = formatMoment(this, inputString);
21886    return this.localeData().postformat(output);
21887  }
21888
21889  function from(time, withoutSuffix) {
21890    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {
21891      return createDuration({
21892        to: this,
21893        from: time
21894      }).locale(this.locale()).humanize(!withoutSuffix);
21895    } else {
21896      return this.localeData().invalidDate();
21897    }
21898  }
21899
21900  function fromNow(withoutSuffix) {
21901    return this.from(createLocal(), withoutSuffix);
21902  }
21903
21904  function to(time, withoutSuffix) {
21905    if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {
21906      return createDuration({
21907        from: this,
21908        to: time
21909      }).locale(this.locale()).humanize(!withoutSuffix);
21910    } else {
21911      return this.localeData().invalidDate();
21912    }
21913  }
21914
21915  function toNow(withoutSuffix) {
21916    return this.to(createLocal(), withoutSuffix);
21917  } // If passed a locale key, it will set the locale for this
21918  // instance.  Otherwise, it will return the locale configuration
21919  // variables for this instance.
21920
21921
21922  function locale(key) {
21923    var newLocaleData;
21924
21925    if (key === undefined) {
21926      return this._locale._abbr;
21927    } else {
21928      newLocaleData = getLocale(key);
21929
21930      if (newLocaleData != null) {
21931        this._locale = newLocaleData;
21932      }
21933
21934      return this;
21935    }
21936  }
21937
21938  var lang = deprecate('moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.', function (key) {
21939    if (key === undefined) {
21940      return this.localeData();
21941    } else {
21942      return this.locale(key);
21943    }
21944  });
21945
21946  function localeData() {
21947    return this._locale;
21948  }
21949
21950  var MS_PER_SECOND = 1000,
21951      MS_PER_MINUTE = 60 * MS_PER_SECOND,
21952      MS_PER_HOUR = 60 * MS_PER_MINUTE,
21953      MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR; // actual modulo - handles negative numbers (for dates before 1970):
21954
21955  function mod$1(dividend, divisor) {
21956    return (dividend % divisor + divisor) % divisor;
21957  }
21958
21959  function localStartOfDate(y, m, d) {
21960    // the date constructor remaps years 0-99 to 1900-1999
21961    if (y < 100 && y >= 0) {
21962      // preserve leap years using a full 400 year cycle, then reset
21963      return new Date(y + 400, m, d) - MS_PER_400_YEARS;
21964    } else {
21965      return new Date(y, m, d).valueOf();
21966    }
21967  }
21968
21969  function utcStartOfDate(y, m, d) {
21970    // Date.UTC remaps years 0-99 to 1900-1999
21971    if (y < 100 && y >= 0) {
21972      // preserve leap years using a full 400 year cycle, then reset
21973      return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
21974    } else {
21975      return Date.UTC(y, m, d);
21976    }
21977  }
21978
21979  function startOf(units) {
21980    var time, startOfDate;
21981    units = normalizeUnits(units);
21982
21983    if (units === undefined || units === 'millisecond' || !this.isValid()) {
21984      return this;
21985    }
21986
21987    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
21988
21989    switch (units) {
21990      case 'year':
21991        time = startOfDate(this.year(), 0, 1);
21992        break;
21993
21994      case 'quarter':
21995        time = startOfDate(this.year(), this.month() - this.month() % 3, 1);
21996        break;
21997
21998      case 'month':
21999        time = startOfDate(this.year(), this.month(), 1);
22000        break;
22001
22002      case 'week':
22003        time = startOfDate(this.year(), this.month(), this.date() - this.weekday());
22004        break;
22005
22006      case 'isoWeek':
22007        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
22008        break;
22009
22010      case 'day':
22011      case 'date':
22012        time = startOfDate(this.year(), this.month(), this.date());
22013        break;
22014
22015      case 'hour':
22016        time = this._d.valueOf();
22017        time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);
22018        break;
22019
22020      case 'minute':
22021        time = this._d.valueOf();
22022        time -= mod$1(time, MS_PER_MINUTE);
22023        break;
22024
22025      case 'second':
22026        time = this._d.valueOf();
22027        time -= mod$1(time, MS_PER_SECOND);
22028        break;
22029    }
22030
22031    this._d.setTime(time);
22032
22033    hooks.updateOffset(this, true);
22034    return this;
22035  }
22036
22037  function endOf(units) {
22038    var time, startOfDate;
22039    units = normalizeUnits(units);
22040
22041    if (units === undefined || units === 'millisecond' || !this.isValid()) {
22042      return this;
22043    }
22044
22045    startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
22046
22047    switch (units) {
22048      case 'year':
22049        time = startOfDate(this.year() + 1, 0, 1) - 1;
22050        break;
22051
22052      case 'quarter':
22053        time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
22054        break;
22055
22056      case 'month':
22057        time = startOfDate(this.year(), this.month() + 1, 1) - 1;
22058        break;
22059
22060      case 'week':
22061        time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
22062        break;
22063
22064      case 'isoWeek':
22065        time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
22066        break;
22067
22068      case 'day':
22069      case 'date':
22070        time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
22071        break;
22072
22073      case 'hour':
22074        time = this._d.valueOf();
22075        time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;
22076        break;
22077
22078      case 'minute':
22079        time = this._d.valueOf();
22080        time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
22081        break;
22082
22083      case 'second':
22084        time = this._d.valueOf();
22085        time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
22086        break;
22087    }
22088
22089    this._d.setTime(time);
22090
22091    hooks.updateOffset(this, true);
22092    return this;
22093  }
22094
22095  function valueOf() {
22096    return this._d.valueOf() - (this._offset || 0) * 60000;
22097  }
22098
22099  function unix() {
22100    return Math.floor(this.valueOf() / 1000);
22101  }
22102
22103  function toDate() {
22104    return new Date(this.valueOf());
22105  }
22106
22107  function toArray() {
22108    var m = this;
22109    return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
22110  }
22111
22112  function toObject() {
22113    var m = this;
22114    return {
22115      years: m.year(),
22116      months: m.month(),
22117      date: m.date(),
22118      hours: m.hours(),
22119      minutes: m.minutes(),
22120      seconds: m.seconds(),
22121      milliseconds: m.milliseconds()
22122    };
22123  }
22124
22125  function toJSON() {
22126    // new Date(NaN).toJSON() === null
22127    return this.isValid() ? this.toISOString() : null;
22128  }
22129
22130  function isValid$2() {
22131    return isValid(this);
22132  }
22133
22134  function parsingFlags() {
22135    return extend({}, getParsingFlags(this));
22136  }
22137
22138  function invalidAt() {
22139    return getParsingFlags(this).overflow;
22140  }
22141
22142  function creationData() {
22143    return {
22144      input: this._i,
22145      format: this._f,
22146      locale: this._locale,
22147      isUTC: this._isUTC,
22148      strict: this._strict
22149    };
22150  }
22151
22152  addFormatToken('N', 0, 0, 'eraAbbr');
22153  addFormatToken('NN', 0, 0, 'eraAbbr');
22154  addFormatToken('NNN', 0, 0, 'eraAbbr');
22155  addFormatToken('NNNN', 0, 0, 'eraName');
22156  addFormatToken('NNNNN', 0, 0, 'eraNarrow');
22157  addFormatToken('y', ['y', 1], 'yo', 'eraYear');
22158  addFormatToken('y', ['yy', 2], 0, 'eraYear');
22159  addFormatToken('y', ['yyy', 3], 0, 'eraYear');
22160  addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
22161  addRegexToken('N', matchEraAbbr);
22162  addRegexToken('NN', matchEraAbbr);
22163  addRegexToken('NNN', matchEraAbbr);
22164  addRegexToken('NNNN', matchEraName);
22165  addRegexToken('NNNNN', matchEraNarrow);
22166  addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (input, array, config, token) {
22167    var era = config._locale.erasParse(input, token, config._strict);
22168
22169    if (era) {
22170      getParsingFlags(config).era = era;
22171    } else {
22172      getParsingFlags(config).invalidEra = input;
22173    }
22174  });
22175  addRegexToken('y', matchUnsigned);
22176  addRegexToken('yy', matchUnsigned);
22177  addRegexToken('yyy', matchUnsigned);
22178  addRegexToken('yyyy', matchUnsigned);
22179  addRegexToken('yo', matchEraYearOrdinal);
22180  addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
22181  addParseToken(['yo'], function (input, array, config, token) {
22182    var match;
22183
22184    if (config._locale._eraYearOrdinalRegex) {
22185      match = input.match(config._locale._eraYearOrdinalRegex);
22186    }
22187
22188    if (config._locale.eraYearOrdinalParse) {
22189      array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
22190    } else {
22191      array[YEAR] = parseInt(input, 10);
22192    }
22193  });
22194
22195  function localeEras(m, format) {
22196    var i,
22197        l,
22198        date,
22199        eras = this._eras || getLocale('en')._eras;
22200
22201    for (i = 0, l = eras.length; i < l; ++i) {
22202      switch (_typeof(eras[i].since)) {
22203        case 'string':
22204          // truncate time
22205          date = hooks(eras[i].since).startOf('day');
22206          eras[i].since = date.valueOf();
22207          break;
22208      }
22209
22210      switch (_typeof(eras[i].until)) {
22211        case 'undefined':
22212          eras[i].until = +Infinity;
22213          break;
22214
22215        case 'string':
22216          // truncate time
22217          date = hooks(eras[i].until).startOf('day').valueOf();
22218          eras[i].until = date.valueOf();
22219          break;
22220      }
22221    }
22222
22223    return eras;
22224  }
22225
22226  function localeErasParse(eraName, format, strict) {
22227    var i,
22228        l,
22229        eras = this.eras(),
22230        name,
22231        abbr,
22232        narrow;
22233    eraName = eraName.toUpperCase();
22234
22235    for (i = 0, l = eras.length; i < l; ++i) {
22236      name = eras[i].name.toUpperCase();
22237      abbr = eras[i].abbr.toUpperCase();
22238      narrow = eras[i].narrow.toUpperCase();
22239
22240      if (strict) {
22241        switch (format) {
22242          case 'N':
22243          case 'NN':
22244          case 'NNN':
22245            if (abbr === eraName) {
22246              return eras[i];
22247            }
22248
22249            break;
22250
22251          case 'NNNN':
22252            if (name === eraName) {
22253              return eras[i];
22254            }
22255
22256            break;
22257
22258          case 'NNNNN':
22259            if (narrow === eraName) {
22260              return eras[i];
22261            }
22262
22263            break;
22264        }
22265      } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
22266        return eras[i];
22267      }
22268    }
22269  }
22270
22271  function localeErasConvertYear(era, year) {
22272    var dir = era.since <= era.until ? +1 : -1;
22273
22274    if (year === undefined) {
22275      return hooks(era.since).year();
22276    } else {
22277      return hooks(era.since).year() + (year - era.offset) * dir;
22278    }
22279  }
22280
22281  function getEraName() {
22282    var i,
22283        l,
22284        val,
22285        eras = this.localeData().eras();
22286
22287    for (i = 0, l = eras.length; i < l; ++i) {
22288      // truncate time
22289      val = this.clone().startOf('day').valueOf();
22290
22291      if (eras[i].since <= val && val <= eras[i].until) {
22292        return eras[i].name;
22293      }
22294
22295      if (eras[i].until <= val && val <= eras[i].since) {
22296        return eras[i].name;
22297      }
22298    }
22299
22300    return '';
22301  }
22302
22303  function getEraNarrow() {
22304    var i,
22305        l,
22306        val,
22307        eras = this.localeData().eras();
22308
22309    for (i = 0, l = eras.length; i < l; ++i) {
22310      // truncate time
22311      val = this.clone().startOf('day').valueOf();
22312
22313      if (eras[i].since <= val && val <= eras[i].until) {
22314        return eras[i].narrow;
22315      }
22316
22317      if (eras[i].until <= val && val <= eras[i].since) {
22318        return eras[i].narrow;
22319      }
22320    }
22321
22322    return '';
22323  }
22324
22325  function getEraAbbr() {
22326    var i,
22327        l,
22328        val,
22329        eras = this.localeData().eras();
22330
22331    for (i = 0, l = eras.length; i < l; ++i) {
22332      // truncate time
22333      val = this.clone().startOf('day').valueOf();
22334
22335      if (eras[i].since <= val && val <= eras[i].until) {
22336        return eras[i].abbr;
22337      }
22338
22339      if (eras[i].until <= val && val <= eras[i].since) {
22340        return eras[i].abbr;
22341      }
22342    }
22343
22344    return '';
22345  }
22346
22347  function getEraYear() {
22348    var i,
22349        l,
22350        dir,
22351        val,
22352        eras = this.localeData().eras();
22353
22354    for (i = 0, l = eras.length; i < l; ++i) {
22355      dir = eras[i].since <= eras[i].until ? +1 : -1; // truncate time
22356
22357      val = this.clone().startOf('day').valueOf();
22358
22359      if (eras[i].since <= val && val <= eras[i].until || eras[i].until <= val && val <= eras[i].since) {
22360        return (this.year() - hooks(eras[i].since).year()) * dir + eras[i].offset;
22361      }
22362    }
22363
22364    return this.year();
22365  }
22366
22367  function erasNameRegex(isStrict) {
22368    if (!hasOwnProp(this, '_erasNameRegex')) {
22369      computeErasParse.call(this);
22370    }
22371
22372    return isStrict ? this._erasNameRegex : this._erasRegex;
22373  }
22374
22375  function erasAbbrRegex(isStrict) {
22376    if (!hasOwnProp(this, '_erasAbbrRegex')) {
22377      computeErasParse.call(this);
22378    }
22379
22380    return isStrict ? this._erasAbbrRegex : this._erasRegex;
22381  }
22382
22383  function erasNarrowRegex(isStrict) {
22384    if (!hasOwnProp(this, '_erasNarrowRegex')) {
22385      computeErasParse.call(this);
22386    }
22387
22388    return isStrict ? this._erasNarrowRegex : this._erasRegex;
22389  }
22390
22391  function matchEraAbbr(isStrict, locale) {
22392    return locale.erasAbbrRegex(isStrict);
22393  }
22394
22395  function matchEraName(isStrict, locale) {
22396    return locale.erasNameRegex(isStrict);
22397  }
22398
22399  function matchEraNarrow(isStrict, locale) {
22400    return locale.erasNarrowRegex(isStrict);
22401  }
22402
22403  function matchEraYearOrdinal(isStrict, locale) {
22404    return locale._eraYearOrdinalRegex || matchUnsigned;
22405  }
22406
22407  function computeErasParse() {
22408    var abbrPieces = [],
22409        namePieces = [],
22410        narrowPieces = [],
22411        mixedPieces = [],
22412        i,
22413        l,
22414        eras = this.eras();
22415
22416    for (i = 0, l = eras.length; i < l; ++i) {
22417      namePieces.push(regexEscape(eras[i].name));
22418      abbrPieces.push(regexEscape(eras[i].abbr));
22419      narrowPieces.push(regexEscape(eras[i].narrow));
22420      mixedPieces.push(regexEscape(eras[i].name));
22421      mixedPieces.push(regexEscape(eras[i].abbr));
22422      mixedPieces.push(regexEscape(eras[i].narrow));
22423    }
22424
22425    this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
22426    this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
22427    this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
22428    this._erasNarrowRegex = new RegExp('^(' + narrowPieces.join('|') + ')', 'i');
22429  } // FORMATTING
22430
22431
22432  addFormatToken(0, ['gg', 2], 0, function () {
22433    return this.weekYear() % 100;
22434  });
22435  addFormatToken(0, ['GG', 2], 0, function () {
22436    return this.isoWeekYear() % 100;
22437  });
22438
22439  function addWeekYearFormatToken(token, getter) {
22440    addFormatToken(0, [token, token.length], 0, getter);
22441  }
22442
22443  addWeekYearFormatToken('gggg', 'weekYear');
22444  addWeekYearFormatToken('ggggg', 'weekYear');
22445  addWeekYearFormatToken('GGGG', 'isoWeekYear');
22446  addWeekYearFormatToken('GGGGG', 'isoWeekYear'); // ALIASES
22447
22448  addUnitAlias('weekYear', 'gg');
22449  addUnitAlias('isoWeekYear', 'GG'); // PRIORITY
22450
22451  addUnitPriority('weekYear', 1);
22452  addUnitPriority('isoWeekYear', 1); // PARSING
22453
22454  addRegexToken('G', matchSigned);
22455  addRegexToken('g', matchSigned);
22456  addRegexToken('GG', match1to2, match2);
22457  addRegexToken('gg', match1to2, match2);
22458  addRegexToken('GGGG', match1to4, match4);
22459  addRegexToken('gggg', match1to4, match4);
22460  addRegexToken('GGGGG', match1to6, match6);
22461  addRegexToken('ggggg', match1to6, match6);
22462  addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
22463    week[token.substr(0, 2)] = toInt(input);
22464  });
22465  addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
22466    week[token] = hooks.parseTwoDigitYear(input);
22467  }); // MOMENTS
22468
22469  function getSetWeekYear(input) {
22470    return getSetWeekYearHelper.call(this, input, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy);
22471  }
22472
22473  function getSetISOWeekYear(input) {
22474    return getSetWeekYearHelper.call(this, input, this.isoWeek(), this.isoWeekday(), 1, 4);
22475  }
22476
22477  function getISOWeeksInYear() {
22478    return weeksInYear(this.year(), 1, 4);
22479  }
22480
22481  function getISOWeeksInISOWeekYear() {
22482    return weeksInYear(this.isoWeekYear(), 1, 4);
22483  }
22484
22485  function getWeeksInYear() {
22486    var weekInfo = this.localeData()._week;
22487
22488    return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
22489  }
22490
22491  function getWeeksInWeekYear() {
22492    var weekInfo = this.localeData()._week;
22493
22494    return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
22495  }
22496
22497  function getSetWeekYearHelper(input, week, weekday, dow, doy) {
22498    var weeksTarget;
22499
22500    if (input == null) {
22501      return weekOfYear(this, dow, doy).year;
22502    } else {
22503      weeksTarget = weeksInYear(input, dow, doy);
22504
22505      if (week > weeksTarget) {
22506        week = weeksTarget;
22507      }
22508
22509      return setWeekAll.call(this, input, week, weekday, dow, doy);
22510    }
22511  }
22512
22513  function setWeekAll(weekYear, week, weekday, dow, doy) {
22514    var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
22515        date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
22516    this.year(date.getUTCFullYear());
22517    this.month(date.getUTCMonth());
22518    this.date(date.getUTCDate());
22519    return this;
22520  } // FORMATTING
22521
22522
22523  addFormatToken('Q', 0, 'Qo', 'quarter'); // ALIASES
22524
22525  addUnitAlias('quarter', 'Q'); // PRIORITY
22526
22527  addUnitPriority('quarter', 7); // PARSING
22528
22529  addRegexToken('Q', match1);
22530  addParseToken('Q', function (input, array) {
22531    array[MONTH] = (toInt(input) - 1) * 3;
22532  }); // MOMENTS
22533
22534  function getSetQuarter(input) {
22535    return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
22536  } // FORMATTING
22537
22538
22539  addFormatToken('D', ['DD', 2], 'Do', 'date'); // ALIASES
22540
22541  addUnitAlias('date', 'D'); // PRIORITY
22542
22543  addUnitPriority('date', 9); // PARSING
22544
22545  addRegexToken('D', match1to2);
22546  addRegexToken('DD', match1to2, match2);
22547  addRegexToken('Do', function (isStrict, locale) {
22548    // TODO: Remove "ordinalParse" fallback in next major release.
22549    return isStrict ? locale._dayOfMonthOrdinalParse || locale._ordinalParse : locale._dayOfMonthOrdinalParseLenient;
22550  });
22551  addParseToken(['D', 'DD'], DATE);
22552  addParseToken('Do', function (input, array) {
22553    array[DATE] = toInt(input.match(match1to2)[0]);
22554  }); // MOMENTS
22555
22556  var getSetDayOfMonth = makeGetSet('Date', true); // FORMATTING
22557
22558  addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear'); // ALIASES
22559
22560  addUnitAlias('dayOfYear', 'DDD'); // PRIORITY
22561
22562  addUnitPriority('dayOfYear', 4); // PARSING
22563
22564  addRegexToken('DDD', match1to3);
22565  addRegexToken('DDDD', match3);
22566  addParseToken(['DDD', 'DDDD'], function (input, array, config) {
22567    config._dayOfYear = toInt(input);
22568  }); // HELPERS
22569  // MOMENTS
22570
22571  function getSetDayOfYear(input) {
22572    var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
22573    return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
22574  } // FORMATTING
22575
22576
22577  addFormatToken('m', ['mm', 2], 0, 'minute'); // ALIASES
22578
22579  addUnitAlias('minute', 'm'); // PRIORITY
22580
22581  addUnitPriority('minute', 14); // PARSING
22582
22583  addRegexToken('m', match1to2);
22584  addRegexToken('mm', match1to2, match2);
22585  addParseToken(['m', 'mm'], MINUTE); // MOMENTS
22586
22587  var getSetMinute = makeGetSet('Minutes', false); // FORMATTING
22588
22589  addFormatToken('s', ['ss', 2], 0, 'second'); // ALIASES
22590
22591  addUnitAlias('second', 's'); // PRIORITY
22592
22593  addUnitPriority('second', 15); // PARSING
22594
22595  addRegexToken('s', match1to2);
22596  addRegexToken('ss', match1to2, match2);
22597  addParseToken(['s', 'ss'], SECOND); // MOMENTS
22598
22599  var getSetSecond = makeGetSet('Seconds', false); // FORMATTING
22600
22601  addFormatToken('S', 0, 0, function () {
22602    return ~~(this.millisecond() / 100);
22603  });
22604  addFormatToken(0, ['SS', 2], 0, function () {
22605    return ~~(this.millisecond() / 10);
22606  });
22607  addFormatToken(0, ['SSS', 3], 0, 'millisecond');
22608  addFormatToken(0, ['SSSS', 4], 0, function () {
22609    return this.millisecond() * 10;
22610  });
22611  addFormatToken(0, ['SSSSS', 5], 0, function () {
22612    return this.millisecond() * 100;
22613  });
22614  addFormatToken(0, ['SSSSSS', 6], 0, function () {
22615    return this.millisecond() * 1000;
22616  });
22617  addFormatToken(0, ['SSSSSSS', 7], 0, function () {
22618    return this.millisecond() * 10000;
22619  });
22620  addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
22621    return this.millisecond() * 100000;
22622  });
22623  addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
22624    return this.millisecond() * 1000000;
22625  }); // ALIASES
22626
22627  addUnitAlias('millisecond', 'ms'); // PRIORITY
22628
22629  addUnitPriority('millisecond', 16); // PARSING
22630
22631  addRegexToken('S', match1to3, match1);
22632  addRegexToken('SS', match1to3, match2);
22633  addRegexToken('SSS', match1to3, match3);
22634  var token, getSetMillisecond;
22635
22636  for (token = 'SSSS'; token.length <= 9; token += 'S') {
22637    addRegexToken(token, matchUnsigned);
22638  }
22639
22640  function parseMs(input, array) {
22641    array[MILLISECOND] = toInt(('0.' + input) * 1000);
22642  }
22643
22644  for (token = 'S'; token.length <= 9; token += 'S') {
22645    addParseToken(token, parseMs);
22646  }
22647
22648  getSetMillisecond = makeGetSet('Milliseconds', false); // FORMATTING
22649
22650  addFormatToken('z', 0, 0, 'zoneAbbr');
22651  addFormatToken('zz', 0, 0, 'zoneName'); // MOMENTS
22652
22653  function getZoneAbbr() {
22654    return this._isUTC ? 'UTC' : '';
22655  }
22656
22657  function getZoneName() {
22658    return this._isUTC ? 'Coordinated Universal Time' : '';
22659  }
22660
22661  var proto = Moment.prototype;
22662  proto.add = add;
22663  proto.calendar = calendar$1;
22664  proto.clone = clone;
22665  proto.diff = diff;
22666  proto.endOf = endOf;
22667  proto.format = format;
22668  proto.from = from;
22669  proto.fromNow = fromNow;
22670  proto.to = to;
22671  proto.toNow = toNow;
22672  proto.get = stringGet;
22673  proto.invalidAt = invalidAt;
22674  proto.isAfter = isAfter;
22675  proto.isBefore = isBefore;
22676  proto.isBetween = isBetween;
22677  proto.isSame = isSame;
22678  proto.isSameOrAfter = isSameOrAfter;
22679  proto.isSameOrBefore = isSameOrBefore;
22680  proto.isValid = isValid$2;
22681  proto.lang = lang;
22682  proto.locale = locale;
22683  proto.localeData = localeData;
22684  proto.max = prototypeMax;
22685  proto.min = prototypeMin;
22686  proto.parsingFlags = parsingFlags;
22687  proto.set = stringSet;
22688  proto.startOf = startOf;
22689  proto.subtract = subtract;
22690  proto.toArray = toArray;
22691  proto.toObject = toObject;
22692  proto.toDate = toDate;
22693  proto.toISOString = toISOString;
22694  proto.inspect = inspect;
22695
22696  if (typeof Symbol !== 'undefined' && Symbol["for"] != null) {
22697    proto[Symbol["for"]('nodejs.util.inspect.custom')] = function () {
22698      return 'Moment<' + this.format() + '>';
22699    };
22700  }
22701
22702  proto.toJSON = toJSON;
22703  proto.toString = toString;
22704  proto.unix = unix;
22705  proto.valueOf = valueOf;
22706  proto.creationData = creationData;
22707  proto.eraName = getEraName;
22708  proto.eraNarrow = getEraNarrow;
22709  proto.eraAbbr = getEraAbbr;
22710  proto.eraYear = getEraYear;
22711  proto.year = getSetYear;
22712  proto.isLeapYear = getIsLeapYear;
22713  proto.weekYear = getSetWeekYear;
22714  proto.isoWeekYear = getSetISOWeekYear;
22715  proto.quarter = proto.quarters = getSetQuarter;
22716  proto.month = getSetMonth;
22717  proto.daysInMonth = getDaysInMonth;
22718  proto.week = proto.weeks = getSetWeek;
22719  proto.isoWeek = proto.isoWeeks = getSetISOWeek;
22720  proto.weeksInYear = getWeeksInYear;
22721  proto.weeksInWeekYear = getWeeksInWeekYear;
22722  proto.isoWeeksInYear = getISOWeeksInYear;
22723  proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
22724  proto.date = getSetDayOfMonth;
22725  proto.day = proto.days = getSetDayOfWeek;
22726  proto.weekday = getSetLocaleDayOfWeek;
22727  proto.isoWeekday = getSetISODayOfWeek;
22728  proto.dayOfYear = getSetDayOfYear;
22729  proto.hour = proto.hours = getSetHour;
22730  proto.minute = proto.minutes = getSetMinute;
22731  proto.second = proto.seconds = getSetSecond;
22732  proto.millisecond = proto.milliseconds = getSetMillisecond;
22733  proto.utcOffset = getSetOffset;
22734  proto.utc = setOffsetToUTC;
22735  proto.local = setOffsetToLocal;
22736  proto.parseZone = setOffsetToParsedOffset;
22737  proto.hasAlignedHourOffset = hasAlignedHourOffset;
22738  proto.isDST = isDaylightSavingTime;
22739  proto.isLocal = isLocal;
22740  proto.isUtcOffset = isUtcOffset;
22741  proto.isUtc = isUtc;
22742  proto.isUTC = isUtc;
22743  proto.zoneAbbr = getZoneAbbr;
22744  proto.zoneName = getZoneName;
22745  proto.dates = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
22746  proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
22747  proto.years = deprecate('years accessor is deprecated. Use year instead', getSetYear);
22748  proto.zone = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
22749  proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
22750
22751  function createUnix(input) {
22752    return createLocal(input * 1000);
22753  }
22754
22755  function createInZone() {
22756    return createLocal.apply(null, arguments).parseZone();
22757  }
22758
22759  function preParsePostFormat(string) {
22760    return string;
22761  }
22762
22763  var proto$1 = Locale.prototype;
22764  proto$1.calendar = calendar;
22765  proto$1.longDateFormat = longDateFormat;
22766  proto$1.invalidDate = invalidDate;
22767  proto$1.ordinal = ordinal;
22768  proto$1.preparse = preParsePostFormat;
22769  proto$1.postformat = preParsePostFormat;
22770  proto$1.relativeTime = relativeTime;
22771  proto$1.pastFuture = pastFuture;
22772  proto$1.set = set;
22773  proto$1.eras = localeEras;
22774  proto$1.erasParse = localeErasParse;
22775  proto$1.erasConvertYear = localeErasConvertYear;
22776  proto$1.erasAbbrRegex = erasAbbrRegex;
22777  proto$1.erasNameRegex = erasNameRegex;
22778  proto$1.erasNarrowRegex = erasNarrowRegex;
22779  proto$1.months = localeMonths;
22780  proto$1.monthsShort = localeMonthsShort;
22781  proto$1.monthsParse = localeMonthsParse;
22782  proto$1.monthsRegex = monthsRegex;
22783  proto$1.monthsShortRegex = monthsShortRegex;
22784  proto$1.week = localeWeek;
22785  proto$1.firstDayOfYear = localeFirstDayOfYear;
22786  proto$1.firstDayOfWeek = localeFirstDayOfWeek;
22787  proto$1.weekdays = localeWeekdays;
22788  proto$1.weekdaysMin = localeWeekdaysMin;
22789  proto$1.weekdaysShort = localeWeekdaysShort;
22790  proto$1.weekdaysParse = localeWeekdaysParse;
22791  proto$1.weekdaysRegex = weekdaysRegex;
22792  proto$1.weekdaysShortRegex = weekdaysShortRegex;
22793  proto$1.weekdaysMinRegex = weekdaysMinRegex;
22794  proto$1.isPM = localeIsPM;
22795  proto$1.meridiem = localeMeridiem;
22796
22797  function get$1(format, index, field, setter) {
22798    var locale = getLocale(),
22799        utc = createUTC().set(setter, index);
22800    return locale[field](utc, format);
22801  }
22802
22803  function listMonthsImpl(format, index, field) {
22804    if (isNumber(format)) {
22805      index = format;
22806      format = undefined;
22807    }
22808
22809    format = format || '';
22810
22811    if (index != null) {
22812      return get$1(format, index, field, 'month');
22813    }
22814
22815    var i,
22816        out = [];
22817
22818    for (i = 0; i < 12; i++) {
22819      out[i] = get$1(format, i, field, 'month');
22820    }
22821
22822    return out;
22823  } // ()
22824  // (5)
22825  // (fmt, 5)
22826  // (fmt)
22827  // (true)
22828  // (true, 5)
22829  // (true, fmt, 5)
22830  // (true, fmt)
22831
22832
22833  function listWeekdaysImpl(localeSorted, format, index, field) {
22834    if (typeof localeSorted === 'boolean') {
22835      if (isNumber(format)) {
22836        index = format;
22837        format = undefined;
22838      }
22839
22840      format = format || '';
22841    } else {
22842      format = localeSorted;
22843      index = format;
22844      localeSorted = false;
22845
22846      if (isNumber(format)) {
22847        index = format;
22848        format = undefined;
22849      }
22850
22851      format = format || '';
22852    }
22853
22854    var locale = getLocale(),
22855        shift = localeSorted ? locale._week.dow : 0,
22856        i,
22857        out = [];
22858
22859    if (index != null) {
22860      return get$1(format, (index + shift) % 7, field, 'day');
22861    }
22862
22863    for (i = 0; i < 7; i++) {
22864      out[i] = get$1(format, (i + shift) % 7, field, 'day');
22865    }
22866
22867    return out;
22868  }
22869
22870  function listMonths(format, index) {
22871    return listMonthsImpl(format, index, 'months');
22872  }
22873
22874  function listMonthsShort(format, index) {
22875    return listMonthsImpl(format, index, 'monthsShort');
22876  }
22877
22878  function listWeekdays(localeSorted, format, index) {
22879    return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
22880  }
22881
22882  function listWeekdaysShort(localeSorted, format, index) {
22883    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
22884  }
22885
22886  function listWeekdaysMin(localeSorted, format, index) {
22887    return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
22888  }
22889
22890  getSetGlobalLocale('en', {
22891    eras: [{
22892      since: '0001-01-01',
22893      until: +Infinity,
22894      offset: 1,
22895      name: 'Anno Domini',
22896      narrow: 'AD',
22897      abbr: 'AD'
22898    }, {
22899      since: '0000-12-31',
22900      until: -Infinity,
22901      offset: 1,
22902      name: 'Before Christ',
22903      narrow: 'BC',
22904      abbr: 'BC'
22905    }],
22906    dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
22907    ordinal: function ordinal(number) {
22908      var b = number % 10,
22909          output = toInt(number % 100 / 10) === 1 ? 'th' : b === 1 ? 'st' : b === 2 ? 'nd' : b === 3 ? 'rd' : 'th';
22910      return number + output;
22911    }
22912  }); // Side effect imports
22913
22914  hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
22915  hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
22916  var mathAbs = Math.abs;
22917
22918  function abs() {
22919    var data = this._data;
22920    this._milliseconds = mathAbs(this._milliseconds);
22921    this._days = mathAbs(this._days);
22922    this._months = mathAbs(this._months);
22923    data.milliseconds = mathAbs(data.milliseconds);
22924    data.seconds = mathAbs(data.seconds);
22925    data.minutes = mathAbs(data.minutes);
22926    data.hours = mathAbs(data.hours);
22927    data.months = mathAbs(data.months);
22928    data.years = mathAbs(data.years);
22929    return this;
22930  }
22931
22932  function addSubtract$1(duration, input, value, direction) {
22933    var other = createDuration(input, value);
22934    duration._milliseconds += direction * other._milliseconds;
22935    duration._days += direction * other._days;
22936    duration._months += direction * other._months;
22937    return duration._bubble();
22938  } // supports only 2.0-style add(1, 's') or add(duration)
22939
22940
22941  function add$1(input, value) {
22942    return addSubtract$1(this, input, value, 1);
22943  } // supports only 2.0-style subtract(1, 's') or subtract(duration)
22944
22945
22946  function subtract$1(input, value) {
22947    return addSubtract$1(this, input, value, -1);
22948  }
22949
22950  function absCeil(number) {
22951    if (number < 0) {
22952      return Math.floor(number);
22953    } else {
22954      return Math.ceil(number);
22955    }
22956  }
22957
22958  function bubble() {
22959    var milliseconds = this._milliseconds,
22960        days = this._days,
22961        months = this._months,
22962        data = this._data,
22963        seconds,
22964        minutes,
22965        hours,
22966        years,
22967        monthsFromDays; // if we have a mix of positive and negative values, bubble down first
22968    // check: https://github.com/moment/moment/issues/2166
22969
22970    if (!(milliseconds >= 0 && days >= 0 && months >= 0 || milliseconds <= 0 && days <= 0 && months <= 0)) {
22971      milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
22972      days = 0;
22973      months = 0;
22974    } // The following code bubbles up values, see the tests for
22975    // examples of what that means.
22976
22977
22978    data.milliseconds = milliseconds % 1000;
22979    seconds = absFloor(milliseconds / 1000);
22980    data.seconds = seconds % 60;
22981    minutes = absFloor(seconds / 60);
22982    data.minutes = minutes % 60;
22983    hours = absFloor(minutes / 60);
22984    data.hours = hours % 24;
22985    days += absFloor(hours / 24); // convert days to months
22986
22987    monthsFromDays = absFloor(daysToMonths(days));
22988    months += monthsFromDays;
22989    days -= absCeil(monthsToDays(monthsFromDays)); // 12 months -> 1 year
22990
22991    years = absFloor(months / 12);
22992    months %= 12;
22993    data.days = days;
22994    data.months = months;
22995    data.years = years;
22996    return this;
22997  }
22998
22999  function daysToMonths(days) {
23000    // 400 years have 146097 days (taking into account leap year rules)
23001    // 400 years have 12 months === 4800
23002    return days * 4800 / 146097;
23003  }
23004
23005  function monthsToDays(months) {
23006    // the reverse of daysToMonths
23007    return months * 146097 / 4800;
23008  }
23009
23010  function as(units) {
23011    if (!this.isValid()) {
23012      return NaN;
23013    }
23014
23015    var days,
23016        months,
23017        milliseconds = this._milliseconds;
23018    units = normalizeUnits(units);
23019
23020    if (units === 'month' || units === 'quarter' || units === 'year') {
23021      days = this._days + milliseconds / 864e5;
23022      months = this._months + daysToMonths(days);
23023
23024      switch (units) {
23025        case 'month':
23026          return months;
23027
23028        case 'quarter':
23029          return months / 3;
23030
23031        case 'year':
23032          return months / 12;
23033      }
23034    } else {
23035      // handle milliseconds separately because of floating point math errors (issue #1867)
23036      days = this._days + Math.round(monthsToDays(this._months));
23037
23038      switch (units) {
23039        case 'week':
23040          return days / 7 + milliseconds / 6048e5;
23041
23042        case 'day':
23043          return days + milliseconds / 864e5;
23044
23045        case 'hour':
23046          return days * 24 + milliseconds / 36e5;
23047
23048        case 'minute':
23049          return days * 1440 + milliseconds / 6e4;
23050
23051        case 'second':
23052          return days * 86400 + milliseconds / 1000;
23053        // Math.floor prevents floating point math errors here
23054
23055        case 'millisecond':
23056          return Math.floor(days * 864e5) + milliseconds;
23057
23058        default:
23059          throw new Error('Unknown unit ' + units);
23060      }
23061    }
23062  } // TODO: Use this.as('ms')?
23063
23064
23065  function valueOf$1() {
23066    if (!this.isValid()) {
23067      return NaN;
23068    }
23069
23070    return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;
23071  }
23072
23073  function makeAs(alias) {
23074    return function () {
23075      return this.as(alias);
23076    };
23077  }
23078
23079  var asMilliseconds = makeAs('ms'),
23080      asSeconds = makeAs('s'),
23081      asMinutes = makeAs('m'),
23082      asHours = makeAs('h'),
23083      asDays = makeAs('d'),
23084      asWeeks = makeAs('w'),
23085      asMonths = makeAs('M'),
23086      asQuarters = makeAs('Q'),
23087      asYears = makeAs('y');
23088
23089  function clone$1() {
23090    return createDuration(this);
23091  }
23092
23093  function get$2(units) {
23094    units = normalizeUnits(units);
23095    return this.isValid() ? this[units + 's']() : NaN;
23096  }
23097
23098  function makeGetter(name) {
23099    return function () {
23100      return this.isValid() ? this._data[name] : NaN;
23101    };
23102  }
23103
23104  var milliseconds = makeGetter('milliseconds'),
23105      seconds = makeGetter('seconds'),
23106      minutes = makeGetter('minutes'),
23107      hours = makeGetter('hours'),
23108      days = makeGetter('days'),
23109      months = makeGetter('months'),
23110      years = makeGetter('years');
23111
23112  function weeks() {
23113    return absFloor(this.days() / 7);
23114  }
23115
23116  var round = Math.round,
23117      thresholds = {
23118    ss: 44,
23119    // a few seconds to seconds
23120    s: 45,
23121    // seconds to minute
23122    m: 45,
23123    // minutes to hour
23124    h: 22,
23125    // hours to day
23126    d: 26,
23127    // days to month/week
23128    w: null,
23129    // weeks to month
23130    M: 11 // months to year
23131
23132  }; // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
23133
23134  function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
23135    return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
23136  }
23137
23138  function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
23139    var duration = createDuration(posNegDuration).abs(),
23140        seconds = round(duration.as('s')),
23141        minutes = round(duration.as('m')),
23142        hours = round(duration.as('h')),
23143        days = round(duration.as('d')),
23144        months = round(duration.as('M')),
23145        weeks = round(duration.as('w')),
23146        years = round(duration.as('y')),
23147        a = seconds <= thresholds.ss && ['s', seconds] || seconds < thresholds.s && ['ss', seconds] || minutes <= 1 && ['m'] || minutes < thresholds.m && ['mm', minutes] || hours <= 1 && ['h'] || hours < thresholds.h && ['hh', hours] || days <= 1 && ['d'] || days < thresholds.d && ['dd', days];
23148
23149    if (thresholds.w != null) {
23150      a = a || weeks <= 1 && ['w'] || weeks < thresholds.w && ['ww', weeks];
23151    }
23152
23153    a = a || months <= 1 && ['M'] || months < thresholds.M && ['MM', months] || years <= 1 && ['y'] || ['yy', years];
23154    a[2] = withoutSuffix;
23155    a[3] = +posNegDuration > 0;
23156    a[4] = locale;
23157    return substituteTimeAgo.apply(null, a);
23158  } // This function allows you to set the rounding function for relative time strings
23159
23160
23161  function getSetRelativeTimeRounding(roundingFunction) {
23162    if (roundingFunction === undefined) {
23163      return round;
23164    }
23165
23166    if (typeof roundingFunction === 'function') {
23167      round = roundingFunction;
23168      return true;
23169    }
23170
23171    return false;
23172  } // This function allows you to set a threshold for relative time strings
23173
23174
23175  function getSetRelativeTimeThreshold(threshold, limit) {
23176    if (thresholds[threshold] === undefined) {
23177      return false;
23178    }
23179
23180    if (limit === undefined) {
23181      return thresholds[threshold];
23182    }
23183
23184    thresholds[threshold] = limit;
23185
23186    if (threshold === 's') {
23187      thresholds.ss = limit - 1;
23188    }
23189
23190    return true;
23191  }
23192
23193  function humanize(argWithSuffix, argThresholds) {
23194    if (!this.isValid()) {
23195      return this.localeData().invalidDate();
23196    }
23197
23198    var withSuffix = false,
23199        th = thresholds,
23200        locale,
23201        output;
23202
23203    if (_typeof(argWithSuffix) === 'object') {
23204      argThresholds = argWithSuffix;
23205      argWithSuffix = false;
23206    }
23207
23208    if (typeof argWithSuffix === 'boolean') {
23209      withSuffix = argWithSuffix;
23210    }
23211
23212    if (_typeof(argThresholds) === 'object') {
23213      th = Object.assign({}, thresholds, argThresholds);
23214
23215      if (argThresholds.s != null && argThresholds.ss == null) {
23216        th.ss = argThresholds.s - 1;
23217      }
23218    }
23219
23220    locale = this.localeData();
23221    output = relativeTime$1(this, !withSuffix, th, locale);
23222
23223    if (withSuffix) {
23224      output = locale.pastFuture(+this, output);
23225    }
23226
23227    return locale.postformat(output);
23228  }
23229
23230  var abs$1 = Math.abs;
23231
23232  function sign(x) {
23233    return (x > 0) - (x < 0) || +x;
23234  }
23235
23236  function toISOString$1() {
23237    // for ISO strings we do not use the normal bubbling rules:
23238    //  * milliseconds bubble up until they become hours
23239    //  * days do not bubble at all
23240    //  * months bubble up until they become years
23241    // This is because there is no context-free conversion between hours and days
23242    // (think of clock changes)
23243    // and also not between days and months (28-31 days per month)
23244    if (!this.isValid()) {
23245      return this.localeData().invalidDate();
23246    }
23247
23248    var seconds = abs$1(this._milliseconds) / 1000,
23249        days = abs$1(this._days),
23250        months = abs$1(this._months),
23251        minutes,
23252        hours,
23253        years,
23254        s,
23255        total = this.asSeconds(),
23256        totalSign,
23257        ymSign,
23258        daysSign,
23259        hmsSign;
23260
23261    if (!total) {
23262      // this is the same as C#'s (Noda) and python (isodate)...
23263      // but not other JS (goog.date)
23264      return 'P0D';
23265    } // 3600 seconds -> 60 minutes -> 1 hour
23266
23267
23268    minutes = absFloor(seconds / 60);
23269    hours = absFloor(minutes / 60);
23270    seconds %= 60;
23271    minutes %= 60; // 12 months -> 1 year
23272
23273    years = absFloor(months / 12);
23274    months %= 12; // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
23275
23276    s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
23277    totalSign = total < 0 ? '-' : '';
23278    ymSign = sign(this._months) !== sign(total) ? '-' : '';
23279    daysSign = sign(this._days) !== sign(total) ? '-' : '';
23280    hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
23281    return totalSign + 'P' + (years ? ymSign + years + 'Y' : '') + (months ? ymSign + months + 'M' : '') + (days ? daysSign + days + 'D' : '') + (hours || minutes || seconds ? 'T' : '') + (hours ? hmsSign + hours + 'H' : '') + (minutes ? hmsSign + minutes + 'M' : '') + (seconds ? hmsSign + s + 'S' : '');
23282  }
23283
23284  var proto$2 = Duration.prototype;
23285  proto$2.isValid = isValid$1;
23286  proto$2.abs = abs;
23287  proto$2.add = add$1;
23288  proto$2.subtract = subtract$1;
23289  proto$2.as = as;
23290  proto$2.asMilliseconds = asMilliseconds;
23291  proto$2.asSeconds = asSeconds;
23292  proto$2.asMinutes = asMinutes;
23293  proto$2.asHours = asHours;
23294  proto$2.asDays = asDays;
23295  proto$2.asWeeks = asWeeks;
23296  proto$2.asMonths = asMonths;
23297  proto$2.asQuarters = asQuarters;
23298  proto$2.asYears = asYears;
23299  proto$2.valueOf = valueOf$1;
23300  proto$2._bubble = bubble;
23301  proto$2.clone = clone$1;
23302  proto$2.get = get$2;
23303  proto$2.milliseconds = milliseconds;
23304  proto$2.seconds = seconds;
23305  proto$2.minutes = minutes;
23306  proto$2.hours = hours;
23307  proto$2.days = days;
23308  proto$2.weeks = weeks;
23309  proto$2.months = months;
23310  proto$2.years = years;
23311  proto$2.humanize = humanize;
23312  proto$2.toISOString = toISOString$1;
23313  proto$2.toString = toISOString$1;
23314  proto$2.toJSON = toISOString$1;
23315  proto$2.locale = locale;
23316  proto$2.localeData = localeData;
23317  proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
23318  proto$2.lang = lang; // FORMATTING
23319
23320  addFormatToken('X', 0, 0, 'unix');
23321  addFormatToken('x', 0, 0, 'valueOf'); // PARSING
23322
23323  addRegexToken('x', matchSigned);
23324  addRegexToken('X', matchTimestamp);
23325  addParseToken('X', function (input, array, config) {
23326    config._d = new Date(parseFloat(input) * 1000);
23327  });
23328  addParseToken('x', function (input, array, config) {
23329    config._d = new Date(toInt(input));
23330  }); //! moment.js
23331
23332  hooks.version = '2.29.4';
23333  setHookCallback(createLocal);
23334  hooks.fn = proto;
23335  hooks.min = min;
23336  hooks.max = max;
23337  hooks.now = now;
23338  hooks.utc = createUTC;
23339  hooks.unix = createUnix;
23340  hooks.months = listMonths;
23341  hooks.isDate = isDate;
23342  hooks.locale = getSetGlobalLocale;
23343  hooks.invalid = createInvalid;
23344  hooks.duration = createDuration;
23345  hooks.isMoment = isMoment;
23346  hooks.weekdays = listWeekdays;
23347  hooks.parseZone = createInZone;
23348  hooks.localeData = getLocale;
23349  hooks.isDuration = isDuration;
23350  hooks.monthsShort = listMonthsShort;
23351  hooks.weekdaysMin = listWeekdaysMin;
23352  hooks.defineLocale = defineLocale;
23353  hooks.updateLocale = updateLocale;
23354  hooks.locales = listLocales;
23355  hooks.weekdaysShort = listWeekdaysShort;
23356  hooks.normalizeUnits = normalizeUnits;
23357  hooks.relativeTimeRounding = getSetRelativeTimeRounding;
23358  hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
23359  hooks.calendarFormat = getCalendarFormat;
23360  hooks.prototype = proto; // currently HTML5 input type only supports 24-hour formats
23361
23362  hooks.HTML5_FMT = {
23363    DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',
23364    // <input type="datetime-local" />
23365    DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',
23366    // <input type="datetime-local" step="1" />
23367    DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',
23368    // <input type="datetime-local" step="0.001" />
23369    DATE: 'YYYY-MM-DD',
23370    // <input type="date" />
23371    TIME: 'HH:mm',
23372    // <input type="time" />
23373    TIME_SECONDS: 'HH:mm:ss',
23374    // <input type="time" step="1" />
23375    TIME_MS: 'HH:mm:ss.SSS',
23376    // <input type="time" step="0.001" />
23377    WEEK: 'GGGG-[W]WW',
23378    // <input type="week" />
23379    MONTH: 'YYYY-MM' // <input type="month" />
23380
23381  };
23382  return hooks;
23383});
23384/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../sfra-webpack-builder/node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
23385
23386/***/ }),
23387
vendor: 25,745 bytes, lines 23388-24123
23388/***/ "../autobahn_client_core/node_modules/regenerator-runtime/runtime.js":
23389/*!***************************************************************************!*\
23390  !*** ../autobahn_client_core/node_modules/regenerator-runtime/runtime.js ***!
23391  \***************************************************************************/
23392/*! no static exports found */
23393/***/ (function(module, exports, __webpack_require__) {
23394
23395/* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
23396
23397/**
23398 * Copyright (c) 2014-present, Facebook, Inc.
23399 *
23400 * This source code is licensed under the MIT license found in the
23401 * LICENSE file in the root directory of this source tree.
23402 */
23403var runtime = function (exports) {
23404  "use strict";
23405
23406  var Op = Object.prototype;
23407  var hasOwn = Op.hasOwnProperty;
23408  var undefined; // More compressible than void 0.
23409
23410  var $Symbol = typeof Symbol === "function" ? Symbol : {};
23411  var iteratorSymbol = $Symbol.iterator || "@@iterator";
23412  var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
23413  var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
23414
23415  function define(obj, key, value) {
23416    Object.defineProperty(obj, key, {
23417      value: value,
23418      enumerable: true,
23419      configurable: true,
23420      writable: true
23421    });
23422    return obj[key];
23423  }
23424
23425  try {
23426    // IE 8 has a broken Object.defineProperty that only works on DOM objects.
23427    define({}, "");
23428  } catch (err) {
23429    define = function define(obj, key, value) {
23430      return obj[key] = value;
23431    };
23432  }
23433
23434  function wrap(innerFn, outerFn, self, tryLocsList) {
23435    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
23436    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
23437    var generator = Object.create(protoGenerator.prototype);
23438    var context = new Context(tryLocsList || []); // The ._invoke method unifies the implementations of the .next,
23439    // .throw, and .return methods.
23440
23441    generator._invoke = makeInvokeMethod(innerFn, self, context);
23442    return generator;
23443  }
23444
23445  exports.wrap = wrap; // Try/catch helper to minimize deoptimizations. Returns a completion
23446  // record like context.tryEntries[i].completion. This interface could
23447  // have been (and was previously) designed to take a closure to be
23448  // invoked without arguments, but in all the cases we care about we
23449  // already have an existing method we want to call, so there's no need
23450  // to create a new function object. We can even get away with assuming
23451  // the method takes exactly one argument, since that happens to be true
23452  // in every case, so we don't have to touch the arguments object. The
23453  // only additional allocation required is the completion record, which
23454  // has a stable shape and so hopefully should be cheap to allocate.
23455
23456  function tryCatch(fn, obj, arg) {
23457    try {
23458      return {
23459        type: "normal",
23460        arg: fn.call(obj, arg)
23461      };
23462    } catch (err) {
23463      return {
23464        type: "throw",
23465        arg: err
23466      };
23467    }
23468  }
23469
23470  var GenStateSuspendedStart = "suspendedStart";
23471  var GenStateSuspendedYield = "suspendedYield";
23472  var GenStateExecuting = "executing";
23473  var GenStateCompleted = "completed"; // Returning this object from the innerFn has the same effect as
23474  // breaking out of the dispatch switch statement.
23475
23476  var ContinueSentinel = {}; // Dummy constructor functions that we use as the .constructor and
23477  // .constructor.prototype properties for functions that return Generator
23478  // objects. For full spec compliance, you may wish to configure your
23479  // minifier not to mangle the names of these two functions.
23480
23481  function Generator() {}
23482
23483  function GeneratorFunction() {}
23484
23485  function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that
23486  // don't natively support it.
23487
23488
23489  var IteratorPrototype = {};
23490  define(IteratorPrototype, iteratorSymbol, function () {
23491    return this;
23492  });
23493  var getProto = Object.getPrototypeOf;
23494  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
23495
23496  if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
23497    // This environment has a native %IteratorPrototype%; use it instead
23498    // of the polyfill.
23499    IteratorPrototype = NativeIteratorPrototype;
23500  }
23501
23502  var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
23503  GeneratorFunction.prototype = GeneratorFunctionPrototype;
23504  define(Gp, "constructor", GeneratorFunctionPrototype);
23505  define(GeneratorFunctionPrototype, "constructor", GeneratorFunction);
23506  GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"); // Helper for defining the .next, .throw, and .return methods of the
23507  // Iterator interface in terms of a single ._invoke method.
23508
23509  function defineIteratorMethods(prototype) {
23510    ["next", "throw", "return"].forEach(function (method) {
23511      define(prototype, method, function (arg) {
23512        return this._invoke(method, arg);
23513      });
23514    });
23515  }
23516
23517  exports.isGeneratorFunction = function (genFun) {
23518    var ctor = typeof genFun === "function" && genFun.constructor;
23519    return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can
23520    // do is to check its .name property.
23521    (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
23522  };
23523
23524  exports.mark = function (genFun) {
23525    if (Object.setPrototypeOf) {
23526      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
23527    } else {
23528      genFun.__proto__ = GeneratorFunctionPrototype;
23529      define(genFun, toStringTagSymbol, "GeneratorFunction");
23530    }
23531
23532    genFun.prototype = Object.create(Gp);
23533    return genFun;
23534  }; // Within the body of any async function, `await x` is transformed to
23535  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
23536  // `hasOwn.call(value, "__await")` to determine if the yielded value is
23537  // meant to be awaited.
23538
23539
23540  exports.awrap = function (arg) {
23541    return {
23542      __await: arg
23543    };
23544  };
23545
23546  function AsyncIterator(generator, PromiseImpl) {
23547    function invoke(method, arg, resolve, reject) {
23548      var record = tryCatch(generator[method], generator, arg);
23549
23550      if (record.type === "throw") {
23551        reject(record.arg);
23552      } else {
23553        var result = record.arg;
23554        var value = result.value;
23555
23556        if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {
23557          return PromiseImpl.resolve(value.__await).then(function (value) {
23558            invoke("next", value, resolve, reject);
23559          }, function (err) {
23560            invoke("throw", err, resolve, reject);
23561          });
23562        }
23563
23564        return PromiseImpl.resolve(value).then(function (unwrapped) {
23565          // When a yielded Promise is resolved, its final value becomes
23566          // the .value of the Promise<{value,done}> result for the
23567          // current iteration.
23568          result.value = unwrapped;
23569          resolve(result);
23570        }, function (error) {
23571          // If a rejected Promise was yielded, throw the rejection back
23572          // into the async generator function so it can be handled there.
23573          return invoke("throw", error, resolve, reject);
23574        });
23575      }
23576    }
23577
23578    var previousPromise;
23579
23580    function enqueue(method, arg) {
23581      function callInvokeWithMethodAndArg() {
23582        return new PromiseImpl(function (resolve, reject) {
23583          invoke(method, arg, resolve, reject);
23584        });
23585      }
23586
23587      return previousPromise = // If enqueue has been called before, then we want to wait until
23588      // all previous Promises have been resolved before calling invoke,
23589      // so that results are always delivered in the correct order. If
23590      // enqueue has not been called before, then it is important to
23591      // call invoke immediately, without waiting on a callback to fire,
23592      // so that the async generator function has the opportunity to do
23593      // any necessary setup in a predictable way. This predictability
23594      // is why the Promise constructor synchronously invokes its
23595      // executor callback, and why async functions synchronously
23596      // execute code before the first await. Since we implement simple
23597      // async functions in terms of async generators, it is especially
23598      // important to get this right, even though it requires care.
23599      previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later
23600      // invocations of the iterator.
23601      callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
23602    } // Define the unified helper method that is used to implement .next,
23603    // .throw, and .return (see defineIteratorMethods).
23604
23605
23606    this._invoke = enqueue;
23607  }
23608
23609  defineIteratorMethods(AsyncIterator.prototype);
23610  define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
23611    return this;
23612  });
23613  exports.AsyncIterator = AsyncIterator; // Note that simple async functions are implemented on top of
23614  // AsyncIterator objects; they just return a Promise for the value of
23615  // the final result produced by the iterator.
23616
23617  exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
23618    if (PromiseImpl === void 0) PromiseImpl = Promise;
23619    var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
23620    return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
23621    : iter.next().then(function (result) {
23622      return result.done ? result.value : iter.next();
23623    });
23624  };
23625
23626  function makeInvokeMethod(innerFn, self, context) {
23627    var state = GenStateSuspendedStart;
23628    return function invoke(method, arg) {
23629      if (state === GenStateExecuting) {
23630        throw new Error("Generator is already running");
23631      }
23632
23633      if (state === GenStateCompleted) {
23634        if (method === "throw") {
23635          throw arg;
23636        } // Be forgiving, per 25.3.3.3.3 of the spec:
23637        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
23638
23639
23640        return doneResult();
23641      }
23642
23643      context.method = method;
23644      context.arg = arg;
23645
23646      while (true) {
23647        var delegate = context.delegate;
23648
23649        if (delegate) {
23650          var delegateResult = maybeInvokeDelegate(delegate, context);
23651
23652          if (delegateResult) {
23653            if (delegateResult === ContinueSentinel) continue;
23654            return delegateResult;
23655          }
23656        }
23657
23658        if (context.method === "next") {
23659          // Setting context._sent for legacy support of Babel's
23660          // function.sent implementation.
23661          context.sent = context._sent = context.arg;
23662        } else if (context.method === "throw") {
23663          if (state === GenStateSuspendedStart) {
23664            state = GenStateCompleted;
23665            throw context.arg;
23666          }
23667
23668          context.dispatchException(context.arg);
23669        } else if (context.method === "return") {
23670          context.abrupt("return", context.arg);
23671        }
23672
23673        state = GenStateExecuting;
23674        var record = tryCatch(innerFn, self, context);
23675
23676        if (record.type === "normal") {
23677          // If an exception is thrown from innerFn, we leave state ===
23678          // GenStateExecuting and loop back for another invocation.
23679          state = context.done ? GenStateCompleted : GenStateSuspendedYield;
23680
23681          if (record.arg === ContinueSentinel) {
23682            continue;
23683          }
23684
23685          return {
23686            value: record.arg,
23687            done: context.done
23688          };
23689        } else if (record.type === "throw") {
23690          state = GenStateCompleted; // Dispatch the exception by looping back around to the
23691          // context.dispatchException(context.arg) call above.
23692
23693          context.method = "throw";
23694          context.arg = record.arg;
23695        }
23696      }
23697    };
23698  } // Call delegate.iterator[context.method](context.arg) and handle the
23699  // result, either by returning a { value, done } result from the
23700  // delegate iterator, or by modifying context.method and context.arg,
23701  // setting context.delegate to null, and returning the ContinueSentinel.
23702
23703
23704  function maybeInvokeDelegate(delegate, context) {
23705    var method = delegate.iterator[context.method];
23706
23707    if (method === undefined) {
23708      // A .throw or .return when the delegate iterator has no .throw
23709      // method always terminates the yield* loop.
23710      context.delegate = null;
23711
23712      if (context.method === "throw") {
23713        // Note: ["return"] must be used for ES3 parsing compatibility.
23714        if (delegate.iterator["return"]) {
23715          // If the delegate iterator has a return method, give it a
23716          // chance to clean up.
23717          context.method = "return";
23718          context.arg = undefined;
23719          maybeInvokeDelegate(delegate, context);
23720
23721          if (context.method === "throw") {
23722            // If maybeInvokeDelegate(context) changed context.method from
23723            // "return" to "throw", let that override the TypeError below.
23724            return ContinueSentinel;
23725          }
23726        }
23727
23728        context.method = "throw";
23729        context.arg = new TypeError("The iterator does not provide a 'throw' method");
23730      }
23731
23732      return ContinueSentinel;
23733    }
23734
23735    var record = tryCatch(method, delegate.iterator, context.arg);
23736
23737    if (record.type === "throw") {
23738      context.method = "throw";
23739      context.arg = record.arg;
23740      context.delegate = null;
23741      return ContinueSentinel;
23742    }
23743
23744    var info = record.arg;
23745
23746    if (!info) {
23747      context.method = "throw";
23748      context.arg = new TypeError("iterator result is not an object");
23749      context.delegate = null;
23750      return ContinueSentinel;
23751    }
23752
23753    if (info.done) {
23754      // Assign the result of the finished delegate to the temporary
23755      // variable specified by delegate.resultName (see delegateYield).
23756      context[delegate.resultName] = info.value; // Resume execution at the desired location (see delegateYield).
23757
23758      context.next = delegate.nextLoc; // If context.method was "throw" but the delegate handled the
23759      // exception, let the outer generator proceed normally. If
23760      // context.method was "next", forget context.arg since it has been
23761      // "consumed" by the delegate iterator. If context.method was
23762      // "return", allow the original .return call to continue in the
23763      // outer generator.
23764
23765      if (context.method !== "return") {
23766        context.method = "next";
23767        context.arg = undefined;
23768      }
23769    } else {
23770      // Re-yield the result returned by the delegate method.
23771      return info;
23772    } // The delegate iterator is finished, so forget it and continue with
23773    // the outer generator.
23774
23775
23776    context.delegate = null;
23777    return ContinueSentinel;
23778  } // Define Generator.prototype.{next,throw,return} in terms of the
23779  // unified ._invoke helper method.
23780
23781
23782  defineIteratorMethods(Gp);
23783  define(Gp, toStringTagSymbol, "Generator"); // A Generator should always return itself as the iterator object when the
23784  // @@iterator function is called on it. Some browsers' implementations of the
23785  // iterator prototype chain incorrectly implement this, causing the Generator
23786  // object to not be returned from this call. This ensures that doesn't happen.
23787  // See https://github.com/facebook/regenerator/issues/274 for more details.
23788
23789  define(Gp, iteratorSymbol, function () {
23790    return this;
23791  });
23792  define(Gp, "toString", function () {
23793    return "[object Generator]";
23794  });
23795
23796  function pushTryEntry(locs) {
23797    var entry = {
23798      tryLoc: locs[0]
23799    };
23800
23801    if (1 in locs) {
23802      entry.catchLoc = locs[1];
23803    }
23804
23805    if (2 in locs) {
23806      entry.finallyLoc = locs[2];
23807      entry.afterLoc = locs[3];
23808    }
23809
23810    this.tryEntries.push(entry);
23811  }
23812
23813  function resetTryEntry(entry) {
23814    var record = entry.completion || {};
23815    record.type = "normal";
23816    delete record.arg;
23817    entry.completion = record;
23818  }
23819
23820  function Context(tryLocsList) {
23821    // The root entry object (effectively a try statement without a catch
23822    // or a finally block) gives us a place to store values thrown from
23823    // locations where there is no enclosing try statement.
23824    this.tryEntries = [{
23825      tryLoc: "root"
23826    }];
23827    tryLocsList.forEach(pushTryEntry, this);
23828    this.reset(true);
23829  }
23830
23831  exports.keys = function (object) {
23832    var keys = [];
23833
23834    for (var key in object) {
23835      keys.push(key);
23836    }
23837
23838    keys.reverse(); // Rather than returning an object with a next method, we keep
23839    // things simple and return the next function itself.
23840
23841    return function next() {
23842      while (keys.length) {
23843        var key = keys.pop();
23844
23845        if (key in object) {
23846          next.value = key;
23847          next.done = false;
23848          return next;
23849        }
23850      } // To avoid creating an additional object, we just hang the .value
23851      // and .done properties off the next function object itself. This
23852      // also ensures that the minifier will not anonymize the function.
23853
23854
23855      next.done = true;
23856      return next;
23857    };
23858  };
23859
23860  function values(iterable) {
23861    if (iterable) {
23862      var iteratorMethod = iterable[iteratorSymbol];
23863
23864      if (iteratorMethod) {
23865        return iteratorMethod.call(iterable);
23866      }
23867
23868      if (typeof iterable.next === "function") {
23869        return iterable;
23870      }
23871
23872      if (!isNaN(iterable.length)) {
23873        var i = -1,
23874            next = function next() {
23875          while (++i < iterable.length) {
23876            if (hasOwn.call(iterable, i)) {
23877              next.value = iterable[i];
23878              next.done = false;
23879              return next;
23880            }
23881          }
23882
23883          next.value = undefined;
23884          next.done = true;
23885          return next;
23886        };
23887
23888        return next.next = next;
23889      }
23890    } // Return an iterator with no values.
23891
23892
23893    return {
23894      next: doneResult
23895    };
23896  }
23897
23898  exports.values = values;
23899
23900  function doneResult() {
23901    return {
23902      value: undefined,
23903      done: true
23904    };
23905  }
23906
23907  Context.prototype = {
23908    constructor: Context,
23909    reset: function reset(skipTempReset) {
23910      this.prev = 0;
23911      this.next = 0; // Resetting context._sent for legacy support of Babel's
23912      // function.sent implementation.
23913
23914      this.sent = this._sent = undefined;
23915      this.done = false;
23916      this.delegate = null;
23917      this.method = "next";
23918      this.arg = undefined;
23919      this.tryEntries.forEach(resetTryEntry);
23920
23921      if (!skipTempReset) {
23922        for (var name in this) {
23923          // Not sure about the optimal order of these conditions:
23924          if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
23925            this[name] = undefined;
23926          }
23927        }
23928      }
23929    },
23930    stop: function stop() {
23931      this.done = true;
23932      var rootEntry = this.tryEntries[0];
23933      var rootRecord = rootEntry.completion;
23934
23935      if (rootRecord.type === "throw") {
23936        throw rootRecord.arg;
23937      }
23938
23939      return this.rval;
23940    },
23941    dispatchException: function dispatchException(exception) {
23942      if (this.done) {
23943        throw exception;
23944      }
23945
23946      var context = this;
23947
23948      function handle(loc, caught) {
23949        record.type = "throw";
23950        record.arg = exception;
23951        context.next = loc;
23952
23953        if (caught) {
23954          // If the dispatched exception was caught by a catch block,
23955          // then let that catch block handle the exception normally.
23956          context.method = "next";
23957          context.arg = undefined;
23958        }
23959
23960        return !!caught;
23961      }
23962
23963      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
23964        var entry = this.tryEntries[i];
23965        var record = entry.completion;
23966
23967        if (entry.tryLoc === "root") {
23968          // Exception thrown outside of any try block that could handle
23969          // it, so set the completion value of the entire function to
23970          // throw the exception.
23971          return handle("end");
23972        }
23973
23974        if (entry.tryLoc <= this.prev) {
23975          var hasCatch = hasOwn.call(entry, "catchLoc");
23976          var hasFinally = hasOwn.call(entry, "finallyLoc");
23977
23978          if (hasCatch && hasFinally) {
23979            if (this.prev < entry.catchLoc) {
23980              return handle(entry.catchLoc, true);
23981            } else if (this.prev < entry.finallyLoc) {
23982              return handle(entry.finallyLoc);
23983            }
23984          } else if (hasCatch) {
23985            if (this.prev < entry.catchLoc) {
23986              return handle(entry.catchLoc, true);
23987            }
23988          } else if (hasFinally) {
23989            if (this.prev < entry.finallyLoc) {
23990              return handle(entry.finallyLoc);
23991            }
23992          } else {
23993            throw new Error("try statement without catch or finally");
23994          }
23995        }
23996      }
23997    },
23998    abrupt: function abrupt(type, arg) {
23999      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
24000        var entry = this.tryEntries[i];
24001
24002        if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
24003          var finallyEntry = entry;
24004          break;
24005        }
24006      }
24007
24008      if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
24009        // Ignore the finally entry if control is not jumping to a
24010        // location outside the try/catch block.
24011        finallyEntry = null;
24012      }
24013
24014      var record = finallyEntry ? finallyEntry.completion : {};
24015      record.type = type;
24016      record.arg = arg;
24017
24018      if (finallyEntry) {
24019        this.method = "next";
24020        this.next = finallyEntry.finallyLoc;
24021        return ContinueSentinel;
24022      }
24023
24024      return this.complete(record);
24025    },
24026    complete: function complete(record, afterLoc) {
24027      if (record.type === "throw") {
24028        throw record.arg;
24029      }
24030
24031      if (record.type === "break" || record.type === "continue") {
24032        this.next = record.arg;
24033      } else if (record.type === "return") {
24034        this.rval = this.arg = record.arg;
24035        this.method = "return";
24036        this.next = "end";
24037      } else if (record.type === "normal" && afterLoc) {
24038        this.next = afterLoc;
24039      }
24040
24041      return ContinueSentinel;
24042    },
24043    finish: function finish(finallyLoc) {
24044      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
24045        var entry = this.tryEntries[i];
24046
24047        if (entry.finallyLoc === finallyLoc) {
24048          this.complete(entry.completion, entry.afterLoc);
24049          resetTryEntry(entry);
24050          return ContinueSentinel;
24051        }
24052      }
24053    },
24054    "catch": function _catch(tryLoc) {
24055      for (var i = this.tryEntries.length - 1; i >= 0; --i) {
24056        var entry = this.tryEntries[i];
24057
24058        if (entry.tryLoc === tryLoc) {
24059          var record = entry.completion;
24060
24061          if (record.type === "throw") {
24062            var thrown = record.arg;
24063            resetTryEntry(entry);
24064          }
24065
24066          return thrown;
24067        }
24068      } // The context.catch method must only be called with a location
24069      // argument that corresponds to a known catch block.
24070
24071
24072      throw new Error("illegal catch attempt");
24073    },
24074    delegateYield: function delegateYield(iterable, resultName, nextLoc) {
24075      this.delegate = {
24076        iterator: values(iterable),
24077        resultName: resultName,
24078        nextLoc: nextLoc
24079      };
24080
24081      if (this.method === "next") {
24082        // Deliberately forget the last sent value so that we don't
24083        // accidentally pass it on to the delegate.
24084        this.arg = undefined;
24085      }
24086
24087      return ContinueSentinel;
24088    }
24089  }; // Regardless of whether this script is executing as a CommonJS module
24090  // or not, return the runtime object so that we can declare the variable
24091  // regeneratorRuntime in the outer scope, which allows this module to be
24092  // injected easily by `bin/regenerator --include-runtime script.js`.
24093
24094  return exports;
24095}( // If this script is executing as a CommonJS module, use module.exports
24096// as the regeneratorRuntime namespace. Otherwise create a new empty
24097// object. Either way, the resulting object will be used to initialize
24098// the regeneratorRuntime variable at the top of this file.
24099( false ? undefined : _typeof(module)) === "object" ? module.exports : {});
24100
24101try {
24102  regeneratorRuntime = runtime;
24103} catch (accidentalStrictMode) {
24104  // This module should not be running in strict mode, so the above
24105  // assignment should always work unless something is misconfigured. Just
24106  // in case runtime.js accidentally runs in strict mode, in modern engines
24107  // we can explicitly access globalThis. In older engines we can escape
24108  // strict mode using a global Function call. This could conceivably fail
24109  // if a Content Security Policy forbids using Function, but in that case
24110  // the proper solution is to fix the accidental strict mode problem. If
24111  // you've misconfigured your bundler to force strict mode and applied a
24112  // CSP to forbid Function, and you're not willing to fix either of those
24113  // problems, please detail your unique predicament in a GitHub issue.
24114  if ((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === "object") {
24115    globalThis.regeneratorRuntime = runtime;
24116  } else {
24117    Function("r", "regeneratorRuntime = r")(runtime);
24118  }
24119}
24120/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../sfra-webpack-builder/node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
24121
24122/***/ }),
24123
24124/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart.js":
24125/*!*********************************************************************************************!*\
24126  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart.js ***!
24127  \*********************************************************************************************/
24128/*! no static exports found */
24129/***/ (function(module, exports, __webpack_require__) {
24130
24131"use strict";
24132
24133
24134var _cart = __webpack_require__(/*! ./cart/cart */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart/cart.js");
24135
24136var processInclude = __webpack_require__(/*! base/util */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js");
24137
24138var baseFiles = {
24139  cart: function cart() {
24140    return _cart.init.call(_cart);
24141  }
24142};
24143module.exports = {
24144  baseFiles: baseFiles,
24145  loadFunctions: function loadFunctions() {
24146    Object.keys(baseFiles).forEach(function (key) {
24147      processInclude(baseFiles[key]);
24148    });
24149  }
24150};
24151
24152/***/ }),
24153
24154/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart/cart.js":
24155/*!**************************************************************************************************!*\
24156  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart/cart.js ***!
24157  \**************************************************************************************************/
24158/*! no static exports found */
24159/***/ (function(module, exports, __webpack_require__) {
24160
24161"use strict";
24162
24163
24164var focusHelper = __webpack_require__(/*! base/components/focus */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js");
24165
24166var formValidation = __webpack_require__(/*! base/components/formValidation */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js");
24167
24168var base = __webpack_require__(/*! core/product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js");
24169/**
24170 * Retrieves the relevant pid value (copied from base so we dont load the entire file 2x for this)
24171 * @param {jquery} $el - DOM container for a given add to cart button
24172 * @return {string} - value to be used when adding product to cart
24173 */
24174
24175
24176function getPidValue($el) {
24177  var pid;
24178
24179  if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {
24180    pid = $($el).closest('.modal-content').find('.product-quickview').data('pid');
24181  } else if ($('.product-set-detail').length || $('.product-set').length) {
24182    pid = $($el).closest('.product-detail').find('.product-id').text();
24183  } else {
24184    pid = $('.product-detail:not(".bundle-item")').data('pid');
24185  }
24186
24187  return pid;
24188}
24189/**
24190 * appends params to a url
24191 * @param {string} url - Original url
24192 * @param {Object} params - Parameters to append
24193 * @returns {string} result url with appended parameters
24194 */
24195
24196
24197function appendToUrl(url, params) {
24198  var newUrl = url;
24199  newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {
24200    return key + '=' + encodeURIComponent(params[key]);
24201  }).join('&');
24202  return newUrl;
24203}
24204/**
24205 * Checks whether the basket is valid. if invalid displays error message and disables
24206 * checkout button
24207 * @param {Object} data - AJAX response from the server
24208 */
24209
24210
24211function validateBasket(data) {
24212  if (data.valid.error) {
24213    if (data.valid.message) {
24214      var errorHtml = '<div class="alert alert-danger alert-dismissible valid-cart-error ' + 'fade show" role="alert">' + '<button type="button" class="close" data-dismiss="alert" aria-label="Close">' + '<span aria-hidden="true">&times;</span>' + '</button>' + data.valid.message + '</div>';
24215      $('.cart-error').append(errorHtml);
24216    } else {
24217      $('.cart').empty().append('<div class="row"> ' + '<div class="col-12 text-center"> ' + '<h1>' + data.resources.emptyCartMsg + '</h1> ' + '</div> ' + '</div>');
24218      $('.number-of-items').empty().append(data.numItems == 1 ? data.resources.numberOfItem : data.resources.numberOfItems);
24219      $('.minicart-quantity').empty().append(data.numItems);
24220      $('.minicart-link').attr({
24221        'aria-label': data.resources.minicartCountOfItems,
24222        title: data.resources.minicartCountOfItems
24223      });
24224      $('.minicart .popover').empty();
24225      $('.minicart .popover').removeClass('show');
24226    }
24227
24228    $('.checkout-btn').addClass('disabled');
24229  } else {
24230    $('.checkout-btn').removeClass('disabled');
24231  }
24232}
24233/**
24234 * re-renders the order totals and the number of items in the cart
24235 * @param {Object} data - AJAX response from the server
24236 */
24237
24238
24239function updateCartTotals(data) {
24240  var $cart = $('.cart');
24241  $cart.find('.number-of-items').empty().append(data.numItems == 1 ? data.resources.numberOfItem : data.resources.numberOfItems);
24242  $cart.find('.shipping-cost span').empty().append(data.totals.totalShippingCost);
24243  $cart.find('.tax-total span').empty().append(data.totals.totalTax);
24244  $cart.find('.grand-total span, .checkout-continue .checkout-btn-grand-total').empty().append(data.totals.grandTotalLessGiftCertificatePaymentInstrumentsFormatted);
24245  $cart.find('.checkout-continue .checkout-btn').attr('data-price', data.totals.grandTotalLessGiftCertificatePaymentInstrumentsFormatted);
24246  $cart.find('.sub-total span').empty().append(data.totals.subTotal);
24247  $('.minicart-quantity').empty().append(data.numItems);
24248  $('.minicart-link').attr({
24249    'aria-label': data.resources.minicartCountOfItems,
24250    title: data.resources.minicartCountOfItems
24251  });
24252
24253  if (data.totals.orderLevelDiscountTotal.value > 0) {
24254    $cart.find('.order-discount').removeClass('hide-order-discount');
24255    $cart.find('.order-discount-total').empty().append('- ' + data.totals.orderLevelDiscountTotal.formatted);
24256  } else {
24257    $cart.find('.order-discount').addClass('hide-order-discount');
24258  }
24259
24260  if (data.totals.shippingLevelDiscountTotal.value > 0) {
24261    $cart.find('.shipping-discount').removeClass('hide-shipping-discount');
24262    $cart.find('.shipping-discount-total span').empty().append('- ' + data.totals.shippingLevelDiscountTotal.formatted);
24263  } else {
24264    $cart.find('.shipping-discount').addClass('hide-shipping-discount');
24265  }
24266
24267  if (data.payment.giftCertificatePaymentInstruments.length) {
24268    $cart.find('.giftcertificate-discount').removeClass('d-none');
24269    $cart.find('.giftcertificate-discount-label').text(data.totals.giftCertificatePaymentInstrumentsLabel);
24270    $cart.find('.giftcertificate-discount-total').text('- ' + data.totals.giftCertificatePaymentInstrumentsTotalFormatted);
24271  } else {
24272    $cart.find('.giftcertificate-discount').addClass('d-none');
24273  }
24274
24275  if (data.totals.grandTotalLessGiftCertificatePaymentInstrumentsValue) {
24276    $cart.find('.cartAdditionalPaymentButtons').removeClass('d-none');
24277  } else {
24278    $cart.find('.cartAdditionalPaymentButtons').addClass('d-none');
24279  }
24280
24281  data.items.forEach(function (item) {
24282    var itemPrice;
24283    var itemTotalPrice;
24284
24285    if (item.productType === 'giftCertificate') {
24286      itemPrice = item.priceTotal.price;
24287      itemTotalPrice = item.priceTotal.price;
24288    } else {
24289      itemPrice = item.renderedPrice;
24290      itemTotalPrice = item.priceTotal.renderedPrice;
24291    }
24292
24293    if (data.totals.orderLevelDiscountTotal.value > 0) {
24294      $cart.find('.coupons-and-promos').empty().append(data.totals.discountsHtml);
24295    }
24296
24297    if (item.renderedPromotions) {
24298      $cart.find('.item-' + item.UUID).empty().append(item.renderedPromotions);
24299    } else {
24300      $cart.find('.item-' + item.UUID).empty();
24301    }
24302
24303    $cart.find('.uuid-' + item.UUID + ' .unit-price').empty().append(itemPrice);
24304    $cart.find('.line-item-price-' + item.UUID + ' .unit-price').empty().append(itemPrice);
24305    $cart.find('.item-total-' + item.UUID).empty().append(itemTotalPrice);
24306  });
24307}
24308/**
24309 * re-renders the order totals and the number of items in the cart
24310 * @param {Object} message - Error message to display
24311 */
24312
24313
24314function createErrorNotification(message) {
24315  var errorHtml = '<div class="alert alert-danger alert-dismissible valid-cart-error ' + 'fade show" role="alert">' + '<button type="button" class="close" data-dismiss="alert" aria-label="Close">' + '<span aria-hidden="true">&times;</span>' + '</button>' + message + '</div>';
24316  $('.cart-error').append(errorHtml);
24317}
24318/**
24319 * re-renders the approaching discount messages
24320 * @param {Object} approachingDiscounts - updated approaching discounts for the cart
24321 */
24322
24323
24324function updateApproachingDiscounts(approachingDiscounts) {
24325  var html = '';
24326  $('.approaching-discounts').empty();
24327
24328  if (approachingDiscounts.length > 0) {
24329    approachingDiscounts.forEach(function (item) {
24330      html += '<div class="single-approaching-discount text-center">' + item.discountMsg + '</div>';
24331    });
24332  }
24333
24334  $('.approaching-discounts').append(html);
24335}
24336/**
24337 * Updates the availability of a product line item
24338 * @param {Object} data - AJAX response from the server
24339 * @param {string} uuid - The uuid of the product line item to update
24340 */
24341
24342
24343function updateAvailability(data, uuid) {
24344  var lineItem;
24345  var messages = '';
24346
24347  for (var i = 0; i < data.items.length; i++) {
24348    if (data.items[i].UUID === uuid) {
24349      lineItem = data.items[i];
24350      break;
24351    }
24352  }
24353
24354  if (lineItem != null) {
24355    $('.availability-' + lineItem.UUID).empty();
24356
24357    if (lineItem.availability) {
24358      if (lineItem.availability.messages) {
24359        lineItem.availability.messages.forEach(function (message) {
24360          messages += '<p class="line-item-attributes">' + message + '</p>';
24361        });
24362      }
24363
24364      if (lineItem.availability.inStockDate) {
24365        messages += '<p class="line-item-attributes line-item-instock-date">' + lineItem.availability.inStockDate + '</p>';
24366      }
24367    }
24368
24369    $('.availability-' + lineItem.UUID).html(messages);
24370  }
24371}
24372/**
24373 * Finds an element in the array that matches search parameter
24374 * @param {array} array - array of items to search
24375 * @param {function} match - function that takes an element and returns a boolean indicating if the match is made
24376 * @returns {Object|null} - returns an element of the array that matched the query.
24377 */
24378
24379
24380function findItem(array, match) {
24381  for (var i = 0, l = array.length; i < l; i++) {
24382    if (match.call(this, array[i])) {
24383      return array[i];
24384    }
24385  }
24386
24387  return null;
24388}
24389/**
24390 * Updates details of a product line item
24391 * @param {Object} data - AJAX response from the server
24392 * @param {string} uuid - The uuid of the product line item to update
24393 */
24394
24395
24396function updateProductDetails(data, uuid) {
24397  $('.card .product-info.uuid-' + uuid).parent().replaceWith(data.renderedTemplate);
24398  base.enableQuantitySteppers();
24399}
24400/**
24401 * Parses the html for a modal window
24402 * @param {string} html - representing the body and footer of the modal window
24403 *
24404 * @return {Object} - Object with properties body and footer.
24405 */
24406
24407
24408function parseHtml(html) {
24409  var $html = $('<div>').append($.parseHTML(html));
24410  var body = $html.find('.product-quickview');
24411  var footer = $html.find('.modal-footer').children();
24412  return {
24413    body: body,
24414    footer: footer
24415  };
24416}
24417/**
24418 * replace content of modal
24419 * @param {string} actionUrl - url to be used to remove product
24420 * @param {string} productID - pid
24421 * @param {string} productName - product name
24422 * @param {string} uuid - uuid
24423 */
24424
24425
24426function confirmDelete(actionUrl, productID, productName, uuid) {
24427  var $deleteConfirmBtn = $('.cart-delete-confirmation-btn');
24428  var $productToRemoveSpan = $('.product-to-remove');
24429  $deleteConfirmBtn.data('pid', productID);
24430  $deleteConfirmBtn.data('action', actionUrl);
24431  $deleteConfirmBtn.data('uuid', uuid);
24432  $productToRemoveSpan.empty().append(productName);
24433}
24434
24435function init() {
24436  $('body').on('click', '.remove-product', function (e) {
24437    e.preventDefault();
24438    var actionUrl = $(this).data('action');
24439    var productID = $(this).data('pid');
24440    var productName = $(this).data('name');
24441    var uuid = $(this).data('uuid');
24442    module.exports.confirmDelete(actionUrl, productID, productName, uuid);
24443  });
24444  $('body').on('afterRemoveFromCart', function (e, data) {
24445    e.preventDefault();
24446    module.exports.confirmDelete(data.actionUrl, data.productID, data.productName, data.uuid);
24447  });
24448  $('body').on('click', '.cart-delete-confirmation-btn', function (e) {
24449    e.preventDefault();
24450    var productID = $(this).data('pid');
24451    var url = $(this).data('action');
24452    var uuid = $(this).data('uuid');
24453    var urlParams = {
24454      pid: productID,
24455      uuid: uuid
24456    };
24457    url = module.exports.appendToUrl(url, urlParams);
24458    $('body > .modal-backdrop').remove();
24459    $('body').trigger('cart:beforeUpdate');
24460    $.spinner().start();
24461    $.ajax({
24462      url: url,
24463      type: 'get',
24464      dataType: 'json',
24465      success: function success(data) {
24466        if (data.basket.items.length === 0) {
24467          $('.cart').empty().append('<div class="row"> ' + '<div class="col-12 text-center"> ' + '<h1>' + data.basket.resources.emptyCartMsg + '</h1> ' + '</div> ' + '</div>');
24468          $('.number-of-items').empty().append(data.basket.resources.numberOfItems);
24469          $('.number-of-items-container').removeClass('text-md-right');
24470          $('.minicart-quantity').empty().append(data.basket.numItems);
24471          $('.minicart-link').attr({
24472            'aria-label': data.basket.resources.minicartCountOfItems,
24473            title: data.basket.resources.minicartCountOfItems
24474          });
24475          $('.minicart .popover').empty();
24476          $('.minicart .popover').removeClass('show');
24477          $('body').removeClass('modal-open');
24478          $('html').removeClass('veiled');
24479        } else {
24480          if (data.toBeDeletedUUIDs && data.toBeDeletedUUIDs.length > 0) {
24481            for (var i = 0; i < data.toBeDeletedUUIDs.length; i++) {
24482              $('.uuid-' + data.toBeDeletedUUIDs[i]).closest('.card').remove();
24483            }
24484          }
24485
24486          $('.uuid-' + uuid).closest('.card').remove();
24487
24488          if (!data.basket.hasBonusProduct) {
24489            $('.bonus-product').remove();
24490          } // NOTE: there's an open issue for problems with removing products with bonus items: https://github.com/SalesforceCommerceCloud/storefront-reference-architecture/issues/748
24491
24492
24493          $('.coupons-and-promos').empty().append(data.basket.totals.discountsHtml);
24494          module.exports.updateCartTotals(data.basket);
24495          module.exports.updateApproachingDiscounts(data.basket.approachingDiscounts);
24496          $('body').trigger('setShippingMethodSelection', data.basket);
24497          module.exports.validateBasket(data.basket);
24498        }
24499
24500        $('body').trigger('cart:update', [data, uuid]);
24501        $.spinner().stop();
24502      },
24503      error: function error(err) {
24504        if (err.responseJSON.redirectUrl) {
24505          window.location.href = err.responseJSON.redirectUrl;
24506        } else {
24507          module.exports.createErrorNotification(err.responseJSON.errorMessage);
24508          $.spinner().stop();
24509        }
24510      }
24511    });
24512  });
24513  $('body').on('quantityStepper:change', function (event, stepper) {
24514    var $stepper = $(stepper);
24515    var isMiniCart = $stepper.closest('.minicart').length > 0;
24516    var selectId = $stepper.closest('.quantity-form').find('select').attr('id');
24517    var $select = $('.cart-page select#' + selectId);
24518    var value = parseInt($stepper.find('input').val()); // if the qty change was triggered from the minicart, manually update cart qty input values
24519
24520    if (isMiniCart) {
24521      var $cartStepper = $select.next('.quantity-stepper');
24522      $cartStepper.find('input').prop('value', value).prop('data-qty', value);
24523    }
24524  });
24525  $('body').on('change', '.quantity-form > .quantity', function () {
24526    var url = $(this).data('action');
24527
24528    if (!url) {
24529      return;
24530    }
24531
24532    var preSelectQty = $(this).data('pre-select-qty');
24533    var quantity = $(this).val();
24534    var productID = $(this).data('pid');
24535    var uuid = $(this).data('uuid');
24536    var urlParams = {
24537      pid: productID,
24538      quantity: quantity,
24539      uuid: uuid
24540    };
24541    url = module.exports.appendToUrl(url, urlParams);
24542    $(this).parents('.card').spinner().start();
24543    $('body').trigger('cart:beforeUpdate');
24544    $.ajax({
24545      url: url,
24546      type: 'get',
24547      context: this,
24548      dataType: 'json',
24549      success: function success(data) {
24550        $('.quantity[data-uuid="' + uuid + '"]').val(quantity);
24551        $('.coupons-and-promos').empty().append(data.totals.discountsHtml);
24552        module.exports.updateCartTotals(data);
24553        module.exports.updateApproachingDiscounts(data.approachingDiscounts);
24554        module.exports.updateAvailability(data, uuid);
24555        module.exports.validateBasket(data);
24556        $(this).data('pre-select-qty', quantity);
24557        $('body').trigger('cart:update', [data, uuid]);
24558        $.spinner().stop();
24559
24560        if ($(this).parents('.product-info').hasClass('bonus-product-line-item') && $('.cart-page').length) {
24561          location.reload();
24562        }
24563      },
24564      error: function error(err) {
24565        if (err.responseJSON.redirectUrl) {
24566          window.location.href = err.responseJSON.redirectUrl;
24567        } else {
24568          module.exports.createErrorNotification(err.responseJSON.errorMessage);
24569          $(this).val(parseInt(preSelectQty, 10));
24570          $.spinner().stop();
24571        }
24572      }
24573    });
24574  });
24575  $('.shippingMethods').change(function () {
24576    var url = $(this).attr('data-actionUrl');
24577    var urlParams = {
24578      methodID: $(this).find(':selected').attr('data-shipping-id')
24579    }; // url = module.exports.appendToUrl(url, urlParams);
24580
24581    $('.totals').spinner().start();
24582    $('body').trigger('cart:beforeShippingMethodSelected');
24583    $.ajax({
24584      url: url,
24585      type: 'post',
24586      dataType: 'json',
24587      data: urlParams,
24588      success: function success(data) {
24589        if (data.error) {
24590          window.location.href = data.redirectUrl;
24591        } else {
24592          $('.coupons-and-promos').empty().append(data.totals.discountsHtml);
24593          module.exports.updateCartTotals(data);
24594          module.exports.updateApproachingDiscounts(data.approachingDiscounts);
24595          module.exports.validateBasket(data);
24596        }
24597
24598        $('body').trigger('cart:shippingMethodSelected', data);
24599        $.spinner().stop();
24600      },
24601      error: function error(err) {
24602        if (err.redirectUrl) {
24603          window.location.href = err.redirectUrl;
24604        } else {
24605          module.exports.createErrorNotification(err.responseJSON.errorMessage);
24606          $.spinner().stop();
24607        }
24608      }
24609    });
24610  });
24611  $('.promo-code-form').submit(function (e) {
24612    e.preventDefault();
24613    var currentItemCount = parseInt($('.minicart-quantity').text(), 10) || 0;
24614    $.spinner().start();
24615    $('.coupon-missing-error').hide();
24616    $('.coupon-error-message').empty();
24617
24618    if (!$('.coupon-code-field').val()) {
24619      $('.promo-code-form .form-control').addClass('is-invalid');
24620      $('.promo-code-form .form-control').attr('aria-describedby', 'missingCouponCode');
24621      $('.coupon-missing-error').show();
24622      $.spinner().stop();
24623      return false;
24624    }
24625
24626    var $form = $('.promo-code-form');
24627    $('.promo-code-form .form-control').removeClass('is-invalid');
24628    $('.coupon-error-message').empty();
24629    $('body').trigger('promotion:beforeUpdate');
24630    $.ajax({
24631      url: $form.attr('action'),
24632      type: 'GET',
24633      dataType: 'json',
24634      data: $form.serialize(),
24635      success: function success(data) {
24636        if (data.error) {
24637          $('.promo-code-form .form-control').addClass('is-invalid');
24638          $('.promo-code-form .form-control').attr('aria-describedby', 'invalidCouponCode');
24639          $('.coupon-error-message').empty().append(data.errorMessage);
24640          $('body').trigger('promotion:error', data);
24641          $('.coupon-code-field').trigger('focus');
24642          $.spinner().stop();
24643        } else {
24644          // If cart item was added/removed via promo code submit
24645          if (['', null, undefined].indexOf(data.numItems) && currentItemCount !== data.numItems) {
24646            // Clean Url Structure of any erroneous parameters
24647            if (window.history && ['', null, undefined].indexOf(data.actionUrls.showUrl) === -1) {
24648              history.replaceState({}, null, data.actionUrls.showUrl);
24649            } // Force uncached reload
24650
24651
24652            window.location.reload(true);
24653          } else {
24654            $('.coupons-and-promos').empty().append(data.totals.discountsHtml);
24655            module.exports.updateCartTotals(data);
24656            module.exports.updateApproachingDiscounts(data.approachingDiscounts);
24657            module.exports.validateBasket(data);
24658            $('body').trigger('promotion:success', data);
24659            $('.coupon-code-field').val('');
24660            $.spinner().stop();
24661          }
24662        }
24663      },
24664      error: function error(err) {
24665        $('body').trigger('promotion:error', err);
24666
24667        if (err.responseJSON.redirectUrl) {
24668          window.location.href = err.responseJSON.redirectUrl;
24669        } else {
24670          module.exports.createErrorNotification(err.errorMessage);
24671          $.spinner().stop();
24672        }
24673      }
24674    });
24675    return false;
24676  });
24677  $('body').on('click', '.remove-coupon', function (e) {
24678    e.preventDefault();
24679    var couponCode = $(this).data('code');
24680    var uuid = $(this).data('uuid');
24681    var $deleteConfirmBtn = $('.delete-coupon-confirmation-btn');
24682    var $productToRemoveSpan = $('.coupon-to-remove');
24683    $deleteConfirmBtn.data('uuid', uuid);
24684    $deleteConfirmBtn.data('code', couponCode);
24685    $productToRemoveSpan.empty().append(couponCode);
24686  });
24687  $('body').on('click', '.delete-coupon-confirmation-btn', function (e) {
24688    e.preventDefault();
24689    var currentItemCount = parseInt($('.minicart-quantity').text(), 10) || 0;
24690    var url = $(this).data('action');
24691    var uuid = $(this).data('uuid');
24692    var couponCode = $(this).data('code');
24693    var urlParams = {
24694      code: couponCode,
24695      uuid: uuid
24696    };
24697    url = module.exports.appendToUrl(url, urlParams);
24698    $('body > .modal-backdrop').remove();
24699    $.spinner().start();
24700    $('body').trigger('promotion:beforeUpdate');
24701    $.ajax({
24702      url: url,
24703      type: 'get',
24704      dataType: 'json',
24705      success: function success(data) {
24706        $('.coupon-uuid-' + uuid).remove(); // If cart item was added/removed via promo code removal
24707
24708        if (['', null, undefined].indexOf(data.numItems) && currentItemCount !== data.numItems) {
24709          // Clean Url Structure of any erroneous parameters
24710          if (window.history && ['', null, undefined].indexOf(data.actionUrls.showUrl) === -1) {
24711            history.replaceState({}, null, data.actionUrls.showUrl);
24712          } // Force uncached reload
24713
24714
24715          window.location.reload(true);
24716        } else {
24717          module.exports.updateCartTotals(data);
24718          module.exports.updateApproachingDiscounts(data.approachingDiscounts);
24719          module.exports.validateBasket(data);
24720          $.spinner().stop();
24721          $('body').trigger('promotion:success', data);
24722        }
24723      },
24724      error: function error(err) {
24725        $('body').trigger('promotion:error', err);
24726
24727        if (err.responseJSON.redirectUrl) {
24728          window.location.href = err.responseJSON.redirectUrl;
24729        } else {
24730          module.exports.createErrorNotification(err.responseJSON.errorMessage);
24731          $.spinner().stop();
24732        }
24733      }
24734    });
24735  });
24736  $('body').on('click', '.cart-page .bonus-product-button', function () {
24737    $.spinner().start();
24738    $(this).addClass('launched-modal');
24739    $.ajax({
24740      url: $(this).data('url'),
24741      method: 'GET',
24742      dataType: 'json',
24743      success: function success(data) {
24744        $('body').trigger('bonusproduct:edit', data);
24745        $.spinner().stop();
24746      },
24747      error: function error() {
24748        $.spinner().stop();
24749      }
24750    });
24751  });
24752  $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {
24753    $('#chooseBonusProductModal').remove();
24754    $('.modal-backdrop').remove();
24755    $('body').removeClass('modal-open');
24756
24757    if ($('.cart-page').length) {
24758      $('.launched-modal .btn-outline-primary').trigger('focus');
24759      $('.launched-modal').removeClass('launched-modal');
24760    } else {
24761      $('.product-detail .add-to-cart').focus();
24762    }
24763  });
24764  $('body').on('change', '.quantity-select', function () {
24765    var selectedQuantity = $(this).val();
24766    $('.modal.show .update-cart-url').data('quantity', selectedQuantity);
24767  });
24768  $('body').on('click', '.update-cart-product-global', function (e) {
24769    e.preventDefault();
24770    var updateProductUrl = $(this).closest('.cart-and-ipay').find('.update-cart-url').val();
24771    var form = $(this).closest('.cart-and-ipay').find('.update-cart-url').data();
24772
24773    if (form) {
24774      form.selectedOptionValueIds = base.methods.getOptions($('#quickViewModal'));
24775      form.pid = module.exports.getPidValue($(this));
24776      $(this).parents('.card').spinner().start();
24777      $('body').trigger('cart:beforeUpdate');
24778
24779      if (updateProductUrl) {
24780        $.ajax({
24781          url: updateProductUrl,
24782          type: 'post',
24783          context: this,
24784          data: form,
24785          dataType: 'json',
24786          success: function success(data) {
24787            $('#quickViewModal').modal('hide');
24788            $('.coupons-and-promos').empty().append(data.cartModel.totals.discountsHtml);
24789            module.exports.updateCartTotals(data.cartModel);
24790            module.exports.updateApproachingDiscounts(data.cartModel.approachingDiscounts);
24791            module.exports.updateAvailability(data.cartModel, form.uuid);
24792            module.exports.updateProductDetails(data, form.uuid);
24793
24794            if (data.uuidToBeDeleted) {
24795              $('.uuid-' + data.uuidToBeDeleted).remove();
24796            }
24797
24798            module.exports.validateBasket(data.cartModel);
24799            $('body').trigger('cart:update', [data, form.uuid]);
24800            $.spinner().stop();
24801          },
24802          error: function error(err) {
24803            if (err.responseJSON.redirectUrl) {
24804              window.location.href = err.responseJSON.redirectUrl;
24805            } else {
24806              module.exports.createErrorNotification(err.responseJSON.errorMessage);
24807              $.spinner().stop();
24808            }
24809          }
24810        });
24811      }
24812    }
24813  });
24814  $('body').on('product:afterAddToCartQuickview', function () {
24815    var verifyCartPage = $('body').find('.page').data('action');
24816
24817    if (verifyCartPage == 'Cart-Show') {
24818      location.reload();
24819    }
24820  }); //responsible for filling edit gift cert modal with information from line item on cart page
24821
24822  $('body').on('click', 'a.edit.editGiftCertificateLineItem', function (e) {
24823    e.preventDefault();
24824    var anchor = $(this);
24825    var uuid = anchor.data('uuid');
24826    var parentContainer = anchor.parents('.product-info.uuid-' + uuid);
24827    var from = parentContainer.find('.dwfrm_giftCertificate_purchase_from-' + uuid).data('value');
24828    var recipient = parentContainer.find('.dwfrm_giftCertificate_purchase_recipient-' + uuid).data('value');
24829    var recipientEmail = parentContainer.find('.dwfrm_giftCertificate_purchase_recipientEmail-' + uuid).data('value');
24830    var message = parentContainer.find('.dwfrm_giftCertificate_purchase_message-' + uuid).attr('title');
24831    var amount = parentContainer.find('.pricing.item-total-' + uuid).data('value');
24832    var modal = $('#editGiftCertificateLineItemModal');
24833    modal.find('#from').attr('value', from);
24834    modal.find('#recipient').attr('value', recipient);
24835    modal.find('#recipientEmail').attr('value', recipientEmail);
24836    modal.find('#confirmRecipientEmail').attr('value', recipientEmail);
24837    modal.find('#message').html(message || '');
24838    modal.find('#amount').attr('value', ('' + amount || '0.0').split('.')[0]);
24839    modal.find('.btn-update-giftcertificate-incart').attr('data-uuid', uuid);
24840    modal.find('.btn-update-giftcertificate-incart').data('uuid', uuid);
24841  });
24842}
24843
24844module.exports = {
24845  getPidValue: getPidValue,
24846  appendToUrl: appendToUrl,
24847  validateBasket: validateBasket,
24848  updateCartTotals: updateCartTotals,
24849  createErrorNotification: createErrorNotification,
24850  updateApproachingDiscounts: updateApproachingDiscounts,
24851  updateAvailability: updateAvailability,
24852  updateProductDetails: updateProductDetails,
24853  confirmDelete: confirmDelete,
24854  init: init
24855};
24856
24857/***/ }),
24858
24859/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/checkout/formErrors.js":
24860/*!************************************************************************************************************!*\
24861  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/checkout/formErrors.js ***!
24862  \************************************************************************************************************/
24863/*! no static exports found */
24864/***/ (function(module, exports, __webpack_require__) {
24865
24866"use strict";
24867
24868
24869var scrollAnimate = __webpack_require__(/*! core/components/scrollAnimate */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/scrollAnimate.js");
24870/**
24871 * Display error messages and highlight form fields with errors.
24872 * @param {string} parentSelector - the form which contains the fields
24873 * @param {Object} fieldErrors - the fields with errors
24874 */
24875
24876
24877function loadFormErrors(parentSelector, fieldErrors) {
24878  // eslint-disable-line
24879  // Display error messages and highlight form fields with errors.
24880  $.each(fieldErrors, function (attr) {
24881    $('*[name=' + attr + ']', parentSelector).addClass('is-invalid').siblings('.invalid-feedback').html(fieldErrors[attr]);
24882  }); // Animate to top of form that has errors
24883
24884  scrollAnimate($(parentSelector));
24885}
24886/**
24887 * Clear the form errors.
24888 * @param {string} parentSelector - the parent form selector.
24889 */
24890
24891
24892function clearPreviousErrors(parentSelector) {
24893  //default clientSideValidation.js will remove .is-invalid only for html5 errors
24894  //let our manual call here clear all messaging on .invalid-feedback always
24895  $(parentSelector).find('.form-control.is-invalid').removeClass('is-invalid');
24896  $(parentSelector).find('.invalid-feedback').html('');
24897  $('.error-message').hide();
24898}
24899
24900module.exports = {
24901  loadFormErrors: loadFormErrors,
24902  clearPreviousErrors: clearPreviousErrors
24903};
24904
24905/***/ }),
24906
24907/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/clientSideValidation.js":
24908/*!************************************************************************************************************************!*\
24909  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/clientSideValidation.js ***!
24910  \************************************************************************************************************************/
24911/*! no static exports found */
24912/***/ (function(module, exports, __webpack_require__) {
24913
24914"use strict";
24915
24916
24917var base = __webpack_require__(/*! base/components/clientSideValidation */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/clientSideValidation.js");
24918/**
24919 * Validate whole form. Requires `this` to be set to form object
24920 * @param {jQuery.event} event - Event to be canceled if form is invalid.
24921 * @returns {boolean} - Flag to indicate if form is valid
24922 */
24923
24924
24925base.validateForm = function (event) {
24926  var valid = true,
24927      $this = $(this);
24928
24929  if (this.checkValidity && !this.checkValidity()) {
24930    valid = false;
24931
24932    if (event) {
24933      event.preventDefault();
24934      event.stopPropagation();
24935      event.stopImmediatePropagation();
24936    }
24937
24938    if (!this.validity.valid) {
24939      if ($this.is('input, select')) {
24940        // handle where 'this' is a form field
24941        $this.trigger('invalid', this.validity);
24942      } else {
24943        $this.find('input, select').each(function () {
24944          // handle where 'this' is a form
24945          $this.trigger('invalid', this.validity);
24946        });
24947      }
24948    }
24949  }
24950
24951  return valid;
24952};
24953/**
24954 * Password Messaging Helper Functions
24955 */
24956
24957
24958$('form:has(input[type^=password])').each(function (i, form) {
24959  var $form = $(form),
24960      $passwordFields = $form.find('input:password'),
24961      $passwordInput = $form.find('.password-validate'),
24962      $passwordHelper = $form.find('.password-validation-helper li'),
24963      //multiple
24964  $showPassword = $form.find("#show-password"); // change the border of the input field to alert the user of acceptance|error
24965
24966  $passwordInput.on('validatepassword', function (e) {
24967    if ($passwordHelper.hasClass("error") || $passwordHelper.hasClass("empty")) {
24968      $passwordInput.removeClass("is-valid").addClass("is-invalid");
24969      $passwordHelper.not(".valid").addClass("error").removeClass("empty");
24970    } else {
24971      $passwordInput.addClass("is-valid").removeClass("is-invalid");
24972    }
24973  });
24974  $passwordInput.on("keyup", function (e) {
24975    var $this = $(this);
24976    var value = $this.val(); // first check if the form is in error state, then re-eval
24977
24978    if ($this.hasClass("is-invalid")) {
24979      // leave the "error" states until valid
24980      $passwordHelper.trigger('checkrequirement', [value, 'valid empty']);
24981      $this.trigger('validatepassword');
24982    } else {
24983      $passwordHelper.trigger('checkrequirement', [value, 'error valid empty']);
24984    }
24985
24986    ;
24987  }); // change input decoration when user leaves, attach event only once
24988
24989  $passwordInput.one("change", function (e) {
24990    var $this = $(this);
24991    $this.on("blur", function (e) {
24992      $this.trigger('validatepassword');
24993    });
24994  });
24995  /**
24996   * Display validation messages and highlight
24997   * each one of the requirements for the password
24998   * @param {string} clearClasses - which classes to clear
24999   */
25000
25001  $passwordHelper.on('checkrequirement', function (e, value, clearClasses) {
25002    var $this = $(this).removeClass(clearClasses).removeClass('valid error empty');
25003    var regex = new RegExp($this.data('val-regex'));
25004
25005    if (regex.test(value)) {
25006      $this.addClass("valid");
25007    } else if (!regex.test(value) && $passwordInput.focus) {
25008      $this.addClass("empty error");
25009    } else {
25010      $this.addClass("error");
25011    }
25012  }); //show password checkbox
25013
25014  $showPassword.on('click', function (event) {
25015    var $checkbox = $(event.target);
25016    $passwordFields.each(function (index, element) {
25017      $(element).attr('type', $checkbox.prop('checked') ? 'text' : 'password');
25018    });
25019  });
25020});
25021
25022function validateFormFix(form, event) {
25023  base.validateForm.call(form, event || null);
25024}
25025
25026base.functions.validateForm = validateFormFix;
25027module.exports = base;
25028
25029/***/ }),
25030
25031/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/collapsibleItem.js":
25032/*!*******************************************************************************************************************!*\
25033  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/collapsibleItem.js ***!
25034  \*******************************************************************************************************************/
25035/*! no static exports found */
25036/***/ (function(module, exports, __webpack_require__) {
25037
25038"use strict";
25039
25040/**
25041* Overriding from base SFRA to fix nested collapsibles
25042*/
25043
25044module.exports = function () {
25045  var sizes = ['xs', 'sm', 'md', 'lg', 'xl'];
25046  sizes.forEach(function (size) {
25047    var selector = '.collapsible-' + size + ' .title';
25048    $('body').on('click', selector, function (e) {
25049      e.preventDefault();
25050      $(this).closest('.collapsible-' + size).toggleClass('active');
25051
25052      if ($(this).closest('.collapsible-' + size).hasClass('active')) {
25053        $(this).attr('aria-expanded', true);
25054      } else {
25055        $(this).attr('aria-expanded', false);
25056      }
25057    });
25058  });
25059};
25060
25061/***/ }),
25062
25063/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/consentTracking.js":
25064/*!*******************************************************************************************************************!*\
25065  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/consentTracking.js ***!
25066  \*******************************************************************************************************************/
25067/*! no static exports found */
25068/***/ (function(module, exports, __webpack_require__) {
25069
25070"use strict";
25071
25072/**
25073 * Renders a modal window that will track the users consenting to accepting site tracking policy
25074 */
25075
25076var _this = this;
25077
25078var consent = {
25079  getString: function getString(urlAccept, textAccept, urlReject, textReject) {
25080    //immediately return a calculate string value
25081    return "<div class=\"consent-drawer\" id=\"consent-tracking\" role=\"dialog\">\n            <div class=\"consent-text-wrapper\"></div>\n            <div class=\"consent-button-wrapper ml-auto\">\n                <button class=\"affirm btn btn-primary\" data-url=\"".concat(urlAccept, "\" autofocus>\n                ").concat(textAccept, "\n                </button>\n            </div>\n            <div class=\"consent-button-wrapper\">\n                <button class=\"decline btn btn-primary\" data-url=\"").concat(urlReject, "\" >\n                ").concat(textReject, "\n                </button>\n            </div>\n        </div>");
25082  },
25083  showConsentDrawer: function showConsentDrawer($trackingElement) {
25084    if ([undefined, null].indexOf($trackingElement) !== -1 || !$trackingElement.data('caonline') || $('#consent-tracking').length) {
25085      return;
25086    }
25087
25088    var namespace = '.consenttrackingdrawer ',
25089        urlContent = $trackingElement.data('url'),
25090        urlAccept = $trackingElement.data('accept'),
25091        textAccept = $trackingElement.data('accepttext'),
25092        urlReject = $trackingElement.data('reject'),
25093        textReject = $trackingElement.data('rejecttext');
25094    var htmlString = consent.getString(urlAccept, textAccept, urlReject, textReject);
25095    $('body').append(htmlString);
25096    var $consentTracking = $('#consent-tracking');
25097    $.ajax({
25098      url: urlContent,
25099      type: 'get',
25100      dataType: 'html',
25101      context: $consentTracking,
25102      success: function success(response) {
25103        this.find('.consent-text-wrapper').html(response);
25104      },
25105      error: function error() {
25106        this.remove();
25107      }
25108    });
25109    $consentTracking.find('.consent-button-wrapper button').on('click' + namespace, function (event) {
25110      event.preventDefault();
25111      var url = $(event.target).data('url');
25112      var queryString = {
25113        csrf_token: $('.tracking-consent').data('token')
25114      };
25115      $.ajax({
25116        url: url,
25117        type: 'post',
25118        dataType: 'json',
25119        data: queryString,
25120        context: $consentTracking,
25121        complete: function complete() {
25122          this.remove();
25123        },
25124        error: function error() {
25125          this.remove();
25126        }
25127      });
25128    });
25129  },
25130  init: function init() {
25131    var namespace = '.consenttracking ',
25132        $body = $('body'),
25133        $trackingConsent = $('.tracking-consent');
25134
25135    if ($('.consented').length === 0 && $trackingConsent.hasClass('api-true')) {
25136      consent.showConsentDrawer($trackingConsent);
25137    }
25138
25139    $trackingConsent.each(function (index, element) {
25140      var $this = $(_this);
25141
25142      if ($this.hasClass('api-true')) {
25143        $this.on('click' + namespace, function () {
25144          consent.showConsentDrawer($this);
25145        });
25146      }
25147    });
25148    $('.js-tracking-consent-show').on('click' + namespace, function (e) {
25149      e.preventDefault();
25150      consent.showConsentDrawer($trackingConsent);
25151    });
25152  }
25153};
25154module.exports = consent;
25155
25156/***/ }),
25157
25158/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/countrySelector.js":
25159/*!*******************************************************************************************************************!*\
25160  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/countrySelector.js ***!
25161  \*******************************************************************************************************************/
25162/*! no static exports found */
25163/***/ (function(module, exports, __webpack_require__) {
25164
25165"use strict";
25166
25167
25168var base = __webpack_require__(/*! base/components/countrySelector */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/countrySelector.js");
25169
25170module.exports = function () {
25171  // initialize action to allow default behavior
25172  var $page = $('.page');
25173  if (['', null, undefined].indexOf($page.data('action')) !== -1) $page.data('action', 'Home-Show');
25174  return base.apply(this, arguments);
25175};
25176
25177/***/ }),
25178
25179/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/einsteinRecs.js":
25180/*!****************************************************************************************************************!*\
25181  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/einsteinRecs.js ***!
25182  \****************************************************************************************************************/
25183/*! no static exports found */
25184/***/ (function(module, exports, __webpack_require__) {
25185
25186"use strict";
25187
25188
25189var einsteinUtils = __webpack_require__(/*! ./einsteinUtils */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/einsteinUtils.js");
25190
25191var productTile = __webpack_require__(/*! ./productTile */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/productTile.js");
25192
25193var abSlider = __webpack_require__(/*! ./slider */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/slider.js");
25194
25195module.exports = {};
25196/**
25197 * Gets all placeholder elements, which hold einstein recommendations queries the details from the
25198 * einstein engine and feeds them back to the dom element
25199 * @param {Object} e jquery event
25200 * @returns {Object} jquery targets
25201 */
25202
25203module.exports.loadRecommendations = function (e) {
25204  var $context = $(this);
25205  var $recommendationTargets = $context.hasClass('.einstein-data') ? $context : $context.find('.einstein-data');
25206  return $recommendationTargets.each(function () {
25207    var $recTrigger = $(this);
25208    var data = $recTrigger.data() || {};
25209    var asyncUrl = data.url;
25210    einsteinUtils.getRecommendations(data, function (einsteinResponse) {
25211      var response = einsteinUtils.interpretResponse(data, einsteinResponse); // Add replace content URL
25212
25213      $.each(response, function (i, rec) {
25214        if (!rec || !rec.id) return null;
25215        var pidURL = asyncUrl;
25216        pidURL += (pidURL.indexOf('?') === -1 ? '?' : '&') + 'pid=' + rec.id;
25217        $recTrigger.find('.product[data-pid="placeholder"]:not([data-replace-content])').first().attr('data-replace-content', pidURL); //Must be attr to allow productTile.js async selector rule to catch recommendation
25218      }); // Remove empty slides
25219
25220      $recTrigger.find('.slide:has(.product[data-pid="placeholder"]:not([data-replace-content]))').remove(); // Prepare Slider Container
25221
25222      var $sliderContainer = $recTrigger.closest('.slider-container').removeClass('delay-init');
25223      productTile.init($recTrigger.find('.product'), function (status) {
25224        // Re Initialize sliders to account for TileInclude Errors
25225        var tns = status.errors > 0 ? $sliderContainer.data('tns') : null;
25226
25227        if (tns) {
25228          tns.destroy();
25229          tns.rebuild();
25230        }
25231      }); // Initialize sliders
25232
25233      abSlider.initializeSliders($sliderContainer.parent());
25234    });
25235  });
25236};
25237
25238module.exports.init = function (context) {
25239  // Re-triggerable dom event
25240  $(document).off('load.einstein').on('load.einstein', module.exports.loadRecommendations);
25241  context = context && 'trigger' in context ? context : $(document);
25242  return context.triggerHandler('load.einstein');
25243};
25244
25245/***/ }),
25246
25247/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/einsteinUtils.js":
25248/*!*****************************************************************************************************************!*\
25249  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/einsteinUtils.js ***!
25250  \*****************************************************************************************************************/
25251/*! no static exports found */
25252/***/ (function(module, exports, __webpack_require__) {
25253
25254"use strict";
25255
25256
25257module.exports = {};
25258/**
25259 * Validates and Return the cquotient namespace provided by the commerce cloud platform
25260 * @returns {Object} - einsteinUtils or null
25261 */
25262
25263module.exports.getEinsteinUtils = function () {
25264  var einsteinUtils = window.CQuotient;
25265
25266  if (einsteinUtils && typeof einsteinUtils.getCQUserId === 'function' && typeof einsteinUtils.getCQCookieId === 'function') {
25267    return einsteinUtils;
25268  }
25269
25270  return null;
25271};
25272/**
25273* Processes a recommendation tile, with an already initialized category specific anchors array
25274* @param {Object} data object to carry info to CQuotient calls
25275* @param {Function} callback handler function
25276*/
25277
25278
25279module.exports.getRecommendations = function (data, callback) {
25280  var einsteinUtils = module.exports.getEinsteinUtils();
25281  var params = {
25282    userId: einsteinUtils.getCQUserId(),
25283    cookieId: einsteinUtils.getCQCookieId(),
25284    ccver: '1.01'
25285  };
25286
25287  if (data.anchors && data.anchors.length > 0) {
25288    params.anchors = data.anchors;
25289  }
25290
25291  if (einsteinUtils.getRecs) {
25292    einsteinUtils.getRecs(einsteinUtils.clientId, data.recommender, params, callback);
25293  } else {
25294    einsteinUtils.widgets = einsteinUtils.widgets || []; // eslint-disable-line no-param-reassign
25295
25296    einsteinUtils.widgets.push({
25297      recommenderName: data.recommender,
25298      parameters: params,
25299      callback: callback
25300    });
25301  }
25302};
25303/**
25304 * Processes a response and format data structure
25305 * @param {Object} request object to carry info to CQuotient calls
25306 * @param {Object} response data returned from CQuotient calls
25307 * @returns {Object}
25308 */
25309
25310
25311module.exports.interpretResponse = function (request, response) {
25312  return response[request.recommender].recs;
25313};
25314
25315/***/ }),
25316
25317/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/footer.js":
25318/*!**********************************************************************************************************!*\
25319  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/footer.js ***!
25320  \**********************************************************************************************************/
25321/*! no static exports found */
25322/***/ (function(module, exports, __webpack_require__) {
25323
25324"use strict";
25325
25326
25327var scrollAnimate = __webpack_require__(/*! core/components/scrollAnimate */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/scrollAnimate.js");
25328/**
25329 * appends params to a url
25330 * @param {string} data - data returned from the server's ajax call
25331 * @param {Object} button - button that was clicked for email sign-up
25332 */
25333
25334
25335function displayMessage(success, msg) {
25336  var status = success ? 'alert-success' : 'alert-danger';
25337
25338  if ($('.email-signup-message').length === 0) {
25339    $('body').append('<div class="email-signup-message"></div>');
25340  }
25341
25342  $('.email-signup-message').append('<div class="email-signup-alert text-center alert ' + status + '">' + msg + '</div>');
25343  setTimeout(function () {
25344    $('.email-signup-message').remove();
25345  }, 3000);
25346}
25347
25348var footer = {
25349  'elementNameMap': {
25350    'hpEmailSignUp': 'emailId'
25351  },
25352  'backToTop': function backToTop() {
25353    $('.back-to-top').click(function () {
25354      scrollAnimate();
25355    });
25356  },
25357  'forms': 'footer .email-signup-form form',
25358  'init': function init() {
25359    var nameMap = this.elementNameMap; // Prevent Multi Form event collision
25360
25361    var $forms = $(this.forms);
25362    $forms.each(function () {
25363      var $form = $(this);
25364      var $inputs = $form.find(':input:not(:disabled)'); //TODO: Security Update with CSRF
25365      // Update Form Name for SFRA compatibility
25366
25367      if (nameMap) {
25368        $inputs.each(function () {
25369          var $input = $(this);
25370          var oldName = $input.attr('name');
25371          var newName = oldName && nameMap[oldName];
25372
25373          if (newName) {
25374            $input.attr('name', newName);
25375          }
25376        });
25377      }
25378
25379      $form.on('submit', function (e, urlOverride) {
25380        e.preventDefault();
25381        var $btn = $(this);
25382        var xhr = $form.data('xhr');
25383        $form.data('xhr', $.ajax({
25384          url: urlOverride || $form.attr('action'),
25385          type: $form.attr('method') || 'post',
25386          data: $inputs.serialize(),
25387          dataType: 'json',
25388          beforeSend: function beforeSend() {
25389            // Drop duplicate requests
25390            xhr && xhr.abort && xhr.abort();
25391            $.spinner().start();
25392            $btn.attr('disabled', true);
25393          },
25394          success: function success(data) {
25395            displayMessage(data.success, data.msg);
25396            $form.trigger('footer:signup:success', data);
25397          },
25398          error: function error($xhr, err, other) {
25399            var msg = $xhr.responseJSON && $xhr.responseJSON.message;
25400            displayMessage(false, msg);
25401          },
25402          complete: function complete() {
25403            $.spinner().stop();
25404            $btn.removeAttr('disabled');
25405            $form[0].reset();
25406          }
25407        }));
25408      }); // For SFRA compatibility
25409
25410      $form.find('.subscribe-email').on('click', function (e) {
25411        e.preventDefault();
25412        $form.trigger('submit', $(this).data('href'));
25413      });
25414    });
25415  }
25416};
25417module.exports = footer;
25418
25419/***/ }),
25420
25421/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/header.js":
25422/*!**********************************************************************************************************!*\
25423  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/header.js ***!
25424  \**********************************************************************************************************/
25425/*! no static exports found */
25426/***/ (function(module, exports, __webpack_require__) {
25427
25428"use strict";
25429
25430
25431var updateHeader = function updateHeader(status) {
25432  var $headerNav = $('.header-nav');
25433  var headerNavHeight = $headerNav.outerHeight();
25434  var $page = $('.page');
25435
25436  if (status === 'fixed') {
25437    $headerNav.addClass('fixed');
25438
25439    if (!$headerNav.closest('.transparent-header').length) {
25440      $page.css('margin-top', headerNavHeight + 'px');
25441    }
25442
25443    $headerNav.removeClass('transparent-nav');
25444  } else {
25445    $headerNav.removeClass('fixed');
25446    $page.css('margin-top', '');
25447    var isMobileOpen = $('body').hasClass('mobile-menu-in');
25448
25449    if (!isMobileOpen) {
25450      $headerNav.addClass('transparent-nav');
25451    }
25452  }
25453};
25454
25455module.exports = function () {
25456  // Fix/unfix header to top of screen, dependent on class added by custom preference
25457  // Note: This is intentionally not using utilities/scroll.js so that it can fix immediately vs. being debounced. Should be replaced with CSS position:sticky once IE11 support is dropped.
25458  var hasFixedHeader = $('header').hasClass('fixed-header');
25459  $(window).scroll(function (event) {
25460    if (hasFixedHeader) {
25461      var $headerBanner = $('.header-banner');
25462      var headerBannerHeight = $headerBanner.length ? $headerBanner.outerHeight() : 0;
25463      var $preNavHeader = $('.pre-nav-header');
25464      var preNavHeaderHeight = $preNavHeader.length ? $preNavHeader.outerHeight() : 0;
25465      var scrollTop = $(event.target).scrollTop();
25466
25467      if (scrollTop > headerBannerHeight + preNavHeaderHeight) {
25468        updateHeader('fixed');
25469      } else {
25470        updateHeader('unfixed');
25471      }
25472    }
25473  });
25474  var isMobile = window.isMobile();
25475
25476  if ($('header').hasClass('transparent-header') && !isMobile) {
25477    $('.header-nav').hover(function () {
25478      $(this).removeClass('transparent-nav');
25479    }, function () {
25480      $(this).addClass('transparent-nav');
25481    });
25482  } // Check for presence of content assets in MegaMenu
25483
25484
25485  var $megamenuDropdown = $('.megamenu > .dropdown-menu');
25486  $megamenuDropdown.each(function (index, element) {
25487    var $megamenu = $(element);
25488
25489    if ($megamenu.find('.megamenu-asset-1').children().length) {
25490      $megamenu.addClass('has-asset-1');
25491    }
25492
25493    if ($megamenu.find('.megamenu-asset-2').children().length) {
25494      $megamenu.addClass('has-asset-2');
25495    }
25496  }); // Show/hide content assets on mobile based on category level
25497
25498  if (isMobile) {
25499    var $thirdMenuBackBtn = $('.megamenu .menu-subcategories > .dropdown-item'),
25500        $thirdSubLink = $('.megamenu .menu-subcategories > .dropdown-item > .dropdown-link');
25501    $thirdSubLink.on('click', function () {
25502      $('.megamenu.show .menu-subcategories').parent('li').addClass('thirdCatOpen');
25503    });
25504    $thirdMenuBackBtn.on('click', function () {
25505      $('.megamenu.show .menu-subcategories').parent('li').removeClass('thirdCatOpen');
25506    });
25507  }
25508
25509  $('.main-menu .navbar-nav').on('mouseenter mouseleave', function () {
25510    $(this).toggleClass('nav-item-hover');
25511  });
25512  $('header .site-search').on('mouseenter', function (event) {
25513    var $siteSearch = $(event.target).closest('.site-search');
25514    $siteSearch.addClass('expanded');
25515  });
25516  $('header .site-search').on('mouseleave', function (event) {
25517    var $siteSearch = $(event.target).closest('.site-search');
25518    var $input = $siteSearch.find('input'); // Only collapse if the user isn't typing and hasn't entered text
25519
25520    if (!$input.is(':focus') && !$input.val()) {
25521      $siteSearch.removeClass('expanded');
25522    }
25523  });
25524  $('form[name=simpleSearch]').on('submit', function (event) {
25525    var $form = $(event.target);
25526    var $input = $('input[name=q]', $form); //keep search from submitting if query is empty
25527
25528    if ($input.val() == "") {
25529      $input.focus();
25530      event.preventDefault();
25531    }
25532  });
25533};
25534
25535/***/ }),
25536
25537/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/menu.js":
25538/*!********************************************************************************************************!*\
25539  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/menu.js ***!
25540  \********************************************************************************************************/
25541/*! no static exports found */
25542/***/ (function(module, exports, __webpack_require__) {
25543
25544"use strict";
25545
25546
25547var keyboardAccessibility = __webpack_require__(/*! base/components/keyboardAccessibility */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/keyboardAccessibility.js");
25548
25549var SiteConstants = __webpack_require__(/*! constants/SiteConstants */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/scripts/constants/SiteConstants.js");
25550
25551var hoverIntent = __webpack_require__(/*! jquery-hoverintent */ "../rvw_autobahn_core/node_modules/jquery-hoverintent/jquery.hoverIntent.js");
25552
25553var headerUtils = __webpack_require__(/*! ../utilities/headerUtils */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/utilities/headerUtils.js");
25554
25555function clearSelection(element) {
25556  var $currentPane = $(element).closest('.custom-dropdown.show');
25557  $currentPane.removeClass('show'); // Adjust DOM after drawer finishes closing (mobile) or dropdown finishes hiding (desktop)
25558
25559  setTimeout(function () {
25560    $currentPane.find('.nav-link').attr('aria-expanded', 'false');
25561    $currentPane.find('.dropdown-menu').attr('aria-hidden', 'true');
25562    $currentPane.find('.top-category').detach();
25563    $currentPane.find('.nav-menu').detach();
25564
25565    if (!$currentPane.closest('.custom-dropdown.show').length) {
25566      $currentPane.closest('.menu-group').find('.nav.navbar-nav > li.nav-item > a').attr('aria-hidden', 'false');
25567    }
25568  }, SiteConstants.TransitionSpeed);
25569}
25570
25571;
25572
25573function toggleDrawer(status) {
25574  var $header = $('header');
25575  var $headerNav = $header.find('.header-nav');
25576  var headerNavHeight = headerUtils.getHeaderHeight();
25577  var $mainMenu = $header.find('.main-menu');
25578  var $navbar = $mainMenu.find('.navbar-nav');
25579  var $modalBackground = $('.modal-background');
25580
25581  if (status === 'open') {
25582    $('html').scrollTop($headerNav.offset().top);
25583    $('html').addClass('lock-scroll');
25584    $('body').addClass('mobile-menu-in');
25585    $mainMenu.addClass('in').attr('aria-hidden', 'false').css('top', headerNavHeight).siblings().attr('aria-hidden', 'true');
25586    $modalBackground.fadeIn(SiteConstants.TransitionSpeed).css('top', headerNavHeight);
25587    $header.siblings().attr('aria-hidden', 'true');
25588    $navbar.find('.nav-link').first().focus();
25589  } else {
25590    $('body').removeClass('mobile-menu-in');
25591    $navbar.find('.nav-menu, .top-category').detach();
25592    $navbar.find('.thirdCatOpen').removeClass('thirdCatOpen');
25593    $navbar.find('.show').removeClass('show');
25594    $mainMenu.removeClass('in').attr('aria-hidden', 'true').siblings().attr('aria-hidden', 'false');
25595    $header.siblings().attr('aria-hidden', 'false');
25596    $modalBackground.fadeOut(SiteConstants.TransitionSpeed);
25597    setTimeout(function () {
25598      $modalBackground.css('top', '');
25599      $('html').removeClass('lock-scroll');
25600      $headerNav.addClass('transparent-nav');
25601    }, SiteConstants.TransitionSpeed);
25602  }
25603}
25604
25605;
25606
25607function headerBanner() {
25608  var headerBannerStatus = window.sessionStorage.getItem('hide_header_banner');
25609  $('.header-banner .close').on('click', function () {
25610    $('.header-banner').addClass('d-none');
25611    window.sessionStorage.setItem('hide_header_banner', '1');
25612  });
25613
25614  if (!headerBannerStatus || headerBannerStatus < 0) {
25615    $('.header-banner').removeClass('d-none');
25616  }
25617}
25618
25619;
25620
25621function kbAccessibility() {
25622  keyboardAccessibility('.main-menu .nav-link, .main-menu .dropdown-link, .header-account-container > div, .header-support-container > div, .minicart > div', {
25623    40: function _(menuItem) {
25624      // down
25625      if (menuItem.hasClass('nav-item')) {
25626        // top level
25627        $('.navbar-nav .show').removeClass('show').children('.dropdown-menu').removeClass('show');
25628        menuItem.addClass('show').children('.dropdown-menu').addClass('show');
25629        menuItem.find('ul > li > a').first().focus();
25630        $(this).attr('aria-expanded', 'true');
25631      } else if (menuItem.is('.header-account-container, .header-support-container')) {
25632        // account/support
25633        menuItem.find('.custom-dropdown').addClass('show').children('.dropdown-menu').addClass('show');
25634        menuItem.find('ul > li > a').first().focus();
25635        menuItem.find('.dropdown-toggle').attr('aria-expanded', 'true');
25636      } else {
25637        menuItem.removeClass('show').children('.dropdown-menu').removeClass('show');
25638
25639        if (!(menuItem.next().length > 0)) {
25640          // if this is the last menuItem
25641          menuItem.parent().parent().find('li > a').first().focus(); // set focus to the first menuitem
25642        } else {
25643          menuItem.next().children().first().focus();
25644        }
25645      }
25646    },
25647    39: function _(menuItem) {
25648      // right
25649      if (menuItem.hasClass('nav-item')) {
25650        // top level
25651        menuItem.removeClass('show').children('.dropdown-menu').removeClass('show');
25652        $(this).attr('aria-expanded', 'false');
25653        menuItem.next().children().first().focus();
25654      } else if (menuItem.is('.header-account-container, .header-support-container')) {
25655        // account/support
25656        menuItem.find('.custom-dropdown').addClass('show').children('.dropdown-menu').addClass('show');
25657        menuItem.find('ul > li > a').first().focus();
25658        menuItem.find('.dropdown-toggle').attr('aria-expanded', 'true');
25659      } else if (menuItem.hasClass('dropdown')) {
25660        menuItem.addClass('show').children('.dropdown-menu').addClass('show');
25661        $(this).attr('aria-expanded', 'true');
25662        menuItem.find('ul > li > a').first().focus();
25663      }
25664    },
25665    38: function _(menuItem) {
25666      // up
25667      if (menuItem.hasClass('nav-item')) {
25668        // top level
25669        menuItem.removeClass('show').children('.dropdown-menu').removeClass('show');
25670        $(this).attr('aria-expanded', 'false');
25671      } else if (menuItem.is('.minicart')) {
25672        // minicart
25673        menuItem.find('.popover').removeClass('show');
25674      } else if (menuItem.is('.header-account-container, .header-support-container')) {
25675        // account/support
25676        menuItem.find('.custom-dropdown').removeClass('show').children('.dropdown-menu').removeClass('show');
25677        menuItem.find('.dropdown-toggle').attr('aria-expanded', 'false');
25678      } else if (menuItem.prev().length === 0) {
25679        // first menuItem
25680        menuItem.parent().parent().removeClass('show').children('.nav-link').attr('aria-expanded', 'false');
25681        menuItem.parent().children().last().children().first().focus(); // set the focus to the last menuItem
25682      } else {
25683        menuItem.prev().children().first().focus();
25684      }
25685    },
25686    37: function _(menuItem) {
25687      // left
25688      if (menuItem.hasClass('nav-item')) {
25689        // top level
25690        menuItem.removeClass('show').children('.dropdown-menu').removeClass('show');
25691        $(this).attr('aria-expanded', 'false');
25692        menuItem.prev().children().first().focus();
25693      } else if (menuItem.is('.minicart')) {
25694        // minicart
25695        menuItem.find('.popover').removeClass('show');
25696      } else if (menuItem.is('.header-account-container, .header-support-container')) {
25697        // account/support
25698        menuItem.find('.custom-dropdown').removeClass('show').children('.dropdown-menu').removeClass('show');
25699        menuItem.find('.dropdown-toggle').attr('aria-expanded', 'false');
25700      } else {
25701        menuItem.closest('.show').removeClass('show').closest('li.show').removeClass('show').children().first().focus().attr('aria-expanded', 'false');
25702      }
25703    },
25704    27: function _(menuItem) {
25705      // escape
25706      if (menuItem.is('.minicart')) {
25707        // minicart
25708        menuItem.find('.popover').removeClass('show');
25709      } else if (menuItem.is('.header-account-container, .header-support-container')) {
25710        // account/support
25711        menuItem.find('.custom-dropdown').removeClass('show').children('.dropdown-menu').removeClass('show');
25712        menuItem.find('.dropdown-toggle').attr('aria-expanded', 'false');
25713      } else {
25714        var parentMenu = menuItem.hasClass('show') ? menuItem : menuItem.closest('.show');
25715        parentMenu.children('.show').removeClass('show');
25716        parentMenu.removeClass('show').children('.nav-link').attr('aria-expanded', 'false');
25717        parentMenu.children().first().focus();
25718      }
25719    }
25720  }, function () {
25721    return $(this).parent();
25722  });
25723}
25724
25725function searchExpand() {
25726  //if only search icon is visible, show the input on focus
25727  $(".search-field").focus(function () {
25728    $(this).closest('.site-search').addClass('expanded');
25729  });
25730}
25731
25732;
25733
25734function dropdownMenu() {
25735  // Custom dropdown behaviors for top menu
25736  var $dropdownMenu = $('.custom-dropdown:not(.disabled) [data-toggle="dropdown"]');
25737  $dropdownMenu.on('click', function (event) {
25738    event.stopPropagation(); // Prevent Bootstrap dropdown click events
25739
25740    if (window.isMobile()) {
25741      // Drawer behavior on mobile
25742      event.preventDefault();
25743      var $dropdownLink = $(event.target);
25744      var $dropdown = $dropdownLink.closest('.custom-dropdown');
25745      var $li = $('<li class="dropdown-item top-category" role="button"></li>');
25746      var $closeMenu = $('<li class="nav-menu"></li>');
25747      var link = $dropdownLink.clone().removeClass('dropdown-toggle').removeAttr('data-toggle').removeAttr('aria-expanded').attr('aria-haspopup', 'false');
25748      $li.append(link);
25749      $closeMenu.append($('.close-menu').first().clone());
25750      $dropdown.children('.dropdown-menu').prepend($li).prepend($closeMenu).attr('aria-hidden', 'false').find('a').removeAttr('tabindex', '-1');
25751      $dropdown.addClass('show');
25752      $dropdownLink.attr('aria-expanded', 'true');
25753      $dropdown.closest('.menu-group').find('.nav.navbar-nav > li.nav-item > a').attr('aria-hidden', 'true');
25754      $(link).focus();
25755      $('.dropdown-menu').scrollTop(0);
25756    }
25757  }); // Desktop - open menu using hoverIntent to prevent unintentional opening
25758
25759  $dropdownMenu.hoverIntent({
25760    over: function over(event) {
25761      if (!window.isMobile()) {
25762        var eventElement = event.target; // Close all dropdowns
25763
25764        $('.navbar-nav > li').each(function (index, element) {
25765          if (!$.contains(element, eventElement)) {
25766            var $navItem = $(element);
25767            $navItem.find('.show').each(function () {
25768              module.exports.clearSelection(element);
25769            });
25770
25771            if ($navItem.hasClass('show')) {
25772              $navItem.removeClass('show');
25773              $navItem.children('ul.dropdown-menu').removeClass('show');
25774              $navItem.children('.nav-link').attr('aria-expanded', 'false');
25775            }
25776          }
25777        }); // Open current dropdown
25778
25779        $(eventElement).parent().addClass('show');
25780        $(eventElement).siblings('.dropdown-menu').addClass('show').attr('aria-hidden', 'false');
25781        $(eventElement).attr('aria-expanded', 'true');
25782      }
25783    },
25784    out: function out() {// this 'out' handler is left empty, since it's triggered from parent, handled in mouseleave event below
25785    },
25786    interval: 50
25787  }); // Desktop - close menu on mouseleave
25788
25789  $dropdownMenu.parent().on('mouseleave', function (event) {
25790    if (!window.isMobile()) {
25791      var $dropdown = $(event.currentTarget); // Close current dropdown
25792
25793      $dropdown.removeClass('show');
25794      $dropdown.children('.dropdown-menu').removeClass('show').attr('aria-hidden', 'true');
25795      $dropdown.children('.nav-link').attr('aria-expanded', 'false');
25796    }
25797  });
25798}
25799
25800;
25801
25802function megaLeftHover() {
25803  //Megamenu Mega-left menu
25804  $('.mega-left-menu-link').hoverIntent(function () {
25805    var menuName = this.id,
25806        menuRight = $('#' + menuName + '-right'),
25807        menuLeft = $(this).parent().parent(),
25808        menuRightParent = menuRight.closest('.mega-left');
25809
25810    if (!window.isMobile()) {
25811      // clear classes
25812      menuLeft.find('.active').removeClass('active');
25813      menuRightParent.removeClass('has-sub-asset');
25814      menuRightParent.find('.active-list').removeClass('active-list'); // add classes
25815
25816      $(this).addClass('active');
25817      menuRight.parent().addClass('active-list'); // add a class to the parent Ul if a third level asset is displayed; css-hides the top level asset
25818
25819      if (menuRight.parent().next().hasClass('sub-asset-1') || menuRight.parent().next().hasClass('sub-asset-2')) {
25820        menuRightParent.addClass('has-sub-asset');
25821      }
25822    }
25823  }, 50);
25824}
25825
25826;
25827
25828function navbarBackBtn() {
25829  $('.navbar-nav').on('click', '.back', function (event) {
25830    event.preventDefault();
25831    module.exports.clearSelection(event.target);
25832  });
25833}
25834
25835;
25836
25837function navbarToggler() {
25838  $('.navbar-toggler').click(function (event) {
25839    event.preventDefault();
25840
25841    if ($('body').hasClass('mobile-menu-in')) {
25842      module.exports.toggleDrawer('close');
25843      $('.header-nav').addClass('transparent-nav');
25844    } else {
25845      module.exports.toggleDrawer('open');
25846      $('.header-nav').removeClass('transparent-nav');
25847    }
25848  });
25849  $('html').on('click', '.mobile-menu-in .modal-background', function () {
25850    return module.exports.toggleDrawer('close');
25851  });
25852}
25853
25854;
25855
25856function mobileSearchFix() {
25857  // Prevent iOS from scrolling to bad position on search field input focus
25858  $('.search-mobile .search-field').focus(function (event) {
25859    if (window.isMobile()) {
25860      var currentScrollPosition = $('html').scrollTop();
25861      setTimeout(function () {
25862        $('html').scrollTop(currentScrollPosition);
25863        $('.modal-background').show();
25864      }, SiteConstants.TransitionSpeed);
25865    }
25866  });
25867}
25868
25869;
25870module.exports = {
25871  clearSelection: clearSelection,
25872  toggleDrawer: toggleDrawer,
25873  headerBanner: headerBanner,
25874  kbAccessibility: kbAccessibility,
25875  searchExpand: searchExpand,
25876  dropdownMenu: dropdownMenu,
25877  megaLeftHover: megaLeftHover,
25878  navbarBackBtn: navbarBackBtn,
25879  navbarToggler: navbarToggler,
25880  mobileSearchFix: mobileSearchFix
25881};
25882
25883/***/ }),
25884
25885/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/miniCart.js":
25886/*!************************************************************************************************************!*\
25887  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/miniCart.js ***!
25888  \************************************************************************************************************/
25889/*! no static exports found */
25890/***/ (function(module, exports, __webpack_require__) {
25891
25892"use strict";
25893
25894
25895var SiteConstants = __webpack_require__(/*! constants/SiteConstants */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/scripts/constants/SiteConstants.js");
25896
25897var updateMiniCart = true;
25898
25899function setMiniCartBodyMaxHeight(minicart) {
25900  var $minicart = $(minicart);
25901  var $minicartScrollable = $minicart.find('.product-summary');
25902  var minicartHeight = $minicart.outerHeight();
25903  var minicartScrollableHeight = $minicartScrollable.outerHeight();
25904  var minicartNonScrollableHeight = minicartHeight - minicartScrollableHeight;
25905  var minicartOffset = $minicart.offset().top - $(window).scrollTop();
25906  var subtractHeight = minicartOffset + minicartNonScrollableHeight + SiteConstants.Spacer;
25907  $minicartScrollable.css('max-height', 'calc(100vh - ' + subtractHeight + 'px)');
25908}
25909
25910module.exports = function () {
25911  $('.minicart').on('count:update', function (event, count) {
25912    if (count && $.isNumeric(count.quantityTotal)) {
25913      $('.minicart .minicart-quantity').text(count.quantityTotal);
25914      $('.minicart .minicart-link').attr({
25915        'aria-label': count.minicartCountOfItems,
25916        title: count.minicartCountOfItems
25917      });
25918    }
25919  });
25920  $('.minicart').on('mouseenter focusin touchstart', function () {
25921    if ($('.search:visible').length === 0) {
25922      return;
25923    }
25924
25925    var url = $('.minicart').data('action-url');
25926    var count = parseInt($('.minicart .minicart-quantity').text(), 10);
25927
25928    if (count !== 0 && $('.minicart .popover.show').length === 0) {
25929      if (!updateMiniCart && !$('.minicart .popover').is(':empty')) {
25930        $('.minicart .popover').addClass('show');
25931        return;
25932      }
25933
25934      $('.minicart .popover').addClass('show');
25935      $('.minicart .popover').spinner().start();
25936      $.get(url, function (data) {
25937        $('.minicart .popover').empty();
25938        $('.minicart .popover').append(data);
25939        updateMiniCart = false;
25940        $.spinner().stop();
25941        $('body').trigger('minicart:loaded', $('.minicart .popover'));
25942      });
25943    }
25944  });
25945  $('body').on('touchstart click', function (event) {
25946    if ($('.minicart').has(event.target).length <= 0) {
25947      $('.minicart .popover').removeClass('show');
25948    }
25949  });
25950  $('.minicart').on('mouseleave focusout', function (event) {
25951    if (event.type === 'focusout' && $('.minicart').has(event.target).length > 0 || event.type === 'mouseleave' && $(event.target).is('.minicart .quantity') || $('body').hasClass('modal-open')) {
25952      event.stopPropagation();
25953      return;
25954    }
25955
25956    $('.minicart .popover').removeClass('show');
25957    $('body').trigger('minicart:mouseleave_focusout');
25958  });
25959  $('body').on('change', '.minicart .quantity', function (event) {
25960    if ($(event.target).parents('.bonus-product-line-item').length && $('.cart-page').length) {
25961      location.reload();
25962    }
25963  });
25964  $('body').on('product:afterAddToCart cart:update', function () {
25965    updateMiniCart = true;
25966  });
25967  $('body').on('minicart:loaded', function (event, minicart) {
25968    setMiniCartBodyMaxHeight(minicart);
25969  });
25970};
25971
25972/***/ }),
25973
25974/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/modal.js":
25975/*!*********************************************************************************************************!*\
25976  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/modal.js ***!
25977  \*********************************************************************************************************/
25978/*! no static exports found */
25979/***/ (function(module, exports, __webpack_require__) {
25980
25981"use strict";
25982
25983
25984function setModalBodyMaxHeight($modal) {
25985  var $modalBody = $modal.find('.modal-body');
25986  var headerHeight = $modal.find('.modal-header').outerHeight();
25987  var footerHeight = $modal.find('.modal-footer').length ? $modal.find('.modal-footer').outerHeight() : 0;
25988  var $modalDialog = $modal.find('.modal-dialog');
25989  var dialogMarginTop = parseInt($modalDialog.css('margin-top').split('px')[0]);
25990  var dialogMarginBottom = parseInt($modalDialog.css('margin-bottom').split('px')[0]);
25991  var dialogMarginHeight = dialogMarginTop + dialogMarginBottom;
25992  var $modalContent = $modal.find('.modal-content');
25993  var contentBorderTop = parseInt($modalContent.css('border-top-width').split('px')[0]);
25994  var contentBorderBottom = parseInt($modalContent.css('border-bottom-width').split('px')[0]);
25995  var subtractHeight = headerHeight + footerHeight + dialogMarginHeight + contentBorderTop + contentBorderBottom;
25996  $modalBody.css('max-height', '400px');
25997  $modalBody.css('max-height', 'calc(100vh - ' + subtractHeight + 'px)');
25998}
25999/**
26000 * Generates the modal window on the first call.
26001 *
26002 */
26003
26004
26005function getModalHtmlElement(elementID, dialogClasses) {
26006  var id = elementID || 'customModal';
26007  var qvPDPLink = id == 'quickViewModal' ? '    <a class="full-pdp-link" href=""></a>' : '';
26008  dialogClasses = dialogClasses || '';
26009
26010  if ($('#' + id).length !== 0) {
26011    $('#' + id).remove();
26012  }
26013
26014  var htmlString = '<div class="modal fade" id="' + id + '" role="dialog">' + '<span class="enter-message sr-only"></span>' + '<div class="modal-dialog ' + dialogClasses + '">' + '<!-- Modal content-->' + '<div class="modal-content">' + '<div class="modal-header">' + qvPDPLink + '    <button type="button" class="close pull-right" data-dismiss="modal">' + '        <span aria-hidden="true">&times;</span>' + '        <span class="sr-only"> </span>' + '    </button>' + '</div>' + '<div class="modal-body"></div>' + '<div class="modal-footer"></div>' + '</div>' + '</div>' + '</div>';
26015  $('body').append(htmlString);
26016}
26017
26018function onShownBsModal() {
26019  $('body').on('shown.bs.modal', '.modal', function () {
26020    $('body').trigger('modal:loaded', this);
26021  });
26022}
26023
26024function onModalLoaded() {
26025  $('body').on('modal:loaded', function (event, modal) {
26026    var $modal = $(modal); // Check for modal-scrollbody helper class and adjust body max-height if found
26027
26028    if ($modal.find('.modal-scrollbody').length || $modal.find('.quick-view-dialog').length || $modal.find('.choose-bonus-product-dialog').length) {
26029      setModalBodyMaxHeight($modal);
26030    }
26031  });
26032}
26033/**
26034 * Parse HTML code in Ajax response
26035 *
26036 * @param {string} html - Rendered HTML from quickview template
26037 * @return {QuickViewHtml} - QuickView content components
26038 */
26039
26040
26041function parseHtml(html) {
26042  var $html = $('<div>').append($.parseHTML(html));
26043  var body = $html.find('.product-quickview');
26044
26045  if (body.length == 0) {
26046    body = $html.find('.modal-body').children();
26047  }
26048
26049  var footer = $html.find('.modal-footer').children();
26050  return {
26051    body: body,
26052    footer: footer
26053  };
26054}
26055/**
26056 * replaces the content in the modal window on for the selected product variation.
26057 * @param {string} selectedValueUrl - url to be used to retrieve a new product model
26058 */
26059
26060
26061function fillModalElement(selectedValueUrl, data, $modal) {
26062  $.ajax({
26063    url: selectedValueUrl,
26064    method: 'GET',
26065    data: data,
26066    dataType: 'json',
26067    success: function success(data) {
26068      var parsedHtml = parseHtml(data.renderedTemplate);
26069      $modal.find('.modal-body').empty();
26070      $modal.find('.modal-body').html(parsedHtml.body);
26071      $modal.find('.modal-footer').html(parsedHtml.footer);
26072      $modal.find('.modal-header .close .sr-only').text(data.closeButtonText);
26073      $modal.find('.enter-message').text(data.enterDialogMessage);
26074      $modal.modal('show');
26075
26076      if (data.dialogTitle) {
26077        $modal.find('.modal-header').prepend('<div class="modal-title">' + data.dialogTitle + '</div>');
26078      }
26079    }
26080  });
26081}
26082
26083function initCustomModal() {
26084  $('body').on('click', '.custom-modal', function (e) {
26085    e.preventDefault();
26086    var cid = $(this).attr('data-cid');
26087    var title = $(this).attr('data-title');
26088    var dialogClasses = $(this).attr('data-dialog-classes');
26089    var selectedValueUrl = $(this).attr('href');
26090    getModalHtmlElement('customModal', dialogClasses);
26091    fillModalElement(selectedValueUrl, {
26092      cid: cid,
26093      title: title
26094    }, $('#customModal'));
26095  });
26096}
26097
26098module.exports = {
26099  setModalBodyMaxHeight: setModalBodyMaxHeight,
26100  getModalHtmlElement: getModalHtmlElement,
26101  onShownBsModal: onShownBsModal,
26102  onModalLoaded: onModalLoaded,
26103  parseHtml: parseHtml,
26104  init: function init() {
26105    onShownBsModal();
26106    onModalLoaded();
26107    initCustomModal();
26108  }
26109};
26110
26111/***/ }),
26112
26113/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/productTile.js":
26114/*!***************************************************************************************************************!*\
26115  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/productTile.js ***!
26116  \***************************************************************************************************************/
26117/*! no static exports found */
26118/***/ (function(module, exports, __webpack_require__) {
26119
26120"use strict";
26121
26122
26123var wishlistHelpers = __webpack_require__(/*! core/wishlist/components/helpers */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
26124
26125var promiseChains = [null, null, null, null, null, null, null],
26126    promiseIndex = 0;
26127module.exports = {
26128  selectors: {
26129    processing: '.processing',
26130    sending: '.sending'
26131  },
26132  init: function init() {
26133    var $context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $('.product[data-replace-content], .product [data-replace-content]');
26134    var callbackfn = arguments.length > 1 ? arguments[1] : undefined;
26135    var scope = this,
26136        initErrors = 0;
26137    $context.filter(':not(' + scope.selectors.processing + ')').each(function (i, replace) {
26138      var $target = $(replace);
26139      var asyncUrl = $target.data('replace-content') || $target.attr('data-replace-content');
26140      var deferment = $.Deferred();
26141
26142      if (['', null, undefined].indexOf(asyncUrl) === -1) {
26143        // Only track deferment if url is requestable
26144        $target.data('deferment', deferment);
26145        promiseChains[promiseIndex] = (promiseChains[promiseIndex] || $.when()).then(function () {
26146          // Seperate deferment-ness of ajax request from actual deferment to allow failures to progress current promise group
26147          $target.data('$xhr', $.ajax({
26148            url: asyncUrl,
26149            dataType: 'html',
26150            timeout: 60000,
26151            context: $target,
26152            beforeSend: function beforeSend() {
26153              this.addClass(scope.selectors.sending.replace(/\./gi, ' '));
26154            },
26155            error: function error() {
26156              var $slide = this.parent('.slide').add(this);
26157              $slide.eq(0).remove();
26158              initErrors++;
26159            },
26160            success: function success(data) {
26161              // Per AJAX response populate the product tile placeholder
26162              var $parent = $(this.parent());
26163              this.replaceWith(data); //reinit tooltips for quick add to cart popover
26164
26165              $('body').trigger('tooltip:init');
26166              var $wishlistLink = $parent.find('[data-wishlistpid]');
26167
26168              if ($wishlistLink.length > 0) {
26169                wishlistHelpers.updateLinkData($wishlistLink);
26170              }
26171            },
26172            complete: function complete() {
26173              deferment.resolve();
26174            }
26175          }));
26176          return deferment;
26177        });
26178        promiseIndex = (promiseIndex + 1) % promiseChains.length;
26179      }
26180    });
26181
26182    if (callbackfn) {
26183      $.when.apply($, promiseChains).then(function () {
26184        return callbackfn.call(null, {
26185          errors: initErrors
26186        });
26187      });
26188    }
26189  }
26190};
26191
26192/***/ }),
26193
26194/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/recaptcha.js":
26195/*!*************************************************************************************************************!*\
26196  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/recaptcha.js ***!
26197  \*************************************************************************************************************/
26198/*! no static exports found */
26199/***/ (function(module, exports, __webpack_require__) {
26200
26201"use strict";
26202
26203
26204function check(e, next) {
26205  if (typeof grecaptcha !== 'undefined' && grecaptcha) {
26206    grecaptcha.ready(function () {
26207      var actionName = 'submit' + (e && e.target ? (e.target.id + e.target.className).replace(/[^a-zA-Z0-9]+/g, '') : '');
26208      grecaptcha.execute(window.CachedData.recaptchaSiteKey, {
26209        action: actionName
26210      }).then(function (token) {
26211        var recaptchaTokenInput = $("<input type='hidden' class='form-control' id='recaptchaToken' name='dwfrm_recaptcha_recaptchaToken' value=" + token + ">");
26212        var recaptchaActionInput = $("<input type='hidden' class='form-control' id='recaptchaAction' name='dwfrm_recaptcha_recaptchaAction' value=" + actionName + ">");
26213
26214        if (typeof next.data == 'string') {
26215          next.data += next.data.length === 0 ? '' : '&';
26216          next.data += $.param(recaptchaTokenInput) + '&' + $.param(recaptchaActionInput);
26217        } else {
26218          next.data = next.data || {};
26219          next.data['dwfrm_recaptcha_recaptchaToken'] = token;
26220          next.data['dwfrm_recaptcha_recaptchaAction'] = actionName;
26221        }
26222
26223        $.ajax(next);
26224      });
26225    });
26226  } else {
26227    $.ajax(next);
26228  }
26229}
26230
26231module.exports = {
26232  check: check
26233};
26234
26235/***/ }),
26236
26237/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/scrollAnimate.js":
26238/*!*****************************************************************************************************************!*\
26239  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/scrollAnimate.js ***!
26240  \*****************************************************************************************************************/
26241/*! no static exports found */
26242/***/ (function(module, exports, __webpack_require__) {
26243
26244"use strict";
26245
26246
26247module.exports = function (element) {
26248  var hasFixedHeader = $('header').hasClass('fixed-header');
26249  var hasFixedHeaderEnhanced = $('header').hasClass('fixed-header-enhanced');
26250  var position = 0;
26251
26252  if (element && element.length) {
26253    if (hasFixedHeader || hasFixedHeaderEnhanced) {
26254      var headerNavHeight = $('.header-nav').length ? $('.header-nav').height() : 0;
26255      var headerBannerHeight = $('.header-banner').length ? $('.header-banner').height() : 0;
26256      var utilityBannerHeight = $('.utility-header').length ? $('.utility-header').height() : 0;
26257      var fullHeaderHeight = (headerNavHeight + headerBannerHeight + utilityBannerHeight) * 2;
26258
26259      if (element.offset().top > fullHeaderHeight) {
26260        position = element.length ? element.offset().top - headerNavHeight : 0;
26261      }
26262    } else {
26263      position = element.offset().top;
26264    }
26265  }
26266
26267  $('html, body').animate({
26268    scrollTop: position
26269  }, 500);
26270
26271  if (!element) {
26272    $('.logo-home').focus();
26273  }
26274};
26275
26276/***/ }),
26277
26278/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/search.js":
26279/*!**********************************************************************************************************!*\
26280  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/search.js ***!
26281  \**********************************************************************************************************/
26282/*! no static exports found */
26283/***/ (function(module, exports, __webpack_require__) {
26284
26285"use strict";
26286
26287
26288function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
26289
26290var debounce = __webpack_require__(/*! lodash/debounce */ "../storefront-reference-architecture/node_modules/lodash/debounce.js");
26291
26292var endpoint = $('.suggestions-wrapper').data('url');
26293
26294var sitePreferencesUtils = __webpack_require__(/*! ../preferences/sitePreferencesUtils */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/preferences/sitePreferencesUtils.js");
26295
26296var preferences = sitePreferencesUtils.getSitePreferences();
26297
26298var SiteConstants = __webpack_require__(/*! constants/SiteConstants */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/scripts/constants/SiteConstants.js"); // Original vars from search.js
26299
26300
26301var minChars = preferences.headerSearchMinTermLength;
26302var UP_KEY = SiteConstants.UP_KEY;
26303var DOWN_KEY = SiteConstants.DOWN_KEY;
26304var DIRECTION_DOWN = SiteConstants.DIRECTION_DOWN;
26305var DIRECTION_UP = SiteConstants.DIRECTION_UP;
26306/**
26307 * Retrieves Suggestions element relative to scope
26308 *
26309 * @param {Object} scope - Search input field DOM element
26310 * @return {JQuery} - .suggestions-wrapper element
26311 */
26312
26313function getSuggestionsWrapper(scope) {
26314  return $(scope).siblings('.suggestions-wrapper');
26315}
26316/**
26317 * Determines whether DOM element is inside the .search-mobile class
26318 *
26319 * @param {Object} scope - DOM element, usually the input.search-field element
26320 * @return {boolean} - Whether DOM element is inside  div.search-mobile
26321 */
26322
26323
26324function isMobileSearch(scope) {
26325  return !!$(scope).closest('.search-mobile').length;
26326}
26327/**
26328 * Remove modal classes needed for mobile suggestions
26329 *
26330 */
26331
26332
26333function clearModals() {
26334  $('body').removeClass('modal-open');
26335  $('header').siblings().attr('aria-hidden', 'false');
26336  $('.suggestions').removeClass('modal');
26337}
26338/**
26339 * Apply modal classes needed for mobile suggestions
26340 *
26341 * @param {Object} scope - Search input field DOM element
26342 */
26343
26344
26345function applyModals(scope) {
26346  if (module.exports.isMobileSearch(scope)) {
26347    $('body').addClass('modal-open');
26348    $('header').siblings().attr('aria-hidden', 'true');
26349    module.exports.getSuggestionsWrapper(scope).find('.suggestions').addClass('modal');
26350  }
26351}
26352/**
26353 * Tear down Suggestions panel
26354 */
26355
26356
26357function tearDownSuggestions() {
26358  $('input.search-field').val('');
26359  module.exports.clearModals();
26360  $('.search-mobile .suggestions').unbind('scroll');
26361  $('.suggestions-wrapper').empty();
26362}
26363/**
26364 * Toggle search field icon from search to close and vice-versa
26365 *
26366 * @param {string} action - Action to toggle to
26367 */
26368
26369
26370function toggleSuggestionsIcon(action) {
26371  var mobileSearchIcon = '.search-mobile button.';
26372  var iconSearch = 'fa-search';
26373  var iconSearchClose = 'fa-close';
26374
26375  if (action === 'close') {
26376    $(mobileSearchIcon + iconSearch).removeClass(iconSearch).addClass(iconSearchClose).attr('type', 'button');
26377  } else {
26378    $(mobileSearchIcon + iconSearchClose).removeClass(iconSearchClose).addClass(iconSearch).attr('type', 'submit');
26379  }
26380}
26381/**
26382 * Determines whether the "More Content Below" icon should be displayed
26383 *
26384 * @param {Object} scope - DOM element, usually the input.search-field element
26385 */
26386
26387
26388function handleMoreContentBelowIcon(scope) {
26389  if ($(scope).scrollTop() + $(scope).innerHeight() >= $(scope)[0].scrollHeight) {
26390    $('.more-below').fadeOut();
26391  } else {
26392    $('.more-below').fadeIn();
26393  }
26394}
26395/**
26396 * Positions Suggestions panel on page
26397 *
26398 * @param {Object} scope - DOM element, usually the input.search-field element
26399 */
26400
26401
26402function positionSuggestions(scope) {
26403  var outerHeight;
26404  var $scope;
26405  var $suggestions;
26406  var top;
26407
26408  if (module.exports.isMobileSearch(scope)) {
26409    $scope = $(scope);
26410    top = $scope.offset().top;
26411    outerHeight = $scope.outerHeight();
26412    $suggestions = module.exports.getSuggestionsWrapper(scope).find('.suggestions');
26413    $suggestions.css('top', top + outerHeight);
26414    module.exports.handleMoreContentBelowIcon(scope); // Unfortunately, we have to bind this dynamically, as the live scroll event was not
26415    // properly detecting dynamic suggestions element's scroll event
26416
26417    $suggestions.scroll(function () {
26418      module.exports.handleMoreContentBelowIcon(this);
26419    });
26420  }
26421}
26422/**
26423 * Process Ajax response for SearchServices-GetSuggestions
26424 *
26425 * @param {Object|string} response - Empty object literal if null response or string with rendered
26426 *                                   suggestions template contents
26427 */
26428
26429
26430function processResponse(response) {
26431  var $suggestionsWrapper = module.exports.getSuggestionsWrapper(this).empty();
26432  $.spinner().stop();
26433
26434  if (_typeof(response) !== 'object') {
26435    $suggestionsWrapper.append(response).show();
26436    $(this).siblings('.reset-button').addClass('d-sm-block');
26437    module.exports.positionSuggestions(this);
26438
26439    if (isMobileSearch(this)) {
26440      module.exports.toggleSuggestionsIcon('close');
26441      module.exports.applyModals(this);
26442    } // Trigger screen reader by setting aria-describedby with the new suggestion message.
26443
26444
26445    var suggestionsList = $('.suggestions .item');
26446
26447    if ($(suggestionsList).length) {
26448      $('input.search-field').attr('aria-describedby', 'search-result-count');
26449    } else {
26450      $('input.search-field').removeAttr('aria-describedby');
26451    }
26452  } else {
26453    $suggestionsWrapper.hide();
26454  }
26455}
26456/**
26457 * Retrieve suggestions
26458 *
26459 * @param {Object}
26459 scope - Search field DOM element
26460 */
26461
26462
26463function getSuggestions(scope) {
26464  if ($(scope).val().length >= minChars) {
26465    $.spinner().start();
26466    $.ajax({
26467      context: scope,
26468      url: endpoint + encodeURIComponent($(scope).val()),
26469      method: 'GET',
26470      success: processResponse,
26471      error: function error() {
26472        $.spinner().stop();
26473      }
26474    });
26475  } else {
26476    module.exports.toggleSuggestionsIcon('search');
26477    $(scope).siblings('.reset-button').removeClass('d-sm-block');
26478    module.exports.clearModals();
26479    module.exports.getSuggestionsWrapper(scope).empty();
26480  }
26481}
26482/**
26483 * Handle Search Suggestion Keyboard Arrow Keys
26484 *
26485 * @param {Integer} direction takes positive or negative number constant, DIRECTION_UP (-1) or DIRECTION_DOWN (+1)
26486 */
26487
26488
26489function handleArrow(direction) {
26490  // get all li elements in the suggestions list
26491  var suggestionsList = $('.suggestions .item');
26492
26493  if (suggestionsList.filter('.selected').length === 0) {
26494    suggestionsList.first().addClass('selected');
26495    $('input.search-field').each(function () {
26496      $(this).attr('aria-activedescendant', suggestionsList.first()[0].id);
26497    });
26498  } else {
26499    suggestionsList.each(function (index) {
26500      var idx = index + direction;
26501
26502      if ($(this).hasClass('selected')) {
26503        $(this).removeClass('selected');
26504        $(this).removeAttr('aria-selected');
26505
26506        if (suggestionsList.eq(idx).length !== 0) {
26507          suggestionsList.eq(idx).addClass('selected');
26508          suggestionsList.eq(idx).attr('aria-selected', true);
26509          $(this).removeProp('aria-selected');
26510          $('input.search-field').each(function () {
26511            $(this).attr('aria-activedescendant', suggestionsList.eq(idx)[0].id);
26512          });
26513        } else {
26514          suggestionsList.first().addClass('selected');
26515          suggestionsList.first().attr('aria-selected', true);
26516          $('input.search-field').each(function () {
26517            $(this).attr('aria-activedescendant', suggestionsList.first()[0].id);
26518          });
26519        }
26520
26521        return false;
26522      }
26523
26524      return true;
26525    });
26526  }
26527} //Init functions below
26528
26529
26530function simpleSearch() {
26531  $('form[name="simpleSearch"]').submit(function (e) {
26532    var suggestionsList = $('.suggestions .item');
26533
26534    if (suggestionsList.filter('.selected').length !== 0) {
26535      e.preventDefault();
26536      suggestionsList.filter('.selected').find('a')[0].click();
26537    }
26538  });
26539}
26540
26541function searchKeyListener() {
26542  $('input.search-field').each(function () {
26543    /**
26544     * Use debounce to avoid making an Ajax call on every single key press by waiting a few
26545     * hundred milliseconds before making the request. Without debounce, the user sees the
26546     * browser blink with every key press.
26547     */
26548    var debounceSuggestions = debounce(getSuggestions, 300);
26549    $(this).on('keyup focus', function (e) {
26550      // Capture Down/Up Arrow Key Events
26551      switch (e.which) {
26552        case DOWN_KEY:
26553          module.exports.handleArrow(DIRECTION_DOWN);
26554          e.preventDefault(); // prevent moving the cursor
26555
26556          break;
26557
26558        case UP_KEY:
26559          module.exports.handleArrow(DIRECTION_UP);
26560          e.preventDefault(); // prevent moving the cursor
26561
26562          break;
26563
26564        default:
26565          debounceSuggestions(this, e);
26566      }
26567    });
26568  });
26569}
26570
26571function hideSuggestions() {
26572  $('body').on('click', function (e) {
26573    if (!$('.suggestions').has(e.target).length && !$(e.target).hasClass('search-field')) {
26574      $('.suggestions').hide();
26575    }
26576  });
26577}
26578
26579function closeOnMobile() {
26580  $('body').on('click touchend', '.search-mobile button.fa-close', function (e) {
26581    e.preventDefault();
26582    $('.suggestions').hide();
26583    module.exports.toggleSuggestionsIcon('search');
26584    module.exports.tearDownSuggestions();
26585  });
26586}
26587
26588function resetSearch() {
26589  $('.site-search .reset-button').on('click', function () {
26590    $(this).removeClass('d-sm-block');
26591  });
26592}
26593
26594module.exports = {
26595  getSuggestionsWrapper: getSuggestionsWrapper,
26596  isMobileSearch: isMobileSearch,
26597  clearModals: clearModals,
26598  applyModals: applyModals,
26599  tearDownSuggestions: tearDownSuggestions,
26600  toggleSuggestionsIcon: toggleSuggestionsIcon,
26601  handleMoreContentBelowIcon: handleMoreContentBelowIcon,
26602  positionSuggestions: positionSuggestions,
26603  processResponse: processResponse,
26604  getSuggestions: getSuggestions,
26605  handleArrow: handleArrow,
26606  simpleSearch: simpleSearch,
26607  searchKeyListener: searchKeyListener,
26608  hideSuggestions: hideSuggestions,
26609  closeOnMobile: closeOnMobile,
26610  resetSearch: resetSearch,
26611  init: function init() {
26612    module.exports.simpleSearch();
26613    module.exports.searchKeyListener();
26614    module.exports.hideSuggestions();
26615    module.exports.closeOnMobile();
26616    module.exports.resetSearch();
26617  }
26618};
26619
26620/***/ }),
26621
26622/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/slider.js":
26623/*!**********************************************************************************************************!*\
26624  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/slider.js ***!
26625  \**********************************************************************************************************/
26626/*! no static exports found */
26627/***/ (function(module, exports, __webpack_require__) {
26628
26629"use strict";
26630
26631
26632function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26633
26634var tinySlider = __webpack_require__(/*! tiny-slider/src/tiny-slider */ "../rvw_autobahn_core/node_modules/tiny-slider/src/tiny-slider.js");
26635
26636var zoom = __webpack_require__(/*! jquery-zoom */ "../rvw_autobahn_core/node_modules/jquery-zoom/jquery.zoom.js");
26637
26638var imagesLoaded = __webpack_require__(/*! imagesloaded */ "../rvw_autobahn_core/node_modules/imagesloaded/imagesloaded.js");
26639
26640__webpack_require__(/*! jquery.scrollintoview */ "../rvw_autobahn_core/node_modules/jquery.scrollintoview/jquery.scrollintoview.js");
26641
26642var SiteConstants = __webpack_require__(/*! constants/SiteConstants */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/scripts/constants/SiteConstants.js");
26643
26644var mediumBreakpoint = SiteConstants.BreakpointSizes.md;
26645var largeBreakpoint = SiteConstants.BreakpointSizes.lg;
26646var abSlider = {}; // Check custom attributes on slider element to get settings, falling back to defaults if not populated
26647
26648abSlider.getSliderAttributes = function ($slider) {
26649  var attributes = new Object(); // Autoplay (defaults to false)
26650
26651  attributes.autoplayDelay = parseInt($slider.attr('data-slider-autoplay'));
26652  attributes.autoplay = isNaN(attributes.autoplayDelay) ? false : true;
26653  attributes.autoplayTimeout = attributes.autoplay ? attributes.autoplayDelay : 5000; // Loop (defaults to true)
26654
26655  attributes.loop = $slider.attr('data-slider-loop') === 'false' ? false : true; // Number of items to show (defaults to 1 at all breakpoints)
26656
26657  attributes.itemsNumber = parseInt($slider.attr('data-slider-items'));
26658  attributes.items = isNaN(attributes.itemsNumber) ? 1 : attributes.itemsNumber;
26659  attributes.itemsNumberMedium = parseInt($slider.attr('data-slider-items-md'));
26660  attributes.itemsMedium = isNaN(attributes.itemsNumberMedium) ? 1 : attributes.itemsNumberMedium;
26661  attributes.itemsNumberLarge = parseInt($slider.attr('data-slider-items-lg'));
26662  attributes.itemsLarge = isNaN(attributes.itemsNumberLarge) ? 1 : attributes.itemsNumberLarge; // Gutter space between items (defaults to 0px)
26663
26664  attributes.gutter = parseInt($slider.attr('data-slider-gutter')) || 0;
26665  attributes.gutterMedium = parseInt($slider.attr('data-slider-gutter-md')) || 0;
26666  attributes.gutterLarge = parseInt($slider.attr('data-slider-gutter-lg')) || 0; // Slide animation speed (defaults to 300ms)
26667
26668  attributes.speed = parseInt($slider.attr('data-slider-speed')) || 300; // Slide animation (defaults to standard Carousel behavior)
26669
26670  attributes.mode = $slider.attr('data-slider-mode') || 'carousel';
26671  attributes.animateIn = $slider.attr('data-slider-animatein') || 'no-animation';
26672  attributes.animateOut = $slider.attr('data-slider-animateout') || 'no-animation'; // Thumbnail settings (defaults to false)
26673  // If a selector is set for [data-slider-thumbnail container], the rest of the settings populate automatically
26674
26675  var $thumbnailSlider = $($slider.attr('data-slider-thumbnail-container'));
26676  attributes.thumbnailContainer = $slider.attr('data-slider-thumbnail-container') || false;
26677  attributes.navContainer = $thumbnailSlider.length ? $thumbnailSlider.find('.slider')[0] : false;
26678  attributes.navAsThumbnails = attributes.navContainer === false ? false : true;
26679  attributes.controlsContainer = $thumbnailSlider.length ? $thumbnailSlider.find('.slider-thumbnail-controls')[0] : false;
26680  return attributes;
26681}; // Build parameter object to create a slider
26682
26683
26684abSlider.getSliderParams = function ($slider, slideItems) {
26685  var _responsive;
26686
26687  var attributes = abSlider.getSliderAttributes($slider);
26688  var params = {
26689    container: $slider.find('.slider')[0],
26690    loop: attributes.loop,
26691    items: attributes.items,
26692    autoplay: attributes.autoplay,
26693    autoplayTimeout: attributes.autoplayTimeout,
26694    autoplayHoverPause: true,
26695    mode: attributes.mode,
26696    gutter: attributes.gutter,
26697    speed: attributes.speed,
26698    navContainer: attributes.navContainer,
26699    navAsThumbnails: attributes.navAsThumbnails,
26700    controlsContainer: attributes.controlsContainer,
26701    preventScrollOnTouch: 'auto',
26702    // prevents mobile errors in chrome
26703    responsive: (_responsive = {}, _defineProperty(_responsive, mediumBreakpoint, {
26704      items: attributes.itemsMedium,
26705      gutter: attributes.gutterMedium
26706    }), _defineProperty(_responsive, largeBreakpoint, {
26707      items: attributes.itemsLarge,
26708      gutter: attributes.gutterLarge
26709    }), _responsive)
26710  };
26711
26712  if (slideItems) {
26713    params.slideItems = slideItems;
26714  }
26715
26716  if (params.mode === 'gallery') {
26717    params.animateIn = attributes.animateIn;
26718    params.animateOut = attributes.animateOut;
26719  }
26720
26721  return params;
26722}; // Uses scrollintoview jQuery plugin (needed for IE11 support) to scroll the active thumbnail into view
26723// Note: Thumbnail container needs to be scrollable (overflow: auto) for this to work
26724
26725
26726abSlider.slideIntoView = function (slider) {
26727  if (slider.navContainer !== false && $(slider.navContainer).hasClass('slider')) {
26728    var $activeThumbnail = $(slider.navContainer).find('.tns-nav-active');
26729    $activeThumbnail.scrollintoview();
26730  }
26731}; // Build out slide html for replacing images on variant selection
26732
26733
26734abSlider.getUpdatedSlideItems = function (images, assets, isThumbnail) {
26735  var slideItems = [];
26736  images['large'].forEach(function (image) {
26737    var $slideElement = $('<div></div>').attr('class', 'slide');
26738    var $imageElement = $('<img/>');
26739
26740    if (!isThumbnail) {
26741      $slideElement.attr('data-zoom-image', images['hi-res'].length ? images['hi-res'][image.index].url : images['large'][image.index].url);
26742    }
26743
26744    $imageElement.attr({
26745      'src': image.url,
26746      'alt': image.alt + ' image number ' + (parseInt(image.index) + 1).toFixed(0),
26747      'class': 'd-block img-fluid',
26748      'itemprop': 'image'
26749    });
26750    $slideElement.append($imageElement);
26751    slideItems.push($slideElement[0]);
26752  });
26753  abSlider.getPDPGalleryAssetSlides(slideItems, assets, isThumbnail);
26754  return slideItems;
26755}; // Fetch any additional slides needed from PDP Gallery Asset IDs attribute
26756
26757
26758abSlider.getPDPGalleryAssetSlides = function (slideItems, assets, isThumbnail) {
26759  var slideCount = slideItems.length;
26760  var hasVideo = false;
26761  assets.forEach(function (asset, index) {
26762    var $slideElement = $('<div class="pdp-gallery-asset"></div>');
26763    var $imageElement = $('<img/>');
26764    var $videoButton = $('<span class="video-thumbnail-button"></span>');
26765
26766    if (asset.isVideo) {
26767      hasVideo = true;
26768    }
26769
26770    if (!isThumbnail) {
26771      $slideElement.attr('class', 'slide no-zoom'); // ajax call to get html for asset
26772
26773      $.ajax({
26774        url: asset.assetRenderUrl,
26775        method: 'GET',
26776        success: function success(data) {
26777          var $sliderContainer = $slideElement.closest('.slider-container');
26778          $slideElement.html(data); // after all assets are added, reinit any necessary javascript
26779
26780          if (index + 1 >= assets.length) {
26781            $slideElement.trigger('tooltip:init'); // reinit tooltips in case of hotspot asset
26782
26783            if (hasVideo) {
26784              $('body').trigger('ajax:load.ajaxEvents', [$sliderContainer]); // reinit videos in video/index.js
26785
26786              $('body').trigger('slider:videosLoaded'); // trigger custom event set up in bindSliderUpdateEvent
26787            }
26788          }
26789        },
26790        error: function error(err) {
26791          console.error('There was an issue retrieving this asset: ', err);
26792        }
26793      });
26794    } else {
26795      $slideElement.attr('class', 'slide video-container');
26796      $imageElement.attr({
26797        'src': asset.thumbnail,
26798        'alt': 'image number ' + (slideCount + 1).toFixed(0),
26799        'class': 'd-block img-fluid',
26800        'itemprop': 'image'
26801      });
26802    }
26803
26804    slideCount++;
26805    $slideElement.append($imageElement);
26806
26807    if (asset.isVideo) {
26808      $slideElement.append($videoButton);
26809    }
26810
26811    slideItems.push($slideElement[0]);
26812  });
26813}; // Listen for the slider:update event and reinitialize slider with new slides
26814
26815
26816abSlider.bindSliderUpdateEvent = function ($sliderContainer, slider) {
26817  $sliderContainer.off('slider:update').on('slider:update', '.slider', function (event, data) {
26818    var $updatedSliderContainer = $(event.target).closest('.slider-container');
26819    var isThumbnail = $updatedSliderContainer.hasClass('slider-thumbnails'); // MARTIN MOD : pass zoom flag and videos through to getUpdatedSlideItems which is overridden in client core
26820
26821    var updatedSlideItems = data !== undefined ? abSlider.getUpdatedSlideItems(data.images, data.assets, data.videos, isThumbnail, data.zoom) : null;
26822    var updatedParams = abSlider.getSliderParams($updatedSliderContainer, updatedSlideItems); // Update carousel classes to handle number of images changing
26823
26824    if (isThumbnail) {
26825      var $thumbnailContainer = $updatedSliderContainer.closest('.primary-images-thumbn
26825ails');
26826      var $mainImageContainer = $thumbnailContainer.prev('.primary-images-main');
26827
26828      if (data.images.small && data.images.small.length > 1) {
26829        $thumbnailContainer.removeClass('d-none');
26830        $mainImageContainer.addClass('product-has-thumbnails col-lg-9');
26831      } else {
26832        $thumbnailContainer.addClass('d-none');
26833        $mainImageContainer.removeClass('product-has-thumbnails col-lg-9');
26834      }
26835    } // Remove and re-add slider markup if there are new slides to show
26836
26837
26838    if (updatedParams.slideItems) {
26839      var $newSliderElement = $('<div></div>').attr({
26840        'class': 'slider',
26841        'id': updatedParams.container.id
26842      });
26843      var $newSliderControls = $updatedSliderContainer.find('.slider-thumbnail-controls').addClass('d-none');
26844      $newSliderElement.html(updatedParams.slideItems);
26845      $updatedSliderContainer.html($newSliderElement);
26846      updatedParams.container = $newSliderElement[0]; // If this is a thumbnails slider, also add the arrow controls and update the item count
26847
26848      if (isThumbnail) {
26849        $updatedSliderContainer.append($newSliderControls);
26850        updatedParams.items = updatedParams.slideItems.length;
26851        updatedParams.responsive[mediumBreakpoint].items = updatedParams.slideItems.length;
26852        updatedParams.responsive[largeBreakpoint].items = updatedParams.slideItems.length;
26853      }
26854    } // Reinitialize slider using new params
26855
26856
26857    slider = tinySlider.tns(updatedParams);
26858    slider.events.on('transitionEnd', abSlider.slideIntoView);
26859    abSlider.enableImageZoom($updatedSliderContainer);
26860
26861    if (isThumbnail) {
26862      abSlider.handleThumbnailArrows($updatedSliderContainer, slider);
26863    } else {
26864      // listen for videos getting updated from getUpdatedSlideItems function
26865      $('body').on('slider:videosLoaded', function () {
26866        abSlider.handleSliderVideos($updatedSliderContainer, slider);
26867      });
26868    }
26869  });
26870}; // Listen for the slider:destroy event
26871
26872
26873abSlider.bindSliderDestroyEvent = function ($sliderContainer, slider) {
26874  $sliderContainer.off('slider:destroy').on('slider:destroy', '.slider', function () {
26875    slider.destroy();
26876  });
26877}; // Enables zoomed images using jquery-zoom
26878
26879
26880abSlider.enableImageZoom = function ($sliderContainer) {
26881  if ($sliderContainer.closest('.primary-images').length && !$sliderContainer.hasClass('slider-thumbnails') && !window.isMobile()) {
26882    var $slides = $sliderContainer.find('.slide');
26883    $slides.each(function (index, slide) {
26884      var $slide = $(slide);
26885
26886      if (!$slide.hasClass('no-zoom')) {
26887        var zoomImageUrl = $slide.data('zoom-image') || $slide.find('img').attr('src');
26888        $slide.zoom({
26889          url: zoomImageUrl,
26890          magnify: 1,
26891          touch: false
26892        });
26893      }
26894    });
26895  }
26896}; // Determine whether to show thumbnail arrows based on overflow state
26897
26898
26899abSlider.handleThumbnailArrows = function ($sliderContainer, slider) {
26900  if ($sliderContainer.hasClass('slider-thumbnails')) {
26901    var $slider = $sliderContainer.find('.slider');
26902    var $arrows = $sliderContainer.find('.slider-thumbnail-controls');
26903    var buffer = 5; // adding a buffer to prevent arrows from showing if the last slide is mostly visible
26904
26905    var containerSize;
26906    var sliderSize;
26907    $slider.imagesLoaded().done(function () {
26908      if (window.isMobile()) {
26909        containerSize = $sliderContainer.outerWidth();
26910        sliderSize = $slider[0].scrollWidth;
26911      } else {
26912        containerSize = $sliderContainer.outerHeight();
26913        sliderSize = $slider[0].scrollHeight;
26914      }
26915
26916      if (sliderSize - buffer >= containerSize) {
26917        $arrows.removeClass('d-none');
26918      }
26919    });
26920  }
26921}; // Check for videos and pause them when they're not in the active slide
26922
26923
26924abSlider.handleSliderVideos = function ($sliderContainer, slider) {
26925  var $videos = $sliderContainer.find('.hero-media.video-container, .experience-commerce_assets-video>.video-container');
26926
26927  if ($videos.length) {
26928    slider.events.on('indexChanged', function () {
26929      $videos.each(function (_i, element) {
26930        var $videoContainer = $(element);
26931        var videoID = $videoContainer.find('.video-player').attr('id');
26932        var player = window.Players[videoID];
26933
26934        if (player) {
26935          if (!$videoContainer.closest('.tns-slide-active').length) {
26936            player.pause();
26937          }
26937 else if (player.config.autoplay) {
26938            player.play();
26939          }
26940        }
26941      });
26942    });
26943  }
26944}; // Handle Pause/Play Button
26945
26946
26947abSlider.bindPauseButton = function ($sliderContainer, slider) {
26948  var sliderButtonPlacement = $sliderContainer.attr('data-slider-pause-button-placement');
26949
26950  if ($sliderContainer[0].hasAttribute('data-slider-autoplay') && $sliderContainer.attr('data-slider-autoplay') != 'false' && $sliderContainer[0].hasAttribute('data-slider-pause-button-placement') && $sliderContainer.attr('data-slider-pause-button-placement') != "none") {
26951    if (sliderButtonPlacement == 'with-pagination') {
26952      $sliderContainer.find('.tns-nav').addClass('with-pagination-btn').append('<a href="#" class="tns-nav-controller"><span class="sr-only">stop and start slider</span></a>');
26953    } else {
26954      $sliderContainer.prepend('<a href="#" class="tns-nav-controller"><span class="sr-only">stop and start slider</span></a>');
26955    }
26956
26957    ;
26958    $('.tns-nav-controller').addClass(sliderButtonPlacement);
26959    $sliderContainer.on('click', '.tns-nav-controller', function () {
26960      event.preventDefault();
26961      $(this).toggleClass('pause');
26962      $sliderContainer.toggleClass('slider-pause');
26963
26964      if ($sliderContainer.hasClass('slider-pause')) {
26965        slider.pause();
26966      } else {
26967        slider.play();
26968      }
26969    });
26970  }
26971};
26972
26973abSlider.initializeSliders = function () {
26974  var $context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $('body');
26975  var scope = this; // delay-init is different from replace-content
26976
26977  var $sliderContainers = $context.find('.slider-container:not(.delay-init)');
26978  $sliderContainers.each(function (i, slider) {
26979    var $sliderContainer = $(slider);
26980    var params = scope.getSliderParams($sliderContainer);
26981    var promisegroup = [];
26982    var $replace = $sliderContainer.find('[data-replace-content]');
26983    $replace.each(function (i, replace) {
26984      var $target = $(replace);
26985      var deferment = $target.data('deferment');
26986
26987      if (deferment && !deferment.isResolved && deferment.state() === 'pending') {
26988        promisegroup.push(deferment);
26989      }
26990    }); // Done will also execute if promise group is empty []
26991
26992    $.when.apply($, promisegroup).done(function () {
26993      $(params.container).find('.slide:empty').remove();
26994      scope.applyTinySlider($sliderContainer, params);
26995    });
26996  });
26997};
26998
26999abSlider.applyTinySlider = function ($container, params) {
27000  if (!$container) return;
27001  var tslider = tinySlider.tns(params);
27002
27003  if (!!tslider) {
27004    tslider.events.on('transitionStart', this.slideIntoView);
27005    this.bindPauseButton($container, tslider);
27006    this.bindSliderUpdateEvent($container, tslider);
27007    this.bindSliderDestroyEvent($container, tslider);
27008    this.enableImageZoom($container);
27009    this.handleThumbnailArrows($container, tslider);
27010    this.handleSliderVideos($container, tslider);
27011    $('body').trigger('slider:init.sliderEvents', [$container]);
27012  }
27013
27014  $container.data('tns', tslider);
27015  $container.trigger('tooltip:init');
27016};
27017
27018abSlider.initializeQuickviewModalSliders = function () {
27019  $('body').off('quickview:ready').on('quickview:ready', function (event, modal) {
27020    abSlider.initializeSliders($(modal));
27021  });
27022};
27023
27024abSlider.initializeWishlistModalSliders = function () {
27025  $('body').off('editwishlistproduct:ready').on('editwishlistproduct:ready', function (event, modal) {
27026    abSlider.initializeSliders($(modal));
27027  });
27028};
27029
27030abSlider.initializeTargetSliders = function () {
27031  $('body').off('targetslider:ready').on('targetslider:ready', function (event, target) {
27032    abSlider.initializeSliders($(target));
27033  });
27034};
27035
27036abSlider.init = function () {
27037  abSlider.initializeSliders();
27038  abSlider.initializeQuickviewModalSliders();
27039  abSlider.initializeWishlistModalSliders();
27040  abSlider.initializeTargetSliders();
27041};
27042
27043module.exports = abSlider;
27044
27045/***/ }),
27046
27047/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/tabs.js":
27048/*!********************************************************************************************************!*\
27049  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/tabs.js ***!
27050  \********************************************************************************************************/
27051/*! no static exports found */
27052/***/ (function(module, exports, __webpack_require__) {
27053
27054"use strict";
27055
27056
27057var abSlider = __webpack_require__(/*! ./slider */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/slider.js");
27058
27059function handleTabSliders() {
27060  var $tabPane = $('.tab-pane');
27061  var $sliders = $tabPane.find('.slider-container');
27062  $sliders.each(function (_i, slider) {
27063    var $tab = $(slider).closest('.nav-tabs-container').find('a[data-toggle="tab"]');
27064    $tab.on('shown.bs.tab', function (event) {
27065      var scrollTop = $(document).scrollTop();
27066      var $newTab = $(event.target.hash);
27067      var $newTabSlider = $newTab.find('.slider-container .slider');
27068      $newTabSlider.trigger('slider:destroy');
27069      abSlider.initializeSliders($newTab);
27070      $(document).scrollTop(scrollTop); // reset to original scroll position
27071    });
27072  });
27073}
27074
27075;
27076
27077function handleTabVideos() {
27078  var $tabPane = $('.tab-pane');
27079  var $videos = $tabPane.find('.hero-media.video-container, .background-image.video-container, .experience-commerce_assets-video>.video-container');
27080
27081  if ($videos.length) {
27082    $('a[data-toggle="tab"]').on('show.bs.tab', function (event) {
27083      var $newTab = $(event.target.hash);
27084      var newTabVideoId = $newTab.find('.video-player').attr('id');
27085      var videoToPlay = window.Players[newTabVideoId];
27086      var $oldTab = $(event.relatedTarget.hash);
27087      var oldTabVideoId = $oldTab.find('.video-player').attr('id');
27088      var videoToPause = window.Players[oldTabVideoId];
27089
27090      if (videoToPause) {
27091        videoToPause.pause();
27092      }
27093
27094      if (videoToPlay) {
27095        videoToPlay.play();
27096      }
27097    });
27098  }
27099}
27100
27101;
27102
27103function updateTabOverflowClass($tabsContainer) {
27104  $tabsContainer.each(function (_index, tabContainer) {
27105    var $navContainer = $(tabContainer).find('.nav');
27106    var $containerWidth = Math.floor($navContainer.outerWidth());
27107    var $tabsWidth = 0;
27108    var $tabs = $navContainer.children();
27109    $(tabContainer).css('--nav-tabs-height', $navContainer.height() + 'px');
27110    $tabs.each(function (_index, tab) {
27111      $tabsWidth += Math.floor($(tab).outerWidth());
27112    });
27113
27114    if ($tabsWidth > $containerWidth) {
27115      $(tabContainer).addClass('has-overflow');
27116    } else {
27117      $(tabContainer).removeClass('has-overflow');
27118    }
27119  });
27120}
27121
27122function handleTabOverflow() {
27123  var $tabsContainer = $('.nav-tabs-container');
27124
27125  if ($tabsContainer.length && $tabsContainer.find('.nav').length) {
27126    module.exports.methods.updateTabOverflowClass($tabsContainer);
27127    $(window).resize(function () {
27128      module.exports.methods.updateTabOverflowClass($tabsContainer);
27129    });
27130  }
27131}
27132
27133;
27134module.exports = {
27135  methods: {
27136    updateTabOverflowClass: updateTabOverflowClass
27137  },
27138  handleTabSliders: handleTabSliders,
27139  handleTabVideos: handleTabVideos,
27140  handleTabOverflow: handleTabOverflow
27141};
27142
27143/***/ }),
27144
27145/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toast.js":
27146/*!*********************************************************************************************************!*\
27147  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toast.js ***!
27148  \*********************************************************************************************************/
27149/*! no static exports found */
27150/***/ (function(module, exports, __webpack_require__) {
27151
27152"use strict";
27153
27154
27155function show(type, message, dismissible) {
27156  var dismissibleClass = dismissible ? 'alert-dismissible' : '';
27157  var indexClass = 'alert-' + $('.toast-messages .alert').length || false;
27158  var closeButton = dismissible ? '<button type="button" class="btn close icon-close" data-dismiss="alert" aria-label="Close"></button>' : '';
27159
27160  if (!$('.toast-messages').length) {
27161    $('body').append('<div class="toast-messages"></div>');
27162  }
27163
27164  $('.toast-messages').append('<div class="alert alert-' + type + ' ' + indexClass + ' ' + dismissibleClass + '" role="alert">' + message + closeButton + '</div>'); // Remove non-dismissible alerts from the DOM after 5 seconds
27165
27166  setTimeout(function () {
27167    $('.toast-messages').find('.' + indexClass + ':not(.alert-dismissible)').remove();
27168  }, 5000);
27169}
27170
27171module.exports = {
27172  methods: {
27173    show: show
27174  },
27175  bindToastButtonClicks: function bindToastButtonClicks() {
27176    $('body').on('click', '[data-toast]', function (event) {
27177      event.preventDefault();
27178      var $button = $(event.target);
27179      var type = $button.data('toast');
27180      var message = $button.data('content');
27181      var dismissible = $button.data('dismissible') || false;
27182      show(type, message, dismissible);
27183    });
27184  }
27185};
27186
27187/***/ }),
27188
27189/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toolTip.js":
27190/*!***********************************************************************************************************!*\
27191  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toolTip.js ***!
27192  \***********************************************************************************************************/
27193/*! no static exports found */
27194/***/ (function(module, exports, __webpack_require__) {
27195
27196"use strict";
27197
27198
27199function getTooltipTitle() {
27200  return $(this).find('.tooltip');
27201}
27202
27203function enableTooltipsAndPopovers() {
27204  // Initialize tooltips. This also replaces the SFRA custom tooltip with the Bootstrap one
27205  // "trigger" is set to manual in order to add functionality to allow for tooltip to stay open on hover
27206  $('[data-toggle="tooltip"], .info-icon').tooltip({
27207    title: getTooltipTitle,
27208    trigger: 'manual',
27209    sanitize: false // prevents removal of inline styles in tooltip content markup
27210
27211  }).on('mouseenter', function (buttonEnterEvent) {
27212    var $button = $(buttonEnterEvent.target).closest('[data-toggle="tooltip"]');
27213    var showDelay = $button.data('delay') && $button.data('delay').show || 0;
27214    var hideDelay = $button.data('delay') && $button.data('delay').hide || 0;
27215    setTimeout(function () {
27216      $button.tooltip('show');
27217    }, showDelay);
27218    $('body').on('mouseleave', '.tooltip', function (tooltipLeaveEvent) {
27219      setTimeout(function () {
27220        $(tooltipLeaveEvent.target).closest('.tooltip').tooltip('hide');
27221      }, hideDelay);
27222    });
27223  }).on('mouseleave', function (buttonLeaveEvent) {
27224    var $button = $(buttonLeaveEvent.target).closest('[data-toggle="tooltip"]');
27225    var hideDelay = $button.data('delay') && $button.data('delay').hide || 0;
27226    setTimeout(function () {
27227      if (!$('.tooltip:hover').length) {
27228        $(buttonLeaveEvent.target).tooltip('hide');
27229      }
27230    }, hideDelay);
27231  }); // Enables Bootstrap Popovers, which rely on the Tooltip library and provide extra functionality
27232
27233  $('[data-toggle="popover"]:not(.interactive)').popover({
27234    html: true,
27235    trigger: 'focus',
27236    sanitize: false // prevents removal of inline styles in tooltip content markup
27237
27238  });
27239  $('[data-toggle="popover"].interactive').popover({
27240    html: true,
27241    sanitize: false // prevents removal of inline styles in tooltip content markup
27242
27243  });
27244
27245  if ($('[data-toggle="popover"].interactive').length) {
27246    $(document).mouseup(function (e) {
27247      if ($('.popover.show').length) {
27248        var container = $('.popover.show'); // if the target of the click isn't the container nor a descendant of the container
27249
27250        if (!container.is(e.target) && container.has(e.target).length === 0) {
27251          $('[data-toggle="popover"].interactive').popover('hide');
27252        }
27253      }
27254    });
27255  }
27256}
27257
27258module.exports = function () {
27259  enableTooltipsAndPopovers();
27260  $('body').on('tooltip:init', enableTooltipsAndPopovers);
27261};
27262
27263/***/ }),
27264
27265/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/hosted.js":
27266/*!****************************************************************************************************************!*\
27267  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/hosted.js ***!
27268  \****************************************************************************************************************/
27269/*! no static exports found */
27270/***/ (function(module, exports, __webpack_require__) {
27271
27272"use strict";
27273
27274
27275var debounce = __webpack_require__(/*! lodash/debounce */ "../storefront-reference-architecture/node_modules/lodash/debounce.js");
27276
27277var VideoHelper = __webpack_require__(/*! ./videoHelper */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/videoHelper.js");
27278
27279var PlayerDefaults = {
27280  autoplay: false,
27281  controls: true,
27282  muted: false,
27283  loop: false,
27284  modal: false,
27285  hasThumb: false
27286};
27287/**
27288 * initDomElements()
27289 * 
27290 * Saves generalized references to DOM elements needed by the player to operate. 
27291 * 
27292 * player.domElements.$player - div used to init the player API, also holds the configuration data
27293 * player.domElements.$thumb - thumbnail/preview image that masks the player on screen while not playing
27294 * player.domElements.$cntr - outer div container used to attach dimensions when needed
27295 */
27296
27297function initDomElements() {
27298  var player = this;
27299  var $elem = $('#' + player.id);
27300  player.domElements = {
27301    $player: $elem,
27302    $thumb: $elem.siblings('.video-thumbnail'),
27303    $cntr: $elem.closest('.video-container')
27304  };
27305}
27306/**
27307 * initConfig()
27308 * 
27309 * Parses and stores the configuration data attributes set by the content asset.
27310 * In case of parse error, fallback to this module's PlayerDefaults.
27311 */
27312
27313
27314function initConfig() {
27315  var player = this;
27316  var playerAttrData = {};
27317
27318  try {
27319    playerAttrData = JSON.parse(player.domElements.$player.attr('data-player-attr'));
27320  } catch (ex) {
27321    playerAttrData = PlayerDefaults;
27322  }
27323
27324  player.config = {
27325    autoplay: !!playerAttrData.autoplay,
27326    controls: !!playerAttrData.controls,
27327    muted: !!playerAttrData.mute,
27328    loop: !!playerAttrData.loop,
27329    hasThumb: playerAttrData.hasThumb,
27330    modal: !!playerAttrData.modal,
27331    videoId: player.domElements.$player.attr('data-video-id')
27332  };
27333}
27334/**
27335 * createApiPlayer()
27336 * 
27337 * Create and store the vendor specific API Player.
27338 * The configurations set in the content asset can be overridden for specific use cases, like turning off autoplay when closing the modal.
27339 * 
27340 * Also attaches any needed playback events to the player. 
27341 * 
27342 * @param {object} overrides - attributes that can override the defined player.config attributes
27343 * @returns {Promise} - Vimeo player ready() Promise is returned so we don't make any calls too early
27344 */
27345
27346
27347function createApiPlayer(overrides) {
27348  var player = this;
27349  var config = player.config;
27350
27351  var onReadyCallback = function onReadyCallback(e) {
27352    if (overrides.onReady) {
27353      overrides.onReady(e);
27354      delete overrides['onReady'];
27355    }
27356  }; // apply overrides attributes
27357
27358
27359  if (overrides) {
27360    config = $.extend({}, player.config, overrides);
27361  }
27362
27363  player.apiObj = new videojs(player.id, {
27364    autoplay: config.autoplay,
27365    playsinline: config.autoplay,
27366    controls: config.controls,
27367    loop: config.loop,
27368    muted: config.muted
27369  }, onReadyCallback);
27370  player.apiObj.on('pause', function () {
27371    // save the current location
27372    player.cache.time = player.apiObj.currentTime();
27373  });
27374  player.apiObj.on('ended', function () {
27375    $('body').trigger('video:ended', player);
27376  });
27377}
27378/**
27379 * initPageEvents()
27380 * 
27381 * Initializes any page load event logic for the player. 
27382 */
27383
27384
27385function initPageEvents() {
27386  var player = this;
27387  var $playerContainer = player.domElements.$cntr; // pause all players at init, before deciding if they should play
27388
27389  player.pause();
27390
27391  if (player.config.hasThumb) {
27392    //handle thumbnail click
27393    player.domElements.$thumb.on('click', function (event) {
27394      event.preventDefault();
27395
27396      if (player.config.modal) {
27397        player.launchModal();
27398      } else {
27399        var paused = player.apiObj.paused();
27400
27401        if (!paused) {
27402          player.pause();
27403        } else {
27404          var playPromise = player.domElements.$player[0].play();
27405
27406          if (playPromise !== undefined) {
27407            playPromise.then(function () {
27408              player.domElements.$thumb.addClass('faded');
27409            })["catch"](function (error) {
27410              console.error('play error:', error);
27411            });
27412          }
27413        }
27414      }
27415    });
27416  }
27417
27418  if (player.domElements.$cntr.closest('.modal').length) {
27419    $(window).on('resize', debounce(function () {
27420      return player.removeSize();
27421    }, 100));
27422  }
27423
27424  if (VideoHelper.shouldPlay($playerContainer) && player.config.autoplay && !player.config.modal) {
27425    var autoplayPromise = player.domElements.$player[0].play();
27426
27427    if (autoplayPromise !== undefined) {
27428      player.play();
27429    }
27430  }
27431
27432  $(window).on('scrollUpdate', function () {
27433    if (VideoHelper.shouldPlay($playerContainer)) {
27434      if (player.config.autoplay && !player.config.modal) {
27435        var _autoplayPromise = player.domElements.$player[0].play();
27436
27437        if (_autoplayPromise !== undefined) {
27438          player.play();
27439        }
27440      }
27441    } else {
27442      if (!player.apiObj.paused()) {
27443        player.pause();
27444      }
27445    }
27446  });
27447}
27448
27449module.exports = function (playerId) {
27450  var player = this;
27451  this.id = playerId;
27452  this.type = 'hosted';
27453  this.cache = {};
27454  /**********************************************************
27455   **  Calls to initialize the player and event listeners  **
27456   **********************************************************/
27457
27458  initDomElements.call(player);
27459  initConfig.call(player);
27460  createApiPlayer.call(player, {
27461    onReady: function onReady() {
27462      return initPageEvents.call(player);
27463    }
27464  });
27465  /**************************************
27466   **  Generalized playback functions  **
27467   **************************************/
27468
27469  this.play = function () {
27470    player.apiObj.play();
27471
27472    if (player.domElements.$thumb.length && !player.config.modal) {
27473      player.domElements.$thumb.addClass('faded');
27474    }
27475  };
27476
27477  this.pause = function () {
27478    player.apiObj.pause();
27479
27480    if (player.domElements.$thumb.length) {
27481      player.domElements.$thumb.removeClass('faded');
27482    }
27483  };
27484
27485  this.mute = function () {
27486    player.apiObj.getVolume().then(function (volume) {
27487      player.cache.volume = volume;
27488    });
27489    player.apiObj.setVolume(0);
27490  };
27491
27492  this.unmute = function () {
27493    var volume = 1;
27494
27495    if (player.cachedVolume) {
27496      volume = player.cache.volume;
27497    }
27498
27499    player.apiObj.setVolume(volume);
27500  };
27501  /*********************************************************
27502   **  Functions to support playing the video in a modal  **
27503   *********************************************************/
27504
27505
27506  this.setSize = function () {
27507    player.domElements.$cntr.css({
27508      height: player.domElements.$cntr.outerHeight(),
27509      width: player.domElements.$cntr.outerWidth()
27510    });
27511  };
27512
27513  this.removeSize = function () {
27514    player.domElements.$cntr.css({
27515      height: 'auto',
27516      width: 'auto'
27517    });
27518  };
27519
27520  this.setModal = function (VideoModal) {
27521    player.modal = VideoModal;
27522  };
27523
27524  this.launchModal = function () {
27525    player.setSize();
27526    player.modal.launch(player);
27527  };
27528  /*****************************************************
27529   **  Event Handlers for the modal events  **
27530   *****************************************************/
27531
27532
27533  this.getShowEventHandler = function () {
27534    var $modal = player.modal.getModalObj();
27535    var $body = $('.modal-body', $modal).empty().removeClass();
27536    $body.addClass('modal-body ' + player.domElements.$cntr.attr('class'));
27537
27538    if (player.apiObj && player.apiObj.dispose) {
27539      var $player = player.domElements.$player; // create new, uninitialized video element for use in modal
27540
27541      var $newPlayer = $('<video/>', {
27542        'data-asset-id': $player.data('asset-id'),
27543        'data-video': $player.data('video'),
27544        'data-player-attr': JSON.stringify($player.data('player-attr')),
27545        'data-video-id': $player.data('video-id'),
27546        'class': 'video-player video-js',
27547        'id': $player.attr('id')
27548      });
27549      var $newPlayerSource = $('<source/>', {
27550        'src': $player.attr('data-video-id'),
27551        'type': $player.attr('data-filetype')
27552      }); // remove old player
27553
27554      delete player.apiObj;
27555      videojs($player[0]).dispose(); // add new player and update player properties
27556
27557      $newPlayer.append($newPlayerSource);
27558      $body.append($newPlayer);
27559      player.domElements.$player = $newPlayer;
27560      player.id = $newPlayer.attr('id');
27561    }
27562
27563    createApiPlayer.call(player, {
27564      onReady: function onReady(e) {
27565        // set the current location if one is saved
27566        if (player.cache.time) {
27567          player.apiObj.currentTime(player.cache.time);
27568        }
27569
27570        player.play();
27571      }
27572    });
27573  };
27574
27575  this.getHideEventHandler = function () {
27576    // save the current location
27577    player.cache.time = player.apiObj.currentTime();
27578
27579    if (videojs.getPlayers()[player.id]) {
27580      delete videojs.getPlayers()[player.id];
27581    }
27582
27583    createApiPlayer.call(player, {
27584      autoplay: false
27585    });
27586  };
27587
27588  return this;
27589};
27590
27591/***/ }),
27592
27593/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/index.js":
27594/*!***************************************************************************************************************!*\
27595  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/index.js ***!
27596  \***************************************************************************************************************/
27597/*! no static exports found */
27598/***/ (function(module, exports, __webpack_require__) {
27599
27600"use strict";
27601
27602
27603var YouTube = __webpack_require__(/*! ./youtube */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/youtube.js");
27604
27605var Vimeo = __webpack_require__(/*! ./vimeo */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/vimeo.js");
27606
27607var Hosted = __webpack_require__(/*! ./hosted */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/hosted.js");
27608
27609var VideoModal = __webpack_require__(/*! ./videoModal */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/videoModal.js");
27610
27611var videojs = __webpack_require__(/*! video.js/dist/video.min.js */ "../rvw_autobahn_core/node_modules/video.js/dist/video.min.js");
27612
27613window.Players = {};
27614
27615var initPlayers = function initPlayers() {
27616  var $context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $('body');
27617  var isAjaxEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
27618  var $ytElements = $context.find('.video-player[data-video=youtube]');
27619  var $vimeoElements = $context.find('.video-player[data-video=vimeo]');
27620  var $hostedElements = $context.find('video[data-video=hosted]');
27621
27622  if ($vimeoElements.length) {
27623    loadVimeoAPI().then(function () {
27624      $vimeoElements.each(function (index, element) {
27625        // don't create player for videos in sliders until slider has been initialized
27626        if (!$(element).closest('.slider-container').length || $context.is('.slider-container') && $(element).closest($context).length) {
27627          var playerId = getUniquePlayerId(index, element, isAjaxEvent);
27628
27629          if (!window.Players.hasOwnProperty(playerId) || isAjaxEvent) {
27630            window.Players[playerId] = new Vimeo(playerId);
27631            window.Players[playerId].setModal(VideoModal);
27632          }
27633        }
27634      });
27635    })["catch"](function (err) {
27636      if (console && console.error) {
27637        console.error(err);
27638      }
27639    });
27640  }
27641
27642  if ($ytElements.length) {
27643    loadYouTubeAPI().then(function () {
27644      $ytElements.each(function (index, element) {
27645        // don't create player for videos in sliders until slider has been initialized
27646        if (!$(element).closest('.slider-container').length || $context.is('.slider-container') && $(element).closest($context).length) {
27647          var playerId = getUniquePlayerId(index, element, isAjaxEvent);
27648
27649          if (!window.Players.hasOwnProperty(playerId) || isAjaxEvent) {
27650            window.Players[playerId] = new YouTube(playerId);
27651            window.Players[playerId].setModal(VideoModal);
27652          }
27653        }
27654      });
27655    })["catch"](function (err) {
27656      if (console && console.error) {
27657        console.error(err);
27658      }
27659    });
27660  }
27661
27662  if ($hostedElements.length) {
27663    window.videojs = videojs;
27664    $hostedElements.each(function (index, element) {
27665      // don't create player for videos in sliders until slider has been initialized
27666      if (!$(element).closest('.slider-container').length || $context.is('.slider-container') && $(element).closest($context).length) {
27667        var playerId = getUniquePlayerId(index, element, isAjaxEvent);
27668
27669        if (!window.Players.hasOwnProperty(playerId) || isAjaxEvent) {
27670          window.Players[playerId] = new Hosted(playerId);
27671          window.Players[playerId].setModal(VideoModal);
27672        }
27673      }
27674    });
27675  }
27676
27677  if ($vimeoElements.length || $ytElements.length || $hostedElements.length) {
27678    $('body').on('video:ended', function (event, player) {
27679      if (player.domElements.$thumb.length) {
27680        player.domElements.$thumb.removeClass('faded');
27681      } // prevent videos from replaying on scroll if they've already finished
27682
27683
27684      player.config.autoplay = false;
27685    }); // Reinitialze videos if slider loads, to allow creation of unique IDs
27686
27687    $('body').off('.sliderEvents').on('slider:init.sliderEvents', function (event, $sliderContainer) {
27688      initPlayers($sliderContainer);
27689    });
27690  } // Initialize/reinitialize videos in case of ajax partial page load 
27691
27692
27693  $('body').off('.ajaxEvents').on('ajax:load.ajaxEvents', function (event, $container) {
27694    initPlayers($container, true);
27695  });
27696};
27697
27698var ytPromise = null;
27699
27700var loadYouTubeAPI = function loadYouTubeAPI() {
27701  if (ytPromise) {
27702    return ytPromise;
27703  }
27704
27705  return ytPromise = new Promise(function (resolve) {
27706    var tag = document.createElement('script');
27707    tag.src = "https://www.youtube.com/iframe_api";
27708
27709    tag.onerror = function () {
27710      throw new Error('YouTube iframe API load error');
27711    };
27712
27713    var firstScriptTag = document.getElementsByTagName('script')[0];
27714    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
27715
27716    window.onYouTubeIframeAPIReady = function () {
27717      return resolve();
27718    };
27719  });
27720};
27721
27722var loadVimeoAPI = function loadVimeoAPI() {
27723  return new Promise(function (resolve) {
27724    var tag = document.createElement('script');
27725    tag.src = "https://player.vimeo.com/api/player.js";
27726    tag.onload = resolve;
27727
27728    tag.onerror = function () {
27729      throw new Error('Vimeo player SDK load error');
27730    };
27731
27732    var firstScriptTag = document.getElementsByTagName('script')[0];
27733    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
27734  });
27735}; // handle cases where multiple videos with the same ID exist, like looping sliders
27736
27737
27738var getUniquePlayerId = function getUniquePlayerId(index, element, isAjaxEvent) {
27739  var playerId = $(element).attr('id');
27740
27741  if (window.Players.hasOwnProperty(playerId) && !isAjaxEvent) {
27742    playerId = playerId + '-' + index;
27743    $(element).attr('id', playerId);
27744  }
27745
27746  return playerId;
27747};
27748/**
27749 * TODO:
27750 *     - document everything
27751 *     - Youtube API pageload errors
27752 */
27753
27754
27755module.exports = function () {
27756  return initPlayers();
27757};
27758
27759/***/ }),
27760
27761/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/videoHelper.js":
27762/*!*********************************************************************************************************************!*\
27763  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/videoHelper.js ***!
27764  \*********************************************************************************************************************/
27765/*! no static exports found */
27766/***/ (function(module, exports, __webpack_require__) {
27767
27768"use strict";
27769 // Checks if a video player is visible in the viewport
27770
27771function isPlayerVisible($playerContainer, onlyPlayWhenFullyInView) {
27772  var fitsInViewport = $playerContainer.height() - 10 <= $(window).height();
27773  var pageTop = $(window).scrollTop();
27774  var pageBottom = pageTop + $(window).height();
27775  var elementTop = $playerContainer.offset().top;
27776  var elementBottom = elementTop + $playerContainer.height();
27777
27778  if (onlyPlayWhenFullyInView && fitsInViewport) {
27779    return pageTop <= elementTop && pageBottom >= elementBottom;
27780  } else {
27781    return elementTop <= pageBottom && elementBottom >= pageTop;
27782  }
27783} // Checks if a video player is inside an inactive slide within a slider
27784
27785
27786function isPlayerInInactiveSlide($playerContainer) {
27787  return !!$playerContainer.closest('.slider').length && !$playerContainer.closest('.tns-slide-active').length && !$playerContainer.closest('.hero-button').length;
27788} // Checks if a video player is inside an inactive tab within a tab component
27789
27790
27791function isPlayerInInactiveTab($playerContainer) {
27792  return !!$playerContainer.closest('.tab-pane').length && !$playerContainer.closest('.tab-pane.active').length;
27793} // Check if a video should be played
27794
27795
27796function shouldPlay($playerContainer) {
27797  var onlyPlayWhenFullyInView = $playerContainer.data('play-when-fully-in-view');
27798  return isPlayerVisible($playerContainer, onlyPlayWhenFullyInView) && !isPlayerInInactiveSlide($playerContainer) && !isPlayerInInactiveTab($playerContainer);
27799}
27800
27801module.exports = {
27802  shouldPlay: shouldPlay
27803};
27804
27805/***/ }),
27806
27807/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/videoModal.js":
27808/*!********************************************************************************************************************!*\
27809  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/videoModal.js ***!
27810  \********************************************************************************************************************/
27811/*! no static exports found */
27812/***/ (function(module, exports, __webpack_require__) {
27813
27814"use strict";
27815
27816
27817var ModalTemplate = "<div id=\"videoModal\" class=\"video-modal modal fade\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"videoModal\">\n                            <div class=\"modal-dialog modal-lg\" role=\"document\">\n                                <div class=\"modal-content\">\n                                    <div class=\"modal-header\">\n                                        <h5 class=\"modal-title\"></h5>\n                                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\n                                            <span aria-hidden=\"true\">&times;</span>\n                                        </button>\n                                    </div>\n                                    <div class=\"modal-body\"></div>\n                                </div>\n                            </div>\n                        </div>";
27818var ModalStates = {
27819  NOT_READY: 0,
27820  READY: 1,
27821  OPEN: 2,
27822  CLOSED: 3
27823};
27824
27825module.exports = function () {
27826  var myState = ModalStates.NOT_READY;
27827  var currentVideo = '';
27828
27829  if (!$('#videoModal').length) {
27830    $(ModalTemplate).appendTo('body');
27831    myState = ModalStates.READY;
27832  }
27833
27834  var $modal = $('#videoModal');
27835  return {
27836    States: ModalStates,
27837    launch: function launch(player) {
27838      $modal.detach().appendTo('body'); // keep video modal on top of any other open modals
27839      //test if modal is already in use
27840
27841      if (myState === ModalStates.OPEN) {
27842        console.error('Cannot launch' + player.id + ', Modal is already in use for: ' + currentVideo);
27843      } else {
27844        $modal.on('show.bs.modal', function () {
27845          if (typeof player.getShowEventHandler === 'function') {
27846            player.getShowEventHandler();
27847          }
27848
27849          myState = ModalStates.OPEN;
27850          currentVideo = player.id;
27851        }).on('shown.bs.modal', function () {
27852          if (typeof player.getShownEventHandler === 'function') {
27853            player.getShownEventHandler();
27854          }
27855        }).on('hide.bs.modal', function () {
27856          if (typeof player.getHideEventHandler === 'function') {
27857            player.getHideEventHandler();
27858          }
27859
27860          myState = ModalStates.CLOSED;
27861        }).on('hidden.bs.modal', function () {
27862          if (typeof player.getHiddenEventHandler === 'function') {
27863            player.getHiddenEventHandler();
27864          }
27865
27866          $modal.modal('dispose');
27867        }).modal();
27868      }
27869    },
27870    setState: function setState(state) {
27871      if (ModalStates[state]) {
27872        myState = state;
27873      }
27874    },
27875    getState: function getState() {
27876      return myState;
27877    },
27878    is: function is(state) {
27879      return myState === state;
27880    },
27881    getModalObj: function getModalObj() {
27882      return $modal;
27883    }
27884  };
27885}();
27886
27887/***/ }),
27888
27889/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/vimeo.js":
27890/*!***************************************************************************************************************!*\
27891  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/vimeo.js ***!
27892  \***************************************************************************************************************/
27893/*! no static exports found */
27894/***/ (function(module, exports, __webpack_require__) {
27895
27896"use strict";
27897
27898
27899var debounce = __webpack_require__(/*! lodash/debounce */ "../storefront-reference-architecture/node_modules/lodash/debounce.js");
27900
27901var VideoHelper = __webpack_require__(/*! ./videoHelper */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/videoHelper.js");
27902
27903var PlayerDefaults = {
27904  autoplay: false,
27905  controls: true,
27906  muted: false,
27907  loop: false,
27908  modal: false,
27909  hasThumb: false
27910};
27911/**
27912 * initDomElements()
27913 *
27914 * Saves generalized references to DOM elements needed by the player to operate.
27915 *
27916 * player.domElements.$player - div used to init the player API, also holds the configuration data
27917 * player.domElements.$thumb - thumbnail/preview image that masks the player on screen while not playing
27918 * player.domElements.$cntr - outer div container used to attach dimensions when needed
27919 */
27920
27921function initDomElements() {
27922  var player = this;
27923  var $elem = $('#' + player.id);
27924  player.domElements = {
27925    $player: $elem,
27926    $thumb: $elem.siblings('.video-thumbnail'),
27927    $cntr: $elem.closest('.video-container')
27928  };
27929}
27930/**
27931 * initConfig()
27932 *
27933 * Parses and stores the configuration data attributes set by the content asset.
27934 * In case of parse error, fallback to this module's PlayerDefaults.
27935 */
27936
27937
27938function initConfig() {
27939  var player = this;
27940  var playerAttrData = {};
27941
27942  try {
27943    playerAttrData = JSON.parse(player.domElements.$player.attr('data-player-attr'));
27944  } catch (ex) {
27945    playerAttrData = PlayerDefaults;
27946  }
27947
27948  player.config = {
27949    autoplay: !!playerAttrData.autoplay,
27950    controls: !!playerAttrData.controls,
27951    muted: !!playerAttrData.mute,
27952    loop: !!playerAttrData.loop,
27953    background: !!playerAttrData.autoplay && !playerAttrData.controls && !!playerAttrData.mute && !!playerAttrData.loop,
27954    autopause: !(!!playerAttrData.autoplay && !playerAttrData.controls && !!playerAttrData.mute),
27955    hasThumb: playerAttrData.hasThumb,
27956    modal: !!playerAttrData.modal,
27957    videoId: player.domElements.$player.attr('data-video-id')
27958  };
27959}
27960/**
27961 * createApiPlayer()
27962 *
27963 * Create and store the vendor specific API Player.
27964 * The configurations set in the content asset can be overridden for specific use cases, like turning off autoplay when closing the modal.
27965 *
27966 * Also attaches any needed playback events to the player.
27967 *
27968 * @param {object} overrides - attributes that can override the defined player.config attributes
27969 * @returns {Promise} - Vimeo player ready() Promise is returned so we don't make any calls too early
27970 */
27971
27972
27973function createApiPlayer(overrides) {
27974  var player = this;
27975  var config = player.config; // apply overrides attributes
27976
27977  if (overrides) {
27978    config = $.extend({}, player.config, overrides);
27979  }
27980
27981  player.apiObj = new Vimeo.Player(player.id, {
27982    id: config.videoId,
27983    autoplay: config.autoplay,
27984    controls: config.controls,
27985    loop: config.loop,
27986    muted: config.muted,
27987    background: config.background,
27988    autopause: config.autopause
27989  });
27990  player.apiObj.on('pause', function () {
27991    // save the current location
27992    player.apiObj.getCurrentTime().then(function (seconds) {
27993      player.cache.time = seconds;
27994    });
27995  });
27996  player.apiObj.on('ended', function () {
27997    $('body').trigger('video:ended', player);
27998  });
27999  return player.apiObj.ready();
28000}
28001/**
28002 * initPageEvents()
28003 *
28004 * Initializes any page load event logic for the player.
28005 */
28006
28007
28008function initPageEvents() {
28009  var player = this;
28010  var $playerContainer = player.domElements.$player.closest('.video-container'); // pause all players at init, before deciding if they should play
28011
28012  player.pause();
28013
28014  if (player.config.hasThumb) {
28015    //handle thumbnail click
28016    player.domElements.$thumb.on('click', function (event) {
28017      event.preventDefault();
28018
28019      if (player.config.modal) {
28020        player.launchModal();
28021      } else {
28022        player.apiObj.getPaused().then(function (paused) {
28023          if (!paused) {
28024            player.pause();
28025          } else {
28026            player.play();
28027          }
28028        })["catch"](function (error) {
28029          return console.error('error getting paused status:', error);
28030        });
28031      }
28032    });
28033  }
28034
28035  if (player.domElements.$cntr.closest('.modal').length) {
28036    $(window).on('resize', debounce(function () {
28037      return player.removeSize();
28038    }, 100));
28039  }
28040
28041  if (VideoHelper.shouldPlay($playerContainer) && player.config.auto
28041play && !player.config.modal) {
28042    player.play(); // retrigger play method to ensure iOS autoplays
28043
28044    if (/iPad|iPhone|iPod/.test(navigator.userAgent)) {
28045      setTimeout(function () {
28046        player.play();
28047      }, 500);
28048    }
28049  }
28050
28051  $(window).on('scrollUpdate', function () {
28052    if (VideoHelper.shouldPlay($playerContainer)) {
28053      if (player.config.autoplay && !player.config.modal) {
28054        player.apiObj.getPaused().then(function (paused) {
28055          if (paused) {
28056            player.play();
28057          }
28058        })["catch"](function (error) {
28059          return console.error('error getting paused status:', error);
28060        });
28061      }
28062    } else {
28063      player.apiObj.getPaused().then(function (paused) {
28064        if (!paused) {
28065          player.pause();
28066        }
28067      })["catch"](function (error) {
28068        return console.error('error getting paused status:', error);
28069      });
28070    }
28071  });
28072}
28073
28074module.exports = function (playerId) {
28075  var player = this;
28076  this.id = playerId;
28077  this.type = 'vimeo';
28078  this.cache = {};
28079  /**********************************************************
28080   **  Calls to initialize the player and event listeners  **
28081   **********************************************************/
28082
28083  initDomElements.call(player);
28084  initConfig.call(player);
28085  createApiPlayer.call(player).then(function () {
28086    return initPageEvents.call(player);
28087  });
28088  /**************************************
28089   **  Generalized playback functions  **
28090   **************************************/
28091
28092  this.play = function () {
28093    player.apiObj.play();
28094
28095    if (player.domElements.$thumb.length && !player.config.modal) {
28096      player.domElements.$thumb.addClass('faded');
28097    }
28098  };
28099
28100  this.pause = function () {
28101    player.apiObj.pause();
28102
28103    if (player.domElements.$thumb.length) {
28104      player.domElements.$thumb.removeClass('faded');
28105    }
28106  };
28107
28108  this.mute = function () {
28109    player.apiObj.getVolume().then(function (volume) {
28110      player.cache.volume = volume;
28111    });
28112    player.apiObj.setVolume(0);
28113  };
28114
28115  this.unmute = function () {
28116    var volume = 1;
28117
28118    if (player.cachedVolume) {
28119      volume = player.cache.volume;
28120    }
28121
28122    player.apiObj.setVolume(volume);
28123  };
28124  /*********************************************************
28125   **  Functions to support playing the video in a modal  **
28126   *********************************************************/
28127
28128
28129  this.setSize = function () {
28130    player.domElements.$cntr.css({
28131      height: player.domElements.$cntr.outerHeight(),
28132      width: player.domElements.$cntr.outerWidth()
28133    });
28134  };
28135
28136  this.removeSize = function () {
28137    player.domElements.$cntr.css({
28138      height: 'auto',
28139      width: 'auto'
28140    });
28141  };
28142
28143  this.setModal = function (VideoModal) {
28144    player.modal = VideoModal;
28145  };
28146
28147  this.launchModal = function () {
28148    player.setSize();
28149    player.modal.launch(player);
28150  };
28151  /*****************************************************
28152   **  Event Handlers for the Bootstrap modal events  **
28153   *****************************************************/
28154
28155
28156  this.getShowEventHandler = function () {
28157    var $modal = player.modal.getModalObj();
28158    var $body = $('.modal-body', $modal).empty().removeClass();
28159    $body.addClass('modal-body ' + player.domElements.$cntr.attr('class'));
28160    player.domElements.$player.appendTo($body);
28161    player.apiObj.destroy().then(function () {
28162      return createApiPlayer.call(player);
28163    }).then(function () {
28164      // set the current location if one is saved
28165      if (player.cache.time) {
28166        player.apiObj.setCurrentTime(player.cache.time);
28167      }
28168
28169      player.play();
28170    });
28171  };
28172
28173  this.getHideEventHandler = function () {
28174    // save the current location
28175    player.apiObj.getCurrentTime().then(function (seconds) {
28176      player.cache.time = seconds;
28177    }).then(function () {
28178      // vimeo doesnt like to be moved around the DOM, and loses all its event listeners
28179      // so lets destroy and re-init whenever we move it to and from a modal
28180      player.domElements.$player.prependTo(player.domElements.$cntr);
28181      player.apiObj.destroy().then(function () {
28182        //create a new api player but dont let it autoplay
28183        createApiPlayer.call(player, {
28184          autoplay: false
28185        });
28186      });
28187    });
28188  };
28189
28190  return this;
28191};
28192
28193/***/ }),
28194
28195/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/youtube.js":
28196/*!*****************************************************************************************************************!*\
28197  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/youtube.js ***!
28198  \*****************************************************************************************************************/
28199/*! no static exports found */
28200/***/ (function(module, exports, __webpack_require__) {
28201
28202"use strict";
28203
28204
28205var debounce = __webpack_require__(/*! lodash/debounce */ "../storefront-reference-architecture/node_modules/lodash/debounce.js");
28206
28207var VideoHelper = __webpack_require__(/*! ./videoHelper */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/videoHelper.js");
28208
28209var PlayerDefaults = {
28210  autoplay: 0,
28211  playsinline: 0,
28212  controls: 1,
28213  mute: 0,
28214  loop: 0,
28215  modal: false,
28216  hasThumb: false,
28217  playlist: ''
28218};
28219var origin = window.location.protocol + '//' + window.location.host;
28220/**
28221 * initDomElements()
28222 * 
28223 * Saves generalized references to DOM elements needed by the player to operate. 
28224 * 
28225 * player.domElements.$player - div used to init the player API, also holds the configuration data
28226 * player.domElements.$thumb - thumbnail/preview image that masks the player on screen while not playing
28227 * player.domElements.$cntr - outer div container used to attach dimensions when needed
28228 */
28229
28230function initDomElements() {
28231  var player = this;
28232  var $elem = $('#' + player.id);
28233  player.domElements = {
28234    $player: $elem,
28235    $thumb: $elem.siblings('.video-thumbnail'),
28236    $cntr: $elem.closest('.video-container')
28237  };
28238}
28239/**
28240 * initConfig()
28241 * 
28242 * Parses and stores the configuration data attributes set by the content asset.
28243 * In case of parse error, fallback to this module's PlayerDefaults.
28244 */
28245
28246
28247function initConfig() {
28248  var player = this;
28249  var playerAttrData = {};
28250
28251  try {
28252    playerAttrData = JSON.parse(player.domElements.$player.attr('data-player-attr'));
28253  } catch (ex) {
28254    playerAttrData = PlayerDefaults;
28255  }
28256
28257  var videoId = player.domElements.$player.attr('data-video-id');
28258  var playlist = playerAttrData.loop === 1 ? videoId : '';
28259  player.config = {
28260    autoplay: playerAttrData.autoplay,
28261    playsinline: playerAttrData.autoplay === 1 ? 1 : 0,
28262    controls: playerAttrData.controls,
28263    mute: playerAttrData.mute,
28264    loop: playerAttrData.loop,
28265    hasThumb: playerAttrData.hasThumb,
28266    modal: playerAttrData.modal,
28267    videoId: videoId,
28268    modestbranding: 1
28269  };
28270
28271  if (playlist != '') {
28272    player.config.playlist = playlist;
28273  }
28274}
28275/**
28276 * createApiPlayer()
28277 * 
28278 * Create and store the vendor specific API Player.
28279 * The configurations set in the content asset can be overridden for specific use cases, like turning off autoplay when closing the modal.
28280 * 
28281 * Also attaches any needed playback events to the player. 
28282 * 
28283 * @param {object} overrides - attributes that can override the defined player.config attributes
28284 */
28285
28286
28287function createApiPlayer(overrides) {
28288  var player = this;
28289  var config = player.config;
28290
28291  var onReadyCallback = function onReadyCallback(e) {
28292    commonOnReady.call(player, e);
28293
28294    if (overrides.onReady) {
28295      overrides.onReady(e);
28296      delete overrides['onReady'];
28297    }
28298  }; // apply overrides attributes
28299
28300
28301  if (overrides) {
28302    config = $.extend({}, player.config, overrides);
28303  }
28304
28305  player.apiObj = new YT.Player(player.id, {
28306    videoId: config.videoId,
28307    playerVars: {
28308      autoplay: config.autoplay,
28309      playsinline: config.playsinline,
28310      controls: config.controls,
28311      mute: config.mute,
28312      loop: config.loop,
28313      playlist: config.playlist,
28314      enablejsapi: 1,
28315      origin: origin,
28316      widget_referrer: origin
28317    },
28318    host: 'https://www.youtube.com',
28319    // prevents 'postMessage' origin mismatch error
28320    events: {
28321      onReady: onReadyCallback,
28322      onStateChange: function onStateChange(e) {
28323        if (e.data === YT.PlayerState.PAUSED) {
28324          // save the current location
28325          player.cache.time = e.target.getCurrentTime();
28326        } else if (e.data === YT.PlayerState.PLAYING) {// not currently using the on play event, but it's here for future use
28327        }
28328
28329        if (e.data === 0) {
28330          $('body').trigger('video:ended', player);
28331        }
28332      },
28333      onError: function onError(e) {
28334        if (console && console.error) {
28335          console.error('onError: ' + e.data);
28336        }
28337      }
28338    }
28339  });
28340}
28341/**
28342 * initPageEvents()
28343 * 
28344 * Initializes any page event logic for the player. 
28345 */
28346
28347
28348function initPageEvents() {
28349  var player = this;
28350  var $playerContainer = player.domElements.$player.closest('.video-container'); // pause all players at init, before deciding if they should play
28351
28352  player.pause(); // honor the auto mute settings when launching modal
28353
28354  if (player.config.mute === 1) {
28355    player.mute();
28356  } else {
28357    player.unmute();
28358  }
28359
28360  if (player.config.hasThumb) {
28361    //handle thumbnail click
28362    player.domElements.$thumb.on('click', function (event) {
28363      event.preventDefault();
28364
28365      if (player.config.modal) {
28366        player.launchModal();
28367      } else {
28368        var playerState = player.apiObj.getPlayerState();
28369        var playing = playerState === 1;
28370
28371        if (playing) {
28372          player.pause();
28373        } else {
28374          player.play();
28375        }
28376      }
28377    });
28378  }
28379
28380  if (player.domElements.$cntr.closest('.modal').length) {
28381    $(window).on('resize', debounce(function () {
28382      return player.removeSize();
28383    }, 100));
28384  }
28385
28386  if (VideoHelper.shouldPlay($playerContainer) && player.config.autoplay && !player.config.modal) {
28387    player.play();
28388  }
28389
28390  $(window).on('scrollUpdate', function () {
28391    var playerState = player.apiObj.getPlayerState();
28392    var playing = playerState === 1;
28393
28394    if (VideoHelper.shouldPlay($playerContainer)) {
28395      if (player.config.autoplay && !playing && !player.config.modal) {
28396        player.play();
28397      }
28398    } else if (playing) {
28399      player.pause();
28400    }
28401  });
28402}
28403
28404function commonOnReady(e) {
28405  var player = this; // update player dom reference
28406
28407  player.domElements.$player = $('#' + player.id); // if we have an auto play, auto mute, modal, then honor the config,
28408  // else let the app maintain the volume state
28409
28410  if (typeof player.cache.mute !== 'undefined') {
28411    if (player.cache.mute === 1) {
28412      e.target.mute();
28413    } else {
28414      e.target.unMute();
28415    }
28416
28417    delete player.cache.mute;
28418  }
28419}
28420
28421module.exports = function (playerId) {
28422  var player = this;
28423  this.id = playerId;
28424  this.type = 'youtube';
28425  this.cache = {};
28426  /**********************************************************
28427   **  Calls to initialize the player and event listeners  **
28428   **********************************************************/
28429
28430  initDomElements.call(player);
28431  initConfig.call(player);
28432  createApiPlayer.call(player, {
28433    onReady: function onReady() {
28434      return initPageEvents.call(player);
28435    }
28436  });
28437  /***************************************
28438   **  Generalized playback functions  **
28439   ***************************************/
28440
28441  this.play = function () {
28442    player.apiObj.playVideo();
28443
28444    if (player.domElements.$thumb.length && !player.config.modal) {
28445      player.domElements.$thumb.addClass('faded');
28446    }
28447  };
28448
28449  this.pause = function () {
28450    player.apiObj.pauseVideo();
28451
28452    if (player.domElements.$thumb.length) {
28453      player.domElements.$thumb.removeClass('faded');
28454    }
28455  };
28456
28457  this.mute = function () {
28458    player.apiObj.mute();
28459    player.cache.mute = 1;
28460  };
28461
28462  this.unmute = function () {
28463    player.apiObj.unMute();
28464    player.cache.mute = 0;
28465  };
28466  /*********************************************************
28467   **  Functions to support playing the video in a modal  **
28468   *********************************************************/
28469
28470
28471  this.setSize = function () {
28472    return player.domElements.$cntr.css({
28473      height: player.domElements.$cntr.outerHeight(),
28474      width: player.domElements.$cntr.outerWidth()
28475    });
28476  };
28477
28478  this.removeSize = function () {
28479    return player.domElements.$cntr.css({
28480      height: 'auto',
28481      width: 'auto'
28482    });
28483  };
28484
28485  this.setModal = function (VideoModal) {
28486    player.modal = VideoModal;
28487  };
28488
28489  this.launchModal = function () {
28490    player.setSize();
28491    player.modal.launch(player);
28492  };
28493  /*****************************************************
28494   **  Event Handlers for the Bootstrap modal events  **
28495   *****************************************************/
28496
28497
28498  this.getShowEventHandler = function () {
28499    // move the video player to the modal body
28500    var $modal = player.modal.getModalObj();
28501    var $body = $('.modal-body', $modal).empty().removeClass();
28502    $body.addClass('modal-body ' + player.domElements.$cntr.attr('class'));
28503    player.domElements.$player.appendTo($body); // rebuild the API player to maintain event handlers
28504
28505    if (player.apiObj && player.apiObj.destroy) {
28506      player.apiObj.destroy();
28507    }
28508
28509    createApiPlayer.call(player, {
28510      onReady: function onReady(e) {
28511        // set the current location if one is saved
28512        if (player.cache.time) {
28513          player.apiObj.seekTo(player.cache.time, true);
28514        }
28515
28516        player.play();
28517      }
28518    });
28519  };
28520
28521  this.getHideEventHandler = function () {
28522    // save current location
28523    player.cache.time = player.apiObj.getCurrentTime(); // move the video player from the modal back to its page container
28524
28525    player.domElements.$player.prependTo(player.domElements.$cntr); // rebuild the API player to maintain event handlers
28526
28527    if (player.apiObj && player.apiObj.destroy) {
28528      player.apiObj.destroy();
28529    }
28530
28531    createApiPlayer.call(player, {
28532      autoplay: 0
28533    });
28534  };
28535
28536  return this;
28537};
28538
28539/***/ }),
28540
28541/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/giftCertificate/giftCertificate.js":
28542/*!************************************************************************************************************************!*\
28543  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/giftCertificate/giftCertificate.js ***!
28544  \************************************************************************************************************************/
28545/*! no static exports found */
28546/***/ (function(module, exports, __webpack_require__) {
28547
28548"use strict";
28549
28550
28551var formErrors = __webpack_require__(/*! ../checkout/formErrors */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/checkout/formErrors.js");
28552
28553var formValidation = __webpack_require__(/*! base/components/formValidation */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js");
28554
28555var cart = __webpack_require__(/*! ../cart/cart */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart/cart.js");
28556
28557var recaptcha = __webpack_require__(/*! ../components/recaptcha */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/recaptcha.js");
28558/**
28559 * shows giftcert toast message
28560 * @param {string} data - data returned from the server's ajax call
28561 */
28562
28563
28564function displayMessage(data, button) {
28565  $.spinner().stop();
28566  $('.minicart').trigger('count:update', data);
28567  var status = data.success ? 'alert-success' : 'alert-danger';
28568
28569  if ($('.add-giftcertificate-messages').length === 0) {
28570    $('body').append('<div class="add-giftcertificate-messages"></div>');
28571  }
28572
28573  $('.add-giftcertificate-messages').append('<div class="alert text-center add-giftcertificate-alert text-center ' + status + '">' + (data.msg || 'There was an error') + '</div>');
28574  setTimeout(function () {
28575    $('.add-giftcertificate-messages').remove();
28576
28577    if (button) {
28578      button.removeAttr('disabled');
28579    }
28580  }, 5000);
28581}
28582
28583function giftCertificateFormSubmission() {
28584  $('body').on('submit', 'form.GiftCertificateForm', function (e) {
28585    e.preventDefault();
28586    var form = $(this);
28587    var isEdit = false;
28588    var button = form.find('.btn-add-giftcertificate-tocart');
28589
28590    if (!button || !button.length) {
28591      button = form.find('.btn-update-giftcertificate-incart');
28592      isEdit = true;
28593    } else {
28594      $('body').trigger('product:beforeAddToCart', this);
28595    }
28596
28597    form.parents('.card').spinner().start();
28598    var url = form.attr('action');
28599    var queryString = form.serialize() + '&format=ajax';
28600
28601    if (isEdit) {
28602      queryString += '&uuid=' + button.data('uuid');
28603    }
28604
28605    button.attr('disabled', true);
28606    recaptcha.check(e, {
28607      url: url,
28608      method: 'POST',
28609      dataType: 'json',
28610      data: queryString,
28611      success: function success(data) {
28612        if (data.success) {
28613          if (isEdit) {
28614            $('#editGiftCertificateLineItemModal').modal('hide');
28615            cart.updateCartTotals(data.cartModel);
28616            updateGiftCertificateLineItem(data.cartModel, button.data('uuid'));
28617            $('body').trigger('cart:update', [data, button.data('uuid')]);
28618          } else {
28619            $('body').trigger('product:afterAddToCart', data);
28620          }
28621
28622          form.trigger('reset');
28623          formErrors.clearPreviousErrors(form);
28624        } else {
28625          if (data.redirectUrl) {
28626            window.location.href = data.redirectUrl;
28627          } else {
28628            formValidation(form, data);
28629          }
28630        }
28631
28632        displayMessage(data, button);
28633      },
28634      error: function error(err) {
28635        if (err.responseJSON.redirectUrl) {
28636          window.location.href = err.responseJSON.redirectUrl;
28637        }
28638
28639        displayMessage(err, button);
28640      }
28641    });
28642  });
28643}
28644
28645;
28646
28647function updateGiftCertificateLineItem(data, uuid) {
28648  var lineItem;
28649
28650  for (var i = 0; i < data.items.length; i++) {
28651    if (data.items[i].UUID === uuid) {
28652      lineItem = data.items[i];
28653      break;
28654    }
28655  }
28656
28657  if (lineItem) {
28658    $('.dwfrm_giftCertificate_purchase_from-' + uuid + ' span').html(lineItem.senderName);
28659    $('.dwfrm_giftCertificate_purchase_from-' + uuid).data('value', lineItem.senderName);
28660    $('.dwfrm_giftCertificate_purchase_recipient-' + uuid + ' span').html(lineItem.recipientName);
28661    $('.dwfrm_giftCertificate_purchase_recipient-' + uuid).data('value', lineItem.recipientName);
28662    $('.dwfrm_giftCertificate_purchase_recipientEmail-' + uuid + ' span').html(lineItem.recipientEmail);
28663    $('.dwfrm_giftCertificate_purchase_recipientEmail-' + uuid).data('value', lineItem.recipientEmail);
28664    $('.dwfrm_giftCertificate_purchase_message-' + uuid + ' span').html(lineItem.message || '');
28665    $('.dwfrm_giftCertificate_purchase_message-' + uuid).attr('title', lineItem.message || '');
28666    $('.pricing.item-total-' + uuid).html(lineItem.priceTotal.price);
28667    $('.pricing.item-total-' + uuid).data('value', lineItem.priceTotal.priceValue + '');
28668  }
28669}
28670
28671function checkBalanceFormSubmission() {
28672  $('body').on('submit', 'form.check-balance', function (e) {
28673    e.preventDefault();
28674    var form = $(this);
28675    form.spinner().start();
28676    var button = form.find('.js-checkbalancebutton');
28677    var url = form.attr('action');
28678    var queryString = form.serialize() + '&format=ajax';
28679    button.attr('disabled', true); //because the error is not an html5 error typically (balance is 0 or does not exist)
28680    //we must clear the previous error + message manually
28681
28682    formErrors.clearPreviousErrors(form);
28683    recaptcha.check(e, {
28684      url: url,
28685      method: 'POST',
28686      dataType: 'json',
28687      data: queryString,
28688      success: function success(data) {
28689        if (data.success) {
28690          form.find('.balancemsg').html(data.balance);
28691        } else {
28692          form.find('.balancemsg').html('');
28693          formValidation(form, data);
28694
28695          if (data.msg) {
28696            displayMessage(data, button);
28697          }
28698        }
28699
28700        $.spinner().stop();
28701        button.removeAttr('disabled');
28702      },
28703      error: function error(err) {
28704        if (err.responseJSON.redirectUrl) {
28705          window.location.href = err.responseJSON.redirectUrl;
28706        }
28707
28708        displayMessage(err, button);
28709      }
28710    });
28711  });
28712}
28713
28714function applyGiftCertificateToBasket() {
28715  $('body').on('click', '.giftcertificate-information .js-applybalancebutton', function (e) {
28716    e.preventDefault();
28717    var button = $(this);
28718    button.attr('disabled', true);
28719    var container = button.parents('.giftcertificate-information');
28720    var checkoutForm = button.parents('form');
28721    container.spinner().start();
28722    var url = button.data('action'); //because the error is not an html5 error typically (balance is 0 or does not exist)
28723    //we must clear the previous error + message manually
28724
28725    formErrors.clearPreviousErrors(container);
28726    recaptcha.check(e, {
28727      url: url,
28728      method: 'POST',
28729      data: checkoutForm.serialize() + '&format=ajax',
28730      success: function success(data) {
28731        if (data.success) {
28732          displayMessage(data, button);
28733          $('.js-giftcertificatepaymentinstruments').html(data.template);
28734          $('body').trigger('checkout:updateCheckoutViewPaymentInformation', {
28735            order: data.order
28736          });
28737        } else {
28738          if (data.redirectUrl) {
28739            window.location.href = data.redirectUrl;
28740          } else {
28741            container.find('.js-balancemsg').html('');
28742            formValidation(container, data);
28743
28744            if (data.msg) {
28745              displayMessage(data, button);
28746            }
28747          }
28748        }
28749
28750        $.spinner().stop();
28751        button.removeAttr('disabled');
28752      },
28753      error: function error(err) {
28754        if (err.responseJSON.redirectUrl) {
28755          window.location.href = err.responseJSON.redirectUrl;
28756        }
28757
28758        displayMessage(err, button);
28759      }
28760    });
28761  });
28762}
28763
28764function removeGiftCertificatePaymentInstrument() {
28765  $('body').on('click', '.js-remove-giftcertificate-pi', function (e) {
28766    e.preventDefault();
28767    var button = $(this);
28768    button.attr('disabled', true);
28769    var container = button.parents('.giftcertificate-information');
28770    container.spinner().start();
28771    var url = button.data('action');
28772    var giftCertificateCode = button.data('giftcertificatecode');
28773    $.ajax({
28774      url: url,
28775      method: 'POST',
28776      dataType: 'json',
28777      data: '&giftCertificateCode=' + giftCertificateCode,
28778      success: function success(data) {
28779        if (data.success) {
28780          $('.js-giftcertificatepaymentinstruments').html(data.template);
28781          $('body').trigger('checkout:updateCheckoutViewPaymentInformation', {
28782            order: data.order
28783          });
28784        }
28785
28786        $.spinner().stop();
28787        displayMessage(data, button);
28788      },
28789      error: function error(err) {
28790        displayMessage(err, button);
28791      }
28792    });
28793  });
28794}
28795
28796module.exports = {
28797  displayMessage: displayMessage,
28798  giftCertificateFormSubmission: giftCertificateFormSubmission,
28799  updateGiftCertificateLineItem: updateGiftCertificateLineItem,
28800  checkBalanceFormSubmission: checkBalanceFormSubmission,
28801  applyGiftCertificateToBasket: applyGiftCertificateToBasket,
28802  removeGiftCertificatePaymentInstrument: removeGiftCertificatePaymentInstrument,
28803  init: function init() {
28804    module.exports.giftCertificateFormSubmission();
28805    module.exports.checkBalanceFormSubmission();
28806    module.exports.applyGiftCertificateToBasket();
28807    module.exports.removeGiftCertificatePaymentInstrument();
28808  }
28809};
28810
28811/***/ }),
28812
28813/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js":
28814/*!***************************************************************************************************************************!*\
28815  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js ***!
28816  \***************************************************************************************************************************/
28817/*! no static exports found */
28818/***/ (function(module, exports, __webpack_require__) {
28819
28820"use strict";
28821
28822/**
28823 * This client-side js file just acts as a wrapper for the site preference config toggles
28824 * that are outputted by Controller: Integrations-OutputIntegrationsConfig
28825 */
28826
28827function getIntegrationSettings() {
28828  if (window && window.CachedData && window.CachedData.siteIntegrations) {
28829    return window.CachedData.siteIntegrations;
28830  }
28831
28832  return {};
28833}
28834
28835module.exports = {
28836  getIntegrationSettings: getIntegrationSettings
28837};
28838
28839/***/ }),
28840
28841/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/main.js":
28842/*!*********************************************************************************************!*\
28843  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/main.js ***!
28844  \*********************************************************************************************/
28845/*! no static exports found */
28846/***/ (function(module, exports, __webpack_require__) {
28847
28848var SiteConstants = __webpack_require__(/*! constants/SiteConstants */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/scripts/constants/SiteConstants.js");
28849
28850window.jQuery = window.$ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
28851
28852window.isMobile = function () {
28853  return $(window).outerWidth() < SiteConstants.BreakpointSizes.lg;
28854};
28855
28856var processInclude = __webpack_require__(/*! base/util */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js");
28857/**
28858 * A list of base Files, leave these in order they are listed
28859 */
28860
28861
28862var baseFiles = {
28863  menu: __webpack_require__(/*! ./components/menu */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/menu.js"),
28864  cookie: __webpack_require__(/*! base/components/cookie */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/cookie.js"),
28865  consentTracking: __webpack_require__(/*! ./components/consentTracking */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/consentTracking.js"),
28866  footer: __webpack_require__(/*! ./components/footer */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/footer.js"),
28867  miniCart: __webpack_require__(/*! ./components/miniCart */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/miniCart.js"),
28868  collapsibleItem: __webpack_require__(/*! ./components/collapsibleItem */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/collapsibleItem.js"),
28869  search: __webpack_require__(/*! ./components/search */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/search.js").init,
28870  clientSideValidation: __webpack_require__(/*! ./components/clientSideValidation */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/clientSideValidation.js"),
28871  countrySelector: __webpack_require__(/*! ./components/countrySelector */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/countrySelector.js"),
28872  header: __webpack_require__(/*! ./components/header */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/header.js"),
28873  tabs: __webpack_require__(/*! ./components/tabs */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/tabs.js"),
28874  toast: __webpack_require__(/*! ./components/toast */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toast.js"),
28875  toolTip: __webpack_require__(/*! ./components/toolTip */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toolTip.js"),
28876  video: __webpack_require__(/*! ./components/video */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/video/index.js"),
28877  tile: __webpack_require__(/*! ./product/tile */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/tile.js"),
28878  base: __webpack_require__(/*! ./product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js"),
28879  quickView: __webpack_require__(/*! ./product/quickView */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/quickView.js"),
28880  productTile: __webpack_require__(/*! ./components/productTile */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/productTile.js"),
28881  giftCertificate: __webpack_require__(/*! ./giftCertificate/giftCertificate */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/giftCertificate/giftCertificate.js").init,
28882  modal: __webpack_require__(/*! ./components/modal */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/modal.js").init,
28883  slider: __webpack_require__(/*! ./components/slider */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/slider.js").init,
28884  einsteinRecs: __webpack_require__(/*! ./components/einsteinRecs */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/einsteinRecs.js").init,
28885  wishlist: __webpack_require__(/*! ./wishlist/wishlist */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/wishlist.js"),
28886  cart: __webpack_require__(/*! ./cart */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart.js"),
28887  scroll: __webpack_require__(/*! ./utilities/scroll */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/utilities/scroll.js"),
28888  headerUtils: __webpack_require__(/*! ./utilities/headerUtils */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/utilities/headerUtils.js"),
28889  pageDesigner: __webpack_require__(/*! ./pageDesigner */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/index.js"),
28890  storeLocator: __webpack_require__(/*! ./storeLocator/storeLocator */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/storeLocator/storeLocator.js")
28891};
28892$(document).ready(function () {
28893  Object.keys(baseFiles).forEach(function (key) {
28894    processInclude(baseFiles[key]);
28895  });
28896});
28897
28898__webpack_require__(/*! ./thirdParty/bootstrap */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/thirdParty/bootstrap.js");
28899
28900__webpack_require__(/*! focus-visible/dist/focus-visible.min.js */ "../rvw_autobahn_core/node_modules/focus-visible/dist/focus-visible.min.js");
28901
28902__webpack_require__(/*! base/components/spinner */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/spinner.js");
28903
28904module.exports = {
28905  baseFiles: baseFiles
28906};
28907
28908/***/ }),
28909
28910/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/button.js":
28911/*!************************************************************************************************************!*\
28912  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/button.js ***!
28913  \************************************************************************************************************/
28914/*! no static exports found */
28915/***/ (function(module, exports, __webpack_require__) {
28916
28917"use strict";
28918
28919
28920module.exports = function () {
28921  // Move modal from button to body to prevent overflow issues, eliminating any duplicates
28922  if ($('.button.has-modal').length > 0) {
28923    $('.button.has-modal').each(function (index, button) {
28924      var $modal = $(button).find('.modal');
28925
28926      if (!$('body > #' + $modal.attr('id')).length > 0) {
28927        $(button).find('.modal').appendTo('body');
28928      } else {
28929        $modal.remove();
28930      }
28931    });
28932  }
28933};
28934
28935/***/ }),
28936
28937/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/hero.js":
28938/*!**********************************************************************************************************!*\
28939  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/hero.js ***!
28940  \**********************************************************************************************************/
28941/*! no static exports found */
28942/***/ (function(module, exports, __webpack_require__) {
28943
28944"use strict";
28945
28946
28947module.exports = function () {
28948  // add class to sliders containing animated hero banners
28949  if ($('.slider').find('.hero-text[data-animation]')) {
28950    var heroAnimationSliders = $('.slider').find('.hero-text[data-animation]').closest('.slider-container');
28951
28952    for (var i = 0; i < heroAnimationSliders.length; i++) {
28953      heroAnimationSliders[i].classList.add('hero-has-animation');
28954    }
28955  } // if hero background video is set to play once, hide when finished and show replay button
28956
28957
28958  $('body').on('video:ended', function (event, player) {
28959    var $playerContainer = player.domElements.$cntr;
28960
28961    if ($playerContainer.hasClass('hero-media') && $playerContainer.data('play-once') === true) {
28962      var $replayButton = $playerContainer.next('.replay-video');
28963      $playerContainer.addClass('video-stopped');
28964      $replayButton.click(function (event) {
28965        $playerContainer.removeClass('video-stopped');
28966        player.config.autoplay = true;
28967
28968        if (player.type === 'youtube') {
28969          player.apiObj.seekTo(0);
28970        }
28971
28972        if (player.type === 'hosted') {
28973          player.apiObj.currentTime(0);
28974        }
28975
28976        if (player.type === 'vimeo') {
28977          player.apiObj.setCurrentTime(0);
28978        }
28979
28980        player.play();
28981      });
28982    }
28983  });
28984};
28985
28986/***/ }),
28987
28988/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/index.js":
28989/*!***********************************************************************************************************!*\
28990  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/index.js ***!
28991  \***********************************************************************************************************/
28992/*! no static exports found */
28993/***/ (function(module, exports, __webpack_require__) {
28994
28995"use strict";
28996
28997
28998var Button = __webpack_require__(/*! ./button */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/button.js");
28999
29000var Hero = __webpack_require__(/*! ./hero */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/pageDesigner/hero.js");
29001
29002function checkIfVisible($element, context) {
29003  var pageTop = $(window).scrollTop();
29004  var pageBottom = pageTop + $(window).height();
29005  var elementHeight = $element.height();
29006  var elementTop = $element.offset().top;
29007  var elementBottom = elementTop + elementHeight; // on ititial load if animated element is already in or above viewable area, animate immediately
29008
29009  if (context === 'initialPageLoad' && elementTop <= pageBottom) {
29010    return true;
29011  }
29012
29013  if (context === 'reset') {
29014    // element is above fold
29015    return elementTop <= pageBottom;
29016  } else {
29017    // any portion of element is in viewport
29018    return elementTop <= pageBottom && elementBottom >= pageTop;
29019  }
29020}
29021
29022function animateIfVisible($elements, context) {
29023  $elements.each(function (index, element) {
29024    var $element = $(element);
29025    var animationClass = $element.data('animation');
29026    var isVisible = checkIfVisible($element, context);
29027
29028    if (isVisible) {
29029      $element.removeClass('animation-initial-state').addClass(animationClass);
29030    }
29031  });
29032}
29033
29034function resetAnimationElement($elements) {
29035  $elements.each(function (index, element) {
29036    var $element = $(element);
29037    var shouldReset = !$element.data('animation-play-once');
29038
29039    if (shouldReset) {
29040      var animationClass = $element.data('animation');
29041      var isVisible = checkIfVisible($element, 'reset');
29042
29043      if (!isVisible) {
29044        $element.removeClass(animationClass).addClass('animation-initial-state');
29045        void element.offsetWidth; // allows animation to retrigger
29046      }
29047    }
29048  });
29049}
29050
29051function initScrollEvents() {
29052  // trigger animations when animated component is scrolled to
29053  var $animationElements = $('[data-animation]');
29054
29055  if ($animationElements.length) {
29056    animateIfVisible($animationElements, 'initialPageLoad');
29057    window.addEventListener('scrollUpdate', function (event) {
29058      var direction = event.detail.direction;
29059
29060      if (direction === 'down') {
29061        animateIfVisible($animationElements, null);
29062      }
29063
29064      if (direction === 'up') {
29065        resetAnimationElement($animationElements);
29066      }
29067    });
29068  }
29069}
29070
29071;
29072module.exports = {
29073  initScrollEvents: initScrollEvents,
29074  button: Button,
29075  hero: Hero
29076};
29077
29078/***/ }),
29079
29080/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/preferences/sitePreferencesUtils.js":
29081/*!*************************************************************************************************************************!*\
29082  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/preferences/sitePreferencesUtils.js ***!
29083  \*************************************************************************************************************************/
29084/*! no static exports found */
29085/***/ (function(module, exports, __webpack_require__) {
29086
29087"use strict";
29088
29089/**
29090 * This client-side js file just acts as a wrapper for the site preferences
29091 * that are outputted by AB Controller: Data-CachedData
29092 */
29093
29094function getSitePreferences() {
29095  if (window && window.CachedData && window.CachedData.sitePreferences) {
29096    return window.CachedData.sitePreferences;
29097  }
29098
29099  return {};
29100}
29101
29102module.exports = {
29103  getSitePreferences: getSitePreferences
29104};
29105
29106/***/ }),
29107
29108/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js":
29109/*!*****************************************************************************************************!*\
29110  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js ***!
29111  \*****************************************************************************************************/
29112/*! no static exports found */
29113/***/ (function(module, exports, __webpack_require__) {
29114
29115"use strict";
29116
29117
29118var focusHelper = __webpack_require__(/*! base/components/focus */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js");
29119
29120var abSlider = __webpack_require__(/*! core/components/slider */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/slider.js");
29121
29122var siteIntegrations = __webpack_require__(/*! ../integrations/siteIntegrationsUtils */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js");
29123
29124var toggleObject = siteIntegrations.getIntegrationSettings();
29125
29126var wishlistHelpers = __webpack_require__(/*! ../wishlist/components/helpers */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
29127/**
29128 * Retrieves the relevant pid value
29129 * @param {jquery} $el - DOM container for a given add to cart button
29130 * @return {string} - value to be used when adding product to cart
29131 */
29132
29133
29134function getPidValue($el) {
29135  var pid;
29136
29137  if ($('#quickViewModal').hasClass('show') && !$('.product-set').length) {
29138    pid = $($el).closest('.modal-content').find('.product-quickview').data('pid');
29139  } else if ($('.product-set-detail').length || $('.product-set').length) {
29140    pid = $($el).closest('.product-detail').find('.product-id').text();
29141  } else if ($el.hasClass('single-variant-quick-add-to-cart')) {
29142    pid = $($el).data('pid');
29143  } else if ($el.parents('.popover').length) {
29144    pid = $($el).closest('.product-detail.product-quick-add-to-cart').data('pid');
29145  } else {
29146    pid = $('.product-detail:not(".bundle-item")').data('pid');
29147  }
29148
29149  return pid;
29150}
29151/**
29152 * Retrieve contextual quantity selector
29153 * @param {jquery} $el - DOM container for the relevant quantity
29154 * @return {jquery} - quantity selector DOM container
29155 */
29156
29157
29158function getQuantitySelector($el) {
29159  var quantitySelected;
29160
29161  if ($el && $('.set-items').length) {
29162    quantitySelected = $($el).closest('.product-detail').find('.quantity-select');
29163  } else if ($el && $('.product-bundle').length) {
29164    var quantitySelectedModal = $($el).closest('.modal-footer').find('.quantity-select');
29165    var quantitySelectedPDP = $($el).closest('.bundle-footer').find('.quantity-select');
29166
29167    if (quantitySelectedModal.val() === undefined) {
29168      quantitySelected = quantitySelectedPDP;
29169    } else {
29170      quantitySelected = quantitySelectedModal;
29171    }
29172  } else {
29173    quantitySelected = $('.quantity-select');
29174  }
29175
29176  return quantitySelected;
29177}
29178/**
29179 * Retrieves the value associated with the Quantity pull-down menu
29180 * @param {jquery} $el - DOM container for the relevant quantity
29181 * @return {string} - value found in the quantity input
29182 */
29183
29184
29185function getQuantitySelected($el) {
29186  return this.getQuantitySelector($el).val();
29187}
29188/**
29189 * Process the attribute values for an attribute that has image swatches
29190 *
29191 * @param {Object} attr - Attribute
29192 * @param {string} attr.id - Attribute ID
29193 * @param {Object[]} attr.values - Array of attribute value objects
29194 * @param {string} attr.values.value - Attribute coded value
29195 * @param {string} attr.values.url - URL to de/select an attribute value of the product
29196 * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be
29197 *     selected.  If there is no variant that corresponds to a specific combination of attribute
29198 *     values, an attribute may be disabled in the Product Detail Page
29199 * @param {jQuery} $productContainer - DOM container for a given product
29200 * @param {Object} msgs - object containing resource messages
29201 */
29202
29203
29204function processSwatchValues(attr, $productContainer, msgs) {
29205  if (attr.attributeId == 'color') {
29206    $productContainer.find('.color-display-value').text(attr.displayValue || '');
29207  }
29208
29209  ;
29210
29211  if (attr.attributeId == 'size') {
29212    $productContainer.find('[data-attr="size"]').find('.non-color-display-value').text(attr.displayValue || '');
29213  }
29214
29215  ;
29216  attr.values.forEach(function (attrValue) {
29217    var $attrValue = $productContainer.find('[data-attr="' + attr.id + '"] [data-attr-value="' + attrValue.value + '"]');
29218    var $swatchButton = $attrValue.parent('button');
29219
29220    if (attrValue.selected) {
29221      $attrValue.addClass('selected');
29222      $attrValue.siblings('.selected-assistive-text').text(msgs.assistiveSelectedText);
29223      $attrValue.attr('selected', 'selected');
29224    } else {
29225      $attrValue.removeClass('selected');
29226      $attrValue.siblings('.selected-assistive-text').empty();
29227      $attrValue.removeAttr('selected');
29228    }
29229
29230    if (attrValue.url) {
29231      $swatchButton.attr('data-url', attrValue.url);
29232    } else {
29233      $swatchButton.removeAttr('data-url');
29234    } // Disable if not selectable
29235
29236
29237    $attrValue.removeClass('selectable unselectable available unavailable out-of-stock');
29238    $attrValue.addClass(attrValue.selectable ? 'selectable' : 'unselectable');
29239    $attrValue.addClass(attrValue.available ? 'available' : toggleObject.viewOutOfStockItems ? 'out-of-stock' : 'unavailable');
29240    $attrValue.attr('value', attrValue.url).removeAttr('disabled');
29241
29242    if (!attrValue.selectable) {
29243      $attrValue.attr('disabled', true);
29244    }
29245  });
29246}
29247/**
29248 * Check to see if the attribute button element can be clicked
29249 *
29250 * @param {Object} $attributeButtonElement - Attribute element button
29251 */
29252
29253
29254function checkForClickableAttribute($attributeButtonElement) {
29255  return $attributeButtonElement.attr('disabled') || $attributeButtonElement.data('url') === null || $attributeButtonElement.find('.unselectable').length || $attributeButtonElement.find('.selected').length;
29256}
29257/**
29258 * Process attribute values associated with an attribute that does not have image swatches
29259 *
29260 * @param {Object} attr - Attribute
29261 * @param {string} attr.id - Attribute ID
29262 * @param {Object[]} attr.values - Array of attribute value objects
29263 * @param {string} attr.values.value - Attribute coded value
29264 * @param {string} attr.values.url - URL to de/select an attribute value of the product
29265 * @param {boolean} attr.values.isSelectable - Flag as to whether an attribute value can be
29266 *     selected.  If there is no variant that corresponds to a specific combination of attribute
29267 *     values, an attribute may be disabled in the Product Detail Page
29268 * @param {jQuery} $productContainer - DOM container for a given product
29269 */
29270
29271
29272function processNonSwatchValues(attr, $productContainer, msgs) {
29273  var viewOutOfStockItems = window.CachedData.siteIntegrations.viewOutOfStockItems;
29274  var $attr = '.custom-select[data-attr="' + attr.id + '"]';
29275  var $defaultOption = $productContainer.find($attr + '.select-' + attr.id + ' option:first-child');
29276  $defaultOption.attr('value', attr.resetUrl).attr('disabled', true);
29277  attr.values.forEach(function (attrValue) {
29278    var $attrValue = $productContainer.find($attr + ' [data-attr-value="' + attrValue.value + '"]');
29279    $attrValue.attr('value', attrValue.url).removeAttr('disabled');
29280    var currentSelectedOption = $productContainer.find($attr + '.select-' + attr.id + ' option:selected').eq(0);
29281
29282    if (!viewOutOfStockItems && (!attrValue.selectable || !attrValue.available)) {
29283      if (!attrValue.selectable) {
29284        $attrValue.attr('disabled', true);
29285      } //check if selected value is now unavailable, if so select the default option
29286
29287
29288      if (currentSelectedOption.data('attr-value') == attrValue.value) {
29289        $attrValue.removeAttr('selected');
29290        $($attr).prop('selectedIndex', 0);
29291      } // append a msg to option to tell user its not available with selected options
29292
29293
29294      $attrValue.html(attrValue.displayValue + msgs.unavailableMsg);
29295    } else {
29296      $attrValue.html(attrValue.displayValue);
29297
29298      if (currentSelectedOption.text() == attrValue.displayValue) {
29299        $(currentSelectedOption).attr('selected', 'selected');
29300        $productContainer.find($attr).prop('selectedIndex', $(currentSelectedOption).index());
29301      }
29302    }
29303  });
29304}
29305/**
29306 * Routes the handling of attribute processing depending on whether the attribute has image
29307 *     swatches or not
29308 *
29309 * @param {Object} attrs - Attribute
29310 * @param {string} attr.id - Attribute ID
29311 * @param {jQuery} $productContainer - DOM element for a given product
29312 * @param {Object} msgs - object containing resource messages
29313 */
29314
29315
29316function updateAttrs(attrs, $productContainer, msgs) {
29317  var methods = this; //Get the available swatchable attribute array ['color','size'] (currently defined as a site pref, and added as a data attribute to the product container element
29318
29319  var attrsWithSwatches = $productContainer.data('swatchable-attributes');
29320  attrs.forEach(function (attr) {
29321    if (attrsWithSwatches && attrsWithSwatches.indexOf(attr.attributeId) > -1) {
29322      methods.processSwatchValues(attr, $productContainer, msgs);
29323    } else {
29324      methods.processNonSwatchValues(attr, $productContainer, msgs);
29325    }
29326  });
29327}
29328/**
29329 * Updates the availability status in the Product Detail Page
29330 *
29331 * @param {Object} response - Ajax response object after an
29332 *                            attribute value has been [de]selected
29333 * @param {jQuery} $productContainer - DOM element for a given product
29334 */
29335
29336
29337function updateAvailabilityProcess(response, $productContainer) {
29338  var availabilityValue = '';
29339  var availabilityMessages = response.product.availability.messages;
29340
29341  if (!response.product.readyToOrder) {
29342    availabilityValue = '<li><div>' + response.resources.info_selectforstock + '</div></li>';
29343  } else {
29344    availabilityMessages.forEach(function (message) {
29345      availabilityValue += '<li><div>' + message + '</div></li>';
29346    });
29347  }
29348
29349  $($productContainer).trigger('product:updateAvailability', {
29350    product: response.product,
29351    $productContainer: $productContainer,
29352    message: availabilityValue,
29353    resources: response.resources
29354  });
29355}
29356/**
29357 * Generates html for product attributes section
29358 *
29359 * @param {array} attributes - list of attributes
29360 * @return {string} - Compiled HTML
29361 */
29362
29363
29364function getAttributesHtml(attributes) {
29365  if (!attributes) {
29366    return '';
29367  }
29368
29369  var html = '';
29370  attributes.forEach(function (attributeGroup) {
29371    if (attributeGroup.ID === 'mainAttributes') {
29372      attributeGroup.attributes.forEach(function (attribute) {
29373        html += '<div class="attribute-values">' + attribute.label + ': ' + attribute.value + '</div>';
29374      });
29375    }
29376  });
29377  return html;
29378}
29379/**
29380 * @typedef UpdatedOptionValue
29381 * @type Object
29382 * @property {string} id - Option value ID for look up
29383 * @property {string} url - Updated option value selection URL
29384 */
29385
29386/**
29387 * @typedef OptionSelectionResponse
29388 * @type Object
29389 * @property {string} priceHtml - Updated price HTML code
29390 * @property {Object} options - Updated Options
29391 * @property {string} options.id - Option ID
29392 * @property {UpdatedOptionValue[]} options.values - Option values
29393 */
29394
29395/**
29396 * Updates DOM using post-option selection Ajax response
29397 *
29398 * @param {OptionSelectionResponse} optionsHtml - Ajax response optionsHtml from selecting a product option
29399 * @param {jQuery} $productContainer - DOM element for current product
29400 */
29401
29402
29403function updateOptions(optionsHtml, $productContainer) {
29404  // Update options
29405  $productContainer.find('.product-options').empty().html(optionsHtml);
29406}
29407/**
29408 * Updates slider for PDP main images and thumbnails from response containing images
29409 * @param {Object[]} imgs - Array of large product images,along with related information
29410 * @param {jQuery} $productContainer - DOM element for a given product
29411 */
29412
29413
29414function createSlider(images, assets, $productContainer) {
29415  var $sliderContainers = $productContainer.find('.slider-container');
29416  var data = images !== null ? {
29417    images: images
29418  } : null;
29419  data.assets = assets || null; // Reversing order in which to update sliders so that thumbnails get initialized first
29420
29421  $($sliderContainers.get().reverse()).each(function (index, sliderContainer) {
29422    var $slider = $(sliderContainer).find('.slider'); // MARTIN MOD : carry through the no-zoom behavior from the previous variation
29423
29424    data.zoom = $slider.find('.no-zoom').length === 0;
29425    $slider.trigger('slider:update', data);
29426  });
29427}
29428/**
29429 * Parses JSON from Ajax call made whenever an attribute value is [de]selected
29430 * @param {Object} response - response from Ajax call
29431 * @param {Object} response.product - Product object
29432 * @param {string} response.product.id - Product ID
29433 * @param {Object[]} response.product.variationAttributes - Product attributes
29434 * @param {Object[]} response.product.images - Product images
29435 * @param {boolean} response.product.hasRequiredAttrsSelected - Flag as to whether all required
29436 *     attributes have been selected.  Used partially to
29437 *     determine whether the Add to Cart button can be enabled
29438 * @param {jQuery}
29438 $productContainer - DOM element for a given product.
29439 */
29440
29441
29442function handleVariantResponse(response, $productContainer) {
29443  var isChoiceOfBonusProducts = $productContainer.parents('.choose-bonus-product-dialog').length > 0;
29444  var isVariant;
29445  var isSetItem = $productContainer.hasClass('product-set-item-detail') ? true : false;
29446
29447  if (response.product.variationAttributes) {
29448    this.updateAttrs(response.product.variationAttributes, $productContainer, response.resources);
29449    isVariant = response.product.productType === 'variant';
29450
29451    if (isChoiceOfBonusProducts && isVariant) {
29452      $productContainer.parent('.bonus-product-item').data('pid', response.product.id);
29453      $productContainer.parent('.bonus-product-item').data('ready-to-order', response.product.readyToOrder);
29454    }
29455  } // Update primary images
29456
29457
29458  var primaryImages = response.product.images;
29459  var pdpGalleryAssets = response.product.pdpGalleryAssets;
29460  var $oldWishlistIcon = $productContainer.find('div.slide .wishlist-toggle-product').first().clone(true);
29461  this.createSlider(primaryImages, pdpGalleryAssets, $productContainer); // if variant is a product set item, update the sample image
29462
29463  if (isSetItem) {
29464    $productContainer.find('.product-set-item-main-image').attr('src', primaryImages.large[0].url).attr('alt', primaryImages.large[0].alt);
29465  } // Update pricing
29466
29467
29468  if (!isChoiceOfBonusProducts) {
29469    var $priceSelector = $('.prices .price', $productContainer).length ? $('.prices .price', $productContainer) : $('.prices .price');
29470    $priceSelector.replaceWith(response.product.price.html);
29471  } // Update promotions
29472
29473
29474  $productContainer.find('.promotions').empty().html(response.product.promotionsHtml);
29475  this.updateAvailabilityProcess(response, $productContainer);
29476
29477  if (isChoiceOfBonusProducts) {
29478    var $selectButton = $productContainer.find('.select-bonus-product');
29479    $selectButton.trigger('bonusproduct:updateSelectButton', {
29480      product: response.product,
29481      $productContainer: $productContainer
29482    });
29483  } else {
29484    // Enable "Add to Cart" button if all required attributes have been selected
29485    $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {
29486      product: response.product,
29487      $productContainer: $productContainer
29488    }).trigger('product:statusUpdate', response.product);
29489  } // Update attributes
29490
29491
29492  $productContainer.find('.main-attributes').empty().html(this.getAttributesHtml(response.product.attributes)); // Update wishlist
29493
29494  if ($oldWishlistIcon && $oldWishlistIcon.length) {
29495    var $newWishlistIcon = $oldWishlistIcon;
29496    $newWishlistIcon.attr('data-wishlistpid', response.product.wishlistpid); //Make heart icon accurate
29497
29498    var wishlist = __webpack_require__(/*! ../wishlist/components/helpers.js */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
29499
29500    wishlist.updateLinkData($newWishlistIcon);
29501    var $newSliderMainImages = $productContainer.find('div.primary-images-main div.slide img');
29502    $newSliderMainImages.each(function (_i, newImage) {
29503      var $newImage = $(newImage);
29504      $newImage.after($newWishlistIcon.clone(true));
29505    });
29506  }
29507}
29508/**
29509 * @typespec UpdatedQuantity
29510 * @type Object
29511 * @property {boolean} selected - Whether the quantity has been selected
29512 * @property {string} value - The number of products to purchase
29513 * @property {string} url - Compiled URL that specifies variation attributes, product ID, options,
29514 *     etc.
29515 */
29516
29517/**
29518 * Updates the quantity DOM elements post Ajax call
29519 * @param {UpdatedQuantity[]} quantities -
29520 * @param {jQuery} $productContainer - DOM container for a given product
29521 */
29522
29523
29524function updateQuantities(quantities, $productContainer) {
29525  if ($productContainer.parent('.bonus-product-item').length <= 0) {
29526    var optionsHtml = quantities.map(function (quantity) {
29527      var selected = quantity.selected ? ' selected ' : '';
29528      return '<option value="' + quantity.value + '"  data-url="' + quantity.url + '"' + selected + '>' + quantity.value + '</option>';
29529    }).join('');
29530    this.getQuantitySelector($productContainer).empty().html(optionsHtml);
29531  }
29532}
29533/**
29534 * updates the product view when a product attribute is selected or deselected or when
29535 *         changing quantity
29536 * @param {string} selectedValueUrl - the Url for the selected variation value
29537 * @param {string} selectedValueHtmlUrl - the url to fetch variation html
29538 * @param {jQuery} $productContainer - DOM element for current product
29539 */
29540
29541
29542function attributeSelect(selectedValueUrl, selectedValueHtmlUrl, $productContainer) {
29543  var methods = this;
29544
29545  if (selectedValueUrl) {
29546    $('body').trigger('product:beforeAttributeSelect', {
29547      url: selectedValueUrl,
29548      container: $productContainer
29549    });
29550    $.ajax({
29551      url: selectedValueUrl,
29552      method: 'GET'
29553    }).then(function (data) {
29554      methods.handleVariantResponse(data, $productContainer);
29555      methods.updateOptions(data.product.optionsHtml, $productContainer);
29556      methods.updateQuantities(data.product.quantities, $productContainer);
29557      $('body').trigger('product:afterAttributeSelect', {
29558        data: data,
29559        container: $productContainer
29560      });
29561    }).then(function () {
29562      /**
29563       * Fetch html updates for variation -- SFCC struggles to parse waincludes
29564       * in json responses so this is a necessary evil.
29565       */
29566      if (selectedValueHtmlUrl && typeof selectedValueHtmlUrl !== 'undefined') {
29567        return $.ajax({
29568          url: selectedValueHtmlUrl,
29569          method: 'GET',
29570          dataType: 'html'
29571        }).then(function (html) {
29572          var $html = $(html);
29573          var $collapseHtml = $html.find('.main-content-item');
29574          var $tabHtml = $html.find('.tabs');
29575
29576          if ($collapseHtml.length) {
29577            $productContainer.find('.main-content-item').replaceWith($collapseHtml);
29578          } else {
29579            $productContainer.find('.main-content-item').hide();
29580          }
29581
29582          if ($tabHtml.length) {
29583            $productContainer.find('.tabs').replaceWith($tabHtml);
29584          } else {
29585            $productContainer.find('.tabs').hide();
29586          }
29587        });
29588      }
29589    }).then(function () {
29590      return $.spinner().stop();
29591    })["catch"](function () {
29592      return $.spinner().stop();
29593    });
29594  }
29595}
29596/**
29597 * Retrieves url to use when adding a product to the cart
29598 *
29599 * @return {string} - The provided URL to use when adding a product to the cart
29600 */
29601
29602
29603function getAddToCartUrl($productContainer) {
29604  return $productContainer.find('.add-to-cart-url').val();
29605}
29606/**
29607 * Parses the html for a modal window
29608 * @param {string} html - representing the body and footer of the modal window
29609 *
29610 * @return {Object} - Object with properties body and footer.
29611 */
29612
29613
29614function parseHtml(html) {
29615  var $html = $('<div>').append($.parseHTML(html));
29616  var body = $html.find('.choice-of-bonus-product');
29617  var footer = $html.find('.modal-footer').children();
29618  return {
29619    body: body,
29620    footer: footer
29621  };
29622}
29623/**
29624 * Retrieves url to use when adding a product to the cart
29625 *
29626 * @param {Object} data - data object used to fill in dynamic portions of the html
29627 */
29628
29629
29630function chooseBonusProducts(data) {
29631  var methods = this;
29632  $('.modal-body').spinner().start();
29633
29634  if ($('#chooseBonusProductModal').length !== 0) {
29635    $('#chooseBonusProductModal').remove();
29636  }
29637
29638  var bonusUrl;
29639
29640  if (data.bonusChoiceRuleBased) {
29641    bonusUrl = data.showProductsUrlRuleBased;
29642  } else {
29643    bonusUrl = data.showProductsUrlListBased;
29644  }
29645
29646  var htmlString = '<!-- Modal -->' + '<div class="modal fade" id="chooseBonusProductModal" tabindex="-1" role="dialog">' + '<span class="enter-message sr-only" ></span>' + '<div class="modal-dialog choose-bonus-product-dialog" ' + 'data-total-qty="' + data.maxBonusItems + '"' + 'data-UUID="' + data.uuid + '"' + 'data-pliUUID="' + data.pliUUID + '"' + 'data-addToCartUrl="' + data.addToCartUrl + '"' + 'data-pageStart="0"' + 'data-pageSize="' + data.pageSize + '"' + 'data-moreURL="' + data.showProductsUrlRuleBased + '"' + 'data-bonusChoiceRuleBased="' + data.bonusChoiceRuleBased + '">' + '<!-- Modal content-->' + '<div class="modal-content">' + '<div class="modal-header">' + '    <span class="">' + data.labels.selectprods + '</span>' + '    <button type="button" class="close pull-right" data-dismiss="modal">
29646' + '        <span aria-hidden="true">&times;</span>' + '        <span class="sr-only"> </span>' + '    </button>' + '</div>' + '<div class="modal-body"></div>' + '<div class="modal-footer"></div>' + '</div>' + '</div>' + '</div>';
29647  $('body').append(htmlString);
29648  $('.modal-body').spinner().start();
29649  $.ajax({
29650    url: bonusUrl,
29651    method: 'GET',
29652    dataType: 'json',
29653    success: function success(response) {
29654      var parsedHtml = methods.parseHtml(response.renderedTemplate);
29655      $('#chooseBonusProductModal .modal-body').empty();
29656      $('#chooseBonusProductModal .enter-message').text(response.enterDialogMessage);
29657      $('#chooseBonusProductModal .modal-header .close .sr-only').text(response.closeButtonText);
29658      $('#chooseBonusProductModal .modal-body').html(parsedHtml.body);
29659      $('#chooseBonusProductModal .modal-footer').html(parsedHtml.footer);
29660      $('#chooseBonusProductModal').modal('show');
29661      $.spinner().stop();
29662    },
29663    error: function error() {
29664      $.spinner().stop();
29665    }
29666  });
29667}
29668/**
29669 * Updates the Mini-Cart quantity value after the customer has pressed the "Add to Cart" button
29670 * @param {string} response - ajax response from clicking the add to cart button
29671 */
29672
29673
29674function handlePostCartAdd(response) {
29675  // conditional added for response, sometimes it was failing when called on page load
29676  if (response) {
29677    $('.minicart').trigger('count:update', response);
29678    var messageType = response.error ? 'alert-danger' : 'alert-success'; // show add to cart toast
29679
29680    if (response.newBonusDiscountLineItem && Object.keys(response.newBonusDiscountLineItem).length !== 0) {
29681      this.chooseBonusProducts(response.newBonusDiscountLineItem);
29682    } else {
29683      if ($('.add-to-cart-messages').length === 0) {
29684        $('body').append('<div class="add-to-cart-messages"></div>');
29685      }
29686
29687      $('.add-to-cart-messages').append('<div class="alert ' + messageType + ' add-to-basket-alert text-center" role="alert">' + response.message + '</div>');
29688      setTimeout(function () {
29689        $('.add-to-basket-alert').remove();
29690      }, 5000);
29691    }
29692  }
29693}
29694/**
29695 * Retrieves the bundle product item ID's for the Controller to replace bundle master product
29696 * items with their selected variants
29697 *
29698 * @return {string[]} - List of selected bundle product item ID's
29699 */
29700
29701
29702function getChildProducts() {
29703  var childProducts = [];
29704  $('.bundle-item').each(function () {
29705    childProducts.push({
29706      pid: $(this).find('.product-id').text(),
29707      quantity: parseInt($(this).find('label.quantity').data('quantity'), 10)
29708    });
29709  });
29710  return childProducts.length ? JSON.stringify(childProducts) : [];
29711}
29712/**
29713 * Retrieve product options
29714 *
29715 * @param {jQuery} $productContainer - DOM element for current product
29716 * @return {string} - Product options and their selected values
29717 */
29718
29719
29720function getOptions($productContainer) {
29721  var options = $productContainer.find('.product-option').map(function () {
29722    var $elOption = $(this).find('.options-select');
29723    var urlValue = $elOption.val();
29724    var selectedValueId = $elOption.find('option[value="' + urlValue + '"]').data('value-id');
29725    return {
29726      optionId: $(this).data('option-id'),
29727      selectedValueId: selectedValueId
29728    };
29729  }).toArray();
29730  return JSON.stringify(options);
29731}
29732/**
29733 * Makes a call to the server to report the event of adding an item to the cart
29734 *
29735 * @param {string | boolean} url - a string representing the end point to hit so that the event can be recorded, or false
29736 */
29737
29738
29739function miniCartReportingUrl(url) {
29740  if (url) {
29741    $.ajax({
29742      url: url,
29743      method: 'GET',
29744      success: function success() {// reporting urls hit on the server
29745      },
29746      error: function error() {// no reporting urls hit on the server
29747      }
29748    });
29749  }
29750}
29751
29752function enableQuantitySteppers() {
29753  var $context = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : $('body');
29754  var scope = this;
29755  var $steppers = $context.find('.quantity-stepper');
29756
29757  if ($steppers.length) {
29758    $steppers.each(function (index, stepper) {
29759      var $stepper = $(stepper);
29760      scope.methods.updateQuantityStepperDisabledStates($stepper);
29761      scope.methods.bindQuantityStepperButtons($stepper);
29762      scope.methods.bindQuantityStepperInput($stepper);
29763    });
29764  }
29765}
29766
29767function updateQuantityStepperDisabledStates($stepper) {
29768  var min = parseInt($stepper.attr('data-min'));
29769  var max = parseInt($stepper.attr('data-max'));
29770  var $input = $stepper.find('input');
29771  var $minusButton = $stepper.find('[data-action="decrease"]');
29772  var $plusButton = $stepper.find('[data-action="increase"]');
29773  var value = !isNaN(parseInt($input.prop('data-qty'))) ? parseInt($input.prop('data-qty')) : parseInt($input.attr('data-qty'));
29774
29775  if (value <= min) {
29776    $minusButton.addClass('disabled');
29777  } else {
29778    $minusButton.removeClass('disabled');
29779  }
29780
29781  if (value >= max) {
29782    $plusButton.addClass('disabled');
29783  } else {
29784    $plusButton.removeClass('disabled');
29785  }
29786}
29787
29788function bindQuantityStepperButtons($stepper) {
29789  var methods = this;
29790  var $select = $stepper.prev('select');
29791  var min = parseInt($stepper.data('min'));
29792  var max = parseInt($stepper.data('max'));
29793  $stepper.find('button').off('click').click(function (event) {
29794    event.preventDefault();
29795    var $button = $(event.target);
29796    var action = $button.data('action');
29797    var previousValue = parseInt($stepper.find('input').val());
29798    var newValue = previousValue;
29799
29800    if (action === 'increase' && previousValue + 1 <= max) {
29801      newValue++;
29802    }
29803
29804    if (action === 'decrease' && previousValue - 1 >= min) {
29805      newValue--;
29806    }
29807
29808    if (newValue !== previousValue) {
29809      $select.find('option[value="' + newValue + '"]').prop('selected', true).change();
29810      $stepper.find('input').prop('value', newValue).prop('data-qty', newValue);
29811      methods.updateQuantityStepperDisabledStates($stepper);
29812      $('body').trigger('quantityStepper:change', $stepper);
29813    }
29814  });
29815}
29816
29817function bindQuantityStepperInput($stepper) {
29818  var methods = this;
29819  var $select = $stepper.prev('select');
29820  var min = parseInt($stepper.data('min'));
29821  var max = parseInt($stepper.data('max'));
29822  $stepper.find('input').off('change').change(function (event) {
29823    var $input = $(event.target);
29824    var previousValue = !isNaN(parseInt($input.prop('data-qty'))) ? parseInt($input.prop('data-qty')) : parseInt($input.attr('data-qty'));
29825    var newValue = parseInt($input.val());
29826
29827    if (!isNaN(newValue) && newValue <= max && newValue >= min) {
29828      $select.find('option[value="' + newValue + '"]').prop('selected', true).change();
29829      $input.prop('value', newValue).prop('data-qty', newValue);
29830      methods.updateQuantityStepperDisabledStates($stepper);
29831      $('body').trigger('quantityStepper:change', $stepper);
29832    } else {
29833      $input.prop('value', previousValue);
29834    }
29835  });
29836}
29837/**
29838 * Preselect Single Swatches if only one variant available and it is a swatch
29839   *
29840   * @param {object} $productContainer - DOM element holding attributes
29841   * @return {array} - The swatch elements that need to be selected - in this case it's just one
29842*/
29843
29844
29845function preselectSingleSwatchesInContainer() {
29846  var containerSelector = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'body';
29847  var swatches = [];
29848
29849  if ($(containerSelector) && $(containerSelector).length > 0) {
29850    var attributes = $(containerSelector).find('.attribute');
29851    $.each(attributes, function () {
29852      var disSwatch = $(this).find('.swatch');
29853
29854      if (disSwatch.length == 1) {
29855        var firstswatch = $(disSwatch[0]); // If the single swatch is already preselected do not add it to the list to be selected (i.e. going straight to a variation's pdp)
29856
29857        if (!firstswatch.find('span.selectable').hasClass('selected')) {
29858          swatches.push(firstswatch);
29859        } //If we want to hide the attribute selection completely when there is only one choice
29860        //disSwatch.parents('.attribute').addClass('visually-hidden');
29861
29862      }
29863    });
29864    this.methods.selectSwatch(swatches);
29865  }
29866}
29867/**
29868 * Select Swatches takes an array of swatch dom elements that need to be preselected
29869   *
29870   * @param {array} The swatch elements that need to be selected
29871*/
29872
29873
29874function selectSwatch(swatches) {
29875  var methods = this;
29876
29877  if (swatches.length > 0) {
29878    // This splice removes the first swatch element from the array, and stores it in the "swatch" variable
29879    var swatch = swatches.splice(0, 1)[0];
29880
29881    if ($('.product-bundle').length) {
29882      var $productContainer = $('.bundle-main-product').length ? $(swatch).closest('.bundle-main-product') : $(swatch).closest('.product-bundle');
29883    } else {
29884      var $productContainer = $(swatch).closest('.set-item');
29885    }
29886
29887    if (!$productContainer.length) {
29888      $productContainer = $(swatch).closest('.product-detail');
29889    }
29890
29891    $productContainer.find('.color-display-value').text($(swatch).data('displayvalue')); // This call triggers the selection of the current swatch element, and sends the new array to be passed back to this function afterward.
29892
29893    methods.attributeSelect($(swatch).attr('data-url'), $(swatch).attr('data-html-url'), $productContainer, function () {
29894      methods.selectSwatch(swatches);
29895    });
29896  }
29897}
29898
29899function updateWishlistButtons() {
29900  var $oldWishlistIcon;
29901  $('body').on('product:beforeAttributeSelect', function (e, attrData) {
29902    $oldWishlistIcon = attrData.container.find('div.slide .wishlist-toggle-product').first().clone(true);
29903  }).on('product:afterAttributeSelect', function (e, attrData) {
29904    if ($oldWishlistIcon && $oldWishlistIcon.length) {
29905      var $newWishlistIcon = $oldWishlistIcon;
29906      var $newSliderMainImages = attrData.container.find('div.primary-images-main div.slide img');
29907      $newWishlistIcon.attr('data-wishlistpid', attrData.wishlistpid);
29908      wishlistHelpers.updateLinkData($newWishlistIcon);
29909      $newSliderMainImages.each(function (_i, newImage) {
29910        var $newImage = $(newImage);
29911        $newImage.after($newWishlistIcon.clone(true));
29912      });
29913    }
29914  });
29915}
29916
29917module.exports = {
29918  methods: {
29919    attributeSelect: attributeSelect,
29920    bindQuantityStepperButtons: bindQuantityStepperButtons,
29921    bindQuantityStepperInput: bindQuantityStepperInput,
29922    checkForClickableAttribute: checkForClickableAttribute,
29923    chooseBonusProducts: chooseBonusProducts,
29924    createSlider: createSlider,
29925    getAddToCartUrl: getAddToCartUrl,
29926    getAttributesHtml: getAttributesHtml,
29927    getChildProducts: getChildProducts,
29928    getOptions: getOptions,
29929    getPidValue: getPidValue,
29930    getQuantitySelected: getQuantitySelected,
29931    getQuantitySelector: getQuantitySelector,
29932    handlePostCartAdd: handlePostCartAdd,
29933    handleVariantResponse: handleVariantResponse,
29934    miniCartReportingUrl: miniCartReportingUrl,
29935    parseHtml: parseHtml,
29936    processNonSwatchValues: processNonSwatchValues,
29937    processSwatchValues: processSwatchValues,
29938    selectSwatch: selectSwatch,
29939    updateAttrs: updateAttrs,
29940    updateAvailabilityProcess: updateAvailabilityProcess,
29941    updateOptions: updateOptions,
29942    updateQuantities: updateQuantities,
29943    updateQuantityStepperDisabledStates: updateQuantityStepperDisabledStates,
29944    updateWishlistButtons: updateWishlistButtons
29945  },
29946
29947  /**********
29948   * shared across QV and PDP
29949   */
29950  addToCart: function addToCart() {
29951    var scope = this; // if qty stepper input has focus, we need to blur it so product data can update before button click
29952
29953    $(document).on('mouseenter', 'button.add-to-cart, button.add-to-cart-global', function (event) {
29954      var $button = $(event.target);
29955      var $container = $button.closest('.product-detail');
29956
29957      if (!$container.length) {
29958        $container = $button.closest('.quick-view-dialog');
29959      }
29960
29961      var $qtyStepperInput = $container.find('.quantity-stepper input');
29962
29963      if ($qtyStepperInput.length && $qtyStepperInput.is(':focus')) {
29964        $qtyStepperInput.blur();
29965      }
29966    });
29967    $(document).on('click', 'button.add-to-cart, button.add-to-cart-global', function (event) {
29968      var addToCartUrl;
29969      var pid;
29970      var pidsObj;
29971      var setPids;
29972      var quantity;
29973      $('body').trigger('product:beforeAddToCart', this);
29974
29975      if ($('.set-items').length && $(this).hasClass('add-to-cart-global')) {
29976        setPids = [];
29977        var $products = $(this).closest('.product-detail').find('.product-set-item-detail');
29978
29979        if (!$products.length) {
29980          if ($(this).closest('.quick-view-dialog').length) {
29981            $products = $(this).closest('.quick-view-dialog').find('.product-set-item-detail');
29982          } else {
29983            $products = $('.product-detail'); // pagedesigner component 'Add all to cart btn' won't have .product-set-item-detail classes
29984          }
29985        }
29986
29987        $products.each(function () {
29988          if (!$(this).hasClass('product-set-detail')) {
29989            setPids.push({
29990              pid: $(this).find('.product-id').text(),
29991              qty: $(this).find('.quantity-select').val(),
29992              options: scope.methods.getOptions($(this))
29993            });
29994          }
29995        });
29996        pidsObj = JSON.stringify(setPids);
29997      }
29998
29999      pid = scope.methods.getPidValue($(this));
30000      quantity = $(this).hasClass('single-variant-quick-add-to-cart') ? 1 : scope.methods.getQuantitySelected($(this));
30001      var $productContainer = $(this).closest('.product-detail');
30002
30003      if (!$productContainer.length) {
30004        if ($(this).hasClass('single-variant-quick-add-to-cart')) {
30005          addToCartUrl = $(this).data('url');
30006        } else {
30007          $productContainer = $(this).closest('.quick-view-dialog').find('.product-detail');
30008          var $productModalbody = $(this).closest('.modal-content');
30009          addToCartUrl = scope.methods.getAddToCartUrl($productModalbody);
30010        }
30011      } else {
30012        addToCartUrl = scope.methods.getAddToCartUrl($productContainer);
30013      }
30014
30015      var form = {
30016        pid: pid,
30017        pidsObj: pidsObj,
30018        childProducts: scope.methods.getChildProducts(),
30019        quantity: quantity,
30020        options: scope.methods.getOptions($productContainer)
30021      };
30022      $(this).trigger('updateAddToCartFormData', form);
30023
30024      if (addToCartUrl) {
30025        $.ajax({
30026          url: addToCartUrl,
30027          method: 'POST',
30028          data: form,
30029          success: function success(data) {
30030            scope.methods.handlePostCartAdd(data);
30031            $('body').trigger('product:afterAddToCart', data);
30032            $('body').trigger('product:afterAddToCartQuickview', data); //cart page quickview only
30033
30034            $.spinner().stop();
30035            scope.methods.miniCartReportingUrl(data.reportingURL);
30036          },
30037          error: function error() {
30038            $.spinner().stop();
30039          }
30040        });
30041      }
30042    });
30043  },
30044  quickAddToCart: function quickAddToCart() {
30045    $('body').on('product:singleSelectQuickAddToCart', function (e, response) {
30046      var addToCartUrl = getAddToCartUrl(response.container);
30047      var form = {
30048        pid: response.data.product.id,
30049        quantity: 1
30050      };
30051      $(response.container).trigger('updateAddToCartFormData', form);
30052
30053      if (addToCartUrl) {
30054        $.ajax({
30055          url: addToCartUrl,
30056          method: 'POST',
30057          data: form,
30058          success: function success(data) {
30059            handlePostCartAdd(data);
30060            $('body').trigger('product:afterAddToCart', data);
30061            $.spinner().stop();
30062            miniCartReportingUrl(data.reportingURL);
30063          },
30064          error: function error() {
30065            $.spinner().stop();
30066          }
30067        });
30068      }
30069    });
30070  },
30071  updateAvailability: function updateAvailability() {
30072    $('body').on('product:updateAvailability', function (e, response) {
30073      var $productContainer = response.$productContainer; // bundle individual products
30074
30075      $productContainer.find('.product-availability').data('ready-to-order', response.product.readyToOrder).data('available', response.product.available).find('.availability-msg').empty().html(response.message); //Quickview
30076
30077      var $dialog = $productContainer.closest('.quick-view-dialog');
30078
30079      if ($dialog.length) {
30080        if ($dialog.find('.product-availability').length) {
30081          // bundle all products
30082          var allAvailable = $dialog.find('.product-availability').toArray().every(function (item) {
30083            return $(item).data('available');
30084          });
30085          var allReady = $dialog.find('.product-availability').toArray().every(function (item) {
30086            return $(item).data('ready-to-order');
30087          });
30088          $dialog.find('.global-availability').data('ready-to-order', allReady).data('available', allAvailable);
30089          $dialog.find('.global-availability .availability-msg').empty().html(allReady ? response.message : response.resources.info_selectforstock);
30090        } else {
30091          // single product
30092          $dialog.find('.global-availability').data('ready-to-order', response.product.readyToOrder).data('available', response.product.available).find('.availability-msg').empty().html(response.message);
30093        } //main PDP
30094
30095      } else {
30096        if ($productContainer.find('.global-availability').length) {
30097          var allAvailable = $productContainer.find('.product-availability').toArray().every(function (item) {
30098            return $(item).data('available');
30099          });
30100          var allReady = $productContainer.find('.product-availability').toArray().every(function (item) {
30101            return $(item).data('ready-to-order');
30102          });
30103          $productContainer.find('.global-availability').data('ready-to-order', allReady).data('available', allAvailable);
30104          $productContainer.find('.global-availability .availability-msg').empty().html(allReady ? response.message : response.resources.info_selectforstock);
30105        }
30106      }
30107    });
30108  },
30109  availability: function availability() {
30110    var scope = this;
30111    $(document).on('change', '.quantity-select', function (e) {
30112      e.preventDefault();
30113      var $productContainer = $(this).closest('.product-detail');
30114
30115      if (!$productContainer.length) {
30116        $productContainer = $(this).closest('.modal-content').find('.product-quickview');
30117      }
30118
30119      if ($('.bundle-items', $productContainer).length === 0) {
30120        scope.methods.attributeSelect($(e.currentTarget).find('option:selected').data('url'), $(e.currentTarget).find('option:selected').data('htmlUrl'), $productContainer);
30121      }
30122    });
30123  },
30124  updateSetItemsAvailability: function updateSetItemsAvailability() {
30125    var scope = this;
30126    $(document).on('change', '.product-set-quantity-select', function (e) {
30127      e.preventDefault();
30128      var $productContainer = $(this).closest('.product-set-detail').find('.set-items');
30129
30130      if (!$productContainer.length) {
30131        $productContainer = $(this).closest('.modal-content').find('.set-items');
30132      }
30133
30134      var $quantitySelected = $(e.currentTarget).find('option:selected').val();
30135      $productContainer.find('.product-set-item-detail').each(function () {
30136        var $setItemQuantity = $(this).find('.quantity-select');
30137        var qtyStepper = $(this).find('.quantity-stepper');
30138        $setItemQuantity.val($quantitySelected).find('option').each(function () {
30139          if (this.value == $quantitySelected) {
30140            $(this).prop('selected', 'selected');
30141            $setItemQuantity.change();
30142
30143            if (qtyStepper.length) {
30144              qtyStepper.find('input').val($quantitySelected).attr('data-qty', $quantitySelected);
30145              scope.methods.updateQuantityStepperDisabledStates(qtyStepper);
30146            }
30147
30148            return false;
30149          }
30150        });
30151      });
30152    });
30153  },
30154  updateAddToCart: function updateAddToCart() {
30155    $('body').on('product:updateAddToCart', function (e, response) {
30156      var $productContainer = response.$productContainer; // update local add to cart (for sets)
30157
30158      $productContainer.find('button.add-to-cart').attr('disabled', !response.product.readyToOrder || !response.product.available); // update global add to cart (single products, bundles)
30159
30160      var $dialog = $(response.$productContainer).closest('.quick-view-dialog');
30161
30162      if ($dialog.length) {
30163        $dialog.find('.add-to-cart-global, .update-cart-product-global').attr('disabled', !$dialog.find('.global-availability').data('ready-to-order') || !$dialog.find('.global-availability').data('available'));
30164      } else {
30165        var enable = $productContainer.find('.product-availability').toArray().every(function (item) {
30166          return $(item).data('available') && $(item).data('ready-to-order');
30167        });
30168        $productContainer.find('button.add-to-cart-global').attr('disabled', !enable);
30169      }
30170    });
30171  },
30172  updateAttribute: function updateAttribute() {
30173    $('body').on('product:afterAttributeSelect', function (e, response) {
30174      response.container.find('#sizeChartModal').attr('data-product', response.data.product.id); //Quickview
30175
30176      if ($('.modal.show .product-quickview>.bundle-items').length) {
30177        $('.modal.show').find(response.container).data('pid', response.data.product.id);
30178        $('.modal.show').find(response.container).find('.product-id').text(response.data.product.id);
30179      } else if ($('.set-items').length) {
30180        response.container.find('.product-id').text(response.data.product.id);
30181      } else if ($('.modal.show .product-quickview').length) {
30182        $('.modal.show .product-quickview').data('pid', response.data.product.id);
30183        $('.modal.show .full-pdp-link').attr('href', response.data.product.selectedProductUrl);
30184        $('.modal.show').find(response.container).find('.product-id').text(response.data.product.id); //Main PDP
30185      } else if ($('.product-detail>.bundle-items').length) {
30186        response.container.data('pid', response.data.product.id);
30187        response.container.find('.product-id').text(response.data.product.id);
30188      } else if ($('.product-set-detail').eq(0)) {
30189        response.container.data('pid', response.data.product.id);
30190        response.container.find('.product-id').text(response.data.product.id);
30191        response.container.find('.add-to-cart').data('pid', response.data.product.id);
30192      } else {
30193        $('.product-detail .add-to-cart').data('pid', response.data.product.id);
30194        $('.product-id').text(response.data.product.id);
30195        $('.product-detail:not(".bundle-item")').data('pid', response.data.product.id);
30196      }
30197    });
30198  },
30199  quickViewLoaded: function quickViewLoaded() {
30200    var scope = this;
30201    $(document).on('quickview:ready', 'body', function (event, modal) {
30202      scope.enableQuantitySteppers($(modal));
30203    });
30204  },
30205  miniCartLoaded: function miniCartLoaded() {
30206    var scope = this;
30207    $('body').on('minicart:loaded', function (event, minicart) {
30208      scope.enableQuantitySteppers($(minicart));
30209    });
30210  },
30211  preselectSingleSwatchesInContainer: preselectSingleSwatchesInContainer,
30212  //Attributes that display as non-color swatches
30213  nonColorAttribute: function nonColorAttribute() {
30214    var scope = this;
30215    $(document).on('click', 'button.swatch:not(.color-attribute)', function (e) {
30216      e.preventDefault();
30217      $('body').trigger('product:swatchClicked', [$(this), toggleObject]); // add trigger for any attribute click use (incl. nonClickable Attrs)
30218
30219      if (scope.methods.checkForClickableAttribute($(this)) && !toggleObject.viewOutOfStockItems) {
30220        return;
30221      }
30222
30223      if ($('.product-bundle').length) {
30224        var $productContainer = $('.bundle-main-product').length ? $(this).closest('.bundle-main-product') : $(this).closest('.product-bundle');
30225      } else {
30226        var $productContainer = $(this).closest('.set-item');
30227      }
30228
30229      if (!$productContainer.length) {
30230        $productContainer = $(this).closest('.product-detail');
30231      }
30232
30233      scope.methods.attributeSelect($(this).attr('data-url'), $(this).attr('data-html-url'), $productContainer);
30234      $(this).closest('.non-color-attribute-swatches').find('.non-color-display-value').text($(this).find('.swatch-value').data('display-value'));
30235    });
30236  },
30237  //Attributes that display in a select dropdown (default)
30238  selectAttribute: function selectAttribute() {
30239    var scope = this;
30240    $(document).on('change', 'select[class*="select-"], .options-select', function (e) {
30241      e.preventDefault();
30242
30243      if ($('.product-bundle').length) {
30244        var $productContainer = $('.bundle-main-product').length ? $(this).closest('.bundle-main-product') : $(this).closest('.product-bundle');
30245      } else {
30246        var $productContainer = $(this).closest('.set-item');
30247      }
30248
30249      if (!$productContainer.length) {
30250        $productContainer = $(this).closest('.product-detail');
30251      }
30252
30253      scope.methods.attributeSelect(e.currentTarget.value, $(this).find('option:selected').data('htmlUrl'), $productContainer);
30254    });
30255  },
30256  //Attributes that display as color swatches
30257  colorAttribute: function colorAttribute() {
30258    var scope = this; // CLIENT MOD: Update to include any attribute with color in the attribute name
30259
30260    $(document).on('click', '[data-attr*="color"] button', function (e) {
30261      e.preventDefault();
30262      $('body').trigger('product:swatchClicked', [$(this), toggleObject]); // add trigger for any attribute click use (incl. nonClickable Attrs)
30263
30264      if (scope.methods.checkForClickableAttribute($(this)) && !toggleObject.viewOutOfStockItems) {
30265        return;
30266      }
30267
30268      if ($('.product-bundle').length) {
30269        var $productContainer = $('.bundle-main-product').length ? $(this).closest('.bundle-main-product') : $(this).closest('.product-bundle');
30270      } else {
30271        var $productContainer = $(this).closest('.set-item');
30272      }
30273
30274      if (!$productContainer.length) {
30275        $productContainer = $(this).closest('.product-detail');
30276      }
30277
30278      scope.methods.attributeSelect($(this).attr('data-url'), $(this).attr('data-html-url'), $productContainer);
30279      $productContainer.find('.color-display-value').text($(this).find('.swatch').data('displayvalue'));
30280    });
30281  },
30282  enableQuantitySteppers: enableQuantitySteppers,
30283  sizeChart: function sizeChart() {
30284    $('body').on('click', '.size-chart .size-chart-launcher', function (event) {
30285      event.preventDefault();
30286      var url = $(event.target).attr('href');
30287      var productId = $(event.target).closest('.product-detail').find('.product-id').html();
30288      var $sizeChartModal = $('.modal[data-product=' + productId + ']');
30289      var $modalBody = $sizeChartModal.find('.modal-body');
30290      $.ajax({
30291        url: url,
30292        type: 'get',
30293        dataType: 'html',
30294        success: function success(data) {
30295          $modalBody.html(data);
30296        }
30297      }); //if the sizechart is from a quickview append after all the modal-backdrops
30298
30299      if ($(event.target).parents('.product-quickview').length) {
30300        var $sizeChartContainer = $(event.target).closest('.size-chart');
30301        $sizeChartModal.appendTo('body');
30302        $sizeChartModal.on('hide.bs.modal', function (event) {
30303          $sizeChartModal.appendTo($sizeChartContainer);
30304        });
30305      }
30306
30307      $sizeChartModal.modal('show');
30308    });
30309    $('body').on('click', '#sizeChartModal .close', function (event) {
30310      $(event.target).closest('#sizeChartModal').modal('hide');
30311    });
30312  },
30313
30314  /**********
30315   * from cart
30316   */
30317  bonusProductEdit: function bonusProductEdit() {
30318    var scope = this;
30319    $('body').on('bonusproduct:edit', function (event, data) {
30320      scope.methods.chooseBonusProducts(data);
30321    });
30322  },
30323  removeBonusProduct: function removeBonusProduct() {
30324    $(document).on('click', '.selected-pid .remove-bonus-product', function (event) {
30325      $(event.target).closest('.selected-pid').remove();
30326      var $selected = $('#chooseBonusProductModal .selected-bonus-products .selected-pid');
30327      var count = 0;
30328
30329      if ($selected.length) {
30330        $selected.each(function () {
30331          count += parseInt($(this).data('qty'), 10);
30332        });
30333      }
30334
30335      $('.pre-cart-products').html(count);
30336      $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');
30337      $('body').trigger('modal:loaded', $('#chooseBonusProductModal')); // update quickview modal scroll height
30338    });
30339  },
30340  selectBonusProduct: function selectBonusProduct() {
30341    $(document).on('click', '.select-bonus-product', function () {
30342      var $choiceOfBonusProduct = $(this).parents('.choice-of-bonus-product');
30343      var pid = $(this).data('pid');
30344      var maxPids = $('.choose-bonus-product-dialog').data('total-qty');
30345      var submittedQty = parseInt($choiceOfBonusProduct.find('.bonus-quantity-select').val(), 10);
30346      var totalQty = 0;
30347      $.each($('#chooseBonusProductModal .selected-bonus-products .selected-pid'), function () {
30348        totalQty += $(this).data('qty');
30349      });
30350      totalQty += submittedQty;
30351      var optionID = $choiceOfBonusProduct.find('.product-option').data('option-id');
30352      var valueId = $choiceOfBonusProduct.find('.options-select option:selected').data('valueId');
30353
30354      if (totalQty <= maxPids) {
30355        var selectedBonusProductHtml = '' + '<div class="selected-pid" ' + 'data-pid="' + pid + '"' + 'data-qty="' + submittedQty + '"' + 'data-optionID="' + (optionID || '') + '"' + 'data-option-selected-value="' + (valueId || '') + '"' + '>' + '<div class="bonus-product-name">' + $choiceOfBonusProduct.find('.product-name').html() + '</div>' + '<div class="remove-bonus-product"></div>' + '</div>';
30356        $('#chooseBonusProductModal .selected-bonus-products .bonus-summary-products-container').append(selectedBonusProductHtml);
30357        $('.pre-cart-products').html(totalQty);
30358        $('.selected-bonus-products .bonus-summary').removeClass('alert-danger');
30359        $('body').trigger('modal:loaded', $('#chooseBonusProductModal')); // update quickview modal scroll height
30360      } else {
30361        $('.selected-bonus-products .bonus-summary').addClass('alert-danger');
30362      }
30363    });
30364  },
30365  enableBonusProductSelection: function enableBonusProductSelection() {
30366    $('body').on('bonusproduct:updateSelectButton', function (e, response) {
30367      $('button.select-bonus-product', response.$productContainer).attr('disabled', !response.product.readyToOrder || !response.product.available);
30368      var pid = response.product.id;
30369      $('button.select-bonus-product', response.$productContainer).data('pid', pid);
30370    });
30371  },
30372  focusChooseBonusProductModal: function focusChooseBonusProductModal() {
30373    var scope = this;
30374    $('body').on('shown.bs.modal', '#chooseBonusProductModal', function () {
30375      scope.enableQuantitySteppers($(this));
30376      $('body').trigger('quickview:ready', $('#chooseBonusProductModal'));
30377      $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'true');
30378      $('#chooseBonusProductModal .close').focus();
30379    });
30380  },
30381  showMoreBonusProducts: function showMoreBonusProducts() {
30382    var scope = this;
30383    $(document).on('click', '.show-more-bonus-products', function () {
30384      var url = $(this).data('url');
30385      var $modalContent = $(this).closest('.modal').find('.modal-content');
30386      $modalContent.spinner().start();
30387      $.ajax({
30388        url: url,
30389        method: 'GET',
30390        success: function success(response) {
30391          var parsedHtml = scope.methods.parseHtml(response.renderedTemplate);
30392          $modalContent.find('.modal-body').append(parsedHtml.body);
30393          $modalContent.find('.show-more-bonus-products:first').remove();
30394          abSlider.initializeSliders($(parsedHtml.body));
30395          scope.enableQuantitySteppers($(parsedHtml.body));
30396          $modalContent.spinner().stop();
30397        },
30398        error: function error() {
30399          $modalContent.spinner().stop();
30400        }
30401      });
30402    });
30403  },
30404  addBonusProductsToCart: function addBonusProductsToCart() {
30405    $(document).on('click', '.add-bonus-products', function () {
30406      var $readyToOrderBonusProducts = $('.choose-bonus-product-dialog .selected-pid');
30407      var queryString = '?pids=';
30408      var url = $('.choose-bonus-product-dialog').data('addtocarturl');
30409      var pidsObject = {
30410        bonusProducts: []
30411      };
30412      $.each($readyToOrderBonusProducts, function () {
30413        var qtyOption = parseInt($(this).data('qty'), 10);
30414        var option = null;
30415
30416        if (qtyOption > 0) {
30417          if ($(this).data('optionid') && $(this).data('option-selected-value')) {
30418            option = {};
30419            option.optionId = $(this).data('optionid');
30420            option.productId = $(this).data('pid');
30421            option.selectedValueId = $(this).data('option-selected-value');
30422          }
30423
30424          pidsObject.bonusProducts.push({
30425            pid: $(this).data('pid'),
30426            qty: qtyOption,
30427            options: [option]
30428          });
30429          pidsObject.totalQty = parseInt($('.pre-cart-products').html(), 10);
30430        }
30431      });
30432      queryString += JSON.stringify(pidsObject);
30433      queryString = queryString + '&uuid=' + $('.choose-bonus-product-dialog').data('uuid');
30434      queryString = queryString + '&pliuuid=' + $('.choose-bonus-product-dialog').data('pliuuid');
30435      $.spinner().start();
30436      $.ajax({
30437        url: url + queryString,
30438        method: 'POST',
30439        success: function success(data) {
30440          $.spinner().stop();
30441
30442          if (data.error) {
30443            $('#chooseBonusProductModal').modal('hide');
30444
30445            if ($('.add-to-cart-messages').length === 0) {
30446              $('body').append('<div class="add-to-cart-messages"></div>');
30447            }
30448
30449            $('.add-to-cart-messages').append('<div class="alert alert-danger add-to-basket-alert text-center"' + ' role="alert">' + data.errorMessage + '</div>');
30450            setTimeout(function () {
30451              $('.add-to-basket-alert').remove();
30452            }, 3000);
30453          } else {
30454            $('.configure-bonus-product-attributes').html(data);
30455            $('.bonus-products-step2').removeClass('hidden-xl-down');
30456            $('#chooseBonusProductModal').modal('hide');
30457
30458            if ($('.add-to-cart-messages').length === 0) {
30459              $('body').append('<div class="add-to-cart-messages"></div>');
30460            }
30461
30462            $('.minicart-quantity').html(data.totalQty);
30463            $('.add-to-cart-messages').append('<div class="alert alert-success add-to-basket-alert text-center"' + ' role="alert">
30463' + data.msgSuccess + '</div>');
30464            setTimeout(function () {
30465              $('.add-to-basket-alert').remove();
30466
30467              if ($('.cart-page').length) {
30468                location.reload();
30469              }
30470            }, 1500);
30471          }
30472        },
30473        error: function error() {
30474          $.spinner().stop();
30475        }
30476      });
30477    });
30478  },
30479  trapChooseBonusProductModalFocus: function trapChooseBonusProductModalFocus() {
30480    $('body').on('keydown', '#chooseBonusProductModal', function (e) {
30481      var focusParams = {
30482        event: e,
30483        containerSelector: '#chooseBonusProductModal',
30484        firstElementSelector: '.close',
30485        lastElementSelector: '.add-bonus-products'
30486      };
30487      focusHelper.setTabNextFocus(focusParams);
30488    });
30489  },
30490  onClosingChooseBonusProductModal: function onClosingChooseBonusProductModal() {
30491    $('body').on('hidden.bs.modal', '#chooseBonusProductModal', function () {
30492      $('#chooseBonusProductModal').siblings().attr('aria-hidden', 'false');
30493    });
30494  },
30495  updateHideShowOutOfStockInStockNotificationForm: function updateHideShowOutOfStockInStockNotificationForm() {
30496    if (toggleObject.viewOutOfStockItems && toggleObject.viewBackInStockNotificationForm) {
30497      $('body').on('product:afterAttributeSelect', function (e, attrData) {
30498        var $qtyCartContainer = attrData.container && attrData.container.find('.qty-cart-container');
30499
30500        if ($qtyCartContainer) {
30501          $qtyCartContainer.each(function () {
30502            var $container = $(this);
30503            var $addToCartBtn = $container.find('.addtocartbutton');
30504            var $qty = $container.find('.quantity');
30505            var $bisnForm = $container.find('.bisnform');
30506            var product = (attrData.data || {}).product || {};
30507            $bisnForm.find('.submit-success').removeClass('submit-success');
30508            $bisnForm.find(':input[name="pid"]').val(product.id || '');
30509
30510            if (!!product.showBISN) {
30511              $addToCartBtn.addClass('d-none');
30512              $qty.addClass('d-none');
30513              $bisnForm.removeClass('d-none');
30514            } else {
30515              $addToCartBtn.removeClass('d-none');
30516
30517              if (!attrData.data.product.hideQty) {
30518                $qty.removeClass('d-none');
30519              }
30520
30521              $bisnForm.addClass('d-none');
30522            }
30523          });
30524        }
30525      });
30526    }
30527  },
30528  notifyWhenBackInStock: function notifyWhenBackInStock() {
30529    $('body').on('submit', '.pdp-bisn-form', function (e) {
30530      e.preventDefault();
30531      e.stopPropagation(); //
30532      // Submit the Subscribe Form
30533      //
30534
30535      var form = this,
30536          $form = $(form);
30537      $form.data('$xhr', $.ajax({
30538        beforeSend: function beforeSend() {
30539          var $xhr = this.data('$xhr');
30540          $xhr && $xhr.abort();
30541          $form.removeClass('submit-error');
30542          return form.checkValidity();
30543        },
30544        context: $form,
30545        data: $form.serialize(),
30546        method: $form.attr('method'),
30547        error: function error() {
30548          // Validate each input
30549          this.find(':input').each(function (input) {
30550            input.checkValidity();
30551          });
30552          console.error(this, arguments);
30553          debugger;
30554        },
30555        success: function success(data) {
30556          if (data.success) {
30557            $form.addClass('submit-success');
30558            $('body').trigger('subscribe:success', data);
30559            form.reset();
30560          } else if (data.error) {
30561            $form.addClass('submit-error'); // Hide error after delay
30562
30563            setTimeout(function () {
30564              $form.removeClass('submit-error');
30565            }, 5000);
30566          }
30567        },
30568        url: $form.attr('action')
30569      }));
30570    });
30571  }
30572};
30573
30574/***/ }),
30575
30576/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/detail.js":
30577/*!*******************************************************************************************************!*\
30578  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/detail.js ***!
30579  \*******************************************************************************************************/
30580/*! no static exports found */
30581/***/ (function(module, exports, __webpack_require__) {
30582
30583"use strict";
30584
30585
30586module.exports = {
30587  updateAttributes: function updateAttributes() {
30588    $('body').on('product:statusUpdate', function (e, data) {
30589      var $productContainer = $('.product-detail[data-pid="' + data.id + '"]');
30590      $productContainer.find('.main-content-group .product-attributes').empty().html(data.attributesHtml);
30591      $('body').trigger('tooltip:init');
30592
30593      if ($('button.add-to-cart-global').length) {
30594        module.exports.updateAddAllToCart();
30595      }
30596    });
30597  },
30598  updateHeadlinesAndTabs: function updateHeadlinesAndTabs() {
30599    $('body').on('product:afterAttributeSelect', function (e, data) {
30600      if (data && data.data && data.data.product && data.container) {
30601        var $productContainer = data.container;
30602        var product = data.data.product;
30603
30604        if (product.headline) {
30605          $productContainer.find('.product-headline').show().html(product.headline);
30606        } else {
30607          $productContainer.find('.product-headline').hide();
30608        }
30609
30610        if (product.headlineDescription) {
30611          $productContainer.find('.product-headlinedescription').show().html(product.headlineDescription);
30612        } else {
30613          $productContainer.find('.product-headlinedescription').hide();
30614        }
30615      }
30616    });
30617  },
30618  updateAddAllToCart: function updateAddAllToCart() {
30619    // if default variants are selected, enable the add all to cart btn on load
30620    if ($('button.add-to-cart-global').length) {
30621      var enable = $('.product-availability').toArray().every(function (item) {
30622        return $(item).data('available') && $(item).data('ready-to-order');
30623      });
30624      $('button.add-to-cart-global').attr('disabled', !enable);
30625    }
30626  },
30627  copyProductLink: function copyProductLink() {
30628    $('body').on('click', '#fa-link', function () {
30629      event.preventDefault();
30630      var $temp = $('<input>');
30631      $('body').append($temp);
30632      $temp.val($('#shareUrl').val()).select();
30633      document.execCommand('copy');
30634      $temp.remove();
30635      $('.copy-link-message').attr('role', 'alert');
30636      $('.copy-link-message').removeClass('d-none');
30637      setTimeout(function () {
30638        $('.copy-link-message').addClass('d-none');
30639      }, 3000);
30640    });
30641  },
30642  showSpinner: function showSpinner() {
30643    $('body').on('product:beforeAddToCart, product:beforeAttributeSelect', function () {
30644      $.spinner().start();
30645    });
30646  },
30647  setCollapsibleContentState: function setCollapsibleContentState() {
30648    var $collapsibleContentGroup = $('.collapsible-content-group');
30649    $collapsibleContentGroup.each(function () {
30650      var expandCollapsibleContentGroup = $(this).data('expand');
30651
30652      if (expandCollapsibleContentGroup == true) {
30653        $(this).addClass('active');
30654      }
30655    });
30656  }
30657};
30658
30659/***/ }),
30660
30661/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/quickView.js":
30662/*!**********************************************************************************************************!*\
30663  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/quickView.js ***!
30664  \**********************************************************************************************************/
30665/*! no static exports found */
30666/***/ (function(module, exports, __webpack_require__) {
30667
30668"use strict";
30669
30670
30671var focusHelper = __webpack_require__(/*! base/components/focus */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js");
30672
30673var modal = __webpack_require__(/*! ../components/modal */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/modal.js");
30674
30675var _require = __webpack_require__(/*! ./detail */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/detail.js"),
30676    updateAddAllToCart = _require.updateAddAllToCart;
30677/**
30678 * @typedef {Object} QuickViewHtml
30679 * @property {string} body - Main Quick View body
30680 * @property {string} footer - Quick View footer content
30681 */
30682
30683/**
30684 * replaces the content in the modal window on for the selected product variation.
30685 * @param {string} selectedValueUrl - url to be used to retrieve a new product model
30686 */
30687
30688
30689function fillModalElement(selectedValueUrl) {
30690  var $modal = $('#quickViewModal');
30691  $modal.find('.modal-body').spinner().start();
30692  $.ajax({
30693    url: selectedValueUrl,
30694    method: 'GET',
30695    dataType: 'json',
30696    success: function success(data) {
30697      var parsedHtml = modal.parseHtml(data.renderedTemplate);
30698      $modal.find('.modal-body').empty();
30699      $modal.find('.modal-body').html(parsedHtml.body); // Append assets from PDP Gallery Asset IDs attribute
30700
30701      if ('pdpGalleryAssets' in data.product) {
30702        var pdpGalleryAssets = data.product.pdpGalleryAssets;
30703        var $assetSlides = $modal.find('.primary-images-main .pdp-gallery-asset');
30704        var hasVideo = false;
30705        $assetSlides.each(function (index, slide) {
30706          var $slideElement = $(slide);
30707          var asset = pdpGalleryAssets[index];
30708
30709          if (asset.isVideo) {
30710            hasVideo = true;
30711          }
30712
30713          $.ajax({
30714            url: asset.assetRenderUrl,
30715            method: 'GET',
30716            success: function success(assetData) {
30717              var $sliderContainer = $slideElement.closest('.slider-container');
30718              $slideElement.html(assetData); // after all assets are added, reinit any necessary javascript
30719
30720              if (index + 1 >= pdpGalleryAssets.length) {
30721                $('body').trigger('quickview:ready', $('#quickViewModal')); // sending custom event for slider init
30722
30723                $slideElement.trigger('tooltip:init'); // reinit tooltips in case of hotspot asset
30724
30725                if (hasVideo) {
30726                  $('body').trigger('ajax:load.ajaxEvents', [$sliderContainer]); // reinit videos in video/index.js
30727
30728                  $('body').trigger('slider:videosLoaded'); // trigger custom event set up in bindSliderUpdateEvent
30729                }
30730              }
30731            },
30732            error: function error(err) {
30733              console.error('There was an issue retrieving this asset: ', err);
30734            }
30735          });
30736        });
30737      }
30738
30739      $modal.find('.modal-footer').html(parsedHtml.footer);
30740      $modal.find('.full-pdp-link').text(data.quickViewFullDetailMsg);
30741      $modal.find('.full-pdp-link').attr('href', data.productUrl);
30742      $modal.find('.modal-header .close .sr-only').text(data.closeButtonText);
30743      $modal.find('.enter-message').text(data.enterDialogMessage);
30744      $modal.find('#quickViewModal').modal('show');
30745
30746      if (data.dialogTitle) {
30747        $modal.find('.modal-header').prepend('<div class="modal-title">' + data.dialogTitle + '</div>');
30748      }
30749
30750      if (data.product.productType === 'set') {
30751        updateAddAllToCart();
30752      }
30753
30754      $('body').trigger('modal:loaded', $('#quickViewModal')); // sending custom event for scroll body sizing
30755
30756      $('body').trigger('quickview:ready', $('#quickViewModal')); // sending custom event for slider init
30757
30758      $('body').trigger('tooltip:init');
30759      $.spinner().stop();
30760    },
30761    error: function error() {
30762      $.spinner().stop();
30763    }
30764  });
30765}
30766/**
30767 * replaces the content in the popover for the selected product.
30768 */
30769
30770
30771function fillPopoverElement(quickAddToCartUrl, popover) {
30772  var $popover = $('#' + popover);
30773  $.ajax({
30774    url: quickAddToCartUrl,
30775    method: 'GET',
30776    dataType: 'json',
30777    success: function success(data) {
30778      $popover.find('.popover-body').html(data.renderedTemplate);
30779      $popover.popover('update');
30780    }
30781  });
30782}
30783
30784module.exports = {
30785  showQuickview: function showQuickview() {
30786    $('body').on('click', '.quickview', function (e) {
30787      e.preventDefault();
30788      var selectedValueUrl = $(this).closest('a.quickview').attr('href');
30789      $(e.target).trigger('quickview:show');
30790      modal.getModalHtmlElement('quickViewModal', 'quick-view-dialog');
30791      fillModalElement(selectedValueUrl);
30792    }); // BEGIN MARTIN CUSTOMIZATION
30793
30794    $('body').on('quickview:trigger', function (e, data) {
30795      var selectedValueUrl = data.url;
30796      $(e.target).trigger('quickview:show');
30797      modal.getModalHtmlElement('quickViewModal', 'quick-view-dialog');
30798      fillModalElement(selectedValueUrl);
30799      $('#quickViewModal').modal('show');
30800    });
30801
30802    if (window.wishlistpid) {
30803      if (window.isproducttile && !window.bypassquickview) {
30804        // If this is a product tile, first show the quickview modal to allow for variant selection
30805        var wishlistGetProductUrl = window.CachedData.wishlistQuickViewUrl + '?pid=' + window.wishlistpid;
30806        $('body').trigger('quickview:trigger', {
30807          url: wishlistGetProductUrl
30808        });
30809      } else {
30810        $('#wishlistModalShowLists').data('multiSelect', false).data('pid', window.wishlistpid).modal('show');
30811      }
30812    } // END MARTIN CUSTOMIZATION
30813
30814  },
30815  showQuickAddToCart: function showQuickAddToCart() {
30816    $('body').on('click', '.quick-add-to-cart', function (e) {
30817      e.preventDefault();
30818      var quickAddToCartUrl = $(this).closest('.quick-add-to-cart').data('url');
30819      var popover = $(this).closest('.quick-add-to-cart').attr('aria-describedby');
30820      $(e.target).trigger('quickAddToCart:show');
30821      fillPopoverElement(quickAddToCartUrl, popover);
30822    });
30823  },
30824  reInitShowQuickAddToCart: function reInitShowQuickAddToCart() {
30825    $('body').on('search:sort--success search:showMore--success search:filter--success', function () {
30826      $('body').trigger('tooltip:init');
30827    });
30828  },
30829  hideQuickAddToCartSingleSelect: function hideQuickAddToCartSingleSelect() {
30830    $('body').on('product:afterAttributeSelect', function (e, response) {
30831      if ($(response.container).hasClass('product-quick-add-to-cart') && $('.product-quick-add-to-cart .single-select-quick-add-to-cart').length) {
30832        $('body').trigger('product:singleSelectQuickAddToCart', response);
30833        $('[data-toggle="popover"].interactive').popover('hide');
30834      }
30835    });
30836  },
30837  hideQuickAddToCart: function hideQuickAddToCart() {
30838    $('body').on('product:afterAddToCart', function (e) {
30839      $('[data-toggle="popover"].interactive').popover('hide');
30840    });
30841  },
30842  focusQuickview: function focusQuickview() {
30843    $('body').on('shown.bs.modal', '#quickViewModal', function () {
30844      $('#quickViewModal').siblings().attr('aria-hidden', 'false');
30845      $('#quickViewModal .close').focus();
30846    });
30847  },
30848  trapQuickviewFocus: function trapQuickviewFocus() {
30849    $('body').on('keydown', '#quickViewModal', function (e) {
30850      var focusParams = {
30851        event: e,
30852        containerSelector: '#quickViewModal',
30853        firstElementSelector: '.full-pdp-link',
30854        lastElementSelector: '.qv-product-edit-add',
30855        nextToLastElementSelector: '.modal-footer .quantity-select'
30856      };
30857      focusHelper.setTabNextFocus(focusParams);
30858    });
30859  },
30860  showSpinner: function showSpinner() {
30861    $('body').on('product:beforeAddToCart', function (e, data) {
30862      $(data).closest('.modal-content').spinner().start();
30863    });
30864  },
30865  hideDialog: function hideDialog() {
30866    $('body').on('product:afterAddToCart', function () {
30867      $('#quickViewModal').modal('hide');
30868      $('#quickViewModal').siblings().attr('aria-hidden', 'true');
30869    });
30870  },
30871  beforeUpdateAttribute: function beforeUpdateAttribute() {
30872    $('body').on('product:beforeAttributeSelect', function () {
30873      $('.modal.show .modal-content').spinner().start();
30874    });
30875  }
30876};
30877
30878/***/ }),
30879
30880/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/tile.js":
30881/*!*****************************************************************************************************!*\
30882  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/tile.js ***!
30883  \*****************************************************************************************************/
30884/*! no static exports found */
30885/***/ (function(module, exports, __webpack_require__) {
30886
30887"use strict";
30888
30889
30890function swatchSwitch(el) {
30891  var $swatch = el;
30892  var $tileParent = $swatch.parents('.product-tile');
30893  var pid = $tileParent.attr('data-pid');
30894  var $tileImage = $tileParent.find('.product-tile-image');
30895  var $tileImageHover = $tileParent.find('.product-tile-image-secondary');
30896  $tileParent.find('.swatch.selected').removeClass('selected');
30897  $swatch.addClass('selected'); //Replace main image and secondary image
30898
30899  if ($swatch.data('hover-image') && $swatch.data('hover-image') != '') {
30900    var swatchImageUrl = $swatch.data('hover-image');
30901    $tileImage.attr('src', swatchImageUrl);
30902
30903    if ($tileImageHover.length > 0 && $swatch.data('hover-image-secondary')) {
30904      var swatchSecondaryImageUrl = $swatch.data('hover-image-secondary');
30905      $tileImage.data('alt-img-url', swatchSecondaryImageUrl);
30906      $tileImageHover.attr('src', swatchSecondaryImageUrl);
30907    }
30908  } //replace main link and Quickview link
30909
30910
30911  var swatchLink = $swatch.parents('.swatch-link');
30912  var splitSwatchLink = swatchLink.attr('href').split('?');
30913  var swatchLinkAttributes = splitSwatchLink[1]; //main Image Link
30914
30915  var mainImageLink = $tileParent.find('.product-tile-image-link');
30916  var mainImageLinkSplit = mainImageLink.attr('href').split('?');
30917  mainImageLink.attr('href', mainImageLinkSplit[0] + '?' + swatchLinkAttributes); //main Quickview Link
30918
30919  var mainQuickViewLink = $tileParent.find('a.quickview');
30920
30921  if (mainQuickViewLink.length) {
30922    // strip pid from params for quickview (gets added when Storefront URLs are disabled)
30923    var quickviewSwatchUrl = new URL(swatchLink.attr('href'), window.location.origin);
30924    quickviewSwatchUrl.searchParams["delete"]('pid');
30925    var quickviewQueryString = quickviewSwatchUrl.search.split('?')[1];
30926    mainQuickViewLink.attr('href', mainQuickViewLink.attr('href').split('?')[0] + '?' + 'pid=' + pid + '&' + quickviewQueryString);
30927  }
30928}
30929
30930function hijackSwatchClick() {
30931  if (window.isMobile()) {
30932    $('body').on('click.swatch-link', '.product-tile .swatch-link', function (e) {
30933      e.preventDefault();
30934      var $swatch = $(this).find('.swatch');
30935      module.exports.methods.swatchSwitch($swatch);
30936    });
30937  } else {
30938    $('body').off('click.swatch-link');
30939  }
30940}
30941
30942module.exports = {
30943  hijackSwatchClick: hijackSwatchClick,
30944  mouseEnter: function mouseEnter() {
30945    $('body').on('mouseenter', '.product-tile .swatch', function (e) {
30946      var $swatch = $(this);
30947      module.exports.methods.swatchSwitch($swatch);
30948    });
30949  },
30950  resize: function resize() {
30951    $(window).on('resize', function () {
30952      module.exports.hijackSwatchClick();
30953    });
30954  },
30955  methods: {
30956    swatchSwitch: swatchSwitch
30957  }
30958};
30959
30960/***/ }),
30961
30962/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/storeLocator/storeLocator.js":
30963/*!******************************************************************************************************************!*\
30964  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/storeLocator/storeLocator.js ***!
30965  \******************************************************************************************************************/
30966/*! no static exports found */
30967/***/ (function(module, exports, __webpack_require__) {
30968
30969"use strict";
30970/* globals google */
30971
30972
30973var googleMapsPromise = __webpack_require__(/*! ../thirdParty/googleMaps */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/thirdParty/googleMaps.js");
30974/**
30975 * appends params to a url
30976 * @param {string} url - Original url
30977 * @param {Object} params - Parameters to append
30978 * @returns {string} result url with appended parameters
30979 */
30980
30981
30982function appendToUrl(url, params) {
30983  var newUrl = url;
30984  newUrl += (newUrl.indexOf('?') !== -1 ? '&' : '?') + Object.keys(params).map(function (key) {
30985    return key + '=' + encodeURIComponent(params[key]);
30986  }).join('&');
30987  return newUrl;
30988}
30989/**
30990 * Uses google maps api to render a map
30991 */
30992
30993
30994function maps() {
30995  var map;
30996  var infowindow = new google.maps.InfoWindow();
30997  var mapdiv = $('.map-canvas').attr('data-locations');
30998  var bounds = new google.maps.LatLngBounds();
30999  var zoom = 4;
31000  mapdiv = JSON.parse(mapdiv);
31001
31002  if (mapdiv.length === 1) {
31003    zoom = 18; // set zoom more specifically if single store
31004  } // Init U.S. Map in the center of the viewport
31005
31006
31007  var latlng = new google.maps.LatLng(37.09024, -95.712891);
31008  var mapOptions = {
31009    scrollwheel: false,
31010    zoom: zoom,
31011    center: latlng
31012  };
31013  map = new google.maps.Map($('.map-canvas')[0], mapOptions);
31014  Object.keys(mapdiv).forEach(function (key) {
31015    var item = mapdiv[key];
31016    var label = parseInt(key, 10) + 1;
31017    var storeLocation = new google.maps.LatLng(item.latitude, item.longitude);
31018    var marker = new google.maps.Marker({
31019      position: storeLocation,
31020      type: item.storeType.value,
31021      map: map,
31022      title: item.name,
31023      icon: {
31024        url: item.backgroundImage,
31025        size: new google.maps.Size(45, 45),
31026        scaledSize: new google.maps.Size(45, 45),
31027        labelOrigin: new google.maps.Point(24, 17)
31028      },
31029      label: {
31030        text: label.toString(),
31031        color: item.color,
31032        fontSize: '14px'
31033      }
31034    });
31035    marker.addListener('click', function () {
31036      infowindow.setOptions({
31037        content: item.infoWindowHtml
31038      });
31039      infowindow.open(map, marker);
31040    }); // Create a minimum bound based on a set of storeLocations
31041
31042    bounds.extend(marker.position); // If there is only one store, center the map on that store
31043
31044    if (mapdiv.length === 1) {
31045      map.setCenter(storeLocation);
31046    }
31047  }); // Fit the all the store marks in the center of a minimum bounds when any store has been found, unless there is a single store result
31048
31049  if (mapdiv && mapdiv.length > 1) {
31050    map.fitBounds(bounds);
31051  }
31052}
31053/**
31054 * Renders the results of the search and updates the map
31055 * @param {Object} data - Response from the server
31056 */
31057
31058
31059function updateStoresResults(data, scope) {
31060  var $resultsDiv = scope.find('.results');
31061  var $mapDiv = $('.map-canvas'); //Not scoped to support multiple maps on page yet
31062
31063  var hasResults = data.stores.length > 0;
31064
31065  if (!hasResults) {
31066    if ('noInventoryStores' in data) {
31067      scope.find('.store-locator-no-results-for-product').show();
31068    } else {
31069      scope.find('.store-locator-no-results').show();
31070    }
31071
31072    scope.find('.filter-results').hide();
31073    $resultsDiv.attr('data-has-results', false);
31074  } else {
31075    scope.find('.store-locator-no-results').hide();
31076    scope.find('.store-locator-no-results-for-product').hide();
31077    scope.find('.filter-results').show();
31078    $resultsDiv.attr('data-has-results', true);
31079  }
31080
31081  $resultsDiv.empty().data('has-results', hasResults).data('radius', data.radius).data('search-key', data.searchKey).data('store-type', data.storeType);
31082  $mapDiv.attr('data-locations', data.locations);
31083
31084  if ($mapDiv.data('has-google-api')) {
31085    googleMapsPromise().then(function () {
31086      return module.exports.methods.maps();
31087    });
31088  } else {
31089    $('.store-locator-no-apiKey').show();
31090  }
31091
31092  if (data.storesResultsHtml) {
31093    $resultsDiv.append(data.storesResultsHtml);
31094  }
31095
31096  if (data.noInventoryStoresHtml) {
31097    $resultsDiv.append(data.noInventoryStoresHtml);
31098  }
31099
31100  if (hasResults) {
31101    $.each(data.storeTypes, function (storeType) {
31102      var storeTypeValue = data.storeTypes[storeType].value || data.storeTypes[storeType].value;
31103
31104      if (scope.find('.results [data-store-type="' + storeTypeValue + '"]').length > 0) {
31105        scope.find('.filter-results [data-filter="' + storeTypeValue + '"]').show();
31106      }
31107    });
31108  }
31109}
31110/**
31111 * Search for stores with new zip code
31112 * @param {HTMLElement} element - the target html element
31113 * @returns {boolean} false to prevent default event
31114 */
31115
31116
31117function search(element) {
31118  var dialog = element.closest('.in-store-inventory-dialog');
31119  var spinner = dialog.length ? dialog.spinner() : $.spinner();
31120  spinner.start();
31121  var scope = element.closest('.store-locator-container');
31122  var $form = element.closest('.store-locator');
31123  var radius = scope.find('.results').data('radius');
31124  var postalCode = $form.find('[name="postalCode"]').val() ? $.trim($form.find('[name="postalCode"]').val()) : '';
31125  var url = $form.attr('action');
31126  var urlParams = {
31127    radius: radius
31128  };
31129  var isForm = $form.is('form');
31130  var payload = {
31131    postalCode: postalCode
31132  };
31133
31134  if (isForm) {
31135    payload = decodeURI($form.serialize()).replace(/\s/g, '');
31136  }
31137
31138  url = module.exports.methods.appendToUrl(url, urlParams);
31139  $.ajax({
31140    url: url,
31141    type: $form.attr('method'),
31142    data: payload,
31143    dataType: 'json',
31144    success: function success(data) {
31145      module.exports.methods.updateStoresResults(data, scope);
31146      scope.find('.select-store').prop('disabled', true);
31147    },
31148    complete: function complete() {
31149      spinner.stop();
31150    }
31151  });
31152  return false;
31153}
31154
31155module.exports = {
31156  init: function init() {
31157    if ($('.map-canvas').data('has-google-api')) {
31158      googleMapsPromise().then(function () {
31159        return module.exports.methods.maps();
31160      });
31161    } else {
31162      $('.store-locator-no-apiKey').show();
31163    }
31164  },
31165  detectLocation: function detectLocation() {
31166    // clicking on detect location.
31167    $('body').on('click', '.detect-location', function (e) {
31168      var scope = $(this).closest('.store-locator-container');
31169      $.spinner().start();
31170
31171      if (!navigator.geolocation) {
31172        $.spinner().stop();
31173        return;
31174      }
31175
31176      navigator.geolocation.getCurrentPosition(function (position) {
31177        var $detectLocationButton = scope.find('.detect-location');
31178        var url = $detectLocationButton.data('action');
31179        var radius = scope.find('.results').data('radius');
31180        var urlParams = {
31181          radius: radius,
31182          lat: position.coords.latitude,
31183          "long": position.coords.longitude
31184        };
31185        url = module.exports.methods.appendToUrl(url, urlParams);
31186        $.ajax({
31187          url: url,
31188          type: 'get',
31189          dataType: 'json',
31190          success: function success(data) {
31191            $.spinner().stop();
31192            module.exports.methods.updateStoresResults(data, scope);
31193            scope.find('.select-store').prop('disabled', true);
31194            scope.find('.detect-location-invalid').removeClass('d-block');
31195          }
31196        }).fail(function () {
31197          $.spinner().stop();
31198        });
31199      }, function () {
31200        $.spinner().stop();
31201        scope.find('.detect-location-invalid').addClass('d-block');
31202      }, {
31203        timeout: 5000
31204      });
31205    });
31206  },
31207  search: function search() {
31208    $('body').on('submit', '.store-locator-container form.store-locator', function (e) {
31209      e.preventDefault();
31210      return module.exports.methods.search($(this));
31211    });
31212    $('body').on('click', '.store-locator-container .btn-storelocator-search[type="button"]', function (e) {
31213      e.preventDefault();
31214      return module.exports.methods.search($(this));
31215    });
31216  },
31217  changeRadius: function changeRadius() {
31218    $('body').on('change', '.store-locator-container .radius', function () {
31219      var radius = $(this).val();
31220      var scope = $(this).closest('.store-locator-container');
31221      var searchKeys = scope.find('.results').data('search-key');
31222      var url = $(this).data('action-url');
31223      var urlParams = {};
31224
31225      if (searchKeys.postalCode) {
31226        urlParams = {
31227          radius: radius,
31228          postalCode: searchKeys.postalCode
31229        };
31230      } else if (searchKeys.lat && searchKeys["long"]) {
31231        urlParams = {
31232          radius: radius,
31233          lat: searchKeys.lat,
31234          "long": searchKeys["long"]
31235        };
31236      }
31237
31238      scope.find('.filter-results [data-filter]').removeClass('active btn-primary').addClass('btn-secondary').hide();
31239      scope.find('.filter-results [data-filter="all"]').addClass('active btn-primary').removeClass('btn-secondary').show();
31240      url = module.exports.methods.appendToUrl(url, urlParams);
31241      var dialog = $(this).closest('.in-store-inventory-dialog');
31242      var spinner = dialog.length ? dialog.spinner() : $.spinner();
31243      spinner.start();
31244      $.ajax({
31245        url: url,
31246        type: 'get',
31247        dataType: 'json',
31248        success: function success(data) {
31249          module.exports.methods.updateStoresResults(data, scope);
31250          scope.find('.select-store').prop('disabled', true);
31251        },
31252        complete: function complete() {
31253          spinner.stop();
31254        }
31255      });
31256    });
31257  },
31258  filterResults: function filterResults() {
31259    var $filters = $('.filter-results [data-filter]');
31260    $filters.on('click', function (e) {
31261      e.preventDefault();
31262      var scope = $(this).closest('.store-locator-container');
31263      $filters.removeClass('active btn-primary').addClass('btn-secondary');
31264      $(this).addClass('active btn-primary').removeClass('btn-secondary');
31265      var $filterType = $(this).attr('data-filter');
31266      var radius = scope.find('.results').data('radius');
31267      var searchKeys = scope.find('.results').data('search-key');
31268      var url = scope.find('.filter-results').data('action-url');
31269      var urlParams = {};
31270
31271      if (searchKeys.postalCode) {
31272        urlParams = {
31273          radius: radius,
31274          postalCode: searchKeys.postalCode,
31275          storeType: $filterType
31276        };
31277      } else if (searchKeys.lat && searchKeys["long"]) {
31278        urlParams = {
31279          radius: radius,
31280          lat: searchKeys.lat,
31281          "long": searchKeys["long"],
31282          storeType: $filterType
31283        };
31284      }
31285
31286      url = module.exports.methods.appendToUrl(url, urlParams);
31287      var dialog = scope.find('.radius').closest('.in-store-inventory-dialog');
31288      var spinner = dialog.length ? dialog.spinner() : $.spinner();
31289      spinner.start();
31290      $.ajax({
31291        url: url,
31292        type: 'get',
31293        dataType: 'json',
31294        success: function success(data) {
31295          module.exports.methods.updateStoresResults(data, scope);
31296          scope.find('.select-store').prop('disabled', true);
31297        },
31298        complete: function complete() {
31299          spinner.stop();
31300        }
31301      });
31302    });
31303  },
31304  selectStore: function selectStore() {
31305    $('body').on('click', '.store-locator-container .select-store', function (e) {
31306      e.preventDefault();
31307      var scope = $(this).closest('.store-locator-container');
31308      var selectedStore = scope.find('input.select-store-input:checked');
31309      var data = {
31310        storeID: selectedStore.val(),
31311        searchRadius: scope.find('#radius').val(),
31312        searchPostalCode: scope.find('.results').data('search-key').postalCode,
31313        storeDetailsHtml: selectedStore.siblings('label').find('.store-details').html(),
31314        storeInfoJSON: selectedStore.data('store-info') || {},
31315        event: e,
31316        scope: scope
31317      };
31318      $('body').trigger('store:selected', data);
31319    });
31320  },
31321  updateSelectStoreButton: function updateSelectStoreButton() {
31322    $('body').on('change', '.select-store-input', function () {
31323      $('.select-store').prop('disabled', false);
31324    });
31325  },
31326  clickSelectStoreInHeader: function clickSelectStoreInHeader() {
31327    $('body').on('click', '.js-store-picker-header', function (e) {
31328      var modalSelector = '#home-store-picker-container';
31329      var $target = $(e.currentTarget);
31330      var modalAppendedToBody = $('body').children(modalSelector).length > 0;
31331      var $modal = $target.find(modalSelector);
31332
31333      if (!modalAppendedToBody && $modal.length > 0) {
31334        // remove all modals from inside store selectors (mobile and desktop) and append to body
31335        $(document.querySelectorAll(modalSelector)).remove();
31336        $('body').append($modal);
31337        $modal.modal('show');
31338      } else {
31339        $modal = $('body').children(modalSelector);
31340        $modal.modal('show');
31341      }
31342    });
31343  },
31344  storeSelectedInHeader: function storeSelectedInHeader() {
31345    $('body').on('store:selected', function (e, data) {
31346      if (data.scope.parents('#home-store-picker-container').length) {
31347        var spinner = data.scope.spinner();
31348        spinner.start();
31349        $.ajax({
31350          url: module.exports.methods.appendToUrl(data.scope.data('setpreferredstoreactionurl'), {
31351            preferredStoreID: data.storeID
31352          }),
31353          type: 'get',
31354          dataType: 'json',
31355          success: function success(result) {
31356            if (result && result.success) {
31357              var $prompt = $('.js-storelocator-header-prompt');
31358              var promptText = $prompt.data('prompt-text');
31359              data.scope.find('.store-locator-failed-to-set-preferred').hide();
31360              data.scope.closest('.modal').modal('hide');
31361              $prompt.html(promptText + ': ' + data.storeInfoJSON.name);
31362              $prompt.attr('title', data.storeInfoJSON.name);
31363            } else {
31364              data.scope.find('.store-locator-failed-to-set-preferred').show();
31365            }
31366          },
31367          complete: function complete() {
31368            spinner.stop();
31369          }
31370        }).fail(function () {
31371          data.scope.find('.store-locator-failed-to-set-preferred').show();
31372        });
31373      }
31374    });
31375  },
31376  selectStoreInSearch: function selectStoreInSearch() {
31377    $('body').on('click', '.store-select-map', function (e) {
31378      e.preventDefault();
31379      var scope = $(this);
31380      var storeName = scope.data('store-name');
31381      scope.spinner().start();
31382      $.ajax({
31383        url: scope.data('action'),
31384        type: 'get',
31385        dataType: 'json',
31386        success: function success(result) {
31387          if (result && result.success) {
31388            var $prompt = $('.js-storelocator-header-prompt');
31389            var promptText = $prompt.data('prompt-text');
31390            scope.closest('.store-locator-failed-to-set-preferred').hide();
31391            $prompt.html(promptText + ': ' + storeName);
31392            $prompt.attr('title', storeName);
31393          } else {
31394            scope.closest('.store-locator-failed-to-set-preferred').show();
31395          }
31396        },
31397        complete: function complete() {
31398          scope.spinner().stop();
31399        }
31400      }).fail(function () {
31401        scope.closest('.store-locator-failed-to-set-preferred').show();
31402      });
31403    });
31404  },
31405  methods: {
31406    appendToUrl: appendToUrl,
31407    maps: maps,
31408    updateStoresResults: updateStoresResults,
31409    search: search
31410  }
31411};
31412
31413/***/ }),
31414
31415/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/thirdParty/bootstrap.js":
31416/*!*************************************************************************************************************!*\
31417  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/thirdParty/bootstrap.js ***!
31418  \*************************************************************************************************************/
31419/*! no static exports found */
31420/***/ (function(module, exports, __webpack_require__) {
31421
31422__webpack_require__(/*! bootstrap/js/src/util.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
31423
31424__webpack_require__(/*! bootstrap/js/src/alert.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/alert.js"); // require('bootstrap/js/src/button.js');
31425
31426
31427__webpack_require__(/*! bootstrap/js/src/carousel.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/carousel.js");
31428
31429__webpack_require__(/*! bootstrap/js/src/collapse.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/collapse.js");
31430
31431__webpack_require__(/*! bootstrap/js/src/dropdown.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/dropdown.js");
31432
31433__webpack_require__(/*! bootstrap/js/src/modal.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/modal.js");
31434
31435__webpack_require__(/*! bootstrap/js/src/scrollspy.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/scrollspy.js");
31436
31437__webpack_require__(/*! bootstrap/js/src/tab.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/tab.js");
31438
31439__webpack_require__(/*! bootstrap/js/src/tooltip.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/tooltip.js");
31440
31441__webpack_require__(/*! bootstrap/js/src/popover.js */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/popover.js");
31442
31443/***/ }),
31444
31445/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/thirdParty/googleMaps.js":
31446/*!**************************************************************************************************************!*\
31447  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/thirdParty/googleMaps.js ***!
31448  \**************************************************************************************************************/
31449/*! no static exports found */
31450/***/ (function(module, exports) {
31451
31452var googleMapsPromise = null;
31453
31454module.exports = function () {
31455  if (googleMapsPromise) {
31456    return googleMapsPromise;
31457  }
31458
31459  if (!window.CachedData.googleMapsApi || window.google) {
31460    googleMapsPromise = Promise.resolve();
31461  } else {
31462    googleMapsPromise = $.getScript(window.CachedData.googleMapsApi);
31463  }
31464
31465  return googleMapsPromise;
31466};
31467
31468/***/ }),
31469
31470/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/utilities/headerUtils.js":
31471/*!**************************************************************************************************************!*\
31472  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/utilities/headerUtils.js ***!
31473  \**************************************************************************************************************/
31474/*! no static exports found */
31475/***/ (function(module, exports, __webpack_require__) {
31476
31477"use strict";
31478 // Creating a global getHeaderHeight function since its used more than once
31479// used in:
31480// search.js
31481// menu.js
31482
31483function getHeaderHeight() {
31484  var $header = $('header');
31485  var $headerBanner = $header.find('.header-banner');
31486  var $headerNav = $header.find('.header-nav');
31487  var $preNavHeader = $header.find('.pre-nav-header');
31488  var $preNavHeaderHeight = $preNavHeader && $preNavHeader.length > 0 ? $preNavHeader.outerHeight() : 0;
31489  var headerNavHeight = !$headerBanner.hasClass('d-none') ? $headerNav.outerHeight() + $headerBanner.outerHeight() + $preNavHeaderHeight : $headerNav.outerHeight() + $preNavHeaderHeight;
31490  return headerNavHeight;
31491}
31492
31493module.exports = {
31494  getHeaderHeight: getHeaderHeight
31495};
31496
31497/***/ }),
31498
31499/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/utilities/scroll.js":
31500/*!*********************************************************************************************************!*\
31501  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/utilities/scroll.js ***!
31502  \*********************************************************************************************************/
31503/*! no static exports found */
31504/***/ (function(module, exports, __webpack_require__) {
31505
31506"use strict";
31507 // Polyfill for creating CustomEvents on IE11
31508// code pulled from:
31509// https://github.com/d4tocchini/customevent-polyfill
31510// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill
31511
31512function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
31513
31514function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
31515
31516function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
31517
31518(function () {
31519  if (typeof window === 'undefined') {
31520    return;
31521  }
31522
31523  try {
31524    var ce = new window.CustomEvent('test', {
31525      cancelable: true
31526    });
31527    ce.preventDefault();
31528
31529    if (ce.defaultPrevented !== true) {
31530      // IE has problems with .preventDefault() on custom events
31531      // http://stackoverflow.com/questions/23349191
31532      throw new Error('Could not prevent default');
31533    }
31534  } catch (e) {
31535    var CustomEvent = function CustomEvent(event, params) {
31536      var evt, origPrevent;
31537      params = params || {};
31538      params.bubbles = !!params.bubbles;
31539      params.cancelable = !!params.cancelable;
31540      evt = document.createEvent('CustomEvent');
31541      evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
31542      origPrevent = evt.preventDefault;
31543
31544      evt.preventDefault = function () {
31545        origPrevent.call(this);
31546
31547        try {
31548          Object.defineProperty(this, 'defaultPrevented', {
31549            get: function get() {
31550              return true;
31551            }
31552          });
31553        } catch (e) {
31554          this.defaultPrevented = true;
31555        }
31556      };
31557
31558      return evt;
31559    };
31560
31561    CustomEvent.prototype = window.Event.prototype;
31562    window.CustomEvent = CustomEvent; // expose definition to window
31563  }
31564})();
31565
31566var ScrollDirection = /*#__PURE__*/function () {
31567  function ScrollDirection() {
31568    _classCallCheck(this, ScrollDirection);
31569
31570    this.$html = $('html'); // Element to add CSS classnames
31571
31572    this.window = window; // Element to listen to scroll events
31573
31574    this.direction = null; // Current scroll direction
31575
31576    this.headerHeight = null; // Track header's height
31577
31578    this.headerNavHeight = null; // Track sticky portion of header's height
31579
31580    this.headerNavOffsetTop = 0; // Track header's distance from top of page
31581
31582    this.isScrolling = false; // Page is scrolling
31583
31584    this.last = 0; // Last scroll position
31585
31586    this.stickyHeader = false; // Show CSS header
31587
31588    this.timeout = null; // Timeout event for scroll handler
31589
31590    this.threshold = 10; // How far to allow scroll before triggering scroll events
31591
31592    this.init(); // Initialize scroll handlers
31593  }
31594
31595  _createClass(ScrollDirection, [{
31596    key: "init",
31597    value: function init() {
31598      // Check if we can use Passive Event Listening
31599      var passiveIfSupported = false;
31600
31601      try {
31602        window.addEventListener('test', null, Object.defineProperty({}, 'passive', {
31603          get: function get() {
31604            passiveIfSupported = {
31605              passive: true
31606            };
31607          }
31608        }));
31609      } catch (err) {} // Add Event Listeners
31610
31611
31612      this.listener = this.detectDirection.bind(this);
31613      this.resize = this.detectResize.bind(this);
31614      this.window.addEventListener('scroll', this.listener, passiveIfSupported);
31615      this.window.addEventListener('resize', this.resize, passiveIfSupported); // Do initial Size Detection
31616
31617      this.detectResize();
31618    }
31619  }, {
31620    key: "detectDirection",
31621    value: function detectDirection() {
31622      // Get Scroll Position
31623      var scrolled = this.window.scrollY || this.window.scrollTop || this.window.pageYOffset; // Check if New Scroll Position Breaks Threshold
31624
31625      if (Math.abs(scrolled - this.last) >= this.threshold) {
31626        var currentDirection = scrolled > this.last ? 'down' : 'up'; // Check if Scrolling
31627
31628        if (scrolled !== this.last && !this.isScrolling) {
31629          this.onScrollStart();
31630        } // Check if Header exists and if we should trigger Sticky Header
31631
31632
31633        if (this.headerHeight) {
31634          if (scrolled > this.headerHeight && !this.stickyHeader && this.direction === 'up') {
31635            this.stickyHeader = true;
31636            this.$html.addClass('sticky-header'); // Fire Custom Event `stickyHeaderChange`
31637
31638            this.window.dispatchEvent(new CustomEvent('stickyHeaderChange', {
31639              detail: {
31640                direction: this.direction,
31641                last: this.last,
31642                stickyHeader: this.stickyHeader
31643              }
31644            }));
31645          } else if (scrolled < this.headerHeight && this.stickyHeader) {
31646            this.stickyHeader = false;
31647            this.$html.removeClass('sticky-header'); // Fire Custom Event `stickyHeaderChange`
31648
31649            this.window.dispatchEvent(new CustomEvent('stickyHeaderChange', {
31650              detail: {
31651                direction: this.direction,
31652                last: this.last,
31653                stickyHeader: this.stickyHeader
31654              }
31655            }));
31656          }
31657        } // Detect Direction Change
31658
31659
31660        if (this.direction !== currentDirection) {
31661          this.onDirectionChange(currentDirection);
31662        } // Update Last Scroll Position
31663
31664
31665        this.last = scrolled; // Fire Custom Event `scrollUpdate`
31666
31667        this.window.dispatchEvent(new CustomEvent('scrollUpdate', {
31668          detail: {
31669            direction: this.direction,
31670            last: this.last,
31671            stickyHeader: this.stickyHeader
31672          }
31673        }));
31674      } // Clear Last Timeout before Recreating it
31675
31676
31677      if (this.timeout) {
31678        clearTimeout(this.timeout);
31679      } // Fire Stop Scroll Event shortly after Scrolling Stops
31680
31681
31682      this.timeout = setTimeout(this.onScrollStop.bind(this), 500);
31683    }
31684  }, {
31685    key: "detectResize",
31686    value: function detectResize() {
31687      // Get Header Height - will only exist if headerFixed preference is set to 'Enhanced'
31688      var $header = $('.fixed-header-enhanced');
31689
31690      if ($header.length) {
31691        var $headerNav = $header.find('.header-nav');
31692        this.headerHeight = $header.outerHeight();
31693        this.headerNavHeight = $headerNav.outerHeight();
31694        this.$html.css('--header-height', this.headerNavHeight + 'px'); // change to position static before getting offset
31695
31696        $headerNav.css('position', 'static');
31697        this.headerNavOffsetTop = $headerNav.offset().top;
31698        $headerNav.css('position', '');
31699      }
31700    }
31701  }, {
31702    key: "onDirectionChange",
31703    value: function onDirectionChange(direction) {
31704      this.direction = direction; // Update Scroll Classes
31705
31706      this.$html.addClass('scroll-direction-' + this.direction);
31707      this.$html.removeClass('scroll-direction-' + (this.direction == 'down' ? 'up' : 'down')); // Fire Custom Event `scrollDirectionChange`
31708
31709      this.window.dispatchEvent(new CustomEvent('scrollDirectionChange', {
31710        detail: {
31711          direction: this.direction,
31712          last: this.last,
31713          stickyHeader: this.stickyHeader
31714        }
31715      }));
31716    }
31717  }, {
31718    key: "onScrollStart",
31719    value: function onScrollStart() {
31720      this.$html.addClass('is-scrolling');
31721      this.isScrolling = true; // Fire Custom Event `scrollStart`
31722
31723      this.window.dispatchEvent(new CustomEvent('scrollStart', {
31724        detail: {
31725          direction: this.direction,
31726          last: this.last,
31727          stickyHeader: this.stickyHeader
31728        }
31729      }));
31730    }
31731  }, {
31732    key: "onScrollStop",
31733    value: function onScrollStop() {
31734      this.$html.removeClass('is-scrolling');
31735      this.isScrolling = false;
31736      this.timeout = null; // Fire Custom Event `scrollStop`
31737
31738      this.window.dispatchEvent(new CustomEvent('scrollStop', {
31739        detail: {
31740          direction: this.direction,
31741          last: this.last,
31742          stickyHeader: this.stickyHeader
31743        }
31744      }));
31745    }
31746  }]);
31747
31748  return ScrollDirection;
31749}();
31750
31751module.exports = function () {
31752  $(document).ready(function () {
31753    new ScrollDirection();
31754  });
31755};
31756
31757/***/ }),
31758
31759/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js":
31760/*!********************************************************************************************************************!*\
31761  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js ***!
31762  \********************************************************************************************************************/
31763/*! no static exports found */
31764/***/ (function(module, exports, __webpack_require__) {
31765
31766"use strict";
31767 // TODO: REVISIT ON IF THIS SHOULD BE DONE SERVER SIDE
31768
31769/**
31770 * update window product list experience data
31771 * @param {string} data - data returned from the server's ajax call
31772 */
31773
31774var updateUncachedData = function updateUncachedData(data) {
31775  var wishlistPIDs = new Set(window.UncachedData.wishlistPIDs);
31776  var updatedPid = data.pid.toString();
31777
31778  if (data.actionType === 'change') {
31779    var newPid = data.pidUpdated.toString();
31780    wishlistPIDs["delete"](updatedPid);
31781    wishlistPIDs.add(newPid);
31782  } else if (data.actionType === 'add') {
31783    wishlistPIDs.add(updatedPid);
31784  } else if (data.actionType === 'remove') {
31785    wishlistPIDs["delete"](updatedPid);
31786  }
31787
31788  window.UncachedData.wishlistPIDs = Array.from(wishlistPIDs);
31789};
31790/**
31791 * update clicked links attributes and text
31792 * @param {Object} specificLinks - jQuery object representing selection of product list experience links
31793 */
31794
31795
31796var updateLinkData = function updateLinkData(specificLinks, data) {
31797  if (!window || !window.UncachedData || !window.UncachedData.wishlistPIDs) {
31798    return;
31799  }
31800
31801  var wishlistLinks = specificLinks || $('[data-wishlistpid]');
31802
31803  if (!wishlistLinks || !wishlistLinks.length) {
31804    return;
31805  }
31806
31807  var wishlistPIDs = new Set(window.UncachedData.wishlistPIDs);
31808  wishlistLinks.each(function (_i, wishlistLink) {
31809    var $wishlistLink = $(wishlistLink);
31810    var wishlistpid = $wishlistLink.attr('data-wishlistpid');
31811
31812    if (wishlistpid) {
31813      var isInWishlist = wishlistPIDs.has(wishlistpid);
31814      $wishlistLink.attr('data-inwishlist', isInWishlist);
31815
31816      if (isInWishlist) {
31817        $wishlistLink.attr('title', $wishlistLink.attr('data-removemessage'));
31818
31819        if ($wishlistLink.data('includetext') === true) {
31820          $wishlistLink.find('span').html($wishlistLink.attr('data-removemessage'));
31821        }
31822      } else {
31823        $wishlistLink.attr('title', $wishlistLink.attr('data-addmessage'));
31824
31825        if ($wishlistLink.data('includetext') === true) {
31826          $wishlistLink.find('span').html($wishlistLink.attr('data-addmessage'));
31827        }
31828      }
31829
31830      var icon = $wishlistLink.find('.wishlist-icon');
31831
31832      if (icon && icon.length) {
31833        $(icon).toggleClass('selected', isInWishlist);
31834      }
31835
31836      if (data && data.wishlistQuantities) {
31837        $wishlistLink.attr('data-wishlistquantity', data.wishlistQuantities).data('wishlistquantity', data.wishlistQuantities);
31838      } else {
31839        $wishlistLink.attr('data-wishlistquantity', 1).data('wishlistquantity', 1);
31840      }
31841    }
31842  });
31843};
31844
31845var openToast = function openToast(data) {
31846  if (data.pid) {
31847    $('.wishlist-toast').trigger('show', function ($toast) {
31848      if (data.wishlistName) {
31849        $toast.find('.wishlist-name').html(data.wishlistName);
31850      } else {
31851        $toast.find('.wishlist-name').html($toast.data().defaultWishlistName);
31852      }
31853
31854      $toast.find('.message .manage').attr('href', data.wishlistUrl);
31855
31856      if (data.manageLabel) {
31857        $toast.find('.message .manage').html(data.manageLabel);
31858      } else {
31859        $toast.find('.message .manage').html($toast.data().defaultManageLabelWishlist);
31860      }
31861
31862      $toast.attr({
31863        'data-product-id': data.pid,
31864        'data-wishlist-id': data.wishlistId
31865      }).data('product-id', data.pid).data('wishlist-id', data.wishlistId);
31866
31867      if (data.wishlistQuantities) {
31868        $toast.attr('data-wishlist-quantities', data.wishlistQuantities).data('wishlist-quantities', data.wishlistQuantities);
31869      }
31870
31871      if (data.productOptions) {
31872        $toast.attr({
31873          'data-product-options': data.productOptions
31874        }).data('product-options', data.productOptions);
31875      }
31876
31877      if (data.wishlistActionType === 'add') {
31878        $toast.find('.message.remove, .message.both').addClass('d-none');
31879        $toast.find('.message.add').removeClass('d-none');
31880      } else if (data.wishlistActionType === 'remove') {
31881        $toast.find('.message.remove').removeClass('d-none');
31882        $toast.find('.message.add, .message.both').addClass('d-none');
31883      } else {
31884        $toast.find('.message.both').removeClass('d-none');
31885        $toast.find('.message.add, .message.remove').addClass('d-none');
31886      }
31887    });
31888  }
31889};
31890
31891var getUrlParam = function getUrlParam(paramName) {
31892  var queryString = window.location.search;
31893  var urlParams = new URLSearchParams(queryString);
31894  return urlParams.get(paramName);
31895};
31896
31897module.exports = {
31898  openToast: openToast,
31899  updateLinkData: updateLinkData,
31900  updateUncachedData: updateUncachedData,
31901  getUrlParam: getUrlParam
31902};
31903
31904/***/ }),
31905
31906/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/modalShowLists.js":
31907/*!***************************************************************************************************************************!*\
31908  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/modalShowLists.js ***!
31909  \***************************************************************************************************************************/
31910/*! no static exports found */
31911/***/ (function(module, exports, __webpack_require__) {
31912
31913"use strict";
31914
31915
31916var wishlistHelpers = __webpack_require__(/*! core/wishlist/components/helpers */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
31917
31918var toastHelpers = __webpack_require__(/*! core/components/toast */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toast.js");
31919
31920var cart = __webpack_require__(/*! core/cart */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart.js");
31921
31922var base = __webpack_require__(/*! core/product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js");
31923
31924var getPid = function getPid() {
31925  return $('#wishlistModalShowLists').data().pid;
31926};
31927
31928var getListItemIds = function getListItemIds() {
31929  return $('#wishlistModalShowLists').data().listItemIds;
31930};
31931
31932var getListId = function getListId() {
31933  return $('#wishlistModalShowLists').data().listId;
31934};
31935
31936var getListAction = function getListAction() {
31937  var $modal = $('#wishlistModalShowLists');
31938  return !$modal.data().action ? 'add' : $modal.data().action;
31939};
31940
31941var getQuantity = function getQuantity() {
31942  if ($('#wishlistModalShowLists').data().quantity) {
31943    return $('#wishlistModalShowLists').data().quantity;
31944  } else {
31945    return 1;
31946  }
31947};
31948
31949var updateWishlistProducts = function updateWishlistProducts($html) {
31950  // if we have a new DOM replace the old DOM
31951  if ($html) {
31952    $('#wishlistModalShowLists').find('.wishlist-modal-show-lists-toggle-lists').replaceWith($html); // if we don't have a new DOM then just empty it out
31953  } else {
31954    $('#wishlistModalShowLists').find('.wishlist-modal-show-lists-toggle-lists').empty();
31955  }
31956};
31957
31958var updateModalListDataState = function updateModalListDataState() {
31959  var $modal = $('#wishlistModalShowLists');
31960  var modalListDataState = $modal.data().modalListDataState;
31961  var selectedLists = $modal.find('.js-toggle.selected');
31962  var selectedListIds = [];
31963
31964  var getListDiff = function getListDiff(list1, list2) {
31965    var misses = [];
31966
31967    for (var item = 0; item < list1.length; item++) {
31968      var found = false;
31969
31970      for (var ii = 0; ii < list2.length; ii++) {
31971        if (list2[ii].wishlistId === list1[item].wishlistId) {
31972          found = true;
31973        }
31974      }
31975
31976      if (!found) {
31977        misses.push(list1[item]);
31978      }
31979    }
31980
31981    return misses;
31982  }; //get all the lists that are selected
31983
31984
31985  selectedLists.each(function () {
31986    selectedListIds.push({
31987      pid: module.exports.methods.getPid(),
31988      wishlistId: $(this).data('wishlistId'),
31989      wishlistName: $(this).data('wishlistName'),
31990      wishlistQuantities: $(this).data('wishlistPidQuantity'),
31991      wishlistUrl: $(this).data('wishlistUrl')
31992    });
31993  }); //save off the initial set of selected lists so we know what we started with
31994
31995  if (!modalListDataState.listsInitial) {
31996    modalListDataState.listsInitial = selectedListIds;
31997  } //save the lists as it after a change happened or if this is the initial load
31998
31999
32000  modalListDataState.listsCurrent = selectedListIds; //figure if any lists have been removed
32001
32002  modalListDataState.removed = getListDiff(modalListDataState.listsInitial, modalListDataState.listsCurrent); //figure if any lists have been added
32003
32004  modalListDataState.added = getListDiff(modalListDataState.listsCurrent, modalListDataState.listsInitial); //look to see if anything changed then set the isChange flag
32005
32006  if (modalListDataState.added.length || modalListDataState.removed.length) {
32007    modalListDataState.isChanged = true;
32008  } else {
32009    modalListDataState.isChanged = false;
32010  }
32011
32012  if (modalListDataState.added.length && modalListDataState.removed.length) {
32013    modalListDataState.wishlistActionType = 'both';
32014  } else if (modalListDataState.added.length) {
32015    modalListDataState.wishlistActionType = 'add';
32016  } else if (modalListDataState.removed) {
32017    modalListDataState.wishlistActionType = 'remove';
32018  } else {
32019    modalListDataState.wishlistActionType = 'none';
32020  }
32021
32022  modalListDataState.toast = {};
32023
32024  if (modalListDataState.wishlistActionType === 'remove' && modalListDataState.removed.length === 1) {
32025    // only removed 1
32026    modalListDataState.toast = modalListDataState.removed[0];
32027    modalListDataState.toast.wishlistActionType = modalListDataState.wishlistActionType;
32028  } else if (modalListDataState.wishlistActionType === 'remove' && modalListDataState.removed.length > 1) {
32029    // removed several
32030    modalListDataState.toast.wishlistId = [];
32031    modalListDataState.toast.wishlistQuantities = [];
32032    modalListDataState.toast.pid = module.exports.methods.getPid();
32033    var i;
32034
32035    for (i = 0; i < modalListDataState.removed.length; i++) {
32036      modalListDataState.toast.wishlistId.push(modalListDataState.removed[i].wishlistId);
32037      modalListDataState.toast.wishlistQuantities.push(modalListDataState.removed[i].wishlistQuantities);
32038    }
32039
32040    modalListDataState.toast.wishlistActionType = modalListDataState.wishlistActionType;
32041  } else if (modalListDataState.wishlistActionType === 'add' && modalListDataState.added.length === 1) {
32042    // only added 1
32043    modalListDataState.toast = modalListDataState.added[0];
32044    modalListDataState.toast.wishlistActionType = modalListDataState.wishlistActionType;
32045  } else if (modalListDataState.wishlistActionType === 'add' && modalListDataState.added.length > 1) {
32046    // added several
32047    modalListDataState.toast.wishlistActionType = 'both';
32048  } else if (modalListDataState.wishlistActionType === 'both') {
32049    // multiple adds or multiple removals
32050    modalListDataState.toast.wishlistActionType = modalListDataState.wishlistActionType;
32051  } else {
32052    // no changes
32053    modalListDataState.toast.wishlistActionType = modalListDataState.wishlistActionType;
32054  }
32055
32056  $modal.data().modalListDataState = modalListDataState;
32057};
32058
32059var switchListViewsRegistered = function switchListViewsRegistered() {
32060  $('#wishlistModalShowLists').find('.wishlist-modal-show-lists-toggle-lists, .wishlist-modal-show-lists-toggle-list-form, .modal-footer').toggleClass('d-none');
32061  $('#wishlistModalShowLists').find('.wishlist-modal-show-lists-header-close, .wishlist-modal-show-lists-header-back').toggleClass('show');
32062};
32063
32064var eventShow = function eventShow(e) {
32065  var $this = $(this);
32066  var action = module.exports.methods.getListAction();
32067  var dataParams = {};
32068  $this.data('modalListDataState', {});
32069  $this.find('.modal-content').spinner().start();
32070  $('.wishlist-toast').trigger('dismiss');
32071
32072  if (action === 'move') {
32073    $('.wishlist-modal-show-lists-add').hide();
32074    dataParams = {
32075      listIdOriginal: $this.data().listId,
32076      listItemIds: JSON.stringify(module.exports.methods.getListItemIds()),
32077      action: action
32078    };
32079  } else {
32080    $('.wishlist-modal-show-lists-move').hide();
32081    dataParams = {
32082      pid: module.exports.methods.getPid(),
32083      action: action
32084    };
32085  }
32086
32087  $.ajax({
32088    url: $this.find('.modal-body').data().url,
32089    type: 'POST',
32090    dataType: 'html',
32091    data: dataParams,
32092    success: function success(html) {
32093      module.exports.methods.updateWishlistProducts($(html));
32094      module.exports.methods.updateModalListDataState();
32095      $this.find('.modal-content').spinner().stop();
32096    }
32097  });
32098  module.exports.methods.addListEventListenersWindow();
32099};
32100
32101var eventHidden = function eventHidden(e) {
32102  module.exports.methods.removeListEventListenersWindow();
32103  module.exports.methods.updateWishlistProducts();
32104  wishlistHelpers.openToast($('#wishlistModalShowLists').data().modalListDataState.toast);
32105};
32106
32107var eventStopPropagation = function eventStopPropagation(e) {
32108  e.stopPropagation();
32109};
32110
32111var eventClickWindow = function eventClickWindow(e) {
32112  $('#wishlistModalShowLists').modal('toggle');
32113};
32114
32115var eventKeyupName = function eventKeyupName(e) {
32116  var $this = $(this);
32117  var $invalidFeedback = $this.next('.invalid-feedback');
32118  var $submitButton = $('.wishlist-create-list-form .create');
32119  var namesExisting = $('#wishlistModalShowLists [data-list-names]').data().listNames.split('|');
32120  var nameNew = $this.val().replace(/[^A-Za-z0-9]/g, '').toLowerCase();
32121
32122  if (nameNew !== '' && namesExisting.indexOf(nameNew) !== -1) {
32123    $submitButton.attr('disabled', 'disabled');
32124    $invalidFeedback.text($this.data().errorDuplicateName).addClass('d-block');
32125    $this.addClass('is-invalid');
32126  } else {
32127    $submitButton.removeAttr('disabled');
32128    $invalidFeedback.text('').removeClass('d-block');
32129    $this.removeClass('is-invalid');
32130  }
32131};
32132
32133var eventToggleProductOnWishlist = function eventToggleProductOnWishlist(e) {
32134  e.preventDefault();
32135  var $listButton = $(this);
32136  var $productContainer = $('.product-detail[data-pid=' + $listButton.data().pid + ']');
32137  var options = base.methods.getOptions($productContainer);
32138  options ? $listButton.attr('data-product-options', JSON.stringify(options)) : '';
32139  $listButton.closest('.modal-content').spinner().start();
32140  $.ajax({
32141    url: $listButton.data().url,
32142    method: 'POST',
32143    dataType: 'json',
32144    data: {
32145      pid: module.exports.methods.getPid(),
32146      wishlistId: $listButton.data().wishlistId,
32147      quantity: module.exports.methods.getQuantity(),
32148      options: options
32149    },
32150    success: function success(data) {
32151      var $html = $(data.renderedTemplate);
32152
32153      if (!data.error && $html.length) {
32154        var $modal = $('#wishlistModalShowLists');
32155        var productListSelectedCount = $html.find('.selected').length;
32156        module.exports.methods.updateWishlistProducts($html);
32157        module.exports.methods.updateModalListDataState();
32158        wishlistHelpers.updateUncachedData({
32159          actionType: productListSelectedCount ? 'add' : 'remove',
32160          pid: module.exports.methods.getPid()
32161        });
32162        wishlistHelpers.updateLinkData();
32163
32164        if (!$modal.data().multiSelect) {
32165          $modal.one('hidden.bs.modal', function () {
32166            wishlistHelpers.openToast($listButton.data());
32167          }).modal('hide');
32168        }
32169
32170        if ($modal.data().removeFromCart && $listButton.data().wishlistActionType === 'add') {
32171          var urlParams = {
32172            pid: module.exports.methods.getPid(),
32173            uuid: $modal.data().cartUUID
32174          };
32175          cart.removeProductFromCart({
32176            url: cart.appendToUrl($modal.data().urlRemoveFromCart, urlParams),
32177            uuid: urlParams.uuid,
32178            pid: module.exports.methods.getPid()
32179          });
32180        }
32181      } else {
32182        toastHelpers.methods.show('danger', data.message, true);
32183      }
32184
32185      $listButton.closest('.modal-content').spinner().stop();
32186    },
32187    error: function error() {
32188      $listButton.closest('.modal-content').spinner().stop();
32189    }
32190  });
32191};
32192
32193var eventMoveProductsToWishlist = function eventMoveProductsToWishlist(e) {
32194  e.preventDefault();
32195  var $modal = $('#wishlistModalShowLists');
32196  var $listButton = $(this);
32197  $listButton.closest('.modal-content').spinner().start();
32198  $.ajax({
32199    url: $listButton.data().url,
32200    method: 'POST',
32201    dataType: 'json',
32202    data: {
32203      listItemIds: JSON.stringify($modal.data().listItemIds),
32204      productListIdOriginal: module.exports.methods.getListId(),
32205      productListIdNew: $listButton.data().wishlistId,
32206      keepInOriginalList: $modal.find('.keep').is(':checked')
32207    },
32208    success: function success(data) {
32209      var $productsHtml = $(data.renderedTemplate);
32210
32211      if (!data.error && $productsHtml.length) {
32212        $('.wishlist-details').trigger('updateProducts', $productsHtml);
32213
32214        if (!$modal.data().multiSelect) {
32215          $modal.modal('hide');
32216        }
32217
32218        toastHelpers.methods.show('success', data.message, false);
32219      } else {
32220        toastHelpers.methods.show('danger', data.message, true);
32221      }
32222
32223      $listButton.closest('.modal-content').spinner().stop();
32224    },
32225    error: function error() {
32226      $listButton.closest('.modal-content').spinner().stop();
32227    }
32228  });
32229};
32230
32231var eventToggleNewWishlistForm = function eventToggleNewWishlistForm(e) {
32232  e.preventDefault();
32233  module.exports.methods.switchListViewsRegistered();
32234  $('#wishlistModalShowLists #newProductListName').val('').removeClass('is-invalid').next('.invali
32234d-feedback').text('').removeClass('d-block');
32235  $('.wishlist-create-list-form .create').removeAttr('disabled');
32236};
32237
32238var eventSubmitNewWishlistForm = function eventSubmitNewWishlistForm(e) {
32239  e.preventDefault();
32240  var $newProductListName = $('#newProductListName');
32241
32242  if ($newProductListName.val() && $newProductListName.val().length > 1) {
32243    $newProductListName.removeClass('is-invalid');
32244    $newProductListName.closest('.modal-body').spinner().start();
32245    $.ajax({
32246      url: $(e.target).data().url,
32247      method: 'POST',
32248      dataType: 'json',
32249      data: {
32250        name: $newProductListName.val(),
32251        pid: module.exports.methods.getPid(),
32252        view: 'modalShowLists',
32253        listIdOriginal: module.exports.methods.getListId(),
32254        action: module.exports.methods.getListAction()
32255      },
32256      success: function success(data) {
32257        var $html = $(data.renderedTemplate);
32258
32259        if (!data.error && $html.length) {
32260          module.exports.methods.updateWishlistProducts($html);
32261          module.exports.methods.updateModalListDataState();
32262        } else {
32263          toastHelpers.methods.show('danger', data.message, true);
32264        }
32265
32266        $newProductListName.closest('.modal-body').spinner().stop();
32267      },
32268      error: function error() {
32269        $newProductListName.closest('.modal-body').spinner().stop();
32270      }
32271    });
32272    module.exports.methods.switchListViewsRegistered();
32273    $newProductListName.val('');
32274  } else {
32275    $newProductListName.addClass('is-invalid');
32276  }
32277};
32278
32279var eventClickRemove = function eventClickRemove(e) {
32280  e.preventDefault();
32281  var target = e.currentTarget;
32282  var pid = target.dataset.pid;
32283  $(target).closest('.modal-body').spinner().start();
32284  $.ajax({
32285    url: target.dataset.url,
32286    method: 'POST',
32287    dataType: 'json',
32288    data: {
32289      pid: pid
32290    },
32291    success: function success(data) {
32292      if (!data.error) {
32293        wishlistHelpers.updateUncachedData({
32294          actionType: 'remove',
32295          pid: pid
32296        });
32297        wishlistHelpers.updateLinkData();
32298        $('.wishlist-modal-show-lists').modal('hide');
32299        wishlistHelpers.openToast({
32300          pid: pid,
32301          wishlistId: data.wishlistIds,
32302          wishlistQuantities: data.wishlistsQuantities,
32303          wishlistName: data.wishlistName,
32304          wishlistUrl: data.wishlistUrl,
32305          wishlistActionType: 'remove'
32306        });
32307      } else {
32308        toastHelpers.methods.show('danger', data.message, true);
32309      }
32310
32311      $(target).closest('.modal-body').spinner().stop();
32312    },
32313    error: function error() {
32314      $('.wishlist-modal-show-lists').modal('hide');
32315      $(target).closest('.modal-body').spinner().stop();
32316    }
32317  });
32318};
32319
32320var addListEventListenersWindow = function addListEventListenersWindow() {
32321  $(window).on('click', module.exports.methods.eventClickWindow);
32322};
32323
32324var removeListEventListenersWindow = function removeListEventListenersWindow() {
32325  $(window).off('click', module.exports.methods.eventClickWindow);
32326};
32327
32328var addListEventListeners = function addListEventListeners() {
32329  $('#wishlistModalShowLists').on('click', module.exports.methods.eventStopPropagation).on('show.bs.modal', module.exports.methods.eventShow).on('hidden.bs.modal', module.exports.methods.eventHidden).on('keyup', '#newProductListName', module.exports.methods.eventKeyupName).on('click', '.js-header-back', module.exports.methods.eventToggleNewWishlistForm).on('click', '.wishlist-show-new-list-form-btn, .wishlist-modal-show-lists-toggle-list-form .cancel', module.exports.methods.eventToggleNewWishlistForm).on('click', '.js-toggle', module.exports.methods.eventToggleProductOnWishlist).on('click', '.js-move', module.exports.methods.eventMoveProductsToWishlist).on('submit', '.wishlist-modal-show-lists-toggle-list-form form', module.exports.methods.eventSubmitNewWishlistForm).on('click', '.js-remove-from-all', module.exports.methods.eventClickRemove);
32330  $('#wishlistModalShowLists').data('modalListDataState', {});
32331};
32332
32333module.exports = {
32334  methods: {
32335    getPid: getPid,
32336    getListItemIds: getListItemIds,
32337    getListId: getListId,
32338    getListAction: getListAction,
32339    getQuantity: getQuantity,
32340    updateWishlistProducts: updateWishlistProducts,
32341    updateModalListDataState: updateModalListDataState,
32342    switchListViewsRegistered: switchListViewsRegistered,
32343    eventShow: eventShow,
32344    eventHidden: eventHidden,
32345    eventStopPropagation: eventStopPropagation,
32346    eventClickWindow: eventClickWindow,
32347    eventKeyupName: eventKeyupName,
32348    eventToggleProductOnWishlist: eventToggleProductOnWishlist,
32349    eventMoveProductsToWishlist: eventMoveProductsToWishlist,
32350    eventToggleNewWishlistForm: eventToggleNewWishlistForm,
32351    eventSubmitNewWishlistForm: eventSubmitNewWishlistForm,
32352    eventClickRemove: eventClickRemove,
32353    addListEventListenersWindow: addListEventListenersWindow,
32354    removeListEventListenersWindow: removeListEventListenersWindow
32355  },
32356  addListEventListeners: addListEventListeners
32357};
32358
32359/***/ }),
32360
32361/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/toast.js":
32362/*!******************************************************************************************************************!*\
32363  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/toast.js ***!
32364  \******************************************************************************************************************/
32365/*! no static exports found */
32366/***/ (function(module, exports, __webpack_require__) {
32367
32368"use strict";
32369
32370
32371var wishlistHelpers = __webpack_require__(/*! core/wishlist/components/helpers */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
32372
32373var toastRecycleTime = 500;
32374
32375var dismiss = function dismiss($toast) {
32376  $toast.removeClass('show').attr('tabindex', '-1');
32377  module.exports.methods.removeEventListenersWindow();
32378};
32379
32380var show = function show($toast) {
32381  $toast.addClass('show').attr('tabindex', '0').trigger('focus');
32382  module.exports.methods.addEventListenersWindow();
32383};
32384
32385var eventClickUndo = function eventClickUndo(e) {
32386  e.preventDefault();
32387  var $this = $(this);
32388  var $toast = $this.parents('.wishlist-toast');
32389  var url;
32390  var wishlistId;
32391  var wishlistQuantities;
32392  var productOptions;
32393
32394  if (typeof $toast.data().wishlistId === 'string') {
32395    url = $this.data().urlList;
32396    wishlistId = $toast.data().wishlistId;
32397    wishlistQuantities = $toast.data().wishlistQuantities;
32398    productOptions = $toast.data().productOptions;
32399  } else {
32400    url = $this.data().urlLists;
32401    wishlistId = $toast.data().wishlistId.join('|');
32402    wishlistQuantities = $toast.data().wishlistQuantities.join('|');
32403    productOptions = $toast.data().productOptions;
32404  }
32405
32406  $.ajax({
32407    url: url,
32408    method: 'POST',
32409    dataType: 'json',
32410    data: {
32411      pid: $toast.data().productId,
32412      wishlistId: wishlistId,
32413      wishlistQuantities: wishlistQuantities,
32414      productOptions: productOptions
32415    },
32416    success: function success(data) {
32417      if (!data.error) {
32418        wishlistHelpers.updateUncachedData({
32419          actionType: data.wishlistActionType,
32420          pid: data.pid
32421        });
32422        wishlistHelpers.updateLinkData();
32423        wishlistHelpers.openToast(data);
32424      } else {
32425        toastHelpers.methods.show('danger', data.message, true);
32426      }
32427    }
32428  });
32429};
32430
32431var eventClickWindow = function eventClickWindow(e) {
32432  if (!$(e.target).is('[data-toast-trigger]')) {
32433    module.exports.methods.dismiss($('.wishlist-toast'));
32434  }
32435};
32436
32437var eventKeyPressEscapeWindow = function eventKeyPressEscapeWindow(e) {
32438  if (e.key && e.key === 'Escape') {
32439    module.exports.methods.dismiss($('.wishlist-toast'));
32440  }
32441};
32442
32443var eventStopPropagation = function eventStopPropagation(e) {
32444  e.stopPropagation();
32445};
32446
32447var eventDismissButton = function eventDismissButton(e) {
32448  e.preventDefault();
32449  module.exports.methods.dismiss($(this).parents('.wishlist-toast'));
32450};
32451
32452var eventShow = function eventShow(e, callback) {
32453  e.preventDefault();
32454  var $toast = $(this);
32455
32456  if ($toast.hasClass('show')) {
32457    module.exports.methods.dismiss($toast);
32458    setTimeout(function () {
32459      if (callback) {
32460        callback($toast, 33);
32461      }
32462
32463      module.exports.methods.show($toast);
32464    }, toastRecycleTime);
32465  } else {
32466    if (callback) {
32467      callback($toast);
32468    }
32469
32470    module.exports.methods.show($toast);
32471  }
32472};
32473
32474var eventDismiss = function eventDismiss(e, callback) {
32475  e.preventDefault();
32476  var $toast = $(this);
32477  module.exports.methods.dismiss($toast);
32478
32479  if (callback) {
32480    callback($toast);
32481  }
32482};
32483
32484var addEventListenersToast = function addEventListenersToast() {
32485  $('.wishlist-toast').on('click', module.exports.methods.eventStopPropagation).on('click', '.undo', module.exports.methods.eventClickUndo).on('click', '[data-toast-dismiss]', module.exports.methods.eventDismissButton).on('show', module.exports.methods.eventShow).on('dismiss', module.exports.methods.eventDismiss);
32486};
32487
32488var addEventListenersWindow = function addEventListenersWindow() {
32489  $(window).on('keydown', module.exports.methods.eventKeyPressEscapeWindow).on('click', module.exports.methods.eventClickWindow);
32490};
32491
32492var removeEventListenersWindow = function removeEventListenersWindow() {
32493  $(window).off('keydown', module.exports.methods.eventKeyPressEscapeWindow).off('click', module.exports.methods.eventClickWindow);
32494};
32495
32496module.exports = {
32497  methods: {
32498    dismiss: dismiss,
32499    show: show,
32500    eventClickUndo: eventClickUndo,
32501    eventClickWindow: eventClickWindow,
32502    eventKeyPressEscapeWindow: eventKeyPressEscapeWindow,
32503    eventStopPropagation: eventStopPropagation,
32504    eventDismissButton: eventDismissButton,
32505    eventShow: eventShow,
32506    eventDismiss: eventDismiss,
32507    addEventListenersWindow: addEventListenersWindow,
32508    removeEventListenersWindow: removeEventListenersWindow
32509  },
32510  addEventListenersToast: addEventListenersToast
32511};
32512
32513/***/ }),
32514
32515/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/toggleProduct.js":
32516/*!**************************************************************************************************************************!*\
32517  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/toggleProduct.js ***!
32518  \**************************************************************************************************************************/
32519/*! no static exports found */
32520/***/ (function(module, exports, __webpack_require__) {
32521
32522"use strict";
32523
32524
32525var wishlistHelpers = __webpack_require__(/*! core/wishlist/components/helpers */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
32526
32527var swatchChange = function swatchChange($swatch) {
32528  var $tileParent = $swatch.parents('.product-tile'); //main Product List Link
32529
32530  if ($swatch.attr('data-wishlistpid')) {
32531    module.exports.methods.toggleButtonSelectedState($tileParent, $swatch.attr('data-wishlistpid'));
32532  }
32533};
32534
32535var hijackSwatchClick = function hijackSwatchClick() {
32536  if (window.isMobile()) {
32537    $('body').on('click.swatch-link', '.product-tile .swatch-link', module.exports.methods.eventHijackSwatchClick);
32538  } else {
32539    $('body').off('click.swatch-link');
32540  }
32541};
32542
32543var toggleButtonSelectedState = function toggleButtonSelectedState($container, pid) {
32544  //Make heart icon accurate
32545  var mainWishlist = $container.find('.wishlist-toggle-product');
32546
32547  if (mainWishlist.length) {
32548    mainWishlist.attr('data-wishlistpid', pid); //Make heart icon accurate
32549
32550    wishlistHelpers.updateLinkData(mainWishlist);
32551  }
32552};
32553
32554var toggleProductGuest = function toggleProductGuest(data) {
32555  $.ajax({
32556    url: data.url,
32557    method: 'POST',
32558    dataType: 'json',
32559    data: {
32560      pid: data.wishlistpid,
32561      quantity: data.wishlistquantity
32562    },
32563    success: function success(data) {
32564      if (!data.error) {
32565        wishlistHelpers.updateUncachedData({
32566          actionType: data.wishlistActionType,
32567          pid: data.pid
32568        });
32569        wishlistHelpers.updateLinkData(false, data);
32570        data.guest = true;
32571        wishlistHelpers.openToast(data);
32572      } else {
32573        toastHelpers.methods.show('danger', data.message, true);
32574      }
32575    }
32576  });
32577};
32578
32579var eventClickHeart = function eventClickHeart(event) {
32580  event.preventDefault();
32581  var $this = $(event.currentTarget);
32582  var wishlistpid = event.currentTarget.dataset.wishlistpid;
32583  var isProductTile = $this.closest('.product-tile').length > 0; // BEGIN MARTIN CUSTOMIZATION
32584
32585  if (!window.UncachedData.customer.isAuthenticated) {
32586    $('body').trigger('initFlyout', {
32587      url: window.CachedData.flyoutFlyoutLoginUrl + '?wishlistpid=' + wishlistpid + '&isproducttile=' + isProductTile + '&bypassquickview=' + event.currentTarget.dataset.bypassquickview
32588    });
32589    return;
32590  }
32591
32592  if (isProductTile && event.currentTarget.dataset.bypassquickview !== 'true') {
32593    if (event.currentTarget.dataset.inwishlist === 'false') {
32594      // If this is a product tile, first show the quickview modal to allow for variant selection
32595      var wishlistGetProductUrl = window.CachedData.wishlistQuickViewUrl + '?pid=' + wishlistpid;
32596      $('body').trigger('quickview:trigger', {
32597        url: wishlistGetProductUrl
32598      });
32599      return;
32600    }
32601  }
32602
32603  if ($('#quickViewModal.show .modal-footer .wishlist-toggle-product').length > 0) {
32604    // If the modal is currently showing, grab the pid and dismiss the modal
32605    var $quickViewModal = $('#quickViewModal');
32606    $quickViewModal.modal('hide');
32607    wishlistpid = $quickViewModal.find('.btn-add-wishlist').data('pid-updated') || $quickViewModal.find('.btn-add-wishlist').data('pid');
32608  } // END MARTIN CUSTOMIZATION
32609
32610
32611  if (window.UncachedData.customer.isAuthenticated) {
32612    $('#wishlistModalShowLists').data('multiSelect', false).data('pid', wishlistpid).modal('show', $this);
32613  } else {
32614    module.exports.methods.toggleProductGuest(event.currentTarget.dataset);
32615  }
32616};
32617
32618var eventMouseEnterSwatch = function eventMouseEnterSwatch() {
32619  module.exports.methods.swatchChange($(this));
32620};
32621
32622var eventAfterAttributeSelect = function eventAfterAttributeSelect(_event, payload) {
32623  module.exports.methods.toggleButtonSelectedState(payload.container, payload.data.product.wishlistpid);
32624};
32625
32626var eventHijackSwatchClick = function eventHijackSwatchClick(event) {
32627  event.preventDefault();
32628  module.exports.methods.swatchChange($(this).find('.swatch'));
32629};
32630
32631var addListEventListeners = function addListEventListeners() {
32632  $('body').on('click', '.wishlist-toggle-product', module.exports.methods.eventClickHeart).on('mouseenter', '.product-tile .swatch', module.exports.methods.eventMouseEnterSwatch).on('product:afterAttributeSelect', module.exports.methods.eventAfterAttributeSelect);
32633  $(window).on('resize', function () {
32634    module.exports.methods.hijackSwatchClick();
32635  });
32636  module.exports.methods.hijackSwatchClick();
32637  wishlistHelpers.updateLinkData();
32638};
32639
32640module.exports = {
32641  methods: {
32642    swatchChange: swatchChange,
32643    hijackSwatchClick: hijackSwatchClick,
32644    toggleButtonSelectedState: toggleButtonSelectedState,
32645    toggleProductGuest: toggleProductGuest,
32646    eventClickHeart: eventClickHeart,
32647    eventMouseEnterSwatch: eventMouseEnterSwatch,
32648    eventAfterAttributeSelect: eventAfterAttributeSelect,
32649    eventHijackSwatchClick: eventHijackSwatchClick
32650  },
32651  addListEventListeners: addListEventListeners
32652};
32653
32654/***/ }),
32655
32656/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/detail.js":
32657/*!********************************************************************************************************!*\
32658  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/detail.js ***!
32659  \********************************************************************************************************/
32660/*! no static exports found */
32661/***/ (function(module, exports, __webpack_require__) {
32662
32663"use strict";
32664
32665
32666var productBase = __webpack_require__(/*! core/product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js");
32667
32668var toastHelpers = __webpack_require__(/*! core/components/toast */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toast.js");
32669
32670var wishlistHelpers = __webpack_require__(/*! core/wishlist/components/helpers */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
32671
32672var shareUrlHelpTimeout = 2000;
32673
32674var unsetSelectedProductsState = function unsetSelectedProductsState() {
32675  $('.wishlist-details-nav').addClass('open');
32676  $('.wishlist-details-deselect').addClass('d-none');
32677  $('.wishlist-details-public-toggle').removeClass('d-none').addClass('show');
32678  $('#wishlistOverlayDetailSelected').trigger('close');
32679  $('.wishlist-details').find('.wishlist-card-product').trigger('unselect');
32680};
32681
32682var toggleSelectedProductsState = function toggleSelectedProductsState() {
32683  if ($('.wishlist-card-product[data-selected="true"]').length) {
32684    $('.wishlist-details-nav').removeClass('open');
32685    $('.wishlist-details-deselect').removeClass('d-none');
32686    $('.wishlist-details-public-toggle').removeClass('show').addClass('d-none');
32687
32688    if ($('.wishlist-card-product.product-type-master[data-selected="true"]').length || $('.wishlist-card-product.unavailable[data-selected="true"]').length) {
32689      $('.wishlist-overlay-detail-selected-add').attr('disabled', true);
32690    } else {
32691      $('.wishlist-overlay-detail-selected-add').attr('disabled', false);
32692    }
32693
32694    $('#wishlistOverlayDetailSelected').trigger('open');
32695  } else {
32696    unsetSelectedProductsState();
32697  }
32698};
32699
32700var eventKeyPressEscapeWindow = function eventKeyPressEscapeWindow(e) {
32701  if (e.key && e.key === 'Escape') {
32702    unsetSelectedProductsState();
32703  }
32704};
32705
32706var eventUpdateProducts = function eventUpdateProducts(e, $products) {
32707  $.spinner().start();
32708  unsetSelectedProductsState();
32709  $('.wishlist-details').find('.wishlist-details-products').replaceWith($products);
32710  productBase.enableQuantitySteppers();
32711  $.spinner().stop();
32712};
32713
32714var eventClickSelectAll = function eventClickSelectAll(e) {
32715  e.preventDefault();
32716  $('.wishlist-details').find('.wishlist-card-product').trigger('select');
32717  toggleSelectedProductsState();
32718};
32719
32720var eventClickDeselect = function eventClickDeselect(e) {
32721  e.preventDefault();
32722  unsetSelectedProductsState();
32723};
32724
32725var eventClickShare = function eventClickShare(e) {
32726  e.preventDefault();
32727};
32728
32729var eventClickAddToCart = function eventClickAddToCart(e) {
32730  e.preventDefault();
32731  var $this = $(this);
32732  var $products = $this.parents('.wishlist-details').find('.wishlist-card-product:not(.unavailable):not(.product-type-master)');
32733  var addToCartUrl = $this.data().url;
32734  var pidsObj = [];
32735  $products.each(function () {
32736    var $product = $(this);
32737
32738    if ($product.hasClass('product-type-set')) {
32739      var toastMessage = $product.data('message');
32740      toastHelpers.methods.show('danger', toastMessage, true);
32741    } else {
32742      pidsObj.push({
32743        pid: $product.data().pid,
32744        qty: $product.find('.wishlist-card-product-quantity').val(),
32745        options: $product.find('.wishlist-card-product-add').attr('data-options')
32746      });
32747    }
32748  });
32749
32750  if (pidsObj.length) {
32751    $.spinner().start();
32752    pidsObj = JSON.stringify(pidsObj);
32753    $.ajax({
32754      url: addToCartUrl,
32755      method: 'POST',
32756      data: {
32757        pidsObj: pidsObj
32758      },
32759      success: function success(data) {
32760        productBase.methods.handlePostCartAdd(data);
32761        $('body').trigger('product:afterAddToCart', data);
32762        productBase.methods.miniCartReportingUrl(data.reportingURL, data.error);
32763        $.spinner().stop();
32764      },
32765      error: function error() {
32766        $.spinner().stop();
32767      }
32768    });
32769  }
32770};
32771
32772var eventShowMore = function eventShowMore(e) {
32773  e.stopPropagation();
32774  e.preventDefault();
32775  var showMoreUrl = $(this).data('url');
32776  $.spinner().start();
32777  $.ajax({
32778    url: showMoreUrl,
32779    data: {
32780      selectedUrl: showMoreUrl
32781    },
32782    method: 'GET',
32783    success: function success(response) {
32784      var $updatedProducts = $(response).find('.wishlist-details-products');
32785      $('.wishlist-details-products').replaceWith($updatedProducts);
32786      window.history.replaceState(null, '', showMoreUrl);
32787      $.spinner().stop();
32788    },
32789    error: function error() {
32790      $.spinner().stop();
32791    }
32792  });
32793};
32794
32795var addDetailEventListeners = function addDetailEventListeners() {
32796  if ($('.wishlist-details').length) {
32797    $(window).on('keydown', module.exports.methods.eventKeyPressEscapeWindow);
32798    $('.wishlist-details').on('updateProducts', module.exports.methods.eventUpdateProducts).on('afterSelectProduct', module.exports.methods.toggleSelectedProductsState).on('unselectAllProducts', module.exports.methods.unsetSelectedProductsState).on('click', '.wishlist-details-select-all', module.exports.methods.eventClickSelectAll).on('click', '.wishlist-details-share', module.exports.methods.eventClickShare).on('click', '.wishlist-details-add-cart', module.exports.methods.eventClickAddToCart).on('click', '.wishlist-details-deselect', module.exports.methods.eventClickDeselect).on('click', '.show-more-wishlist-products .btn', module.exports.methods.eventShowMore);
32799  }
32800};
32801/**
32802 * Share List Modal
32803 */
32804
32805
32806var shareListModalEventSubmitCopy = function shareListModalEventSubmitCopy(e) {
32807  e.preventDefault();
32808  var $shareUrlHelp = $('#wishlistExperienceShareUrlHelp');
32809  var copyText = document.getElementById('wishlistExperienceShareUrl');
32810  copyText.select();
32811  copyText.setSelectionRange(0, 99999);
32812  navigator.clipboard.writeText(copyText.value);
32813  $shareUrlHelp.removeClass('d-none');
32814  setTimeout(function () {
32815    $shareUrlHelp.addClass('d-none');
32816  }, shareUrlHelpTimeout);
32817};
32818
32819var shareListModalEventClose = function shareListModalEventClose() {
32820  //reset the forms
32821  var $shareUrl = $('#wishlistExperienceShareUrl');
32822  $shareUrl.val($shareUrl.data().url);
32823  $('#wishlistExperienceShareEmail').val('');
32824};
32825
32826var addShareListModalEventListeners = function addShareListModalEventListeners() {
32827  if ($('.wishlist-details').length) {
32828    $('#wishlistModalShareList').on('submit', '.copy', module.exports.methods.shareListModalEventSubmitCopy).on('hidden.bs.modal', module.exports.methods.shareListModalEventClose);
32829  }
32830};
32831/**
32832 * Delete Products Modal
32833 */
32834
32835
32836var deleteProductsModalEventClose = function deleteProductsModalEventClose(e) {
32837  $(this).data({
32838    listId: '',
32839    listItemIds: ''
32840  });
32841};
32842
32843var deleteProductsModalEventClickDelete = function deleteProductsModalEventClickDelete(e) {
32844  e.preventDefault();
32845  var $modal = $('#wishlistModalDeleteProducts');
32846  var detailPageSize = wishlistHelpers.getUrlParam('sz') ? Number(wishlistHelpers.getUrlParam('sz')) : null;
32847  $.spinner().start();
32848  $.ajax({
32849    url: $modal.data().url,
32850    method: 'POST',
32851    dataType: 'json',
32852    data: {
32853      listId: $modal.data().listId,
32854      listItemIds: JSON.stringify($modal.data().listItemIds),
32855      detailPageSize: detailPageSize
32856    },
32857    success: function success(data) {
32858      var $productsHtml = $(data.renderedTemplate);
32859
32860      if (!data.error && $productsHtml.length) {
32861        $('.wishlist-details').trigger('updateProducts', $productsHtml);
32862        $('.wishlist-overlay-detail-selected').trigger('close');
32863      } else {
32864        toastHelpers.methods.show('danger', data.message, true);
32865        $.spinner().stop();
32866      }
32867
32868      $modal.modal('hide');
32869    },
32870    error: function error() {
32871      $modal.modal('hide');
32872      $.spinner().stop();
32873    }
32874  });
32875};
32876
32877var addDeleteProductsModalEventListeners = function addDeleteProductsModalEventListeners() {
32878  if ($('.wishlist-details').length) {
32879    $('#wishlistModalDeleteProducts').on('click', '.wishlist-modal-delete-list-delete-button', module.exports.methods.deleteProductsModalEventClickDelete).on('hidden.bs.modal', module.exports.methods.deleteProductsModalEventClose);
32880  }
32881};
32882/**
32883 * Overlay Detail Selected
32884 */
32885
32886
32887var closeOverlay = function closeOverlay() {
32888  $('.wishlist-overlay-detail-selected').attr('tabindex', -1).attr('aria-hidden', 'true').removeClass('open');
32889};
32890
32891var overlayDeselectAll = function overlayDeselectAll() {
32892  $('.wishlist-details').trigger('unselectAllProducts');
32893};
32894
32895var overlayGetSelectedListAndProducts = function overlayGetSelectedListAndProducts() {
32896  var $productListDetail = $('.wishlist-details');
32897  var $products = $productListDetail.find('.wishlist-card-product[data-selected="true"]');
32898  var listId = $productListDetail.data().listId;
32899  var pids = [];
32900  var listItemIds = [];
32901  var pidsObj = [];
32902  $products.each(function () {
32903    var $product = $(this);
32904    pids.push($product.data().pid);
32905    listItemIds.push($product.data().listItemId);
32906    pidsObj.push({
32907      pid: $product.data().pid,
32908      qty: $product.find('.wishlist-card-product-quantity').val(),
32909      options: $product.find('.wishlist-card-product-add').attr('data-options')
32910    });
32911  });
32912  return {
32913    listId: listId,
32914    listItemIds: listItemIds,
32915    pids: pids,
32916    pidsObj: pidsObj
32917  };
32918};
32919
32920var eventOpenOverlay = function eventOpenOverlay() {
32921  $(this).attr('tabindex', 0).attr('aria-hidden', 'false').addClass('open');
32922};
32923
32924var eventOverlayClickAddToCart = function eventOverlayClickAddToCart(e) {
32925  e.preventDefault();
32926  var selectedListAndProducts = module.exports.methods.overlayGetSelectedListAndProducts();
32927  var addToCartUrl = $(this).data().url;
32928
32929  if (selectedListAndProducts.pidsObj.length) {
32930    $.spinner().start();
32931    selectedListAndProducts.pidsObj = JSON.stringify(selectedListAndProducts.pidsObj);
32932    $.ajax({
32933      url: addToCartUrl,
32934      method: 'POST',
32935      data: {
32936        pidsObj: selectedListAndProducts.pidsObj
32937      },
32938      success: function success(data) {
32939        productBase.methods.handlePostCartAdd(data);
32940        $('body').trigger('product:afterAddToCart', data);
32941        module.exports.methods.overlayDeselectAll();
32942        productBase.methods.miniCartReportingUrl(data.reportingURL, data.error);
32943        $.spinner().stop();
32944      },
32945      error: function error() {
32946        $.spinner().stop();
32947      }
32948    });
32949  }
32950};
32951
32952var eventOverlayClickShare = function eventOverlayClickShare(e) {
32953  e.preventDefault();
32954};
32955
32956var eventOverlayClickMove = function eventOverlayClickMove(e) {
32957  e.preventDefault();
32958  var selectedListAndProducts = module.exports.methods.overlayGetSelectedListAndProducts();
32959  $('#wishlistModalShowLists').data('listId', selectedListAndProducts.listId).data('listItemIds', selectedListAndProducts.listItemIds).data('multiSelect', false).data('action', 'move').modal('show');
32960  module.exports.methods.overlayDeselectAll();
32961};
32962
32963var eventOverlayClickRemove = function eventOverlayClickRemove(e) {
32964  e.preventDefault();
32965  var selectedListAndProducts = module.exports.methods.overlayGetSelectedListAndProducts();
32966  $('#wishlistModalDeleteProducts').data('listId', selectedListAndProducts.listId).data('listItemIds', selectedListAndProducts.listItemIds).modal('show');
32967};
32968
32969var addOverlayDetailSelectedEventListeners = function addOverlayDetailSelectedEventListeners() {
32970  if ($('.wishlist-details').length) {
32971    $('.wishlist-overlay-detail-selected').on('open', module.exports.methods.eventOpenOverlay).on('close', module.exports.methods.closeOverlay).on('click', '.wishlist-overlay-detail-selected-close', module.exports.methods.overlayDeselectAll).on('click', '.wishlist-overlay-detail-selected-add', module.exports.methods.eventOverlayClickAddToCart).on('click', '.wishlist-overlay-detail-selected-share', module.exports.methods.eventOverlayClickShare).on('click', '.wishlist-overlay-detail-selected-move', module.exports.methods.eventOverlayClickMove).on('click', '.wishlist-overlay-detail-selected-remove', module.exports.methods.eventOverlayClickRemove);
32972  }
32973};
32974/**
32975 * Card Product
32976 */
32977
32978
32979var cardProductEventSelect = function cardProductEventSelect(e) {
32980  $(e.target).attr('data-selected', true).data('selected', true).find('.wishlist-card-product-toggle').addClass('selected');
32981};
32982
32983var cardProductEventUnselect = function cardProductEventUnselect(e) {
32984  $(e.target).attr('data-selected', false).data('selected', false).find('.wishlist-card-product-toggle').removeClass('selected');
32985};
32986
32987var cardProductEventChangeQuantity = function cardProductEventChangeQuantity(e) {
32988  var $this = $(this);
32989  var $cardProduct = $this.parents('.wishlist-card-product');
32990  $.ajax({
32991    url: $cardProduct.data().url,
32992    method: 'POST',
32993    data: {
32994      quantity: $this.val(),
32995      wishlistId: $cardProduct.data().listId,
32996      productListItemId: $cardProduct.data().listItemId
32997    },
32998    dataType: 'json',
32999    success: function success(data) {
33000      if (data.error) {
33001        toastHelpers.methods.show('danger', data.message, true);
33002      }
33003    }
33004  });
33005};
33006
33007var cardProductEventClickAddCart = function cardProductEventClickAddCart(e) {
33008  e.preventDefault();
33009  $.spinner().start();
33010  var $this = $(this);
33011  var $cardProduct = $this.parents('.wishlist-card-product');
33012  var addToCartUrl = $this.data().url;
33013  var pid = $cardProduct.data('pid');
33014  var quantity = $cardProduct.find('.wishlist-card-product-quantity').val();
33015  var options = JSON.stringify($this.data().options);
33016  $.ajax({
33017    url: addToCartUrl,
33018    method: 'POST',
33019    data: {
33020      pid: pid,
33021      quantity: quantity,
33022      options: options
33023    },
33024    dataType: 'json',
33025    success: function success(data) {
33026      productBase.methods.handlePostCartAdd(data);
33027      $('body').trigger('product:afterAddToCart', data);
33028      productBase.methods.miniCartReportingUrl(data.reportingURL, data.error);
33029      $.spinner().stop();
33030    },
33031    error: function error() {
33032      $.spinner().stop();
33033    }
33034  });
33035};
33036
33037var cardProductEventClickRemove = function cardProductEventClickRemove(e) {
33038  e.preventDefault();
33039  $('#wishlistModalDeleteProduct').modal('show', $(this));
33040};
33041
33042var cardProductEventClickCheckbox = function cardProductEventClickCheckbox(e) {
33043  e.preventDefault();
33044  var $this = $(this);
33045  var $cardProduct = $this.parents('.wishlist-card-product');
33046
33047  if ($cardProduct.data().selected === true) {
33048    $this.removeClass('selected');
33049    $cardProduct.attr('data-selected', false).data('selected', false);
33050  } else {
33051    $this.addClass('selected');
33052    $cardProduct.attr('data-selected', true).data('selected', true);
33053  }
33054
33055  $('.wishlist-details').trigger('afterSelectProduct');
33056};
33057
33058var addCardProductEventListeners = function addCardProductEventListeners() {
33059  if ($('.wishlist-details').length) {
33060    $('body').on('select', '.wishlist-card-product', module.exports.methods.cardProductEventSelect).on('unselect', '.wishlist-card-product', module.exports.methods.cardProductEventUnselect).on('click', '.wishlist-card-product-toggle', module.exports.methods.cardProductEventClickCheckbox).on('change', '.wishlist-card-product-quantity', module.exports.methods.cardProductEventChangeQuantity).on('click', '.wishlist-card-product-add', module.exports.methods.cardProductEventClickAddCart).on('click', '.wishlist-card-product-remove', module.exports.methods.cardProductEventClickRemove);
33061  }
33062};
33063/**
33064 * Delete Product Modal
33065 */
33066
33067
33068var deleteProductModalEventShow = function deleteProductModalEventShow(e) {
33069  $(this).attr({
33070    'data-list-id': e.relatedTarget.data().listId,
33071    'data-list-item-id': e.relatedTarget.data().listItemId
33072  }).data({
33073    listId: e.relatedTarget.data().listId,
33074    listItemId: e.relatedTarget.data().listItemId
33075  });
33076};
33077
33078var deleteProductModalEventClose = function deleteProductModalEventClose(e) {
33079  $(this).attr({
33080    'data-list-id': '',
33081    'data-list-item-id': ''
33082  }).data({
33083    listId: '',
33084    listItemId: ''
33085  });
33086};
33087
33088var deleteProductModalEventClickDelete = function deleteProductModalEventClickDelete(e) {
33089  e.preventDefault();
33090  var $modal = $('#wishlistModalDeleteProduct');
33091  var detailPageSize = wishlistHelper
33091s.getUrlParam('sz') ? Number(wishlistHelpers.getUrlParam('sz')) : null;
33092  $.spinner().start();
33093  $.ajax({
33094    url: $modal.data().url,
33095    method: 'POST',
33096    dataType: 'json',
33097    data: {
33098      listId: $modal.data().listId,
33099      listItemId: $modal.data().listItemId,
33100      detailPageSize: detailPageSize
33101    },
33102    success: function success(data) {
33103      var $productsHtml = $(data.renderedTemplate);
33104
33105      if (!data.error && $productsHtml.length) {
33106        $('.wishlist-details').trigger('updateProducts', $productsHtml);
33107      } else {
33108        toastHelpers.methods.show('danger', data.message, true);
33109        $.spinner().stop();
33110      }
33111
33112      $modal.modal('hide');
33113    },
33114    error: function error() {
33115      $modal.modal('hide');
33116      $.spinner().stop();
33117    }
33118  });
33119};
33120
33121var addModalDeleteProductEventListeners = function addModalDeleteProductEventListeners() {
33122  if ($('.wishlist-details').length) {
33123    $('#wishlistModalDeleteProduct').on('click', '.wishlist-modal-delete-product-delete-btn', module.exports.methods.deleteProductModalEventClickDelete).on('show.bs.modal', module.exports.methods.deleteProductModalEventShow).on('hidden.bs.modal', module.exports.methods.deleteProductModalEventClose);
33124  }
33125};
33126/**
33127 * Quickview Modal
33128 */
33129
33130
33131var quickviewModalEventClickUpdate = function quickviewModalEventClickUpdate(e) {
33132  e.preventDefault(e);
33133  var $this = $(this);
33134  var $modal = $('#quickViewModal');
33135  var detailPageSize = wishlistHelpers.getUrlParam('sz') ? Number(wishlistHelpers.getUrlParam('sz')) : null;
33136  var form = {
33137    pid: $this.data().pid,
33138    pidUpdated: $this.data().pidUpdated,
33139    uuid: $this.data().uuid,
33140    listId: $('.wishlist-details').data().listId,
33141    selectedOptionValueIds: productBase.methods.getOptions($modal),
33142    detailPageSize: detailPageSize
33143  };
33144  $modal.find('.modal-content').spinner().start();
33145  $.ajax({
33146    url: $this.data().url,
33147    type: 'POST',
33148    data: form,
33149    dataType: 'json',
33150    success: function success(data) {
33151      var $productsHtml = $(data.renderedTemplate);
33152
33153      if (!data.error && $productsHtml.length) {
33154        $('.wishlist-details').trigger('updateProducts', $productsHtml);
33155        wishlistHelpers.updateUncachedData({
33156          actionType: 'change',
33157          pid: form.pid,
33158          pidUpdated: form.pidUpdated
33159        });
33160      } else {
33161        toastHelpers.methods.show('danger', data.message, true);
33162        $modal.find('.modal-content').spinner().stop();
33163      }
33164
33165      $modal.modal('hide');
33166    },
33167    error: function error() {
33168      $modal.modal('hide');
33169      $modal.find('.modal-content').spinner().stop();
33170    }
33171  });
33172};
33173
33174var quickviewModalEventUpdateFromQuickView = function quickviewModalEventUpdateFromQuickView(e, payload) {
33175  var $updateButton = payload.container.closest('.modal').find('.btn-update-wishlist, .btn-add-wishlist');
33176
33177  if (!$updateButton.length) {
33178    return;
33179  }
33180
33181  if (payload.data.product.masterId) {
33182    $updateButton.data('pid-updated', payload.data.product.id).attr('data-pid-updated', payload.data.product.id).removeAttr('disabled');
33183  } else {
33184    $updateButton.data('pid-updated', payload.data.product.id).attr('data-pid-updated', payload.data.product.id);
33185  }
33186};
33187
33188var addQuickviewModalventListeners = function addQuickviewModalventListeners() {
33189  if ($('.wishlist-details').length) {
33190    $('body').on('click', '.btn-update-wishlist', module.exports.methods.quickviewModalEventClickUpdate);
33191  }
33192
33193  $('body').on('product:afterAttributeSelect', module.exports.methods.quickviewModalEventUpdateFromQuickView);
33194};
33195/**
33196 * Detail Notes
33197 */
33198
33199
33200var addDetailNotesEventListeners = function addDetailNotesEventListeners() {
33201  if ($('.wishlist-details').length) {
33202    $('#wishlistDetailNotes').data('currentNoteText', $('#wishlistDetailNotesText').val());
33203    $('#wishlistDetailNotes').on('click', '.wishlist-detail-notes-toggle', function (event) {
33204      event.preventDefault();
33205      $('.wishlist-detail-notes-text-show').add($('.wishlist-detail-notes-text-hide')).toggleClass('d-none');
33206    }).on('blur', '#wishlistDetailNotesText', function () {
33207      var $detailNotes = $('#wishlistDetailNotes');
33208      var $detailNotesTextarea = $detailNotes.find('#wishlistDetailNotesText');
33209      var currentNoteText = $detailNotes.data('currentNoteText').trim();
33210      var updatedNoteText = $detailNotesTextarea.val().trim();
33211
33212      if (updatedNoteText !== currentNoteText) {
33213        $detailNotes.data('currentNoteText', updatedNoteText);
33214        $.ajax({
33215          url: $detailNotes.data().url,
33216          method: 'POST',
33217          dataType: 'json',
33218          data: {
33219            wishlistId: $detailNotes.data().wishlistId,
33220            productListDescription: updatedNoteText
33221          },
33222          success: function success(data) {
33223            if (data.error) {
33224              toastHelpers.methods.show('danger', data.message, true);
33225            }
33226          }
33227        });
33228      }
33229    });
33230  }
33231};
33232
33233module.exports = {
33234  methods: {
33235    unsetSelectedProductsState: unsetSelectedProductsState,
33236    toggleSelectedProductsState: toggleSelectedProductsState,
33237    eventKeyPressEscapeWindow: eventKeyPressEscapeWindow,
33238    eventUpdateProducts: eventUpdateProducts,
33239    eventClickSelectAll: eventClickSelectAll,
33240    eventClickDeselect: eventClickDeselect,
33241    eventClickShare: eventClickShare,
33242    eventClickAddToCart: eventClickAddToCart,
33243    eventShowMore: eventShowMore,
33244    shareListModalEventSubmitCopy: shareListModalEventSubmitCopy,
33245    shareListModalEventClose: shareListModalEventClose,
33246    deleteProductsModalEventClose: deleteProductsModalEventClose,
33247    deleteProductsModalEventClickDelete: deleteProductsModalEventClickDelete,
33248    closeOverlay: closeOverlay,
33249    overlayDeselectAll: overlayDeselectAll,
33250    overlayGetSelectedListAndProducts: overlayGetSelectedListAndProducts,
33251    eventOpenOverlay: eventOpenOverlay,
33252    eventOverlayClickAddToCart: eventOverlayClickAddToCart,
33253    eventOverlayClickShare: eventOverlayClickShare,
33254    eventOverlayClickMove: eventOverlayClickMove,
33255    eventOverlayClickRemove: eventOverlayClickRemove,
33256    cardProductEventSelect: cardProductEventSelect,
33257    cardProductEventUnselect: cardProductEventUnselect,
33258    cardProductEventChangeQuantity: cardProductEventChangeQuantity,
33259    cardProductEventClickAddCart: cardProductEventClickAddCart,
33260    cardProductEventClickRemove: cardProductEventClickRemove,
33261    cardProductEventClickCheckbox: cardProductEventClickCheckbox,
33262    deleteProductModalEventShow: deleteProductModalEventShow,
33263    deleteProductModalEventClose: deleteProductModalEventClose,
33264    deleteProductModalEventClickDelete: deleteProductModalEventClickDelete,
33265    quickviewModalEventClickUpdate: quickviewModalEventClickUpdate,
33266    quickviewModalEventUpdateFromQuickView: quickviewModalEventUpdateFromQuickView
33267  },
33268  addDetailEventListeners: addDetailEventListeners,
33269  addShareListModalEventListeners: addShareListModalEventListeners,
33270  addDeleteProductsModalEventListeners: addDeleteProductsModalEventListeners,
33271  addOverlayDetailSelectedEventListeners: addOverlayDetailSelectedEventListeners,
33272  addCardProductEventListeners: addCardProductEventListeners,
33273  addModalDeleteProductEventListeners: addModalDeleteProductEventListeners,
33274  addQuickviewModalventListeners: addQuickviewModalventListeners,
33275  addDetailNotesEventListeners: addDetailNotesEventListeners
33276};
33277
33278/***/ }),
33279
33280/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/landing.js":
33281/*!*********************************************************************************************************!*\
33282  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/landing.js ***!
33283  \*********************************************************************************************************/
33284/*! no static exports found */
33285/***/ (function(module, exports, __webpack_require__) {
33286
33287"use strict";
33288
33289
33290var toastHelpers = __webpack_require__(/*! core/components/toast */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/toast.js");
33291
33292var wishlistHelpers = __webpack_require__(/*! core/wishlist/components/helpers */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/helpers.js");
33293
33294var eventShowMore = function eventShowMore(e) {
33295  e.stopPropagation();
33296  e.preventDefault();
33297  var showMoreUrl = $(this).data('url');
33298  $.spinner().start();
33299  $.ajax({
33300    url: showMoreUrl,
33301    data: {
33302      selectedUrl: showMoreUrl
33303    },
33304    method: 'GET',
33305    success: function success(response) {
33306      var $updatedList = $(response).find('.list-container');
33307      $('.list-container').replaceWith($updatedList);
33308      window.history.replaceState(null, '', showMoreUrl);
33309      $.spinner().stop();
33310    },
33311    error: function error() {
33312      $.spinner().stop();
33313    }
33314  });
33315};
33316
33317var updateModalCreateListNames = function updateModalCreateListNames() {
33318  if ($('.wishlist-landing').length) {
33319    var listNames = $('.wishlist-landing .lists').data('listNames');
33320    var listNamesArray = [];
33321
33322    if (listNames) {
33323      listNamesArray = listNames.split('|');
33324    }
33325
33326    $('#wishlistModalCreateList, #wishlistModalEditList').data('listNames', listNamesArray);
33327  }
33328};
33329
33330var eventUpdateLists = function eventUpdateLists(e, data) {
33331  var $landing = $('.wishlist-landing');
33332  $.spinner().start();
33333  $landing.find('.lists').replaceWith(data.$lists);
33334
33335  if (data.$lists.data('listNames') === '') {
33336    $landing.find('.lists').addClass('d-none');
33337    $landing.find('.wishlist-message-empty').removeClass('d-none');
33338  } else {
33339    $landing.find('.lists').removeClass('d-none');
33340    $landing.find('.wishlist-message-empty').addClass('d-none');
33341  }
33342
33343  module.exports.updateModalCreateListNames();
33344  $.spinner().stop();
33345};
33346
33347var eventOpenEditList = function eventOpenEditList(e, data) {
33348  $('#wishlistModalEditList').attr({
33349    'data-wishlist-id': data.wishlistId,
33350    'data-wishlist-name': data.wishlistName
33351  }).data({
33352    wishlistId: data.wishlistId,
33353    wishlistName: data.wishlistName
33354  }).modal('show');
33355};
33356
33357var eventOpenDeleteList = function eventOpenDeleteList(e, wishlistId) {
33358  $('#wishlistModalDeleteList').attr('data-wishlist-id', wishlistId).data('wishlistId', wishlistId).modal('show');
33359};
33360
33361var eventClickToggle = function eventClickToggle(e) {
33362  $('.list-container .notes').toggleClass('show');
33363  $('.wishlist-landing-notes-text-show, .wishlist-landing-notes-text-hide').toggleClass('d-none');
33364};
33365
33366var addLandingEventListeners = function addLandingEventListeners() {
33367  if ($('.wishlist-landing').length) {
33368    $('.wishlist-landing').on('click', '.show-more-wishlists .btn', module.exports.methods.eventShowMore).on('openDeleteList', module.exports.methods.eventOpenDeleteList).on('openEditList', module.exports.methods.eventOpenEditList).on('updateLists', module.exports.methods.eventUpdateLists).on('click', '.wishlist-landing-notes-toggle', module.exports.methods.eventClickToggle).on('click', '.js-wishlist-card-list-edit-modal', function (event) {
33369      event.preventDefault();
33370      $('.wishlist-landing').trigger('openEditList', $(event.target).data());
33371    });
33372  }
33373};
33374
33375function createSearchResultsModal() {
33376  if ($('#wishlistSearchResultsModal').length !== 0) {
33377    $('#wishlistSearchResultsModal').remove();
33378  }
33379
33380  var modalTemplate = "\n        <div id=\"wishlistSearchResultsModal\" class=\"modal fade wishlist-search-results-modal\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"wishlistSearchResultsModal\">\n            <div class=\"modal-dialog modal-scrollbody\" role=\"document\">\n                <div class=\"modal-content\">\n                    <div class=\"modal-header\">\n                        <h5 class=\"modal-title\"></h5>\n                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">
33380\n                            <span aria-hidden=\"true\">&times;</span>\n                        </button>\n                    </div>\n                    <div class=\"modal-body\">\n                        <ul class=\"wishlist-search-results\"></ul>\n                    </div>\n                </div>\n            </div>\n        </div>\n    ";
33381  $('body').append(modalTemplate);
33382}
33383
33384var searchWishlists = function searchWishlists() {
33385  if ($('.wishlist-landing').length) {
33386    $('body').on('click', '#searchWishlistBtn', function (event) {
33387      event.preventDefault();
33388      var $target = $(event.target);
33389      var url = $target.data('url');
33390      var $emailInput = $('#searchWishlistEmail');
33391      var emailValue = $emailInput.val();
33392      var emailPattern = $emailInput.attr('pattern'); // form validation
33393
33394      $('#searchForLists').find('.is-invalid').removeClass('is-invalid');
33395
33396      if (!emailValue) {
33397        $emailInput.addClass('is-invalid').next('.invalid-feedback').text($emailInput.data('missing-msg'));
33398        return false;
33399      } else if (!RegExp(emailPattern).test(emailValue)) {
33400        $emailInput.addClass('is-invalid').next('.invalid-feedback').text($emailInput.data('pattern-mismatch-msg'));
33401        return false;
33402      }
33403
33404      $.ajax({
33405        url: url,
33406        type: 'POST',
33407        dataType: 'json',
33408        data: $('#searchForLists').serialize(),
33409        success: function success(data) {
33410          if (!data.error) {
33411            // set up modal
33412            module.exports.methods.createSearchResultsModal();
33413            var $resultsModal = $('#wishlistSearchResultsModal');
33414            $resultsModal.find('.modal-title').text(data.message);
33415            $resultsModal.modal('show'); // add search results to modal
33416
33417            var $resultsList = $resultsModal.find('.wishlist-search-results');
33418
33419            if (data.results.hits.length > 0) {
33420              data.results.hits.forEach(function (hit) {
33421                $resultsList.append("\n                                    <li class=\"wishlist-search-results-item\">\n                                        <a class=\"wishlist-search-results-link\" href=\"".concat(hit.url, "\">\n                                            <span class=\"wishlist-search-results-name\">").concat(hit.name, "</span>\n                                            <span class=\"wishlist-search-results-count\">(").concat(hit.count, " ").concat(hit.countLabel, ")</span>\n                                        </a>\n                                    </li>\n                                "));
33422              });
33423            } else {
33424              $resultsList.replaceWith("\n                                <p class=\"wishlist-no-results\">".concat($target.data('no-results'), "</p>\n                            "));
33425            }
33426          } else {
33427            toastHelpers.methods.show('danger', data.message, true);
33428          }
33429
33430          $('[data-toggle="popover"].interactive').popover('hide');
33431        }
33432      });
33433      return true;
33434    });
33435  }
33436};
33437/**
33438 * Create List Modal
33439 */
33440
33441
33442var createListModalEventClose = function createListModalEventClose(e) {
33443  $('#wishlistModalCreateList #newProductListName').val('').removeClass('is-invalid').next('.invalid-feedback').text('').removeClass('d-block');
33444  $('.wishlist-create-list-form .create').removeAttr('disabled');
33445};
33446
33447var createListModalEventKeyupName = function createListModalEventKeyupName(e) {
33448  var $this = $(this);
33449  var $invalidFeedback = $this.next('.invalid-feedback');
33450  var $submitButton = $('.wishlist-create-list-form .create');
33451  var name = $this.val().replace(/[^A-Za-z0-9]/g, '').toLowerCase();
33452  var listNames = $('#wishlistModalCreateList').data().listNames;
33453
33454  if (listNames && listNames.indexOf(name) !== -1) {
33455    $submitButton.attr('disabled', 'disabled');
33456    $invalidFeedback.text($this.data().errorDuplicateName).addClass('d-block');
33457    $this.addClass('is-invalid');
33458  } else {
33459    $submitButton.removeAttr('disabled');
33460    $invalidFeedback.text('').removeClass('d-block');
33461    $this.removeClass('is-invalid');
33462  }
33463};
33464
33465var createListModalEventSubmitCreate = function createListModalEventSubmitCreate(e) {
33466  e.preventDefault();
33467  var $this = $(this);
33468  var $modal = $('#wishlistModalCreateList');
33469  var $productListNameElement = $this.find('#newProductListName');
33470  var wishlistName = $productListNameElement.val();
33471  var landingPageSize = wishlistHelpers.getUrlParam('sz') ? Number(wishlistHelpers.getUrlParam('sz')) : null;
33472
33473  if (wishlistName && wishlistName !== '') {
33474    $productListNameElement.removeClass('is-invalid');
33475    $.spinner().start();
33476    $.ajax({
33477      url: $this.data().url,
33478      method: 'POST',
33479      dataType: 'json',
33480      data: {
33481        name: wishlistName,
33482        view: 'landing',
33483        landingPageSize: landingPageSize
33484      },
33485      success: function success(data) {
33486        var $listsHtml = $(data.renderedTemplate).find('.lists');
33487
33488        if ($listsHtml.length && !data.error) {
33489          $('.wishlist-landing').trigger('updateLists', {
33490            $lists: $listsHtml
33491          });
33492        } else {
33493          toastHelpers.methods.show('danger', data.message, true);
33494          $.spinner().stop();
33495        }
33496
33497        $modal.modal('hide');
33498        $productListNameElement.val('');
33499      },
33500      error: function error() {
33501        $modal.modal('hide');
33502        $productListNameElement.val('');
33503        $.spinner().stop();
33504      }
33505    });
33506    $('#wishlistModalCreateList').modal('hide');
33507  } else {
33508    $productListNameElement.addClass('is-invalid');
33509  }
33510};
33511
33512var addCreateListModalEventListeners = function addCreateListModalEventListeners() {
33513  if ($('.wishlist-landing').length) {
33514    $('#wishlistModalCreateList').on('submit', '.wishlist-create-list-form', module.exports.methods.createListModalEventSubmitCreate).on('keyup', '#newProductListName', module.exports.methods.createListModalEventKeyupName).on('hidden.bs.modal', module.exports.methods.createListModalEventClose);
33515  }
33516};
33517/**
33518 * Edit List Modal
33519 */
33520
33521
33522var editListModalEventShow = function editListModalEventShow(e) {
33523  var $this = $(this);
33524  $this.find('#editProductListName').val($this.data().wishlistName);
33525};
33526
33527var editListModalEventClose = function editListModalEventClose(e) {
33528  $(this).removeAttr('data-wishlist-id').removeAttr('data-wishlist-name').removeData('wishlistId').removeData('wishlistName').find('#editProductListName').val('&nbsp;
33528').removeClass('is-invalid').next('.invalid-feedback').text('').removeClass('d-block');
33529  $('.wishlist-edit-list-form .save').removeAttr('disabled');
33530};
33531
33532var editListModalEventKeyupName = function editListModalEventKeyupName(e) {
33533  var $this = $(this);
33534  var $invalidFeedback = $this.next('.invalid-feedback');
33535  var $submitButton = $('.wishlist-edit-list-form .save');
33536  var nameOriginal = $('#wishlistModalEditList').data('wishlistName').replace(/[^A-Za-z0-9]/g, '').toLowerCase();
33537  var nameNew = $this.val().replace(/[^A-Za-z0-9]/g, '').toLowerCase();
33538
33539  if (nameOriginal !== nameNew && $('#wishlistModalEditList').data().listNames.indexOf(nameNew) !== -1) {
33540    $submitButton.attr('disabled', 'disabled');
33541    $invalidFeedback.text($this.data().errorDuplicateName).addClass('d-block');
33542    $this.addClass('is-invalid');
33543  } else {
33544    $submitButton.removeAttr('disabled');
33545    $invalidFeedback.text('').removeClass('d-block');
33546    $this.removeClass('is-invalid');
33547  }
33548};
33549
33550var editListModalEventSubmitForm = function editListModalEventSubmitForm(e) {
33551  e.preventDefault();
33552  var $modal = $('#wishlistModalEditList');
33553  var landingPageSize = wishlistHelpers.getUrlParam('sz') ? Number(wishlistHelpers.getUrlParam('sz')) : null;
33554  $modal.find('.modal-content').spinner().start();
33555  $.ajax({
33556    url: $modal.data().url,
33557    method: 'POST',
33558    dataType: 'json',
33559    data: {
33560      wishlistId: $modal.data().wishlistId,
33561      wishlistName: $('#editProductListName').val(),
33562      landingPageSize: landingPageSize
33563    },
33564    success: function success(data) {
33565      var $listsHtml = $(data.renderedTemplate).find('.lists');
33566
33567      if ($listsHtml.length && !data.error) {
33568        $('.wishlist-landing').trigger('updateLists', {
33569          $lists: $listsHtml
33570        });
33571      } else {
33572        toastHelpers.methods.show('danger', data.message, true);
33573        $modal.find('.modal-content').spinner().stop();
33574      }
33575
33576      $modal.modal('hide');
33577    },
33578    error: function error() {
33579      $modal.modal('hide');
33580      $modal.find('.modal-content').spinner().stop();
33581    }
33582  });
33583};
33584
33585var editListModalEventClickDelete = function editListModalEventClickDelete(e) {
33586  e.preventDefault();
33587  var $modal = $('#wishlistModalEditList');
33588  var wishlistId = $modal.data().wishlistId;
33589  $modal.modal('hide');
33590  $('.wishlist-landing').trigger('openDeleteList', wishlistId);
33591};
33592
33593var editListModalAddEventListeners = function editListModalAddEventListeners() {
33594  if ($('.wishlist-landing').length) {
33595    $('#wishlistModalEditList').on('show.bs.modal', module.exports.methods.editListModalEventShow).on('hidden.bs.modal', module.exports.methods.editListModalEventClose).on('keyup', '#editProductListName', module.exports.methods.editListModalEventKeyupName).on('submit', '.wishlist-edit-list-form', module.exports.methods.editListModalEventSubmitForm).on('click', '.delete', module.exports.methods.editListModalEventClickDelete);
33596  }
33597};
33598/**
33599 * Delete List Modal
33600 */
33601
33602
33603var deleteListModalEventClose = function deleteListModalEventClose(e) {
33604  $(this).attr({
33605    'data-wishlist-id': ''
33606  }).data({
33607    wishlistId: ''
33608  });
33609};
33610
33611var deleteListModalEventClickDelete = function deleteListModalEventClickDelete(e) {
33612  e.preventDefault();
33613  var $modal = $('#wishlistModalDeleteList');
33614  var landingPageSize = wishlistHelpers.getUrlParam('sz') ? Number(wishlistHelpers.getUrlParam('sz')) : null;
33615  $modal.find('.modal-content').spinner().start();
33616  $.ajax({
33617    url: $modal.data().url,
33618    method: 'POST',
33619    dataType: 'json',
33620    data: {
33621      wishlistId: $modal.data().wishlistId,
33622      landingPageSize: landingPageSize
33623    },
33624    success: function success(data) {
33625      var $listsHtml = $(data.renderedTemplate).find('.lists');
33626
33627      if ($listsHtml.length && !data.error) {
33628        $('.wishlist-landing').trigger('updateLists', {
33629          $lists: $listsHtml
33630        });
33631      } else {
33632        toastHelpers.methods.show('danger', data.message, true);
33633        $modal.find('.modal-content').spinner().stop();
33634      }
33635
33636      $modal.modal('hide');
33637    },
33638    error: function error() {
33639      $modal.find('.modal-content').spinner().stop();
33640      $modal.modal('hide');
33641    }
33642  });
33643};
33644
33645var deleteListModalAddEventListeners = function deleteListModalAddEventListeners() {
33646  if ($('.wishlist-landing').length) {
33647    $('#wishlistModalDeleteList').on('click', '.wishlist-modal-delete-list-delete-button', module.exports.methods.deleteListModalEventClickDelete).on('hidden.bs.modal', module.exports.methods.deleteListModalEventClose);
33648  }
33649};
33650
33651module.exports = {
33652  methods: {
33653    eventShowMore: eventShowMore,
33654    eventUpdateLists: eventUpdateLists,
33655    eventOpenEditList: eventOpenEditList,
33656    eventOpenDeleteList: eventOpenDeleteList,
33657    eventClickToggle: eventClickToggle,
33658    createSearchResultsModal: createSearchResultsModal,
33659    createListModalEventClose: createListModalEventClose,
33660    createListModalEventKeyupName: createListModalEventKeyupName,
33661    createListModalEventSubmitCreate: createListModalEventSubmitCreate,
33662    editListModalEventShow: editListModalEventShow,
33663    editListModalEventClose: editListModalEventClose,
33664    editListModalEventKeyupName: editListModalEventKeyupName,
33665    editListModalEventSubmitForm: editListModalEventSubmitForm,
33666    editListModalEventClickDelete: editListModalEventClickDelete,
33667    deleteListModalEventClose: deleteListModalEventClose,
33668    deleteListModalEventClickDelete: deleteListModalEventClickDelete
33669  },
33670  addLandingEventListeners: addLandingEventListeners,
33671  updateModalCreateListNames: updateModalCreateListNames,
33672  searchWishlists: searchWishlists,
33673  addCreateListModalEventListeners: addCreateListModalEventListeners,
33674  editListModalAddEventListeners: editListModalAddEventListeners,
33675  deleteListModalAddEventListeners: deleteListModalAddEventListeners
33676};
33677
33678/***/ }),
33679
33680/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/wishlist.js":
33681/*!**********************************************************************************************************!*\
33682  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/wishlist.js ***!
33683  \**********************************************************************************************************/
33684/*! no static exports found */
33685/***/ (function(module, exports, __webpack_require__) {
33686
33687"use strict";
33688
33689
33690var modal = __webpack_require__(/*! core/components/modal */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/modal.js");
33691
33692var base = __webpack_require__(/*! core/product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js");
33693
33694var focusHelper = __webpack_require__(/*! base/components/focus */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js");
33695
33696var processInclude = __webpack_require__(/*! base/util */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js");
33697
33698var editWishlistProductModalSelector = '#editWishlistProductModal'; //TODO RVW: theres some old functions in here from the deprecated wishlist that should be removed
33699
33700/**
33701 * shows wishlist toast message
33702 * @param {string} data - data returned from the server's ajax call
33703 */
33704
33705function displayMessage(data) {
33706  $.spinner().stop();
33707  var status = data.success ? 'alert-success' : 'alert-danger';
33708
33709  if ($('.add-to-wishlist-messages').length === 0) {
33710    $('body').append('<div class="add-to-wishlist-messages toast-messages"></div>');
33711  }
33712
33713  $('.add-to-wishlist-messages').append('<div class="alert text-center add-to-wishlist-alert text-center ' + status + '">' + data.msg + '</div>');
33714  setTimeout(function () {
33715    $('.add-to-wishlist-messages').remove();
33716  }, 5000);
33717}
33718/**
33719 * update window wishlist data
33720 * @param {string} data - data returned from the server's ajax call
33721 */
33722
33723
33724function updateWishlistUncachedData(data) {
33725  if (data.success) {
33726    var wishlistPIDs = new Set(window.UncachedData.wishlistPIDs);
33727
33728    if (data.add) {
33729      wishlistPIDs.add(data.wishlistpid);
33730    } else {
33731      wishlistPIDs["delete"](data.wishlistpid);
33732    }
33733
33734    window.UncachedData.wishlistPIDs = Array.from(wishlistPIDs);
33735  }
33736}
33737/**
33738 * update clicked links attributes and text
33739 * @param {Object} specificLinks - jQuery object representing selection of wishlist links
33740 */
33741
33742
33743function updateWishlistLinkData(specificLinks) {
33744  if (!window || !window.UncachedData || !window.UncachedData.wishlistPIDs) {
33745    return;
33746  }
33747
33748  var wishlistLinks = specificLinks || $('a.wishlist');
33749
33750  if (!wishlistLinks || !wishlistLinks.length) {
33751    return;
33752  }
33753
33754  var wishlistPIDs = new Set(window.UncachedData.wishlistPIDs);
33755  wishlistLinks.each(function (_i, wishlistLink) {
33756    var $wishlistLink = $(wishlistLink);
33757    var wishlistpid = $wishlistLink.attr('data-wishlistpid');
33758
33759    if (wishlistpid) {
33760      var isInWishlist = wishlistPIDs.has(wishlistpid);
33761      $wishlistLink.attr('data-inwishlist', isInWishlist);
33762
33763      if (isInWishlist) {
33764        $wishlistLink.attr('title', $wishlistLink.attr('data-removemessage'));
33765
33766        if ($wishlistLink.data('includetext') === true) {
33767          $wishlistLink.find('span').html($wishlistLink.attr('data-removemessage'));
33768        }
33769      } else {
33770        $wishlistLink.attr('title', $wishlistLink.attr('data-addmessage'));
33771
33772        if ($wishlistLink.data('includeicon') === true) {
33773          $wishlistLink.find('span').html($wishlistLink.attr('data-addmessage'));
33774        }
33775      }
33776
33777      var icon = $wishlistLink.find('.wishlist-icon');
33778
33779      if (icon && icon.length) {
33780        $(icon).toggleClass('selected', isInWishlist);
33781      }
33782    }
33783  });
33784}
33785/**
33786 * update clicked links attributes and text
33787 * @param {string} data - data returned from the server's ajax call
33788 * @param {Object} $targetElement - the element that needs caused the need for a modal change
33789 */
33790
33791
33792function updateWishlistCartStatus(data, $targetElement) {
33793  if (data.success && data.add && $targetElement.hasClass('move')) {
33794    var itemToMove = {
33795      actionUrl: $targetElement.data('nextaction'),
33796      productID: $targetElement.data('wishlistpid'),
33797      productName: $targetElement.data('productname'),
33798      uuid: $targetElement.data('uuid')
33799    }; // listener prefills #removeProductModal
33800
33801    $('body').trigger('afterRemoveFromCart', itemToMove);
33802    setTimeout(function () {
33803      $('#removeProductModal').modal();
33804    }, 1000);
33805  }
33806}
33807/**
33808 * update display of items after a cart update (edit item in modal on cart show)
33809 */
33810
33811
33812function cartUpdate() {
33813  $('body').on('cart:update', function (e, data, uuid) {
33814    var updatedProduct = $('a.wishlist[data-uuid=' + uuid + ']');
33815
33816    if (updatedProduct.length) {
33817      //TODO RVW is this good enough or do I need to update wishlist icon name/messaging etc...
33818      updatedProduct.attr('data-wishlistpid', data.newProductId);
33819      module.exports.updateWishlistLinkData();
33820    }
33821  });
33822}
33823/**
33824 * attach onclick for wishlist icon toggle functionality
33825 */
33826
33827
33828function toggleWishlist() {
33829  $('body').on('click', 'a.wishlist', function (e) {
33830    var clicked = $(this);
33831    e.preventDefault();
33832    var url = clicked.attr('href');
33833    var wishlistpid = clicked.attr('data-wishlistpid');
33834
33835    if (!url || !wishlistpid) {
33836      return;
33837    }
33838
33839    var core = __webpack_require__(/*! core/product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js");
33840
33841    $.spinner().start();
33842    $.ajax({
33843      url: url,
33844      type: 'post',
33845      dataType: 'json',
33846      data: {
33847        wishlistpid: wishlistpid,
33848        selectedOptionValueIds: core.methods.getOptions(clicked.parents('.product-detail')),
33849        isCart: clicked.hasClass('move')
33850      },
33851      success: function success(data) {
33852        module.exports.methods.displayMessage(data);
33853        module.exports.methods.updateWishlistUncachedData(data);
33854        module.exports.updateWishlistLinkData();
33855        module.exports.methods.updateWishlistCartStatus(data, clicked);
33856      },
33857      error: function error(err) {
33858        module.exports.methods.displayMessage(err);
33859      }
33860    });
33861  });
33862}
33863/**
33864 * make link button work on wishlist social icons to create a sharing url
33865 */
33866
33867
33868function copyWishlistLink() {
33869  $('body').on('click', '.wl-social .share-link', function () {
33870    var $temp = $('<input>');
33871    $('body').append($temp);
33872    $temp.val($('#wlShareUrl').val()).select();
33873    document.execCommand('copy');
33874    $temp.remove();
33875    $('.copy-link-message').removeClass('d-none');
33876    setTimeout(function () {
33877      $('.copy-link-message').addClass('d-none');
33878    }, 3000);
33879  });
33880}
33881/**
33882 * attach on quickview:ready listener so that icon is correct in quickview on load
33883 */
33884
33885
33886function updateQuickView(e) {
33887  $('body').on('quickview:ready', function () {
33888    module.exports.updateWishlistLinkData();
33889  });
33890}
33891/**
33892 * attach on click on wishlist-show edit button to launch modal
33893 */
33894
33895
33896function viewProductViaEdit() {
33897  $('body').on('click', '.edit-add-to-wishlist .edit', function (e) {
33898    e.preventDefault();
33899    var editProductUrl = $(this).attr('href');
33900    $(e.target).trigger('editwishlistproduct:show');
33901    modal.getModalHtmlElement('editWishlistProductModal', 'quick-view-dialog');
33902    fillModalElement(editProductUrl);
33903  });
33904}
33905/**
33906 * replaces the content in the modal window for product variation to be edited.
33907 * @param {string} editProductUrl - url to be used to retrieve a new product model
33908 */
33909//TODO RVW unified in some way with quickView.js fillModalElement function?
33910
33911
33912function fillModalElement(editProductUrl) {
33913  var $modal = $(editWishlistProductModalSelector);
33914  $modal.find('.modal-body').spinner().start();
33915  $.ajax({
33916    url: editProductUrl,
33917    method: 'GET',
33918    dataType: 'json',
33919    success: function success(data) {
33920      var parsedHtml = modal.parseHtml(data.renderedTemplate);
33921      $modal.find('.modal-body').empty();
33922      $modal.find('.modal-body').html(parsedHtml.body);
33923      $modal.find('.modal-footer').html(parsedHtml.footer);
33924      $modal.find('.modal-header .close .sr-only').text(data.closeButtonText);
33925      $modal.find('.enter-message').text(data.enterDialogMessage);
33926      $modal.find(editWishlistProductModalSelector).modal('show');
33927      $('body').trigger('editwishlistproduct:ready', $(editWishlistProductModalSelector));
33928      $.spinner().stop();
33929    },
33930    error: function error() {
33931      $.spinner().stop();
33932    }
33933  });
33934}
33935/**
33936 * handles opening wishlist modal
33937 */
33938
33939
33940function focusEditWishlistProductModal() {
33941  $('body').on('shown.bs.modal', editWishlistProductModalSelector, function () {
33942    $(editWishlistProductModalSelector).siblings().attr('aria-hidden', 'true');
33943    $(editWishlistProductModalSelector + ' .close').focus();
33944  });
33945}
33946/**
33947 * handles closing wishlist modal
33948 */
33949
33950
33951function onClosingEditWishlistProductModal() {
33952  $('body').on('hidden.bs.modal', editWishlistProductModalSelector, function () {
33953    $(editWishlistProductModalSelector).remove();
33954    $('.modal-backdrop').remove();
33955    $('body').removeClass('modal-open');
33956    $(editWishlistProductModalSelector).siblings().attr('aria-hidden', 'false');
33957  });
33958}
33959/**
33960 * handles tabbing on wishlist modal
33961 */
33962
33963
33964function trapEditWishlistProductModalFocus() {
33965  $('body').on('keydown', editWishlistProductModalSelector, function (e) {
33966    var focusParams = {
33967      event: e,
33968      containerSelector: editWishlistProductModalSelector,
33969      firstElementSelector: '.close',
33970      lastElementSelector: '.btn-update-wishlist',
33971      nextToLastElementSelector: '.select-size'
33972    };
33973    focusHelper.setTabNextFocus(focusParams);
33974  });
33975}
33976/**
33977 * renders the list up to a given page number
33978 * @param {number} pageNumber - current page number
33979 * @param {boolean} spinner - if the spinner has already started
33980 * @param {string} focusElementSelector - selector of the element to focus on
33981 */
33982
33983
33984function renderNewPageOfItems(pageNumber, spinner, focusElementSelector) {
33985  var publicView = $('.wishlist-item-cards-data').data('public-view');
33986  var listUUID = $('.wishlist-item-cards-data').data('uuid');
33987  var url = $('.wishlist-item-cards-data').data('href');
33988
33989  if (spinner) {
33990    $.spinner().start();
33991  }
33992
33993  var scrollPosition = document.documentElement.scrollTop;
33994  var newPageNumber = pageNumber;
33995  $.ajax({
33996    url: url,
33997    method: 'get',
33998    data: {
33999      pageNumber: ++newPageNumber,
34000      publicView: publicView,
34001      id: listUUID
34002    }
34003  }).done(function (data) {
34004    $('.wishlist-item-cards').empty();
34005    $('body .wishlist-item-cards').parent().html(data);
34006    base.enableQuantitySteppers();
34007
34008    if (focusElementSelector) {
34009      $(focusElementSelector).focus();
34010    } else {
34011      document.documentElement.scrollTop = scrollPosition;
34012    }
34013  }).fail(function () {
34014    $('.more-wl-items').remove();
34015  });
34016  $.spinner().stop();
34017}
34018/**
34019 * handles add to cart on click for add to cart button on wishlist-show and others
34020 */
34021
34022
34023function addToCartFromWishlist() {
34024  $('body').on('click', '.add-to-cart', function () {
34025    var pid;
34026    var addToCartUrl;
34027    var pidsQty;
34028    $('body').trigger('product:beforeAddToCart', this);
34029    pid = $(this).data('pid');
34030    addToCartUrl = $(this).data('url');
34031    pidsQty = parseInt($(this).closest('.product-info').find('.quantity').val(), 10);
34032    var form = {
34033      pid: pid,
34034      quantity: pidsQty
34035    };
34036
34037    if ($(this).data('option')) {
34038      form.options = JSON.stringify($(this).data('option'));
34039    }
34040
34041    $(this).trigger('updateAddToCartFormData', form);
34042
34043    if (addToCartUrl) {
34044      $.ajax({
34045        url: addToCartUrl,
34046        method: 'POST',
34047        data: form,
34048        success: function success(data) {
34049          module.exports.methods.handlePostCartAdd(data);
34050          $('body').trigger('product:afterAddToCart', data);
34051          $.spinner().stop();
34052          base.methods.miniCartReportingUrl(data.reportingURL, data.error);
34053        },
34054        error: function error() {
34055          $.spinner().stop();
34056        }
34057      });
34058    }
34059  });
34060}
34061/**
34062 * Updates the Mini-Cart quantity value after the customer has pressed the "Add to Cart" button
34063 * @param {string} response - ajax response from clicking the add to cart button
34064 */
34065
34066
34067function handlePostCartAdd(response) {
34068  $('.minicart').trigger('count:update', response);
34069  var messageType = response.error ? 'alert-danger' : 'alert-success';
34070
34071  if ($('.add-to-cart-messages').length === 0) {
34072    $('body').append('<div class="add-to-cart-messages"></div>');
34073  }
34074
34075  $('.add-to-cart-messages').append('<div class="alert ' + messageType + ' add-to-basket-alert text-center" role="alert">
34075' + response.message + '</div>');
34076  setTimeout(function () {
34077    $('.add-to-basket-alert').remove();
34078  }, 5000);
34079}
34080/**
34081 * attaches on click for checkbox to toggle public status for whole list on wishslist show
34082 */
34083
34084
34085function toggleWishlistStatus() {
34086  $('#isPublicList').on('click', function () {
34087    var listID = $('#isPublicList').data('id');
34088    module.exports.methods.updatePublicStatus(listID, null, null);
34089  });
34090}
34091/**
34092 * attaches on click for checkbox to toggle public status for individual items on wishlist show
34093 */
34094
34095
34096function toggleWishlistItemStatus() {
34097  $('body').on('click', '.wishlist-item-checkbox', function () {
34098    var itemID = $(this).closest('.wishlist-hide').find('.custom-control-input').data('id');
34099    var el = $(this).siblings('input');
34100
34101    var resetCheckBox = function resetCheckBox() {
34102      return el.prop('checked') ? el.prop('checked', false) : el.prop('checked', true);
34103    };
34104
34105    module.exports.methods.updatePublicStatus(null, itemID, resetCheckBox);
34106  });
34107}
34108/**
34109 * attaches on click for checkbox to toggle disabled status on button for list
34110 */
34111
34112
34113function toggleDisabled(btn) {
34114  //btn.attr('disabled', (true ? false : true))
34115  btn[btn.attr('disabled') ? 'removeAttr' : 'attr']('disabled', true);
34116}
34117/**
34118 * toggles the public / private status of the item or wishlist item
34119 * @param {string} listID - the order model
34120 * @param {string} itemID - the customer model
34121 * @param {Object} callback - function to run if the ajax call returns with an
34122 *                        error so that the checkbox can be reset to it's original state
34123 */
34124
34125
34126function updatePublicStatus(listID, itemID, callback) {
34127  var url = $('#isPublicList').data('url');
34128  $.spinner().start();
34129  $.ajax({
34130    url: url,
34131    type: 'post',
34132    dataType: 'json',
34133    data: {
34134      listID: listID,
34135      itemID: itemID
34136    },
34137    success: function success(data) {
34138      if (callback && !data.success) {
34139        callback();
34140      }
34141
34142      if ($('.wishlist-details-share').length) {
34143        toggleDisabled($('.wishlist-details-share'));
34144      }
34145
34146      module.exports.methods.displayMessage(data, null);
34147    },
34148    error: function error(err) {
34149      if (callback) {
34150        callback();
34151      }
34152
34153      module.exports.methods.displayMessage(err);
34154    }
34155  });
34156}
34157/**
34158 * attaches on click for clicking the "x" from wishlist show or account show
34159 */
34160
34161
34162function removeFromWishlist() {
34163  $('body').on('click', '.remove-from-wishlist', function (e) {
34164    e.preventDefault();
34165    var url = $(this).data('url');
34166    var elMyAccount = $('.account-page').length; // If user is in my account page, call Wishlist-RemoveProductAccount() end point and replace html with response
34167
34168    if (elMyAccount > 0) {
34169      $('.wishlist-account-card').spinner().start();
34170      $.ajax({
34171        url: url,
34172        type: 'get',
34173        dataType: 'html',
34174        data: {},
34175        success: function success(html) {
34176          $('.wishlist-account-card>.order-card').remove();
34177          $('.wishlist-account-card').append(html);
34178          $('.wishlist-account-card').spinner().stop();
34179        },
34180        error: function error() {
34181          var $elToAppend = $('.wishlist-account-card');
34182          $elToAppend.spinner().stop();
34183          var msg = $elToAppend.data('error-msg');
34184          module.exports.methods.displayMessage($elToAppend, msg);
34185        }
34186      }); // else user is in wishlist landing page, call Wishlist-RemoveProduct() end point and re-render container page
34187    } else {
34188      $.spinner().start();
34189      $.ajax({
34190        url: url,
34191        type: 'get',
34192        dataType: 'json',
34193        data: {},
34194        success: function success() {
34195          var pageNumber = $('.wishlist-item-cards-data').data('page-number') - 1;
34196          module.exports.methods.renderNewPageOfItems(pageNumber, false);
34197        },
34198        error: function error() {
34199          $.spinner().stop();
34200          var $elToAppendWL = $('.wishlist-item-cards');
34201          var msg = $elToAppendWL.data('error-msg');
34202          module.exports.methods.displayMessage($elToAppendWL, msg);
34203        }
34204      });
34205    }
34206  });
34207}
34208
34209function moreWLItems() {
34210  $('body').on('click', '.more-wl-items', function () {
34211    var pageNumber = $('.wishlist-item-cards-data').data('page-number');
34212    module.exports.methods.renderNewPageOfItems(pageNumber, true);
34213  });
34214}
34215
34216module.exports = {
34217  methods: {
34218    updateWishlistUncachedData: updateWishlistUncachedData,
34219    updateWishlistCartStatus: updateWishlistCartStatus,
34220    displayMessage: displayMessage,
34221    renderNewPageOfItems: renderNewPageOfItems,
34222    handlePostCartAdd: handlePostCartAdd,
34223    updatePublicStatus: updatePublicStatus
34224  },
34225  cartUpdate: cartUpdate,
34226  toggleWishlist: toggleWishlist,
34227  updateWishlistLinkData: updateWishlistLinkData,
34228  copyWishlistLink: copyWishlistLink,
34229  updateQuickView: updateQuickView,
34230  viewProductViaEdit: viewProductViaEdit,
34231  focusEditWishlistProductModal: focusEditWishlistProductModal,
34232  onClosingEditWishlistProductModal: onClosingEditWishlistProductModal,
34233  trapEditWishlistProductModalFocus: trapEditWishlistProductModalFocus,
34234  addToCartFromWishlist: addToCartFromWishlist,
34235  toggleWishlistStatus: toggleWishlistStatus,
34236  toggleWishlistItemStatus: toggleWishlistItemStatus,
34237  removeFromWishlist: removeFromWishlist,
34238  moreWLItems: moreWLItems,
34239  baseFiles: {
34240    wishlistLanding: __webpack_require__(/*! core/wishlist/landing */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/landing.js"),
34241    wishlistDetail: __webpack_require__(/*! core/wishlist/detail */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/detail.js"),
34242    wishlistShowLists: __webpack_require__(/*! core/wishlist/components/modalShowLists */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/modalShowLists.js"),
34243    wishlistToggleProduct: __webpack_require__(/*! core/wishlist/components/toggleProduct */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/toggleProduct.js"),
34244    wishlistToast: __webpack_require__(/*! core/wishlist/components/toast */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/wishlist/components/toast.js")
34245  }
34246};
34247$(function () {
34248  Object.keys(module.exports.baseFiles).forEach(function (key) {
34249    processInclude(module.exports.baseFiles[key]);
34250  });
34251});
34252
34253/***/ }),
34254
34255/***/ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/scripts/constants/SiteConstants.js":
34256/*!******************************************************************************************************!*\
34257  !*** ../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/scripts/constants/SiteConstants.js ***!
34258  \******************************************************************************************************/
34259/*! no static exports found */
34260/***/ (function(module, exports, __webpack_require__) {
34261
34262"use strict";
34263 // These values should always match the variables set in _variables.scss and the contentImageBreakpoints site pref
34264
34265module.exports.BreakpointSizes = {
34266  'sm': 544,
34267  'md': 769,
34268  'lg': 1024,
34269  'xl': 1440
34270};
34271module.exports.TransitionSpeed = 200;
34272module.exports.ComponentAnimationDelay = 0;
34273module.exports.Spacer = 16;
34274module.exports.placeholderImagePaths = {
34275  'thumbnail': '/images/gray.png',
34276  'imageMissing': '/images/placeholder.png'
34277};
34278module.exports.defaultMapMarker = {
34279  'color': 'white',
34280  'backgroundImage': '/images/icons/map-marker-default.svg'
34281};
34282module.exports.defaultStoreType = {
34283  'id': 0,
34284  'displayValue': 'Retail',
34285  'value': 'retail'
34286}; // These are used in cartridge/client/default/js/components/search.js
34287
34288module.exports.UP_KEY = 38;
34289module.exports.DOWN_KEY = 40;
34290module.exports.DIRECTION_DOWN = 1;
34291module.exports.DIRECTION_UP = -1;
34292
34293/***/ }),
34294
vendor: 3,714 bytes, lines 34295-34423
34295/***/ "../rvw_autobahn_core/node_modules/ev-emitter/ev-emitter.js":
34296/*!******************************************************************!*\
34297  !*** ../rvw_autobahn_core/node_modules/ev-emitter/ev-emitter.js ***!
34298  \******************************************************************/
34299/*! no static exports found */
34300/***/ (function(module, exports, __webpack_require__) {
34301
34302var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
34303
34304/**
34305 * EvEmitter v1.1.0
34306 * Lil' event emitter
34307 * MIT License
34308 */
34309
34310/* jshint unused: true, undef: true, strict: true */
34311(function (global, factory) {
34312  // universal module definition
34313
34314  /* jshint strict: false */
34315
34316  /* globals define, module, window */
34317  if (true) {
34318    // AMD - RequireJS
34319    !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
34320				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
34321				(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
34322				__WEBPACK_AMD_DEFINE_FACTORY__),
34323				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
34324  } else {}
34325})(typeof window != 'undefined' ? window : this, function () {
34326  "use strict";
34327
34328  function EvEmitter() {}
34329
34330  var proto = EvEmitter.prototype;
34331
34332  proto.on = function (eventName, listener) {
34333    if (!eventName || !listener) {
34334      return;
34335    } // set events hash
34336
34337
34338    var events = this._events = this._events || {}; // set listeners array
34339
34340    var listeners = events[eventName] = events[eventName] || []; // only add once
34341
34342    if (listeners.indexOf(listener) == -1) {
34343      listeners.push(listener);
34344    }
34345
34346    return this;
34347  };
34348
34349  proto.once = function (eventName, listener) {
34350    if (!eventName || !listener) {
34351      return;
34352    } // add event
34353
34354
34355    this.on(eventName, listener); // set once flag
34356    // set onceEvents hash
34357
34358    var onceEvents = this._onceEvents = this._onceEvents || {}; // set onceListeners object
34359
34360    var onceListeners = onceEvents[eventName] = onceEvents[eventName] || {}; // set flag
34361
34362    onceListeners[listener] = true;
34363    return this;
34364  };
34365
34366  proto.off = function (eventName, listener) {
34367    var listeners = this._events && this._events[eventName];
34368
34369    if (!listeners || !listeners.length) {
34370      return;
34371    }
34372
34373    var index = listeners.indexOf(listener);
34374
34375    if (index != -1) {
34376      listeners.splice(index, 1);
34377    }
34378
34379    return this;
34380  };
34381
34382  proto.emitEvent = function (eventName, args) {
34383    var listeners = this._events && this._events[eventName];
34384
34385    if (!listeners || !listeners.length) {
34386      return;
34387    } // copy over to avoid interference if .off() in listener
34388
34389
34390    listeners = listeners.slice(0);
34391    args = args || []; // once stuff
34392
34393    var onceListeners = this._onceEvents && this._onceEvents[eventName];
34394
34395    for (var i = 0; i < listeners.length; i++) {
34396      var listener = listeners[i];
34397      var isOnce = onceListeners && onceListeners[listener];
34398
34399      if (isOnce) {
34400        // remove listener
34401        // remove before trigger to prevent recursion
34402        this.off(eventName, listener); // unset once flag
34403
34404        delete onceListeners[listener];
34405      } // trigger listener
34406
34407
34408      listener.apply(this, args);
34409    }
34410
34411    return this;
34412  };
34413
34414  proto.allOff = function () {
34415    delete this._events;
34416    delete this._onceEvents;
34417  };
34418
34419  return EvEmitter;
34420});
34421
34422/***/ }),
34423
vendor: 4,892 bytes, lines 34424-34514
34424/***/ "../rvw_autobahn_core/node_modules/focus-visible/dist/focus-visible.min.js":
34425/*!*********************************************************************************!*\
34426  !*** ../rvw_autobahn_core/node_modules/focus-visible/dist/focus-visible.min.js ***!
34427  \*********************************************************************************/
34428/*! no static exports found */
34429/***/ (function(module, exports, __webpack_require__) {
34430
34431var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
34432
34433!function (e, t) {
34434  "object" == ( false ? undefined : _typeof(exports)) && "undefined" != typeof module ? t() :  true ? !(__WEBPACK_AMD_DEFINE_FACTORY__ = (t),
34435				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
34436				(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :
34437				__WEBPACK_AMD_DEFINE_FACTORY__),
34438				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
34439}(0, function () {
34440  "use strict";
34441
34442  function e(e) {
34443    var t = !0,
34444        n = !1,
34445        o = null,
34446        d = {
34447      text: !0,
34448      search: !0,
34449      url: !0,
34450      tel: !0,
34451      email: !0,
34452      password: !0,
34453      number: !0,
34454      date: !0,
34455      month: !0,
34456      week: !0,
34457      time: !0,
34458      datetime: !0,
34459      "datetime-local": !0
34460    };
34461
34462    function i(e) {
34463      return !!(e && e !== document && "HTML" !== e.nodeName && "BODY" !== e.nodeName && "classList" in e && "contains" in e.classList);
34464    }
34465
34466    function s(e) {
34467      e.classList.contains("focus-visible") || (e.classList.add("focus-visible"), e.setAttribute("data-focus-visible-added", ""));
34468    }
34469
34470    function u(e) {
34471      t = !1;
34472    }
34473
34474    function a() {
34475      document.addEventListener("mousemove", c), document.addEventListener("mousedown", c), document.addEventListener("mouseup", c), document.addEventListener("pointermove", c), document.addEventListener("pointerdown", c), document.addEventListener("pointerup", c), document.addEventListener("touchmove", c), document.addEventListener("touchstart", c), document.addEventListener("touchend", c);
34476    }
34477
34478    function c(e) {
34479      e.target.nodeName && "html" === e.target.nodeName.toLowerCase() || (t = !1, document.removeEventListener("mousemove", c), document.removeEventListener("mousedown", c), document.removeEventListener("mouseup", c), document.removeEventListener("pointermove", c), document.removeEventListener("pointerdown", c), document.removeEventListener("pointerup", c), document.removeEventListener("touchmove", c), document.removeEventListener("touchstart", c), document.removeEventListener("touchend", c));
34480    }
34481
34482    document.addEventListener("keydown", function (n) {
34483      n.metaKey || n.altKey || n.ctrlKey || (i(e.activeElement) && s(e.activeElement), t = !0);
34484    }, !0), document.addEventListener("mousedown", u, !0), document.addEventListener("pointerdown", u, !0), document.addEventListener("touchstart", u, !0), document.addEventListener("visibilitychange", function (e) {
34485      "hidden" === document.visibilityState && (n && (t = !0), a());
34486    }, !0), a(), e.addEventListener("focus", function (e) {
34487      var n, o, u;
34488      i(e.target) && (t || (n = e.target, o = n.type, "INPUT" === (u = n.tagName) && d[o] && !n.readOnly || "TEXTAREA" === u && !n.readOnly || n.isContentEditable)) && s(e.target);
34489    }, !0), e.addEventListener("blur", function (e) {
34490      var t;
34491      i(e.target) && (e.target.classList.contains("focus-visible") || e.target.hasAttribute("data-focus-visible-added")) && (n = !0, window.clearTimeout(o), o = window.setTimeout(function () {
34492        n = !1;
34493      }, 100), (t = e.target).hasAttribute("data-focus-visible-added") && (t.classList.remove("focus-visible"), t.removeAttribute("data-focus-visible-added")));
34494    }, !0), e.nodeType === Node.DOCUMENT_FRAGMENT_NODE && e.host ? e.host.setAttribute("data-js-focus-visible", "") : e.nodeType === Node.DOCUMENT_NODE && (document.documentElement.classList.add("js-focus-visible"), document.documentElement.setAttribute("data-js-focus-visible", ""));
34495  }
34496
34497  if ("undefined" != typeof window && "undefined" != typeof document) {
34498    var t;
34499    window.applyFocusVisiblePolyfill = e;
34500
34501    try {
34502      t = new CustomEvent("focus-visible-polyfill-ready");
34503    } catch (e) {
34504      (t = document.createEvent("CustomEvent")).initCustomEvent("focus-visible-polyfill-ready", !1, !1, {});
34505    }
34506
34507    window.dispatchEvent(t);
34508  }
34509
34510  "undefined" != typeof document && e(document);
34511});
34512
34513/***/ }),
34514
vendor: 986 bytes, lines 34515-34542
34515/***/ "../rvw_autobahn_core/node_modules/global/document.js":
34516/*!************************************************************!*\
34517  !*** ../rvw_autobahn_core/node_modules/global/document.js ***!
34518  \************************************************************/
34519/*! no static exports found */
34520/***/ (function(module, exports, __webpack_require__) {
34521
34522/* WEBPACK VAR INJECTION */(function(global) {var topLevel = typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : {};
34523
34524var minDoc = __webpack_require__(/*! min-document */ 4);
34525
34526var doccy;
34527
34528if (typeof document !== 'undefined') {
34529  doccy = document;
34530} else {
34531  doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'];
34532
34533  if (!doccy) {
34534    doccy = topLevel['__GLOBAL_DOCUMENT_CACHE@4'] = minDoc;
34535  }
34536}
34537
34538module.exports = doccy;
34539/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../sfra-webpack-builder/node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
34540
34541/***/ }),
34542
vendor: 806 bytes, lines 34543-34566
34543/***/ "../rvw_autobahn_core/node_modules/global/window.js":
34544/*!**********************************************************!*\
34545  !*** ../rvw_autobahn_core/node_modules/global/window.js ***!
34546  \**********************************************************/
34547/*! no static exports found */
34548/***/ (function(module, exports, __webpack_require__) {
34549
34550/* WEBPACK VAR INJECTION */(function(global) {var win;
34551
34552if (typeof window !== "undefined") {
34553  win = window;
34554} else if (typeof global !== "undefined") {
34555  win = global;
34556} else if (typeof self !== "undefined") {
34557  win = self;
34558} else {
34559  win = {};
34560}
34561
34562module.exports = win;
34563/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../sfra-webpack-builder/node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
34564
34565/***/ }),
34566
vendor: 11,086 bytes, lines 34567-34950
34567/***/ "../rvw_autobahn_core/node_modules/imagesloaded/imagesloaded.js":
34568/*!**********************************************************************!*\
34569  !*** ../rvw_autobahn_core/node_modules/imagesloaded/imagesloaded.js ***!
34570  \**********************************************************************/
34571/*! no static exports found */
34572/***/ (function(module, exports, __webpack_require__) {
34573
34574var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
34575
34576/*!
34577 * imagesLoaded v4.1.4
34578 * JavaScript is all like "You images are done yet or what?"
34579 * MIT License
34580 */
34581(function (window, factory) {
34582  'use strict'; // universal module definition
34583
34584  /*global define: false, module: false, require: false */
34585
34586  if (true) {
34587    // AMD
34588    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! ev-emitter/ev-emitter */ "../rvw_autobahn_core/node_modules/ev-emitter/ev-emitter.js")], __WEBPACK_AMD_DEFINE_RESULT__ = (function (EvEmitter) {
34589      return factory(window, EvEmitter);
34590    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
34591				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
34592  } else {}
34593})(typeof window !== 'undefined' ? window : this, // --------------------------  factory -------------------------- //
34594function factory(window, EvEmitter) {
34595  'use strict';
34596
34597  var $ = window.jQuery;
34598  var console = window.console; // -------------------------- helpers -------------------------- //
34599  // extend objects
34600
34601  function extend(a, b) {
34602    for (var prop in b) {
34603      a[prop] = b[prop];
34604    }
34605
34606    return a;
34607  }
34608
34609  var arraySlice = Array.prototype.slice; // turn element or nodeList into an array
34610
34611  function makeArray(obj) {
34612    if (Array.isArray(obj)) {
34613      // use object if already an array
34614      return obj;
34615    }
34616
34617    var isArrayLike = _typeof(obj) == 'object' && typeof obj.length == 'number';
34618
34619    if (isArrayLike) {
34620      // convert nodeList to array
34621      return arraySlice.call(obj);
34622    } // array of single index
34623
34624
34625    return [obj];
34626  } // -------------------------- imagesLoaded -------------------------- //
34627
34628  /**
34629   * @param {Array, Element, NodeList, String} elem
34630   * @param {Object or Function} options - if function, use as callback
34631   * @param {Function} onAlways - callback function
34632   */
34633
34634
34635  function ImagesLoaded(elem, options, onAlways) {
34636    // coerce ImagesLoaded() without new, to be new ImagesLoaded()
34637    if (!(this instanceof ImagesLoaded)) {
34638      return new ImagesLoaded(elem, options, onAlways);
34639    } // use elem as selector string
34640
34641
34642    var queryElem = elem;
34643
34644    if (typeof elem == 'string') {
34645      queryElem = document.querySelectorAll(elem);
34646    } // bail if bad element
34647
34648
34649    if (!queryElem) {
34650      console.error('Bad element for imagesLoaded ' + (queryElem || elem));
34651      return;
34652    }
34653
34654    this.elements = makeArray(queryElem);
34655    this.options = extend({}, this.options); // shift arguments if no options set
34656
34657    if (typeof options == 'function') {
34658      onAlways = options;
34659    } else {
34660      extend(this.options, options);
34661    }
34662
34663    if (onAlways) {
34664      this.on('always', onAlways);
34665    }
34666
34667    this.getImages();
34668
34669    if ($) {
34670      // add jQuery Deferred object
34671      this.jqDeferred = new $.Deferred();
34672    } // HACK check async to allow time to bind listeners
34673
34674
34675    setTimeout(this.check.bind(this));
34676  }
34677
34678  ImagesLoaded.prototype = Object.create(EvEmitter.prototype);
34679  ImagesLoaded.prototype.options = {};
34680
34681  ImagesLoaded.prototype.getImages = function () {
34682    this.images = []; // filter & find items if we have an item selector
34683
34684    this.elements.forEach(this.addElementImages, this);
34685  };
34686  /**
34687   * @param {Node} element
34688   */
34689
34690
34691  ImagesLoaded.prototype.addElementImages = function (elem) {
34692    // filter siblings
34693    if (elem.nodeName == 'IMG') {
34694      this.addImage(elem);
34695    } // get background image on element
34696
34697
34698    if (this.options.background === true) {
34699      this.addElementBackgroundImages(elem);
34700    } // find children
34701    // no non-element nodes, #143
34702
34703
34704    var nodeType = elem.nodeType;
34705
34706    if (!nodeType || !elementNodeTypes[nodeType]) {
34707      return;
34708    }
34709
34710    var childImgs = elem.querySelectorAll('img'); // concat childElems to filterFound array
34711
34712    for (var i = 0; i < childImgs.length; i++) {
34713      var img = childImgs[i];
34714      this.addImage(img);
34715    } // get child background images
34716
34717
34718    if (typeof this.options.background == 'string') {
34719      var children = elem.querySelectorAll(this.options.background);
34720
34721      for (i = 0; i < children.length; i++) {
34722        var child = children[i];
34723        this.addElementBackgroundImages(child);
34724      }
34725    }
34726  };
34727
34728  var elementNodeTypes = {
34729    1: true,
34730    9: true,
34731    11: true
34732  };
34733
34734  ImagesLoaded.prototype.addElementBackgroundImages = function (elem) {
34735    var style = getComputedStyle(elem);
34736
34737    if (!style) {
34738      // Firefox returns null if in a hidden iframe https://bugzil.la/548397
34739      return;
34740    } // get url inside url("...")
34741
34742
34743    var reURL = /url\((['"])?(.*?)\1\)/gi;
34744    var matches = reURL.exec(style.backgroundImage);
34745
34746    while (matches !== null) {
34747      var url = matches && matches[2];
34748
34749      if (url) {
34750        this.addBackground(url, elem);
34751      }
34752
34753      matches = reURL.exec(style.backgroundImage);
34754    }
34755  };
34756  /**
34757   * @param {Image} img
34758   */
34759
34760
34761  ImagesLoaded.prototype.addImage = function (img) {
34762    var loadingImage = new LoadingImage(img);
34763    this.images.push(loadingImage);
34764  };
34765
34766  ImagesLoaded.prototype.addBackground = function (url, elem) {
34767    var background = new Background(url, elem);
34768    this.images.push(background);
34769  };
34770
34771  ImagesLoaded.prototype.check = function () {
34772    var _this = this;
34773
34774    this.progressedCount = 0;
34775    this.hasAnyBroken = false; // complete if no images
34776
34777    if (!this.images.length) {
34778      this.complete();
34779      return;
34780    }
34781
34782    function onProgress(image, elem, message) {
34783      // HACK - Chrome triggers event before object properties have changed. #83
34784      setTimeout(function () {
34785        _this.progress(image, elem, message);
34786      });
34787    }
34788
34789    this.images.forEach(function (loadingImage) {
34790      loadingImage.once('progress', onProgress);
34791      loadingImage.check();
34792    });
34793  };
34794
34795  ImagesLoaded.prototype.progress = function (image, elem, message) {
34796    this.progressedCount++;
34797    this.hasAnyBroken = this.hasAnyBroken || !image.isLoaded; // progress event
34798
34799    this.emitEvent('progress', [this, image, elem]);
34800
34801    if (this.jqDeferred && this.jqDeferred.notify) {
34802      this.jqDeferred.notify(this, image);
34803    } // check if completed
34804
34805
34806    if (this.progressedCount == this.images.length) {
34807      this.complete();
34808    }
34809
34810    if (this.options.debug && console) {
34811      console.log('progress: ' + message, image, elem);
34812    }
34813  };
34814
34815  ImagesLoaded.prototype.complete = function () {
34816    var eventName = this.hasAnyBroken ? 'fail' : 'done';
34817    this.isComplete = true;
34818    this.emitEvent(eventName, [this]);
34819    this.emitEvent('always', [this]);
34820
34821    if (this.jqDeferred) {
34822      var jqMethod = this.hasAnyBroken ? 'reject' : 'resolve';
34823      this.jqDeferred[jqMethod](this);
34824    }
34825  }; // --------------------------  -------------------------- //
34826
34827
34828  function LoadingImage(img) {
34829    this.img = img;
34830  }
34831
34832  LoadingImage.prototype = Object.create(EvEmitter.prototype);
34833
34834  LoadingImage.prototype.check = function () {
34835    // If complete is true and browser supports natural sizes,
34836    // try to check for image status manually.
34837    var isComplete = this.getIsImageComplete();
34838
34839    if (isComplete) {
34840      // report based on naturalWidth
34841      this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');
34842      return;
34843    } // If none of the checks above matched, simulate loading on detached element.
34844
34845
34846    this.proxyImage = new Image();
34847    this.proxyImage.addEventListener('load', this);
34848    this.proxyImage.addEventListener('error', this); // bind to image as well for Firefox. #191
34849
34850    this.img.addEventListener('load', this);
34851    this.img.addEventListener('error', this);
34852    this.proxyImage.src = this.img.src;
34853  };
34854
34855  LoadingImage.prototype.getIsImageComplete = function () {
34856    // check for non-zero, non-undefined naturalWidth
34857    // fixes Safari+InfiniteScroll+Masonry bug infinite-scroll#671
34858    return this.img.complete && this.img.naturalWidth;
34859  };
34860
34861  LoadingImage.prototype.confirm = function (isLoaded, message) {
34862    this.isLoaded = isLoaded;
34863    this.emitEvent('progress', [this, this.img, message]);
34864  }; // ----- events ----- //
34865  // trigger specified handler for event type
34866
34867
34868  LoadingImage.prototype.handleEvent = function (event) {
34869    var method = 'on' + event.type;
34870
34871    if (this[method]) {
34872      this[method](event);
34873    }
34874  };
34875
34876  LoadingImage.prototype.onload = function () {
34877    this.confirm(true, 'onload');
34878    this.unbindEvents();
34879  };
34880
34881  LoadingImage.prototype.onerror = function () {
34882    this.confirm(false, 'onerror');
34883    this.unbindEvents();
34884  };
34885
34886  LoadingImage.prototype.unbindEvents = function () {
34887    this.proxyImage.removeEventListener('load', this);
34888    this.proxyImage.removeEventListener('error', this);
34889    this.img.removeEventListener('load', this);
34890    this.img.removeEventListener('error', this);
34891  }; // -------------------------- Background -------------------------- //
34892
34893
34894  function Background(url, element) {
34895    this.url = url;
34896    this.element = element;
34897    this.img = new Image();
34898  } // inherit LoadingImage prototype
34899
34900
34901  Background.prototype = Object.create(LoadingImage.prototype);
34902
34903  Background.prototype.check = function () {
34904    this.img.addEventListener('load', this);
34905    this.img.addEventListener('error', this);
34906    this.img.src = this.url; // check if image is already complete
34907
34908    var isComplete = this.getIsImageComplete();
34909
34910    if (isComplete) {
34911      this.confirm(this.img.naturalWidth !== 0, 'naturalWidth');
34912      this.unbindEvents();
34913    }
34914  };
34915
34916  Background.prototype.unbindEvents = function () {
34917    this.img.removeEventListener('load', this);
34918    this.img.removeEventListener('error', this);
34919  };
34920
34921  Background.prototype.confirm = function (isLoaded, message) {
34922    this.isLoaded = isLoaded;
34923    this.emitEvent('progress', [this, this.element, message]);
34924  }; // -------------------------- jQuery -------------------------- //
34925
34926
34927  ImagesLoaded.makeJQueryPlugin = function (jQuery) {
34928    jQuery = jQuery || window.jQuery;
34929
34930    if (!jQuery) {
34931      return;
34932    } // set local variable
34933
34934
34935    $ = jQuery; // $().imagesLoaded()
34936
34937    $.fn.imagesLoaded = function (options, callback) {
34938      var instance = new ImagesLoaded(this, options, callback);
34939      return instance.jqDeferred.promise($(this));
34940    };
34941  }; // try making plugin
34942
34943
34944  ImagesLoaded.makeJQueryPlugin(); // --------------------------  -------------------------- //
34945
34946  return ImagesLoaded;
34947});
34948
34949/***/ }),
34950
vendor: 7,946 bytes, lines 34951-35160
34951/***/ "../rvw_autobahn_core/node_modules/jquery-hoverintent/jquery.hoverIntent.js":
34952/*!**********************************************************************************!*\
34953  !*** ../rvw_autobahn_core/node_modules/jquery-hoverintent/jquery.hoverIntent.js ***!
34954  \**********************************************************************************/
34955/*! no static exports found */
34956/***/ (function(module, exports, __webpack_require__) {
34957
34958var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
34959
34960/*!
34961 * hoverIntent v1.10.1 // 2019.10.05 // jQuery v1.7.0+
34962 * http://briancherne.github.io/jquery-hoverIntent/
34963 *
34964 * You may use hoverIntent under the terms of the MIT license. Basically that
34965 * means you are free to use hoverIntent as long as this header is left intact.
34966 * Copyright 2007-2019 Brian Cherne
34967 */
34968
34969/**
34970 * hoverIntent is similar to jQuery's built-in "hover" method except that
34971 * instead of firing the handlerIn function immediately, hoverIntent checks
34972 * to see if the user's mouse has slowed down (beneath the sensitivity
34973 * threshold) before firing the event. The handlerOut function is only
34974 * called after a matching handlerIn.
34975 *
34976 * // basic usage ... just like .hover()
34977 * .hoverIntent( handlerIn, handlerOut )
34978 * .hoverIntent( handlerInOut )
34979 *
34980 * // basic usage ... with event delegation!
34981 * .hoverIntent( handlerIn, handlerOut, selector )
34982 * .hoverIntent( handlerInOut, selector )
34983 *
34984 * // using a basic configuration object
34985 * .hoverIntent( config )
34986 *
34987 * @param  handlerIn   function OR configuration object
34988 * @param  handlerOut  function OR selector for delegation OR undefined
34989 * @param  selector    selector OR undefined
34990 * @author Brian Cherne <brian(at)cherne(dot)net>
34991 */
34992;
34993
34994(function (factory) {
34995  'use strict';
34996
34997  if (true) {
34998    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
34999				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
35000				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
35001				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
35002  } else {}
35003})(function ($) {
35004  'use strict'; // default configuration values
35005
35006  var _cfg = {
35007    interval: 100,
35008    sensitivity: 6,
35009    timeout: 0
35010  }; // counter used to generate an ID for each instance
35011
35012  var INSTANCE_COUNT = 0; // current X and Y position of mouse, updated during mousemove tracking (shared across instances)
35013
35014  var cX, cY; // saves the current pointer position coordinates based on the given mousemove event
35015
35016  var track = function track(ev) {
35017    cX = ev.pageX;
35018    cY = ev.pageY;
35019  }; // compares current and previous mouse positions
35020
35021
35022  var compare = function compare(ev, $el, s, cfg) {
35023    // compare mouse positions to see if pointer has slowed enough to trigger `over` function
35024    if (Math.sqrt((s.pX - cX) * (s.pX - cX) + (s.pY - cY) * (s.pY - cY)) < cfg.sensitivity) {
35025      $el.off(s.event, track);
35026      delete s.timeoutId; // set hoverIntent state as active for this element (permits `out` handler to trigger)
35027
35028      s.isActive = true; // overwrite old mouseenter event coordinates with most recent pointer position
35029
35030      ev.pageX = cX;
35031      ev.pageY = cY; // clear coordinate data from state object
35032
35033      delete s.pX;
35034      delete s.pY;
35035      return cfg.over.apply($el[0], [ev]);
35036    } else {
35037      // set previous coordinates for next comparison
35038      s.pX = cX;
35039      s.pY = cY; // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
35040
35041      s.timeoutId = setTimeout(function () {
35042        compare(ev, $el, s, cfg);
35043      }, cfg.interval);
35044    }
35045  }; // triggers given `out` function at configured `timeout` after a mouseleave and clears state
35046
35047
35048  var delay = function delay(ev, $el, s, out) {
35049    var data = $el.data('hoverIntent');
35050
35051    if (data) {
35052      delete data[s.id];
35053    }
35054
35055    return out.apply($el[0], [ev]);
35056  };
35057
35058  $.fn.hoverIntent = function (handlerIn, handlerOut, selector) {
35059    // instance ID, used as a key to store and retrieve state information on an element
35060    var instanceId = INSTANCE_COUNT++; // extend the default configuration and parse parameters
35061
35062    var cfg = $.extend({}, _cfg);
35063
35064    if ($.isPlainObject(handlerIn)) {
35065      cfg = $.extend(cfg, handlerIn);
35066
35067      if (!$.isFunction(cfg.out)) {
35068        cfg.out = cfg.over;
35069      }
35070    } else if ($.isFunction(handlerOut)) {
35071      cfg = $.extend(cfg, {
35072        over: handlerIn,
35073        out: handlerOut,
35074        selector: selector
35075      });
35076    } else {
35077      cfg = $.extend(cfg, {
35078        over: handlerIn,
35079        out: handlerIn,
35080        selector: handlerOut
35081      });
35082    } // A private function for handling mouse 'hovering'
35083
35084
35085    var handleHover = function handleHover(e) {
35086      // cloned event to pass to handlers (copy required for event object to be passed in IE)
35087      var ev = $.extend({}, e); // the current target of the mouse event, wrapped in a jQuery object
35088
35089      var $el = $(this); // read hoverIntent data from element (or initialize if not present)
35090
35091      var hoverIntentData = $el.data('hoverIntent');
35092
35093      if (!hoverIntentData) {
35094        $el.data('hoverIntent', hoverIntentData = {});
35095      } // read per-instance state from element (or initialize if not present)
35096
35097
35098      var state = hoverIntentData[instanceId];
35099
35100      if (!state) {
35101        hoverIntentData[instanceId] = state = {
35102          id: instanceId
35103        };
35104      } // state properties:
35105      // id = instance ID, used to clean up data
35106      // timeoutId = timeout ID, reused for tracking mouse position and delaying "out" handler
35107      // isActive = plugin state, true after `over` is called just until `out` is called
35108      // pX, pY = previously-measured pointer coordinates, updated at each polling interval
35109      // event = string representing the namespaced event used for mouse tracking
35110      // clear any existing timeout
35111
35112
35113      if (state.timeoutId) {
35114        state.timeoutId = clearTimeout(state.timeoutId);
35115      } // namespaced event used to register and unregister mousemove tracking
35116
35117
35118      var mousemove = state.event = 'mousemove.hoverIntent.hoverIntent' + instanceId; // handle the event, based on its type
35119
35120      if (e.type === 'mouseenter') {
35121        // do nothing if already active
35122        if (state.isActive) {
35123          return;
35124        } // set "previous" X and Y position based on initial entry point
35125
35126
35127        state.pX = ev.pageX;
35128        state.pY = ev.pageY; // update "current" X and Y position based on mousemove
35129
35130        $el.off(mousemove, track).on(mousemove, track); // start polling interval (self-calling timeout) to compare mouse coordinates over time
35131
35132        state.timeoutId = setTimeout(function () {
35133          compare(ev, $el, state, cfg);
35134        }, cfg.interval);
35135      } else {
35136        // "mouseleave"
35137        // do nothing if not already active
35138        if (!state.isActive) {
35139          return;
35140        } // unbind expensive mousemove event
35141
35142
35143        $el.off(mousemove, track); // if hoverIntent state is true, then call the mouseOut function after the specified delay
35144
35145        state.timeoutId = setTimeout(function () {
35146          delay(ev, $el, state, cfg.out);
35147        }, cfg.timeout);
35148      }
35149    }; // listen for mouseenter and mouseleave
35150
35151
35152    return this.on({
35153      'mouseenter.hoverIntent': handleHover,
35154      'mouseleave.hoverIntent': handleHover
35155    }, cfg.selector);
35156  };
35157});
35158
35159/***/ }),
35160
vendor: 6,863 bytes, lines 35161-35377
35161/***/ "../rvw_autobahn_core/node_modules/jquery-zoom/jquery.zoom.js":
35162/*!********************************************************************!*\
35163  !*** ../rvw_autobahn_core/node_modules/jquery-zoom/jquery.zoom.js ***!
35164  \********************************************************************/
35165/*! no static exports found */
35166/***/ (function(module, exports) {
35167
35168/*!
35169	Zoom 1.7.21
35170	license: MIT
35171	http://www.jacklmoore.com/zoom
35172*/
35173(function ($) {
35174  var defaults = {
35175    url: false,
35176    callback: false,
35177    target: false,
35178    duration: 120,
35179    on: 'mouseover',
35180    // other options: grab, click, toggle
35181    touch: true,
35182    // enables a touch fallback
35183    onZoomIn: false,
35184    onZoomOut: false,
35185    magnify: 1
35186  }; // Core Zoom Logic, independent of event listeners.
35187
35188  $.zoom = function (target, source, img, magnify) {
35189    var targetHeight,
35190        targetWidth,
35191        sourceHeight,
35192        sourceWidth,
35193        xRatio,
35194        yRatio,
35195        offset,
35196        $target = $(target),
35197        position = $target.css('position'),
35198        $source = $(source); // The parent element needs positioning so that the zoomed element can be correctly positioned within.
35199
35200    target.style.position = /(absolute|fixed)/.test(position) ? position : 'relative';
35201    target.style.overflow = 'hidden';
35202    img.style.width = img.style.height = '';
35203    $(img).addClass('zoomImg').css({
35204      position: 'absolute',
35205      top: 0,
35206      left: 0,
35207      opacity: 0,
35208      width: img.width * magnify,
35209      height: img.height * magnify,
35210      border: 'none',
35211      maxWidth: 'none',
35212      maxHeight: 'none'
35213    }).appendTo(target);
35214    return {
35215      init: function init() {
35216        targetWidth = $target.outerWidth();
35217        targetHeight = $target.outerHeight();
35218
35219        if (source === target) {
35220          sourceWidth = targetWidth;
35221          sourceHeight = targetHeight;
35222        } else {
35223          sourceWidth = $source.outerWidth();
35224          sourceHeight = $source.outerHeight();
35225        }
35226
35227        xRatio = (img.width - targetWidth) / sourceWidth;
35228        yRatio = (img.height - targetHeight) / sourceHeight;
35229        offset = $source.offset();
35230      },
35231      move: function move(e) {
35232        var left = e.pageX - offset.left,
35233            top = e.pageY - offset.top;
35234        top = Math.max(Math.min(top, sourceHeight), 0);
35235        left = Math.max(Math.min(left, sourceWidth), 0);
35236        img.style.left = left * -xRatio + 'px';
35237        img.style.top = top * -yRatio + 'px';
35238      }
35239    };
35240  };
35241
35242  $.fn.zoom = function (options) {
35243    return this.each(function () {
35244      var settings = $.extend({}, defaults, options || {}),
35245          //target will display the zoomed image
35246      target = settings.target && $(settings.target)[0] || this,
35247          //source will provide zoom location info (thumbnail)
35248      source = this,
35249          $source = $(source),
35250          img = document.createElement('img'),
35251          $img = $(img),
35252          mousemove = 'mousemove.zoom',
35253          clicked = false,
35254          touched = false; // If a url wasn't specified, look for an image element.
35255
35256      if (!settings.url) {
35257        var srcElement = source.querySelector('img');
35258
35259        if (srcElement) {
35260          settings.url = srcElement.getAttribute('data-src') || srcElement.currentSrc || srcElement.src;
35261        }
35262
35263        if (!settings.url) {
35264          return;
35265        }
35266      }
35267
35268      $source.one('zoom.destroy', function (position, overflow) {
35269        $source.off(".zoom");
35270        target.style.position = position;
35271        target.style.overflow = overflow;
35272        img.onload = null;
35273        $img.remove();
35274      }.bind(this, target.style.position, target.style.overflow));
35275
35276      img.onload = function () {
35277        var zoom = $.zoom(target, source, img, settings.magnify);
35278
35279        function start(e) {
35280          zoom.init();
35281          zoom.move(e); // Skip the fade-in for IE8 and lower since it chokes on fading-in
35282          // and changing position based on mousemovement at the same time.
35283
35284          $img.stop().fadeTo($.support.opacity ? settings.duration : 0, 1, $.isFunction(settings.onZoomIn) ? settings.onZoomIn.call(img) : false);
35285        }
35286
35287        function stop() {
35288          $img.stop().fadeTo(settings.duration, 0, $.isFunction(settings.onZoomOut) ? settings.onZoomOut.call(img) : false);
35289        } // Mouse events
35290
35291
35292        if (settings.on === 'grab') {
35293          $source.on('mousedown.zoom', function (e) {
35294            if (e.which === 1) {
35295              $(document).one('mouseup.zoom', function () {
35296                stop();
35297                $(document).off(mousemove, zoom.move);
35298              });
35299              start(e);
35300              $(document).on(mousemove, zoom.move);
35301              e.preventDefault();
35302            }
35303          });
35304        } else if (settings.on === 'click') {
35305          $source.on('click.zoom', function (e) {
35306            if (clicked) {
35307              // bubble the event up to the document to trigger the unbind.
35308              return;
35309            } else {
35310              clicked = true;
35311              start(e);
35312              $(document).on(mousemove, zoom.move);
35313              $(document).one('click.zoom', function () {
35314                stop();
35315                clicked = false;
35316                $(document).off(mousemove, zoom.move);
35317              });
35318              return false;
35319            }
35320          });
35321        } else if (settings.on === 'toggle') {
35322          $source.on('click.zoom', function (e) {
35323            if (clicked) {
35324              stop();
35325            } else {
35326              start(e);
35327            }
35328
35329            clicked = !clicked;
35330          });
35331        } else if (settings.on === 'mouseover') {
35332          zoom.init(); // Preemptively call init because IE7 will fire the mousemove handler before the hover handler.
35333
35334          $source.on('mouseenter.zoom', start).on('mouseleave.zoom', stop).on(mousemove, zoom.move);
35335        } // Touch fallback
35336
35337
35338        if (settings.touch) {
35339          $source.on('touchstart.zoom', function (e) {
35340            e.preventDefault();
35341
35342            if (touched) {
35343              touched = false;
35344              stop();
35345            } else {
35346              touched = true;
35347              start(e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]);
35348            }
35349          }).on('touchmove.zoom', function (e) {
35350            e.preventDefault();
35351            zoom.move(e.originalEvent.touches[0] || e.originalEvent.changedTouches[0]);
35352          }).on('touchend.zoom', function (e) {
35353            e.preventDefault();
35354
35355            if (touched) {
35356              touched = false;
35357              stop();
35358            }
35359          });
35360        }
35361
35362        if ($.isFunction(settings.callback)) {
35363          settings.callback.call(img);
35364        }
35365      };
35366
35367      img.setAttribute('role', 'presentation');
35368      img.alt = '';
35369      img.src = settings.url;
35370    });
35371  };
35372
35373  $.fn.zoom.defaults = defaults;
35374})(window.jQuery);
35375
35376/***/ }),
35377
vendor: 10,398 bytes, lines 35378-35645
35378/***/ "../rvw_autobahn_core/node_modules/jquery.scrollintoview/jquery.scrollintoview.js":
35379/*!****************************************************************************************!*\
35380  !*** ../rvw_autobahn_core/node_modules/jquery.scrollintoview/jquery.scrollintoview.js ***!
35381  \****************************************************************************************/
35382/*! no static exports found */
35383/***/ (function(module, exports, __webpack_require__) {
35384
35385var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
35386
35387/*!
35388 * jQuery scrollintoview() plugin and :scrollable selector filter
35389 *
35390 * Version 1.9.4 (06 April 2016)
35391 * Requires jQuery 1.4 or newer
35392 *
35393 * Copyright (c) 2011 Robert Koritnik
35394 * Licensed under the terms of the MIT license
35395 * http://www.opensource.org/licenses/mit-license.php
35396 */
35397!function (root, factory) {
35398  if (true) {
35399    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
35400				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
35401				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
35402				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
35403  } else {}
35404}(this, function ($) {
35405  var converter = {
35406    vertical: {
35407      x: false,
35408      y: true
35409    },
35410    horizontal: {
35411      x: true,
35412      y: false
35413    },
35414    both: {
35415      x: true,
35416      y: true
35417    },
35418    x: {
35419      x: true,
35420      y: false
35421    },
35422    y: {
35423      x: false,
35424      y: true
35425    }
35426  };
35427  var settings = {
35428    duration: "fast",
35429    direction: "both",
35430    viewPadding: 0
35431  };
35432  var rootrx = /^(?:html)$/i; // gets border dimensions
35433
35434  var borders = function borders(domElement, styles) {
35435    styles = styles || (document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(domElement, null) : domElement.currentStyle);
35436    var px = document.defaultView && document.defaultView.getComputedStyle ? true : false;
35437    var b = {
35438      top: parseFloat(px ? styles.borderTopWidth : $.css(domElement, "borderTopWidth")) || 0,
35439      left: parseFloat(px ? styles.borderLeftWidth : $.css(domElement, "borderLeftWidth")) || 0,
35440      bottom: parseFloat(px ? styles.borderBottomWidth : $.css(domElement, "borderBottomWidth")) || 0,
35441      right: parseFloat(px ? styles.borderRightWidth : $.css(domElement, "borderRightWidth")) || 0
35442    };
35443    return {
35444      top: b.top,
35445      left: b.left,
35446      bottom: b.bottom,
35447      right: b.right,
35448      vertical: b.top + b.bottom,
35449      horizontal: b.left + b.right
35450    };
35451  };
35452
35453  var dimensions = function dimensions($element) {
35454    var elem = $element[0],
35455        isRoot = rootrx.test(elem.nodeName),
35456        $elem = isRoot ? $(window) : $element;
35457    return {
35458      border: isRoot ? {
35459        top: 0,
35460        left: 0,
35461        bottom: 0,
35462        right: 0
35463      } : borders(elem),
35464      scroll: {
35465        top: $elem.scrollTop(),
35466        left: $elem.scrollLeft(),
35467        maxtop: elem.scrollHeight - elem.clientHeight,
35468        maxleft: elem.scrollWidth - elem.clientWidth
35469      },
35470      scrollbar: isRoot ? {
35471        right: 0,
35472        bottom: 0
35473      } : {
35474        right: $elem.innerWidth() - elem.clientWidth,
35475        bottom: $elem.innerHeight() - elem.clientHeight
35476      },
35477      rect: isRoot ? {
35478        top: 0,
35479        left: 0,
35480        bottom: elem.clientHeight,
35481        right: elem.clientWidth
35482      } : elem.getBoundingClientRect()
35483    };
35484  };
35485
35486  $.fn.extend({
35487    scrollintoview: function scrollintoview(options) {
35488      /// <summary>Scrolls the first element in the set into view by scrolling its closest scrollable parent.</summary>
35489      /// <param name="options" type="Object">Additional options that can configure scrolling:
35490      ///        duration (default: "fast") - jQuery animation speed (can be a duration string or number of milliseconds)
35491      ///        direction (default: "both") - select possible scrollings ("vertical" or "y", "horizontal" or "x", "both")
35492      ///        complete (default: none) - a function to call when scrolling completes (called in context of the DOM element being scrolled)
35493      /// </param>
35494      /// <return type="jQuery">Returns the same jQuery set that this function was run on.</return>
35495      options = $.extend({}, settings, options);
35496      options.direction = converter[typeof options.direction === "string" && options.direction.toLowerCase()] || converter.both;
35497
35498      if (typeof options.viewPadding == "number") {
35499        options.viewPadding = {
35500          x: options.viewPadding,
35501          y: options.viewPadding
35502        };
35503      } else if (_typeof(options.viewPadding) == "object") {
35504        if (options.viewPadding.x == undefined) {
35505          options.viewPadding.x = 0;
35506        }
35507
35508        if (options.viewPadding.y == undefined) {
35509          options.viewPadding.y = 0;
35510        }
35511      }
35512
35513      var dirStr = "";
35514      if (options.direction.x === true) dirStr = "horizontal";
35515      if (options.direction.y === true) dirStr = dirStr ? "both" : "vertical";
35516      var el = this.eq(0);
35517      var scroller = el.parent().closest(":scrollable(" + dirStr + ")"); // check if there's anything to scroll in the first place
35518
35519      if (scroller.length > 0) {
35520        scroller = scroller.eq(0);
35521        var dim = {
35522          e: dimensions(el),
35523          s: dimensions(scroller)
35524        };
35525        var rel = {
35526          top: dim.e.rect.top - (dim.s.rect.top + dim.s.border.top),
35527          bottom: dim.s.rect.bottom - dim.s.border.bottom - dim.s.scrollbar.bottom - dim.e.rect.bottom,
35528          left: dim.e.rect.left - (dim.s.rect.left + dim.s.border.left),
35529          right: dim.s.rect.right - dim.s.border.right - dim.s.scrollbar.right - dim.e.rect.right
35530        };
35531        var animProperties = {}; // vertical scroll
35532
35533        if (options.direction.y === true) {
35534          if (rel.top < 0) {
35535            animProperties.scrollTop = Math.max(0, dim.s.scroll.top + rel.top - options.viewPadding.y);
35536          } else if (rel.top > 0 && rel.bottom < 0) {
35537            animProperties.scrollTop = Math.min(dim.s.scroll.top + Math.min(rel.top, -rel.bottom) + options.viewPadding.y, dim.s.scroll.maxtop);
35538          }
35539        } // horizontal scroll
35540
35541
35542        if (options.direction.x === true) {
35543          if (rel.left < 0) {
35544            animProperties.scrollLeft = Math.max(0, dim.s.scroll.left + rel.left - options.viewPadding.x);
35545          } else if (rel.left > 0 && rel.right < 0) {
35546            animProperties.scrollLeft = Math.min(dim.s.scroll.left + Math.min(rel.left, -rel.right) + options.viewPadding.x, dim.s.scroll.maxleft);
35547          }
35548        } // scroll if needed
35549
35550
35551        if (!$.isEmptyObject(animProperties)) {
35552          var animateStep = function animateStep(now, tween) {
35553            scrollExpect[tween.prop] = Math.floor(now);
35554          };
35555
35556          var onscroll = function onscroll(event) {
35557            $.each(scrollExpect, function (key, value) {
35558              if (Math.floor(scrollListener[key]()) != Math.floor(value)) {
35559                options.complete = null; // don't run complete function if the scrolling was interrupted
35560
35561                scroller.stop('scrollintoview');
35562              }
35563            });
35564          };
35565
35566          var scrollExpect = {},
35567              scrollListener = scroller;
35568
35569          if (rootrx.test(scroller[0].nodeName)) {
35570            scroller = $("html,body");
35571            scrollListener = $(window);
35572          }
35573
35574          ;
35575          scrollListener.on('scroll', onscroll);
35576          scroller.stop('scrollintoview').animate(animProperties, {
35577            duration: options.duration,
35578            step: animateStep,
35579            queue: 'scrollintoview'
35580          }).eq(0) // we want function to be called just once (ref. "html,body")
35581          .queue('scrollintoview', function (next) {
35582            scrollListener.off('scroll', onscroll);
35583            $.isFunction(options.complete) && options.complete.call(scroller[0]);
35584            next();
35585          });
35586          scroller.dequeue('scrollintoview');
35587        } else {
35588          // when there's nothing to scroll, just call the "complete" function
35589          $.isFunction(options.complete) && options.complete.call(scroller[0]);
35590        }
35591      } // return set back
35592
35593
35594      return this;
35595    }
35596  });
35597  var scrollValue = {
35598    auto: true,
35599    scroll: true,
35600    visible: false,
35601    hidden: false
35602  };
35603
35604  var scroll = function scroll(element, direction) {
35605    direction = converter[typeof direction === "string" && direction.toLowerCase()] || converter.both;
35606    var styles = document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(element, null) : element.currentStyle;
35607    var overflow = {
35608      x: scrollValue[styles.overflowX.toLowerCase()] || false,
35609      y: scrollValue[styles.overflowY.toLowerCase()] || false,
35610      isRoot: rootrx.test(element.nodeName)
35611    }; // check if completely unscrollable (exclude HTML element because it's special)
35612
35613    if (!overflow.x && !overflow.y && !overflow.isRoot) {
35614      return false;
35615    }
35616
35617    var size = {
35618      height: {
35619        scroll: element.scrollHeight,
35620        client: element.clientHeight
35621      },
35622      width: {
35623        scroll: element.scrollWidth,
35624        client: element.clientWidth
35625      },
35626      // check overflow.x/y because iPad (and possibly other tablets) don't dislay scrollbars
35627      scrollableX: function scrollableX() {
35628        return (overflow.x || overflow.isRoot) && this.width.scroll > this.width.client;
35629      },
35630      scrollableY: function scrollableY() {
35631        return (overflow.y || overflow.isRoot) && this.height.scroll > this.height.client;
35632      }
35633    };
35634    return direction.y && size.scrollableY() || direction.x && size.scrollableX();
35635  };
35636
35637  $.expr[":"].scrollable = $.expr.createPseudo(function (direction) {
35638    return function (element) {
35639      return scroll(element, direction);
35640    };
35641  });
35642});
35643
35644/***/ }),
35645
vendor: 317,426 bytes, lines 35646-45120
35646/***/ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js":
35647/*!***************************************************************!*\
35648  !*** ../rvw_autobahn_core/node_modules/jquery/dist/jquery.js ***!
35649  \***************************************************************/
35650/*! no static exports found */
35651/***/ (function(module, exports, __webpack_require__) {
35652
35653/* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
35654
35655/*!
35656 * jQuery JavaScript Library v3.6.0
35657 * https://jquery.com/
35658 *
35659 * Includes Sizzle.js
35660 * https://sizzlejs.com/
35661 *
35662 * Copyright OpenJS Foundation and other contributors
35663 * Released under the MIT license
35664 * https://jquery.org/license
35665 *
35666 * Date: 2021-03-02T17:08Z
35667 */
35668(function (global, factory) {
35669  "use strict";
35670
35671  if (( false ? undefined : _typeof(module)) === "object" && _typeof(module.exports) === "object") {
35672    // For CommonJS and CommonJS-like environments where a proper `window`
35673    // is present, execute the factory and get jQuery.
35674    // For environments that do not have a `window` with a `document`
35675    // (such as Node.js), expose a factory as module.exports.
35676    // This accentuates the need for the creation of a real `window`.
35677    // e.g. var jQuery = require("jquery")(window);
35678    // See ticket #14549 for more info.
35679    module.exports = global.document ? factory(global, true) : function (w) {
35680      if (!w.document) {
35681        throw new Error("jQuery requires a window with a document");
35682      }
35683
35684      return factory(w);
35685    };
35686  } else {
35687    factory(global);
35688  } // Pass this if window is not defined yet
35689
35690})(typeof window !== "undefined" ? window : this, function (window, noGlobal) {
35691  // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
35692  // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
35693  // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
35694  // enough that all such attempts are guarded in a try block.
35695  "use strict";
35696
35697  var arr = [];
35698  var getProto = Object.getPrototypeOf;
35699  var _slice = arr.slice;
35700  var flat = arr.flat ? function (array) {
35701    return arr.flat.call(array);
35702  } : function (array) {
35703    return arr.concat.apply([], array);
35704  };
35705  var push = arr.push;
35706  var indexOf = arr.indexOf;
35707  var class2type = {};
35708  var toString = class2type.toString;
35709  var hasOwn = class2type.hasOwnProperty;
35710  var fnToString = hasOwn.toString;
35711  var ObjectFunctionString = fnToString.call(Object);
35712  var support = {};
35713
35714  var isFunction = function isFunction(obj) {
35715    // Support: Chrome <=57, Firefox <=52
35716    // In some browsers, typeof returns "function" for HTML <object> elements
35717    // (i.e., `typeof document.createElement( "object" ) === "function"`).
35718    // We don't want to classify *any* DOM node as a function.
35719    // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
35720    // Plus for old WebKit, typeof returns "function" for HTML collections
35721    // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
35722    return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function";
35723  };
35724
35725  var isWindow = function isWindow(obj) {
35726    return obj != null && obj === obj.window;
35727  };
35728
35729  var document = window.document;
35730  var preservedScriptAttributes = {
35731    type: true,
35732    src: true,
35733    nonce: true,
35734    noModule: true
35735  };
35736
35737  function DOMEval(code, node, doc) {
35738    doc = doc || document;
35739    var i,
35740        val,
35741        script = doc.createElement("script");
35742    script.text = code;
35743
35744    if (node) {
35745      for (i in preservedScriptAttributes) {
35746        // Support: Firefox 64+, Edge 18+
35747        // Some browsers don't support the "nonce" property on scripts.
35748        // On the other hand, just using `getAttribute` is not enough as
35749        // the `nonce` attribute is reset to an empty string whenever it
35750        // becomes browsing-context connected.
35751        // See https://github.com/whatwg/html/issues/2369
35752        // See https://html.spec.whatwg.org/#nonce-attributes
35753        // The `node.getAttribute` check was added for the sake of
35754        // `jQuery.globalEval` so that it can fake a nonce-containing node
35755        // via an object.
35756        val = node[i] || node.getAttribute && node.getAttribute(i);
35757
35758        if (val) {
35759          script.setAttribute(i, val);
35760        }
35761      }
35762    }
35763
35764    doc.head.appendChild(script).parentNode.removeChild(script);
35765  }
35766
35767  function toType(obj) {
35768    if (obj == null) {
35769      return obj + "";
35770    } // Support: Android <=2.3 only (functionish RegExp)
35771
35772
35773    return _typeof(obj) === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : _typeof(obj);
35774  }
35775  /* global Symbol */
35776  // Defining this global in .eslintrc.json would create a danger of using the global
35777  // unguarded in another place, it seems safer to define global only for this module
35778
35779
35780  var version = "3.6.0",
35781      // Define a local copy of jQuery
35782  jQuery = function jQuery(selector, context) {
35783    // The jQuery object is actually just the init constructor 'enhanced'
35784    // Need init if jQuery is called (just allow error to be thrown if not included)
35785    return new jQuery.fn.init(selector, context);
35786  };
35787
35788  jQuery.fn = jQuery.prototype = {
35789    // The current version of jQuery being used
35790    jquery: version,
35791    constructor: jQuery,
35792    // The default length of a jQuery object is 0
35793    length: 0,
35794    toArray: function toArray() {
35795      return _slice.call(this);
35796    },
35797    // Get the Nth element in the matched element set OR
35798    // Get the whole matched element set as a clean array
35799    get: function get(num) {
35800      // Return all the elements in a clean array
35801      if (num == null) {
35802        return _slice.call(this);
35803      } // Return just the one element from the set
35804
35805
35806      return num < 0 ? this[num + this.length] : this[num];
35807    },
35808    // Take an array of elements and push it onto the stack
35809    // (returning the new matched element set)
35810    pushStack: function pushStack(elems) {
35811      // Build a new jQuery matched element set
35812      var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)
35813
35814      ret.prevObject = this; // Return the newly-formed element set
35815
35816      return ret;
35817    },
35818    // Execute a callback for every element in the matched set.
35819    each: function each(callback) {
35820      return jQuery.each(this, callback);
35821    },
35822    map: function map(callback) {
35823      return this.pushStack(jQuery.map(this, function (elem, i) {
35824        return callback.call(elem, i, elem);
35825      }));
35826    },
35827    slice: function slice() {
35828      return this.pushStack(_slice.apply(this, arguments));
35829    },
35830    first: function first() {
35831      return this.eq(0);
35832    },
35833    last: function last() {
35834      return this.eq(-1);
35835    },
35836    even: function even() {
35837      return this.pushStack(jQuery.grep(this, function (_elem, i) {
35838        return (i + 1) % 2;
35839      }));
35840    },
35841    odd: function odd() {
35842      return this.pushStack(jQuery.grep(this, function (_elem, i) {
35843        return i % 2;
35844      }));
35845    },
35846    eq: function eq(i) {
35847      var len = this.length,
35848          j = +i + (i < 0 ? len : 0);
35849      return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
35850    },
35851    end: function end() {
35852      return this.prevObject || this.constructor();
35853    },
35854    // For internal use only.
35855    // Behaves like an Array's method, not like a jQuery method.
35856    push: push,
35857    sort: arr.sort,
35858    splice: arr.splice
35859  };
35860
35861  jQuery.extend = jQuery.fn.extend = function () {
35862    var options,
35863        name,
35864        src,
35865        copy,
35866        copyIsArray,
35867        clone,
35868        target = arguments[0] || {},
35869        i = 1,
35870        length = arguments.length,
35871        deep = false; // Handle a deep copy situation
35872
35873    if (typeof target === "boolean") {
35874      deep = target; // Skip the boolean and the target
35875
35876      target = arguments[i] || {};
35877      i++;
35878    } // Handle case when target is a string or something (possible in deep copy)
35879
35880
35881    if (_typeof(target) !== "object" && !isFunction(target)) {
35882      target = {};
35883    } // Extend jQuery itself if only one argument is passed
35884
35885
35886    if (i === length) {
35887      target = this;
35888      i--;
35889    }
35890
35891    for (; i < length; i++) {
35892      // Only deal with non-null/undefined values
35893      if ((options = arguments[i]) != null) {
35894        // Extend the base object
35895        for (name in options) {
35896          copy = options[name]; // Prevent Object.prototype pollution
35897          // Prevent never-ending loop
35898
35899          if (name === "__proto__" || target === copy) {
35900            continue;
35901          } // Recurse if we're merging plain objects or arrays
35902
35903
35904          if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
35905            src = target[name]; // Ensure proper type for the source value
35906
35907            if (copyIsArray && !Array.isArray(src)) {
35908              clone = [];
35909            } else if (!copyIsArray && !jQuery.isPlainObject(src)) {
35910              clone = {};
35911            } else {
35912              clone = src;
35913            }
35914
35915            copyIsArray = false; // Never move original objects, clone them
35916
35917            target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values
35918          } else if (copy !== undefined) {
35919            target[name] = copy;
35920          }
35921        }
35922      }
35923    } // Return the modified object
35924
35925
35926    return target;
35927  };
35928
35929  jQuery.extend({
35930    // Unique for each copy of jQuery on the page
35931    expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
35932    // Assume jQuery is ready without the ready module
35933    isReady: true,
35934    error: function error(msg) {
35935      throw new Error(msg);
35936    },
35937    noop: function noop() {},
35938    isPlainObject: function isPlainObject(obj) {
35939      var proto, Ctor; // Detect obvious negatives
35940      // Use toString instead of jQuery.type to catch host objects
35941
35942      if (!obj || toString.call(obj) !== "[object Object]") {
35943        return false;
35944      }
35945
35946      proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain
35947
35948      if (!proto) {
35949        return true;
35950      } // Objects with prototype are plain iff they were constructed by a global Object function
35951
35952
35953      Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
35954      return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString;
35955    },
35956    isEmptyObject: function isEmptyObject(obj) {
35957      var name;
35958
35959      for (name in obj) {
35960        return false;
35961      }
35962
35963      return true;
35964    },
35965    // Evaluates a script in a provided context; falls back to the global one
35966    // if not specified.
35967    globalEval: function globalEval(code, options, doc) {
35968      DOMEval(code, {
35969        nonce: options && options.nonce
35970      }, doc);
35971    },
35972    each: function each(obj, callback) {
35973      var length,
35974          i = 0;
35975
35976      if (isArrayLike(obj)) {
35977        length = obj.length;
35978
35979        for (; i < length; i++) {
35980          if (callback.call(obj[i], i, obj[i]) === false) {
35981            break;
35982          }
35983        }
35984      } else {
35985        for (i in obj) {
35986          if (callback.call(obj[i], i, obj[i]) === false) {
35987            break;
35988          }
35989        }
35990      }
35991
35992      return obj;
35993    },
35994    // results is for internal usage only
35995    makeArray: function makeArray(arr, results) {
35996      var ret = results || [];
35997
35998      if (arr != null) {
35999        if (isArrayLike(Object(arr))) {
36000          jQuery.merge(ret, typeof arr === "string" ? [arr] : arr);
36001        } else {
36002          push.call(ret, arr);
36003        }
36004      }
36005
36006      return ret;
36007    },
36008    inArray: function inArray(elem, arr, i) {
36009      return arr == null ? -1 : indexOf.call(arr, elem, i);
36010    },
36011    // Support: Android <=4.0 only, PhantomJS 1 only
36012    // push.apply(_, arraylike) throws on ancient WebKit
36013    merge: function merge(first, second) {
36014      var len = +second.length,
36015          j = 0,
36016          i = first.length;
36017
36018      for (; j < len; j++) {
36019        first[i++] = second[j];
36020      }
36021
36022      first.length = i;
36023      return first;
36024    },
36025    grep: function grep(elems, callback, invert) {
36026      var callbackInverse,
36027          matches = [],
36028          i = 0,
36029          length = elems.length,
36030          callbackExpect = !invert; // Go through the array, only saving the items
36031      // that pass the validator function
36032
36033      for (; i < length; i++) {
36034        callbackInverse = !callback(elems[i], i);
36035
36036        if (callbackInverse !== callbackExpect) {
36037          matches.push(elems[i]);
36038        }
36039      }
36040
36041      return matches;
36042    },
36043    // arg is for internal usage only
36044    map: function map(elems, callback, arg) {
36045      var length,
36046          value,
36047          i = 0,
36048          ret = []; // Go through the array, translating each of the items to their new values
36049
36050      if (isArrayLike(elems)) {
36051        length = elems.length;
36052
36053        for (; i < length; i++) {
36054          value = callback(elems[i], i, arg);
36055
36056          if (value != null) {
36057            ret.push(value);
36058          }
36059        } // Go through every key on the object,
36060
36061      } else {
36062        for (i in elems) {
36063          value = callback(elems[i], i, arg);
36064
36065          if (value != null) {
36066            ret.push(value);
36067          }
36068        }
36069      } // Flatten any nested arrays
36070
36071
36072      return flat(ret);
36073    },
36074    // A global GUID counter for objects
36075    guid: 1,
36076    // jQuery.support is not used in Core but other projects attach their
36077    // properties to it so it needs to exist.
36078    support: support
36079  });
36080
36081  if (typeof Symbol === "function") {
36082    jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
36083  } // Populate the class2type map
36084
36085
36086  jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (_i, name) {
36087    class2type["[object " + name + "]"] = name.toLowerCase();
36088  });
36089
36090  function isArrayLike(obj) {
36091    // Support: real iOS 8.2 only (not reproducible in simulator)
36092    // `in` check used to prevent JIT error (gh-2145)
36093    // hasOwn isn't used here due to false negatives
36094    // regarding Nodelist length in IE
36095    var length = !!obj && "length" in obj && obj.length,
36096        type = toType(obj);
36097
36098    if (isFunction(obj) || isWindow(obj)) {
36099      return false;
36100    }
36101
36102    return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;
36103  }
36104
36105  var Sizzle =
36106  /*!
36107   * Sizzle CSS Selector Engine v2.3.6
36108   * https://sizzlejs.com/
36109   *
36110   * Copyright JS Foundation and other contributors
36111   * Released under the MIT license
36112   * https://js.foundation/
36113   *
36114   * Date: 2021-02-16
36115   */
36116  function (window) {
36117    var i,
36118        support,
36119        Expr,
36120        getText,
36121        isXML,
36122        tokenize,
36123        compile,
36124        select,
36125        outermostContext,
36126        sortInput,
36127        hasDuplicate,
36128        // Local document vars
36129    setDocument,
36130        document,
36131        docElem,
36132        documentIsHTML,
36133        rbuggyQSA,
36134        rbuggyMatches,
36135        matches,
36136        contains,
36137        // Instance-specific data
36138    expando = "sizzle" + 1 * new Date(),
36139        preferredDoc = window.document,
36140        dirruns = 0,
36141        done = 0,
36142        classCache = createCache(),
36143        tokenCache = createCache(),
36144        compilerCache = createCache(),
36145        nonnativeSelectorCache = createCache(),
36146        sortOrder = function sortOrder(a, b) {
36147      if (a === b) {
36148        hasDuplicate = true;
36149      }
36150
36151      return 0;
36152    },
36153        // Instance methods
36154    hasOwn = {}.hasOwnProperty,
36155        arr = [],
36156        pop = arr.pop,
36157        pushNative = arr.push,
36158        push = arr.push,
36159        slice = arr.slice,
36160        // Use a stripped-down indexOf as it's faster than native
36161    // https://jsperf.com/thor-indexof-vs-for/5
36162    indexOf = function indexOf(list, elem) {
36163      var i = 0,
36164          len = list.length;
36165
36166      for (; i < len; i++) {
36167        if (list[i] === elem) {
36168          return i;
36169        }
36170      }
36171
36172      return -1;
36173    },
36174        booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + "ismap|loop|multiple|open|readonly|required|scoped",
36175        // Regular expressions
36176    // http://www.w3.org/TR/css3-selectors/#whitespace
36177    whitespace = "[\\x20\\t\\r\\n\\f]",
36178        // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
36179    identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
36180        // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
36181    attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2)
36182    "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5]
36183    // or strings [capture 3 or capture 4]"
36184    "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]",
36185        pseudos = ":(" + identifier + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
36186    // 1. quoted (capture 3; capture 4 or capture 5)
36187    "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6)
36188    "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2)
36189    ".*" + ")\\)|)",
36190        // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
36191    rwhitespace = new RegExp(whitespace + "+", "g"),
36192        rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"),
36193        rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
36194        rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
36195        rdescend = new RegExp(whitespace + "|>"),
36196        rpseudo = new RegExp(pseudos),
36197        ridentifier = new RegExp("^" + identifier + "$"),
36198        matchExpr = {
36199      "ID": new RegExp("^#(" + identifier + ")"),
36200      "CLASS": new RegExp("^\\.(" + identifier + ")"),
36201      "TAG": new RegExp("^(" + identifier + "|[*])"),
36202      "ATTR": new RegExp("^" + attributes),
36203      "PSEUDO": new RegExp("^" + pseudos),
36204      "CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
36205      "bool": new RegExp("^(?:" + booleans + ")$", "i"),
36206      // For use in libraries implementing .is()
36207      // We use this for POS matching in `select`
36208      "needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
36209    },
36210        rhtml = /HTML$/i,
36211        rinputs = /^(?:input|select|textarea|button)$/i,
36212        rheader = /^h\d$/i,
36213        rnative = /^[^{]+\{\s*\[native \w/,
36214        // Easily-parseable/retrievable ID or TAG or CLASS selectors
36215    rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
36216        rsibling = /[+~]/,
36217        // CSS escapes
36218    // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
36219    runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"),
36220        funescape = function funescape(escape, nonHex) {
36221      var high = "0x" + escape.slice(1) - 0x10000;
36222      return nonHex ? // Strip the backslash prefix from a non-hex escape sequence
36223      nonHex : // Replace a hexadecimal escape sequence with the encoded Unicode code point
36224      // Support: IE <=11+
36225      // For values outside the Basic Multilingual Plane (BMP), manually construct a
36226      // surrogate pair
36227      high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
36228    },
36229        // CSS string/identifier serialization
36230    // https://drafts.csswg.org/cssom/#common-serializing-idioms
36231    rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
36232        fcssescape = function fcssescape(ch, asCodePoint) {
36233      if (asCodePoint) {
36234        // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
36235        if (ch === "\0") {
36236          return "\uFFFD";
36237        } // Control characters and (dependent upon position) numbers get escaped as code points
36238
36239
36240        return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
36241      } // Other potentially-special ASCII characters get backslash-escaped
36242
36243
36244      return "\\" + ch;
36245    },
36246        // Used for iframes
36247    // See setDocument()
36248    // Removing the function wrapper causes a "Permission Denied"
36249    // error in IE
36250    unloadHandler = function unloadHandler() {
36251      setDocument();
36252    },
36253        inDisabledFieldset = addCombinator(function (elem) {
36254      return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
36255    }, {
36256      dir: "parentNode",
36257      next: "legend"
36258    }); // Optimize for push.apply( _, NodeList )
36259
36260
36261    try {
36262      push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0
36263      // Detect silently failing push.apply
36264      // eslint-disable-next-line no-unused-expressions
36265
36266      arr[preferredDoc.childNodes.length].nodeType;
36267    } catch (e) {
36268      push = {
36269        apply: arr.length ? // Leverage slice if possible
36270        function (target, els) {
36271          pushNative.apply(target, slice.call(els));
36272        } : // Support: IE<9
36273        // Otherwise append directly
36274        function (target, els) {
36275          var j = target.length,
36276              i = 0; // Can't trust NodeList.length
36277
36278          while (target[j++] = els[i++]) {}
36279
36280          target.length = j - 1;
36281        }
36282      };
36283    }
36284
36285    function Sizzle(selector, context, results, seed) {
36286      var m,
36287          i,
36288          elem,
36289          nid,
36290          match,
36291          groups,
36292          newSelector,
36293          newContext = context && context.ownerDocument,
36294          // nodeType defaults to 9, since context defaults to document
36295      nodeType = context ? context.nodeType : 9;
36296      results = results || []; // Return early from calls with invalid selector or context
36297
36298      if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
36299        return results;
36300      } // Try to shortcut find operations (as opposed to filters) in HTML documents
36301
36302
36303      if (!seed) {
36304        setDocument(context);
36305        context = context || document;
36306
36307        if (documentIsHTML) {
36308          // If the selector is sufficiently simple, try using a "get*By*" DOM method
36309          // (excepting DocumentFragment context, where the methods don't exist)
36310          if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {
36311            // ID selector
36312            if (m = match[1]) {
36313              // Document context
36314              if (nodeType === 9) {
36315                if (elem = context.getElementById(m)) {
36316                  // Support: IE, Opera, Webkit
36317                  // TODO: identify versions
36318                  // getElementById can match elements by name instead of ID
36319                  if (elem.id === m) {
36320                    results.push(elem);
36321                    return results;
36322                  }
36323                } else {
36324                  return results;
36325                } // Element context
36326
36327              } else {
36328                // Support: IE, Opera, Webkit
36329                // TODO: identify versions
36330                // getElementById can match elements by name instead of ID
36331                if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {
36332                  results.push(elem);
36333                  return results;
36334                }
36335              } // Type selector
36336
36337            } else if (match[2]) {
36338              push.apply(results, context.getElementsByTagName(selector));
36339              return results; // Class selector
36340            } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {
36341              push.apply(results, context.getElementsByClassName(m));
36342              return results;
36343            }
36344          } // Take advantage of querySelectorAll
36345
36346
36347          if (support.qsa && !nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && ( // Support: IE 8 only
36348          // Exclude object elements
36349          nodeType !== 1 || context.nodeName.toLowerCase() !== "object")) {
36350            newSelector = selector;
36351            newContext = context; // qSA considers elements outside a scoping root when evaluating child or
36352            // descendant combinators, which is not what we want.
36353            // In such cases, we work around the behavior by prefixing every selector in the
36354            // list with an ID selector referencing the scope context.
36355            // The technique has to be used as well when a leading combinator is used
36356            // as such selectors are not recognized by querySelectorAll.
36357            // Thanks to Andrew Dupont for this technique.
36358
36359            if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {
36360              // Expand context for sibling selectors
36361              newContext = rsibling.test(selector) && testContext(context.parentNode) || context; // We can use :scope instead of the ID hack if the browser
36362              // supports it & if we're not changing the context.
36363
36364              if (newContext !== context || !support.scope) {
36365                // Capture the context ID, setting it first if necessary
36366                if (nid = context.getAttribute("id")) {
36367                  nid = nid.replace(rcssescape, fcssescape);
36368                } else {
36369                  context.setAttribute("id", nid = expando);
36370                }
36371              } // Prefix every selector in the list
36372
36373
36374              groups = tokenize(selector);
36375              i = groups.length;
36376
36377              while (i--) {
36378                groups[i] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i]);
36379              }
36380
36381              newSelector = groups.join(",");
36382            }
36383
36384            try {
36385              push.apply(results, newContext.querySelectorAll(newSelector));
36386              return results;
36387            } catch (qsaError) {
36388              nonnativeSelectorCache(selector, true);
36389            } finally {
36390              if (nid === expando) {
36391                context.removeAttribute("id");
36392              }
36393            }
36394          }
36395        }
36396      } // All others
36397
36398
36399      return select(selector.replace(rtrim, "$1"), context, results, seed);
36400    }
36401    /**
36402     * Create key-value caches of limited size
36403     * @returns {function(string, object)} Returns the Object data after storing it on itself with
36404     *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
36405     *	deleting the oldest entry
36406     */
36407
36408
36409    function createCache() {
36410      var keys = [];
36411
36412      function cache(key, value) {
36413        // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
36414        if (keys.push(key + " ") > Expr.cacheLength) {
36415          // Only keep the most recent entries
36416          delete cache[keys.shift()];
36417        }
36418
36419        return cache[key + " "] = value;
36420      }
36421
36422      return cache;
36423    }
36424    /**
36425     * Mark a function for special use by Sizzle
36426     * @param {Function} fn The function to mark
36427     */
36428
36429
36430    function markFunction(fn) {
36431      fn[expando] = true;
36432      return fn;
36433    }
36434    /**
36435     * Support testing using an element
36436     * @param {Function} fn Passed the created element and returns a boolean result
36437     */
36438
36439
36440    function assert(fn) {
36441      var el = document.createElement("fieldset");
36442
36443      try {
36444        return !!fn(el);
36445      } catch (e) {
36446        return false;
36447      } finally {
36448        // Remove from its parent by default
36449        if (el.parentNode) {
36450          el.parentNode.removeChild(el);
36451        } // release memory in IE
36452
36453
36454        el = null;
36455      }
36456    }
36457    /**
36458     * Adds the same handler for all of the specified attrs
36459     * @param {String} attrs Pipe-separated list of attributes
36460     * @param {Function} handler The method that will be applied
36461     */
36462
36463
36464    function addHandle(attrs, handler) {
36465      var arr = attrs.split("|"),
36466          i = arr.length;
36467
36468      while (i--) {
36469        Expr.attrHandle[arr[i]] = handler;
36470      }
36471    }
36472    /**
36473     * Checks document order of two siblings
36474     * @param {Element} a
36475     * @param {Element} b
36476     * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
36477     */
36478
36479
36480    function siblingCheck(a, b) {
36481      var cur = b && a,
36482          diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes
36483
36484      if (diff) {
36485        return diff;
36486      } // Check if b follows a
36487
36488
36489      if (cur) {
36490        while (cur = cur.nextSibling) {
36491          if (cur === b) {
36492            return -1;
36493          }
36494        }
36495      }
36496
36497      return a ? 1 : -1;
36498    }
36499    /**
36500     * Returns a function to use in pseudos for input types
36501     * @param {String} type
36502     */
36503
36504
36505    function createInputPseudo(type) {
36506      return function (elem) {
36507        var name = elem.nodeName.toLowerCase();
36508        return name === "input" && elem.type === type;
36509      };
36510    }
36511    /**
36512     * Returns a function to use in pseudos for buttons
36513     * @param {String} type
36514     */
36515
36516
36517    function createButtonPseudo(type) {
36518      return function (elem) {
36519        var name = elem.nodeName.toLowerCase();
36520        return (name === "input" || name === "button") && elem.type === type;
36521      };
36522    }
36523    /**
36524     * Returns a function to use in pseudos for :enabled/:disabled
36525     * @param {Boolean} disabled true for :disabled; false for :enabled
36526     */
36527
36528
36529    function createDisabledPseudo(disabled) {
36530      // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
36531      return function (elem) {
36532        // Only certain elements can match :enabled or :disabled
36533        // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
36534        // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
36535        if ("form" in elem) {
36536          // Check for inherited disabledness on relevant non-disabled elements:
36537          // * listed form-associated elements in a disabled fieldset
36538          //   https://html.spec.whatwg.org/multipage/forms.html#category-listed
36539          //   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
36540          // * option elements in a disabled optgroup
36541          //   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
36542          // All such elements have a "form" property.
36543          if (elem.parentNode && elem.disabled === false) {
36544            // Option elements defer to a parent optgroup if present
36545            if ("label" in elem) {
36546              if ("label" in elem.parentNode) {
36547                return elem.parentNode.disabled === disabled;
36548              } else {
36549                return elem.disabled === disabled;
36550              }
36551            } // Support: IE 6 - 11
36552            // Use the isDisabled shortcut property to check for disabled fieldset ancestors
36553
36554
36555            return elem.isDisabled === disabled || // Where there is no isDisabled, check manually
36556
36557            /* jshint -W018 */
36558            elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;
36559          }
36560
36561          return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.
36562          // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
36563          // even exist on them, let alone have a boolean value.
36564        } else if ("label" in elem) {
36565          return elem.disabled === disabled;
36566        } // Remaining elements are neither :enabled nor :disabled
36567
36568
36569        return false;
36570      };
36571    }
36572    /**
36573     * Returns a function to use in pseudos for positionals
36574     * @param {Function} fn
36575     */
36576
36577
36578    function createPositionalPseudo(fn) {
36579      return markFunction(function (argument) {
36580        argument = +argument;
36581        return markFunction(function (seed, matches) {
36582          var j,
36583              matchIndexes = fn([], seed.length, argument),
36584              i = matchIndexes.length; // Match elements found at the specified indexes
36585
36586          while (i--) {
36587            if (seed[j = matchIndexes[i]]) {
36588              seed[j] = !(matches[j] = seed[j]);
36589            }
36590          }
36591        });
36592      });
36593    }
36594    /**
36595     * Checks a node for validity as a Sizzle context
36596     * @param {Element|Object=} context
36597     * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
36598     */
36599
36600
36601    function testContext(context) {
36602      return context && typeof context.getElementsByTagName !== "undefined" && context;
36603    } // Expose support vars for convenience
36604
36605
36606    support = Sizzle.support = {};
36607    /**
36608     * Detects XML nodes
36609     * @param {Element|Object} elem An element or a document
36610     * @returns {Boolean} True iff elem is a non-HTML XML node
36611     */
36612
36613    isXML = Sizzle.isXML = function (elem) {
36614      var namespace = elem && elem.namespaceURI,
36615          docElem = elem && (elem.ownerDocument || elem).documentElement; // Support: IE <=8
36616      // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
36617      // https://bugs.jquery.com/ticket/4833
36618
36619      return !rhtml.test(namespace || docElem && docElem.nodeName || "HTML");
36620    };
36621    /**
36622     * Sets document-related variables once based on the current document
36623     * @param {Element|Object} [doc] An element or document object to use to set the document
36624     * @returns {Object} Returns the current document
36625     */
36626
36627
36628    setDocument = Sizzle.setDocument = function (node) {
36629      var hasCompare,
36630          subWindow,
36631          doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected
36632      // Support: IE 11+, Edge 17 - 18+
36633      // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
36634      // two documents; shallow comparisons work.
36635      // eslint-disable-next-line eqeqeq
36636
36637      if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {
36638        return document;
36639      } // Update global variables
36640
36641
36642      document = doc;
36643      docElem = document.documentElement;
36644      documentIsHTML = !isXML(document); // Support: IE 9 - 11+, Edge 12 - 18+
36645      // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
36646      // Support: IE 11+, Edge 17 - 18+
36647      // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
36648      // two documents; shallow comparisons work.
36649      // eslint-disable-next-line eqeqeq
36650
36651      if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {
36652        // Support: IE 11, Edge
36653        if (subWindow.addEventListener) {
36654          subWindow.addEventListener("unload", unloadHandler, false); // Support: IE 9 - 10 only
36655        } else if (subWindow.attachEvent) {
36656          subWindow.attachEvent("onunload", unloadHandler);
36657        }
36658      } // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
36659      // Safari 4 - 5 only, Opera <=11.6 - 12.x only
36660      // IE/Edge & older browsers don't support the :scope pseudo-class.
36661      // Support: Safari 6.0 only
36662      // Safari 6.0 supports :scope but it's an alias of :root there.
36663
36664
36665      support.scope = assert(function (el) {
36666        docElem.appendChild(el).appendChild(document.createElement("div"));
36667        return typeof el.querySelectorAll !== "undefined" && !el.querySelectorAll(":scope fieldset div").length;
36668      });
36669      /* Attributes
36670      ---------------------------------------------------------------------- */
36671      // Support: IE<8
36672      // Verify that getAttribute really returns attributes and not properties
36673      // (excepting IE8 booleans)
36674
36675      support.attributes = assert(function (el) {
36676        el.className = "i";
36677        return !el.getAttribute("className");
36678      });
36679      /* getElement(s)By*
36680      ---------------------------------------------------------------------- */
36681      // Check if getElementsByTagName("*") returns only elements
36682
36683      support.getElementsByTagName = assert(function (el) {
36684        el.appendChild(document.createComment(""));
36685        return !el.getElementsByTagName("*").length;
36686      }); // Support: IE<9
36687
36688      support.getElementsByClassName = rnative.test(document.getElementsByClassName); // Support: IE<10
36689      // Check if getElementById returns elements by name
36690      // The broken getElementById methods don't pick up programmatically-set names,
36691      // so use a roundabout getElementsByName test
36692
36693      support.getById = assert(function (el) {
36694        docElem.appendChild(el).id = expando;
36695        return !document.getElementsByName || !document.getElementsByName(expando).length;
36696      }); // ID filter and find
36697
36698      if (support.getById) {
36699        Expr.filter["ID"] = function (id) {
36700          var attrId = id.replace(runescape, funescape);
36701          return function (elem) {
36702            return elem.getAttribute("id") === attrId;
36703          };
36704        };
36705
36706        Expr.find["ID"] = function (id, context) {
36707          if (typeof context.getElementById !== "undefined" && documentIsHTML) {
36708            var elem = context.getElementById(id);
36709            return elem ? [elem] : [];
36710          }
36711        };
36712      } else {
36713        Expr.filter["ID"] = function (id) {
36714          var attrId = id.replace(runescape, funescape);
36715          return function (elem) {
36716            var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
36717            return node && node.value === attrId;
36718          };
36719        }; // Support: IE 6 - 7 only
36720        // getElementById is not reliable as a find shortcut
36721
36722
36723        Expr.find["ID"] = function (id, context) {
36724          if (typeof context.getElementById !== "undefined" && documentIsHTML) {
36725            var node,
36726                i,
36727                elems,
36728                elem = context.getElementById(id);
36729
36730            if (elem) {
36731              // Verify the id attribute
36732              node = elem.getAttributeNode("id");
36733
36734              if (node && node.value === id) {
36735                return [elem];
36736              } // Fall back on getElementsByName
36737
36738
36739              elems = context.getElementsByName(id);
36740              i = 0;
36741
36742              while (elem = elems[i++]) {
36743                node = elem.getAttributeNode("id");
36744
36745                if (node && node.value === id) {
36746                  return [elem];
36747                }
36748              }
36749            }
36750
36751            return [];
36752          }
36753        };
36754      } // Tag
36755
36756
36757      Expr.find["TAG"] = support.getElementsByTagName ? function (tag, context) {
36758        if (typeof context.getElementsByTagName !== "undefined") {
36759          return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN
36760        } else if (support.qsa) {
36761          return context.querySelectorAll(tag);
36762        }
36763      } : function (tag, context) {
36764        var elem,
36765            tmp = [],
36766            i = 0,
36767            // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
36768        results = context.getElementsByTagName(tag); // Filter out possible comments
36769
36770        if (tag === "*") {
36771          while (elem = results[i++]) {
36772            if (elem.nodeType === 1) {
36773              tmp.push(elem);
36774            }
36775          }
36776
36777          return tmp;
36778        }
36779
36780        return results;
36781      }; // Class
36782
36783      Expr.find["CLASS"] = support.getElementsByClassName && function (className, context) {
36784        if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
36785          return context.getElementsByClassName(className);
36786        }
36787      };
36788      /* QSA/matchesSelector
36789      ---------------------------------------------------------------------- */
36790      // QSA and matchesSelector support
36791      // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
36792
36793
36794      rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21)
36795      // We allow this because of a bug in IE8/9 that throws an error
36796      // whenever `document.activeElement` is accessed on an iframe
36797      // So, we allow :focus to pass through QSA all the time to avoid the IE error
36798      // See https://bugs.jquery.com/ticket/13378
36799
36800      rbuggyQSA = [];
36801
36802      if (support.qsa = rnative.test(document.querySelectorAll)) {
36803        // Build QSA regex
36804        // Regex strategy adopted from Diego Perini
36805        assert(function (el) {
36806          var input; // Select is set to empty string on purpose
36807          // This is to test IE's treatment of not explicitly
36808          // setting a boolean content attribute,
36809          // since its presence should be enough
36810          // https://bugs.jquery.com/ticket/12359
36811
36812          docElem.appendChild(el).innerHTML = "<a id='" + expando + "'></a>" + "<select id='" + expando + "-\r\\' msallowcapture=''>" + "<option selected=''></option></select>"; // Support: IE8, Opera 11-12.16
36813          // Nothing should be selected when empty strings follow ^= or $= or *=
36814          // The test attribute must be unknown in Opera but "safe" for WinRT
36815          // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
36816
36817          if (el.querySelectorAll("[msallowcapture^='']").length) {
36818            rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")");
36819          } // Support: IE8
36820          // Boolean attributes and "value" are not treated correctly
36821
36822
36823          if (!el.querySelectorAll("[selected]").length) {
36824            rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
36825          } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
36826
36827
36828          if (!el.querySelectorAll("[id~=" + expando + "-]").length) {
36829            rbuggyQSA.push("~=");
36830          } // Support: IE 11+, Edge 15 - 18+
36831          // IE 11/Edge don't find elements on a `[name='']` query in some cases.
36832          // Adding a temporary attribute to the document before the selection works
36833          // around the issue.
36834          // Interestingly, IE 10 & older don't seem to have the issue.
36835
36836
36837          input = document.createElement("input");
36838          input.setAttribute("name", "");
36839          el.appendChild(input);
36840
36841          if (!el.querySelectorAll("[name='']").length) {
36842            rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + "*(?:''|\"\")");
36843          } // Webkit/Opera - :checked should return selected option elements
36844          // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
36845          // IE8 throws error here and will not see later tests
36846
36847
36848          if (!el.querySelectorAll(":checked").length) {
36849            rbuggyQSA.push(":checked");
36850          } // Support: Safari 8+, iOS 8+
36851          // https://bugs.webkit.org/show_bug.cgi?id=136851
36852          // In-page `selector#id sibling-combinator selector` fails
36853
36854
36855          if (!el.querySelectorAll("a#" + expando + "+*").length) {
36856            rbuggyQSA.push(".#.+[+~]");
36857          } // Support: Firefox <=3.6 - 5 only
36858          // Old Firefox doesn't throw on a badly-escaped identifier.
36859
36860
36861          el.querySelectorAll("\\\f");
36862          rbuggyQSA.push("[\\r\\n\\f]");
36863        });
36864        assert(function (el) {
36865          el.innerHTML = "<a href='' disabled='disabled'></a>" + "<select disabled='disabled'><option/></select>"; // Support: Windows 8 Native Apps
36866          // The type and name attributes are restricted during .innerHTML assignment
36867
36868          var input = document.createElement("input");
36869          input.setAttribute("type", "hidden");
36870          el.appendChild(input).setAttribute("name", "D"); // Support: IE8
36871          // Enforce case-sensitivity of name attribute
36872
36873          if (el.querySelectorAll("[name=d]").length) {
36874            rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?=");
36875          } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
36876          // IE8 throws error here and will not see later tests
36877
36878
36879          if (el.querySelectorAll(":enabled").length !== 2) {
36880            rbuggyQSA.push(":enabled", ":disabled");
36881          } // Support: IE9-11+
36882          // IE's :disabled selector does not pick up the children of disabled fieldsets
36883
36884
36885          docElem.appendChild(el).disabled = true;
36886
36887          if (el.querySelectorAll(":disabled").length !== 2) {
36888            rbuggyQSA.push(":enabled", ":disabled");
36889          } // Support: Opera 10 - 11 only
36890          // Opera 10-11 does not throw on post-comma invalid pseudos
36891
36892
36893          el.querySelectorAll("*,:x");
36894          rbuggyQSA.push(",.*:");
36895        });
36896      }
36897
36898      if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {
36899        assert(function (el) {
36900          // Check to see if it's possible to do matchesSelector
36901          // on a disconnected node (IE 9)
36902          support.disconnectedMatch = matches.call(el, "*"); // This should fail with an exception
36903          // Gecko does not error, returns false instead
36904
36905          matches.call(el, "[s!='']:x");
36906          rbuggyMatches.push("!=", pseudos);
36907        });
36908      }
36909
36910      rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
36911      rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|"));
36912      /* Contains
36913      ---------------------------------------------------------------------- */
36914
36915      hasCompare = rnative.test(docElem.compareDocumentPosition); // Element contains another
36916      // Purposefully self-exclusive
36917      // As in, an element does not contain itself
36918
36919      contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {
36920        var adown = a.nodeType === 9 ? a.documentElement : a,
36921            bup = b && b.parentNode;
36922        return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
36923      } : function (a, b) {
36924        if (b) {
36925          while (b = b.parentNode) {
36926            if (b === a) {
36927              return true;
36928            }
36929          }
36930        }
36931
36932        return false;
36933      };
36934      /* Sorting
36935      ---------------------------------------------------------------------- */
36936      // Document order sorting
36937
36938      sortOrder = hasCompare ? function (a, b) {
36939        // Flag for duplicate removal
36940        if (a === b) {
36941          hasDuplicate = true;
36942          return 0;
36943        } // Sort on method existence if only one input has compareDocumentPosition
36944
36945
36946        var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
36947
36948        if (compare) {
36949          return compare;
36950        } // Calculate position if both inputs belong to the same document
36951        // Support: IE 11+, Edge 17 - 18+
36952        // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
36953        // two documents; shallow comparisons work.
36954        // eslint-disable-next-line eqeqeq
36955
36956
36957        compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected
36958        1; // Disconnected nodes
36959
36960        if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
36961          // Choose the first element that is related to our preferred document
36962          // Support: IE 11+, Edge 17 - 18+
36963          // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
36964          // two documents; shallow comparisons work.
36965          // eslint-disable-next-line eqeqeq
36966          if (a == document || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) {
36967            return -1;
36968          } // Support: IE 11+, Edge 17 - 18+
36969          // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
36970          // two documents; shallow comparisons work.
36971          // eslint-disable-next-line eqeqeq
36972
36973
36974          if (b == document || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) {
36975            return 1;
36976          } // Maintain original order
36977
36978
36979          return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
36980        }
36981
36982        return compare & 4 ? -1 : 1;
36983      } : function (a, b) {
36984        // Exit early if the nodes are identical
36985        if (a === b) {
36986          hasDuplicate = true;
36987          return 0;
36988        }
36989
36990        var cur,
36991            i = 0,
36992            aup = a.parentNode,
36993            bup = b.parentNode,
36994            ap = [a],
36995            bp = [b]; // Parentless nodes are either documents or disconnected
36996
36997        if (!aup || !bup) {
36998          // Support: IE 11+, Edge 17 - 18+
36999          // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
37000          // two documents; shallow comparisons work.
37001
37002          /* eslint-disable eqeqeq */
37003          return a == document ? -1 : b == document ? 1 :
37004          /* eslint-enable eqeqeq */
37005          aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; // If the nodes are siblings, we can do a quick check
37006        } else if (aup === bup) {
37007          return siblingCheck(a, b);
37008        } // Otherwise we need full lists of their ancestors for comparison
37009
37010
37011        cur = a;
37012
37013        while (cur = cur.parentNode) {
37014          ap.unshift(cur);
37015        }
37016
37017        cur = b;
37018
37019        while (cur = cur.parentNode) {
37020          bp.unshift(cur);
37021        } // Walk down the tree looking for a discrepancy
37022
37023
37024        while (ap[i] === bp[i]) {
37025          i++;
37026        }
37027
37028        return i ? // Do a sibling check if the nodes have a common ancestor
37029        siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first
37030        // Support: IE 11+, Edge 17 - 18+
37031        // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
37032        // two documents; shallow comparisons work.
37033
37034        /* eslint-disable eqeqeq */
37035        ap[i] == preferredDoc ? -1 : bp[i] == preferredDoc ? 1 :
37036        /* eslint-enable eqeqeq */
37037        0;
37038      };
37039      return document;
37040    };
37041
37042    Sizzle.matches = function (expr, elements) {
37043      return Sizzle(expr, null, null, elements);
37044    };
37045
37046    Sizzle.matchesSelector = function (elem, expr) {
37047      setDocument(elem);
37048
37049      if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
37050        try {
37051          var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes
37052
37053          if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document
37054          // fragment in IE 9
37055          elem.document && elem.document.nodeType !== 11) {
37056            return ret;
37057          }
37058        } catch (e) {
37059          nonnativeSelectorCache(expr, true);
37060        }
37061      }
37062
37063      return Sizzle(expr, document, null, [elem]).length > 0;
37064    };
37065
37066    Sizzle.contains = function (context, elem) {
37067      // Set document vars if needed
37068      // Support: IE 11+, Edge 17 - 18+
37069      // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
37070      // two documents; shallow comparisons work.
37071      // eslint-disable-next-line eqeqeq
37072      if ((context.ownerDocument || context) != document) {
37073        setDocument(context);
37074      }
37075
37076      return contains(context, elem);
37077    };
37078
37079    Sizzle.attr = function (elem, name) {
37080      // Set document vars if needed
37081      // Support: IE 11+, Edge 17 - 18+
37082      // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
37083      // two documents; shallow comparisons work.
37084      // eslint-disable-next-line eqeqeq
37085      if ((elem.ownerDocument || elem) != document) {
37086        setDocument(elem);
37087      }
37088
37089      var fn = Expr.attrHandle[name.toLowerCase()],
37090          // Don't get fooled by Object.prototype properties (jQuery #13807)
37091      val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;
37092      return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
37093    };
37094
37095    Sizzle.escape = function (sel) {
37096      return (sel + "").replace(rcssescape, fcssescape);
37097    };
37098
37099    Sizzle.error = function (msg) {
37100      throw new Error("Syntax error, unrecognized expression: " + msg);
37101    };
37102    /**
37103     * Document sorting and removing duplicates
37104     * @param {ArrayLike} results
37105     */
37106
37107
37108    Sizzle.uniqueSort = function (results) {
37109      var elem,
37110          duplicates = [],
37111          j = 0,
37112          i = 0; // Unless we *know* we can detect duplicates, assume their presence
37113
37114      hasDuplicate = !support.detectDuplicates;
37115      sortInput = !support.sortStable && results.slice(0);
37116      results.sort(sortOrder);
37117
37118      if (hasDuplicate) {
37119        while (elem = results[i++]) {
37120          if (elem === results[i]) {
37121            j = duplicates.push(i);
37122          }
37123        }
37124
37125        while (j--) {
37126          results.splice(duplicates[j], 1);
37127        }
37128      } // Clear input after sorting to release objects
37129      // See https://github.com/jquery/sizzle/pull/225
37130
37131
37132      sortInput = null;
37133      return results;
37134    };
37135    /**
37136     * Utility function for retrieving the text value of an array of DOM nodes
37137     * @param {Array|Element} elem
37138     */
37139
37140
37141    getText = Sizzle.getText = function (elem) {
37142      var node,
37143          ret = "",
37144          i = 0,
37145          nodeType = elem.nodeType;
37146
37147      if (!nodeType) {
37148        // If no nodeType, this is expected to be an array
37149        while (node = elem[i++]) {
37150          // Do not traverse comment nodes
37151          ret += getText(node);
37152        }
37153      } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
37154        // Use textContent for elements
37155        // innerText usage removed for consistency of new lines (jQuery #11153)
37156        if (typeof elem.textContent === "string") {
37157          return elem.textContent;
37158        } else {
37159          // Traverse its children
37160          for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
37161            ret += getText(elem);
37162          }
37163        }
37164      } else if (nodeType === 3 || nodeType === 4) {
37165        return elem.nodeValue;
37166      } // Do not include comment or processing instruction nodes
37167
37168
37169      return ret;
37170    };
37171
37172    Expr = Sizzle.selectors = {
37173      // Can be adjusted by the user
37174      cacheLength: 50,
37175      createPseudo: markFunction,
37176      match: matchExpr,
37177      attrHandle: {},
37178      find: {},
37179      relative: {
37180        ">": {
37181          dir: "parentNode",
37182          first: true
37183        },
37184        " ": {
37185          dir: "parentNode"
37186        },
37187        "+": {
37188          dir: "previousSibling",
37189          first: true
37190        },
37191        "~": {
37192          dir: "previousSibling"
37193        }
37194      },
37195      preFilter: {
37196        "ATTR": function ATTR(match) {
37197          match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted
37198
37199          match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
37200
37201          if (match[2] === "~=") {
37202            match[3] = " " + match[3] + " ";
37203          }
37204
37205          return match.slice(0, 4);
37206        },
37207        "CHILD": function CHILD(match) {
37208          /* matches from matchExpr["CHILD"]
37209          	1 type (only|nth|...)
37210          	2 what (child|of-type)
37211          	3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
37212          	4 xn-component of xn+y argument ([+-]?\d*n|)
37213          	5 sign of xn-component
37214          	6 x of xn-component
37215          	7 sign of y-component
37216          	8 y of y-component
37217          */
37218          match[1] = match[1].toLowerCase();
37219
37220          if (match[1].slice(0, 3) === "nth") {
37221            // nth-* requires argument
37222            if (!match[3]) {
37223              Sizzle.error(match[0]);
37224            } // numeric x and y parameters for Expr.filter.CHILD
37225            // remember that false/true cast respectively to 0/1
37226
37227
37228            match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
37229            match[5] = +(match[7] + match[8] || match[3] === "odd"); // other types prohibit arguments
37230          } else if (match[3]) {
37231            Sizzle.error(match[0]);
37232          }
37233
37234          return match;
37235        },
37236        "PSEUDO": function PSEUDO(match) {
37237          var excess,
37238              unquoted = !match[6] && match[2];
37239
37240          if (matchExpr["CHILD"].test(match[0])) {
37241            return null;
37242          } // Accept quoted arguments as-is
37243
37244
37245          if (match[3]) {
37246            match[2] = match[4] || match[5] || ""; // Strip excess characters from unquoted arguments
37247          } else if (unquoted && rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively)
37248          excess = tokenize(unquoted, true)) && ( // advance to the next closing parenthesis
37249          excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
37250            // excess is a negative index
37251            match[0] = match[0].slice(0, excess);
37252            match[2] = unquoted.slice(0, excess);
37253          } // Return only captures needed by the pseudo filter method (type and argument)
37254
37255
37256          return match.slice(0, 3);
37257        }
37258      },
37259      filter: {
37260        "TAG": function TAG(nodeNameSelector) {
37261          var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
37262          return nodeNameSelector === "*" ? function () {
37263            return true;
37264          } : function (elem) {
37265            return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
37266          };
37267        },
37268        "CLASS": function CLASS(className) {
37269          var pattern = classCache[className + " "];
37270          return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function (elem) {
37271            return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "");
37272          });
37273        },
37274        "ATTR": function ATTR(name, operator, check) {
37275          return function (elem) {
37276            var result = Sizzle.attr(elem, name);
37277
37278            if (result == null) {
37279              return operator === "!=";
37280            }
37281
37282            if (!operator) {
37283              return true;
37284            }
37285
37286            result += "";
37287            /* eslint-disable max-len */
37288
37289            return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf(check) === 0 : operator === "*=" ? check && result.indexOf(check) > -1 : operator === "$=" ? check && result.slice(-check.length) === check : operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" : false;
37290            /* eslint-enable max-len */
37291          };
37292        },
37293        "CHILD": function CHILD(type, what, _argument, first, last) {
37294          var simple = type.slice(0, 3) !== "nth",
37295              forward = type.slice(-4) !== "last",
37296              ofType = what === "of-type";
37297          return first === 1 && last === 0 ? // Shortcut for :nth-*(n)
37298          function (elem) {
37299            return !!elem.parentNode;
37300          } : function (elem, _context, xml) {
37301            var cache,
37302                uniqueCache,
37303                outerCache,
37304                node,
37305                nodeIndex,
37306                start,
37307                dir = simple !== forward ? "nextSibling" : "previousSibling",
37308                parent = elem.parentNode,
37309                name = ofType && elem.nodeName.toLowerCase(),
37310                useCache = !xml && !ofType,
37311                diff = false;
37312
37313            if (parent) {
37314              // :(first|last|only)-(child|of-type)
37315              if (simple) {
37316                while (dir) {
37317                  node = elem;
37318
37319                  while (node = node[dir]) {
37320                    if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {
37321                      return false;
37322                    }
37323                  } // Reverse direction for :only-* (if we haven't yet done so)
37324
37325
37326                  start = dir = type === "only" && !start && "nextSibling";
37327                }
37328
37329                return true;
37330              }
37331
37332              start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`
37333
37334              if (forward && useCache) {
37335                // Seek `elem` from a previously-cached index
37336                // ...in a gzip-friendly way
37337                node = parent;
37338                outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only
37339                // Defend against cloned attroperties (jQuery gh-1709)
37340
37341                uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
37342                cache = uniqueCache[type] || [];
37343                nodeIndex = cache[0] === dirruns && cache[1];
37344                diff = nodeIndex && cache[2];
37345                node = nodeIndex && parent.childNodes[nodeIndex];
37346
37347                while (node = ++nodeIndex && node && node[dir] || ( // Fallback to seeking `elem` from the start
37348                diff = nodeIndex = 0) || start.pop()) {
37349                  // When found, cache indexes on `parent` and break
37350                  if (node.nodeType === 1 && ++diff && node === elem) {
37351                    uniqueCache[type] = [dirruns, nodeIndex, diff];
37352                    break;
37353                  }
37354                }
37355              } else {
37356                // Use previously-cached element index if available
37357                if (useCache) {
37358                  // ...in a gzip-friendly way
37359                  node = elem;
37360                  outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only
37361                  // Defend against cloned attroperties (jQuery gh-1709)
37362
37363                  uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
37364                  cache = uniqueCache[type] || [];
37365                  nodeIndex = cache[0] === dirruns && cache[1];
37366                  diff = nodeIndex;
37367                } // xml :nth-child(...)
37368                // or :nth-last-child(...) or :nth(-last)?-of-type(...)
37369
37370
37371                if (diff === false) {
37372                  // Use the same loop as above to seek `elem` from the start
37373                  while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
37374                    if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {
37375                      // Cache the index of each encountered element
37376                      if (useCache) {
37377                        outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only
37378                        // Defend against cloned attroperties (jQuery gh-1709)
37379
37380                        uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
37381                        uniqueCache[type] = [dirruns, diff];
37382                      }
37383
37384                      if (node === elem) {
37385                        break;
37386                      }
37387                    }
37388                  }
37389                }
37390              } // Incorporate the offset, then check against cycle size
37391
37392
37393              diff -= last;
37394              return diff === first || diff % first === 0 && diff / first >= 0;
37395            }
37396          };
37397        },
37398        "PSEUDO": function PSEUDO(pseudo, argument) {
37399          // pseudo-class names are case-insensitive
37400          // http://www.w3.org/TR/selectors/#pseudo-classes
37401          // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
37402          // Remember that setFilters inherits from pseudos
37403          var args,
37404              fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo); // The user may use createPseudo to indicate that
37405          // arguments are needed to create the filter function
37406          // just as Sizzle does
37407
37408          if (fn[expando]) {
37409            return fn(argument);
37410          } // But maintain support for old signatures
37411
37412
37413          if (fn.length > 1) {
37414            args = [pseudo, pseudo, "", argument];
37415            return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
37416              var idx,
37417                  matched = fn(seed, argument),
37418                  i = matched.length;
37419
37420              while (i--) {
37421                idx = indexOf(seed, matched[i]);
37422                seed[idx] = !(matches[idx] = matched[i]);
37423              }
37424            }) : function (elem) {
37425              return fn(elem, 0, args);
37426            };
37427          }
37428
37429          return fn;
37430        }
37431      },
37432      pseudos: {
37433        // Potentially complex pseudos
37434        "not": markFunction(function (selector) {
37435          // Trim the selector passed to compile
37436          // to avoid treating leading and trailing
37437          // spaces as combinators
37438          var input = [],
37439              results = [],
37440              matcher = compile(selector.replace(rtrim, "$1"));
37441          return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {
37442            var elem,
37443                unmatched = matcher(seed, null, xml, []),
37444                i = seed.length; // Match elements unmatched by `matcher`
37445
37446            while (i--) {
37447              if (elem = unmatched[i]) {
37448                seed[i] = !(matches[i] = elem);
37449              }
37450            }
37451          }) : function (elem, _context, xml) {
37452            input[0] = elem;
37453            matcher(input, null, xml, results); // Don't keep the element (issue #299)
37454
37455            input[0] = null;
37456            return !results.pop();
37457          };
37458        }),
37459        "has": markFunction(function (selector) {
37460          return function (elem) {
37461            return Sizzle(selector, elem).length > 0;
37462          };
37463        }),
37464        "contains": markFunction(function (text) {
37465          text = text.replace(runescape, funescape);
37466          return function (elem) {
37467            return (elem.textContent || getText(elem)).indexOf(text) > -1;
37468          };
37469        }),
37470        // "Whether an element is represented by a :lang() selector
37471        // is based solely on the element's language value
37472        // being equal to the identifier C,
37473        // or beginning with the identifier C immediately followed by "-".
37474        // The matching of C against the element's language value is performed case-insensitively.
37475        // The identifier C does not have to be a valid language name."
37476        // http://www.w3.org/TR/selectors/#lang-pseudo
37477        "lang": markFunction(function (lang) {
37478          // lang value must be a valid identifier
37479          if (!ridentifier.test(lang || "")) {
37480            Sizzle.error("unsupported lang: " + lang);
37481          }
37482
37483          lang = lang.replace(runescape, funescape).toLowerCase();
37484          return function (elem) {
37485            var elemLang;
37486
37487            do {
37488              if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
37489                elemLang = elemLang.toLowerCase();
37490                return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
37491              }
37492            } while ((elem = elem.parentNode) && elem.nodeType === 1);
37493
37494            return false;
37495          };
37496        }),
37497        // Miscellaneous
37498        "target": function target(elem) {
37499          var hash = window.location && window.location.hash;
37500          return hash && hash.slice(1) === elem.id;
37501        },
37502        "root": function root(elem) {
37503          return elem === docElem;
37504        },
37505        "focus": function focus(elem) {
37506          return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
37507        },
37508        // Boolean properties
37509        "enabled": createDisabledPseudo(false),
37510        "disabled": createDisabledPseudo(true),
37511        "checked": function checked(elem) {
37512          // In CSS3, :checked should return both checked and selected elements
37513          // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
37514          var nodeName = elem.nodeName.toLowerCase();
37515          return nodeName === "input" && !!elem.checked || nodeName === "option" && !!elem.selected;
37516        },
37517        "selected": function selected(elem) {
37518          // Accessing this property makes selected-by-default
37519          // options in Safari work properly
37520          if (elem.parentNode) {
37521            // eslint-disable-next-line no-unused-expressions
37522            elem.parentNode.selectedIndex;
37523          }
37524
37525          return elem.selected === true;
37526        },
37527        // Contents
37528        "empty": function empty(elem) {
37529          // http://www.w3.org/TR/selectors/#empty-pseudo
37530          // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
37531          //   but not by others (comment: 8; processing instruction: 7; etc.)
37532          // nodeType < 6 works because attributes (2) do not appear as children
37533          for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
37534            if (elem.nodeType < 6) {
37535              return false;
37536            }
37537          }
37538
37539          return true;
37540        },
37541        "parent": function parent(elem) {
37542          return !Expr.pseudos["empty"](elem);
37543        },
37544        // Element/input types
37545        "header": function header(elem) {
37546          return rheader.test(elem.nodeName);
37547        },
37548        "input": function input(elem) {
37549          return rinputs.test(elem.nodeName);
37550        },
37551        "button": function button(elem) {
37552          var name = elem.nodeName.toLowerCase();
37553          return name === "input" && elem.type === "button" || name === "button";
37554        },
37555        "text": function text(elem) {
37556          var attr;
37557          return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && ( // Support: IE<8
37558          // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
37559          (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
37560        },
37561        // Position-in-collection
37562        "first": createPositionalPseudo(function () {
37563          return [0];
37564        }),
37565        "last": createPositionalPseudo(function (_matchIndexes, length) {
37566          return [length - 1];
37567        }),
37568        "eq": createPositionalPseudo(function (_matchIndexes, length, argument) {
37569          return [argument < 0 ? argument + length : argument];
37570        }),
37571        "even": createPositionalPseudo(function (matchIndexes, length) {
37572          var i = 0;
37573
37574          for (; i < length; i += 2) {
37575            matchIndexes.push(i);
37576          }
37577
37578          return matchIndexes;
37579        }),
37580        "odd": createPositionalPseudo(function (matchIndexes, length) {
37581          var i = 1;
37582
37583          for (; i < length; i += 2) {
37584            matchIndexes.push(i);
37585          }
37586
37587          return matchIndexes;
37588        }),
37589        "lt": createPositionalPseudo(function (matchIndexes, length, argument) {
37590          var i = argument < 0 ? argument + length : argument > length ? length : argument;
37591
37592          for (; --i >= 0;) {
37593            matchIndexes.push(i);
37594          }
37595
37596          return matchIndexes;
37597        }),
37598        "gt": createPositionalPseudo(function (matchIndexes, length, argument) {
37599          var i = argument < 0 ? argument + length : argument;
37600
37601          for (; ++i < length;) {
37602            matchIndexes.push(i);
37603          }
37604
37605          return matchIndexes;
37606        })
37607      }
37608    };
37609    Expr.pseudos["nth"] = Expr.pseudos["eq"]; // Add button/input type pseudos
37610
37611    for (i in {
37612      radio: true,
37613      checkbox: true,
37614      file: true,
37615      password: true,
37616      image: true
37617    }) {
37618      Expr.pseudos[i] = createInputPseudo(i);
37619    }
37620
37621    for (i in {
37622      submit: true,
37623      reset: true
37624    }) {
37625      Expr.pseudos[i] = createButtonPseudo(i);
37626    } // Easy API for creating new setFilters
37627
37628
37629    function setFilters() {}
37630
37631    setFilters.prototype = Expr.filters = Expr.pseudos;
37632    Expr.setFilters = new setFilters();
37633
37634    tokenize = Sizzle.tokenize = function (selector, parseOnly) {
37635      var matched,
37636          match,
37637          tokens,
37638          type,
37639          soFar,
37640          groups,
37641          preFilters,
37642          cached = tokenCache[selector + " "];
37643
37644      if (cached) {
37645        return parseOnly ? 0 : cached.slice(0);
37646      }
37647
37648      soFar = selector;
37649      groups = [];
37650      preFilters = Expr.preFilter;
37651
37652      while (soFar) {
37653        // Comma and first run
37654        if (!matched || (match = rcomma.exec(soFar))) {
37655          if (match) {
37656            // Don't consume trailing commas as valid
37657            soFar = soFar.slice(match[0].length) || soFar;
37658          }
37659
37660          groups.push(tokens = []);
37661        }
37662
37663        matched = false; // Combinators
37664
37665        if (match = rcombinators.exec(soFar)) {
37666          matched = match.shift();
37667          tokens.push({
37668            value: matched,
37669            // Cast descendant combinators to space
37670            type: match[0].replace(rtrim, " ")
37671          });
37672          soFar = soFar.slice(matched.length);
37673        } // Filters
37674
37675
37676        for (type in Expr.filter) {
37677          if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
37678            matched = match.shift();
37679            tokens.push({
37680              value: matched,
37681              type: type,
37682              matches: match
37683            });
37684            soFar = soFar.slice(matched.length);
37685          }
37686        }
37687
37688        if (!matched) {
37689          break;
37690        }
37691      } // Return the length of the invalid excess
37692      // if we're just parsing
37693      // Otherwise, throw an error or return tokens
37694
37695
37696      return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens
37697      tokenCache(selector, groups).slice(0);
37698    };
37699
37700    function toSelector(tokens) {
37701      var i = 0,
37702          len = tokens.length,
37703          selector = "";
37704
37705      for (; i < len; i++) {
37706        selector += tokens[i].value;
37707      }
37708
37709      return selector;
37710    }
37711
37712    function addCombinator(matcher, combinator, base) {
37713      var dir = combinator.dir,
37714          skip = combinator.next,
37715          key = skip || dir,
37716          checkNonElements = base && key === "parentNode",
37717          doneName = done++;
37718      return combinator.first ? // Check against closest ancestor/preceding element
37719      function (elem, context, xml) {
37720        while (elem = elem[dir]) {
37721          if (elem.nodeType === 1 || checkNonElements) {
37722            return matcher(elem, context, xml);
37723          }
37724        }
37725
37726        return false;
37727      } : // Check against all ancestor/preceding elements
37728      function (elem, context, xml) {
37729        var oldCache,
37730            uniqueCache,
37731            outerCache,
37732            newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
37733
37734        if (xml) {
37735          while (elem = elem[dir]) {
37736            if (elem.nodeType === 1 || checkNonElements) {
37737              if (matcher(elem, context, xml)) {
37738                return true;
37739              }
37740            }
37741          }
37742        } else {
37743          while (elem = elem[dir]) {
37744            if (elem.nodeType === 1 || checkNonElements) {
37745              outerCache = elem[expando] || (elem[expando] = {}); // Support: IE <9 only
37746              // Defend against cloned attroperties (jQuery gh-1709)
37747
37748              uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});
37749
37750              if (skip && skip === elem.nodeName.toLowerCase()) {
37751                elem = elem[dir] || elem;
37752              } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
37753                // Assign to newCache so results back-propagate to previous elements
37754                return newCache[2] = oldCache[2];
37755              } else {
37756                // Reuse newcache so results back-propagate to previous elements
37757                uniqueCache[key] = newCache; // A match means we're done; a fail means we have to keep checking
37758
37759                if (newCache[2] = matcher(elem, context, xml)) {
37760                  return true;
37761                }
37762              }
37763            }
37764          }
37765        }
37766
37767        return false;
37768      };
37769    }
37770
37771    function elementMatcher(matchers) {
37772      return matchers.length > 1 ? function (elem, context, xml) {
37773        var i = matchers.length;
37774
37775        while (i--) {
37776          if (!matchers[i](elem, context, xml)) {
37777            return false;
37778          }
37779        }
37780
37781        return true;
37782      } : matchers[0];
37783    }
37784
37785    function multipleContexts(selector, contexts, results) {
37786      var i = 0,
37787          len = contexts.length;
37788
37789      for (; i < len; i++) {
37790        Sizzle(selector, contexts[i], results);
37791      }
37792
37793      return results;
37794    }
37795
37796    function condense(unmatched, map, filter, context, xml) {
37797      var elem,
37798          newUnmatched = [],
37799          i = 0,
37800          len = unmatched.length,
37801          mapped = map != null;
37802
37803      for (; i < len; i++) {
37804        if (elem = unmatched[i]) {
37805          if (!filter || filter(elem, context, xml)) {
37806            newUnmatched.push(elem);
37807
37808            if (mapped) {
37809              map.push(i);
37810            }
37811          }
37812        }
37813      }
37814
37815      return newUnmatched;
37816    }
37817
37818    function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
37819      if (postFilter && !postFilter[expando]) {
37820        postFilter = setMatcher(postFilter);
37821      }
37822
37823      if (postFinder && !postFinder[expando]) {
37824        postFinder = setMatcher(postFinder, postSelector);
37825      }
37826
37827      return markFunction(function (seed, results, context, xml) {
37828        var temp,
37829            i,
37830            elem,
37831            preMap = [],
37832            postMap = [],
37833            preexisting = results.length,
37834            // Get initial elements from seed or context
37835        elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),
37836            // Prefilter to get matcher input, preserving a map for seed-results synchronization
37837        matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,
37838            matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
37839        postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary
37840        [] : // ...otherwise use results directly
37841        results : matcherIn; // Find primary matches
37842
37843        if (matcher) {
37844          matcher(matcherIn, matcherOut, context, xml);
37845        } // Apply postFilter
37846
37847
37848        if (postFilter) {
37849          temp = condense(matcherOut, postMap);
37850          postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn
37851
37852          i = temp.length;
37853
37854          while (i--) {
37855            if (elem = temp[i]) {
37856              matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
37857            }
37858          }
37859        }
37860
37861        if (seed) {
37862          if (postFinder || preFilter) {
37863            if (postFinder) {
37864              // Get the final matcherOut by condensing this intermediate into postFinder contexts
37865              temp = [];
37866              i = matcherOut.length;
37867
37868              while (i--) {
37869                if (elem = matcherOut[i]) {
37870                  // Restore matcherIn since elem is not yet a final match
37871                  temp.push(matcherIn[i] = elem);
37872                }
37873              }
37874
37875              postFinder(null, matcherOut = [], temp, xml);
37876            } // Move matched elements from seed to results to keep them synchronized
37877
37878
37879            i = matcherOut.length;
37880
37881            while (i--) {
37882              if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {
37883                seed[temp] = !(results[temp] = elem);
37884              }
37885            }
37886          } // Add elements to results, through postFinder if defined
37887
37888        } else {
37889          matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
37890
37891          if (postFinder) {
37892            postFinder(null, results, matcherOut, xml);
37893          } else {
37894            push.apply(results, matcherOut);
37895          }
37896        }
37897      });
37898    }
37899
37900    function matcherFromTokens(tokens) {
37901      var checkContext,
37902          matcher,
37903          j,
37904          len = tokens.length,
37905          leadingRelative = Expr.relative[tokens[0].type],
37906          implicitRelative = leadingRelative || Expr.relative[" "],
37907          i = leadingRelative ? 1 : 0,
37908          // The foundational matcher ensures that elements are reachable from top-level context(s)
37909      matchContext = addCombinator(function (elem) {
37910        return elem === checkContext;
37911      }, implicitRelative, true),
37912          matchAnyContext = addCombinator(function (elem) {
37913        return indexOf(checkContext, elem) > -1;
37914      }, implicitRelative, true),
37915          matchers = [function (elem, context, xml) {
37916        var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element (issue #299)
37917
37918        checkContext = null;
37919        return ret;
37920      }];
37921
37922      for (; i < len; i++) {
37923        if (matcher = Expr.relative[tokens[i].type]) {
37924          matchers = [addCombinator(elementMatcher(matchers), matcher)];
37925        } else {
37926          matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher
37927
37928          if (matcher[expando]) {
37929            // Find the next relative operator (if any) for proper handling
37930            j = ++i;
37931
37932            for (; j < len; j++) {
37933              if (Expr.relative[tokens[j].type]) {
37934                break;
37935              }
37936            }
37937
37938            return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`
37939            tokens.slice(0, i - 1).concat({
37940              value: tokens[i - 2].type === " " ? "*" : ""
37941            })).replace(rtrim, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));
37942          }
37943
37944          matchers.push(matcher);
37945        }
37946      }
37947
37948      return elementMatcher(matchers);
37949    }
37950
37951    function matcherFromGroupMatchers(elementMatchers, setMatchers) {
37952      var bySet = setMatchers.length > 0,
37953          byElement = elementMatchers.length > 0,
37954          superMatcher = function superMatcher(seed, context, xml, results, outermost) {
37955        var elem,
37956            j,
37957            matcher,
37958            matchedCount = 0,
37959            i = "0",
37960            unmatched = seed && [],
37961            setMatched = [],
37962            contextBackup = outermostContext,
37963            // We must always have either seed elements or outermost context
37964        elems = seed || byElement && Expr.find["TAG"]("*", outermost),
37965            // Use integer dirruns iff this is the outermost matcher
37966        dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,
37967            len = elems.length;
37968
37969        if (outermost) {
37970          // Support: IE 11+, Edge 17 - 18+
37971          // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
37972          // two documents; shallow comparisons work.
37973          // eslint-disable-next-line eqeqeq
37974          outermostContext = context == document || context || outermost;
37975        } // Add elements passing elementMatchers directly to results
37976        // Support: IE<9, Safari
37977        // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
37978
37979
37980        for (; i !== len && (elem = elems[i]) != null; i++) {
37981          if (byElement && elem) {
37982            j = 0; // Support: IE 11+, Edge 17 - 18+
37983            // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
37984            // two documents; shallow comparisons work.
37985            // eslint-disable-next-line eqeqeq
37986
37987            if (!context && elem.ownerDocument != document) {
37988              setDocument(elem);
37989              xml = !documentIsHTML;
37990            }
37991
37992            while (matcher = elementMatchers[j++]) {
37993              if (matcher(elem, context || document, xml)) {
37994                results.push(elem);
37995                break;
37996              }
37997            }
37998
37999            if (outermost) {
38000              dirruns = dirrunsUnique;
38001            }
38002          } // Track unmatched elements for set filters
38003
38004
38005          if (bySet) {
38006            // They will have gone through all possible matchers
38007            if (elem = !matcher && elem) {
38008              matchedCount--;
38009            } // Lengthen the array for every element, matched or not
38010
38011
38012            if (seed) {
38013              unmatched.push(elem);
38014            }
38015          }
38016        } // `i` is now the count of elements visited above, and adding it to `matchedCount`
38017        // makes the latter nonnegative.
38018
38019
38020        matchedCount += i; // Apply set filters to unmatched elements
38021        // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
38022        // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
38023        // no element matchers and no seed.
38024        // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
38025        // case, which will result in a "00" `matchedCount` that differs from `i` but is also
38026        // numerically zero.
38027
38028        if (bySet && i !== matchedCount) {
38029          j = 0;
38030
38031          while (matcher = setMatchers[j++]) {
38032            matcher(unmatched, setMatched, context, xml);
38033          }
38034
38035          if (seed) {
38036            // Reintegrate element matches to eliminate the need for sorting
38037            if (matchedCount > 0) {
38038              while (i--) {
38039                if (!(unmatched[i] || setMatched[i])) {
38040                  setMatched[i] = pop.call(results);
38041                }
38042              }
38043            } // Discard index placeholder values to get only actual matches
38044
38045
38046            setMatched = condense(setMatched);
38047          } // Add matches to results
38048
38049
38050          push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting
38051
38052          if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
38053            Sizzle.uniqueSort(results);
38054          }
38055        } // Override manipulation of globals by nested matchers
38056
38057
38058        if (outermost) {
38059          dirruns = dirrunsUnique;
38060          outermostContext = contextBackup;
38061        }
38062
38063        return unmatched;
38064      };
38065
38066      return bySet ? markFunction(superMatcher) : superMatcher;
38067    }
38068
38069    compile = Sizzle.compile = function (selector, match
38070    /* Internal Use Only */
38071    ) {
38072      var i,
38073          setMatchers = [],
38074          elementMatchers = [],
38075          cached = compilerCache[selector + " "];
38076
38077      if (!cached) {
38078        // Generate a function of recursive functions that can be used to check each element
38079        if (!match) {
38080          match = tokenize(selector);
38081        }
38082
38083        i = match.length;
38084
38085        while (i--) {
38086          cached = matcherFromTokens(match[i]);
38087
38088          if (cached[expando]) {
38089            setMatchers.push(cached);
38090          } else {
38091            elementMatchers.push(cached);
38092          }
38093        } // Cache the compiled function
38094
38095
38096        cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization
38097
38098        cached.selector = selector;
38099      }
38100
38101      return cached;
38102    };
38103    /**
38104     * A low-level selection function that works with Sizzle's compiled
38105     *  selector functions
38106     * @param {String|Function} selector A selector or a pre-compiled
38107     *  selector function built with Sizzle.compile
38108     * @param {Element} context
38109     * @param {Array} [results]
38110     * @param {Array} [seed] A set of elements to match against
38111     */
38112
38113
38114    select = Sizzle.select = function (selector, context, results, seed) {
38115      var i,
38116          tokens,
38117          token,
38118          type,
38119          find,
38120          compiled = typeof selector === "function" && selector,
38121          match = !seed && tokenize(selector = compiled.selector || selector);
38122      results = results || []; // Try to minimize operations if there is only one selector in the list and no seed
38123      // (the latter of which guarantees us context)
38124
38125      if (match.length === 1) {
38126        // Reduce context if the leading compound selector is an ID
38127        tokens = match[0] = match[0].slice(0);
38128
38129        if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
38130          context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0];
38131
38132          if (!context) {
38133            return results; // Precompiled matchers will still verify ancestry, so step up a level
38134          } else if (compiled) {
38135            context = context.parentNode;
38136          }
38137
38138          selector = selector.slice(tokens.shift().value.length);
38139        } // Fetch a seed set for right-to-left matching
38140
38141
38142        i = matchExpr["needsContext"].test(selector) ? 0 : tokens.length;
38143
38144        while (i--) {
38145          token = tokens[i]; // Abort if we hit a combinator
38146
38147          if (Expr.relative[type = token.type]) {
38148            break;
38149          }
38150
38151          if (find = Expr.find[type]) {
38152            // Search, expanding context for leading sibling combinators
38153            if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {
38154              // If seed is empty or no tokens remain, we can return early
38155              tokens.splice(i, 1);
38156              selector = seed.length && toSelector(tokens);
38157
38158              if (!selector) {
38159                push.apply(results, seed);
38160                return results;
38161              }
38162
38163              break;
38164            }
38165          }
38166        }
38167      } // Compile and execute a filtering function if one is not provided
38168      // Provide `match` to avoid retokenization if we modified the selector above
38169
38170
38171      (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);
38172      return results;
38173    }; // One-time assignments
38174    // Sort stability
38175
38176
38177    support.sortStable = expando.split("").sort(sortOrder).join("") === expando; // Support: Chrome 14-35+
38178    // Always assume duplicates if they aren't passed to the comparison function
38179
38180    support.detectDuplicates = !!hasDuplicate; // Initialize against the default document
38181
38182    setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
38183    // Detached nodes confoundingly follow *each other*
38184
38185    support.sortDetached = assert(function (el) {
38186      // Should return 1, but returns 4 (following)
38187      return el.compareDocumentPosition(document.createElement("fieldset")) & 1;
38188    }); // Support: IE<8
38189    // Prevent attribute/property "interpolation"
38190    // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
38191
38192    if (!assert(function (el) {
38193      el.innerHTML = "<a href='#'></a>";
38194      return el.firstChild.getAttribute("href") === "#";
38195    })) {
38196      addHandle("type|href|height|width", function (elem, name, isXML) {
38197        if (!isXML) {
38198          return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2);
38199        }
38200      });
38201    } // Support: IE<9
38202    // Use defaultValue in place of getAttribute("value")
38203
38204
38205    if (!support.attributes || !assert(function (el) {
38206      el.innerHTML = "<input/>";
38207      el.firstChild.setAttribute("value", "");
38208      return el.firstChild.getAttribute("value") === "";
38209    })) {
38210      addHandle("value", function (elem, _name, isXML) {
38211        if (!isXML && elem.nodeName.toLowerCase() === "input") {
38212          return elem.defaultValue;
38213        }
38214      });
38215    } // Support: IE<9
38216    // Use getAttributeNode to fetch booleans when getAttribute lies
38217
38218
38219    if (!assert(function (el) {
38220      return el.getAttribute("disabled") == null;
38221    })) {
38222      addHandle(booleans, function (elem, name, isXML) {
38223        var val;
38224
38225        if (!isXML) {
38226          return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
38227        }
38228      });
38229    }
38230
38231    return Sizzle;
38232  }(window);
38233
38234  jQuery.find = Sizzle;
38235  jQuery.expr = Sizzle.selectors; // Deprecated
38236
38237  jQuery.expr[":"] = jQuery.expr.pseudos;
38238  jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
38239  jQuery.text = Sizzle.getText;
38240  jQuery.isXMLDoc = Sizzle.isXML;
38241  jQuery.contains = Sizzle.contains;
38242  jQuery.escapeSelector = Sizzle.escape;
38243
38244  var dir = function dir(elem, _dir, until) {
38245    var matched = [],
38246        truncate = until !== undefined;
38247
38248    while ((elem = elem[_dir]) && elem.nodeType !== 9) {
38249      if (elem.nodeType === 1) {
38250        if (truncate && jQuery(elem).is(until)) {
38251          break;
38252        }
38253
38254        matched.push(elem);
38255      }
38256    }
38257
38258    return matched;
38259  };
38260
38261  var _siblings = function siblings(n, elem) {
38262    var matched = [];
38263
38264    for (; n; n = n.nextSibling) {
38265      if (n.nodeType === 1 && n !== elem) {
38266        matched.push(n);
38267      }
38268    }
38269
38270    return matched;
38271  };
38272
38273  var rneedsContext = jQuery.expr.match.needsContext;
38274
38275  function nodeName(elem, name) {
38276    return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
38277  }
38278
38279  var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; // Implement the identical functionality for filter and not
38280
38281  function winnow(elements, qualifier, not) {
38282    if (isFunction(qualifier)) {
38283      return jQuery.grep(elements, function (elem, i) {
38284        return !!qualifier.call(elem, i, elem) !== not;
38285      });
38286    } // Single element
38287
38288
38289    if (qualifier.nodeType) {
38290      return jQuery.grep(elements, function (elem) {
38291        return elem === qualifier !== not;
38292      });
38293    } // Arraylike of elements (jQuery, arguments, Array)
38294
38295
38296    if (typeof qualifier !== "string") {
38297      return jQuery.grep(elements, function (elem) {
38298        return indexOf.call(qualifier, elem) > -1 !== not;
38299      });
38300    } // Filtered directly for both simple and complex selectors
38301
38302
38303    return jQuery.filter(qualifier, elements, not);
38304  }
38305
38306  jQuery.filter = function (expr, elems, not) {
38307    var elem = elems[0];
38308
38309    if (not) {
38310      expr = ":not(" + expr + ")";
38311    }
38312
38313    if (elems.length === 1 && elem.nodeType === 1) {
38314      return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];
38315    }
38316
38317    return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {
38318      return elem.nodeType === 1;
38319    }));
38320  };
38321
38322  jQuery.fn.extend({
38323    find: function find(selector) {
38324      var i,
38325          ret,
38326          len = this.length,
38327          self = this;
38328
38329      if (typeof selector !== "string") {
38330        return this.pushStack(jQuery(selector).filter(function () {
38331          for (i = 0; i < len; i++) {
38332            if (jQuery.contains(self[i], this)) {
38333              return true;
38334            }
38335          }
38336        }));
38337      }
38338
38339      ret = this.pushStack([]);
38340
38341      for (i = 0; i < len; i++) {
38342        jQuery.find(selector, self[i], ret);
38343      }
38344
38345      return len > 1 ? jQuery.uniqueSort(ret) : ret;
38346    },
38347    filter: function filter(selector) {
38348      return this.pushStack(winnow(this, selector || [], false));
38349    },
38350    not: function not(selector) {
38351      return this.pushStack(winnow(this, selector || [], true));
38352    },
38353    is: function is(selector) {
38354      return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set
38355      // so $("p:first").is("p:last") won't return true for a doc with two "p".
38356      typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;
38357    }
38358  }); // Initialize a jQuery object
38359  // A central reference to the root jQuery(document)
38360
38361  var rootjQuery,
38362      // A simple way to check for HTML strings
38363  // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
38364  // Strict HTML recognition (#11290: must start with <)
38365  // Shortcut simple #id case for speed
38366  rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
38367      init = jQuery.fn.init = function (selector, context, root) {
38368    var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false)
38369
38370    if (!selector) {
38371      return this;
38372    } // Method init() accepts an alternate rootjQuery
38373    // so migrate can support jQuery.sub (gh-2101)
38374
38375
38376    root = root || rootjQuery; // Handle HTML strings
38377
38378    if (typeof selector === "string") {
38379      if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {
38380        // Assume that strings that start and end with <> are HTML and skip the regex check
38381        match = [null, selector, null];
38382      } else {
38383        match = rquickExpr.exec(selector);
38384      } // Match html or make sure no context is specified for #id
38385
38386
38387      if (match && (match[1] || !context)) {
38388        // HANDLE: $(html) -> $(array)
38389        if (match[1]) {
38390          context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat
38391          // Intentionally let the error be thrown if parseHTML is not present
38392
38393          jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)
38394
38395          if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
38396            for (match in context) {
38397              // Properties of context are called as methods if possible
38398              if (isFunction(this[match])) {
38399                this[match](context[match]); // ...and otherwise set as attributes
38400              } else {
38401                this.attr(match, context[match]);
38402              }
38403            }
38404          }
38405
38406          return this; // HANDLE: $(#id)
38407        } else {
38408          elem = document.getElementById(match[2]);
38409
38410          if (elem) {
38411            // Inject the element directly into the jQuery object
38412            this[0] = elem;
38413            this.length = 1;
38414          }
38415
38416          return this;
38417        } // HANDLE: $(expr, $(...))
38418
38419      } else if (!context || context.jquery) {
38420        return (context || root).find(selector); // HANDLE: $(expr, context)
38421        // (which is just equivalent to: $(context).find(expr)
38422      } else {
38423        return this.constructor(context).find(selector);
38424      } // HANDLE: $(DOMElement)
38425
38426    } else if (selector.nodeType) {
38427      this[0] = selector;
38428      this.length = 1;
38429      return this; // HANDLE: $(function)
38430      // Shortcut for document ready
38431    } else if (isFunction(selector)) {
38432      return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present
38433      selector(jQuery);
38434    }
38435
38436    return jQuery.makeArray(selector, this);
38437  }; // Give the init function the jQuery prototype for later instantiation
38438
38439
38440  init.prototype = jQuery.fn; // Initialize central reference
38441
38442  rootjQuery = jQuery(document);
38443  var rparentsprev = /^(?:parents|prev(?:Until|All))/,
38444      // Methods guaranteed to produce a unique set when starting from a unique set
38445  guaranteedUnique = {
38446    children: true,
38447    contents: true,
38448    next: true,
38449    prev: true
38450  };
38451  jQuery.fn.extend({
38452    has: function has(target) {
38453      var targets = jQuery(target, this),
38454          l = targets.length;
38455      return this.filter(function () {
38456        var i = 0;
38457
38458        for (; i < l; i++) {
38459          if (jQuery.contains(this, targets[i])) {
38460            return true;
38461          }
38462        }
38463      });
38464    },
38465    closest: function closest(selectors, context) {
38466      var cur,
38467          i = 0,
38468          l = this.length,
38469          matched = [],
38470          targets = typeof selectors !== "string" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context
38471
38472      if (!rneedsContext.test(selectors)) {
38473        for (; i < l; i++) {
38474          for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {
38475            // Always skip document fragments
38476            if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to Sizzle
38477            cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {
38478              matched.push(cur);
38479              break;
38480            }
38481          }
38482        }
38483      }
38484
38485      return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);
38486    },
38487    // Determine the position of an element within the set
38488    index: function index(elem) {
38489      // No argument, return index in parent
38490      if (!elem) {
38491        return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
38492      } // Index in selector
38493
38494
38495      if (typeof elem === "string") {
38496        return indexOf.call(jQuery(elem), this[0]);
38497      } // Locate the position of the desired element
38498
38499
38500      return indexOf.call(this, // If it receives a jQuery object, the first element is used
38501      elem.jquery ? elem[0] : elem);
38502    },
38503    add: function add(selector, context) {
38504      return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));
38505    },
38506    addBack: function addBack(selector) {
38507      return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));
38508    }
38509  });
38510
38511  function sibling(cur, dir) {
38512    while ((cur = cur[dir]) && cur.nodeType !== 1) {}
38513
38514    return cur;
38515  }
38516
38517  jQuery.each({
38518    parent: function parent(elem) {
38519      var parent = elem.parentNode;
38520      return parent && parent.nodeType !== 11 ? parent : null;
38521    },
38522    parents: function parents(elem) {
38523      return dir(elem, "parentNode");
38524    },
38525    parentsUntil: function parentsUntil(elem, _i, until) {
38526      return dir(elem, "parentNode", until);
38527    },
38528    next: function next(elem) {
38529      return sibling(elem, "nextSibling");
38530    },
38531    prev: function prev(elem) {
38532      return sibling(elem, "previousSibling");
38533    },
38534    nextAll: function nextAll(elem) {
38535      return dir(elem, "nextSibling");
38536    },
38537    prevAll: function prevAll(elem) {
38538      return dir(elem, "previousSibling");
38539    },
38540    nextUntil: function nextUntil(elem, _i, until) {
38541      return dir(elem, "nextSibling", until);
38542    },
38543    prevUntil: function prevUntil(elem, _i, until) {
38544      return dir(elem, "previousSibling", until);
38545    },
38546    siblings: function siblings(elem) {
38547      return _siblings((elem.parentNode || {}).firstChild, elem);
38548    },
38549    children: function children(elem) {
38550      return _siblings(elem.firstChild);
38551    },
38552    contents: function contents(elem) {
38553      if (elem.contentDocument != null && // Support: IE 11+
38554      // <object> elements with no `data` attribute has an object
38555      // `contentDocument` with a `null` prototype.
38556      getProto(elem.contentDocument)) {
38557        return elem.contentDocument;
38558      } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
38559      // Treat the template element as a regular one in browsers that
38560      // don't support it.
38561
38562
38563      if (nodeName(elem, "template")) {
38564        elem = elem.content || elem;
38565      }
38566
38567      return jQuery.merge([], elem.childNodes);
38568    }
38569  }, function (name, fn) {
38570    jQuery.fn[name] = function (until, selector) {
38571      var matched = jQuery.map(this, fn, until);
38572
38573      if (name.slice(-5) !== "Until") {
38574        selector = until;
38575      }
38576
38577      if (selector && typeof selector === "string") {
38578        matched = jQuery.filter(selector, matched);
38579      }
38580
38581      if (this.length > 1) {
38582        // Remove duplicates
38583        if (!guaranteedUnique[name]) {
38584          jQuery.uniqueSort(matched);
38585        } // Reverse order for parents* and prev-derivatives
38586
38587
38588        if (rparentsprev.test(name)) {
38589          matched.reverse();
38590        }
38591      }
38592
38593      return this.pushStack(matched);
38594    };
38595  });
38596  var rnothtmlwhite = /[^\x20\t\r\n\f]+/g; // Convert String-formatted options into Object-formatted ones
38597
38598  function createOptions(options) {
38599    var object = {};
38600    jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {
38601      object[flag] = true;
38602    });
38603    return object;
38604  }
38605  /*
38606   * Create a callback list using the following parameters:
38607   *
38608   *	options: an optional list of space-separated options that will change how
38609   *			the callback list behaves or a more traditional option object
38610   *
38611   * By default a callback list will act like an event callback list and can be
38612   * "fired" multiple times.
38613   *
38614   * Possible options:
38615   *
38616   *	once:			will ensure the callback list can only be fired once (like a Deferred)
38617   *
38618   *	memory:			will keep track of previous values and will call any callback added
38619   *					after the list has been fired right away with the latest "memorized"
38620   *					values (like a Deferred)
38621   *
38622   *	unique:			will ensure a callback can only be added once (no duplicate in the list)
38623   *
38624   *	stopOnFalse:	interrupt callings when a callback returns false
38625   *
38626   */
38627
38628
38629  jQuery.Callbacks = function (options) {
38630    // Convert options from String-formatted to Object-formatted if needed
38631    // (we check in cache first)
38632    options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options);
38633
38634    var // Flag to know if list is currently firing
38635    firing,
38636        // Last fire value for non-forgettable lists
38637    memory,
38638        // Flag to know if list was already fired
38639    _fired,
38640        // Flag to prevent firing
38641    _locked,
38642        // Actual callback list
38643    list = [],
38644        // Queue of execution data for repeatable lists
38645    queue = [],
38646        // Index of currently firing callback (modified by add/remove as needed)
38647    firingIndex = -1,
38648        // Fire callbacks
38649    fire = function fire() {
38650      // Enforce single-firing
38651      _locked = _locked || options.once; // Execute callbacks for all pending executions,
38652      // respecting firingIndex overrides and runtime changes
38653
38654      _fired = firing = true;
38655
38656      for (; queue.length; firingIndex = -1) {
38657        memory = queue.shift();
38658
38659        while (++firingIndex < list.length) {
38660          // Run callback and check for early termination
38661          if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
38662            // Jump to end and forget the data so .add doesn't re-fire
38663            firingIndex = list.length;
38664            memory = false;
38665          }
38666        }
38667      } // Forget the data if we're done with it
38668
38669
38670      if (!options.memory) {
38671        memory = false;
38672      }
38673
38674      firing = false; // Clean up if we're done firing for good
38675
38676      if (_locked) {
38677        // Keep an empty list if we have data for future add calls
38678        if (memory) {
38679          list = []; // Otherwise, this object is spent
38680        } else {
38681          list = "";
38682        }
38683      }
38684    },
38685        // Actual Callbacks object
38686    self = {
38687      // Add a callback or a collection of callbacks to the list
38688      add: function add() {
38689        if (list) {
38690          // If we have memory from a past run, we should fire after adding
38691          if (memory && !firing) {
38692            firingIndex = list.length - 1;
38693            queue.push(memory);
38694          }
38695
38696          (function add(args) {
38697            jQuery.each(args, function (_, arg) {
38698              if (isFunction(arg)) {
38699                if (!options.unique || !self.has(arg)) {
38700                  list.push(arg);
38701                }
38702              } else if (arg && arg.length && toType(arg) !== "string") {
38703                // Inspect recursively
38704                add(arg);
38705              }
38706            });
38707          })(arguments);
38708
38709          if (memory && !firing) {
38710            fire();
38711          }
38712        }
38713
38714        return this;
38715      },
38716      // Remove a callback from the list
38717      remove: function remove() {
38718        jQuery.each(arguments, function (_, arg) {
38719          var index;
38720
38721          while ((index = jQuery.inArray(arg, list, index)) > -1) {
38722            list.splice(index, 1); // Handle firing indexes
38723
38724            if (index <= firingIndex) {
38725              firingIndex--;
38726            }
38727          }
38728        });
38729        return this;
38730      },
38731      // Check if a given callback is in the list.
38732      // If no argument is given, return whether or not list has callbacks attached.
38733      has: function has(fn) {
38734        return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;
38735      },
38736      // Remove all callbacks from the list
38737      empty: function empty() {
38738        if (list) {
38739          list = [];
38740        }
38741
38742        return this;
38743      },
38744      // Disable .fire and .add
38745      // Abort any current/pending executions
38746      // Clear all callbacks and values
38747      disable: function disable() {
38748        _locked = queue = [];
38749        list = memory = "";
38750        return this;
38751      },
38752      disabled: function disabled() {
38753        return !list;
38754      },
38755      // Disable .fire
38756      // Also disable .add unless we have memory (since it would have no effect)
38757      // Abort any pending executions
38758      lock: function lock() {
38759        _locked = queue = [];
38760
38761        if (!memory && !firing) {
38762          list = memory = "";
38763        }
38764
38765        return this;
38766      },
38767      locked: function locked() {
38768        return !!_locked;
38769      },
38770      // Call all callbacks with the given context and arguments
38771      fireWith: function fireWith(context, args) {
38772        if (!_locked) {
38773          args = args || [];
38774          args = [context, args.slice ? args.slice() : args];
38775          queue.push(args);
38776
38777          if (!firing) {
38778            fire();
38779          }
38780        }
38781
38782        return this;
38783      },
38784      // Call all the callbacks with the given arguments
38785      fire: function fire() {
38786        self.fireWith(this, arguments);
38787        return this;
38788      },
38789      // To know if the callbacks have already been called at least once
38790      fired: function fired() {
38791        return !!_fired;
38792      }
38793    };
38794
38795    return self;
38796  };
38797
38798  function Identity(v) {
38799    return v;
38800  }
38801
38802  function Thrower(ex) {
38803    throw ex;
38804  }
38805
38806  function adoptValue(value, resolve, reject, noValue) {
38807    var method;
38808
38809    try {
38810      // Check for promise aspect first to privilege synchronous behavior
38811      if (value && isFunction(method = value.promise)) {
38812        method.call(value).done(resolve).fail(reject); // Other thenables
38813      } else if (value && isFunction(method = value.then)) {
38814        method.call(value, resolve, reject); // Other non-thenables
38815      } else {
38816        // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
38817        // * false: [ value ].slice( 0 ) => resolve( value )
38818        // * true: [ value ].slice( 1 ) => resolve()
38819        resolve.apply(undefined, [value].slice(noValue));
38820      } // For Promises/A+, convert exceptions into rejections
38821      // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
38822      // Deferred#then to conditionally suppress rejection.
38823
38824    } catch (value) {
38825      // Support: Android 4.0 only
38826      // Strict mode functions invoked without .call/.apply get global-object context
38827      reject.apply(undefined, [value]);
38828    }
38829  }
38830
38831  jQuery.extend({
38832    Deferred: function Deferred(func) {
38833      var tuples = [// action, add listener, callbacks,
38834      // ... .then handlers, argument index, [final state]
38835      ["notify", "progress", jQuery.Callbacks("memory"), jQuery.Callbacks("memory"), 2], ["resolve", "done", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 1, "rejected"]],
38836          _state = "pending",
38837          _promise = {
38838        state: function state() {
38839          return _state;
38840        },
38841        always: function always() {
38842          deferred.done(arguments).fail(arguments);
38843          return this;
38844        },
38845        "catch": function _catch(fn) {
38846          return _promise.then(null, fn);
38847        },
38848        // Keep pipe for back-compat
38849        pipe: function pipe()
38850        /* fnDone, fnFail, fnProgress */
38851        {
38852          var fns = arguments;
38853          return jQuery.Deferred(function (newDefer) {
38854            jQuery.each(tuples, function (_i, tuple) {
38855              // Map tuples (progress, done, fail) to arguments (done, fail, progress)
38856              var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })
38857              // deferred.done(function() { bind to newDefer or newDefer.resolve })
38858              // deferred.fail(function() { bind to newDefer or newDefer.reject })
38859
38860              deferred[tuple[1]](function () {
38861                var returned = fn && fn.apply(this, arguments);
38862
38863                if (returned && isFunction(returned.promise)) {
38864                  returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
38865                } else {
38866                  newDefer[tuple[0] + "With"](this, fn ? [returned] : arguments);
38867                }
38868              });
38869            });
38870            fns = null;
38871          }).promise();
38872        },
38873        then: function then(onFulfilled, onRejected, onProgress) {
38874          var maxDepth = 0;
38875
38876          function resolve(depth, deferred, handler, special) {
38877            return function () {
38878              var that = this,
38879                  args = arguments,
38880                  mightThrow = function mightThrow() {
38881                var returned, then; // Support: Promises/A+ section 2.3.3.3.3
38882                // https://promisesaplus.com/#point-59
38883                // Ignore double-resolution attempts
38884
38885                if (depth < maxDepth) {
38886                  return;
38887                }
38888
38889                returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1
38890                // https://promisesaplus.com/#point-48
38891
38892                if (returned === deferred.promise()) {
38893                  throw new TypeError("Thenable self-resolution");
38894                } // Support: Promises/A+ sections 2.3.3.1, 3.5
38895                // https://promisesaplus.com/#point-54
38896                // https://promisesaplus.com/#point-75
38897                // Retrieve `then` only once
38898
38899
38900                then = returned && ( // Support: Promises/A+ section 2.3.4
38901                // https://promisesaplus.com/#point-64
38902                // Only check objects and functions for thenability
38903                _typeof(returned) === "object" || typeof returned === "function") && returned.then; // Handle a returned thenable
38904
38905                if (isFunction(then)) {
38906                  // Special processors (notify) just wait for resolution
38907                  if (special) {
38908                    then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress
38909                  } else {
38910                    // ...and disregard older resolution values
38911                    maxDepth++;
38912                    then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));
38913                  } // Handle all other returned values
38914
38915                } else {
38916                  // Only substitute handlers pass on context
38917                  // and multiple values (non-spec behavior)
38918                  if (handler !== Identity) {
38919                    that = undefined;
38920                    args = [returned];
38921                  } // Process the value(s)
38922                  // Default process is resolve
38923
38924
38925                  (special || deferred.resolveWith)(that, args);
38926                }
38927              },
38928                  // Only normal processors (resolve) catch and reject exceptions
38929              process = special ? mightThrow : function () {
38930                try {
38931                  mightThrow();
38932                } catch (e) {
38933                  if (jQuery.Deferred.exceptionHook) {
38934                    jQuery.Deferred.exceptionHook(e, process.stackTrace);
38935                  } // Support: Promises/A+ section 2.3.3.3.4.1
38936                  // https://promisesaplus.com/#point-61
38937                  // Ignore post-resolution exceptions
38938
38939
38940                  if (depth + 1 >= maxDepth) {
38941                    // Only substitute handlers pass on context
38942                    // and multiple values (non-spec behavior)
38943                    if (handler !== Thrower) {
38944                      that = undefined;
38945                      args = [e];
38946                    }
38947
38948                    deferred.rejectWith(that, args);
38949                  }
38950                }
38951              }; // Support: Promises/A+ section 2.3.3.3.1
38952              // https://promisesaplus.com/#point-57
38953              // Re-resolve promises immediately to dodge false rejection from
38954              // subsequent errors
38955
38956
38957              if (depth) {
38958                process();
38959              } else {
38960                // Call an optional hook to record the stack, in case of exception
38961                // since it's otherwise lost when execution goes async
38962                if (jQuery.Deferred.getStackHook) {
38963                  process.stackTrace = jQuery.Deferred.getStackHook();
38964                }
38965
38966                window.setTimeout(process);
38967              }
38968            };
38969          }
38970
38971          return jQuery.Deferred(function (newDefer) {
38972            // progress_handlers.add( ... )
38973            tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )
38974
38975            tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )
38976
38977            tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));
38978          }).promise();
38979        },
38980        // Get a promise for this deferred
38981        // If obj is provided, the promise aspect is added to the object
38982        promise: function promise(obj) {
38983          return obj != null ? jQuery.extend(obj, _promise) : _promise;
38984        }
38985      },
38986          deferred = {}; // Add list-specific methods
38987
38988      jQuery.each(tuples, function (i, tuple) {
38989        var list = tuple[2],
38990            stateString = tuple[5]; // promise.progress = list.add
38991        // promise.done = list.add
38992        // promise.fail = list.add
38993
38994        _promise[tuple[1]] = list.add; // Handle state
38995
38996        if (stateString) {
38997          list.add(function () {
38998            // state = "resolved" (i.e., fulfilled)
38999            // state = "rejected"
39000            _state = stateString;
39001          }, // rejected_callbacks.disable
39002          // fulfilled_callbacks.disable
39003          tuples[3 - i][2].disable, // rejected_handlers.disable
39004          // fulfilled_handlers.disable
39005          tuples[3 - i][3].disable, // progress_callbacks.lock
39006          tuples[0][2].lock, // progress_handlers.lock
39007          tuples[0][3].lock);
39008        } // progress_handlers.fire
39009        // fulfilled_handlers.fire
39010        // rejected_handlers.fire
39011
39012
39013        list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }
39014        // deferred.resolve = function() { deferred.resolveWith(...) }
39015        // deferred.reject = function() { deferred.rejectWith(...) }
39016
39017        deferred[tuple[0]] = function () {
39018          deferred[tuple[0] + "With"](this === deferred ? undefined : this, arguments);
39019          return this;
39020        }; // deferred.notifyWith = list.fireWith
39021        // deferred.resolveWith = list.fireWith
39022        // deferred.rejectWith = list.fireWith
39023
39024
39025        deferred[tuple[0] + "With"] = list.fireWith;
39026      }); // Make the deferred a promise
39027
39028      _promise.promise(deferred); // Call given func if any
39029
39030
39031      if (func) {
39032        func.call(deferred, deferred);
39033      } // All done!
39034
39035
39036      return deferred;
39037    },
39038    // Deferred helper
39039    when: function when(singleValue) {
39040      var // count of uncompleted subordinates
39041      remaining = arguments.length,
39042          // count of unprocessed arguments
39043      i = remaining,
39044          // subordinate fulfillment data
39045      resolveContexts = Array(i),
39046          resolveValues = _slice.call(arguments),
39047          // the primary Deferred
39048      primary = jQuery.Deferred(),
39049          // subordinate callback factory
39050      updateFunc = function updateFunc(i) {
39051        return function (value) {
39052          resolveContexts[i] = this;
39053          resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;
39054
39055          if (! --remaining) {
39056            primary.resolveWith(resolveContexts, resolveValues);
39057          }
39058        };
39059      }; // Single- and empty arguments are adopted like Promise.resolve
39060
39061
39062      if (remaining <= 1) {
39063        adoptValue(singleValue, primary.done(updateFunc(i)).resolve, primary.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)
39064
39065        if (primary.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) {
39066          return primary.then();
39067        }
39068      } // Multiple arguments are aggregated like Promise.all array elements
39069
39070
39071      while (i--) {
39072        adoptValue(resolveValues[i], updateFunc(i), primary.reject);
39073      }
39074
39075      return primary.promise();
39076    }
39077  }); // These usually indicate a programmer mistake during development,
39078  // warn about them ASAP rather than swallowing them by default.
39079
39080  var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
39081
39082  jQuery.Deferred.exceptionHook = function (error, stack) {
39083    // Support: IE 8 - 9 only
39084    // Console exists when dev tools are open, which can happen at any time
39085    if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {
39086      window.console.warn("jQuery.Deferred exception: " + error.message, error.stack, stack);
39087    }
39088  };
39089
39090  jQuery.readyException = function (error) {
39091    window.setTimeout(function () {
39092      throw error;
39093    });
39094  }; // The deferred used on DOM ready
39095
39096
39097  var readyList = jQuery.Deferred();
39098
39099  jQuery.fn.ready = function (fn) {
39100    readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup
39101    // happens at the time of error handling instead of callback
39102    // registration.
39103    ["catch"](function (error) {
39104      jQuery.readyException(error);
39105    });
39106    return this;
39107  };
39108
39109  jQuery.extend({
39110    // Is the DOM ready to be used? Set to true once it occurs.
39111    isReady: false,
39112    // A counter to track how many items to wait for before
39113    // the ready event fires. See #6781
39114    readyWait: 1,
39115    // Handle when the DOM is ready
39116    ready: function ready(wait) {
39117      // Abort if there are pending holds or we're already ready
39118      if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
39119        return;
39120      } // Remember that the DOM is ready
39121
39122
39123      jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be
39124
39125      if (wait !== true && --jQuery.readyWait > 0) {
39126        return;
39127      } // If there are functions bound, to execute
39128
39129
39130      readyList.resolveWith(document, [jQuery]);
39131    }
39132  });
39133  jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method
39134
39135  function completed() {
39136    document.removeEventListener("DOMContentLoaded", completed);
39137    window.removeEventListener("load", completed);
39138    jQuery.ready();
39139  } // Catch cases where $(document).ready() is called
39140  // after the browser event has already occurred.
39141  // Support: IE <=9 - 10 only
39142  // Older IE sometimes signals "interactive" too soon
39143
39144
39145  if (document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll) {
39146    // Handle it asynchronously to allow scripts the opportunity to delay ready
39147    window.setTimeout(jQuery.ready);
39148  } else {
39149    // Use the handy event callback
39150    document.addEventListener("DOMContentLoaded", completed); // A fallback to window.onload, that will always work
39151
39152    window.addEventListener("load", completed);
39153  } // Multifunctional method to get and set values of a collection
39154  // The value/s can optionally be executed if it's a function
39155
39156
39157  var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {
39158    var i = 0,
39159        len = elems.length,
39160        bulk = key == null; // Sets many values
39161
39162    if (toType(key) === "object") {
39163      chainable = true;
39164
39165      for (i in key) {
39166        access(elems, fn, i, key[i], true, emptyGet, raw);
39167      } // Sets one value
39168
39169    } else if (value !== undefined) {
39170      chainable = true;
39171
39172      if (!isFunction(value)) {
39173        raw = true;
39174      }
39175
39176      if (bulk) {
39177        // Bulk operations run against the entire set
39178        if (raw) {
39179          fn.call(elems, value);
39180          fn = null; // ...except when executing function values
39181        } else {
39182          bulk = fn;
39183
39184          fn = function fn(elem, _key, value) {
39185            return bulk.call(jQuery(elem), value);
39186          };
39187        }
39188      }
39189
39190      if (fn) {
39191        for (; i < len; i++) {
39192          fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
39193        }
39194      }
39195    }
39196
39197    if (chainable) {
39198      return elems;
39199    } // Gets
39200
39201
39202    if (bulk) {
39203      return fn.call(elems);
39204    }
39205
39206    return len ? fn(elems[0], key) : emptyGet;
39207  }; // Matches dashed string for camelizing
39208
39209
39210  var rmsPrefix = /^-ms-/,
39211      rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()
39212
39213  function fcamelCase(_all, letter) {
39214    return letter.toUpperCase();
39215  } // Convert dashed to camelCase; used by the css and data modules
39216  // Support: IE <=9 - 11, Edge 12 - 15
39217  // Microsoft forgot to hump their vendor prefix (#9572)
39218
39219
39220  function camelCase(string) {
39221    return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
39222  }
39223
39224  var acceptData = function acceptData(owner) {
39225    // Accepts only:
39226    //  - Node
39227    //    - Node.ELEMENT_NODE
39228    //    - Node.DOCUMENT_NODE
39229    //  - Object
39230    //    - Any
39231    return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
39232  };
39233
39234  function Data() {
39235    this.expando = jQuery.expando + Data.uid++;
39236  }
39237
39238  Data.uid = 1;
39239  Data.prototype = {
39240    cache: function cache(owner) {
39241      // Check if the owner object already has a cache
39242      var value = owner[this.expando]; // If not, create one
39243
39244      if (!value) {
39245        value = {}; // We can accept data for non-element nodes in modern browsers,
39246        // but we should not, see #8335.
39247        // Always return an empty object.
39248
39249        if (acceptData(owner)) {
39250          // If it is a node unlikely to be stringify-ed or looped over
39251          // use plain assignment
39252          if (owner.nodeType) {
39253            owner[this.expando] = value; // Otherwise secure it in a non-enumerable property
39254            // configurable must be true to allow the property to be
39255            // deleted when data is removed
39256          } else {
39257            Object.defineProperty(owner, this.expando, {
39258              value: value,
39259              configurable: true
39260            });
39261          }
39262        }
39263      }
39264
39265      return value;
39266    },
39267    set: function set(owner, data, value) {
39268      var prop,
39269          cache = this.cache(owner); // Handle: [ owner, key, value ] args
39270      // Always use camelCase key (gh-2257)
39271
39272      if (typeof data === "string") {
39273        cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args
39274      } else {
39275        // Copy the properties one-by-one to the cache object
39276        for (prop in data) {
39277          cache[camelCase(prop)] = data[prop];
39278        }
39279      }
39280
39281      return cache;
39282    },
39283    get: function get(owner, key) {
39284      return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)
39285      owner[this.expando] && owner[this.expando][camelCase(key)];
39286    },
39287    access: function access(owner, key, value) {
39288      // In cases where either:
39289      //
39290      //   1. No key was specified
39291      //   2. A string key was specified, but no value provided
39292      //
39293      // Take the "read" path and allow the get method to determine
39294      // which value to return, respectively either:
39295      //
39296      //   1. The entire cache object
39297      //   2. The data stored at the key
39298      //
39299      if (key === undefined || key && typeof key === "string" && value === undefined) {
39300        return this.get(owner, key);
39301      } // When the key is not a string, or both a key and value
39302      // are specified, set or extend (existing objects) with either:
39303      //
39304      //   1. An object of properties
39305      //   2. A key and value
39306      //
39307
39308
39309      this.set(owner, key, value); // Since the "set" path can have two possible entry points
39310      // return the expected data based on which path was taken[*]
39311
39312      return value !== undefined ? value : key;
39313    },
39314    remove: function remove(owner, key) {
39315      var i,
39316          cache = owner[this.expando];
39317
39318      if (cache === undefined) {
39319        return;
39320      }
39321
39322      if (key !== undefined) {
39323        // Support array or space separated string of keys
39324        if (Array.isArray(key)) {
39325          // If key is an array of keys...
39326          // We always set camelCase keys, so remove that.
39327          key = key.map(camelCase);
39328        } else {
39329          key = camelCase(key); // If a key with the spaces exists, use it.
39330          // Otherwise, create an array by matching non-whitespace
39331
39332          key = key in cache ? [key] : key.match(rnothtmlwhite) || [];
39333        }
39334
39335        i = key.length;
39336
39337        while (i--) {
39338          delete cache[key[i]];
39339        }
39340      } // Remove the expando if there's no more data
39341
39342
39343      if (key === undefined || jQuery.isEmptyObject(cache)) {
39344        // Support: Chrome <=35 - 45
39345        // Webkit & Blink performance suffers when deleting properties
39346        // from DOM nodes, so set to undefined instead
39347        // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
39348        if (owner.nodeType) {
39349          owner[this.expando] = undefined;
39350        } else {
39351          delete owner[this.expando];
39352        }
39353      }
39354    },
39355    hasData: function hasData(owner) {
39356      var cache = owner[this.expando];
39357      return cache !== undefined && !jQuery.isEmptyObject(cache);
39358    }
39359  };
39360  var dataPriv = new Data();
39361  var dataUser = new Data(); //	Implementation Summary
39362  //
39363  //	1. Enforce API surface and semantic compatibility with 1.9.x branch
39364  //	2. Improve the module's maintainability by reducing the storage
39365  //		paths to a single mechanism.
39366  //	3. Use the same single mechanism to support "private" and "user" data.
39367  //	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
39368  //	5. Avoid exposing implementation details on user objects (eg. expando properties)
39369  //	6. Provide a clear path for implementation upgrade to WeakMap in 2014
39370
39371  var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
39372      rmultiDash = /[A-Z]/g;
39373
39374  function getData(data) {
39375    if (data === "true") {
39376      return true;
39377    }
39378
39379    if (data === "false") {
39380      return false;
39381    }
39382
39383    if (data === "null") {
39384      return null;
39385    } // Only convert to a number if it doesn't change the string
39386
39387
39388    if (data === +data + "") {
39389      return +data;
39390    }
39391
39392    if (rbrace.test(data)) {
39393      return JSON.parse(data);
39394    }
39395
39396    return data;
39397  }
39398
39399  function dataAttr(elem, key, data) {
39400    var name; // If nothing was found internally, try to fetch any
39401    // data from the HTML5 data-* attribute
39402
39403    if (data === undefined && elem.nodeType === 1) {
39404      name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
39405      data = elem.getAttribute(name);
39406
39407      if (typeof data === "string") {
39408        try {
39409          data = getData(data);
39410        } catch (e) {} // Make sure we set the data so it isn't changed later
39411
39412
39413        dataUser.set(elem, key, data);
39414      } else {
39415        data = undefined;
39416      }
39417    }
39418
39419    return data;
39420  }
39421
39422  jQuery.extend({
39423    hasData: function hasData(elem) {
39424      return dataUser.hasData(elem) || dataPriv.hasData(elem);
39425    },
39426    data: function data(elem, name, _data) {
39427      return dataUser.access(elem, name, _data);
39428    },
39429    removeData: function removeData(elem, name) {
39430      dataUser.remove(elem, name);
39431    },
39432    // TODO: Now that all calls to _data and _removeData have been replaced
39433    // with direct calls to dataPriv methods, these can be deprecated.
39434    _data: function _data(elem, name, data) {
39435      return dataPriv.access(elem, name, data);
39436    },
39437    _removeData: function _removeData(elem, name) {
39438      dataPriv.remove(elem, name);
39439    }
39440  });
39441  jQuery.fn.extend({
39442    data: function data(key, value) {
39443      var i,
39444          name,
39445          data,
39446          elem = this[0],
39447          attrs = elem && elem.attributes; // Gets all values
39448
39449      if (key === undefined) {
39450        if (this.length) {
39451          data = dataUser.get(elem);
39452
39453          if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
39454            i = attrs.length;
39455
39456            while (i--) {
39457              // Support: IE 11 only
39458              // The attrs elements can be null (#14894)
39459              if (attrs[i]) {
39460                name = attrs[i].name;
39461
39462                if (name.indexOf("data-") === 0) {
39463                  name = camelCase(name.slice(5));
39464                  dataAttr(elem, name, data[name]);
39465                }
39466              }
39467            }
39468
39469            dataPriv.set(elem, "hasDataAttrs", true);
39470          }
39471        }
39472
39473        return data;
39474      } // Sets multiple values
39475
39476
39477      if (_typeof(key) === "object") {
39478        return this.each(function () {
39479          dataUser.set(this, key);
39480        });
39481      }
39482
39483      return access(this, function (value) {
39484        var data; // The calling jQuery object (element matches) is not empty
39485        // (and therefore has an element appears at this[ 0 ]) and the
39486        // `value` parameter was not undefined. An empty jQuery object
39487        // will result in `undefined` for elem = this[ 0 ] which will
39488        // throw an exception if an attempt to read a data cache is made.
39489
39490        if (elem && value === undefined) {
39491          // Attempt to get data from the cache
39492          // The key will always be camelCased in Data
39493          data = dataUser.get(elem, key);
39494
39495          if (data !== undefined) {
39496            return data;
39497          } // Attempt to "discover" the data in
39498          // HTML5 custom data-* attrs
39499
39500
39501          data = dataAttr(elem, key);
39502
39503          if (data !== undefined) {
39504            return data;
39505          } // We tried really hard, but the data doesn't exist.
39506
39507
39508          return;
39509        } // Set the data...
39510
39511
39512        this.each(function () {
39513          // We always store the camelCased key
39514          dataUser.set(this, key, value);
39515        });
39516      }, null, value, arguments.length > 1, null, true);
39517    },
39518    removeData: function removeData(key) {
39519      return this.each(function () {
39520        dataUser.remove(this, key);
39521      });
39522    }
39523  });
39524  jQuery.extend({
39525    queue: function queue(elem, type, data) {
39526      var queue;
39527
39528      if (elem) {
39529        type = (type || "fx") + "queue";
39530        queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup
39531
39532        if (data) {
39533          if (!queue || Array.isArray(data)) {
39534            queue = dataPriv.access(elem, type, jQuery.makeArray(data));
39535          } else {
39536            queue.push(data);
39537          }
39538        }
39539
39540        return queue || [];
39541      }
39542    },
39543    dequeue: function dequeue(elem, type) {
39544      type = type || "fx";
39545
39546      var queue = jQuery.queue(elem, type),
39547          startLength = queue.length,
39548          fn = queue.shift(),
39549          hooks = jQuery._queueHooks(elem, type),
39550          next = function next() {
39551        jQuery.dequeue(elem, type);
39552      }; // If the fx queue is dequeued, always remove the progress sentinel
39553
39554
39555      if (fn === "inprogress") {
39556        fn = queue.shift();
39557        startLength--;
39558      }
39559
39560      if (fn) {
39561        // Add a progress sentinel to prevent the fx queue from being
39562        // automatically dequeued
39563        if (type === "fx") {
39564          queue.unshift("inprogress");
39565        } // Clear up the last queue stop function
39566
39567
39568        delete hooks.stop;
39569        fn.call(elem, next, hooks);
39570      }
39571
39572      if (!startLength && hooks) {
39573        hooks.empty.fire();
39574      }
39575    },
39576    // Not public - generate a queueHooks object, or return the current one
39577    _queueHooks: function _queueHooks(elem, type) {
39578      var key = type + "queueHooks";
39579      return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
39580        empty: jQuery.Callbacks("once memory").add(function () {
39581          dataPriv.remove(elem, [type + "queue", key]);
39582        })
39583      });
39584    }
39585  });
39586  jQuery.fn.extend({
39587    queue: function queue(type, data) {
39588      var setter = 2;
39589
39590      if (typeof type !== "string") {
39591        data = type;
39592        type = "fx";
39593        setter--;
39594      }
39595
39596      if (arguments.length < setter) {
39597        return jQuery.queue(this[0], type);
39598      }
39599
39600      return data === undefined ? this : this.each(function () {
39601        var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue
39602
39603        jQuery._queueHooks(this, type);
39604
39605        if (type === "fx" && queue[0] !== "inprogress") {
39606          jQuery.dequeue(this, type);
39607        }
39608      });
39609    },
39610    dequeue: function dequeue(type) {
39611      return this.each(function () {
39612        jQuery.dequeue(this, type);
39613      });
39614    },
39615    clearQueue: function clearQueue(type) {
39616      return this.queue(type || "fx", []);
39617    },
39618    // Get a promise resolved when queues of a certain type
39619    // are emptied (fx is the type by default)
39620    promise: function promise(type, obj) {
39621      var tmp,
39622          count = 1,
39623          defer = jQuery.Deferred(),
39624          elements = this,
39625          i = this.length,
39626          resolve = function resolve() {
39627        if (! --count) {
39628          defer.resolveWith(elements, [elements]);
39629        }
39630      };
39631
39632      if (typeof type !== "string") {
39633        obj = type;
39634        type = undefined;
39635      }
39636
39637      type = type || "fx";
39638
39639      while (i--) {
39640        tmp = dataPriv.get(elements[i], type + "queueHooks");
39641
39642        if (tmp && tmp.empty) {
39643          count++;
39644          tmp.empty.add(resolve);
39645        }
39646      }
39647
39648      resolve();
39649      return defer.promise(obj);
39650    }
39651  });
39652  var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
39653  var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
39654  var cssExpand = ["Top", "Right", "Bottom", "Left"];
39655  var documentElement = document.documentElement;
39656
39657  var isAttached = function isAttached(elem) {
39658    return jQuery.contains(elem.ownerDocument, elem);
39659  },
39660      composed = {
39661    composed: true
39662  }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
39663  // Check attachment across shadow DOM boundaries when possible (gh-3504)
39664  // Support: iOS 10.0-10.2 only
39665  // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
39666  // leading to errors. We need to check for `getRootNode`.
39667
39668
39669  if (documentElement.getRootNode) {
39670    isAttached = function isAttached(elem) {
39671      return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;
39672    };
39673  }
39674
39675  var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {
39676    // isHiddenWithinTree might be called from jQuery#filter function;
39677    // in that case, element will be second argument
39678    elem = el || elem; // Inline style trumps all
39679
39680    return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style
39681    // Support: Firefox <=43 - 45
39682    // Disconnected elements can have computed display: none, so first confirm that elem is
39683    // in the document.
39684    isAttached(elem) && jQuery.css(elem, "display") === "none";
39685  };
39686
39687  function adjustCSS(elem, prop, valueParts, tween) {
39688    var adjusted,
39689        scale,
39690        maxIterations = 20,
39691        currentValue = tween ? function () {
39692      return tween.cur();
39693    } : function () {
39694      return jQuery.css(elem, prop, "");
39695    },
39696        initial = currentValue(),
39697        unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"),
39698        // Starting value computation is required for potential unit mismatches
39699    initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery.css(elem, prop));
39700
39701    if (initialInUnit && initialInUnit[3] !== unit) {
39702      // Support: Firefox <=54
39703      // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
39704      initial = initial / 2; // Trust units reported by jQuery.css
39705
39706      unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point
39707
39708      initialInUnit = +initial || 1;
39709
39710      while (maxIterations--) {
39711        // Evaluate and update our best guess (doubling guesses that zero out).
39712        // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
39713        jQuery.style(elem, prop, initialInUnit + unit);
39714
39715        if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {
39716          maxIterations = 0;
39717        }
39718
39719        initialInUnit = initialInUnit / scale;
39720      }
39721
39722      initialInUnit = initialInUnit * 2;
39723      jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on
39724
39725      valueParts = valueParts || [];
39726    }
39727
39728    if (valueParts) {
39729      initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified
39730
39731      adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
39732
39733      if (tween) {
39734        tween.unit = unit;
39735        tween.start = initialInUnit;
39736        tween.end = adjusted;
39737      }
39738    }
39739
39740    return adjusted;
39741  }
39742
39743  var defaultDisplayMap = {};
39744
39745  function getDefaultDisplay(elem) {
39746    var temp,
39747        doc = elem.ownerDocument,
39748        nodeName = elem.nodeName,
39749        display = defaultDisplayMap[nodeName];
39750
39751    if (display) {
39752      return display;
39753    }
39754
39755    temp = doc.body.appendChild(doc.createElement(nodeName));
39756    display = jQuery.css(temp, "display");
39757    temp.parentNode.removeChild(temp);
39758
39759    if (display === "none") {
39760      display = "block";
39761    }
39762
39763    defaultDisplayMap[nodeName] = display;
39764    return display;
39765  }
39766
39767  function showHide(elements, show) {
39768    var display,
39769        elem,
39770        values = [],
39771        index = 0,
39772        length = elements.length; // Determine new display value for elements that need to change
39773
39774    for (; index < length; index++) {
39775      elem = elements[index];
39776
39777      if (!elem.style) {
39778        continue;
39779      }
39780
39781      display = elem.style.display;
39782
39783      if (show) {
39784        // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
39785        // check is required in this first loop unless we have a nonempty display value (either
39786        // inline or about-to-be-restored)
39787        if (display === "none") {
39788          values[index] = dataPriv.get(elem, "display") || null;
39789
39790          if (!values[index]) {
39791            elem.style.display = "";
39792          }
39793        }
39794
39795        if (elem.style.display === "" && isHiddenWithinTree(elem)) {
39796          values[index] = getDefaultDisplay(elem);
39797        }
39798      } else {
39799        if (display !== "none") {
39800          values[index] = "none"; // Remember what we're overwriting
39801
39802          dataPriv.set(elem, "display", display);
39803        }
39804      }
39805    } // Set the display of the elements in a second loop to avoid constant reflow
39806
39807
39808    for (index = 0; index < length; index++) {
39809      if (values[index] != null) {
39810        elements[index].style.display = values[index];
39811      }
39812    }
39813
39814    return elements;
39815  }
39816
39817  jQuery.fn.extend({
39818    show: function show() {
39819      return showHide(this, true);
39820    },
39821    hide: function hide() {
39822      return showHide(this);
39823    },
39824    toggle: function toggle(state) {
39825      if (typeof state === "boolean") {
39826        return state ? this.show() : this.hide();
39827      }
39828
39829      return this.each(function () {
39830        if (isHiddenWithinTree(this)) {
39831          jQuery(this).show();
39832        } else {
39833          jQuery(this).hide();
39834        }
39835      });
39836    }
39837  });
39838  var rcheckableType = /^(?:checkbox|radio)$/i;
39839  var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
39840  var rscriptType = /^$|^module$|\/(?:java|ecma)script/i;
39841
39842  (function () {
39843    var fragment = document.createDocumentFragment(),
39844        div = fragment.appendChild(document.createElement("div")),
39845        input = document.createElement("input"); // Support: Android 4.0 - 4.3 only
39846    // Check state lost if the name is set (#11217)
39847    // Support: Windows Web Apps (WWA)
39848    // `name` and `type` must use .setAttribute for WWA (#14901)
39849
39850    input.setAttribute("type", "radio");
39851    input.setAttribute("checked", "checked");
39852    input.setAttribute("name", "t");
39853    div.appendChild(input); // Support: Android <=4.1 only
39854    // Older WebKit doesn't clone checked state correctly in fragments
39855
39856    support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only
39857    // Make sure textarea (and checkbox) defaultValue is properly cloned
39858
39859    div.innerHTML = "<textarea>x</textarea>";
39860    support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; // Support: IE <=9 only
39861    // IE <=9 replaces <option> tags with their contents when inserted outside of
39862    // the select element.
39863
39864    div.innerHTML = "<option></option>";
39865    support.option = !!div.lastChild;
39866  })(); // We have to close these tags to support XHTML (#13200)
39867
39868
39869  var wrapMap = {
39870    // XHTML parsers do not magically insert elements in the
39871    // same way that tag soup parsers do. So we cannot shorten
39872    // this by omitting <tbody> or other required elements.
39873    thead: [1, "<table>", "</table>"],
39874    col: [2, "<table><colgroup>", "</colgroup></table>"],
39875    tr: [2, "<table><tbody>", "</tbody></table>"],
39876    td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
39877    _default: [0, "", ""]
39878  };
39879  wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
39880  wrapMap.th = wrapMap.td; // Support: IE <=9 only
39881
39882  if (!support.option) {
39883    wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
39884  }
39885
39886  function getAll(context, tag) {
39887    // Support: IE <=9 - 11 only
39888    // Use typeof to avoid zero-argument method invocation on host objects (#15151)
39889    var ret;
39890
39891    if (typeof context.getElementsByTagName !== "undefined") {
39892      ret = context.getElementsByTagName(tag || "*");
39893    } else if (typeof context.querySelectorAll !== "undefined") {
39894      ret = context.querySelectorAll(tag || "*");
39895    } else {
39896      ret = [];
39897    }
39898
39899    if (tag === undefined || tag && nodeName(context, tag)) {
39900      return jQuery.merge([context], ret);
39901    }
39902
39903    return ret;
39904  } // Mark scripts as having already been evaluated
39905
39906
39907  function setGlobalEval(elems, refElements) {
39908    var i = 0,
39909        l = elems.length;
39910
39911    for (; i < l; i++) {
39912      dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval"));
39913    }
39914  }
39915
39916  var rhtml = /<|&#?\w+;/;
39917
39918  function buildFragment(elems, context, scripts, selection, ignored) {
39919    var elem,
39920        tmp,
39921        tag,
39922        wrap,
39923        attached,
39924        j,
39925        fragment = context.createDocumentFragment(),
39926        nodes = [],
39927        i = 0,
39928        l = elems.length;
39929
39930    for (; i < l; i++) {
39931      elem = elems[i];
39932
39933      if (elem || elem === 0) {
39934        // Add nodes directly
39935        if (toType(elem) === "object") {
39936          // Support: Android <=4.0 only, PhantomJS 1 only
39937          // push.apply(_, arraylike) throws on ancient WebKit
39938          jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node
39939        } else if (!rhtml.test(elem)) {
39940          nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes
39941        } else {
39942          tmp = tmp || fragment.appendChild(context.createElement("div")); // Deserialize a standard representation
39943
39944          tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
39945          wrap = wrapMap[tag] || wrapMap._default;
39946          tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content
39947
39948          j = wrap[0];
39949
39950          while (j--) {
39951            tmp = tmp.lastChild;
39952          } // Support: Android <=4.0 only, PhantomJS 1 only
39953          // push.apply(_, arraylike) throws on ancient WebKit
39954
39955
39956          jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container
39957
39958          tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392)
39959
39960          tmp.textContent = "";
39961        }
39962      }
39963    } // Remove wrapper from fragment
39964
39965
39966    fragment.textContent = "";
39967    i = 0;
39968
39969    while (elem = nodes[i++]) {
39970      // Skip elements already in the context collection (trac-4087)
39971      if (selection && jQuery.inArray(elem, selection) > -1) {
39972        if (ignored) {
39973          ignored.push(elem);
39974        }
39975
39976        continue;
39977      }
39978
39979      attached = isAttached(elem); // Append to fragment
39980
39981      tmp = getAll(fragment.appendChild(elem), "script"); // Preserve script evaluation history
39982
39983      if (attached) {
39984        setGlobalEval(tmp);
39985      } // Capture executables
39986
39987
39988      if (scripts) {
39989        j = 0;
39990
39991        while (elem = tmp[j++]) {
39992          if (rscriptType.test(elem.type || "")) {
39993            scripts.push(elem);
39994          }
39995        }
39996      }
39997    }
39998
39999    return fragment;
40000  }
40001
40002  var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
40003
40004  function returnTrue() {
40005    return true;
40006  }
40007
40008  function returnFalse() {
40009    return false;
40010  } // Support: IE <=9 - 11+
40011  // focus() and blur() are asynchronous, except when they are no-op.
40012  // So expect focus to be synchronous when the element is already active,
40013  // and blur to be synchronous when the element is not already active.
40014  // (focus and blur are always synchronous in other supported browsers,
40015  // this just defines when we can count on it).
40016
40017
40018  function expectSync(elem, type) {
40019    return elem === safeActiveElement() === (type === "focus");
40020  } // Support: IE <=9 only
40021  // Accessing document.activeElement can throw unexpectedly
40022  // https://bugs.jquery.com/ticket/13393
40023
40024
40025  function safeActiveElement() {
40026    try {
40027      return document.activeElement;
40028    } catch (err) {}
40029  }
40030
40031  function _on(elem, types, selector, data, fn, one) {
40032    var origFn, type; // Types can be a map of types/handlers
40033
40034    if (_typeof(types) === "object") {
40035      // ( types-Object, selector, data )
40036      if (typeof selector !== "string") {
40037        // ( types-Object, data )
40038        data = data || selector;
40039        selector = undefined;
40040      }
40041
40042      for (type in types) {
40043        _on(elem, type, selector, data, types[type], one);
40044      }
40045
40046      return elem;
40047    }
40048
40049    if (data == null && fn == null) {
40050      // ( types, fn )
40051      fn = selector;
40052      data = selector = undefined;
40053    } else if (fn == null) {
40054      if (typeof selector === "string") {
40055        // ( types, selector, fn )
40056        fn = data;
40057        data = undefined;
40058      } else {
40059        // ( types, data, fn )
40060        fn = data;
40061        data = selector;
40062        selector = undefined;
40063      }
40064    }
40065
40066    if (fn === false) {
40067      fn = returnFalse;
40068    } else if (!fn) {
40069      return elem;
40070    }
40071
40072    if (one === 1) {
40073      origFn = fn;
40074
40075      fn = function fn(event) {
40076        // Can use an empty set, since event contains the info
40077        jQuery().off(event);
40078        return origFn.apply(this, arguments);
40079      }; // Use same guid so caller can remove using origFn
40080
40081
40082      fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);
40083    }
40084
40085    return elem.each(function () {
40086      jQuery.event.add(this, types, fn, data, selector);
40087    });
40088  }
40089  /*
40090   * Helper functions for managing events -- not part of the public interface.
40091   * Props to Dean Edwards' addEvent library for many of the ideas.
40092   */
40093
40094
40095  jQuery.event = {
40096    global: {},
40097    add: function add(elem, types, handler, data, selector) {
40098      var handleObjIn,
40099          eventHandle,
40100          tmp,
40101          events,
40102          t,
40103          handleObj,
40104          special,
40105          handlers,
40106          type,
40107          namespaces,
40108          origType,
40109          elemData = dataPriv.get(elem); // Only attach events to objects that accept data
40110
40111      if (!acceptData(elem)) {
40112        return;
40113      } // Caller can pass in an object of custom data in lieu of the handler
40114
40115
40116      if (handler.handler) {
40117        handleObjIn = handler;
40118        handler = handleObjIn.handler;
40119        selector = handleObjIn.selector;
40120      } // Ensure that invalid selectors throw exceptions at attach time
40121      // Evaluate against documentElement in case elem is a non-element node (e.g., document)
40122
40123
40124      if (selector) {
40125        jQuery.find.matchesSelector(documentElement, selector);
40126      } // Make sure that the handler has a unique ID, used to find/remove it later
40127
40128
40129      if (!handler.guid) {
40130        handler.guid = jQuery.guid++;
40131      } // Init the element's event structure and main handler, if this is the first
40132
40133
40134      if (!(events = elemData.events)) {
40135        events = elemData.events = Object.create(null);
40136      }
40137
40138      if (!(eventHandle = elemData.handle)) {
40139        eventHandle = elemData.handle = function (e) {
40140          // Discard the second event of a jQuery.event.trigger() and
40141          // when an event is called after a page has unloaded
40142          return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;
40143        };
40144      } // Handle multiple events separated by a space
40145
40146
40147      types = (types || "").match(rnothtmlwhite) || [""];
40148      t = types.length;
40149
40150      while (t--) {
40151        tmp = rtypenamespace.exec(types[t]) || [];
40152        type = origType = tmp[1];
40153        namespaces = (tmp[2] || "").split(".").sort(); // There *must* be a type, no attaching namespace-only handlers
40154
40155        if (!type) {
40156          continue;
40157        } // If event changes its type, use the special event handlers for the changed type
40158
40159
40160        special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type
40161
40162        type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type
40163
40164        special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers
40165
40166        handleObj = jQuery.extend({
40167          type: type,
40168          origType: origType,
40169          data: data,
40170          handler: handler,
40171          guid: handler.guid,
40172          selector: selector,
40173          needsContext: selector && jQuery.expr.match.needsContext.test(selector),
40174          namespace: namespaces.join(".")
40175        }, handleObjIn); // Init the event handler queue if we're the first
40176
40177        if (!(handlers = events[type])) {
40178          handlers = events[type] = [];
40179          handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false
40180
40181          if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
40182            if (elem.addEventListener) {
40183              elem.addEventListener(type, eventHandle);
40184            }
40185          }
40186        }
40187
40188        if (special.add) {
40189          special.add.call(elem, handleObj);
40190
40191          if (!handleObj.handler.guid) {
40192            handleObj.handler.guid = handler.guid;
40193          }
40194        } // Add to the element's handler list, delegates in front
40195
40196
40197        if (selector) {
40198          handlers.splice(handlers.delegateCount++, 0, handleObj);
40199        } else {
40200          handlers.push(handleObj);
40201        } // Keep track of which events have ever been used, for event optimization
40202
40203
40204        jQuery.event.global[type] = true;
40205      }
40206    },
40207    // Detach an event or set of events from an element
40208    remove: function remove(elem, types, handler, selector, mappedTypes) {
40209      var j,
40210          origCount,
40211          tmp,
40212          events,
40213          t,
40214          handleObj,
40215          special,
40216          handlers,
40217          type,
40218          namespaces,
40219          origType,
40220          elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
40221
40222      if (!elemData || !(events = elemData.events)) {
40223        return;
40224      } // Once for each type.namespace in types; type may be omitted
40225
40226
40227      types = (types || "").match(rnothtmlwhite) || [""];
40228      t = types.length;
40229
40230      while (t--) {
40231        tmp = rtypenamespace.exec(types[t]) || [];
40232        type = origType = tmp[1];
40233        namespaces = (tmp[2] || "").split(".").sort(); // Unbind all events (on this namespace, if provided) for the element
40234
40235        if (!type) {
40236          for (type in events) {
40237            jQuery.event.remove(elem, type + types[t], handler, selector, true);
40238          }
40239
40240          continue;
40241        }
40242
40243        special = jQuery.event.special[type] || {};
40244        type = (selector ? special.delegateType : special.bindType) || type;
40245        handlers = events[type] || [];
40246        tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); // Remove matching events
40247
40248        origCount = j = handlers.length;
40249
40250        while (j--) {
40251          handleObj = handlers[j];
40252
40253          if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) {
40254            handlers.splice(j, 1);
40255
40256            if (handleObj.selector) {
40257              handlers.delegateCount--;
40258            }
40259
40260            if (special.remove) {
40261              special.remove.call(elem, handleObj);
40262            }
40263          }
40264        } // Remove generic event handler if we removed something and no more handlers exist
40265        // (avoids potential for endless recursion during removal of special event handlers)
40266
40267
40268        if (origCount && !handlers.length) {
40269          if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
40270            jQuery.removeEvent(elem, type, elemData.handle);
40271          }
40272
40273          delete events[type];
40274        }
40275      } // Remove data and the expando if it's no longer used
40276
40277
40278      if (jQuery.isEmptyObject(events)) {
40279        dataPriv.remove(elem, "handle events");
40280      }
40281    },
40282    dispatch: function dispatch(nativeEvent) {
40283      var i,
40284          j,
40285          ret,
40286          matched,
40287          handleObj,
40288          handlerQueue,
40289          args = new Array(arguments.length),
40290          // Make a writable jQuery.Event from the native event object
40291      event = jQuery.event.fix(nativeEvent),
40292          handlers = (dataPriv.get(this, "events") || Object.create(null))[event.type] || [],
40293          special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event
40294
40295      args[0] = event;
40296
40297      for (i = 1; i < arguments.length; i++) {
40298        args[i] = arguments[i];
40299      }
40300
40301      event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired
40302
40303      if (special.preDispatch && special.preDispatch.call(this, event) === false) {
40304        return;
40305      } // Determine handlers
40306
40307
40308      handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us
40309
40310      i = 0;
40311
40312      while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
40313        event.currentTarget = matched.elem;
40314        j = 0;
40315
40316        while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
40317          // If the event is namespaced, then each handler is only invoked if it is
40318          // specially universal or its namespaces are a superset of the event's.
40319          if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {
40320            event.handleObj = handleObj;
40321            event.data = handleObj.data;
40322            ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
40323
40324            if (ret !== undefined) {
40325              if ((event.result = ret) === false) {
40326                event.preventDefault();
40327                event.stopPropagation();
40328              }
40329            }
40330          }
40331        }
40332      } // Call the postDispatch hook for the mapped type
40333
40334
40335      if (special.postDispatch) {
40336        special.postDispatch.call(this, event);
40337      }
40338
40339      return event.result;
40340    },
40341    handlers: function handlers(event, _handlers) {
40342      var i,
40343          handleObj,
40344          sel,
40345          matchedHandlers,
40346          matchedSelectors,
40347          handlerQueue = [],
40348          delegateCount = _handlers.delegateCount,
40349          cur = event.target; // Find delegate handlers
40350
40351      if (delegateCount && // Support: IE <=9
40352      // Black-hole SVG <use> instance trees (trac-13180)
40353      cur.nodeType && // Support: Firefox <=42
40354      // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
40355      // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
40356      // Support: IE 11 only
40357      // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
40358      !(event.type === "click" && event.button >= 1)) {
40359        for (; cur !== this; cur = cur.parentNode || this) {
40360          // Don't check non-elements (#13208)
40361          // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
40362          if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) {
40363            matchedHandlers = [];
40364            matchedSelectors = {};
40365
40366            for (i = 0; i < delegateCount; i++) {
40367              handleObj = _handlers[i]; // Don't conflict with Object.prototype properties (#13203)
40368
40369              sel = handleObj.selector + " ";
40370
40371              if (matchedSelectors[sel] === undefined) {
40372                matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;
40373              }
40374
40375              if (matchedSelectors[sel]) {
40376                matchedHandlers.push(handleObj);
40377              }
40378            }
40379
40380            if (matchedHandlers.length) {
40381              handlerQueue.push({
40382                elem: cur,
40383                handlers: matchedHandlers
40384              });
40385            }
40386          }
40387        }
40388      } // Add the remaining (directly-bound) handlers
40389
40390
40391      cur = this;
40392
40393      if (delegateCount < _handlers.length) {
40394        handlerQueue.push({
40395          elem: cur,
40396          handlers: _handlers.slice(delegateCount)
40397        });
40398      }
40399
40400      return handlerQueue;
40401    },
40402    addProp: function addProp(name, hook) {
40403      Object.defineProperty(jQuery.Event.prototype, name, {
40404        enumerable: true,
40405        configurable: true,
40406        get: isFunction(hook) ? function () {
40407          if (this.originalEvent) {
40408            return hook(this.originalEvent);
40409          }
40410        } : function () {
40411          if (this.originalEvent) {
40412            return this.originalEvent[name];
40413          }
40414        },
40415        set: function set(value) {
40416          Object.defineProperty(this, name, {
40417            enumerable: true,
40418            configurable: true,
40419            writable: true,
40420            value: value
40421          });
40422        }
40423      });
40424    },
40425    fix: function fix(originalEvent) {
40426      return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);
40427    },
40428    special: {
40429      load: {
40430        // Prevent triggered image.load events from bubbling to window.load
40431        noBubble: true
40432      },
40433      click: {
40434        // Utilize native event to ensure correct state for checkable inputs
40435        setup: function setup(data) {
40436          // For mutual compressibility with _default, replace `this` access with a local var.
40437          // `|| data` is dead code meant only to preserve the variable through minification.
40438          var el = this || data; // Claim the first handler
40439
40440          if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
40441            // dataPriv.set( el, "click", ... )
40442            leverageNative(el, "click", returnTrue);
40443          } // Return false to allow normal processing in the caller
40444
40445
40446          return false;
40447        },
40448        trigger: function trigger(data) {
40449          // For mutual compressibility with _default, replace `this` access with a local var.
40450          // `|| data` is dead code meant only to preserve the variable through minification.
40451          var el = this || data; // Force setup before triggering a click
40452
40453          if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
40454            leverageNative(el, "click");
40455          } // Return non-false to allow normal event-path propagation
40456
40457
40458          return true;
40459        },
40460        // For cross-browser consistency, suppress native .click() on links
40461        // Also prevent it if we're currently inside a leveraged native-event stack
40462        _default: function _default(event) {
40463          var target = event.target;
40464          return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a");
40465        }
40466      },
40467      beforeunload: {
40468        postDispatch: function postDispatch(event) {
40469          // Support: Firefox 20+
40470          // Firefox doesn't alert if the returnValue field is not set.
40471          if (event.result !== undefined && event.originalEvent) {
40472            event.originalEvent.returnValue = event.result;
40473          }
40474        }
40475      }
40476    }
40477  }; // Ensure the presence of an event listener that handles manually-triggered
40478  // synthetic events by interrupting progress until reinvoked in response to
40479  // *native* events that it fires directly, ensuring that state changes have
40480  // already occurred before other listeners are invoked.
40481
40482  function leverageNative(el, type, expectSync) {
40483    // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
40484    if (!expectSync) {
40485      if (dataPriv.get(el, type) === undefined) {
40486        jQuery.event.add(el, type, returnTrue);
40487      }
40488
40489      return;
40490    } // Register the controller as a special universal handler for all event namespaces
40491
40492
40493    dataPriv.set(el, type, false);
40494    jQuery.event.add(el, type, {
40495      namespace: false,
40496      handler: function handler(event) {
40497        var notAsync,
40498            result,
40499            saved = dataPriv.get(this, type);
40500
40501        if (event.isTrigger & 1 && this[type]) {
40502          // Interrupt processing of the outer synthetic .trigger()ed event
40503          // Saved data should be false in such cases, but might be a leftover capture object
40504          // from an async native handler (gh-4350)
40505          if (!saved.length) {
40506            // Store arguments for use when handling the inner native event
40507            // There will always be at least one argument (an event object), so this array
40508            // will not be confused with a leftover capture object.
40509            saved = _slice.call(arguments);
40510            dataPriv.set(this, type, saved); // Trigger the native event and capture its result
40511            // Support: IE <=9 - 11+
40512            // focus() and blur() are asynchronous
40513
40514            notAsync = expectSync(this, type);
40515            this[type]();
40516            result = dataPriv.get(this, type);
40517
40518            if (saved !== result || notAsync) {
40519              dataPriv.set(this, type, false);
40520            } else {
40521              result = {};
40522            }
40523
40524            if (saved !== result) {
40525              // Cancel the outer synthetic event
40526              event.stopImmediatePropagation();
40527              event.preventDefault(); // Support: Chrome 86+
40528              // In Chrome, if an element having a focusout handler is blurred by
40529              // clicking outside of it, it invokes the handler synchronously. If
40530              // that handler calls `.remove()` on the element, the data is cleared,
40531              // leaving `result` undefined. We need to guard against this.
40532
40533              return result && result.value;
40534            } // If this is an inner synthetic event for an event with a bubbling surrogate
40535            // (focus or blur), assume that the surrogate already propagated from triggering the
40536            // native event and prevent that from happening again here.
40537            // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
40538            // bubbling surrogate propagates *after* the non-bubbling base), but that seems
40539            // less bad than duplication.
40540
40541          } else if ((jQuery.event.special[type] || {}).delegateType) {
40542            event.stopPropagation();
40543          } // If this is a native event triggered above, everything is now in order
40544          // Fire an inner synthetic event with the original arguments
40545
40546        } else if (saved.length) {
40547          // ...and capture the result
40548          dataPriv.set(this, type, {
40549            value: jQuery.event.trigger( // Support: IE <=9 - 11+
40550            // Extend with the prototype to reset the above stopImmediatePropagation()
40551            jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this)
40552          }); // Abort handling of the native event
40553
40554          event.stopImmediatePropagation();
40555        }
40556      }
40557    });
40558  }
40559
40560  jQuery.removeEvent = function (elem, type, handle) {
40561    // This "if" is needed for plain objects
40562    if (elem.removeEventListener) {
40563      elem.removeEventListener(type, handle);
40564    }
40565  };
40566
40567  jQuery.Event = function (src, props) {
40568    // Allow instantiation without the 'new' keyword
40569    if (!(this instanceof jQuery.Event)) {
40570      return new jQuery.Event(src, props);
40571    } // Event object
40572
40573
40574    if (src && src.type) {
40575      this.originalEvent = src;
40576      this.type = src.type; // Events bubbling up the document may have been marked as prevented
40577      // by a handler lower down the tree; reflect the correct value.
40578
40579      this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only
40580      src.returnValue === false ? returnTrue : returnFalse; // Create target properties
40581      // Support: Safari <=6 - 7 only
40582      // Target should not be a text node (#504, #13143)
40583
40584      this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;
40585      this.currentTarget = src.currentTarget;
40586      this.relatedTarget = src.relatedTarget; // Event type
40587    } else {
40588      this.type = src;
40589    } // Put explicitly provided properties onto the event object
40590
40591
40592    if (props) {
40593      jQuery.extend(this, props);
40594    } // Create a timestamp if incoming event doesn't have one
40595
40596
40597    this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed
40598
40599    this[jQuery.expando] = true;
40600  }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
40601  // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
40602
40603
40604  jQuery.Event.prototype = {
40605    constructor: jQuery.Event,
40606    isDefaultPrevented: returnFalse,
40607    isPropagationStopped: returnFalse,
40608    isImmediatePropagationStopped: returnFalse,
40609    isSimulated: false,
40610    preventDefault: function preventDefault() {
40611      var e = this.originalEvent;
40612      this.isDefaultPrevented = returnTrue;
40613
40614      if (e && !this.isSimulated) {
40615        e.preventDefault();
40616      }
40617    },
40618    stopPropagation: function stopPropagation() {
40619      var e = this.originalEvent;
40620      this.isPropagationStopped = returnTrue;
40621
40622      if (e && !this.isSimulated) {
40623        e.stopPropagation();
40624      }
40625    },
40626    stopImmediatePropagation: function stopImmediatePropagation() {
40627      var e = this.originalEvent;
40628      this.isImmediatePropagationStopped = returnTrue;
40629
40630      if (e && !this.isSimulated) {
40631        e.stopImmediatePropagation();
40632      }
40633
40634      this.stopPropagation();
40635    }
40636  }; // Includes all common event props including KeyEvent and MouseEvent specific props
40637
40638  jQuery.each({
40639    altKey: true,
40640    bubbles: true,
40641    cancelable: true,
40642    changedTouches: true,
40643    ctrlKey: true,
40644    detail: true,
40645    eventPhase: true,
40646    metaKey: true,
40647    pageX: true,
40648    pageY: true,
40649    shiftKey: true,
40650    view: true,
40651    "char": true,
40652    code: true,
40653    charCode: true,
40654    key: true,
40655    keyCode: true,
40656    button: true,
40657    buttons: true,
40658    clientX: true,
40659    clientY: true,
40660    offsetX: true,
40661    offsetY: true,
40662    pointerId: true,
40663    pointerType: true,
40664    screenX: true,
40665    screenY: true,
40666    targetTouches: true,
40667    toElement: true,
40668    touches: true,
40669    which: true
40670  }, jQuery.event.addProp);
40671  jQuery.each({
40672    focus: "focusin",
40673    blur: "focusout"
40674  }, function (type, delegateType) {
40675    jQuery.event.special[type] = {
40676      // Utilize native event if possible so blur/focus sequence is correct
40677      setup: function setup() {
40678        // Claim the first handler
40679        // dataPriv.set( this, "focus", ... )
40680        // dataPriv.set( this, "blur", ... )
40681        leverageNative(this, type, expectSync); // Return false to allow normal processing in the caller
40682
40683        return false;
40684      },
40685      trigger: function trigger() {
40686        // Force setup before trigger
40687        leverageNative(this, type); // Return non-false to allow normal event-path propagation
40688
40689        return true;
40690      },
40691      // Suppress native focus or blur as it's already being fired
40692      // in leverageNative.
40693      _default: function _default() {
40694        return true;
40695      },
40696      delegateType: delegateType
40697    };
40698  }); // Create mouseenter/leave events using mouseover/out and event-time checks
40699  // so that event delegation works in jQuery.
40700  // Do the same for pointerenter/pointerleave and pointerover/pointerout
40701  //
40702  // Support: Safari 7 only
40703  // Safari sends mouseenter too often; see:
40704  // https://bugs.chromium.org/p/chromium/issues/detail?id=470258
40705  // for the description of the bug (it existed in older Chrome versions as well).
40706
40707  jQuery.each({
40708    mouseenter: "mouseover",
40709    mouseleave: "mouseout",
40710    pointerenter: "pointerover",
40711    pointerleave: "pointerout"
40712  }, function (orig, fix) {
40713    jQuery.event.special[orig] = {
40714      delegateType: fix,
40715      bindType: fix,
40716      handle: function handle(event) {
40717        var ret,
40718            target = this,
40719            related = event.relatedTarget,
40720            handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.
40721        // NB: No relatedTarget if the mouse left/entered the browser window
40722
40723        if (!related || related !== target && !jQuery.contains(target, related)) {
40724          event.type = handleObj.origType;
40725          ret = handleObj.handler.apply(this, arguments);
40726          event.type = fix;
40727        }
40728
40729        return ret;
40730      }
40731    };
40732  });
40733  jQuery.fn.extend({
40734    on: function on(types, selector, data, fn) {
40735      return _on(this, types, selector, data, fn);
40736    },
40737    one: function one(types, selector, data, fn) {
40738      return _on(this, types, selector, data, fn, 1);
40739    },
40740    off: function off(types, selector, fn) {
40741      var handleObj, type;
40742
40743      if (types && types.preventDefault && types.handleObj) {
40744        // ( event )  dispatched jQuery.Event
40745        handleObj = types.handleObj;
40746        jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);
40747        return this;
40748      }
40749
40750      if (_typeof(types) === "object") {
40751        // ( types-object [, selector] )
40752        for (type in types) {
40753          this.off(type, selector, types[type]);
40754        }
40755
40756        return this;
40757      }
40758
40759      if (selector === false || typeof selector === "function") {
40760        // ( types [, fn] )
40761        fn = selector;
40762        selector = undefined;
40763      }
40764
40765      if (fn === false) {
40766        fn = returnFalse;
40767      }
40768
40769      return this.each(function () {
40770        jQuery.event.remove(this, types, fn, selector);
40771      });
40772    }
40773  });
40774  var // Support: IE <=10 - 11, Edge 12 - 13 only
40775  // In IE/Edge using regex groups here causes severe slowdowns.
40776  // See https://connect.microsoft.com/IE/feedback/details/1736512/
40777  rnoInnerhtml = /<script|<style|<link/i,
40778      // checked="checked" or checked
40779  rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
40780      rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; // Prefer a tbody over its parent table for containing new rows
40781
40782  function manipulationTarget(elem, content) {
40783    if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) {
40784      return jQuery(elem).children("tbody")[0] || elem;
40785    }
40786
40787    return elem;
40788  } // Replace/restore the type attribute of script elements for safe DOM manipulation
40789
40790
40791  function disableScript(elem) {
40792    elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
40793    return elem;
40794  }
40795
40796  function restoreScript(elem) {
40797    if ((elem.type || "").slice(0, 5) === "true/") {
40798      elem.type = elem.type.slice(5);
40799    } else {
40800      elem.removeAttribute("type");
40801    }
40802
40803    return elem;
40804  }
40805
40806  function cloneCopyEvent(src, dest) {
40807    var i, l, type, pdataOld, udataOld, udataCur, events;
40808
40809    if (dest.nodeType !== 1) {
40810      return;
40811    } // 1. Copy private data: events, handlers, etc.
40812
40813
40814    if (dataPriv.hasData(src)) {
40815      pdataOld = dataPriv.get(src);
40816      events = pdataOld.events;
40817
40818      if (events) {
40819        dataPriv.remove(dest, "handle events");
40820
40821        for (type in events) {
40822          for (i = 0, l = events[type].length; i < l; i++) {
40823            jQuery.event.add(dest, type, events[type][i]);
40824          }
40825        }
40826      }
40827    } // 2. Copy user data
40828
40829
40830    if (dataUser.hasData(src)) {
40831      udataOld = dataUser.access(src);
40832      udataCur = jQuery.extend({}, udataOld);
40833      dataUser.set(dest, udataCur);
40834    }
40835  } // Fix IE bugs, see support tests
40836
40837
40838  function fixInput(src, dest) {
40839    var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button.
40840
40841    if (nodeName === "input" && rcheckableType.test(src.type)) {
40842      dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options
40843    } else if (nodeName === "input" || nodeName === "textarea") {
40844      dest.defaultValue = src.defaultValue;
40845    }
40846  }
40847
40848  function domManip(collection, args, callback, ignored) {
40849    // Flatten any nested arrays
40850    args = flat(args);
40851    var fragment,
40852        first,
40853        scripts,
40854        hasScripts,
40855        node,
40856        doc,
40857        i = 0,
40858        l = collection.length,
40859        iNoClone = l - 1,
40860        value = args[0],
40861        valueIsFunction = isFunction(value); // We can't cloneNode fragments that contain checked, in WebKit
40862
40863    if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) {
40864      return collection.each(function (index) {
40865        var self = collection.eq(index);
40866
40867        if (valueIsFunction) {
40868          args[0] = value.call(this, index, self.html());
40869        }
40870
40871        domManip(self, args, callback, ignored);
40872      });
40873    }
40874
40875    if (l) {
40876      fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
40877      first = fragment.firstChild;
40878
40879      if (fragment.childNodes.length === 1) {
40880        fragment = first;
40881      } // Require either new content or an interest in ignored elements to invoke the callback
40882
40883
40884      if (first || ignored) {
40885        scripts = jQuery.map(getAll(fragment, "script"), disableScript);
40886        hasScripts = scripts.length; // Use the original fragment for the last item
40887        // instead of the first because it can end up
40888        // being emptied incorrectly in certain situations (#8070).
40889
40890        for (; i < l; i++) {
40891          node = fragment;
40892
40893          if (i !== iNoClone) {
40894            node = jQuery.clone(node, true, true); // Keep references to cloned scripts for later restoration
40895
40896            if (hasScripts) {
40897              // Support: Android <=4.0 only, PhantomJS 1 only
40898              // push.apply(_, arraylike) throws on ancient WebKit
40899              jQuery.merge(scripts, getAll(node, "script"));
40900            }
40901          }
40902
40903          callback.call(collection[i], node, i);
40904        }
40905
40906        if (hasScripts) {
40907          doc = scripts[scripts.length - 1].ownerDocument; // Reenable scripts
40908
40909          jQuery.map(scripts, restoreScript); // Evaluate executable scripts on first document insertion
40910
40911          for (i = 0; i < hasScripts; i++) {
40912            node = scripts[i];
40913
40914            if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node)) {
40915              if (node.src && (node.type || "").toLowerCase() !== "module") {
40916                // Optional AJAX dependency, but won't run scripts if not present
40917                if (jQuery._evalUrl && !node.noModule) {
40918                  jQuery._evalUrl(node.src, {
40919                    nonce: node.nonce || node.getAttribute("nonce")
40920                  }, doc);
40921                }
40922              } else {
40923                DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
40924              }
40925            }
40926          }
40927        }
40928      }
40929    }
40930
40931    return collection;
40932  }
40933
40934  function _remove(elem, selector, keepData) {
40935    var node,
40936        nodes = selector ? jQuery.filter(selector, elem) : elem,
40937        i = 0;
40938
40939    for (; (node = nodes[i]) != null; i++) {
40940      if (!keepData && node.nodeType === 1) {
40941        jQuery.cleanData(getAll(node));
40942      }
40943
40944      if (node.parentNode) {
40945        if (keepData && isAttached(node)) {
40946          setGlobalEval(getAll(node, "script"));
40947        }
40948
40949        node.parentNode.removeChild(node);
40950      }
40951    }
40952
40953    return elem;
40954  }
40955
40956  jQuery.extend({
40957    htmlPrefilter: function htmlPrefilter(html) {
40958      return html;
40959    },
40960    clone: function clone(elem, dataAndEvents, deepDataAndEvents) {
40961      var i,
40962          l,
40963          srcElements,
40964          destElements,
40965          clone = elem.cloneNode(true),
40966          inPage = isAttached(elem); // Fix IE cloning issues
40967
40968      if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {
40969        // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
40970        destElements = getAll(clone);
40971        srcElements = getAll(elem);
40972
40973        for (i = 0, l = srcElements.length; i < l; i++) {
40974          fixInput(srcElements[i], destElements[i]);
40975        }
40976      } // Copy the events from the original to the clone
40977
40978
40979      if (dataAndEvents) {
40980        if (deepDataAndEvents) {
40981          srcElements = srcElements || getAll(elem);
40982          destElements = destElements || getAll(clone);
40983
40984          for (i = 0, l = srcElements.length; i < l; i++) {
40985            cloneCopyEvent(srcElements[i], destElements[i]);
40986          }
40987        } else {
40988          cloneCopyEvent(elem, clone);
40989        }
40990      } // Preserve script evaluation history
40991
40992
40993      destElements = getAll(clone, "script");
40994
40995      if (destElements.length > 0) {
40996        setGlobalEval(destElements, !inPage && getAll(elem, "script"));
40997      } // Return the cloned set
40998
40999
41000      return clone;
41001    },
41002    cleanData: function cleanData(elems) {
41003      var data,
41004          elem,
41005          type,
41006          special = jQuery.event.special,
41007          i = 0;
41008
41009      for (; (elem = elems[i]) !== undefined; i++) {
41010        if (acceptData(elem)) {
41011          if (data = elem[dataPriv.expando]) {
41012            if (data.events) {
41013              for (type in data.events) {
41014                if (special[type]) {
41015                  jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead
41016                } else {
41017                  jQuery.removeEvent(elem, type, data.handle);
41018                }
41019              }
41020            } // Support: Chrome <=35 - 45+
41021            // Assign undefined instead of using delete, see Data#remove
41022
41023
41024            elem[dataPriv.expando] = undefined;
41025          }
41026
41027          if (elem[dataUser.expando]) {
41028            // Support: Chrome <=35 - 45+
41029            // Assign undefined instead of using delete, see Data#remove
41030            elem[dataUser.expando] = undefined;
41031          }
41032        }
41033      }
41034    }
41035  });
41036  jQuery.fn.extend({
41037    detach: function detach(selector) {
41038      return _remove(this, selector, true);
41039    },
41040    remove: function remove(selector) {
41041      return _remove(this, selector);
41042    },
41043    text: function text(value) {
41044      return access(this, function (value) {
41045        return value === undefined ? jQuery.text(this) : this.empty().each(function () {
41046          if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
41047            this.textContent = value;
41048          }
41049        });
41050      }, null, value, arguments.length);
41051    },
41052    append: function append() {
41053      return domManip(this, arguments, function (elem) {
41054        if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
41055          var target = manipulationTarget(this, elem);
41056          target.appendChild(elem);
41057        }
41058      });
41059    },
41060    prepend: function prepend() {
41061      return domManip(this, arguments, function (elem) {
41062        if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
41063          var target = manipulationTarget(this, elem);
41064          target.insertBefore(elem, target.firstChild);
41065        }
41066      });
41067    },
41068    before: function before() {
41069      return domManip(this, arguments, function (elem) {
41070        if (this.parentNode) {
41071          this.parentNode.insertBefore(elem, this);
41072        }
41073      });
41074    },
41075    after: function after() {
41076      return domManip(this, arguments, function (elem) {
41077        if (this.parentNode) {
41078          this.parentNode.insertBefore(elem, this.nextSibling);
41079        }
41080      });
41081    },
41082    empty: function empty() {
41083      var elem,
41084          i = 0;
41085
41086      for (; (elem = this[i]) != null; i++) {
41087        if (elem.nodeType === 1) {
41088          // Prevent memory leaks
41089          jQuery.cleanData(getAll(elem, false)); // Remove any remaining nodes
41090
41091          elem.textContent = "";
41092        }
41093      }
41094
41095      return this;
41096    },
41097    clone: function clone(dataAndEvents, deepDataAndEvents) {
41098      dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
41099      deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
41100      return this.map(function () {
41101        return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
41102      });
41103    },
41104    html: function html(value) {
41105      return access(this, function (value) {
41106        var elem = this[0] || {},
41107            i = 0,
41108            l = this.length;
41109
41110        if (value === undefined && elem.nodeType === 1) {
41111          return elem.innerHTML;
41112        } // See if we can take a shortcut and just use innerHTML
41113
41114
41115        if (typeof value === "string" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
41116          value = jQuery.htmlPrefilter(value);
41117
41118          try {
41119            for (; i < l; i++) {
41120              elem = this[i] || {}; // Remove element nodes and prevent memory leaks
41121
41122              if (elem.nodeType === 1) {
41123                jQuery.cleanData(getAll(elem, false));
41124                elem.innerHTML = value;
41125              }
41126            }
41127
41128            elem = 0; // If using innerHTML throws an exception, use the fallback method
41129          } catch (e) {}
41130        }
41131
41132        if (elem) {
41133          this.empty().append(value);
41134        }
41135      }, null, value, arguments.length);
41136    },
41137    replaceWith: function replaceWith() {
41138      var ignored = []; // Make the changes, replacing each non-ignored context element with the new content
41139
41140      return domManip(this, arguments, function (elem) {
41141        var parent = this.parentNode;
41142
41143        if (jQuery.inArray(this, ignored) < 0) {
41144          jQuery.cleanData(getAll(this));
41145
41146          if (parent) {
41147            parent.replaceChild(elem, this);
41148          }
41149        } // Force callback invocation
41150
41151      }, ignored);
41152    }
41153  });
41154  jQuery.each({
41155    appendTo: "append",
41156    prependTo: "prepend",
41157    insertBefore: "before",
41158    insertAfter: "after",
41159    replaceAll: "replaceWith"
41160  }, function (name, original) {
41161    jQuery.fn[name] = function (selector) {
41162      var elems,
41163          ret = [],
41164          insert = jQuery(selector),
41165          last = insert.length - 1,
41166          i = 0;
41167
41168      for (; i <= last; i++) {
41169        elems = i === last ? this : this.clone(true);
41170        jQuery(insert[i])[original](elems); // Support: Android <=4.0 only, PhantomJS 1 only
41171        // .get() because push.apply(_, arraylike) throws on ancient WebKit
41172
41173        push.apply(ret, elems.get());
41174      }
41175
41176      return this.pushStack(ret);
41177    };
41178  });
41179  var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
41180
41181  var getStyles = function getStyles(elem) {
41182    // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
41183    // IE throws on elements created in popups
41184    // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
41185    var view = elem.ownerDocument.defaultView;
41186
41187    if (!view || !view.opener) {
41188      view = window;
41189    }
41190
41191    return view.getComputedStyle(elem);
41192  };
41193
41194  var swap = function swap(elem, options, callback) {
41195    var ret,
41196        name,
41197        old = {}; // Remember the old values, and insert the new ones
41198
41199    for (name in options) {
41200      old[name] = elem.style[name];
41201      elem.style[name] = options[name];
41202    }
41203
41204    ret = callback.call(elem); // Revert the old values
41205
41206    for (name in options) {
41207      elem.style[name] = old[name];
41208    }
41209
41210    return ret;
41211  };
41212
41213  var rboxStyle = new RegExp(cssExpand.join("|"), "i");
41214
41215  (function () {
41216    // Executing both pixelPosition & boxSizingReliable tests require only one layout
41217    // so they're executed at the same time to save the second computation.
41218    function computeStyleTests() {
41219      // This is a singleton, we need to execute it only once
41220      if (!div) {
41221        return;
41222      }
41223
41224      container.style.cssText = "position:absolute;left:-11111px;width:60px;" + "margin-top:1px;padding:0;border:0";
41225      div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + "margin:auto;border:1px;padding:1px;" + "width:60%;top:1%";
41226      documentElement.appendChild(container).appendChild(div);
41227      var divStyle = window.getComputedStyle(div);
41228      pixelPositionVal = divStyle.top !== "1%"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
41229
41230      reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
41231      // Some styles come back with percentage values, even though they shouldn't
41232
41233      div.style.right = "60%";
41234      pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; // Support: IE 9 - 11 only
41235      // Detect misreporting of content dimensions for box-sizing:border-box elements
41236
41237      boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; // Support: IE 9 only
41238      // Detect overflow:scroll screwiness (gh-3699)
41239      // Support: Chrome <=64
41240      // Don't get tricked when zoom affects offsetWidth (gh-4029)
41241
41242      div.style.position = "absolute";
41243      scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;
41244      documentElement.removeChild(container); // Nullify the div so it wouldn't be stored in the memory and
41245      // it will also be a sign that checks already performed
41246
41247      div = null;
41248    }
41249
41250    function roundPixelMeasures(measure) {
41251      return Math.round(parseFloat(measure));
41252    }
41253
41254    var pixelPositionVal,
41255        boxSizingReliableVal,
41256        scrollboxSizeVal,
41257        pixelBoxStylesVal,
41258        reliableTrDimensionsVal,
41259        reliableMarginLeftVal,
41260        container = document.createElement("div"),
41261        div = document.createElement("div"); // Finish early in limited (non-browser) environments
41262
41263    if (!div.style) {
41264      return;
41265    } // Support: IE <=9 - 11 only
41266    // Style of cloned element affects source element cloned (#8908)
41267
41268
41269    div.style.backgroundClip = "content-box";
41270    div.cloneNode(true).style.backgroundClip = "";
41271    support.clearCloneStyle = div.style.backgroundClip === "content-box";
41272    jQuery.extend(support, {
41273      boxSizingReliable: function boxSizingReliable() {
41274        computeStyleTests();
41275        return boxSizingReliableVal;
41276      },
41277      pixelBoxStyles: function pixelBoxStyles() {
41278        computeStyleTests();
41279        return pixelBoxStylesVal;
41280      },
41281      pixelPosition: function pixelPosition() {
41282        computeStyleTests();
41283        return pixelPositionVal;
41284      },
41285      reliableMarginLeft: function reliableMarginLeft() {
41286        computeStyleTests();
41287        return reliableMarginLeftVal;
41288      },
41289      scrollboxSize: function scrollboxSize() {
41290        computeStyleTests();
41291        return scrollboxSizeVal;
41292      },
41293      // Support: IE 9 - 11+, Edge 15 - 18+
41294      // IE/Edge misreport `getComputedStyle` of table rows with width/height
41295      // set in CSS while `offset*` properties report correct values.
41296      // Behavior in IE 9 is more subtle than in newer versions & it passes
41297      // some versions of this test; make sure not to make it pass there!
41298      //
41299      // Support: Firefox 70+
41300      // Only Firefox includes border widths
41301      // in computed dimensions. (gh-4529)
41302      reliableTrDimensions: function reliableTrDimensions() {
41303        var table, tr, trChild, trStyle;
41304
41305        if (reliableTrDimensionsVal == null) {
41306          table = document.createElement("table");
41307          tr = document.createElement("tr");
41308          trChild = document.createElement("div");
41309          table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
41310          tr.style.cssText = "border:1px solid"; // Support: Chrome 86+
41311          // Height set through cssText does not get applied.
41312          // Computed height then comes back as 0.
41313
41314          tr.style.height = "1px";
41315          trChild.style.height = "9px"; // Support: Android 8 Chrome 86+
41316          // In our bodyBackground.html iframe,
41317          // display for all div elements is set to "inline",
41318          // which causes a problem only in Android 8 Chrome 86.
41319          // Ensuring the div is display: block
41320          // gets around this issue.
41321
41322          trChild.style.display = "block";
41323          documentElement.appendChild(table).appendChild(tr).appendChild(trChild);
41324          trStyle = window.getComputedStyle(tr);
41325          reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;
41326          documentElement.removeChild(table);
41327        }
41328
41329        return reliableTrDimensionsVal;
41330      }
41331    });
41332  })();
41333
41334  function curCSS(elem, name, computed) {
41335    var width,
41336        minWidth,
41337        maxWidth,
41338        ret,
41339        // Support: Firefox 51+
41340    // Retrieving style before computed somehow
41341    // fixes an issue with getting wrong values
41342    // on detached elements
41343    style = elem.style;
41344    computed = computed || getStyles(elem); // getPropertyValue is needed for:
41345    //   .css('filter') (IE 9 only, #12537)
41346    //   .css('--customProperty) (#3144)
41347
41348    if (computed) {
41349      ret = computed.getPropertyValue(name) || computed[name];
41350
41351      if (ret === "" && !isAttached(elem)) {
41352        ret = jQuery.style(elem, name);
41353      } // A tribute to the "awesome hack by Dean Edwards"
41354      // Android Browser returns percentage for some values,
41355      // but width seems to be reliably pixels.
41356      // This is against the CSSOM draft spec:
41357      // https://drafts.csswg.org/cssom/#resolved-values
41358
41359
41360      if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {
41361        // Remember the original values
41362        width = style.width;
41363        minWidth = style.minWidth;
41364        maxWidth = style.maxWidth; // Put in the new values to get a computed value out
41365
41366        style.minWidth = style.maxWidth = style.width = ret;
41367        ret = computed.width; // Revert the changed values
41368
41369        style.width = width;
41370        style.minWidth = minWidth;
41371        style.maxWidth = maxWidth;
41372      }
41373    }
41374
41375    return ret !== undefined ? // Support: IE <=9 - 11 only
41376    // IE returns zIndex value as an integer.
41377    ret + "" : ret;
41378  }
41379
41380  function addGetHookIf(conditionFn, hookFn) {
41381    // Define the hook, we'll check on the first run if it's really needed.
41382    return {
41383      get: function get() {
41384        if (conditionFn()) {
41385          // Hook not needed (or it's not possible to use it due
41386          // to missing dependency), remove it.
41387          delete this.get;
41388          return;
41389        } // Hook needed; redefine it so that the support test is not executed again.
41390
41391
41392        return (this.get = hookFn).apply(this, arguments);
41393      }
41394    };
41395  }
41396
41397  var cssPrefixes = ["Webkit", "Moz", "ms"],
41398      emptyStyle = document.createElement("div").style,
41399      vendorProps = {}; // Return a vendor-prefixed property or undefined
41400
41401  function vendorPropName(name) {
41402    // Check for vendor prefixed names
41403    var capName = name[0].toUpperCase() + name.slice(1),
41404        i = cssPrefixes.length;
41405
41406    while (i--) {
41407      name = cssPrefixes[i] + capName;
41408
41409      if (name in emptyStyle) {
41410        return name;
41411      }
41412    }
41413  } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property
41414
41415
41416  function finalPropName(name) {
41417    var _final = jQuery.cssProps[name] || vendorProps[name];
41418
41419    if (_final) {
41420      return _final;
41421    }
41422
41423    if (name in emptyStyle) {
41424      return name;
41425    }
41426
41427    return vendorProps[name] = vendorPropName(name) || name;
41428  }
41429
41430  var // Swappable if display is none or starts with table
41431  // except "table", "table-cell", or "table-caption"
41432  // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
41433  rdisplayswap = /^(none|table(?!-c[ea]).+)/,
41434      rcustomProp = /^--/,
41435      cssShow = {
41436    position: "absolute",
41437    visibility: "hidden",
41438    display: "block"
41439  },
41440      cssNormalTransform = {
41441    letterSpacing: "0",
41442    fontWeight: "400"
41443  };
41444
41445  function setPositiveNumber(_elem, value, subtract) {
41446    // Any relative (+/-) values have already been
41447    // normalized at this point
41448    var matches = rcssNum.exec(value);
41449    return matches ? // Guard against undefined "subtract", e.g., when used as in cssHooks
41450    Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value;
41451  }
41452
41453  function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {
41454    var i = dimension === "width" ? 1 : 0,
41455        extra = 0,
41456        delta = 0; // Adjustment may not be necessary
41457
41458    if (box === (isBorderBox ? "border" : "content")) {
41459      return 0;
41460    }
41461
41462    for (; i < 4; i += 2) {
41463      // Both box models exclude margin
41464      if (box === "margin") {
41465        delta += jQuery.css(elem, box + cssExpand[i], true, styles);
41466      } // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
41467
41468
41469      if (!isBorderBox) {
41470        // Add padding
41471        delta += jQuery.css(elem, "padding" + cssExpand[i], true, styles); // For "border" or "margin", add border
41472
41473        if (box !== "padding") {
41474          delta += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); // But still keep track of it otherwise
41475        } else {
41476          extra += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
41477        } // If we get here with a border-box (content + padding + border), we're seeking "content" or
41478        // "padding" or "margin"
41479
41480      } else {
41481        // For "content", subtract padding
41482        if (box === "content") {
41483          delta -= jQuery.css(elem, "padding" + cssExpand[i], true, styles);
41484        } // For "content" or "padding", subtract border
41485
41486
41487        if (box !== "margin") {
41488          delta -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
41489        }
41490      }
41491    } // Account for positive content-box scroll gutter when requested by providing computedVal
41492
41493
41494    if (!isBorderBox && computedVal >= 0) {
41495      // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
41496      // Assuming integer scroll gutter, subtract the rest and round down
41497      delta += Math.max(0, Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
41498      // Use an explicit zero to avoid NaN (gh-3964)
41499      )) || 0;
41500    }
41501
41502    return delta;
41503  }
41504
41505  function getWidthOrHeight(elem, dimension, extra) {
41506    // Start with computed style
41507    var styles = getStyles(elem),
41508        // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
41509    // Fake content-box until we know it's needed to know the true value.
41510    boxSizingNeeded = !support.boxSizingReliable() || extra,
41511        isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box",
41512        valueIsBorderBox = isBorderBox,
41513        val = curCSS(elem, dimension, styles),
41514        offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1); // Support: Firefox <=54
41515    // Return a confounding non-pixel value or feign ignorance, as appropriate.
41516
41517    if (rnumnonpx.test(val)) {
41518      if (!extra) {
41519        return val;
41520      }
41521
41522      val = "auto";
41523    } // Support: IE 9 - 11 only
41524    // Use offsetWidth/offsetHeight for when box sizing is unreliable.
41525    // In those cases, the computed value can be trusted to be border-box.
41526
41527
41528    if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+
41529    // IE/Edge misreport `getComputedStyle` of table rows with width/height
41530    // set in CSS while `offset*` properties report correct values.
41531    // Interestingly, in some cases IE 9 doesn't suffer from this issue.
41532    !support.reliableTrDimensions() && nodeName(elem, "tr") || // Fall back to offsetWidth/offsetHeight when value is "auto"
41533    // This happens for inline elements with no explicit setting (gh-3571)
41534    val === "auto" || // Support: Android <=4.1 - 4.3 only
41535    // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
41536    !parseFloat(val) && jQuery.css(elem, "display", false, styles) === "inline") && // Make sure the element is visible & connected
41537    elem.getClientRects().length) {
41538      isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box"; // Where available, offsetWidth/offsetHeight approximate border box dimensions.
41539      // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
41540      // retrieved value as a content box dimension.
41541
41542      valueIsBorderBox = offsetProp in elem;
41543
41544      if (valueIsBorderBox) {
41545        val = elem[offsetProp];
41546      }
41547    } // Normalize "" and auto
41548
41549
41550    val = parseFloat(val) || 0; // Adjust for the element's box model
41551
41552    return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589)
41553    val) + "px";
41554  }
41555
41556  jQuery.extend({
41557    // Add in style property hooks for overriding the default
41558    // behavior of getting and setting a style property
41559    cssHooks: {
41560      opacity: {
41561        get: function get(elem, computed) {
41562          if (computed) {
41563            // We should always get a number back from opacity
41564            var ret = curCSS(elem, "opacity");
41565            return ret === "" ? "1" : ret;
41566          }
41567        }
41568      }
41569    },
41570    // Don't automatically add "px" to these possibly-unitless properties
41571    cssNumber: {
41572      "animationIterationCount": true,
41573      "columnCount": true,
41574      "fillOpacity": true,
41575      "flexGrow": true,
41576      "flexShrink": true,
41577      "fontWeight": true,
41578      "gridArea": true,
41579      "gridColumn": true,
41580      "gridColumnEnd": true,
41581      "gridColumnStart": true,
41582      "gridRow": true,
41583      "gridRowEnd": true,
41584      "gridRowStart": true,
41585      "lineHeight": true,
41586      "opacity": true,
41587      "order": true,
41588      "orphans": true,
41589      "widows": true,
41590      "zIndex": true,
41591      "zoom": true
41592    },
41593    // Add in properties whose names you wish to fix before
41594    // setting or getting the value
41595    cssProps: {},
41596    // Get and set the style property on a DOM Node
41597    style: function style(elem, name, value, extra) {
41598      // Don't set styles on text and comment nodes
41599      if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
41600        return;
41601      } // Make sure that we're working with the right name
41602
41603
41604      var ret,
41605          type,
41606          hooks,
41607          origName = camelCase(name),
41608          isCustomProp = rcustomProp.test(name),
41609          style = elem.style; // Make sure that we're working with the right name. We don't
41610      // want to query the value if it is a CSS custom property
41611      // since they are user-defined.
41612
41613      if (!isCustomProp) {
41614        name = finalPropName(origName);
41615      } // Gets hook for the prefixed version, then unprefixed version
41616
41617
41618      hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value
41619
41620      if (value !== undefined) {
41621        type = _typeof(value); // Convert "+=" or "-=" to relative numbers (#7345)
41622
41623        if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) {
41624          value = adjustCSS(elem, name, ret); // Fixes bug #9237
41625
41626          type = "number";
41627        } // Make sure that null and NaN values aren't set (#7116)
41628
41629
41630        if (value == null || value !== value) {
41631          return;
41632        } // If a number was passed in, add the unit (except for certain CSS properties)
41633        // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
41634        // "px" to a few hardcoded values.
41635
41636
41637        if (type === "number" && !isCustomProp) {
41638          value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px");
41639        } // background-* props affect original clone's values
41640
41641
41642        if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) {
41643          style[name] = "inherit";
41644        } // If a hook was provided, use that value, otherwise just set the specified value
41645
41646
41647        if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {
41648          if (isCustomProp) {
41649            style.setProperty(name, value);
41650          } else {
41651            style[name] = value;
41652          }
41653        }
41654      } else {
41655        // If a hook was provided get the non-computed value from there
41656        if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {
41657          return ret;
41658        } // Otherwise just get the value from the style object
41659
41660
41661        return style[name];
41662      }
41663    },
41664    css: function css(elem, name, extra, styles) {
41665      var val,
41666          num,
41667          hooks,
41668          origName = camelCase(name),
41669          isCustomProp = rcustomProp.test(name); // Make sure that we're working with the right name. We don't
41670      // want to modify the value if it is a CSS custom property
41671      // since they are user-defined.
41672
41673      if (!isCustomProp) {
41674        name = finalPropName(origName);
41675      } // Try prefixed name followed by the unprefixed name
41676
41677
41678      hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there
41679
41680      if (hooks && "get" in hooks) {
41681        val = hooks.get(elem, true, extra);
41682      } // Otherwise, if a way to get the computed value exists, use that
41683
41684
41685      if (val === undefined) {
41686        val = curCSS(elem, name, styles);
41687      } // Convert "normal" to computed value
41688
41689
41690      if (val === "normal" && name in cssNormalTransform) {
41691        val = cssNormalTransform[name];
41692      } // Make numeric if forced or a qualifier was provided and val looks numeric
41693
41694
41695      if (extra === "" || extra) {
41696        num = parseFloat(val);
41697        return extra === true || isFinite(num) ? num || 0 : val;
41698      }
41699
41700      return val;
41701    }
41702  });
41703  jQuery.each(["height", "width"], function (_i, dimension) {
41704    jQuery.cssHooks[dimension] = {
41705      get: function get(elem, computed, extra) {
41706        if (computed) {
41707          // Certain elements can have dimension info if we invisibly show them
41708          // but it must have a current display style that would benefit
41709          return rdisplayswap.test(jQuery.css(elem, "display")) && ( // Support: Safari 8+
41710          // Table columns in Safari have non-zero offsetWidth & zero
41711          // getBoundingClientRect().width unless display is changed.
41712          // Support: IE <=11 only
41713          // Running getBoundingClientRect on a disconnected node
41714          // in IE throws an error.
41715          !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {
41716            return getWidthOrHeight(elem, dimension, extra);
41717          }) : getWidthOrHeight(elem, dimension, extra);
41718        }
41719      },
41720      set: function set(elem, value, extra) {
41721        var matches,
41722            styles = getStyles(elem),
41723            // Only read styles.position if the test has a chance to fail
41724        // to avoid forcing a reflow.
41725        scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute",
41726            // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
41727        boxSizingNeeded = scrollboxSizeBuggy || extra,
41728            isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box",
41729            subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and
41730        // faking a content-box to get border and padding (gh-3699)
41731
41732        if (isBorderBox && scrollboxSizeBuggy) {
41733          subtract -= Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5);
41734        } // Convert to pixels if value adjustment is needed
41735
41736
41737        if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") {
41738          elem.style[dimension] = value;
41739          value = jQuery.css(elem, dimension);
41740        }
41741
41742        return setPositiveNumber(elem, value, subtract);
41743      }
41744    };
41745  });
41746  jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {
41747    if (computed) {
41748      return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, {
41749        marginLeft: 0
41750      }, function () {
41751        return elem.getBoundingClientRect().left;
41752      })) + "px";
41753    }
41754  }); // These hooks are used by animate to expand properties
41755
41756  jQuery.each({
41757    margin: "",
41758    padding: "",
41759    border: "Width"
41760  }, function (prefix, suffix) {
41761    jQuery.cssHooks[prefix + suffix] = {
41762      expand: function expand(value) {
41763        var i = 0,
41764            expanded = {},
41765            // Assumes a single number if not a string
41766        parts = typeof value === "string" ? value.split(" ") : [value];
41767
41768        for (; i < 4; i++) {
41769          expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
41770        }
41771
41772        return expanded;
41773      }
41774    };
41775
41776    if (prefix !== "margin") {
41777      jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;
41778    }
41779  });
41780  jQuery.fn.extend({
41781    css: function css(name, value) {
41782      return access(this, function (elem, name, value) {
41783        var styles,
41784            len,
41785            map = {},
41786            i = 0;
41787
41788        if (Array.isArray(name)) {
41789          styles = getStyles(elem);
41790          len = name.length;
41791
41792          for (; i < len; i++) {
41793            map[name[i]] = jQuery.css(elem, name[i], false, styles);
41794          }
41795
41796          return map;
41797        }
41798
41799        return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);
41800      }, name, value, arguments.length > 1);
41801    }
41802  });
41803
41804  function Tween(elem, options, prop, end, easing) {
41805    return new Tween.prototype.init(elem, options, prop, end, easing);
41806  }
41807
41808  jQuery.Tween = Tween;
41809  Tween.prototype = {
41810    constructor: Tween,
41811    init: function init(elem, options, prop, end, easing, unit) {
41812      this.elem = elem;
41813      this.prop = prop;
41814      this.easing = easing || jQuery.easing._default;
41815      this.options = options;
41816      this.start = this.now = this.cur();
41817      this.end = end;
41818      this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
41819    },
41820    cur: function cur() {
41821      var hooks = Tween.propHooks[this.prop];
41822      return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
41823    },
41824    run: function run(percent) {
41825      var eased,
41826          hooks = Tween.propHooks[this.prop];
41827
41828      if (this.options.duration) {
41829        this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);
41830      } else {
41831        this.pos = eased = percent;
41832      }
41833
41834      this.now = (this.end - this.start) * eased + this.start;
41835
41836      if (this.options.step) {
41837        this.options.step.call(this.elem, this.now, this);
41838      }
41839
41840      if (hooks && hooks.set) {
41841        hooks.set(this);
41842      } else {
41843        Tween.propHooks._default.set(this);
41844      }
41845
41846      return this;
41847    }
41848  };
41849  Tween.prototype.init.prototype = Tween.prototype;
41850  Tween.propHooks = {
41851    _default: {
41852      get: function get(tween) {
41853        var result; // Use a property on the element directly when it is not a DOM element,
41854        // or when there is no matching style property that exists.
41855
41856        if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
41857          return tween.elem[tween.prop];
41858        } // Passing an empty string as a 3rd parameter to .css will automatically
41859        // attempt a parseFloat and fallback to a string if the parse fails.
41860        // Simple values such as "10px" are parsed to Float;
41861        // complex values such as "rotate(1rad)" are returned as-is.
41862
41863
41864        result = jQuery.css(tween.elem, tween.prop, ""); // Empty strings, null, undefined and "auto" are converted to 0.
41865
41866        return !result || result === "auto" ? 0 : result;
41867      },
41868      set: function set(tween) {
41869        // Use step hook for back compat.
41870        // Use cssHook if its there.
41871        // Use .style if available and use plain properties where available.
41872        if (jQuery.fx.step[tween.prop]) {
41873          jQuery.fx.step[tween.prop](tween);
41874        } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {
41875          jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
41876        } else {
41877          tween.elem[tween.prop] = tween.now;
41878        }
41879      }
41880    }
41881  }; // Support: IE <=9 only
41882  // Panic based approach to setting things on disconnected nodes
41883
41884  Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
41885    set: function set(tween) {
41886      if (tween.elem.nodeType && tween.elem.parentNode) {
41887        tween.elem[tween.prop] = tween.now;
41888      }
41889    }
41890  };
41891  jQuery.easing = {
41892    linear: function linear(p) {
41893      return p;
41894    },
41895    swing: function swing(p) {
41896      return 0.5 - Math.cos(p * Math.PI) / 2;
41897    },
41898    _default: "swing"
41899  };
41900  jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point
41901
41902  jQuery.fx.step = {};
41903  var fxNow,
41904      inProgress,
41905      rfxtypes = /^(?:toggle|show|hide)$/,
41906      rrun = /queueHooks$/;
41907
41908  function schedule() {
41909    if (inProgress) {
41910      if (document.hidden === false && window.requestAnimationFrame) {
41911        window.requestAnimationFrame(schedule);
41912      } else {
41913        window.setTimeout(schedule, jQuery.fx.interval);
41914      }
41915
41916      jQuery.fx.tick();
41917    }
41918  } // Animations created synchronously will run synchronously
41919
41920
41921  function createFxNow() {
41922    window.setTimeout(function () {
41923      fxNow = undefined;
41924    });
41925    return fxNow = Date.now();
41926  } // Generate parameters to create a standard animation
41927
41928
41929  function genFx(type, includeWidth) {
41930    var which,
41931        i = 0,
41932        attrs = {
41933      height: type
41934    }; // If we include width, step value is 1 to do all cssExpand values,
41935    // otherwise step value is 2 to skip over Left and Right
41936
41937    includeWidth = includeWidth ? 1 : 0;
41938
41939    for (; i < 4; i += 2 - includeWidth) {
41940      which = cssExpand[i];
41941      attrs["margin" + which] = attrs["padding" + which] = type;
41942    }
41943
41944    if (includeWidth) {
41945      attrs.opacity = attrs.width = type;
41946    }
41947
41948    return attrs;
41949  }
41950
41951  function createTween(value, prop, animation) {
41952    var tween,
41953        collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]),
41954        index = 0,
41955        length = collection.length;
41956
41957    for (; index < length; index++) {
41958      if (tween = collection[index].call(animation, prop, value)) {
41959        // We're done with this property
41960        return tween;
41961      }
41962    }
41963  }
41964
41965  function defaultPrefilter(elem, props, opts) {
41966    var prop,
41967        value,
41968        toggle,
41969        hooks,
41970        oldfire,
41971        propTween,
41972        restoreDisplay,
41973        display,
41974        isBox = "width" in props || "height" in props,
41975        anim = this,
41976        orig = {},
41977        style = elem.style,
41978        hidden = elem.nodeType && isHiddenWithinTree(elem),
41979        dataShow = dataPriv.get(elem, "fxshow"); // Queue-skipping animations hijack the fx hooks
41980
41981    if (!opts.queue) {
41982      hooks = jQuery._queueHooks(elem, "fx");
41983
41984      if (hooks.unqueued == null) {
41985        hooks.unqueued = 0;
41986        oldfire = hooks.empty.fire;
41987
41988        hooks.empty.fire = function () {
41989          if (!hooks.unqueued) {
41990            oldfire();
41991          }
41992        };
41993      }
41994
41995      hooks.unqueued++;
41996      anim.always(function () {
41997        // Ensure the complete handler is called before this completes
41998        anim.always(function () {
41999          hooks.unqueued--;
42000
42001          if (!jQuery.queue(elem, "fx").length) {
42002            hooks.empty.fire();
42003          }
42004        });
42005      });
42006    } // Detect show/hide animations
42007
42008
42009    for (prop in props) {
42010      value = props[prop];
42011
42012      if (rfxtypes.test(value)) {
42013        delete props[prop];
42014        toggle = toggle || value === "toggle";
42015
42016        if (value === (hidden ? "hide" : "show")) {
42017          // Pretend to be hidden if this is a "show" and
42018          // there is still data from a stopped show/hide
42019          if (value === "show" && dataShow && dataShow[prop] !== undefined) {
42020            hidden = true; // Ignore all other no-op show/hide data
42021          } else {
42022            continue;
42023          }
42024        }
42025
42026        orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
42027      }
42028    } // Bail out if this is a no-op like .hide().hide()
42029
42030
42031    propTween = !jQuery.isEmptyObject(props);
42032
42033    if (!propTween && jQuery.isEmptyObject(orig)) {
42034      return;
42035    } // Restrict "overflow" and "display" styles during box animations
42036
42037
42038    if (isBox && elem.nodeType === 1) {
42039      // Support: IE <=9 - 11, Edge 12 - 15
42040      // Record all 3 overflow attributes because IE does not infer the shorthand
42041      // from identically-valued overflowX and overflowY and Edge just mirrors
42042      // the overflowX value there.
42043      opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Identify a display type, preferring old show/hide data over the CSS cascade
42044
42045      restoreDisplay = dataShow && dataShow.display;
42046
42047      if (restoreDisplay == null) {
42048        restoreDisplay = dataPriv.get(elem, "display");
42049      }
42050
42051      display = jQuery.css(elem, "display");
42052
42053      if (display === "none") {
42054        if (restoreDisplay) {
42055          display = restoreDisplay;
42056        } else {
42057          // Get nonempty value(s) by temporarily forcing visibility
42058          showHide([elem], true);
42059          restoreDisplay = elem.style.display || restoreDisplay;
42060          display = jQuery.css(elem, "display");
42061          showHide([elem]);
42062        }
42063      } // Animate inline elements as inline-block
42064
42065
42066      if (display === "inline" || display === "inline-block" && restoreDisplay != null) {
42067        if (jQuery.css(elem, "float") === "none") {
42068          // Restore the original display value at the end of pure show/hide animations
42069          if (!propTween) {
42070            anim.done(function () {
42071              style.display = restoreDisplay;
42072            });
42073
42074            if (restoreDisplay == null) {
42075              display = style.display;
42076              restoreDisplay = display === "none" ? "" : display;
42077            }
42078          }
42079
42080          style.display = "inline-block";
42081        }
42082      }
42083    }
42084
42085    if (opts.overflow) {
42086      style.overflow = "hidden";
42087      anim.always(function () {
42088        style.overflow = opts.overflow[0];
42089        style.overflowX = opts.overflow[1];
42090        style.overflowY = opts.overflow[2];
42091      });
42092    } // Implement show/hide animations
42093
42094
42095    propTween = false;
42096
42097    for (prop in orig) {
42098      // General show/hide setup for this element animation
42099      if (!propTween) {
42100        if (dataShow) {
42101          if ("hidden" in dataShow) {
42102            hidden = dataShow.hidden;
42103          }
42104        } else {
42105          dataShow = dataPriv.access(elem, "fxshow", {
42106            display: restoreDisplay
42107          });
42108        } // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
42109
42110
42111        if (toggle) {
42112          dataShow.hidden = !hidden;
42113        } // Show elements before animating them
42114
42115
42116        if (hidden) {
42117          showHide([elem], true);
42118        }
42119        /* eslint-disable no-loop-func */
42120
42121
42122        anim.done(function () {
42123          /* eslint-enable no-loop-func */
42124          // The final step of a "hide" animation is actually hiding the element
42125          if (!hidden) {
42126            showHide([elem]);
42127          }
42128
42129          dataPriv.remove(elem, "fxshow");
42130
42131          for (prop in orig) {
42132            jQuery.style(elem, prop, orig[prop]);
42133          }
42134        });
42135      } // Per-property setup
42136
42137
42138      propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
42139
42140      if (!(prop in dataShow)) {
42141        dataShow[prop] = propTween.start;
42142
42143        if (hidden) {
42144          propTween.end = propTween.start;
42145          propTween.start = 0;
42146        }
42147      }
42148    }
42149  }
42150
42151  function propFilter(props, specialEasing) {
42152    var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass
42153
42154    for (index in props) {
42155      name = camelCase(index);
42156      easing = specialEasing[name];
42157      value = props[index];
42158
42159      if (Array.isArray(value)) {
42160        easing = value[1];
42161        value = props[index] = value[0];
42162      }
42163
42164      if (index !== name) {
42165        props[name] = value;
42166        delete props[index];
42167      }
42168
42169      hooks = jQuery.cssHooks[name];
42170
42171      if (hooks && "expand" in hooks) {
42172        value = hooks.expand(value);
42173        delete props[name]; // Not quite $.extend, this won't overwrite existing keys.
42174        // Reusing 'index' because we have the correct "name"
42175
42176        for (index in value) {
42177          if (!(index in props)) {
42178            props[index] = value[index];
42179            specialEasing[index] = easing;
42180          }
42181        }
42182      } else {
42183        specialEasing[name] = easing;
42184      }
42185    }
42186  }
42187
42188  function Animation(elem, properties, options) {
42189    var result,
42190        stopped,
42191        index = 0,
42192        length = Animation.prefilters.length,
42193        deferred = jQuery.Deferred().always(function () {
42194      // Don't match elem in the :animated selector
42195      delete tick.elem;
42196    }),
42197        tick = function tick() {
42198      if (stopped) {
42199        return false;
42200      }
42201
42202      var currentTime = fxNow || createFxNow(),
42203          remaining = Math.max(0, animation.startTime + animation.duration - currentTime),
42204          // Support: Android 2.3 only
42205      // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
42206      temp = remaining / animation.duration || 0,
42207          percent = 1 - temp,
42208          index = 0,
42209          length = animation.tweens.length;
42210
42211      for (; index < length; index++) {
42212        animation.tweens[index].run(percent);
42213      }
42214
42215      deferred.notifyWith(elem, [animation, percent, remaining]); // If there's more to do, yield
42216
42217      if (percent < 1 && length) {
42218        return remaining;
42219      } // If this was an empty animation, synthesize a final progress notification
42220
42221
42222      if (!length) {
42223        deferred.notifyWith(elem, [animation, 1, 0]);
42224      } // Resolve the animation and report its conclusion
42225
42226
42227      deferred.resolveWith(elem, [animation]);
42228      return false;
42229    },
42230        animation = deferred.promise({
42231      elem: elem,
42232      props: jQuery.extend({}, properties),
42233      opts: jQuery.extend(true, {
42234        specialEasing: {},
42235        easing: jQuery.easing._default
42236      }, options),
42237      originalProperties: properties,
42238      originalOptions: options,
42239      startTime: fxNow || createFxNow(),
42240      duration: options.duration,
42241      tweens: [],
42242      createTween: function createTween(prop, end) {
42243        var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
42244        animation.tweens.push(tween);
42245        return tween;
42246      },
42247      stop: function stop(gotoEnd) {
42248        var index = 0,
42249            // If we are going to the end, we want to run all the tweens
42250        // otherwise we skip this part
42251        length = gotoEnd ? animation.tweens.length : 0;
42252
42253        if (stopped) {
42254          return this;
42255        }
42256
42257        stopped = true;
42258
42259        for (; index < length; index++) {
42260          animation.tweens[index].run(1);
42261        } // Resolve when we played the last frame; otherwise, reject
42262
42263
42264        if (gotoEnd) {
42265          deferred.notifyWith(elem, [animation, 1, 0]);
42266          deferred.resolveWith(elem, [animation, gotoEnd]);
42267        } else {
42268          deferred.rejectWith(elem, [animation, gotoEnd]);
42269        }
42270
42271        return this;
42272      }
42273    }),
42274        props = animation.props;
42275
42276    propFilter(props, animation.opts.specialEasing);
42277
42278    for (; index < length; index++) {
42279      result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
42280
42281      if (result) {
42282        if (isFunction(result.stop)) {
42283          jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);
42284        }
42285
42286        return result;
42287      }
42288    }
42289
42290    jQuery.map(props, createTween, animation);
42291
42292    if (isFunction(animation.opts.start)) {
42293      animation.opts.start.call(elem, animation);
42294    } // Attach callbacks from options
42295
42296
42297    animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
42298    jQuery.fx.timer(jQuery.extend(tick, {
42299      elem: elem,
42300      anim: animation,
42301      queue: animation.opts.queue
42302    }));
42303    return animation;
42304  }
42305
42306  jQuery.Animation = jQuery.extend(Animation, {
42307    tweeners: {
42308      "*": [function (prop, value) {
42309        var tween = this.createTween(prop, value);
42310        adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
42311        return tween;
42312      }]
42313    },
42314    tweener: function tweener(props, callback) {
42315      if (isFunction(props)) {
42316        callback = props;
42317        props = ["*"];
42318      } else {
42319        props = props.match(rnothtmlwhite);
42320      }
42321
42322      var prop,
42323          index = 0,
42324          length = props.length;
42325
42326      for (; index < length; index++) {
42327        prop = props[index];
42328        Animation.tweeners[prop] = Animation.tweeners[prop] || [];
42329        Animation.tweeners[prop].unshift(callback);
42330      }
42331    },
42332    prefilters: [defaultPrefilter],
42333    prefilter: function prefilter(callback, prepend) {
42334      if (prepend) {
42335        Animation.prefilters.unshift(callback);
42336      } else {
42337        Animation.prefilters.push(callback);
42338      }
42339    }
42340  });
42341
42342  jQuery.speed = function (speed, easing, fn) {
42343    var opt = speed && _typeof(speed) === "object" ? jQuery.extend({}, speed) : {
42344      complete: fn || !fn && easing || isFunction(speed) && speed,
42345      duration: speed,
42346      easing: fn && easing || easing && !isFunction(easing) && easing
42347    }; // Go to the end state if fx are off
42348
42349    if (jQuery.fx.off) {
42350      opt.duration = 0;
42351    } else {
42352      if (typeof opt.duration !== "number") {
42353        if (opt.duration in jQuery.fx.speeds) {
42354          opt.duration = jQuery.fx.speeds[opt.duration];
42355        } else {
42356          opt.duration = jQuery.fx.speeds._default;
42357        }
42358      }
42359    } // Normalize opt.queue - true/undefined/null -> "fx"
42360
42361
42362    if (opt.queue == null || opt.queue === true) {
42363      opt.queue = "fx";
42364    } // Queueing
42365
42366
42367    opt.old = opt.complete;
42368
42369    opt.complete = function () {
42370      if (isFunction(opt.old)) {
42371        opt.old.call(this);
42372      }
42373
42374      if (opt.queue) {
42375        jQuery.dequeue(this, opt.queue);
42376      }
42377    };
42378
42379    return opt;
42380  };
42381
42382  jQuery.fn.extend({
42383    fadeTo: function fadeTo(speed, to, easing, callback) {
42384      // Show any hidden elements after setting opacity to 0
42385      return this.filter(isHiddenWithinTree).css("opacity", 0).show() // Animate to the value specified
42386      .end().animate({
42387        opacity: to
42388      }, speed, easing, callback);
42389    },
42390    animate: function animate(prop, speed, easing, callback) {
42391      var empty = jQuery.isEmptyObject(prop),
42392          optall = jQuery.speed(speed, easing, callback),
42393          doAnimation = function doAnimation() {
42394        // Operate on a copy of prop so per-property easing won't be lost
42395        var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations, or finishing resolves immediately
42396
42397        if (empty || dataPriv.get(this, "finish")) {
42398          anim.stop(true);
42399        }
42400      };
42401
42402      doAnimation.finish = doAnimation;
42403      return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
42404    },
42405    stop: function stop(type, clearQueue, gotoEnd) {
42406      var stopQueue = function stopQueue(hooks) {
42407        var stop = hooks.stop;
42408        delete hooks.stop;
42409        stop(gotoEnd);
42410      };
42411
42412      if (typeof type !== "string") {
42413        gotoEnd = clearQueue;
42414        clearQueue = type;
42415        type = undefined;
42416      }
42417
42418      if (clearQueue) {
42419        this.queue(type || "fx", []);
42420      }
42421
42422      return this.each(function () {
42423        var dequeue = true,
42424            index = type != null && type + "queueHooks",
42425            timers = jQuery.timers,
42426            data = dataPriv.get(this);
42427
42428        if (index) {
42429          if (data[index] && data[index].stop) {
42430            stopQueue(data[index]);
42431          }
42432        } else {
42433          for (index in data) {
42434            if (data[index] && data[index].stop && rrun.test(index)) {
42435              stopQueue(data[index]);
42436            }
42437          }
42438        }
42439
42440        for (index = timers.length; index--;) {
42441          if (timers[index].elem === this && (type == null || timers[index].queue === type)) {
42442            timers[index].anim.stop(gotoEnd);
42443            dequeue = false;
42444            timers.splice(index, 1);
42445          }
42446        } // Start the next in the queue if the last step wasn't forced.
42447        // Timers currently will call their complete callbacks, which
42448        // will dequeue but only if they were gotoEnd.
42449
42450
42451        if (dequeue || !gotoEnd) {
42452          jQuery.dequeue(this, type);
42453        }
42454      });
42455    },
42456    finish: function finish(type) {
42457      if (type !== false) {
42458        type = type || "fx";
42459      }
42460
42461      return this.each(function () {
42462        var index,
42463            data = dataPriv.get(this),
42464            queue = data[type + "queue"],
42465            hooks = data[type + "queueHooks"],
42466            timers = jQuery.timers,
42467            length = queue ? queue.length : 0; // Enable finishing flag on private data
42468
42469        data.finish = true; // Empty the queue first
42470
42471        jQuery.queue(this, type, []);
42472
42473        if (hooks && hooks.stop) {
42474          hooks.stop.call(this, true);
42475        } // Look for any active animations, and finish them
42476
42477
42478        for (index = timers.length; index--;) {
42479          if (timers[index].elem === this && timers[index].queue === type) {
42480            timers[index].anim.stop(true);
42481            timers.splice(index, 1);
42482          }
42483        } // Look for any animations in the old queue and finish them
42484
42485
42486        for (index = 0; index < length; index++) {
42487          if (queue[index] && queue[index].finish) {
42488            queue[index].finish.call(this);
42489          }
42490        } // Turn off finishing flag
42491
42492
42493        delete data.finish;
42494      });
42495    }
42496  });
42497  jQuery.each(["toggle", "show", "hide"], function (_i, name) {
42498    var cssFn = jQuery.fn[name];
42499
42500    jQuery.fn[name] = function (speed, easing, callback) {
42501      return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);
42502    };
42503  }); // Generate shortcuts for custom animations
42504
42505  jQuery.each({
42506    slideDown: genFx("show"),
42507    slideUp: genFx("hide"),
42508    slideToggle: genFx("toggle"),
42509    fadeIn: {
42510      opacity: "show"
42511    },
42512    fadeOut: {
42513      opacity: "hide"
42514    },
42515    fadeToggle: {
42516      opacity: "toggle"
42517    }
42518  }, function (name, props) {
42519    jQuery.fn[name] = function (speed, easing, callback) {
42520      return this.animate(props, speed, easing, callback);
42521    };
42522  });
42523  jQuery.timers = [];
42524
42525  jQuery.fx.tick = function () {
42526    var timer,
42527        i = 0,
42528        timers = jQuery.timers;
42529    fxNow = Date.now();
42530
42531    for (; i < timers.length; i++) {
42532      timer = timers[i]; // Run the timer and safely remove it when done (allowing for external removal)
42533
42534      if (!timer() && timers[i] === timer) {
42535        timers.splice(i--, 1);
42536      }
42537    }
42538
42539    if (!timers.length) {
42540      jQuery.fx.stop();
42541    }
42542
42543    fxNow = undefined;
42544  };
42545
42546  jQuery.fx.timer = function (timer) {
42547    jQuery.timers.push(timer);
42548    jQuery.fx.start();
42549  };
42550
42551  jQuery.fx.interval = 13;
42552
42553  jQuery.fx.start = function () {
42554    if (inProgress) {
42555      return;
42556    }
42557
42558    inProgress = true;
42559    schedule();
42560  };
42561
42562  jQuery.fx.stop = function () {
42563    inProgress = null;
42564  };
42565
42566  jQuery.fx.speeds = {
42567    slow: 600,
42568    fast: 200,
42569    // Default speed
42570    _default: 400
42571  }; // Based off of the plugin by Clint Helfers, with permission.
42572  // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
42573
42574  jQuery.fn.delay = function (time, type) {
42575    time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
42576    type = type || "fx";
42577    return this.queue(type, function (next, hooks) {
42578      var timeout = window.setTimeout(next, time);
42579
42580      hooks.stop = function () {
42581        window.clearTimeout(timeout);
42582      };
42583    });
42584  };
42585
42586  (function () {
42587    var input = document.createElement("input"),
42588        select = document.createElement("select"),
42589        opt = select.appendChild(document.createElement("option"));
42590    input.type = "checkbox"; // Support: Android <=4.3 only
42591    // Default value for a checkbox should be "on"
42592
42593    support.checkOn = input.value !== ""; // Support: IE <=11 only
42594    // Must access selectedIndex to make default options select
42595
42596    support.optSelected = opt.selected; // Support: IE <=11 only
42597    // An input loses its value after becoming a radio
42598
42599    input = document.createElement("input");
42600    input.value = "t";
42601    input.type = "radio";
42602    support.radioValue = input.value === "t";
42603  })();
42604
42605  var boolHook,
42606      attrHandle = jQuery.expr.attrHandle;
42607  jQuery.fn.extend({
42608    attr: function attr(name, value) {
42609      return access(this, jQuery.attr, name, value, arguments.length > 1);
42610    },
42611    removeAttr: function removeAttr(name) {
42612      return this.each(function () {
42613        jQuery.removeAttr(this, name);
42614      });
42615    }
42616  });
42617  jQuery.extend({
42618    attr: function attr(elem, name, value) {
42619      var ret,
42620          hooks,
42621          nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes
42622
42623      if (nType === 3 || nType === 8 || nType === 2) {
42624        return;
42625      } // Fallback to prop when attributes are not supported
42626
42627
42628      if (typeof elem.getAttribute === "undefined") {
42629        return jQuery.prop(elem, name, value);
42630      } // Attribute hooks are determined by the lowercase version
42631      // Grab necessary hook if one is defined
42632
42633
42634      if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
42635        hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);
42636      }
42637
42638      if (value !== undefined) {
42639        if (value === null) {
42640          jQuery.removeAttr(elem, name);
42641          return;
42642        }
42643
42644        if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
42645          return ret;
42646        }
42647
42648        elem.setAttribute(name, value + "");
42649        return value;
42650      }
42651
42652      if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
42653        return ret;
42654      }
42655
42656      ret = jQuery.find.attr(elem, name); // Non-existent attributes return null, we normalize to undefined
42657
42658      return ret == null ? undefined : ret;
42659    },
42660    attrHooks: {
42661      type: {
42662        set: function set(elem, value) {
42663          if (!support.radioValue && value === "radio" && nodeName(elem, "input")) {
42664            var val = elem.value;
42665            elem.setAttribute("type", value);
42666
42667            if (val) {
42668              elem.value = val;
42669            }
42670
42671            return value;
42672          }
42673        }
42674      }
42675    },
42676    removeAttr: function removeAttr(elem, value) {
42677      var name,
42678          i = 0,
42679          // Attribute names can contain non-HTML whitespace characters
42680      // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
42681      attrNames = value && value.match(rnothtmlwhite);
42682
42683      if (attrNames && elem.nodeType === 1) {
42684        while (name = attrNames[i++]) {
42685          elem.removeAttribute(name);
42686        }
42687      }
42688    }
42689  }); // Hooks for boolean attributes
42690
42691  boolHook = {
42692    set: function set(elem, value, name) {
42693      if (value === false) {
42694        // Remove boolean attributes when set to false
42695        jQuery.removeAttr(elem, name);
42696      } else {
42697        elem.setAttribute(name, name);
42698      }
42699
42700      return name;
42701    }
42702  };
42703  jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (_i, name) {
42704    var getter = attrHandle[name] || jQuery.find.attr;
42705
42706    attrHandle[name] = function (elem, name, isXML) {
42707      var ret,
42708          handle,
42709          lowercaseName = name.toLowerCase();
42710
42711      if (!isXML) {
42712        // Avoid an infinite loop by temporarily removing this function from the getter
42713        handle = attrHandle[lowercaseName];
42714        attrHandle[lowercaseName] = ret;
42715        ret = getter(elem, name, isXML) != null ? lowercaseName : null;
42716        attrHandle[lowercaseName] = handle;
42717      }
42718
42719      return ret;
42720    };
42721  });
42722  var rfocusable = /^(?:input|select|textarea|button)$/i,
42723      rclickable = /^(?:a|area)$/i;
42724  jQuery.fn.extend({
42725    prop: function prop(name, value) {
42726      return access(this, jQuery.prop, name, value, arguments.length > 1);
42727    },
42728    removeProp: function removeProp(name) {
42729      return this.each(function () {
42730        delete this[jQuery.propFix[name] || name];
42731      });
42732    }
42733  });
42734  jQuery.extend({
42735    prop: function prop(elem, name, value) {
42736      var ret,
42737          hooks,
42738          nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes
42739
42740      if (nType === 3 || nType === 8 || nType === 2) {
42741        return;
42742      }
42743
42744      if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
42745        // Fix name and attach hooks
42746        name = jQuery.propFix[name] || name;
42747        hooks = jQuery.propHooks[name];
42748      }
42749
42750      if (value !== undefined) {
42751        if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
42752          return ret;
42753        }
42754
42755        return elem[name] = value;
42756      }
42757
42758      if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
42759        return ret;
42760      }
42761
42762      return elem[name];
42763    },
42764    propHooks: {
42765      tabIndex: {
42766        get: function get(elem) {
42767          // Support: IE <=9 - 11 only
42768          // elem.tabIndex doesn't always return the
42769          // correct value when it hasn't been explicitly set
42770          // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
42771          // Use proper attribute retrieval(#12072)
42772          var tabindex = jQuery.find.attr(elem, "tabindex");
42773
42774          if (tabindex) {
42775            return parseInt(tabindex, 10);
42776          }
42777
42778          if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {
42779            return 0;
42780          }
42781
42782          return -1;
42783        }
42784      }
42785    },
42786    propFix: {
42787      "for": "htmlFor",
42788      "class": "className"
42789    }
42790  }); // Support: IE <=11 only
42791  // Accessing the selectedIndex property
42792  // forces the browser to respect setting selected
42793  // on the option
42794  // The getter ensures a default option is selected
42795  // when in an optgroup
42796  // eslint rule "no-unused-expressions" is disabled for this code
42797  // since it considers such accessions noop
42798
42799  if (!support.optSelected) {
42800    jQuery.propHooks.selected = {
42801      get: function get(elem) {
42802        /* eslint no-unused-expressions: "off" */
42803        var parent = elem.parentNode;
42804
42805        if (parent && parent.parentNode) {
42806          parent.parentNode.selectedIndex;
42807        }
42808
42809        return null;
42810      },
42811      set: function set(elem) {
42812        /* eslint no-unused-expressions: "off" */
42813        var parent = elem.parentNode;
42814
42815        if (parent) {
42816          parent.selectedIndex;
42817
42818          if (parent.parentNode) {
42819            parent.parentNode.selectedIndex;
42820          }
42821        }
42822      }
42823    };
42824  }
42825
42826  jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
42827    jQuery.propFix[this.toLowerCase()] = this;
42828  }); // Strip and collapse whitespace according to HTML spec
42829  // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
42830
42831  function stripAndCollapse(value) {
42832    var tokens = value.match(rnothtmlwhite) || [];
42833    return tokens.join(" ");
42834  }
42835
42836  function getClass(elem) {
42837    return elem.getAttribute && elem.getAttribute("class") || "";
42838  }
42839
42840  function classesToArray(value) {
42841    if (Array.isArray(value)) {
42842      return value;
42843    }
42844
42845    if (typeof value === "string") {
42846      return value.match(rnothtmlwhite) || [];
42847    }
42848
42849    return [];
42850  }
42851
42852  jQuery.fn.extend({
42853    addClass: function addClass(value) {
42854      var classes,
42855          elem,
42856          cur,
42857          curValue,
42858          clazz,
42859          j,
42860          finalValue,
42861          i = 0;
42862
42863      if (isFunction(value)) {
42864        return this.each(function (j) {
42865          jQuery(this).addClass(value.call(this, j, getClass(this)));
42866        });
42867      }
42868
42869      classes = classesToArray(value);
42870
42871      if (classes.length) {
42872        while (elem = this[i++]) {
42873          curValue = getClass(elem);
42874          cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
42875
42876          if (cur) {
42877            j = 0;
42878
42879            while (clazz = classes[j++]) {
42880              if (cur.indexOf(" " + clazz + " ") < 0) {
42881                cur += clazz + " ";
42882              }
42883            } // Only assign if different to avoid unneeded rendering.
42884
42885
42886            finalValue = stripAndCollapse(cur);
42887
42888            if (curValue !== finalValue) {
42889              elem.setAttribute("class", finalValue);
42890            }
42891          }
42892        }
42893      }
42894
42895      return this;
42896    },
42897    removeClass: function removeClass(value) {
42898      var classes,
42899          elem,
42900          cur,
42901          curValue,
42902          clazz,
42903          j,
42904          finalValue,
42905          i = 0;
42906
42907      if (isFunction(value)) {
42908        return this.each(function (j) {
42909          jQuery(this).removeClass(value.call(this, j, getClass(this)));
42910        });
42911      }
42912
42913      if (!arguments.length) {
42914        return this.attr("class", "");
42915      }
42916
42917      classes = classesToArray(value);
42918
42919      if (classes.length) {
42920        while (elem = this[i++]) {
42921          curValue = getClass(elem); // This expression is here for better compressibility (see addClass)
42922
42923          cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
42924
42925          if (cur) {
42926            j = 0;
42927
42928            while (clazz = classes[j++]) {
42929              // Remove *all* instances
42930              while (cur.indexOf(" " + clazz + " ") > -1) {
42931                cur = cur.replace(" " + clazz + " ", " ");
42932              }
42933            } // Only assign if different to avoid unneeded rendering.
42934
42935
42936            finalValue = stripAndCollapse(cur);
42937
42938            if (curValue !== finalValue) {
42939              elem.setAttribute("class", finalValue);
42940            }
42941          }
42942        }
42943      }
42944
42945      return this;
42946    },
42947    toggleClass: function toggleClass(value, stateVal) {
42948      var type = _typeof(value),
42949          isValidValue = type === "string" || Array.isArray(value);
42950
42951      if (typeof stateVal === "boolean" && isValidValue) {
42952        return stateVal ? this.addClass(value) : this.removeClass(value);
42953      }
42954
42955      if (isFunction(value)) {
42956        return this.each(function (i) {
42957          jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);
42958        });
42959      }
42960
42961      return this.each(function () {
42962        var className, i, self, classNames;
42963
42964        if (isValidValue) {
42965          // Toggle individual class names
42966          i = 0;
42967          self = jQuery(this);
42968          classNames = classesToArray(value);
42969
42970          while (className = classNames[i++]) {
42971            // Check each className given, space separated list
42972            if (self.hasClass(className)) {
42973              self.removeClass(className);
42974            } else {
42975              self.addClass(className);
42976            }
42977          } // Toggle whole class name
42978
42979        } else if (value === undefined || type === "boolean") {
42980          className = getClass(this);
42981
42982          if (className) {
42983            // Store className if set
42984            dataPriv.set(this, "__className__", className);
42985          } // If the element has a class name or if we're passed `false`,
42986          // then remove the whole classname (if there was one, the above saved it).
42987          // Otherwise bring back whatever was previously saved (if anything),
42988          // falling back to the empty string if nothing was stored.
42989
42990
42991          if (this.setAttribute) {
42992            this.setAttribute("class", className || value === false ? "" : dataPriv.get(this, "__className__") || "");
42993          }
42994        }
42995      });
42996    },
42997    hasClass: function hasClass(selector) {
42998      var className,
42999          elem,
43000          i = 0;
43001      className = " " + selector + " ";
43002
43003      while (elem = this[i++]) {
43004        if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) {
43005          return true;
43006        }
43007      }
43008
43009      return false;
43010    }
43011  });
43012  var rreturn = /\r/g;
43013  jQuery.fn.extend({
43014    val: function val(value) {
43015      var hooks,
43016          ret,
43017          valueIsFunction,
43018          elem = this[0];
43019
43020      if (!arguments.length) {
43021        if (elem) {
43022          hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];
43023
43024          if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) {
43025            return ret;
43026          }
43027
43028          ret = elem.value; // Handle most common string cases
43029
43030          if (typeof ret === "string") {
43031            return ret.replace(rreturn, "");
43032          } // Handle cases where value is null/undef or number
43033
43034
43035          return ret == null ? "" : ret;
43036        }
43037
43038        return;
43039      }
43040
43041      valueIsFunction = isFunction(value);
43042      return this.each(function (i) {
43043        var val;
43044
43045        if (this.nodeType !== 1) {
43046          return;
43047        }
43048
43049        if (valueIsFunction) {
43050          val = value.call(this, i, jQuery(this).val());
43051        } else {
43052          val = value;
43053        } // Treat null/undefined as ""; convert numbers to string
43054
43055
43056        if (val == null) {
43057          val = "";
43058        } else if (typeof val === "number") {
43059          val += "";
43060        } else if (Array.isArray(val)) {
43061          val = jQuery.map(val, function (value) {
43062            return value == null ? "" : value + "";
43063          });
43064        }
43065
43066        hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; // If set returns undefined, fall back to normal setting
43067
43068        if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) {
43069          this.value = val;
43070        }
43071      });
43072    }
43073  });
43074  jQuery.extend({
43075    valHooks: {
43076      option: {
43077        get: function get(elem) {
43078          var val = jQuery.find.attr(elem, "value");
43079          return val != null ? val : // Support: IE <=10 - 11 only
43080          // option.text throws exceptions (#14686, #14858)
43081          // Strip and collapse whitespace
43082          // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
43083          stripAndCollapse(jQuery.text(elem));
43084        }
43085      },
43086      select: {
43087        get: function get(elem) {
43088          var value,
43089              option,
43090              i,
43091              options = elem.options,
43092              index = elem.selectedIndex,
43093              one = elem.type === "select-one",
43094              values = one ? null : [],
43095              max = one ? index + 1 : options.length;
43096
43097          if (index < 0) {
43098            i = max;
43099          } else {
43100            i = one ? index : 0;
43101          } // Loop through all the selected options
43102
43103
43104          for (; i < max; i++) {
43105            option = options[i]; // Support: IE <=9 only
43106            // IE8-9 doesn't update selected after form reset (#2551)
43107
43108            if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup
43109            !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) {
43110              // Get the specific value for the option
43111              value = jQuery(option).val(); // We don't need an array for one selects
43112
43113              if (one) {
43114                return value;
43115              } // Multi-Selects return an array
43116
43117
43118              values.push(value);
43119            }
43120          }
43121
43122          return values;
43123        },
43124        set: function set(elem, value) {
43125          var optionSet,
43126              option,
43127              options = elem.options,
43128              values = jQuery.makeArray(value),
43129              i = options.length;
43130
43131          while (i--) {
43132            option = options[i];
43133            /* eslint-disable no-cond-assign */
43134
43135            if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {
43136              optionSet = true;
43137            }
43138            /* eslint-enable no-cond-assign */
43139
43140          } // Force browsers to behave consistently when non-matching value is set
43141
43142
43143          if (!optionSet) {
43144            elem.selectedIndex = -1;
43145          }
43146
43147          return values;
43148        }
43149      }
43150    }
43151  }); // Radios and checkboxes getter/setter
43152
43153  jQuery.each(["radio", "checkbox"], function () {
43154    jQuery.valHooks[this] = {
43155      set: function set(elem, value) {
43156        if (Array.isArray(value)) {
43157          return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;
43158        }
43159      }
43160    };
43161
43162    if (!support.checkOn) {
43163      jQuery.valHooks[this].get = function (elem) {
43164        return elem.getAttribute("value") === null ? "on" : elem.value;
43165      };
43166    }
43167  }); // Return jQuery for attributes-only inclusion
43168
43169  support.focusin = "onfocusin" in window;
43170
43171  var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
43172      stopPropagationCallback = function stopPropagationCallback(e) {
43173    e.stopPropagation();
43174  };
43175
43176  jQuery.extend(jQuery.event, {
43177    trigger: function trigger(event, data, elem, onlyHandlers) {
43178      var i,
43179          cur,
43180          tmp,
43181          bubbleType,
43182          ontype,
43183          handle,
43184          special,
43185          lastElement,
43186          eventPath = [elem || document],
43187          type = hasOwn.call(event, "type") ? event.type : event,
43188          namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
43189      cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes
43190
43191      if (elem.nodeType === 3 || elem.nodeType === 8) {
43192        return;
43193      } // focus/blur morphs to focusin/out; ensure we're not firing them right now
43194
43195
43196      if (rfocusMorph.test(type + jQuery.event.triggered)) {
43197        return;
43198      }
43199
43200      if (type.indexOf(".") > -1) {
43201        // Namespaced trigger; create a regexp to match event type in handle()
43202        namespaces = type.split(".");
43203        type = namespaces.shift();
43204        namespaces.sort();
43205      }
43206
43207      ontype = type.indexOf(":") < 0 && "on" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string
43208
43209      event = event[jQuery.expando] ? event : new jQuery.Event(type, _typeof(event) === "object" && event); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
43210
43211      event.isTrigger = onlyHandlers ? 2 : 3;
43212      event.namespace = namespaces.join(".");
43213      event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; // Clean up the event in case it is being reused
43214
43215      event.result = undefined;
43216
43217      if (!event.target) {
43218        event.target = elem;
43219      } // Clone any incoming data and prepend the event, creating the handler arg list
43220
43221
43222      data = data == null ? [event] : jQuery.makeArray(data, [event]); // Allow special events to draw outside the lines
43223
43224      special = jQuery.event.special[type] || {};
43225
43226      if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
43227        return;
43228      } // Determine event propagation path in advance, per W3C events spec (#9951)
43229      // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
43230
43231
43232      if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
43233        bubbleType = special.delegateType || type;
43234
43235        if (!rfocusMorph.test(bubbleType + type)) {
43236          cur = cur.parentNode;
43237        }
43238
43239        for (; cur; cur = cur.parentNode) {
43240          eventPath.push(cur);
43241          tmp = cur;
43242        } // Only add window if we got to document (e.g., not plain obj or detached DOM)
43243
43244
43245        if (tmp === (elem.ownerDocument || document)) {
43246          eventPath.push(tmp.defaultView || tmp.parentWindow || window);
43247        }
43248      } // Fire handlers on the event path
43249
43250
43251      i = 0;
43252
43253      while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
43254        lastElement = cur;
43255        event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler
43256
43257        handle = (dataPriv.get(cur, "events") || Object.create(null))[event.type] && dataPriv.get(cur, "handle");
43258
43259        if (handle) {
43260          handle.apply(cur, data);
43261        } // Native handler
43262
43263
43264        handle = ontype && cur[ontype];
43265
43266        if (handle && handle.apply && acceptData(cur)) {
43267          event.result = handle.apply(cur, data);
43268
43269          if (event.result === false) {
43270            event.preventDefault();
43271          }
43272        }
43273      }
43274
43275      event.type = type; // If nobody prevented the default action, do it now
43276
43277      if (!onlyHandlers && !event.isDefaultPrevented()) {
43278        if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
43279          // Call a native DOM method on the target with the same name as the event.
43280          // Don't do default actions on window, that's where global variables be (#6170)
43281          if (ontype && isFunction(elem[type]) && !isWindow(elem)) {
43282            // Don't re-trigger an onFOO event when we call its FOO() method
43283            tmp = elem[ontype];
43284
43285            if (tmp) {
43286              elem[ontype] = null;
43287            } // Prevent re-triggering of the same event, since we already bubbled it above
43288
43289
43290            jQuery.event.triggered = type;
43291
43292            if (event.isPropagationStopped()) {
43293              lastElement.addEventListener(type, stopPropagationCallback);
43294            }
43295
43296            elem[type]();
43297
43298            if (event.isPropagationStopped()) {
43299              lastElement.removeEventListener(type, stopPropagationCallback);
43300            }
43301
43302            jQuery.event.triggered = undefined;
43303
43304            if (tmp) {
43305              elem[ontype] = tmp;
43306            }
43307          }
43308        }
43309      }
43310
43311      return event.result;
43312    },
43313    // Piggyback on a donor event to simulate a different one
43314    // Used only for `focus(in | out)` events
43315    simulate: function simulate(type, elem, event) {
43316      var e = jQuery.extend(new jQuery.Event(), event, {
43317        type: type,
43318        isSimulated: true
43319      });
43320      jQuery.event.trigger(e, null, elem);
43321    }
43322  });
43323  jQuery.fn.extend({
43324    trigger: function trigger(type, data) {
43325      return this.each(function () {
43326        jQuery.event.trigger(type, data, this);
43327      });
43328    },
43329    triggerHandler: function triggerHandler(type, data) {
43330      var elem = this[0];
43331
43332      if (elem) {
43333        return jQuery.event.trigger(type, data, elem, true);
43334      }
43335    }
43336  }); // Support: Firefox <=44
43337  // Firefox doesn't have focus(in | out) events
43338  // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
43339  //
43340  // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
43341  // focus(in | out) events fire after focus & blur events,
43342  // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
43343  // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
43344
43345  if (!support.focusin) {
43346    jQuery.each({
43347      focus: "focusin",
43348      blur: "focusout"
43349    }, function (orig, fix) {
43350      // Attach a single capturing handler on the document while someone wants focusin/focusout
43351      var handler = function handler(event) {
43352        jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));
43353      };
43354
43355      jQuery.event.special[fix] = {
43356        setup: function setup() {
43357          // Handle: regular nodes (via `this.ownerDocument`), window
43358          // (via `this.document`) & document (via `this`).
43359          var doc = this.ownerDocument || this.document || this,
43360              attaches = dataPriv.access(doc, fix);
43361
43362          if (!attaches) {
43363            doc.addEventListener(orig, handler, true);
43364          }
43365
43366          dataPriv.access(doc, fix, (attaches || 0) + 1);
43367        },
43368        teardown: function teardown() {
43369          var doc = this.ownerDocument || this.document || this,
43370              attaches = dataPriv.access(doc, fix) - 1;
43371
43372          if (!attaches) {
43373            doc.removeEventListener(orig, handler, true);
43374            dataPriv.remove(doc, fix);
43375          } else {
43376            dataPriv.access(doc, fix, attaches);
43377          }
43378        }
43379      };
43380    });
43381  }
43382
43383  var location = window.location;
43384  var nonce = {
43385    guid: Date.now()
43386  };
43387  var rquery = /\?/; // Cross-browser xml parsing
43388
43389  jQuery.parseXML = function (data) {
43390    var xml, parserErrorElem;
43391
43392    if (!data || typeof data !== "string") {
43393      return null;
43394    } // Support: IE 9 - 11 only
43395    // IE throws on parseFromString with invalid input.
43396
43397
43398    try {
43399      xml = new window.DOMParser().parseFromString(data, "text/xml");
43400    } catch (e) {}
43401
43402    parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0];
43403
43404    if (!xml || parserErrorElem) {
43405      jQuery.error("Invalid XML: " + (parserErrorElem ? jQuery.map(parserErrorElem.childNodes, function (el) {
43406        return el.textContent;
43407      }).join("\n") : data));
43408    }
43409
43410    return xml;
43411  };
43412
43413  var rbracket = /\[\]$/,
43414      rCRLF = /\r?\n/g,
43415      rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
43416      rsubmittable = /^(?:input|select|textarea|keygen)/i;
43417
43418  function buildParams(prefix, obj, traditional, add) {
43419    var name;
43420
43421    if (Array.isArray(obj)) {
43422      // Serialize array item.
43423      jQuery.each(obj, function (i, v) {
43424        if (traditional || rbracket.test(prefix)) {
43425          // Treat each array item as a scalar.
43426          add(prefix, v);
43427        } else {
43428          // Item is non-scalar (array or object), encode its numeric index.
43429          buildParams(prefix + "[" + (_typeof(v) === "object" && v != null ? i : "") + "]", v, traditional, add);
43430        }
43431      });
43432    } else if (!traditional && toType(obj) === "object") {
43433      // Serialize object item.
43434      for (name in obj) {
43435        buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
43436      }
43437    } else {
43438      // Serialize scalar item.
43439      add(prefix, obj);
43440    }
43441  } // Serialize an array of form elements or a set of
43442  // key/values into a query string
43443
43444
43445  jQuery.param = function (a, traditional) {
43446    var prefix,
43447        s = [],
43448        add = function add(key, valueOrFunction) {
43449      // If value is a function, invoke it and use its return value
43450      var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;
43451      s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value);
43452    };
43453
43454    if (a == null) {
43455      return "";
43456    } // If an array was passed in, assume that it is an array of form elements.
43457
43458
43459    if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
43460      // Serialize the form elements
43461      jQuery.each(a, function () {
43462        add(this.name, this.value);
43463      });
43464    } else {
43465      // If traditional, encode the "old" way (the way 1.3.2 or older
43466      // did it), otherwise encode params recursively.
43467      for (prefix in a) {
43468        buildParams(prefix, a[prefix], traditional, add);
43469      }
43470    } // Return the resulting serialization
43471
43472
43473    return s.join("&");
43474  };
43475
43476  jQuery.fn.extend({
43477    serialize: function serialize() {
43478      return jQuery.param(this.serializeArray());
43479    },
43480    serializeArray: function serializeArray() {
43481      return this.map(function () {
43482        // Can add propHook for "elements" to filter or add form elements
43483        var elements = jQuery.prop(this, "elements");
43484        return elements ? jQuery.makeArray(elements) : this;
43485      }).filter(function () {
43486        var type = this.type; // Use .is( ":disabled" ) so that fieldset[disabled] works
43487
43488        return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
43489      }).map(function (_i, elem) {
43490        var val = jQuery(this).val();
43491
43492        if (val == null) {
43493          return null;
43494        }
43495
43496        if (Array.isArray(val)) {
43497          return jQuery.map(val, function (val) {
43498            return {
43499              name: elem.name,
43500              value: val.replace(rCRLF, "\r\n")
43501            };
43502          });
43503        }
43504
43505        return {
43506          name: elem.name,
43507          value: val.replace(rCRLF, "\r\n")
43508        };
43509      }).get();
43510    }
43511  });
43512  var r20 = /%20/g,
43513      rhash = /#.*$/,
43514      rantiCache = /([?&])_=[^&]*/,
43515      rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
43516      // #7653, #8125, #8152: local protocol detection
43517  rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
43518      rnoContent = /^(?:GET|HEAD)$/,
43519      rprotocol = /^\/\//,
43520
43521  /* Prefilters
43522   * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
43523   * 2) These are called:
43524   *    - BEFORE asking for a transport
43525   *    - AFTER param serialization (s.data is a string if s.processData is true)
43526   * 3) key is the dataType
43527   * 4) the catchall symbol "*" can be used
43528   * 5) execution will start with transport dataType and THEN continue down to "*" if needed
43529   */
43530  prefilters = {},
43531
43532  /* Transports bindings
43533   * 1) key is the dataType
43534   * 2) the catchall symbol "*" can be used
43535   * 3) selection will start with transport dataType and THEN go to "*" if needed
43536   */
43537  transports = {},
43538      // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
43539  allTypes = "*/".concat("*"),
43540      // Anchor tag for parsing the document origin
43541  originAnchor = document.createElement("a");
43542  originAnchor.href = location.href; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
43543
43544  function addToPrefiltersOrTransports(structure) {
43545    // dataTypeExpression is optional and defaults to "*"
43546    return function (dataTypeExpression, func) {
43547      if (typeof dataTypeExpression !== "string") {
43548        func = dataTypeExpression;
43549        dataTypeExpression = "*";
43550      }
43551
43552      var dataType,
43553          i = 0,
43554          dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
43555
43556      if (isFunction(func)) {
43557        // For each dataType in the dataTypeExpression
43558        while (dataType = dataTypes[i++]) {
43559          // Prepend if requested
43560          if (dataType[0] === "+") {
43561            dataType = dataType.slice(1) || "*";
43562            (structure[dataType] = structure[dataType] || []).unshift(func); // Otherwise append
43563          } else {
43564            (structure[dataType] = structure[dataType] || []).push(func);
43565          }
43566        }
43567      }
43568    };
43569  } // Base inspection function for prefilters and transports
43570
43571
43572  function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
43573    var inspected = {},
43574        seekingTransport = structure === transports;
43575
43576    function inspect(dataType) {
43577      var selected;
43578      inspected[dataType] = true;
43579      jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {
43580        var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
43581
43582        if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {
43583          options.dataTypes.unshift(dataTypeOrTransport);
43584          inspect(dataTypeOrTransport);
43585          return false;
43586        } else if (seekingTransport) {
43587          return !(selected = dataTypeOrTransport);
43588        }
43589      });
43590      return selected;
43591    }
43592
43593    return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
43594  } // A special extend for ajax options
43595  // that takes "flat" options (not to be deep extended)
43596  // Fixes #9887
43597
43598
43599  function ajaxExtend(target, src) {
43600    var key,
43601        deep,
43602        flatOptions = jQuery.ajaxSettings.flatOptions || {};
43603
43604    for (key in src) {
43605      if (src[key] !== undefined) {
43606        (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
43607      }
43608    }
43609
43610    if (deep) {
43611      jQuery.extend(true, target, deep);
43612    }
43613
43614    return target;
43615  }
43616  /* Handles responses to an ajax request:
43617   * - finds the right dataType (mediates between content-type and expected dataType)
43618   * - returns the corresponding response
43619   */
43620
43621
43622  function ajaxHandleResponses(s, jqXHR, responses) {
43623    var ct,
43624        type,
43625        finalDataType,
43626        firstDataType,
43627        contents = s.contents,
43628        dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process
43629
43630    while (dataTypes[0] === "*") {
43631      dataTypes.shift();
43632
43633      if (ct === undefined) {
43634        ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
43635      }
43636    } // Check if we're dealing with a known content-type
43637
43638
43639    if (ct) {
43640      for (type in contents) {
43641        if (contents[type] && contents[type].test(ct)) {
43642          dataTypes.unshift(type);
43643          break;
43644        }
43645      }
43646    } // Check to see if we have a response for the expected dataType
43647
43648
43649    if (dataTypes[0] in responses) {
43650      finalDataType = dataTypes[0];
43651    } else {
43652      // Try convertible dataTypes
43653      for (type in responses) {
43654        if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
43655          finalDataType = type;
43656          break;
43657        }
43658
43659        if (!firstDataType) {
43660          firstDataType = type;
43661        }
43662      } // Or just use first one
43663
43664
43665      finalDataType = finalDataType || firstDataType;
43666    } // If we found a dataType
43667    // We add the dataType to the list if needed
43668    // and return the corresponding response
43669
43670
43671    if (finalDataType) {
43672      if (finalDataType !== dataTypes[0]) {
43673        dataTypes.unshift(finalDataType);
43674      }
43675
43676      return responses[finalDataType];
43677    }
43678  }
43679  /* Chain conversions given the request and the original response
43680   * Also sets the responseXXX fields on the jqXHR instance
43681   */
43682
43683
43684  function ajaxConvert(s, response, jqXHR, isSuccess) {
43685    var conv2,
43686        current,
43687        conv,
43688        tmp,
43689        prev,
43690        converters = {},
43691        // Work with a copy of dataTypes in case we need to modify it for conversion
43692    dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys
43693
43694    if (dataTypes[1]) {
43695      for (conv in s.converters) {
43696        converters[conv.toLowerCase()] = s.converters[conv];
43697      }
43698    }
43699
43700    current = dataTypes.shift(); // Convert to each sequential dataType
43701
43702    while (current) {
43703      if (s.responseFields[current]) {
43704        jqXHR[s.responseFields[current]] = response;
43705      } // Apply the dataFilter if provided
43706
43707
43708      if (!prev && isSuccess && s.dataFilter) {
43709        response = s.dataFilter(response, s.dataType);
43710      }
43711
43712      prev = current;
43713      current = dataTypes.shift();
43714
43715      if (current) {
43716        // There's only work to do if current dataType is non-auto
43717        if (current === "*") {
43718          current = prev; // Convert response if prev dataType is non-auto and differs from current
43719        } else if (prev !== "*" && prev !== current) {
43720          // Seek a direct converter
43721          conv = converters[prev + " " + current] || converters["* " + current]; // If none found, seek a pair
43722
43723          if (!conv) {
43724            for (conv2 in converters) {
43725              // If conv2 outputs current
43726              tmp = conv2.split(" ");
43727
43728              if (tmp[1] === current) {
43729                // If prev can be converted to accepted input
43730                conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]];
43731
43732                if (conv) {
43733                  // Condense equivalence converters
43734                  if (conv === true) {
43735                    conv = converters[conv2]; // Otherwise, insert the intermediate dataType
43736                  } else if (converters[conv2] !== true) {
43737                    current = tmp[0];
43738                    dataTypes.unshift(tmp[1]);
43739                  }
43740
43741                  break;
43742                }
43743              }
43744            }
43745          } // Apply converter (if not an equivalence)
43746
43747
43748          if (conv !== true) {
43749            // Unless errors are allowed to bubble, catch and return them
43750            if (conv && s["throws"]) {
43751              response = conv(response);
43752            } else {
43753              try {
43754                response = conv(response);
43755              } catch (e) {
43756                return {
43757                  state: "parsererror",
43758                  error: conv ? e : "No conversion from " + prev + " to " + current
43759                };
43760              }
43761            }
43762          }
43763        }
43764      }
43765    }
43766
43767    return {
43768      state: "success",
43769      data: response
43770    };
43771  }
43772
43773  jQuery.extend({
43774    // Counter for holding the number of active queries
43775    active: 0,
43776    // Last-Modified header cache for next request
43777    lastModified: {},
43778    etag: {},
43779    ajaxSettings: {
43780      url: location.href,
43781      type: "GET",
43782      isLocal: rlocalProtocol.test(location.protocol),
43783      global: true,
43784      processData: true,
43785      async: true,
43786      contentType: "application/x-www-form-urlencoded; charset=UTF-8",
43787
43788      /*
43789      timeout: 0,
43790      data: null,
43791      dataType: null,
43792      username: null,
43793      password: null,
43794      cache: null,
43795      throws: false,
43796      traditional: false,
43797      headers: {},
43798      */
43799      accepts: {
43800        "*": allTypes,
43801        text: "text/plain",
43802        html: "text/html",
43803        xml: "application/xml, text/xml",
43804        json: "application/json, text/javascript"
43805      },
43806      contents: {
43807        xml: /\bxml\b/,
43808        html: /\bhtml/,
43809        json: /\bjson\b/
43810      },
43811      responseFields: {
43812        xml: "responseXML",
43813        text: "responseText",
43814        json: "responseJSON"
43815      },
43816      // Data converters
43817      // Keys separate source (or catchall "*") and destination types with a single space
43818      converters: {
43819        // Convert anything to text
43820        "* text": String,
43821        // Text to html (true = no transformation)
43822        "text html": true,
43823        // Evaluate text as a json expression
43824        "text json": JSON.parse,
43825        // Parse text as xml
43826        "text xml": jQuery.parseXML
43827      },
43828      // For options that shouldn't be deep extended:
43829      // you can add your own custom options here if
43830      // and when you create one that shouldn't be
43831      // deep extended (see ajaxExtend)
43832      flatOptions: {
43833        url: true,
43834        context: true
43835      }
43836    },
43837    // Creates a full fledged settings object into target
43838    // with both ajaxSettings and settings fields.
43839    // If target is omitted, writes into ajaxSettings.
43840    ajaxSetup: function ajaxSetup(target, settings) {
43841      return settings ? // Building a settings object
43842      ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings
43843      ajaxExtend(jQuery.ajaxSettings, target);
43844    },
43845    ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
43846    ajaxTransport: addToPrefiltersOrTransports(transports),
43847    // Main method
43848    ajax: function ajax(url, options) {
43849      // If url is an object, simulate pre-1.5 signature
43850      if (_typeof(url) === "object") {
43851        options = url;
43852        url = undefined;
43853      } // Force options to be an object
43854
43855
43856      options = options || {};
43857
43858      var transport,
43859          // URL without anti-cache param
43860      cacheURL,
43861          // Response headers
43862      responseHeadersString,
43863          responseHeaders,
43864          // timeout handle
43865      timeoutTimer,
43866          // Url cleanup var
43867      urlAnchor,
43868          // Request state (becomes false upon send and true upon completion)
43869      completed,
43870          // To know if global events are to be dispatched
43871      fireGlobals,
43872          // Loop variable
43873      i,
43874          // uncached part of the url
43875      uncached,
43876          // Create the final options object
43877      s = jQuery.ajaxSetup({}, options),
43878          // Callbacks context
43879      callbackContext = s.context || s,
43880          // Context for global events is callbackContext if it is a DOM node or jQuery collection
43881      globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,
43882          // Deferreds
43883      deferred = jQuery.Deferred(),
43884          completeDeferred = jQuery.Callbacks("once memory"),
43885          // Status-dependent callbacks
43886      _statusCode = s.statusCode || {},
43887          // Headers (they are sent all at once)
43888      requestHeaders = {},
43889          requestHeadersNames = {},
43890          // Default abort message
43891      strAbort = "canceled",
43892          // Fake xhr
43893      jqXHR = {
43894        readyState: 0,
43895        // Builds headers hashtable if needed
43896        getResponseHeader: function getResponseHeader(key) {
43897          var match;
43898
43899          if (completed) {
43900            if (!responseHeaders) {
43901              responseHeaders = {};
43902
43903              while (match = rheaders.exec(responseHeadersString)) {
43904                responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]);
43905              }
43906            }
43907
43908            match = responseHeaders[key.toLowerCase() + " "];
43909          }
43910
43911          return match == null ? null : match.join(", ");
43912        },
43913        // Raw string
43914        getAllResponseHeaders: function getAllResponseHeaders() {
43915          return completed ? responseHeadersString : null;
43916        },
43917        // Caches the header
43918        setRequestHeader: function setRequestHeader(name, value) {
43919          if (completed == null) {
43920            name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;
43921            requestHeaders[name] = value;
43922          }
43923
43924          return this;
43925        },
43926        // Overrides response content-type header
43927        overrideMimeType: function overrideMimeType(type) {
43928          if (completed == null) {
43929            s.mimeType = type;
43930          }
43931
43932          return this;
43933        },
43934        // Status-dependent callbacks
43935        statusCode: function statusCode(map) {
43936          var code;
43937
43938          if (map) {
43939            if (completed) {
43940              // Execute the appropriate callbacks
43941              jqXHR.always(map[jqXHR.status]);
43942            } else {
43943              // Lazy-add the new callbacks in a way that preserves old ones
43944              for (code in map) {
43945                _statusCode[code] = [_statusCode[code], map[code]];
43946              }
43947            }
43948          }
43949
43950          return this;
43951        },
43952        // Cancel the request
43953        abort: function abort(statusText) {
43954          var finalText = statusText || strAbort;
43955
43956          if (transport) {
43957            transport.abort(finalText);
43958          }
43959
43960          done(0, finalText);
43961          return this;
43962        }
43963      }; // Attach deferreds
43964
43965
43966      deferred.promise(jqXHR); // Add protocol if not provided (prefilters might expect it)
43967      // Handle falsy url in the settings object (#10093: consistency with old signature)
43968      // We also use the url parameter if available
43969
43970      s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//"); // Alias method option to type as per ticket #12004
43971
43972      s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list
43973
43974      s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""]; // A cross-domain request is in order when the origin doesn't match the current origin.
43975
43976      if (s.crossDomain == null) {
43977        urlAnchor = document.createElement("a"); // Support: IE <=8 - 11, Edge 12 - 15
43978        // IE throws exception on accessing the href property if url is malformed,
43979        // e.g. http://example.com:80x/
43980
43981        try {
43982          urlAnchor.href = s.url; // Support: IE <=8 - 11 only
43983          // Anchor's host property isn't correctly set when s.url is relative
43984
43985          urlAnchor.href = urlAnchor.href;
43986          s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
43987        } catch (e) {
43988          // If there is an error parsing the URL, assume it is crossDomain,
43989          // it can be rejected by the transport if it is invalid
43990          s.crossDomain = true;
43991        }
43992      } // Convert data if not already a string
43993
43994
43995      if (s.data && s.processData && typeof s.data !== "string") {
43996        s.data = jQuery.param(s.data, s.traditional);
43997      } // Apply prefilters
43998
43999
44000      inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there
44001
44002      if (completed) {
44003        return jqXHR;
44004      } // We can fire global events as of now if asked to
44005      // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
44006
44007
44008      fireGlobals = jQuery.event && s.global; // Watch for a new set of requests
44009
44010      if (fireGlobals && jQuery.active++ === 0) {
44011        jQuery.event.trigger("ajaxStart");
44012      } // Uppercase the type
44013
44014
44015      s.type = s.type.toUpperCase(); // Determine if request has content
44016
44017      s.hasContent = !rnoContent.test(s.type); // Save the URL in case we're toying with the If-Modified-Since
44018      // and/or If-None-Match header later on
44019      // Remove hash to simplify url manipulation
44020
44021      cacheURL = s.url.replace(rhash, ""); // More options handling for requests with no content
44022
44023      if (!s.hasContent) {
44024        // Remember the hash so we can put it back
44025        uncached = s.url.slice(cacheURL.length); // If data is available and should be processed, append data to url
44026
44027        if (s.data && (s.processData || typeof s.data === "string")) {
44028          cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data; // #9682: remove data so that it's not used in an eventual retry
44029
44030          delete s.data;
44031        } // Add or update anti-cache param if needed
44032
44033
44034        if (s.cache === false) {
44035          cacheURL = cacheURL.replace(rantiCache, "$1");
44036          uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached;
44037        } // Put hash and anti-cache on the URL that will be requested (gh-1732)
44038
44039
44040        s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658)
44041      } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) {
44042        s.data = s.data.replace(r20, "+");
44043      } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
44044
44045
44046      if (s.ifModified) {
44047        if (jQuery.lastModified[cacheURL]) {
44048          jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]);
44049        }
44050
44051        if (jQuery.etag[cacheURL]) {
44052          jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]);
44053        }
44054      } // Set the correct header, if data is being sent
44055
44056
44057      if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
44058        jqXHR.setRequestHeader("Content-Type", s.contentType);
44059      } // Set the Accepts header for the server, depending on the dataType
44060
44061
44062      jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]); // Check for headers option
44063
44064      for (i in s.headers) {
44065        jqXHR.setRequestHeader(i, s.headers[i]);
44066      } // Allow custom headers/mimetypes and early abort
44067
44068
44069      if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {
44070        // Abort if not done already and return
44071        return jqXHR.abort();
44072      } // Aborting is no longer a cancellation
44073
44074
44075      strAbort = "abort"; // Install callbacks on deferreds
44076
44077      completeDeferred.add(s.complete);
44078      jqXHR.done(s.success);
44079      jqXHR.fail(s.error); // Get transport
44080
44081      transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort
44082
44083      if (!transport) {
44084        done(-1, "No Transport");
44085      } else {
44086        jqXHR.readyState = 1; // Send global event
44087
44088        if (fireGlobals) {
44089          globalEventContext.trigger("ajaxSend", [jqXHR, s]);
44090        } // If request was aborted inside ajaxSend, stop there
44091
44092
44093        if (completed) {
44094          return jqXHR;
44095        } // Timeout
44096
44097
44098        if (s.async && s.timeout > 0) {
44099          timeoutTimer = window.setTimeout(function () {
44100            jqXHR.abort("timeout");
44101          }, s.timeout);
44102        }
44103
44104        try {
44105          completed = false;
44106          transport.send(requestHeaders, done);
44107        } catch (e) {
44108          // Rethrow post-completion exceptions
44109          if (completed) {
44110            throw e;
44111          } // Propagate others as results
44112
44113
44114          done(-1, e);
44115        }
44116      } // Callback for when everything is done
44117
44118
44119      function done(status, nativeStatusText, responses, headers) {
44120        var isSuccess,
44121            success,
44122            error,
44123            response,
44124            modified,
44125            statusText = nativeStatusText; // Ignore repeat invocations
44126
44127        if (completed) {
44128          return;
44129        }
44130
44131        completed = true; // Clear timeout if it exists
44132
44133        if (timeoutTimer) {
44134          window.clearTimeout(timeoutTimer);
44135        } // Dereference transport for early garbage collection
44136        // (no matter how long the jqXHR object will be used)
44137
44138
44139        transport = undefined; // Cache response headers
44140
44141        responseHeadersString = headers || ""; // Set readyState
44142
44143        jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful
44144
44145        isSuccess = status >= 200 && status < 300 || status === 304; // Get response data
44146
44147        if (responses) {
44148          response = ajaxHandleResponses(s, jqXHR, responses);
44149        } // Use a noop converter for missing script but not if jsonp
44150
44151
44152        if (!isSuccess && jQuery.inArray("script", s.dataTypes) > -1 && jQuery.inArray("json", s.dataTypes) < 0) {
44153          s.converters["text script"] = function () {};
44154        } // Convert no matter what (that way responseXXX fields are always set)
44155
44156
44157        response = ajaxConvert(s, response, jqXHR, isSuccess); // If successful, handle type chaining
44158
44159        if (isSuccess) {
44160          // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
44161          if (s.ifModified) {
44162            modified = jqXHR.getResponseHeader("Last-Modified");
44163
44164            if (modified) {
44165              jQuery.lastModified[cacheURL] = modified;
44166            }
44167
44168            modified = jqXHR.getResponseHeader("etag");
44169
44170            if (modified) {
44171              jQuery.etag[cacheURL] = modified;
44172            }
44173          } // if no content
44174
44175
44176          if (status === 204 || s.type === "HEAD") {
44177            statusText = "nocontent"; // if not modified
44178          } else if (status === 304) {
44179            statusText = "notmodified"; // If we have data, let's convert it
44180          } else {
44181            statusText = response.state;
44182            success = response.data;
44183            error = response.error;
44184            isSuccess = !error;
44185          }
44186        } else {
44187          // Extract error from statusText and normalize for non-aborts
44188          error = statusText;
44189
44190          if (status || !statusText) {
44191            statusText = "error";
44192
44193            if (status < 0) {
44194              status = 0;
44195            }
44196          }
44197        } // Set data for the fake xhr object
44198
44199
44200        jqXHR.status = status;
44201        jqXHR.statusText = (nativeStatusText || statusText) + ""; // Success/Error
44202
44203        if (isSuccess) {
44204          deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
44205        } else {
44206          deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
44207        } // Status-dependent callbacks
44208
44209
44210        jqXHR.statusCode(_statusCode);
44211        _statusCode = undefined;
44212
44213        if (fireGlobals) {
44214          globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]);
44215        } // Complete
44216
44217
44218        completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
44219
44220        if (fireGlobals) {
44221          globalEventContext.trigger("ajaxComplete", [jqXHR, s]); // Handle the global AJAX counter
44222
44223          if (! --jQuery.active) {
44224            jQuery.event.trigger("ajaxStop");
44225          }
44226        }
44227      }
44228
44229      return jqXHR;
44230    },
44231    getJSON: function getJSON(url, data, callback) {
44232      return jQuery.get(url, data, callback, "json");
44233    },
44234    getScript: function getScript(url, callback) {
44235      return jQuery.get(url, undefined, callback, "script");
44236    }
44237  });
44238  jQuery.each(["get", "post"], function (_i, method) {
44239    jQuery[method] = function (url, data, callback, type) {
44240      // Shift arguments if data argument was omitted
44241      if (isFunction(data)) {
44242        type = type || callback;
44243        callback = data;
44244        data = undefined;
44245      } // The url can be an options object (which then must have .url)
44246
44247
44248      return jQuery.ajax(jQuery.extend({
44249        url: url,
44250        type: method,
44251        dataType: type,
44252        data: data,
44253        success: callback
44254      }, jQuery.isPlainObject(url) && url));
44255    };
44256  });
44257  jQuery.ajaxPrefilter(function (s) {
44258    var i;
44259
44260    for (i in s.headers) {
44261      if (i.toLowerCase() === "content-type") {
44262        s.contentType = s.headers[i] || "";
44263      }
44264    }
44265  });
44266
44267  jQuery._evalUrl = function (url, options, doc) {
44268    return jQuery.ajax({
44269      url: url,
44270      // Make this explicit, since user can override this through ajaxSetup (#11264)
44271      type: "GET",
44272      dataType: "script",
44273      cache: true,
44274      async: false,
44275      global: false,
44276      // Only evaluate the response if it is successful (gh-4126)
44277      // dataFilter is not invoked for failure responses, so using it instead
44278      // of the default converter is kludgy but it works.
44279      converters: {
44280        "text script": function textScript() {}
44281      },
44282      dataFilter: function dataFilter(response) {
44283        jQuery.globalEval(response, options, doc);
44284      }
44285    });
44286  };
44287
44288  jQuery.fn.extend({
44289    wrapAll: function wrapAll(html) {
44290      var wrap;
44291
44292      if (this[0]) {
44293        if (isFunction(html)) {
44294          html = html.call(this[0]);
44295        } // The elements to wrap the target around
44296
44297
44298        wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);
44299
44300        if (this[0].parentNode) {
44301          wrap.insertBefore(this[0]);
44302        }
44303
44304        wrap.map(function () {
44305          var elem = this;
44306
44307          while (elem.firstElementChild) {
44308            elem = elem.firstElementChild;
44309          }
44310
44311          return elem;
44312        }).append(this);
44313      }
44314
44315      return this;
44316    },
44317    wrapInner: function wrapInner(html) {
44318      if (isFunction(html)) {
44319        return this.each(function (i) {
44320          jQuery(this).wrapInner(html.call(this, i));
44321        });
44322      }
44323
44324      return this.each(function () {
44325        var self = jQuery(this),
44326            contents = self.contents();
44327
44328        if (contents.length) {
44329          contents.wrapAll(html);
44330        } else {
44331          self.append(html);
44332        }
44333      });
44334    },
44335    wrap: function wrap(html) {
44336      var htmlIsFunction = isFunction(html);
44337      return this.each(function (i) {
44338        jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);
44339      });
44340    },
44341    unwrap: function unwrap(selector) {
44342      this.parent(selector).not("body").each(function () {
44343        jQuery(this).replaceWith(this.childNodes);
44344      });
44345      return this;
44346    }
44347  });
44348
44349  jQuery.expr.pseudos.hidden = function (elem) {
44350    return !jQuery.expr.pseudos.visible(elem);
44351  };
44352
44353  jQuery.expr.pseudos.visible = function (elem) {
44354    return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
44355  };
44356
44357  jQuery.ajaxSettings.xhr = function () {
44358    try {
44359      return new window.XMLHttpRequest();
44360    } catch (e) {}
44361  };
44362
44363  var xhrSuccessStatus = {
44364    // File protocol always yields status code 0, assume 200
44365    0: 200,
44366    // Support: IE <=9 only
44367    // #1450: sometimes IE returns 1223 when it should be 204
44368    1223: 204
44369  },
44370      xhrSupported = jQuery.ajaxSettings.xhr();
44371  support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
44372  support.ajax = xhrSupported = !!xhrSupported;
44373  jQuery.ajaxTransport(function (options) {
44374    var _callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest
44375
44376
44377    if (support.cors || xhrSupported && !options.crossDomain) {
44378      return {
44379        send: function send(headers, complete) {
44380          var i,
44381              xhr = options.xhr();
44382          xhr.open(options.type, options.url, options.async, options.username, options.password); // Apply custom fields if provided
44383
44384          if (options.xhrFields) {
44385            for (i in options.xhrFields) {
44386              xhr[i] = options.xhrFields[i];
44387            }
44388          } // Override mime type if needed
44389
44390
44391          if (options.mimeType && xhr.overrideMimeType) {
44392            xhr.overrideMimeType(options.mimeType);
44393          } // X-Requested-With header
44394          // For cross-domain requests, seeing as conditions for a preflight are
44395          // akin to a jigsaw puzzle, we simply never set it to be sure.
44396          // (it can always be set on a per-request basis or even using ajaxSetup)
44397          // For same-domain requests, won't change header if already provided.
44398
44399
44400          if (!options.crossDomain && !headers["X-Requested-With"]) {
44401            headers["X-Requested-With"] = "XMLHttpRequest";
44402          } // Set headers
44403
44404
44405          for (i in headers) {
44406            xhr.setRequestHeader(i, headers[i]);
44407          } // Callback
44408
44409
44410          _callback = function callback(type) {
44411            return function () {
44412              if (_callback) {
44413                _callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
44414
44415                if (type === "abort") {
44416                  xhr.abort();
44417                } else if (type === "error") {
44418                  // Support: IE <=9 only
44419                  // On a manual native abort, IE9 throws
44420                  // errors on any property access that is not readyState
44421                  if (typeof xhr.status !== "number") {
44422                    complete(0, "error");
44423                  } else {
44424                    complete( // File: protocol always yields status 0; see #8605, #14207
44425                    xhr.status, xhr.statusText);
44426                  }
44427                } else {
44428                  complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE <=9 only
44429                  // IE9 has no XHR2 but throws on binary (trac-11426)
44430                  // For XHR2 non-text, let the caller handle it (gh-2498)
44431                  (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? {
44432                    binary: xhr.response
44433                  } : {
44434                    text: xhr.responseText
44435                  }, xhr.getAllResponseHeaders());
44436                }
44437              }
44438            };
44439          }; // Listen to events
44440
44441
44442          xhr.onload = _callback();
44443          errorCallback = xhr.onerror = xhr.ontimeout = _callback("error"); // Support: IE 9 only
44444          // Use onreadystatechange to replace onabort
44445          // to handle uncaught aborts
44446
44447          if (xhr.onabort !== undefined) {
44448            xhr.onabort = errorCallback;
44449          } else {
44450            xhr.onreadystatechange = function () {
44451              // Check readyState before timeout as it changes
44452              if (xhr.readyState === 4) {
44453                // Allow onerror to be called first,
44454                // but that will not handle a native abort
44455                // Also, save errorCallback to a variable
44456                // as xhr.onerror cannot be accessed
44457                window.setTimeout(function () {
44458                  if (_callback) {
44459                    errorCallback();
44460                  }
44461                });
44462              }
44463            };
44464          } // Create the abort callback
44465
44466
44467          _callback = _callback("abort");
44468
44469          try {
44470            // Do send the request (this may raise an exception)
44471            xhr.send(options.hasContent && options.data || null);
44472          } catch (e) {
44473            // #14683: Only rethrow if this hasn't been notified as an error yet
44474            if (_callback) {
44475              throw e;
44476            }
44477          }
44478        },
44479        abort: function abort() {
44480          if (_callback) {
44481            _callback();
44482          }
44483        }
44484      };
44485    }
44486  }); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
44487
44488  jQuery.ajaxPrefilter(function (s) {
44489    if (s.crossDomain) {
44490      s.contents.script = false;
44491    }
44492  }); // Install script dataType
44493
44494  jQuery.ajaxSetup({
44495    accepts: {
44496      script: "text/javascript, application/javascript, " + "application/ecmascript, application/x-ecmascript"
44497    },
44498    contents: {
44499      script: /\b(?:java|ecma)script\b/
44500    },
44501    converters: {
44502      "text script": function textScript(text) {
44503        jQuery.globalEval(text);
44504        return text;
44505      }
44506    }
44507  }); // Handle cache's special case and crossDomain
44508
44509  jQuery.ajaxPrefilter("script", function (s) {
44510    if (s.cache === undefined) {
44511      s.cache = false;
44512    }
44513
44514    if (s.crossDomain) {
44515      s.type = "GET";
44516    }
44517  }); // Bind script tag hack transport
44518
44519  jQuery.ajaxTransport("script", function (s) {
44520    // This transport only deals with cross domain or forced-by-attrs requests
44521    if (s.crossDomain || s.scriptAttrs) {
44522      var script, _callback2;
44523
44524      return {
44525        send: function send(_, complete) {
44526          script = jQuery("<script>").attr(s.scriptAttrs || {}).prop({
44527            charset: s.scriptCharset,
44528            src: s.url
44529          }).on("load error", _callback2 = function callback(evt) {
44530            script.remove();
44531            _callback2 = null;
44532
44533            if (evt) {
44534              complete(evt.type === "error" ? 404 : 200, evt.type);
44535            }
44536          }); // Use native DOM manipulation to avoid our domManip AJAX trickery
44537
44538          document.head.appendChild(script[0]);
44539        },
44540        abort: function abort() {
44541          if (_callback2) {
44542            _callback2();
44543          }
44544        }
44545      };
44546    }
44547  });
44548  var oldCallbacks = [],
44549      rjsonp = /(=)\?(?=&|$)|\?\?/; // Default jsonp settings
44550
44551  jQuery.ajaxSetup({
44552    jsonp: "callback",
44553    jsonpCallback: function jsonpCallback() {
44554      var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce.guid++;
44555      this[callback] = true;
44556      return callback;
44557    }
44558  }); // Detect, normalize options and install callbacks for jsonp requests
44559
44560  jQuery.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) {
44561    var callbackName,
44562        overwritten,
44563        responseContainer,
44564        jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data"); // Handle iff the expected data type is "jsonp" or we have a parameter to set
44565
44566    if (jsonProp || s.dataTypes[0] === "jsonp") {
44567      // Get callback name, remembering preexisting value associated with it
44568      callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; // Insert callback into url or form data
44569
44570      if (jsonProp) {
44571        s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
44572      } else if (s.jsonp !== false) {
44573        s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
44574      } // Use data converter to retrieve json after script execution
44575
44576
44577      s.converters["script json"] = function () {
44578        if (!responseContainer) {
44579          jQuery.error(callbackName + " was not called");
44580        }
44581
44582        return responseContainer[0];
44583      }; // Force json dataType
44584
44585
44586      s.dataTypes[0] = "json"; // Install callback
44587
44588      overwritten = window[callbackName];
44589
44590      window[callbackName] = function () {
44591        responseContainer = arguments;
44592      }; // Clean-up function (fires after converters)
44593
44594
44595      jqXHR.always(function () {
44596        // If previous value didn't exist - remove it
44597        if (overwritten === undefined) {
44598          jQuery(window).removeProp(callbackName); // Otherwise restore preexisting value
44599        } else {
44600          window[callbackName] = overwritten;
44601        } // Save back as free
44602
44603
44604        if (s[callbackName]) {
44605          // Make sure that re-using the options doesn't screw things around
44606          s.jsonpCallback = originalSettings.jsonpCallback; // Save the callback name for future use
44607
44608          oldCallbacks.push(callbackName);
44609        } // Call if it was a function and we have a response
44610
44611
44612        if (responseContainer && isFunction(overwritten)) {
44613          overwritten(responseContainer[0]);
44614        }
44615
44616        responseContainer = overwritten = undefined;
44617      }); // Delegate to script
44618
44619      return "script";
44620    }
44621  }); // Support: Safari 8 only
44622  // In Safari 8 documents created via document.implementation.createHTMLDocument
44623  // collapse sibling forms: the second one becomes a child of the first one.
44624  // Because of that, this security measure has to be disabled in Safari 8.
44625  // https://bugs.webkit.org/show_bug.cgi?id=137337
44626
44627  support.createHTMLDocument = function () {
44628    var body = document.implementation.createHTMLDocument("").body;
44629    body.innerHTML = "<form></form><form></form>";
44630    return body.childNodes.length === 2;
44631  }(); // Argument "data" should be string of html
44632  // context (optional): If specified, the fragment will be created in this context,
44633  // defaults to document
44634  // keepScripts (optional): If true, will include scripts passed in the html string
44635
44636
44637  jQuery.parseHTML = function (data, context, keepScripts) {
44638    if (typeof data !== "string") {
44639      return [];
44640    }
44641
44642    if (typeof context === "boolean") {
44643      keepScripts = context;
44644      context = false;
44645    }
44646
44647    var base, parsed, scripts;
44648
44649    if (!context) {
44650      // Stop scripts or inline event handlers from being executed immediately
44651      // by using document.implementation
44652      if (support.createHTMLDocument) {
44653        context = document.implementation.createHTMLDocument(""); // Set the base href for the created document
44654        // so any parsed elements with URLs
44655        // are based on the document's URL (gh-2965)
44656
44657        base = context.createElement("base");
44658        base.href = document.location.href;
44659        context.head.appendChild(base);
44660      } else {
44661        context = document;
44662      }
44663    }
44664
44665    parsed = rsingleTag.exec(data);
44666    scripts = !keepScripts && []; // Single tag
44667
44668    if (parsed) {
44669      return [context.createElement(parsed[1])];
44670    }
44671
44672    parsed = buildFragment([data], context, scripts);
44673
44674    if (scripts && scripts.length) {
44675      jQuery(scripts).remove();
44676    }
44677
44678    return jQuery.merge([], parsed.childNodes);
44679  };
44680  /**
44681   * Load a url into a page
44682   */
44683
44684
44685  jQuery.fn.load = function (url, params, callback) {
44686    var selector,
44687        type,
44688        response,
44689        self = this,
44690        off = url.indexOf(" ");
44691
44692    if (off > -1) {
44693      selector = stripAndCollapse(url.slice(off));
44694      url = url.slice(0, off);
44695    } // If it's a function
44696
44697
44698    if (isFunction(params)) {
44699      // We assume that it's the callback
44700      callback = params;
44701      params = undefined; // Otherwise, build a param string
44702    } else if (params && _typeof(params) === "object") {
44703      type = "POST";
44704    } // If we have elements to modify, make the request
44705
44706
44707    if (self.length > 0) {
44708      jQuery.ajax({
44709        url: url,
44710        // If "type" variable is undefined, then "GET" method will be used.
44711        // Make value of this field explicit since
44712        // user can override it through ajaxSetup method
44713        type: type || "GET",
44714        dataType: "html",
44715        data: params
44716      }).done(function (responseText) {
44717        // Save response for use in complete callback
44718        response = arguments;
44719        self.html(selector ? // If a selector was specified, locate the right elements in a dummy div
44720        // Exclude scripts to avoid IE 'Permission Denied' errors
44721        jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : // Otherwise use the full result
44722        responseText); // If the request succeeds, this function gets "data", "status", "jqXHR"
44723        // but they are ignored because response was set above.
44724        // If it fails, this function gets "jqXHR", "status", "error"
44725      }).always(callback && function (jqXHR, status) {
44726        self.each(function () {
44727          callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
44728        });
44729      });
44730    }
44731
44732    return this;
44733  };
44734
44735  jQuery.expr.pseudos.animated = function (elem) {
44736    return jQuery.grep(jQuery.timers, function (fn) {
44737      return elem === fn.elem;
44738    }).length;
44739  };
44740
44741  jQuery.offset = {
44742    setOffset: function setOffset(elem, options, i) {
44743      var curPosition,
44744          curLeft,
44745          curCSSTop,
44746          curTop,
44747          curOffset,
44748          curCSSLeft,
44749          calculatePosition,
44750          position = jQuery.css(elem, "position"),
44751          curElem = jQuery(elem),
44752          props = {}; // Set position first, in-case top/left are set even on static elem
44753
44754      if (position === "static") {
44755        elem.style.position = "relative";
44756      }
44757
44758      curOffset = curElem.offset();
44759      curCSSTop = jQuery.css(elem, "top");
44760      curCSSLeft = jQuery.css(elem, "left");
44761      calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1; // Need to be able to calculate position if either
44762      // top or left is auto and position is either absolute or fixed
44763
44764      if (calculatePosition) {
44765        curPosition = curElem.position();
44766        curTop = curPosition.top;
44767        curLeft = curPosition.left;
44768      } else {
44769        curTop = parseFloat(curCSSTop) || 0;
44770        curLeft = parseFloat(curCSSLeft) || 0;
44771      }
44772
44773      if (isFunction(options)) {
44774        // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
44775        options = options.call(elem, i, jQuery.extend({}, curOffset));
44776      }
44777
44778      if (options.top != null) {
44779        props.top = options.top - curOffset.top + curTop;
44780      }
44781
44782      if (options.left != null) {
44783        props.left = options.left - curOffset.left + curLeft;
44784      }
44785
44786      if ("using" in options) {
44787        options.using.call(elem, props);
44788      } else {
44789        curElem.css(props);
44790      }
44791    }
44792  };
44793  jQuery.fn.extend({
44794    // offset() relates an element's border box to the document origin
44795    offset: function offset(options) {
44796      // Preserve chaining for setter
44797      if (arguments.length) {
44798        return options === undefined ? this : this.each(function (i) {
44799          jQuery.offset.setOffset(this, options, i);
44800        });
44801      }
44802
44803      var rect,
44804          win,
44805          elem = this[0];
44806
44807      if (!elem) {
44808        return;
44809      } // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
44810      // Support: IE <=11 only
44811      // Running getBoundingClientRect on a
44812      // disconnected node in IE throws an error
44813
44814
44815      if (!elem.getClientRects().length) {
44816        return {
44817          top: 0,
44818          left: 0
44819        };
44820      } // Get document-relative position by adding viewport scroll to viewport-relative gBCR
44821
44822
44823      rect = elem.getBoundingClientRect();
44824      win = elem.ownerDocument.defaultView;
44825      return {
44826        top: rect.top + win.pageYOffset,
44827        left: rect.left + win.pageXOffset
44828      };
44829    },
44830    // position() relates an element's margin box to its offset parent's padding box
44831    // This corresponds to the behavior of CSS absolute positioning
44832    position: function position() {
44833      if (!this[0]) {
44834        return;
44835      }
44836
44837      var offsetParent,
44838          offset,
44839          doc,
44840          elem = this[0],
44841          parentOffset = {
44842        top: 0,
44843        left: 0
44844      }; // position:fixed elements are offset from the viewport, which itself always has zero offset
44845
44846      if (jQuery.css(elem, "position") === "fixed") {
44847        // Assume position:fixed implies availability of getBoundingClientRect
44848        offset = elem.getBoundingClientRect();
44849      } else {
44850        offset = this.offset(); // Account for the *real* offset parent, which can be the document or its root element
44851        // when a statically positioned element is identified
44852
44853        doc = elem.ownerDocument;
44854        offsetParent = elem.offsetParent || doc.documentElement;
44855
44856        while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, "position") === "static") {
44857          offsetParent = offsetParent.parentNode;
44858        }
44859
44860        if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
44861          // Incorporate borders into its offset, since they are outside its content origin
44862          parentOffset = jQuery(offsetParent).offset();
44863          parentOffset.top += jQuery.css(offsetParent, "borderTopWidth", true);
44864          parentOffset.left += jQuery.css(offsetParent, "borderLeftWidth", true);
44865        }
44866      } // Subtract parent offsets and element margins
44867
44868
44869      return {
44870        top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true),
44871        left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true)
44872      };
44873    },
44874    // This method will return documentElement in the following cases:
44875    // 1) For the element inside the iframe without offsetParent, this method will return
44876    //    documentElement of the parent window
44877    // 2) For the hidden or detached element
44878    // 3) For body or html element, i.e. in case of the html node - it will return itself
44879    //
44880    // but those exceptions were never presented as a real life use-cases
44881    // and might be considered as more preferable results.
44882    //
44883    // This logic, however, is not guaranteed and can change at any point in the future
44884    offsetParent: function offsetParent() {
44885      return this.map(function () {
44886        var offsetParent = this.offsetParent;
44887
44888        while (offsetParent && jQuery.css(offsetParent, "position") === "static") {
44889          offsetParent = offsetParent.offsetParent;
44890        }
44891
44892        return offsetParent || documentElement;
44893      });
44894    }
44895  }); // Create scrollLeft and scrollTop methods
44896
44897  jQuery.each({
44898    scrollLeft: "pageXOffset",
44899    scrollTop: "pageYOffset"
44900  }, function (method, prop) {
44901    var top = "pageYOffset" === prop;
44902
44903    jQuery.fn[method] = function (val) {
44904      return access(this, function (elem, method, val) {
44905        // Coalesce documents and windows
44906        var win;
44907
44908        if (isWindow(elem)) {
44909          win = elem;
44910        } else if (elem.nodeType === 9) {
44911          win = elem.defaultView;
44912        }
44913
44914        if (val === undefined) {
44915          return win ? win[prop] : elem[method];
44916        }
44917
44918        if (win) {
44919          win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);
44920        } else {
44921          elem[method] = val;
44922        }
44923      }, method, val, arguments.length);
44924    };
44925  }); // Support: Safari <=7 - 9.1, Chrome <=37 - 49
44926  // Add the top/left cssHooks using jQuery.fn.position
44927  // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
44928  // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
44929  // getComputedStyle returns percent when specified for top/left/bottom/right;
44930  // rather than make the css module depend on the offset module, just check for it here
44931
44932  jQuery.each(["top", "left"], function (_i, prop) {
44933    jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
44934      if (computed) {
44935        computed = curCSS(elem, prop); // If curCSS returns percentage, fallback to offset
44936
44937        return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed;
44938      }
44939    });
44940  }); // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
44941
44942  jQuery.each({
44943    Height: "height",
44944    Width: "width"
44945  }, function (name, type) {
44946    jQuery.each({
44947      padding: "inner" + name,
44948      content: type,
44949      "": "outer" + name
44950    }, function (defaultExtra, funcName) {
44951      // Margin is only for outerHeight, outerWidth
44952      jQuery.fn[funcName] = function (margin, value) {
44953        var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"),
44954            extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
44955        return access(this, function (elem, type, value) {
44956          var doc;
44957
44958          if (isWindow(elem)) {
44959            // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
44960            return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name];
44961          } // Get document width or height
44962
44963
44964          if (elem.nodeType === 9) {
44965            doc = elem.documentElement; // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
44966            // whichever is greatest
44967
44968            return Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name]);
44969          }
44970
44971          return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat
44972          jQuery.css(elem, type, extra) : // Set width or height on the element
44973          jQuery.style(elem, type, value, extra);
44974        }, type, chainable ? margin : undefined, chainable);
44975      };
44976    });
44977  });
44978  jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (_i, type) {
44979    jQuery.fn[type] = function (fn) {
44980      return this.on(type, fn);
44981    };
44982  });
44983  jQuery.fn.extend({
44984    bind: function bind(types, data, fn) {
44985      return this.on(types, null, data, fn);
44986    },
44987    unbind: function unbind(types, fn) {
44988      return this.off(types, null, fn);
44989    },
44990    delegate: function delegate(selector, types, data, fn) {
44991      return this.on(types, selector, data, fn);
44992    },
44993    undelegate: function undelegate(selector, types, fn) {
44994      // ( namespace ) or ( selector, types [, fn] )
44995      return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn);
44996    },
44997    hover: function hover(fnOver, fnOut) {
44998      return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
44999    }
45000  });
45001  jQuery.each(("blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu").split(" "), function (_i, name) {
45002    // Handle event binding
45003    jQuery.fn[name] = function (data, fn) {
45004      return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
45005    };
45006  }); // Support: Android <=4.0 only
45007  // Make sure we trim BOM and NBSP
45008
45009  var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; // Bind a function to a context, optionally partially applying any
45010  // arguments.
45011  // jQuery.proxy is deprecated to promote standards (specifically Function#bind)
45012  // However, it is not slated for removal any time soon
45013
45014  jQuery.proxy = function (fn, context) {
45015    var tmp, args, proxy;
45016
45017    if (typeof context === "string") {
45018      tmp = fn[context];
45019      context = fn;
45020      fn = tmp;
45021    } // Quick check to determine if target is callable, in the spec
45022    // this throws a TypeError, but we will just return undefined.
45023
45024
45025    if (!isFunction(fn)) {
45026      return undefined;
45027    } // Simulated bind
45028
45029
45030    args = _slice.call(arguments, 2);
45031
45032    proxy = function proxy() {
45033      return fn.apply(context || this, args.concat(_slice.call(arguments)));
45034    }; // Set the guid of unique handler to the same of original handler, so it can be removed
45035
45036
45037    proxy.guid = fn.guid = fn.guid || jQuery.guid++;
45038    return proxy;
45039  };
45040
45041  jQuery.holdReady = function (hold) {
45042    if (hold) {
45043      jQuery.readyWait++;
45044    } else {
45045      jQuery.ready(true);
45046    }
45047  };
45048
45049  jQuery.isArray = Array.isArray;
45050  jQuery.parseJSON = JSON.parse;
45051  jQuery.nodeName = nodeName;
45052  jQuery.isFunction = isFunction;
45053  jQuery.isWindow = isWindow;
45054  jQuery.camelCase = camelCase;
45055  jQuery.type = toType;
45056  jQuery.now = Date.now;
45057
45058  jQuery.isNumeric = function (obj) {
45059    // As of jQuery 3.0, isNumeric is limited to
45060    // strings and numbers (primitives or objects)
45061    // that can be coerced to finite numbers (gh-2662)
45062    var type = jQuery.type(obj);
45063    return (type === "number" || type === "string") && // parseFloat NaNs numeric-cast false positives ("")
45064    // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
45065    // subtraction forces infinities to NaN
45066    !isNaN(obj - parseFloat(obj));
45067  };
45068
45069  jQuery.trim = function (text) {
45070    return text == null ? "" : (text + "").replace(rtrim, "");
45071  }; // Register as a named AMD module, since jQuery can be concatenated with other
45072  // files that may use define, but not via a proper concatenation script that
45073  // understands anonymous AMD modules. A named AMD is safest and most robust
45074  // way to register. Lowercase jquery is used because AMD module names are
45075  // derived from file names, and jQuery is normally delivered in a lowercase
45076  // file name. Do this after creating the global so that if an AMD module wants
45077  // to call noConflict to hide this version of jQuery, it will work.
45078  // Note that for maximum portability, libraries that are not jQuery should
45079  // declare themselves as anonymous modules, and avoid setting a global if an
45080  // AMD loader is present. jQuery is a special case. For more information, see
45081  // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
45082
45083
45084  if (true) {
45085    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
45086      return jQuery;
45087    }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
45088				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
45089  }
45090
45091  var // Map over jQuery in case of overwrite
45092  _jQuery = window.jQuery,
45093      // Map over the $ in case of overwrite
45094  _$ = window.$;
45095
45096  jQuery.noConflict = function (deep) {
45097    if (window.$ === jQuery) {
45098      window.$ = _$;
45099    }
45100
45101    if (deep && window.jQuery === jQuery) {
45102      window.jQuery = _jQuery;
45103    }
45104
45105    return jQuery;
45106  }; // Expose jQuery and $ identifiers, even in AMD
45107  // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
45108  // and CommonJS for browser emulators (#13566)
45109
45110
45111  if (typeof noGlobal === "undefined") {
45112    window.jQuery = window.$ = jQuery;
45113  }
45114
45115  return jQuery;
45116});
45117/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../sfra-webpack-builder/node_modules/webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
45118
45119/***/ }),
45120
vendor: 89,140 bytes, lines 45121-47748
45121/***/ "../rvw_autobahn_core/node_modules/popper.js/dist/esm/popper.js":
45122/*!**********************************************************************!*\
45123  !*** ../rvw_autobahn_core/node_modules/popper.js/dist/esm/popper.js ***!
45124  \**********************************************************************/
45125/*! exports provided: default */
45126/***/ (function(module, __webpack_exports__, __webpack_require__) {
45127
45128"use strict";
45129__webpack_require__.r(__webpack_exports__);
45130/* WEBPACK VAR INJECTION */(function(global) {/**!
45131 * @fileOverview Kickass library to create and place poppers near their reference elements.
45132 * @version 1.16.1
45133 * @license
45134 * Copyright (c) 2016 Federico Zivolo and contributors
45135 *
45136 * Permission is hereby granted, free of charge, to any person obtaining a copy
45137 * of this software and associated documentation files (the "Software"), to deal
45138 * in the Software without restriction, including without limitation the rights
45139 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
45140 * copies of the Software, and to permit persons to whom the Software is
45141 * furnished to do so, subject to the following conditions:
45142 *
45143 * The above copyright notice and this permission notice shall be included in all
45144 * copies or substantial portions of the Software.
45145 *
45146 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
45147 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
45148 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
45149 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
45150 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
45151 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
45152 * SOFTWARE.
45153 */
45154var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';
45155
45156var timeoutDuration = function () {
45157  var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
45158
45159  for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
45160    if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
45161      return 1;
45162    }
45163  }
45164
45165  return 0;
45166}();
45167
45168function microtaskDebounce(fn) {
45169  var called = false;
45170  return function () {
45171    if (called) {
45172      return;
45173    }
45174
45175    called = true;
45176    window.Promise.resolve().then(function () {
45177      called = false;
45178      fn();
45179    });
45180  };
45181}
45182
45183function taskDebounce(fn) {
45184  var scheduled = false;
45185  return function () {
45186    if (!scheduled) {
45187      scheduled = true;
45188      setTimeout(function () {
45189        scheduled = false;
45190        fn();
45191      }, timeoutDuration);
45192    }
45193  };
45194}
45195
45196var supportsMicroTasks = isBrowser && window.Promise;
45197/**
45198* Create a debounced version of a method, that's asynchronously deferred
45199* but called in the minimum time possible.
45200*
45201* @method
45202* @memberof Popper.Utils
45203* @argument {Function} fn
45204* @returns {Function}
45205*/
45206
45207var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;
45208/**
45209 * Check if the given variable is a function
45210 * @method
45211 * @memberof Popper.Utils
45212 * @argument {Any} functionToCheck - variable to check
45213 * @returns {Boolean} answer to: is a function?
45214 */
45215
45216function isFunction(functionToCheck) {
45217  var getType = {};
45218  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';
45219}
45220/**
45221 * Get CSS computed property of the given element
45222 * @method
45223 * @memberof Popper.Utils
45224 * @argument {Eement} element
45225 * @argument {String} property
45226 */
45227
45228
45229function getStyleComputedProperty(element, property) {
45230  if (element.nodeType !== 1) {
45231    return [];
45232  } // NOTE: 1 DOM access here
45233
45234
45235  var window = element.ownerDocument.defaultView;
45236  var css = window.getComputedStyle(element, null);
45237  return property ? css[property] : css;
45238}
45239/**
45240 * Returns the parentNode or the host of the element
45241 * @method
45242 * @memberof Popper.Utils
45243 * @argument {Element} element
45244 * @returns {Element} parent
45245 */
45246
45247
45248function getParentNode(element) {
45249  if (element.nodeName === 'HTML') {
45250    return element;
45251  }
45252
45253  return element.parentNode || element.host;
45254}
45255/**
45256 * Returns the scrolling parent of the given element
45257 * @method
45258 * @memberof Popper.Utils
45259 * @argument {Element} element
45260 * @returns {Element} scroll parent
45261 */
45262
45263
45264function getScrollParent(element) {
45265  // Return body, `getScroll` will take care to get the correct `scrollTop` from it
45266  if (!element) {
45267    return document.body;
45268  }
45269
45270  switch (element.nodeName) {
45271    case 'HTML':
45272    case 'BODY':
45273      return element.ownerDocument.body;
45274
45275    case '#document':
45276      return element.body;
45277  } // Firefox want us to check `-x` and `-y` variations as well
45278
45279
45280  var _getStyleComputedProp = getStyleComputedProperty(element),
45281      overflow = _getStyleComputedProp.overflow,
45282      overflowX = _getStyleComputedProp.overflowX,
45283      overflowY = _getStyleComputedProp.overflowY;
45284
45285  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
45286    return element;
45287  }
45288
45289  return getScrollParent(getParentNode(element));
45290}
45291/**
45292 * Returns the reference node of the reference object, or the reference object itself.
45293 * @method
45294 * @memberof Popper.Utils
45295 * @param {Element|Object} reference - the reference element (the popper will be relative to this)
45296 * @returns {Element} parent
45297 */
45298
45299
45300function getReferenceNode(reference) {
45301  return reference && reference.referenceNode ? reference.referenceNode : reference;
45302}
45303
45304var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);
45305var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);
45306/**
45307 * Determines if the browser is Internet Explorer
45308 * @method
45309 * @memberof Popper.Utils
45310 * @param {Number} version to check
45311 * @returns {Boolean} isIE
45312 */
45313
45314function isIE(version) {
45315  if (version === 11) {
45316    return isIE11;
45317  }
45318
45319  if (version === 10) {
45320    return isIE10;
45321  }
45322
45323  return isIE11 || isIE10;
45324}
45325/**
45326 * Returns the offset parent of the given element
45327 * @method
45328 * @memberof Popper.Utils
45329 * @argument {Element} element
45330 * @returns {Element} offset parent
45331 */
45332
45333
45334function getOffsetParent(element) {
45335  if (!element) {
45336    return document.documentElement;
45337  }
45338
45339  var noOffsetParent = isIE(10) ? document.body : null; // NOTE: 1 DOM access here
45340
45341  var offsetParent = element.offsetParent || null; // Skip hidden elements which don't have an offsetParent
45342
45343  while (offsetParent === noOffsetParent && element.nextElementSibling) {
45344    offsetParent = (element = element.nextElementSibling).offsetParent;
45345  }
45346
45347  var nodeName = offsetParent && offsetParent.nodeName;
45348
45349  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
45350    return element ? element.ownerDocument.documentElement : document.documentElement;
45351  } // .offsetParent will return the closest TH, TD or TABLE in case
45352  // no offsetParent is present, I hate this job...
45353
45354
45355  if (['TH', 'TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {
45356    return getOffsetParent(offsetParent);
45357  }
45358
45359  return offsetParent;
45360}
45361
45362function isOffsetContainer(element) {
45363  var nodeName = element.nodeName;
45364
45365  if (nodeName === 'BODY') {
45366    return false;
45367  }
45368
45369  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;
45370}
45371/**
45372 * Finds the root node (document, shadowDOM root) of the given element
45373 * @method
45374 * @memberof Popper.Utils
45375 * @argument {Element} node
45376 * @returns {Element} root node
45377 */
45378
45379
45380function getRoot(node) {
45381  if (node.parentNode !== null) {
45382    return getRoot(node.parentNode);
45383  }
45384
45385  return node;
45386}
45387/**
45388 * Finds the offset parent common to the two provided nodes
45389 * @method
45390 * @memberof Popper.Utils
45391 * @argument {Element} element1
45392 * @argument {Element} element2
45393 * @returns {Element} common offset parent
45394 */
45395
45396
45397function findCommonOffsetParent(element1, element2) {
45398  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
45399  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
45400    return document.documentElement;
45401  } // Here we make sure to give as "start" the element that comes first in the DOM
45402
45403
45404  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
45405  var start = order ? element1 : element2;
45406  var end = order ? element2 : element1; // Get common ancestor container
45407
45408  var range = document.createRange();
45409  range.setStart(start, 0);
45410  range.setEnd(end, 0);
45411  var commonAncestorContainer = range.commonAncestorContainer; // Both nodes are inside #document
45412
45413  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
45414    if (isOffsetContainer(commonAncestorContainer)) {
45415      return commonAncestorContainer;
45416    }
45417
45418    return getOffsetParent(commonAncestorContainer);
45419  } // one of the nodes is inside shadowDOM, find which one
45420
45421
45422  var element1root = getRoot(element1);
45423
45424  if (element1root.host) {
45425    return findCommonOffsetParent(element1root.host, element2);
45426  } else {
45427    return findCommonOffsetParent(element1, getRoot(element2).host);
45428  }
45429}
45430/**
45431 * Gets the scroll value of the given element in the given side (top and left)
45432 * @method
45433 * @memberof Popper.Utils
45434 * @argument {Element} element
45435 * @argument {String} side `top` or `left`
45436 * @returns {number} amount of scrolled pixels
45437 */
45438
45439
45440function getScroll(element) {
45441  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';
45442  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
45443  var nodeName = element.nodeName;
45444
45445  if (nodeName === 'BODY' || nodeName === 'HTML') {
45446    var html = element.ownerDocument.documentElement;
45447    var scrollingElement = element.ownerDocument.scrollingElement || html;
45448    return scrollingElement[upperSide];
45449  }
45450
45451  return element[upperSide];
45452}
45453/*
45454 * Sum or subtract the element scroll values (left and top) from a given rect object
45455 * @method
45456 * @memberof Popper.Utils
45457 * @param {Object} rect - Rect object you want to change
45458 * @param {HTMLElement} element - The element from the function reads the scroll values
45459 * @param {Boolean} subtract - set to true if you want to subtract the scroll values
45460 * @return {Object} rect - The modifier rect object
45461 */
45462
45463
45464function includeScroll(rect, element) {
45465  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
45466  var scrollTop = getScroll(element, 'top');
45467  var scrollLeft = getScroll(element, 'left');
45468  var modifier = subtract ? -1 : 1;
45469  rect.top += scrollTop * modifier;
45470  rect.bottom += scrollTop * modifier;
45471  rect.left += scrollLeft * modifier;
45472  rect.right += scrollLeft * modifier;
45473  return rect;
45474}
45475/*
45476 * Helper to detect borders of a given element
45477 * @method
45478 * @memberof Popper.Utils
45479 * @param {CSSStyleDeclaration} styles
45480 * Result of `getStyleComputedProperty` on the given element
45481 * @param {String} axis - `x` or `y`
45482 * @return {number} borders - The borders size of the given axis
45483 */
45484
45485
45486function getBordersSize(styles, axis) {
45487  var sideA = axis === 'x' ? 'Left' : 'Top';
45488  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';
45489  return parseFloat(styles['border' + sideA + 'Width']) + parseFloat(styles['border' + sideB + 'Width']);
45490}
45491
45492function getSize(axis, body, html, computedStyle) {
45493  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? parseInt(html['offset' + axis]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')]) + parseInt(computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')]) : 0);
45494}
45495
45496function getWindowSizes(document) {
45497  var body = document.body;
45498  var html = document.documentElement;
45499  var computedStyle = isIE(10) && getComputedStyle(html);
45500  return {
45501    height: getSize('Height', body, html, computedStyle),
45502    width: getSize('Width', body, html, computedStyle)
45503  };
45504}
45505
45506var classCallCheck = function classCallCheck(instance, Constructor) {
45507  if (!(instance instanceof Constructor)) {
45508    throw new TypeError("Cannot call a class as a function");
45509  }
45510};
45511
45512var createClass = function () {
45513  function defineProperties(target, props) {
45514    for (var i = 0; i < props.length; i++) {
45515      var descriptor = props[i];
45516      descriptor.enumerable = descriptor.enumerable || false;
45517      descriptor.configurable = true;
45518      if ("value" in descriptor) descriptor.writable = true;
45519      Object.defineProperty(target, descriptor.key, descriptor);
45520    }
45521  }
45522
45523  return function (Constructor, protoProps, staticProps) {
45524    if (protoProps) defineProperties(Constructor.prototype, protoProps);
45525    if (staticProps) defineProperties(Constructor, staticProps);
45526    return Constructor;
45527  };
45528}();
45529
45530var defineProperty = function defineProperty(obj, key, value) {
45531  if (key in obj) {
45532    Object.defineProperty(obj, key, {
45533      value: value,
45534      enumerable: true,
45535      configurable: true,
45536      writable: true
45537    });
45538  } else {
45539    obj[key] = value;
45540  }
45541
45542  return obj;
45543};
45544
45545var _extends = Object.assign || function (target) {
45546  for (var i = 1; i < arguments.length; i++) {
45547    var source = arguments[i];
45548
45549    for (var key in source) {
45550      if (Object.prototype.hasOwnProperty.call(source, key)) {
45551        target[key] = source[key];
45552      }
45553    }
45554  }
45555
45556  return target;
45557};
45558/**
45559 * Given element offsets, generate an output similar to getBoundingClientRect
45560 * @method
45561 * @memberof Popper.Utils
45562 * @argument {Object} offsets
45563 * @returns {Object} ClientRect like output
45564 */
45565
45566
45567function getClientRect(offsets) {
45568  return _extends({}, offsets, {
45569    right: offsets.left + offsets.width,
45570    bottom: offsets.top + offsets.height
45571  });
45572}
45573/**
45574 * Get bounding client rect of given element
45575 * @method
45576 * @memberof Popper.Utils
45577 * @param {HTMLElement} element
45578 * @return {Object} client rect
45579 */
45580
45581
45582function getBoundingClientRect(element) {
45583  var rect = {}; // IE10 10 FIX: Please, don't ask, the element isn't
45584  // considered in DOM in some circumstances...
45585  // This isn't reproducible in IE10 compatibility mode of IE11
45586
45587  try {
45588    if (isIE(10)) {
45589      rect = element.getBoundingClientRect();
45590      var scrollTop = getScroll(element, 'top');
45591      var scrollLeft = getScroll(element, 'left');
45592      rect.top += scrollTop;
45593      rect.left += scrollLeft;
45594      rect.bottom += scrollTop;
45595      rect.right += scrollLeft;
45596    } else {
45597      rect = element.getBoundingClientRect();
45598    }
45599  } catch (e) {}
45600
45601  var result = {
45602    left: rect.left,
45603    top: rect.top,
45604    width: rect.right - rect.left,
45605    height: rect.bottom - rect.top
45606  }; // subtract scrollbar size from sizes
45607
45608  var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};
45609  var width = sizes.width || element.clientWidth || result.width;
45610  var height = sizes.height || element.clientHeight || result.height;
45611  var horizScrollbar = element.offsetWidth - width;
45612  var vertScrollbar = element.offsetHeight - height; // if an hypothetical scrollbar is detected, we must be sure it's not a `border`
45613  // we make this check conditional for performance reasons
45614
45615  if (horizScrollbar || vertScrollbar) {
45616    var styles = getStyleComputedProperty(element);
45617    horizScrollbar -= getBordersSize(styles, 'x');
45618    vertScrollbar -= getBordersSize(styles, 'y');
45619    result.width -= horizScrollbar;
45620    result.height -= vertScrollbar;
45621  }
45622
45623  return getClientRect(result);
45624}
45625
45626function getOffsetRectRelativeToArbitraryNode(children, parent) {
45627  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
45628  var isIE10 = isIE(10);
45629  var isHTML = parent.nodeName === 'HTML';
45630  var childrenRect = getBoundingClientRect(children);
45631  var parentRect = getBoundingClientRect(parent);
45632  var scrollParent = getScrollParent(children);
45633  var styles = getStyleComputedProperty(parent);
45634  var borderTopWidth = parseFloat(styles.borderTopWidth);
45635  var borderLeftWidth = parseFloat(styles.borderLeftWidth); // In cases where the parent is fixed, we must ignore negative scroll in offset calc
45636
45637  if (fixedPosition && isHTML) {
45638    parentRect.top = Math.max(parentRect.top, 0);
45639    parentRect.left = Math.max(parentRect.left, 0);
45640  }
45641
45642  var offsets = getClientRect({
45643    top: childrenRect.top - parentRect.top - borderTopWidth,
45644    left: childrenRect.left - parentRect.left - borderLeftWidth,
45645    width: childrenRect.width,
45646    height: childrenRect.height
45647  });
45648  offsets.marginTop = 0;
45649  offsets.marginLeft = 0; // Subtract margins of documentElement in case it's being used as parent
45650  // we do this only on HTML because it's the only element that behaves
45651  // differently when margins are applied to it. The margins are included in
45652  // the box of the documentElement, in the other cases not.
45653
45654  if (!isIE10 && isHTML) {
45655    var marginTop = parseFloat(styles.marginTop);
45656    var marginLeft = parseFloat(styles.marginLeft);
45657    offsets.top -= borderTopWidth - marginTop;
45658    offsets.bottom -= borderTopWidth - marginTop;
45659    offsets.left -= borderLeftWidth - marginLeft;
45660    offsets.right -= borderLeftWidth - marginLeft; // Attach marginTop and marginLeft because in some circumstances we may need them
45661
45662    offsets.marginTop = marginTop;
45663    offsets.marginLeft = marginLeft;
45664  }
45665
45666  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {
45667    offsets = includeScroll(offsets, parent);
45668  }
45669
45670  return offsets;
45671}
45672
45673function getViewportOffsetRectRelativeToArtbitraryNode(element) {
45674  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
45675  var html = element.ownerDocument.documentElement;
45676  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
45677  var width = Math.max(html.clientWidth, window.innerWidth || 0);
45678  var height = Math.max(html.clientHeight, window.innerHeight || 0);
45679  var scrollTop = !excludeScroll ? getScroll(html) : 0;
45680  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;
45681  var offset = {
45682    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
45683    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
45684    width: width,
45685    height: height
45686  };
45687  return getClientRect(offset);
45688}
45689/**
45690 * Check if the given element is fixed or is inside a fixed parent
45691 * @method
45692 * @memberof Popper.Utils
45693 * @argument {Element} element
45694 * @argument {Element} customContainer
45695 * @returns {Boolean} answer to "isFixed?"
45696 */
45697
45698
45699function isFixed(element) {
45700  var nodeName = element.nodeName;
45701
45702  if (nodeName === 'BODY' || nodeName === 'HTML') {
45703    return false;
45704  }
45705
45706  if (getStyleComputedProperty(element, 'position') === 'fixed') {
45707    return true;
45708  }
45709
45710  var parentNode = getParentNode(element);
45711
45712  if (!parentNode) {
45713    return false;
45714  }
45715
45716  return isFixed(parentNode);
45717}
45718/**
45719 * Finds the first parent of an element that has a transformed property defined
45720 * @method
45721 * @memberof Popper.Utils
45722 * @argument {Element} element
45723 * @returns {Element} first transformed parent or documentElement
45724 */
45725
45726
45727function getFixedPositionOffsetParent(element) {
45728  // This check is needed to avoid errors in case one of the elements isn't defined for any reason
45729  if (!element || !element.parentElement || isIE()) {
45730    return document.documentElement;
45731  }
45732
45733  var el = element.parentElement;
45734
45735  while (el && getStyleComputedProperty(el, 'transform') === 'none') {
45736    el = el.parentElement;
45737  }
45738
45739  return el || document.documentElement;
45740}
45741/**
45742 * Computed the boundaries limits and return them
45743 * @method
45744 * @memberof Popper.Utils
45745 * @param {HTMLElement} popper
45746 * @param {HTMLElement} reference
45747 * @param {number} padding
45748 * @param {HTMLElement} boundariesElement - Element used to define the boundaries
45749 * @param {Boolean} fixedPosition - Is in fixed position mode
45750 * @returns {Object} Coordinates of the boundaries
45751 */
45752
45753
45754function getBoundaries(popper, reference, padding, boundariesElement) {
45755  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false; // NOTE: 1 DOM access here
45756
45757  var boundaries = {
45758    top: 0,
45759    left: 0
45760  };
45761  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference)); // Handle viewport case
45762
45763  if (boundariesElement === 'viewport') {
45764    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);
45765  } else {
45766    // Handle other cases based on DOM element used as boundaries
45767    var boundariesNode = void 0;
45768
45769    if (boundariesElement === 'scrollParent') {
45770      boundariesNode = getScrollParent(getParentNode(reference));
45771
45772      if (boundariesNode.nodeName === 'BODY') {
45773        boundariesNode = popper.ownerDocument.documentElement;
45774      }
45775    } else if (boundariesElement === 'window') {
45776      boundariesNode = popper.ownerDocument.documentElement;
45777    } else {
45778      boundariesNode = boundariesElement;
45779    }
45780
45781    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition); // In case of HTML, we need a different computation
45782
45783    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {
45784      var _getWindowSizes = getWindowSizes(popper.ownerDocument),
45785          height = _getWindowSizes.height,
45786          width = _getWindowSizes.width;
45787
45788      boundaries.top += offsets.top - offsets.marginTop;
45789      boundaries.bottom = height + offsets.top;
45790      boundaries.left += offsets.left - offsets.marginLeft;
45791      boundaries.right = width + offsets.left;
45792    } else {
45793      // for all the other DOM elements, this one is good
45794      boundaries = offsets;
45795    }
45796  } // Add paddings
45797
45798
45799  padding = padding || 0;
45800  var isPaddingNumber = typeof padding === 'number';
45801  boundaries.left += isPaddingNumber ? padding : padding.left || 0;
45802  boundaries.top += isPaddingNumber ? padding : padding.top || 0;
45803  boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
45804  boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;
45805  return boundaries;
45806}
45807
45808function getArea(_ref) {
45809  var width = _ref.width,
45810      height = _ref.height;
45811  return width * height;
45812}
45813/**
45814 * Utility used to transform the `auto` placement to the placement with more
45815 * available space.
45816 * @method
45817 * @memberof Popper.Utils
45818 * @argument {Object} data - The data object generated by update method
45819 * @argument {Object} options - Modifiers configuration and options
45820 * @returns {Object} The data object, properly modified
45821 */
45822
45823
45824function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
45825  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;
45826
45827  if (placement.indexOf('auto') === -1) {
45828    return placement;
45829  }
45830
45831  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);
45832  var rects = {
45833    top: {
45834      width: boundaries.width,
45835      height: refRect.top - boundaries.top
45836    },
45837    right: {
45838      width: boundaries.right - refRect.right,
45839      height: boundaries.height
45840    },
45841    bottom: {
45842      width: boundaries.width,
45843      height: boundaries.bottom - refRect.bottom
45844    },
45845    left: {
45846      width: refRect.left - boundaries.left,
45847      height: boundaries.height
45848    }
45849  };
45850  var sortedAreas = Object.keys(rects).map(function (key) {
45851    return _extends({
45852      key: key
45853    }, rects[key], {
45854      area: getArea(rects[key])
45855    });
45856  }).sort(function (a, b) {
45857    return b.area - a.area;
45858  });
45859  var filteredAreas = sortedAreas.filter(function (_ref2) {
45860    var width = _ref2.width,
45861        height = _ref2.height;
45862    return width >= popper.clientWidth && height >= popper.clientHeight;
45863  });
45864  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;
45865  var variation = placement.split('-')[1];
45866  return computedPlacement + (variation ? '-' + variation : '');
45867}
45868/**
45869 * Get offsets to the reference element
45870 * @method
45871 * @memberof Popper.Utils
45872 * @param {Object} state
45873 * @param {Element} popper - the popper element
45874 * @param {Element} reference - the reference element (the popper will be relative to this)
45875 * @param {Element} fixedPosition - is in fixed position mode
45876 * @returns {Object} An object containing the offsets which will be applied to the popper
45877 */
45878
45879
45880function getReferenceOffsets(state, popper, reference) {
45881  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
45882  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
45883  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);
45884}
45885/**
45886 * Get the outer sizes of the given element (offset size + margins)
45887 * @method
45888 * @memberof Popper.Utils
45889 * @argument {Element} element
45890 * @returns {Object} object containing width and height properties
45891 */
45892
45893
45894function getOuterSizes(element) {
45895  var window = element.ownerDocument.defaultView;
45896  var styles = window.getComputedStyle(element);
45897  var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);
45898  var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);
45899  var result = {
45900    width: element.offsetWidth + y,
45901    height: element.offsetHeight + x
45902  };
45903  return result;
45904}
45905/**
45906 * Get the opposite placement of the given one
45907 * @method
45908 * @memberof Popper.Utils
45909 * @argument {String} placement
45910 * @returns {String} flipped placement
45911 */
45912
45913
45914function getOppositePlacement(placement) {
45915  var hash = {
45916    left: 'right',
45917    right: 'left',
45918    bottom: 'top',
45919    top: 'bottom'
45920  };
45921  return placement.replace(/left|right|bottom|top/g, function (matched) {
45922    return hash[matched];
45923  });
45924}
45925/**
45926 * Get offsets to the popper
45927 * @method
45928 * @memberof Popper.Utils
45929 * @param {Object} position - CSS position the Popper will get applied
45930 * @param {HTMLElement} popper - the popper element
45931 * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)
45932 * @param {String} placement - one of the valid placement options
45933 * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper
45934 */
45935
45936
45937function getPopperOffsets(popper, referenceOffsets, placement) {
45938  placement = placement.split('-')[0]; // Get popper node sizes
45939
45940  var popperRect = getOuterSizes(popper); // Add position, width and height to our offsets object
45941
45942  var popperOffsets = {
45943    width: popperRect.width,
45944    height: popperRect.height
45945  }; // depending by the popper placement we have to compute its offsets slightly differently
45946
45947  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;
45948  var mainSide = isHoriz ? 'top' : 'left';
45949  var secondarySide = isHoriz ? 'left' : 'top';
45950  var measurement = isHoriz ? 'height' : 'width';
45951  var secondaryMeasurement = !isHoriz ? 'height' : 'width';
45952  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
45953
45954  if (placement === secondarySide) {
45955    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
45956  } else {
45957    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
45958  }
45959
45960  return popperOffsets;
45961}
45962/**
45963 * Mimics the `find` method of Array
45964 * @method
45965 * @memberof Popper.Utils
45966 * @argument {Array} arr
45967 * @argument prop
45968 * @argument value
45969 * @returns index or -1
45970 */
45971
45972
45973function find(arr, check) {
45974  // use native find if supported
45975  if (Array.prototype.find) {
45976    return arr.find(check);
45977  } // use `filter` to obtain the same behavior of `find`
45978
45979
45980  return arr.filter(check)[0];
45981}
45982/**
45983 * Return the index of the matching object
45984 * @method
45985 * @memberof Popper.Utils
45986 * @argument {Array} arr
45987 * @argument prop
45988 * @argument value
45989 * @returns index or -1
45990 */
45991
45992
45993function findIndex(arr, prop, value) {
45994  // use native findIndex if supported
45995  if (Array.prototype.findIndex) {
45996    return arr.findIndex(function (cur) {
45997      return cur[prop] === value;
45998    });
45999  } // use `find` + `indexOf` if `findIndex` isn't supported
46000
46001
46002  var match = find(arr, function (obj) {
46003    return obj[prop] === value;
46004  });
46005  return arr.indexOf(match);
46006}
46007/**
46008 * Loop trough the list of modifiers and run them in order,
46009 * each of them will then edit the data object.
46010 * @method
46011 * @memberof Popper.Utils
46012 * @param {dataObject} data
46013 * @param {Array} modifiers
46014 * @param {String} ends - Optional modifier name used as stopper
46015 * @returns {dataObject}
46016 */
46017
46018
46019function runModifiers(modifiers, data, ends) {
46020  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));
46021  modifiersToRun.forEach(function (modifier) {
46022    if (modifier['function']) {
46023      // eslint-disable-line dot-notation
46024      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
46025    }
46026
46027    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation
46028
46029    if (modifier.enabled && isFunction(fn)) {
46030      // Add properties to offsets to make them a complete clientRect object
46031      // we do this before each modifier to make sure the previous one doesn't
46032      // mess with these values
46033      data.offsets.popper = getClientRect(data.offsets.popper);
46034      data.offsets.reference = getClientRect(data.offsets.reference);
46035      data = fn(data, modifier);
46036    }
46037  });
46038  return data;
46039}
46040/**
46041 * Updates the position of the popper, computing the new offsets and applying
46042 * the new style.<br />
46043 * Prefer `scheduleUpdate` over `update` because of performance reasons.
46044 * @method
46045 * @memberof Popper
46046 */
46047
46048
46049function update() {
46050  // if popper is destroyed, don't perform any further update
46051  if (this.state.isDestroyed) {
46052    return;
46053  }
46054
46055  var data = {
46056    instance: this,
46057    styles: {},
46058    arrowStyles: {},
46059    attributes: {},
46060    flipped: false,
46061    offsets: {}
46062  }; // compute reference element offsets
46063
46064  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed); // compute auto placement, store placement inside the data object,
46065  // modifiers will be able to edit `placement` if needed
46066  // and refer to originalPlacement to know the original value
46067
46068  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding); // store the computed placement inside `originalPlacement`
46069
46070  data.originalPlacement = data.placement;
46071  data.positionFixed = this.options.positionFixed; // compute the popper offsets
46072
46073  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);
46074  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute'; // run the modifiers
46075
46076  data = runModifiers(this.modifiers, data); // the first `update` will call `onCreate` callback
46077  // the other ones will call `onUpdate` callback
46078
46079  if (!this.state.isCreated) {
46080    this.state.isCreated = true;
46081    this.options.onCreate(data);
46082  } else {
46083    this.options.onUpdate(data);
46084  }
46085}
46086/**
46087 * Helper used to know if the given modifier is enabled.
46088 * @method
46089 * @memberof Popper.Utils
46090 * @returns {Boolean}
46091 */
46092
46093
46094function isModifierEnabled(modifiers, modifierName) {
46095  return modifiers.some(function (_ref) {
46096    var name = _ref.name,
46097        enabled = _ref.enabled;
46098    return enabled && name === modifierName;
46099  });
46100}
46101/**
46102 * Get the prefixed supported property name
46103 * @method
46104 * @memberof Popper.Utils
46105 * @argument {String} property (camelCase)
46106 * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)
46107 */
46108
46109
46110function getSupportedPropertyName(property) {
46111  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];
46112  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
46113
46114  for (var i = 0; i < prefixes.length; i++) {
46115    var prefix = prefixes[i];
46116    var toCheck = prefix ? '' + prefix + upperProp : property;
46117
46118    if (typeof document.body.style[toCheck] !== 'undefined') {
46119      return toCheck;
46120    }
46121  }
46122
46123  return null;
46124}
46125/**
46126 * Destroys the popper.
46127 * @method
46128 * @memberof Popper
46129 */
46130
46131
46132function destroy() {
46133  this.state.isDestroyed = true; // touch DOM only if `applyStyle` modifier is enabled
46134
46135  if (isModifierEnabled(this.modifiers, 'applyStyle')) {
46136    this.popper.removeAttribute('x-placement');
46137    this.popper.style.position = '';
46138    this.popper.style.top = '';
46139    this.popper.style.left = '';
46140    this.popper.style.right = '';
46141    this.popper.style.bottom = '';
46142    this.popper.style.willChange = '';
46143    this.popper.style[getSupportedPropertyName('transform')] = '';
46144  }
46145
46146  this.disableEventListeners(); // remove the popper if user explicitly asked for the deletion on destroy
46147  // do not use `remove` because IE11 doesn't support it
46148
46149  if (this.options.removeOnDestroy) {
46150    this.popper.parentNode.removeChild(this.popper);
46151  }
46152
46153  return this;
46154}
46155/**
46156 * Get the window associated with the element
46157 * @argument {Element} element
46158 * @returns {Window}
46159 */
46160
46161
46162function getWindow(element) {
46163  var ownerDocument = element.ownerDocument;
46164  return ownerDocument ? ownerDocument.defaultView : window;
46165}
46166
46167function attachToScrollParents(scrollParent, event, callback, scrollParents) {
46168  var isBody = scrollParent.nodeName === 'BODY';
46169  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
46170  target.addEventListener(event, callback, {
46171    passive: true
46172  });
46173
46174  if (!isBody) {
46175    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
46176  }
46177
46178  scrollParents.push(target);
46179}
46180/**
46181 * Setup needed event listeners used to update the popper position
46182 * @method
46183 * @memberof Popper.Utils
46184 * @private
46185 */
46186
46187
46188function setupEventListeners(reference, options, state, updateBound) {
46189  // Resize event listener on window
46190  state.updateBound = updateBound;
46191  getWindow(reference).addEventListener('resize', state.updateBound, {
46192    passive: true
46193  }); // Scroll event listener on scroll parents
46194
46195  var scrollElement = getScrollParent(reference);
46196  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);
46197  state.scrollElement = scrollElement;
46198  state.eventsEnabled = true;
46199  return state;
46200}
46201/**
46202 * It will add resize/scroll events and start recalculating
46203 * position of the popper element when they are triggered.
46204 * @method
46205 * @memberof Popper
46206 */
46207
46208
46209function enableEventListeners() {
46210  if (!this.state.eventsEnabled) {
46211    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
46212  }
46213}
46214/**
46215 * Remove event listeners used to update the popper position
46216 * @method
46217 * @memberof Popper.Utils
46218 * @private
46219 */
46220
46221
46222function removeEventListeners(reference, state) {
46223  // Remove resize event listener on window
46224  getWindow(reference).removeEventListener('resize', state.updateBound); // Remove scroll event listener on scroll parents
46225
46226  state.scrollParents.forEach(function (target) {
46227    target.removeEventListener('scroll', state.updateBound);
46228  }); // Reset state
46229
46230  state.updateBound = null;
46231  state.scrollParents = [];
46232  state.scrollElement = null;
46233  state.eventsEnabled = false;
46234  return state;
46235}
46236/**
46237 * It will remove resize/scroll events and won't recalculate popper position
46238 * when they are triggered. It also won't trigger `onUpdate` callback anymore,
46239 * unless you call `update` method manually.
46240 * @method
46241 * @memberof Popper
46242 */
46243
46244
46245function disableEventListeners() {
46246  if (this.state.eventsEnabled) {
46247    cancelAnimationFrame(this.scheduleUpdate);
46248    this.state = removeEventListeners(this.reference, this.state);
46249  }
46250}
46251/**
46252 * Tells if a given input is a number
46253 * @method
46254 * @memberof Popper.Utils
46255 * @param {*} input to check
46256 * @return {Boolean}
46257 */
46258
46259
46260function isNumeric(n) {
46261  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);
46262}
46263/**
46264 * Set the style to the given popper
46265 * @method
46266 * @memberof Popper.Utils
46267 * @argument {Element} element - Element to apply the style to
46268 * @argument {Object} styles
46269 * Object with a list of properties and values which will be applied to the element
46270 */
46271
46272
46273function setStyles(element, styles) {
46274  Object.keys(styles).forEach(function (prop) {
46275    var unit = ''; // add unit if the value is numeric and is one of the following
46276
46277    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
46278      unit = 'px';
46279    }
46280
46281    element.style[prop] = styles[prop] + unit;
46282  });
46283}
46284/**
46285 * Set the attributes to the given popper
46286 * @method
46287 * @memberof Popper.Utils
46288 * @argument {Element} element - Element to apply the attributes to
46289 * @argument {Object} styles
46290 * Object with a list of properties and values which will be applied to the element
46291 */
46292
46293
46294function setAttributes(element, attributes) {
46295  Object.keys(attributes).forEach(function (prop) {
46296    var value = attributes[prop];
46297
46298    if (value !== false) {
46299      element.setAttribute(prop, attributes[prop]);
46300    } else {
46301      element.removeAttribute(prop);
46302    }
46303  });
46304}
46305/**
46306 * @function
46307 * @memberof Modifiers
46308 * @argument {Object} data - The data object generated by `update` method
46309 * @argument {Object} data.styles - List of style properties - values to apply to popper element
46310 * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element
46311 * @argument {Object} options - Modifiers configuration and options
46312 * @returns {Object} The same data object
46313 */
46314
46315
46316function applyStyle(data) {
46317  // any property present in `data.styles` will be applied to the popper,
46318  // in this way we can make the 3rd party modifiers add custom styles to it
46319  // Be aware, modifiers could override the properties defined in the previous
46320  // lines of this modifier!
46321  setStyles(data.instance.popper, data.styles); // any property present in `data.attributes` will be applied to the popper,
46322  // they will be set as HTML attributes of the element
46323
46324  setAttributes(data.instance.popper, data.attributes); // if arrowElement is defined and arrowStyles has some properties
46325
46326  if (data.arrowElement && Object.keys(data.arrowStyles).length) {
46327    setStyles(data.arrowElement, data.arrowStyles);
46328  }
46329
46330  return data;
46331}
46332/**
46333 * Set the x-placement attribute before everything else because it could be used
46334 * to add margins to the popper margins needs to be calculated to get the
46335 * correct popper offsets.
46336 * @method
46337 * @memberof Popper.modifiers
46338 * @param {HTMLElement} reference - The reference element used to position the popper
46339 * @param {HTMLElement} popper - The HTML element used as popper
46340 * @param {Object} options - Popper.js options
46341 */
46342
46343
46344function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
46345  // compute reference element offsets
46346  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed); // compute auto placement, store placement inside the data object,
46347  // modifiers will be able to edit `placement` if needed
46348  // and refer to originalPlacement to know the original value
46349
46350  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);
46351  popper.setAttribute('x-placement', placement); // Apply `position` to popper before anything else because
46352  // without the position applied we can't guarantee correct computations
46353
46354  setStyles(popper, {
46355    position: options.positionFixed ? 'fixed' : 'absolute'
46356  });
46357  return options;
46358}
46359/**
46360 * @function
46361 * @memberof Popper.Utils
46362 * @argument {Object} data - The data object generated by `update` method
46363 * @argument {Boolean} shouldRound - If the offsets should be rounded at all
46364 * @returns {Object} The popper's position offsets rounded
46365 *
46366 * The tale of pixel-perfect positioning. It's still not 100% perfect, but as
46367 * good as it can be within reason.
46368 * Discussion here: https://github.com/FezVrasta/popper.js/pull/715
46369 *
46370 * Low DPI screens cause a popper to be blurry if not using full pixels (Safari
46371 * as well on High DPI screens).
46372 *
46373 * Firefox prefers no rounding for positioning and does not have blurriness on
46374 * high DPI screens.
46375 *
46376 * Only horizontal placement and left/right values need to be considered.
46377 */
46378
46379
46380function getRoundedOffsets(data, shouldRound) {
46381  var _data$offsets = data.offsets,
46382      popper = _data$offsets.popper,
46383      reference = _data$offsets.reference;
46384  var round = Math.round,
46385      floor = Math.floor;
46386
46387  var noRound = function noRound(v) {
46388    return v;
46389  };
46390
46391  var referenceWidth = round(reference.width);
46392  var popperWidth = round(popper.width);
46393  var isVertical = ['left', 'right'].indexOf(data.placement) !== -1;
46394  var isVariation = data.placement.indexOf('-') !== -1;
46395  var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
46396  var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;
46397  var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
46398  var verticalToInteger = !shouldRound ? noRound : round;
46399  return {
46400    left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
46401    top: verticalToInteger(popper.top),
46402    bottom: verticalToInteger(popper.bottom),
46403    right: horizontalToInteger(popper.right)
46404  };
46405}
46406
46407var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);
46408/**
46409 * @function
46410 * @memberof Modifiers
46411 * @argument {Object} data - The data object generated by `update` method
46412 * @argument {Object} options - Modifiers configuration and options
46413 * @returns {Object} The data object, properly modified
46414 */
46415
46416function computeStyle(data, options) {
46417  var x = options.x,
46418      y = options.y;
46419  var popper = data.offsets.popper; // Remove this legacy support in Popper.js v2
46420
46421  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {
46422    return modifier.name === 'applyStyle';
46423  }).gpuAcceleration;
46424
46425  if (legacyGpuAccelerationOption !== undefined) {
46426    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
46427  }
46428
46429  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;
46430  var offsetParent = getOffsetParent(data.instance.popper);
46431  var offsetParentRect = getBoundingClientRect(offsetParent); // Styles
46432
46433  var styles = {
46434    position: popper.position
46435  };
46436  var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);
46437  var sideA = x === 'bottom' ? 'top' : 'bottom';
46438  var sideB = y === 'right' ? 'left' : 'right'; // if gpuAcceleration is set to `true` and transform is supported,
46439  //  we use `translate3d` to apply the position to the popper we
46440  // automatically use the supported prefixed version if needed
46441
46442  var prefixedProperty = getSupportedPropertyName('transform'); // now, let's make a step back and look at this code closely (wtf?)
46443  // If the content of the popper grows once it's been positioned, it
46444  // may happen that the popper gets misplaced because of the new content
46445  // overflowing its reference element
46446  // To avoid this problem, we provide two options (x and y), which allow
46447  // the consumer to define the offset origin.
46448  // If we position a popper on top of a reference element, we can set
46449  // `x` to `top` to make the popper grow towards its top instead of
46450  // its bottom.
46451
46452  var left = void 0,
46453      top = void 0;
46454
46455  if (sideA === 'bottom') {
46456    // when offsetParent is <html> the positioning is relative to the bottom of the screen (excluding the scrollbar)
46457    // and not the bottom of the html element
46458    if (offsetParent.nodeName === 'HTML') {
46459      top = -offsetParent.clientHeight + offsets.bottom;
46460    } else {
46461      top = -offsetParentRect.height + offsets.bottom;
46462    }
46463  } else {
46464    top = offsets.top;
46465  }
46466
46467  if (sideB === 'right') {
46468    if (offsetParent.nodeName === 'HTML') {
46469      left = -offsetParent.clientWidth + offsets.right;
46470    } else {
46471      left = -offsetParentRect.width + offsets.right;
46472    }
46473  } else {
46474    left = offsets.left;
46475  }
46476
46477  if (gpuAcceleration && prefixedProperty) {
46478    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';
46479    styles[sideA] = 0;
46480    styles[sideB] = 0;
46481    styles.willChange = 'transform';
46482  } else {
46483    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties
46484    var invertTop = sideA === 'bottom' ? -1 : 1;
46485    var invertLeft = sideB === 'right' ? -1 : 1;
46486    styles[sideA] = top * invertTop;
46487    styles[sideB] = left * invertLeft;
46488    styles.willChange = sideA + ', ' + sideB;
46489  } // Attributes
46490
46491
46492  var attributes = {
46493    'x-placement': data.placement
46494  }; // Update `data` attributes, styles and arrowStyles
46495
46496  data.attributes = _extends({}, attributes, data.attributes);
46497  data.styles = _extends({}, styles, data.styles);
46498  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);
46499  return data;
46500}
46501/**
46502 * Helper used to know if the given modifier depends from another one.<br />
46503 * It checks if the needed modifier is listed and enabled.
46504 * @method
46505 * @memberof Popper.Utils
46506 * @param {Array} modifiers - list of modifiers
46507 * @param {String} requestingName - name of requesting modifier
46508 * @param {String} requestedName - name of requested modifier
46509 * @returns {Boolean}
46510 */
46511
46512
46513function isModifierRequired(modifiers, requestingName, requestedName) {
46514  var requesting = find(modifiers, function (_ref) {
46515    var name = _ref.name;
46516    return name === requestingName;
46517  });
46518  var isRequired = !!requesting && modifiers.some(function (modifier) {
46519    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
46520  });
46521
46522  if (!isRequired) {
46523    var _requesting = '`' + requestingName + '`';
46524
46525    var requested = '`' + requestedName + '`';
46526    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');
46527  }
46528
46529  return isRequired;
46530}
46531/**
46532 * @function
46533 * @memberof Modifiers
46534 * @argument {Object} data - The data object generated by update method
46535 * @argument {Object} options - Modifiers configuration and options
46536 * @returns {Object} The data object, properly modified
46537 */
46538
46539
46540function arrow(data, options) {
46541  var _data$offsets$arrow; // arrow depends on keepTogether in order to work
46542
46543
46544  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {
46545    return data;
46546  }
46547
46548  var arrowElement = options.element; // if arrowElement is a string, suppose it's a CSS selector
46549
46550  if (typeof arrowElement === 'string') {
46551    arrowElement = data.instance.popper.querySelector(arrowElement); // if arrowElement is not found, don't run the modifier
46552
46553    if (!arrowElement) {
46554      return data;
46555    }
46556  } else {
46557    // if the arrowElement isn't a query selector we must check that the
46558    // provided DOM node is child of its popper node
46559    if (!data.instance.popper.contains(arrowElement)) {
46560      console.warn('WARNING: `arrow.element` must be child of its popper element!');
46561      return data;
46562    }
46563  }
46564
46565  var placement = data.placement.split('-')[0];
46566  var _data$offsets = data.offsets,
46567      popper = _data$offsets.popper,
46568      reference = _data$offsets.reference;
46569  var isVertical = ['left', 'right'].indexOf(placement) !== -1;
46570  var len = isVertical ? 'height' : 'width';
46571  var sideCapitalized = isVertical ? 'Top' : 'Left';
46572  var side = sideCapitalized.toLowerCase();
46573  var altSide = isVertical ? 'left' : 'top';
46574  var opSide = isVertical ? 'bottom' : 'right';
46575  var arrowElementSize = getOuterSizes(arrowElement)[len]; //
46576  // extends keepTogether behavior making sure the popper and its
46577  // reference have enough pixels in conjunction
46578  //
46579  // top/left side
46580
46581  if (reference[opSide] - arrowElementSize < popper[side]) {
46582    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
46583  } // bottom/right side
46584
46585
46586  if (reference[side] + arrowElementSize > popper[opSide]) {
46587    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
46588  }
46589
46590  data.offsets.popper = getClientRect(data.offsets.popper); // compute center of the popper
46591
46592  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2; // Compute the sideValue using the updated popper offsets
46593  // take popper margin in account because we don't have this info available
46594
46595  var css = getStyleComputedProperty(data.instance.popper);
46596  var popperMarginSide = parseFloat(css['margin' + sideCapitalized]);
46597  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width']);
46598  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide; // prevent arrowElement from being placed not contiguously to its popper
46599
46600  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
46601  data.arrowElement = arrowElement;
46602  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);
46603  return data;
46604}
46605/**
46606 * Get the opposite placement variation of the given one
46607 * @method
46608 * @memberof Popper.Utils
46609 * @argument {String} placement variation
46610 * @returns {String} flipped placement variation
46611 */
46612
46613
46614function getOppositeVariation(variation) {
46615  if (variation === 'end') {
46616    return 'start';
46617  } else if (variation === 'start') {
46618    return 'end';
46619  }
46620
46621  return variation;
46622}
46623/**
46624 * List of accepted placements to use as values of the `placement` option.<br />
46625 * Valid placements are:
46626 * - `auto`
46627 * - `top`
46628 * - `right`
46629 * - `bottom`
46630 * - `left`
46631 *
46632 * Each placement can have a variation from this list:
46633 * - `-start`
46634 * - `-end`
46635 *
46636 * Variations are interpreted easily if you think of them as the left to right
46637 * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`
46638 * is right.<br />
46639 * Vertically (`left` and `right`), `start` is top and `end` is bottom.
46640 *
46641 * Some valid examples are:
46642 * - `top-end` (on top of reference, right aligned)
46643 * - `right-start` (on right of reference, top aligned)
46644 * - `bottom` (on bottom, centered)
46645 * - `auto-end` (on the side with more space available, alignment depends by placement)
46646 *
46647 * @static
46648 * @type {Array}
46649 * @enum {String}
46650 * @readonly
46651 * @method placements
46652 * @memberof Popper
46653 */
46654
46655
46656var placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start']; // Get rid of `auto` `auto-start` and `auto-end`
46657
46658var validPlacements = placements.slice(3);
46659/**
46660 * Given an initial placement, returns all the subsequent placements
46661 * clockwise (or counter-clockwise).
46662 *
46663 * @method
46664 * @memberof Popper.Utils
46665 * @argument {String} placement - A valid placement (it accepts variations)
46666 * @argument {Boolean} counter - Set to true to walk the placements counterclockwise
46667 * @returns {Array} placements including their variations
46668 */
46669
46670function clockwise(placement) {
46671  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
46672  var index = validPlacements.indexOf(placement);
46673  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
46674  return counter ? arr.reverse() : arr;
46675}
46676
46677var BEHAVIORS = {
46678  FLIP: 'flip',
46679  CLOCKWISE: 'clockwise',
46680  COUNTERCLOCKWISE: 'counterclockwise'
46681};
46682/**
46683 * @function
46684 * @memberof Modifiers
46685 * @argument {Object} data - The data object generated by update method
46686 * @argument {Object} options - Modifiers configuration and options
46687 * @returns {Object} The data object, properly modified
46688 */
46689
46690function flip(data, options) {
46691  // if `inner` modifier is enabled, we can't use the `flip` modifier
46692  if (isModifierEnabled(data.instance.modifiers, 'inner')) {
46693    return data;
46694  }
46695
46696  if (data.flipped && data.placement === data.originalPlacement) {
46697    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides
46698    return data;
46699  }
46700
46701  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);
46702  var placement = data.placement.split('-')[0];
46703  var placementOpposite = getOppositePlacement(placement);
46704  var variation = data.placement.split('-')[1] || '';
46705  var flipOrder = [];
46706
46707  switch (options.behavior) {
46708    case BEHAVIORS.FLIP:
46709      flipOrder = [placement, placementOpposite];
46710      break;
46711
46712    case BEHAVIORS.CLOCKWISE:
46713      flipOrder = clockwise(placement);
46714      break;
46715
46716    case BEHAVIORS.COUNTERCLOCKWISE:
46717      flipOrder = clockwise(placement, true);
46718      break;
46719
46720    default:
46721      flipOrder = options.behavior;
46722  }
46723
46724  flipOrder.forEach(function (step, index) {
46725    if (placement !== step || flipOrder.length === index + 1) {
46726      return data;
46727    }
46728
46729    placement = data.placement.split('-')[0];
46730    placementOpposite = getOppositePlacement(placement);
46731    var popperOffsets = data.offsets.popper;
46732    var refOffsets = data.offsets.reference; // using floor because the reference offsets may contain decimals we are not going to consider here
46733
46734    var floor = Math.floor;
46735    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);
46736    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
46737    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
46738    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
46739    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
46740    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom; // flip the variation if required
46741
46742    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1; // flips variation if reference element overflows boundaries
46743
46744    var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom); // flips variation if popper content overflows boundaries
46745
46746    var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === 'start' && overflowsRight || isVertical && variation === 'end' && overflowsLeft || !isVertical && variation === 'start' && overflowsBottom || !isVertical && variation === 'end' && overflowsTop);
46747    var flippedVariation = flippedVariationByRef || flippedVariationByContent;
46748
46749    if (overlapsRef || overflowsBoundaries || flippedVariation) {
46750      // this boolean to detect any flip loop
46751      data.flipped = true;
46752
46753      if (overlapsRef || overflowsBoundaries) {
46754        placement = flipOrder[index + 1];
46755      }
46756
46757      if (flippedVariation) {
46758        variation = getOppositeVariation(variation);
46759      }
46760
46761      data.placement = placement + (variation ? '-' + variation : ''); // this object contains `position`, we want to preserve it along with
46762      // any additional property we may add in the future
46763
46764      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));
46765      data = runModifiers(data.instance.modifiers, data, 'flip');
46766    }
46767  });
46768  return data;
46769}
46770/**
46771 * @function
46772 * @memberof Modifiers
46773 * @argument {Object} data - The data object generated by update method
46774 * @argument {Object} options - Modifiers configuration and options
46775 * @returns {Object} The data object, properly modified
46776 */
46777
46778
46779function keepTogether(data) {
46780  var _data$offsets = data.offsets,
46781      popper = _data$offsets.popper,
46782      reference = _data$offsets.reference;
46783  var placement = data.placement.split('-')[0];
46784  var floor = Math.floor;
46785  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;
46786  var side = isVertical ? 'right' : 'bottom';
46787  var opSide = isVertical ? 'left' : 'top';
46788  var measurement = isVertical ? 'width' : 'height';
46789
46790  if (popper[side] < floor(reference[opSide])) {
46791    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
46792  }
46793
46794  if (popper[opSide] > floor(reference[side])) {
46795    data.offsets.popper[opSide] = floor(reference[side]);
46796  }
46797
46798  return data;
46799}
46800/**
46801 * Converts a string containing value + unit into a px value number
46802 * @function
46803 * @memberof {modifiers~offset}
46804 * @private
46805 * @argument {String} str - Value + unit string
46806 * @argument {String} measurement - `height` or `width`
46807 * @argument {Object} popperOffsets
46808 * @argument {Object} referenceOffsets
46809 * @returns {Number|String}
46810 * Value in pixels, or original string if no values were extracted
46811 */
46812
46813
46814function toValue(str, measurement, popperOffsets, referenceOffsets) {
46815  // separate value from unit
46816  var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
46817  var value = +split[1];
46818  var unit = split[2]; // If it's not a number it's an operator, I guess
46819
46820  if (!value) {
46821    return str;
46822  }
46823
46824  if (unit.indexOf('%') === 0) {
46825    var element = void 0;
46826
46827    switch (unit) {
46828      case '%p':
46829        element = popperOffsets;
46830        break;
46831
46832      case '%':
46833      case '%r':
46834      default:
46835        element = referenceOffsets;
46836    }
46837
46838    var rect = getClientRect(element);
46839    return rect[measurement] / 100 * value;
46840  } else if (unit === 'vh' || unit === 'vw') {
46841    // if is a vh or vw, we calculate the size based on the viewport
46842    var size = void 0;
46843
46844    if (unit === 'vh') {
46845      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
46846    } else {
46847      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
46848    }
46849
46850    return size / 100 * value;
46851  } else {
46852    // if is an explicit pixel unit, we get rid of the unit and keep the value
46853    // if is an implicit unit, it's px, and we return just the value
46854    return value;
46855  }
46856}
46857/**
46858 * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.
46859 * @function
46860 * @memberof {modifiers~offset}
46861 * @private
46862 * @argument {String} offset
46863 * @argument {Object} popperOffsets
46864 * @argument {Object} referenceOffsets
46865 * @argument {String} basePlacement
46866 * @returns {Array} a two cells array with x and y offsets in numbers
46867 */
46868
46869
46870function parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {
46871  var offsets = [0, 0]; // Use height if placement is left or right and index is 0 otherwise use width
46872  // in this way the first offset will use an axis and the second one
46873  // will use the other one
46874
46875  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1; // Split the offset string to obtain a list of values and operands
46876  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)
46877
46878  var fragments = offset.split(/(\+|\-)/).map(function (frag) {
46879    return frag.trim();
46880  }); // Detect if the offset string contains a pair of values or a single one
46881  // they could be separated by comma or space
46882
46883  var divider = fragments.indexOf(find(fragments, function (frag) {
46884    return frag.search(/,|\s/) !== -1;
46885  }));
46886
46887  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {
46888    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
46889  } // If divider is found, we divide the list of values and operands to divide
46890  // them by ofset X and Y.
46891
46892
46893  var splitRegex = /\s*,\s*|\s+/;
46894  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments]; // Convert the values with units to absolute pixels to allow our computations
46895
46896  ops = ops.map(function (op, index) {
46897    // Most of the units rely on the orientation of the popper
46898    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';
46899    var mergeWithPrevious = false;
46900    return op // This aggregates any `+` or `-` sign that aren't considered operators
46901    // e.g.: 10 + +5 => [10, +, +5]
46902    .reduce(function (a, b) {
46903      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {
46904        a[a.length - 1] = b;
46905        mergeWithPrevious = true;
46906        return a;
46907      } else if (mergeWithPrevious) {
46908        a[a.length - 1] += b;
46909        mergeWithPrevious = false;
46910        return a;
46911      } else {
46912        return a.concat(b);
46913      }
46914    }, []) // Here we convert the string values into number values (in px)
46915    .map(function (str) {
46916      return toValue(str, measurement, popperOffsets, referenceOffsets);
46917    });
46918  }); // Loop trough the offsets arrays and execute the operations
46919
46920  ops.forEach(function (op, index) {
46921    op.forEach(function (frag, index2) {
46922      if (isNumeric(frag)) {
46923        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);
46924      }
46925    });
46926  });
46927  return offsets;
46928}
46929/**
46930 * @function
46931 * @memberof Modifiers
46932 * @argument {Object} data - The data object generated by update method
46933 * @argument {Object} options - Modifiers configuration and options
46934 * @argument {Number|String} options.offset=0
46935 * The offset value as described in the modifier description
46936 * @returns {Object} The data object, properly modified
46937 */
46938
46939
46940function offset(data, _ref) {
46941  var offset = _ref.offset;
46942  var placement = data.placement,
46943      _data$offsets = data.offsets,
46944      popper = _data$offsets.popper,
46945      reference = _data$offsets.reference;
46946  var basePlacement = placement.split('-')[0];
46947  var offsets = void 0;
46948
46949  if (isNumeric(+offset)) {
46950    offsets = [+offset, 0];
46951  } else {
46952    offsets = parseOffset(offset, popper, reference, basePlacement);
46953  }
46954
46955  if (basePlacement === 'left') {
46956    popper.top += offsets[0];
46957    popper.left -= offsets[1];
46958  } else if (basePlacement === 'right') {
46959    popper.top += offsets[0];
46960    popper.left += offsets[1];
46961  } else if (basePlacement === 'top') {
46962    popper.left += offsets[0];
46963    popper.top -= offsets[1];
46964  } else if (basePlacement === 'bottom') {
46965    popper.left += offsets[0];
46966    popper.top += offsets[1];
46967  }
46968
46969  data.popper = popper;
46970  return data;
46971}
46972/**
46973 * @function
46974 * @memberof Modifiers
46975 * @argument {Object} data - The data object generated by `update` method
46976 * @argument {Object} options - Modifiers configuration and options
46977 * @returns {Object} The data object, properly modified
46978 */
46979
46980
46981function preventOverflow(data, options) {
46982  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper); // If offsetParent is the reference element, we really want to
46983  // go one step up and use the next offsetParent as reference to
46984  // avoid to make this modifier completely useless and look like broken
46985
46986  if (data.instance.reference === boundariesElement) {
46987    boundariesElement = getOffsetParent(boundariesElement);
46988  } // NOTE: DOM access here
46989  // resets the popper's position so that the document size can be calculated excluding
46990  // the size of the popper element itself
46991
46992
46993  var transformProp = getSupportedPropertyName('transform');
46994  var popperStyles = data.instance.popper.style; // assignment to help minification
46995
46996  var top = popperStyles.top,
46997      left = popperStyles.left,
46998      transform = popperStyles[transformProp];
46999  popperStyles.top = '';
47000  popperStyles.left = '';
47001  popperStyles[transformProp] = '';
47002  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed); // NOTE: DOM access here
47003  // restores the original style properties after the offsets have been computed
47004
47005  popperStyles.top = top;
47006  popperStyles.left = left;
47007  popperStyles[transformProp] = transform;
47008  options.boundaries = boundaries;
47009  var order = options.priority;
47010  var popper = data.offsets.popper;
47011  var check = {
47012    primary: function primary(placement) {
47013      var value = popper[placement];
47014
47015      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
47016        value = Math.max(popper[placement], boundaries[placement]);
47017      }
47018
47019      return defineProperty({}, placement, value);
47020    },
47021    secondary: function secondary(placement) {
47022      var mainSide = placement === 'right' ? 'left' : 'top';
47023      var value = popper[mainSide];
47024
47025      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
47026        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));
47027      }
47028
47029      return defineProperty({}, mainSide, value);
47030    }
47031  };
47032  order.forEach(function (placement) {
47033    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';
47034    popper = _extends({}, popper, check[side](placement));
47035  });
47036  data.offsets.popper = popper;
47037  return data;
47038}
47039/**
47040 * @function
47041 * @memberof Modifiers
47042 * @argument {Object} data - The data object generated by `update` method
47043 * @argument {Object} options - Modifiers configuration and options
47044 * @returns {Object} The data object, properly modified
47045 */
47046
47047
47048function shift(data) {
47049  var placement = data.placement;
47050  var basePlacement = placement.split('-')[0];
47051  var shiftvariation = placement.split('-')[1]; // if shift shiftvariation is specified, run the modifier
47052
47053  if (shiftvariation) {
47054    var _data$offsets = data.offsets,
47055        reference = _data$offsets.reference,
47056        popper = _data$offsets.popper;
47057    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;
47058    var side = isVertical ? 'left' : 'top';
47059    var measurement = isVertical ? 'width' : 'height';
47060    var shiftOffsets = {
47061      start: defineProperty({}, side, reference[side]),
47062      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
47063    };
47064    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
47065  }
47066
47067  return data;
47068}
47069/**
47070 * @function
47071 * @memberof Modifiers
47072 * @argument {Object} data - The data object generated by update method
47073 * @argument {Object} options - Modifiers configuration and options
47074 * @returns {Object} The data object, properly modified
47075 */
47076
47077
47078function hide(data) {
47079  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {
47080    return data;
47081  }
47082
47083  var refRect = data.offsets.reference;
47084  var bound = find(data.instance.modifiers, function (modifier) {
47085    return modifier.name === 'preventOverflow';
47086  }).boundaries;
47087
47088  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
47089    // Avoid unnecessary DOM access if visibility hasn't changed
47090    if (data.hide === true) {
47091      return data;
47092    }
47093
47094    data.hide = true;
47095    data.attributes['x-out-of-boundaries'] = '';
47096  } else {
47097    // Avoid unnecessary DOM access if visibility hasn't changed
47098    if (data.hide === false) {
47099      return data;
47100    }
47101
47102    data.hide = false;
47103    data.attributes['x-out-of-boundaries'] = false;
47104  }
47105
47106  return data;
47107}
47108/**
47109 * @function
47110 * @memberof Modifiers
47111 * @argument {Object} data - The data object generated by `update` method
47112 * @argument {Object} options - Modifiers configuration and options
47113 * @returns {Object} The data object, properly modified
47114 */
47115
47116
47117function inner(data) {
47118  var placement = data.placement;
47119  var basePlacement = placement.split('-')[0];
47120  var _data$offsets = data.offsets,
47121      popper = _data$offsets.popper,
47122      reference = _data$offsets.reference;
47123  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;
47124  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;
47125  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);
47126  data.placement = getOppositePlacement(placement);
47127  data.offsets.popper = getClientRect(popper);
47128  return data;
47129}
47130/**
47131 * Modifier function, each modifier can have a function of this type assigned
47132 * to its `fn` property.<br />
47133 * These functions will be called on each update, this means that you must
47134 * make sure they are performant enough to avoid performance bottlenecks.
47135 *
47136 * @function ModifierFn
47137 * @argument {dataObject} data - The data object generated by `update` method
47138 * @argument {Object} options - Modifiers configuration and options
47139 * @returns {dataObject} The data object, properly modified
47140 */
47141
47142/**
47143 * Modifiers are plugins used to alter the behavior of your poppers.<br />
47144 * Popper.js uses a set of 9 modifiers to provide all the basic functionalities
47145 * needed by the library.
47146 *
47147 * Usually you don't want to override the `order`, `fn` and `onLoad` props.
47148 * All the other properties are configurations that could be tweaked.
47149 * @namespace modifiers
47150 */
47151
47152
47153var modifiers = {
47154  /**
47155   * Modifier used to shift the popper on the start or end of its reference
47156   * element.<br />
47157   * It will read the variation of the `placement` property.<br />
47158   * It can be one either `-end` or `-start`.
47159   * @memberof modifiers
47160   * @inner
47161   */
47162  shift: {
47163    /** @prop {number} order=100 - Index used to define the order of execution */
47164    order: 100,
47165
47166    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47167    enabled: true,
47168
47169    /** @prop {ModifierFn} */
47170    fn: shift
47171  },
47172
47173  /**
47174   * The `offset` modifier can shift your popper on both its axis.
47175   *
47176   * It accepts the following units:
47177   * - `px` or unit-less, interpreted as pixels
47178   * - `%` or `%r`, percentage relative to the length of the reference element
47179   * - `%p`, percentage relative to the length of the popper element
47180   * - `vw`, CSS viewport width unit
47181   * - `vh`, CSS viewport height unit
47182   *
47183   * For length is intended the main axis relative to the placement of the popper.<br />
47184   * This means that if the placement is `top` or `bottom`, the length will be the
47185   * `width`. In case of `left` or `right`, it will be the `height`.
47186   *
47187   * You can provide a single value (as `Number` or `String`), or a pair of values
47188   * as `String` divided by a comma or one (or more) white spaces.<br />
47189   * The latter is a deprecated method because it leads to confusion and will be
47190   * removed in v2.<br />
47191   * Additionally, it accepts additions and subtractions between different units.
47192   * Note that multiplications and divisions aren't supported.
47193   *
47194   * Valid examples are:
47195   * ```
47196   * 10
47197   * '10%'
47198   * '10, 10'
47199   * '10%, 10'
47200   * '10 + 10%'
47201   * '10 - 5vh + 3%'
47202   * '-10px + 5vh, 5px - 6%'
47203   * ```
47204   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap
47205   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.
47206   * > You can read more on this at this [issue](https://github.com/FezVrasta/popper.js/issues/373).
47207   *
47208   * @memberof modifiers
47209   * @inner
47210   */
47211  offset: {
47212    /** @prop {number} order=200 - Index used to define the order of execution */
47213    order: 200,
47214
47215    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47216    enabled: true,
47217
47218    /** @prop {ModifierFn} */
47219    fn: offset,
47220
47221    /** @prop {Number|String} offset=0
47222     * The offset value as described in the modifier description
47223     */
47224    offset: 0
47225  },
47226
47227  /**
47228   * Modifier used to prevent the popper from being positioned outside the boundary.
47229   *
47230   * A scenario exists where the reference itself is not within the boundaries.<br />
47231   * We can say it has "escaped the boundaries" — or just "escaped".<br />
47232   * In this case we need to decide whether the popper should either:
47233   *
47234   * - detach from the reference and remain "trapped" in the boundaries, or
47235   * - if it should ignore the boundary and "escape with its reference"
47236   *
47237   * When `escapeWithReference` is set to`true` and reference is completely
47238   * outside its boundaries, the popper will overflow (or completely leave)
47239   * the boundaries in order to remain attached to the edge of the reference.
47240   *
47241   * @memberof modifiers
47242   * @inner
47243   */
47244  preventOverflow: {
47245    /** @prop {number} order=300 - Index used to define the order of execution */
47246    order: 300,
47247
47248    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47249    enabled: true,
47250
47251    /** @prop {ModifierFn} */
47252    fn: preventOverflow,
47253
47254    /**
47255     * @prop {Array} [priority=['left','right','top','bottom']]
47256     * Popper will try to prevent overflow following these priorities by default,
47257     * then, it could overflow on the left and on top of the `boundariesElement`
47258     */
47259    priority: ['left', 'right', 'top', 'bottom'],
47260
47261    /**
47262     * @prop {number} padding=5
47263     * Amount of pixel used to define a minimum distance between the boundaries
47264     * and the popper. This makes sure the popper always has a little padding
47265     * between the edges of its container
47266     */
47267    padding: 5,
47268
47269    /**
47270     * @prop {String|HTMLElement} boundariesElement='scrollParent'
47271     * Boundaries used by the modifier. Can be `scrollParent`, `window`,
47272     * `viewport` or any DOM element.
47273     */
47274    boundariesElement: 'scrollParent'
47275  },
47276
47277  /**
47278   * Modifier used to make sure the reference and its popper stay near each other
47279   * without leaving any gap between the two. Especially useful when the arrow is
47280   * enabled and you want to ensure that it points to its reference element.
47281   * It cares only about the first axis. You can still have poppers with margin
47282   * between the popper and its reference element.
47283   * @memberof modifiers
47284   * @inner
47285   */
47286  keepTogether: {
47287    /** @prop {number} order=400 - Index used to define the order of execution */
47288    order: 400,
47289
47290    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47291    enabled: true,
47292
47293    /** @prop {ModifierFn} */
47294    fn: keepTogether
47295  },
47296
47297  /**
47298   * This modifier is used to move the `arrowElement` of the popper to make
47299   * sure it is positioned between the reference element and its popper element.
47300   * It will read the outer size of the `arrowElement` node to detect how many
47301   * pixels of conjunction are needed.
47302   *
47303   * It has no effect if no `arrowElement` is provided.
47304   * @memberof modifiers
47305   * @inner
47306   */
47307  arrow: {
47308    /** @prop {number} order=500 - Index used to define the order of execution */
47309    order: 500,
47310
47311    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47312    enabled: true,
47313
47314    /** @prop {ModifierFn} */
47315    fn: arrow,
47316
47317    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */
47318    element: '[x-arrow]'
47319  },
47320
47321  /**
47322   * Modifier used to flip the popper's placement when it starts to overlap its
47323   * reference element.
47324   *
47325   * Requires the `preventOverflow` modifier before it in order to work.
47326   *
47327   * **NOTE:** this modifier will interrupt the current update cycle and will
47328   * restart it if it detects the need to flip the placement.
47329   * @memberof modifiers
47330   * @inner
47331   */
47332  flip: {
47333    /** @prop {number} order=600 - Index used to define the order of execution */
47334    order: 600,
47335
47336    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47337    enabled: true,
47338
47339    /** @prop {ModifierFn} */
47340    fn: flip,
47341
47342    /**
47343     * @prop {String|Array} behavior='flip'
47344     * The behavior used to change the popper's placement. It can be one of
47345     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid
47346     * placements (with optional variations)
47347     */
47348    behavior: 'flip',
47349
47350    /**
47351     * @prop {number} padding=5
47352     * The popper will flip if it hits the edges of the `boundariesElement`
47353     */
47354    padding: 5,
47355
47356    /**
47357     * @prop {String|HTMLElement} boundariesElement='viewport'
47358     * The element which will define the boundaries of the popper position.
47359     * The popper will never be placed outside of the defined boundaries
47360     * (except if `keepTogether` is enabled)
47361     */
47362    boundariesElement: 'viewport',
47363
47364    /**
47365     * @prop {Boolean} flipVariations=false
47366     * The popper will switch placement variation between `-start` and `-end` when
47367     * the reference element overlaps its boundaries.
47368     *
47369     * The original placement should have a set variation.
47370     */
47371    flipVariations: false,
47372
47373    /**
47374     * @prop {Boolean} flipVariationsByContent=false
47375     * The popper will switch placement variation between `-start` and `-end` when
47376     * the popper element overlaps its reference boundaries.
47377     *
47378     * The original placement should have a set variation.
47379     */
47380    flipVariationsByContent: false
47381  },
47382
47383  /**
47384   * Modifier used to make the popper flow toward the inner of the reference element.
47385   * By default, when this modifier is disabled, the popper will be placed outside
47386   * the reference element.
47387   * @memberof modifiers
47388   * @inner
47389   */
47390  inner: {
47391    /** @prop {number} order=700 - Index used to define the order of execution */
47392    order: 700,
47393
47394    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */
47395    enabled: false,
47396
47397    /** @prop {ModifierFn} */
47398    fn: inner
47399  },
47400
47401  /**
47402   * Modifier used to hide the popper when its reference element is outside of the
47403   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can
47404   * be used to hide with a CSS selector the popper when its reference is
47405   * out of boundaries.
47406   *
47407   * Requires the `preventOverflow` modifier before it in order to work.
47408   * @memberof modifiers
47409   * @inner
47410   */
47411  hide: {
47412    /** @prop {number} order=800 - Index used to define the order of execution */
47413    order: 800,
47414
47415    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47416    enabled: true,
47417
47418    /** @prop {ModifierFn} */
47419    fn: hide
47420  },
47421
47422  /**
47423   * Computes the style that will be applied to the popper element to gets
47424   * properly positioned.
47425   *
47426   * Note that this modifier will not touch the DOM, it just prepares the styles
47427   * so that `applyStyle` modifier can apply it. This separation is useful
47428   * in case you need to replace `applyStyle` with a custom implementation.
47429   *
47430   * This modifier has `850` as `order` value to maintain backward compatibility
47431   * with previous versions of Popper.js. Expect the modifiers ordering method
47432   * to change in future major versions of the library.
47433   *
47434   * @memberof modifiers
47435   * @inner
47436   */
47437  computeStyle: {
47438    /** @prop {number} order=850 - Index used to define the order of execution */
47439    order: 850,
47440
47441    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47442    enabled: true,
47443
47444    /** @prop {ModifierFn} */
47445    fn: computeStyle,
47446
47447    /**
47448     * @prop {Boolean} gpuAcceleration=true
47449     * If true, it uses the CSS 3D transformation to position the popper.
47450     * Otherwise, it will use the `top` and `left` properties
47451     */
47452    gpuAcceleration: true,
47453
47454    /**
47455     * @prop {string} [x='bottom']
47456     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.
47457     * Change this if your popper should grow in a direction different from `bottom`
47458     */
47459    x: 'bottom',
47460
47461    /**
47462     * @prop {string} [x='left']
47463     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.
47464     * Change this if your popper should grow in a direction different from `right`
47465     */
47466    y: 'right'
47467  },
47468
47469  /**
47470   * Applies the computed styles to the popper element.
47471   *
47472   * All the DOM manipulations are limited to this modifier. This is useful in case
47473   * you want to integrate Popper.js inside a framework or view library and you
47474   * want to delegate all the DOM manipulations to it.
47475   *
47476   * Note that if you disable this modifier, you must make sure the popper element
47477   * has its position set to `absolute` before Popper.js can do its work!
47478   *
47479   * Just disable this modifier and define your own to achieve the desired effect.
47480   *
47481   * @memberof modifiers
47482   * @inner
47483   */
47484  applyStyle: {
47485    /** @prop {number} order=900 - Index used to define the order of execution */
47486    order: 900,
47487
47488    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */
47489    enabled: true,
47490
47491    /** @prop {ModifierFn} */
47492    fn: applyStyle,
47493
47494    /** @prop {Function} */
47495    onLoad: applyStyleOnLoad,
47496
47497    /**
47498     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier
47499     * @prop {Boolean} gpuAcceleration=true
47500     * If true, it uses the CSS 3D transformation to position the popper.
47501     * Otherwise, it will use the `top` and `left` properties
47502     */
47503    gpuAcceleration: undefined
47504  }
47505};
47506/**
47507 * The `dataObject` is an object containing all the information used by Popper.js.
47508 * This object is passed to modifiers and to the `onCreate` and `onUpdate` callbacks.
47509 * @name dataObject
47510 * @property {Object} data.instance The Popper.js instance
47511 * @property {String} data.placement Placement applied to popper
47512 * @property {String} data.originalPlacement Placement originally defined on init
47513 * @property {Boolean} data.flipped True if popper has been flipped by flip modifier
47514 * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper
47515 * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier
47516 * @property {Object} data.styles Any CSS property defined here will be applied to the popper. It expects the JavaScript nomenclature (eg. `marginBottom`)
47517 * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow. It expects the JavaScript nomenclature (eg. `marginBottom`)
47518 * @property {Object} data.boundaries Offsets of the popper boundaries
47519 * @property {Object} data.offsets The measurements of popper, reference and arrow elements
47520 * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values
47521 * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values
47522 * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0
47523 */
47524
47525/**
47526 * Default options provided to Popper.js constructor.<br />
47527 * These can be overridden using the `options` argument of Popper.js.<br />
47528 * To override an option, simply pass an object with the same
47529 * structure of the `options` object, as the 3rd argument. For example:
47530 * ```
47531 * new Popper(ref, pop, {
47532 *   modifiers: {
47533 *     preventOverflow: { enabled: false }
47534 *   }
47535 * })
47536 * ```
47537 * @type {Object}
47538 * @static
47539 * @memberof Popper
47540 */
47541
47542var Defaults = {
47543  /**
47544   * Popper's placement.
47545   * @prop {Popper.placements} placement='bottom'
47546   */
47547  placement: 'bottom',
47548
47549  /**
47550   * Set this to true if you want popper to position it self in 'fixed' mode
47551   * @prop {Boolean} positionFixed=false
47552   */
47553  positionFixed: false,
47554
47555  /**
47556   * Whether events (resize, scroll) are initially enabled.
47557   * @prop {Boolean} eventsEnabled=true
47558   */
47559  eventsEnabled: true,
47560
47561  /**
47562   * Set to true if you want to automatically remove the popper when
47563   * you call the `destroy` method.
47564   * @prop {Boolean} removeOnDestroy=false
47565   */
47566  removeOnDestroy: false,
47567
47568  /**
47569   * Callback called when the popper is created.<br />
47570   * By default, it is set to no-op.<br />
47571   * Access Popper.js instance with `data.instance`.
47572   * @prop {onCreate}
47573   */
47574  onCreate: function onCreate() {},
47575
47576  /**
47577   * Callback called when the popper is updated. This callback is not called
47578   * on the initialization/creation of the popper, but only on subsequent
47579   * updates.<br />
47580   * By default, it is set to no-op.<br />
47581   * Access Popper.js instance with `data.instance`.
47582   * @prop {onUpdate}
47583   */
47584  onUpdate: function onUpdate() {},
47585
47586  /**
47587   * List of modifiers used to modify the offsets before they are applied to the popper.
47588   * They provide most of the functionalities of Popper.js.
47589   * @prop {modifiers}
47590   */
47591  modifiers: modifiers
47592};
47593/**
47594 * @callback onCreate
47595 * @param {dataObject} data
47596 */
47597
47598/**
47599 * @callback onUpdate
47600 * @param {dataObject} data
47601 */
47602// Utils
47603// Methods
47604
47605var Popper = function () {
47606  /**
47607   * Creates a new Popper.js instance.
47608   * @class Popper
47609   * @param {Element|referenceObject} reference - The reference element used to position the popper
47610   * @param {Element} popper - The HTML / XML element used as the popper
47611   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)
47612   * @return {Object} instance - The generated Popper.js instance
47613   */
47614  function Popper(reference, popper) {
47615    var _this = this;
47616
47617    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
47618    classCallCheck(this, Popper);
47619
47620    this.scheduleUpdate = function () {
47621      return requestAnimationFrame(_this.update);
47622    }; // make update() debounced, so that it only runs at most once-per-tick
47623
47624
47625    this.update = debounce(this.update.bind(this)); // with {} we create a new object with the options inside it
47626
47627    this.options = _extends({}, Popper.Defaults, options); // init state
47628
47629    this.state = {
47630      isDestroyed: false,
47631      isCreated: false,
47632      scrollParents: []
47633    }; // get reference and popper elements (allow jQuery wrappers)
47634
47635    this.reference = reference && reference.jquery ? reference[0] : reference;
47636    this.popper = popper && popper.jquery ? popper[0] : popper; // Deep merge modifiers options
47637
47638    this.options.modifiers = {};
47639    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {
47640      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});
47641    }); // Refactoring modifiers' list (Object => Array)
47642
47643    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {
47644      return _extends({
47645        name: name
47646      }, _this.options.modifiers[name]);
47647    }) // sort the modifiers by order
47648    .sort(function (a, b) {
47649      return a.order - b.order;
47650    }); // modifiers have the ability to execute arbitrary code when Popper.js get inited
47651    // such code is executed in the same order of its modifier
47652    // they could add new properties to their options configuration
47653    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!
47654
47655    this.modifiers.forEach(function (modifierOptions) {
47656      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
47657        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
47658      }
47659    }); // fire the first update to position the popper in the right place
47660
47661    this.update();
47662    var eventsEnabled = this.options.eventsEnabled;
47663
47664    if (eventsEnabled) {
47665      // setup event listeners, they will take care of update the position in specific situations
47666      this.enableEventListeners();
47667    }
47668
47669    this.state.eventsEnabled = eventsEnabled;
47670  } // We can't use class properties because they don't get listed in the
47671  // class prototype and break stuff like Sinon stubs
47672
47673
47674  createClass(Popper, [{
47675    key: 'update',
47676    value: function update$$1() {
47677      return update.call(this);
47678    }
47679  }, {
47680    key: 'destroy',
47681    value: function destroy$$1() {
47682      return destroy.call(this);
47683    }
47684  }, {
47685    key: 'enableEventListeners',
47686    value: function enableEventListeners$$1() {
47687      return enableEventListeners.call(this);
47688    }
47689  }, {
47690    key: 'disableEventListeners',
47691    value: function disableEventListeners$$1() {
47692      return disableEventListeners.call(this);
47693    }
47694    /**
47695     * Schedules an update. It will run on the next UI update available.
47696     * @method scheduleUpdate
47697     * @memberof Popper
47698     */
47699
47700    /**
47701     * Collection of utilities useful when writing custom modifiers.
47702     * Starting from version 1.7, this method is available only if you
47703     * include `popper-utils.js` before `popper.js`.
47704     *
47705     * **DEPRECATION**: This way to access PopperUtils is deprecated
47706     * and will be removed in v2! Use the PopperUtils module directly instead.
47707     * Due to the high instability of the methods contained in Utils, we can't
47708     * guarantee them to follow semver. Use them at your own risk!
47709     * @static
47710     * @private
47711     * @type {Object}
47712     * @deprecated since version 1.8
47713     * @member Utils
47714     * @memberof Popper
47715     */
47716
47717  }]);
47718  return Popper;
47719}();
47720/**
47721 * The `referenceObject` is an object that provides an interface compatible with Popper.js
47722 * and lets you use it as replacement of a real DOM node.<br />
47723 * You can use this method to position a popper relatively to a set of coordinates
47724 * in case you don't have a DOM node to use as reference.
47725 *
47726 * ```
47727 * new Popper(referenceObject, popperNode);
47728 * ```
47729 *
47730 * NB: This feature isn't supported in Internet Explorer 10.
47731 * @name referenceObject
47732 * @property {Function} data.getBoundingClientRect
47733 * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.
47734 * @property {number} data.clientWidth
47735 * An ES6 getter that will return the width of the virtual reference element.
47736 * @property {number} data.clientHeight
47737 * An ES6 getter that will return the height of the virtual reference element.
47738 */
47739
47740
47741Popper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;
47742Popper.placements = placements;
47743Popper.Defaults = Defaults;
47744/* harmony default export */ __webpack_exports__["default"] = (Popper);
47745/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../sfra-webpack-builder/node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
47746
47747/***/ }),
47748
vendor: 1,049 bytes, lines 47749-47768
47749/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addCSSRule.js":
47750/*!*******************************************************************************!*\
47751  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addCSSRule.js ***!
47752  \*******************************************************************************/
47753/*! exports provided: addCSSRule */
47754/***/ (function(module, __webpack_exports__, __webpack_require__) {
47755
47756"use strict";
47757__webpack_require__.r(__webpack_exports__);
47758/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addCSSRule", function() { return addCSSRule; });
47759/* harmony import */ var _raf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./raf.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/raf.js");
47760// cross browsers addRule method
47761
47762function addCSSRule(sheet, selector, rules, index) {
47763  // return raf(function() {
47764  'insertRule' in sheet ? sheet.insertRule(selector + '{' + rules + '}', index) : sheet.addRule(selector, rules, index); // });
47765}
47766
47767/***/ }),
47768
vendor: 1,162 bytes, lines 47769-47793
47769/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addClass.js":
47770/*!*****************************************************************************!*\
47771  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addClass.js ***!
47772  \*****************************************************************************/
47773/*! exports provided: addClass */
47774/***/ (function(module, __webpack_exports__, __webpack_require__) {
47775
47776"use strict";
47777__webpack_require__.r(__webpack_exports__);
47778/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addClass", function() { return addClass; });
47779/* harmony import */ var _hasClass_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hasClass.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hasClass.js");
47780
47781var addClass = _hasClass_js__WEBPACK_IMPORTED_MODULE_0__["classListSupport"] ? function (el, str) {
47782  if (!Object(_hasClass_js__WEBPACK_IMPORTED_MODULE_0__["hasClass"])(el, str)) {
47783    el.classList.add(str);
47784  }
47785} : function (el, str) {
47786  if (!Object(_hasClass_js__WEBPACK_IMPORTED_MODULE_0__["hasClass"])(el, str)) {
47787    el.className += ' ' + str;
47788  }
47789};
47790
47791
47792/***/ }),
47793
vendor: 1,117 bytes, lines 47794-47814
47794/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addEvents.js":
47795/*!******************************************************************************!*\
47796  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addEvents.js ***!
47797  \******************************************************************************/
47798/*! exports provided: addEvents */
47799/***/ (function(module, __webpack_exports__, __webpack_require__) {
47800
47801"use strict";
47802__webpack_require__.r(__webpack_exports__);
47803/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addEvents", function() { return addEvents; });
47804/* harmony import */ var _passiveOption_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./passiveOption.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/passiveOption.js");
47805
47806function addEvents(el, obj, preventScrolling) {
47807  for (var prop in obj) {
47808    var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 && !preventScrolling ? _passiveOption_js__WEBPACK_IMPORTED_MODULE_0__["passiveOption"] : false;
47809    el.addEventListener(prop, obj[prop], option);
47810  }
47811}
47812
47813/***/ }),
47814
vendor: 822 bytes, lines 47815-47836
47815/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/arrayFromNodeList.js":
47816/*!**************************************************************************************!*\
47817  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/arrayFromNodeList.js ***!
47818  \**************************************************************************************/
47819/*! exports provided: arrayFromNodeList */
47820/***/ (function(module, __webpack_exports__, __webpack_require__) {
47821
47822"use strict";
47823__webpack_require__.r(__webpack_exports__);
47824/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "arrayFromNodeList", function() { return arrayFromNodeList; });
47825function arrayFromNodeList(nl) {
47826  var arr = [];
47827
47828  for (var i = 0, l = nl.length; i < l; i++) {
47829    arr.push(nl[i]);
47830  }
47831
47832  return arr;
47833}
47834
47835/***/ }),
47836
vendor: 711 bytes, lines 47837-47853
47837/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/caf.js":
47838/*!************************************************************************!*\
47839  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/caf.js ***!
47840  \************************************************************************/
47841/*! exports provided: caf */
47842/***/ (function(module, __webpack_exports__, __webpack_require__) {
47843
47844"use strict";
47845__webpack_require__.r(__webpack_exports__);
47846/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "caf", function() { return caf; });
47847var win = window;
47848var caf = win.cancelAnimationFrame || win.mozCancelAnimationFrame || function (id) {
47849  clearTimeout(id);
47850};
47851
47852/***/ }),
47853
vendor: 2,041 bytes, lines 47854-47902
47854/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/calc.js":
47855/*!*************************************************************************!*\
47856  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/calc.js ***!
47857  \*************************************************************************/
47858/*! exports provided: calc */
47859/***/ (function(module, __webpack_exports__, __webpack_require__) {
47860
47861"use strict";
47862__webpack_require__.r(__webpack_exports__);
47863/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "calc", function() { return calc; });
47864/* harmony import */ var _getBody_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getBody.js");
47865/* harmony import */ var _setFakeBody_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setFakeBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setFakeBody.js");
47866/* harmony import */ var _resetFakeBody_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resetFakeBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/resetFakeBody.js");
47867// get css-calc 
47868// @return - false | calc | -webkit-calc | -moz-calc
47869// @usage - var calc = getCalc(); 
47870
47871
47872
47873function calc() {
47874  var doc = document,
47875      body = Object(_getBody_js__WEBPACK_IMPORTED_MODULE_0__["getBody"])(),
47876      docOverflow = Object(_setFakeBody_js__WEBPACK_IMPORTED_MODULE_1__["setFakeBody"])(body),
47877      div = doc.createElement('div'),
47878      result = false;
47879  body.appendChild(div);
47880
47881  try {
47882    var str = '(10px * 10)',
47883        vals = ['calc' + str, '-moz-calc' + str, '-webkit-calc' + str],
47884        val;
47885
47886    for (var i = 0; i < 3; i++) {
47887      val = vals[i];
47888      div.style.width = val;
47889
47890      if (div.offsetWidth === 100) {
47891        result = val.replace(str, '');
47892        break;
47893      }
47894    }
47895  } catch (e) {}
47896
47897  body.fake ? Object(_resetFakeBody_js__WEBPACK_IMPORTED_MODULE_2__["resetFakeBody"])(body, docOverflow) : div.remove();
47898  return result;
47899}
47900
47901/***/ }),
47902
vendor: 797 bytes, lines 47903-47918
47903/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/checkStorageValue.js":
47904/*!**************************************************************************************!*\
47905  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/checkStorageValue.js ***!
47906  \**************************************************************************************/
47907/*! exports provided: checkStorageValue */
47908/***/ (function(module, __webpack_exports__, __webpack_require__) {
47909
47910"use strict";
47911__webpack_require__.r(__webpack_exports__);
47912/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "checkStorageValue", function() { return checkStorageValue; });
47913function checkStorageValue(value) {
47914  return ['true', 'false'].indexOf(value) >= 0 ? JSON.parse(value) : value;
47915}
47916
47917/***/ }),
47918
vendor: 745 bytes, lines 47919-47932
47919/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/classListSupport.js":
47920/*!*************************************************************************************!*\
47921  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/classListSupport.js ***!
47922  \*************************************************************************************/
47923/*! exports provided: classListSupport */
47924/***/ (function(module, __webpack_exports__, __webpack_require__) {
47925
47926"use strict";
47927__webpack_require__.r(__webpack_exports__);
47928/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "classListSupport", function() { return classListSupport; });
47929var classListSupport = ('classList' in document.createElement('_'));
47930
47931/***/ }),
47932
vendor: 1,441 bytes, lines 47933-47969
47933/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/createStyleSheet.js":
47934/*!*************************************************************************************!*\
47935  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/createStyleSheet.js ***!
47936  \*************************************************************************************/
47937/*! exports provided: createStyleSheet */
47938/***/ (function(module, __webpack_exports__, __webpack_require__) {
47939
47940"use strict";
47941__webpack_require__.r(__webpack_exports__);
47942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "createStyleSheet", function() { return createStyleSheet; });
47943// create and append style sheet
47944function createStyleSheet(media, nonce) {
47945  // Create the <style> tag
47946  var style = document.createElement("style"); // style.setAttribute("type", "text/css");
47947  // Add a media (and/or media query) here if you'd like!
47948  // style.setAttribute("media", "screen")
47949  // style.setAttribute("media", "only screen and (max-width : 1024px)")
47950
47951  if (media) {
47952    style.setAttribute("media", media);
47953  } // Add nonce attribute for Content Security Policy
47954
47955
47956  if (nonce) {
47957    style.setAttribute("nonce", nonce);
47958  } // WebKit hack :(
47959  // style.appendChild(document.createTextNode(""));
47960  // Add the <style> element to the page
47961
47962
47963  document.querySelector('head').appendChild(style);
47964  return style.sheet ? style.sheet : style.styleSheet;
47965}
47966;
47967
47968/***/ }),
47969
vendor: 677 bytes, lines 47970-47983
47970/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/docElement.js":
47971/*!*******************************************************************************!*\
47972  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/docElement.js ***!
47973  \*******************************************************************************/
47974/*! exports provided: docElement */
47975/***/ (function(module, __webpack_exports__, __webpack_require__) {
47976
47977"use strict";
47978__webpack_require__.r(__webpack_exports__);
47979/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "docElement", function() { return docElement; });
47980var docElement = document.documentElement;
47981
47982/***/ }),
47983
vendor: 1,323 bytes, lines 47984-48025
47984/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/events.js":
47985/*!***************************************************************************!*\
47986  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/events.js ***!
47987  \***************************************************************************/
47988/*! exports provided: Events */
47989/***/ (function(module, __webpack_exports__, __webpack_require__) {
47990
47991"use strict";
47992__webpack_require__.r(__webpack_exports__);
47993/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Events", function() { return Events; });
47994function Events() {
47995  return {
47996    topics: {},
47997    on: function on(eventName, fn) {
47998      this.topics[eventName] = this.topics[eventName] || [];
47999      this.topics[eventName].push(fn);
48000    },
48001    off: function off(eventName, fn) {
48002      if (this.topics[eventName]) {
48003        for (var i = 0; i < this.topics[eventName].length; i++) {
48004          if (this.topics[eventName][i] === fn) {
48005            this.topics[eventName].splice(i, 1);
48006            break;
48007          }
48008        }
48009      }
48010    },
48011    emit: function emit(eventName, data) {
48012      data.type = eventName;
48013
48014      if (this.topics[eventName]) {
48015        this.topics[eventName].forEach(function (fn) {
48016          fn(data, eventName);
48017        });
48018      }
48019    }
48020  };
48021}
48022;
48023
48024/***/ }),
48025
vendor: 1,036 bytes, lines 48026-48062
48026/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/extend.js":
48027/*!***************************************************************************!*\
48028  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/extend.js ***!
48029  \***************************************************************************/
48030/*! exports provided: extend */
48031/***/ (function(module, __webpack_exports__, __webpack_require__) {
48032
48033"use strict";
48034__webpack_require__.r(__webpack_exports__);
48035/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "extend", function() { return extend; });
48036function extend() {
48037  var obj,
48038      name,
48039      copy,
48040      target = arguments[0] || {},
48041      i = 1,
48042      length = arguments.length;
48043
48044  for (; i < length; i++) {
48045    if ((obj = arguments[i]) !== null) {
48046      for (name in obj) {
48047        copy = obj[name];
48048
48049        if (target === copy) {
48050          continue;
48051        } else if (copy !== undefined) {
48052          target[name] = copy;
48053        }
48054      }
48055    }
48056  }
48057
48058  return target;
48059}
48060
48061/***/ }),
48062
vendor: 814 bytes, lines 48063-48081
48063/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/forEach.js":
48064/*!****************************************************************************!*\
48065  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/forEach.js ***!
48066  \****************************************************************************/
48067/*! exports provided: forEach */
48068/***/ (function(module, __webpack_exports__, __webpack_require__) {
48069
48070"use strict";
48071__webpack_require__.r(__webpack_exports__);
48072/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return forEach; });
48073// https://toddmotto.com/ditch-the-array-foreach-call-nodelist-hack/
48074function forEach(arr, callback, scope) {
48075  for (var i = 0, l = arr.length; i < l; i++) {
48076    callback.call(scope, arr[i], i);
48077  }
48078}
48079
48080/***/ }),
48081
vendor: 676 bytes, lines 48082-48097
48082/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getAttr.js":
48083/*!****************************************************************************!*\
48084  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getAttr.js ***!
48085  \****************************************************************************/
48086/*! exports provided: getAttr */
48087/***/ (function(module, __webpack_exports__, __webpack_require__) {
48088
48089"use strict";
48090__webpack_require__.r(__webpack_exports__);
48091/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getAttr", function() { return getAttr; });
48092function getAttr(el, attr) {
48093  return el.getAttribute(attr);
48094}
48095
48096/***/ }),
48097
vendor: 777 bytes, lines 48098-48121
48098/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getBody.js":
48099/*!****************************************************************************!*\
48100  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getBody.js ***!
48101  \****************************************************************************/
48102/*! exports provided: getBody */
48103/***/ (function(module, __webpack_exports__, __webpack_require__) {
48104
48105"use strict";
48106__webpack_require__.r(__webpack_exports__);
48107/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getBody", function() { return getBody; });
48108function getBody() {
48109  var doc = document,
48110      body = doc.body;
48111
48112  if (!body) {
48113    body = doc.createElement('body');
48114    body.fake = true;
48115  }
48116
48117  return body;
48118}
48119
48120/***/ }),
48121
vendor: 810 bytes, lines 48122-48138
48122/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getCssRulesLength.js":
48123/*!**************************************************************************************!*\
48124  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getCssRulesLength.js ***!
48125  \**************************************************************************************/
48126/*! exports provided: getCssRulesLength */
48127/***/ (function(module, __webpack_exports__, __webpack_require__) {
48128
48129"use strict";
48130__webpack_require__.r(__webpack_exports__);
48131/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getCssRulesLength", function() { return getCssRulesLength; });
48132function getCssRulesLength(sheet) {
48133  var rule = 'insertRule' in sheet ? sheet.cssRules : sheet.rules;
48134  return rule.length;
48135}
48136
48137/***/ }),
48138
vendor: 1,183 bytes, lines 48139-48168
48139/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getEndProperty.js":
48140/*!***********************************************************************************!*\
48141  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getEndProperty.js ***!
48142  \***********************************************************************************/
48143/*! exports provided: getEndProperty */
48144/***/ (function(module, __webpack_exports__, __webpack_require__) {
48145
48146"use strict";
48147__webpack_require__.r(__webpack_exports__);
48148/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getEndProperty", function() { return getEndProperty; });
48149// get transitionend, animationend based on transitionDuration
48150// @propin: string
48151// @propOut: string, first-letter uppercase
48152// Usage: getEndProperty('WebkitTransitionDuration', 'Transition') => webkitTransitionEnd
48153function getEndProperty(propIn, propOut) {
48154  var endProp = false;
48155
48156  if (/^Webkit/.test(propIn)) {
48157    endProp = 'webkit' + propOut + 'End';
48158  } else if (/^O/.test(propIn)) {
48159    endProp = 'o' + propOut + 'End';
48160  } else if (propIn) {
48161    endProp = propOut.toLowerCase() + 'end';
48162  }
48163
48164  return endProp;
48165}
48166
48167/***/ }),
48168
vendor: 751 bytes, lines 48169-48186
48169/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getSlideId.js":
48170/*!*******************************************************************************!*\
48171  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getSlideId.js ***!
48172  \*******************************************************************************/
48173/*! exports provided: getSlideId */
48174/***/ (function(module, __webpack_exports__, __webpack_require__) {
48175
48176"use strict";
48177__webpack_require__.r(__webpack_exports__);
48178/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSlideId", function() { return getSlideId; });
48179function getSlideId() {
48180  var id = window.tnsId;
48181  window.tnsId = !id ? 1 : id + 1;
48182  return 'tns' + window.tnsId;
48183}
48184
48185/***/ }),
48186
vendor: 937 bytes, lines 48187-48211
48187/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getTouchDirection.js":
48188/*!**************************************************************************************!*\
48189  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getTouchDirection.js ***!
48190  \**************************************************************************************/
48191/*! exports provided: getTouchDirection */
48192/***/ (function(module, __webpack_exports__, __webpack_require__) {
48193
48194"use strict";
48195__webpack_require__.r(__webpack_exports__);
48196/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getTouchDirection", function() { return getTouchDirection; });
48197function getTouchDirection(angle, range) {
48198  var direction = false,
48199      gap = Math.abs(90 - Math.abs(angle));
48200
48201  if (gap >= 90 - range) {
48202    direction = 'horizontal';
48203  } else if (gap <= range) {
48204    direction = 'vertical';
48205  }
48206
48207  return direction;
48208}
48209
48210/***/ }),
48211
vendor: 2,092 bytes, lines 48212-48253
48212/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/has3DTransforms.js":
48213/*!************************************************************************************!*\
48214  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/has3DTransforms.js ***!
48215  \************************************************************************************/
48216/*! exports provided: has3DTransforms */
48217/***/ (function(module, __webpack_exports__, __webpack_require__) {
48218
48219"use strict";
48220__webpack_require__.r(__webpack_exports__);
48221/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "has3DTransforms", function() { return has3DTransforms; });
48222/* harmony import */ var _getBody_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getBody.js");
48223/* harmony import */ var _setFakeBody_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setFakeBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setFakeBody.js");
48224/* harmony import */ var _resetFakeBody_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resetFakeBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/resetFakeBody.js");
48225
48226
48227
48228function has3DTransforms(tf) {
48229  if (!tf) {
48230    return false;
48231  }
48232
48233  if (!window.getComputedStyle) {
48234    return false;
48235  }
48236
48237  var doc = document,
48238      body = Object(_getBody_js__WEBPACK_IMPORTED_MODULE_0__["getBody"])(),
48239      docOverflow = Object(_setFakeBody_js__WEBPACK_IMPORTED_MODULE_1__["setFakeBody"])(body),
48240      el = doc.createElement('p'),
48241      has3d,
48242      cssTF = tf.length > 9 ? '-' + tf.slice(0, -9).toLowerCase() + '-' : '';
48243  cssTF += 'transform'; // Add it to the body to get the computed style
48244
48245  body.insertBefore(el, null);
48246  el.style[tf] = 'translate3d(1px,1px,1px)';
48247  has3d = window.getComputedStyle(el).getPropertyValue(cssTF);
48248  body.fake ? Object(_resetFakeBody_js__WEBPACK_IMPORTED_MODULE_2__["resetFakeBody"])(body, docOverflow) : el.remove();
48249  return has3d !== undefined && has3d.length > 0 && has3d !== "none";
48250}
48251
48252/***/ }),
48253
vendor: 676 bytes, lines 48254-48269
48254/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hasAttr.js":
48255/*!****************************************************************************!*\
48256  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hasAttr.js ***!
48257  \****************************************************************************/
48258/*! exports provided: hasAttr */
48259/***/ (function(module, __webpack_exports__, __webpack_require__) {
48260
48261"use strict";
48262__webpack_require__.r(__webpack_exports__);
48263/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasAttr", function() { return hasAttr; });
48264function hasAttr(el, attr) {
48265  return el.hasAttribute(attr);
48266}
48267
48268/***/ }),
48269
vendor: 1,251 bytes, lines 48270-48292
48270/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hasClass.js":
48271/*!*****************************************************************************!*\
48272  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hasClass.js ***!
48273  \*****************************************************************************/
48274/*! exports provided: classListSupport, hasClass */
48275/***/ (function(module, __webpack_exports__, __webpack_require__) {
48276
48277"use strict";
48278__webpack_require__.r(__webpack_exports__);
48279/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hasClass", function() { return hasClass; });
48280/* harmony import */ var _classListSupport_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./classListSupport.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/classListSupport.js");
48281/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "classListSupport", function() { return _classListSupport_js__WEBPACK_IMPORTED_MODULE_0__["classListSupport"]; });
48282
48283
48284var hasClass = _classListSupport_js__WEBPACK_IMPORTED_MODULE_0__["classListSupport"] ? function (el, str) {
48285  return el.classList.contains(str);
48286} : function (el, str) {
48287  return el.className.indexOf(str) >= 0;
48288};
48289
48290
48291/***/ }),
48292
vendor: 753 bytes, lines 48293-48310
48293/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hideElement.js":
48294/*!********************************************************************************!*\
48295  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hideElement.js ***!
48296  \********************************************************************************/
48297/*! exports provided: hideElement */
48298/***/ (function(module, __webpack_exports__, __webpack_require__) {
48299
48300"use strict";
48301__webpack_require__.r(__webpack_exports__);
48302/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hideElement", function() { return hideElement; });
48303function hideElement(el, forceHide) {
48304  if (el.style.display !== 'none') {
48305    el.style.display = 'none';
48306  }
48307}
48308
48309/***/ }),
48310
vendor: 748 bytes, lines 48311-48327
48311/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/isNodeList.js":
48312/*!*******************************************************************************!*\
48313  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/isNodeList.js ***!
48314  \*******************************************************************************/
48315/*! exports provided: isNodeList */
48316/***/ (function(module, __webpack_exports__, __webpack_require__) {
48317
48318"use strict";
48319__webpack_require__.r(__webpack_exports__);
48320/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNodeList", function() { return isNodeList; });
48321function isNodeList(el) {
48322  // Only NodeList has the "item()" function
48323  return typeof el.item !== "undefined";
48324}
48325
48326/***/ }),
48327
vendor: 711 bytes, lines 48328-48343
48328/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/isVisible.js":
48329/*!******************************************************************************!*\
48330  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/isVisible.js ***!
48331  \******************************************************************************/
48332/*! exports provided: isVisible */
48333/***/ (function(module, __webpack_exports__, __webpack_require__) {
48334
48335"use strict";
48336__webpack_require__.r(__webpack_exports__);
48337/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isVisible", function() { return isVisible; });
48338function isVisible(el) {
48339  return window.getComputedStyle(el).display !== 'none';
48340}
48341
48342/***/ }),
48343
vendor: 1,278 bytes, lines 48344-48377
48344/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/jsTransform.js":
48345/*!********************************************************************************!*\
48346  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/jsTransform.js ***!
48347  \********************************************************************************/
48348/*! exports provided: jsTransform */
48349/***/ (function(module, __webpack_exports__, __webpack_require__) {
48350
48351"use strict";
48352__webpack_require__.r(__webpack_exports__);
48353/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "jsTransform", function() { return jsTransform; });
48354function jsTransform(element, attr, prefix, postfix, to, duration, callback) {
48355  var tick = Math.min(duration, 10),
48356      unit = to.indexOf('%') >= 0 ? '%' : 'px',
48357      to = to.replace(unit, ''),
48358      from = Number(element.style[attr].replace(prefix, '').replace(postfix, '').replace(unit, '')),
48359      positionTick = (to - from) / duration * tick,
48360      running;
48361  setTimeout(moveElement, tick);
48362
48363  function moveElement() {
48364    duration -= tick;
48365    from += positionTick;
48366    element.style[attr] = prefix + from + unit + postfix;
48367
48368    if (duration > 0) {
48369      setTimeout(moveElement, tick);
48370    } else {
48371      callback();
48372    }
48373  }
48374}
48375
48376/***/ }),
48377
vendor: 2,238 bytes, lines 48378-48423
48378/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/mediaquerySupport.js":
48379/*!**************************************************************************************!*\
48380  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/mediaquerySupport.js ***!
48381  \**************************************************************************************/
48382/*! exports provided: mediaquerySupport */
48383/***/ (function(module, __webpack_exports__, __webpack_require__) {
48384
48385"use strict";
48386__webpack_require__.r(__webpack_exports__);
48387/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mediaquerySupport", function() { return mediaquerySupport; });
48388/* harmony import */ var _getBody_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getBody.js");
48389/* harmony import */ var _setFakeBody_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setFakeBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setFakeBody.js");
48390/* harmony import */ var _resetFakeBody_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resetFakeBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/resetFakeBody.js");
48391
48392
48393
48394function mediaquerySupport() {
48395  if (window.matchMedia || window.msMatchMedia) {
48396    return true;
48397  }
48398
48399  var doc = document,
48400      body = Object(_getBody_js__WEBPACK_IMPORTED_MODULE_0__["getBody"])(),
48401      docOverflow = Object(_setFakeBody_js__WEBPACK_IMPORTED_MODULE_1__["setFakeBody"])(body),
48402      div = doc.createElement('div'),
48403      style = doc.createElement('style'),
48404      rule = '@media all and (min-width:1px){.tns-mq-test{position:absolute}}',
48405      position;
48406  style.type = 'text/css';
48407  div.className = 'tns-mq-test';
48408  body.appendChild(style);
48409  body.appendChild(div);
48410
48411  if (style.styleSheet) {
48412    style.styleSheet.cssText = rule;
48413  } else {
48414    style.appendChild(doc.createTextNode(rule));
48415  }
48416
48417  position = window.getComputedStyle ? window.getComputedStyle(div).position : div.currentStyle['position'];
48418  body.fake ? Object(_resetFakeBody_js__WEBPACK_IMPORTED_MODULE_2__["resetFakeBody"])(body, docOverflow) : div.remove();
48419  return position === "absolute";
48420}
48421
48422/***/ }),
48423
vendor: 1,027 bytes, lines 48424-48451
48424/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/passiveOption.js":
48425/*!**********************************************************************************!*\
48426  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/passiveOption.js ***!
48427  \**********************************************************************************/
48428/*! exports provided: passiveOption */
48429/***/ (function(module, __webpack_exports__, __webpack_require__) {
48430
48431"use strict";
48432__webpack_require__.r(__webpack_exports__);
48433/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "passiveOption", function() { return passiveOption; });
48434// Test via a getter in the options object to see if the passive property is accessed
48435var supportsPassive = false;
48436
48437try {
48438  var opts = Object.defineProperty({}, 'passive', {
48439    get: function get() {
48440      supportsPassive = true;
48441    }
48442  });
48443  window.addEventListener("test", null, opts);
48444} catch (e) {}
48445
48446var passiveOption = supportsPassive ? {
48447  passive: true
48448} : false;
48449
48450/***/ }),
48451
vendor: 2,221 bytes, lines 48452-48497
48452/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/percentageLayout.js":
48453/*!*************************************************************************************!*\
48454  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/percentageLayout.js ***!
48455  \*************************************************************************************/
48456/*! exports provided: percentageLayout */
48457/***/ (function(module, __webpack_exports__, __webpack_require__) {
48458
48459"use strict";
48460__webpack_require__.r(__webpack_exports__);
48461/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "percentageLayout", function() { return percentageLayout; });
48462/* harmony import */ var _getBody_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getBody.js");
48463/* harmony import */ var _setFakeBody_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setFakeBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setFakeBody.js");
48464/* harmony import */ var _resetFakeBody_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./resetFakeBody.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/resetFakeBody.js");
48465// get subpixel support value
48466// @return - boolean
48467
48468
48469
48470function percentageLayout() {
48471  // check subpixel layout supporting
48472  var doc = document,
48473      body = Object(_getBody_js__WEBPACK_IMPORTED_MODULE_0__["getBody"])(),
48474      docOverflow = Object(_setFakeBody_js__WEBPACK_IMPORTED_MODULE_1__["setFakeBody"])(body),
48475      wrapper = doc.createElement('div'),
48476      outer = doc.createElement('div'),
48477      str = '',
48478      count = 70,
48479      perPage = 3,
48480      supported = false;
48481  wrapper.className = "tns-t-subp2";
48482  outer.className = "tns-t-ct";
48483
48484  for (var i = 0; i < count; i++) {
48485    str += '<div></div>';
48486  }
48487
48488  outer.innerHTML = str;
48489  wrapper.appendChild(outer);
48490  body.appendChild(wrapper);
48491  supported = Math.abs(wrapper.getBoundingClientRect().left - outer.children[count - perPage].getBoundingClientRect().left) < 2;
48492  body.fake ? Object(_resetFakeBody_js__WEBPACK_IMPORTED_MODULE_2__["resetFakeBody"])(body, docOverflow) : wrapper.remove();
48493  return supported;
48494}
48495
48496/***/ }),
48497
vendor: 788 bytes, lines 48498-48514
48498/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/raf.js":
48499/*!************************************************************************!*\
48500  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/raf.js ***!
48501  \************************************************************************/
48502/*! exports provided: raf */
48503/***/ (function(module, __webpack_exports__, __webpack_require__) {
48504
48505"use strict";
48506__webpack_require__.r(__webpack_exports__);
48507/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "raf", function() { return raf; });
48508var win = window;
48509var raf = win.requestAnimationFrame || win.webkitRequestAnimationFrame || win.mozRequestAnimationFrame || win.msRequestAnimationFrame || function (cb) {
48510  return setTimeout(cb, 16);
48511};
48512
48513/***/ }),
48514
vendor: 1,195 bytes, lines 48515-48540
48515/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeAttrs.js":
48516/*!********************************************************************************!*\
48517  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeAttrs.js ***!
48518  \********************************************************************************/
48519/*! exports provided: removeAttrs */
48520/***/ (function(module, __webpack_exports__, __webpack_require__) {
48521
48522"use strict";
48523__webpack_require__.r(__webpack_exports__);
48524/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeAttrs", function() { return removeAttrs; });
48525/* harmony import */ var _isNodeList_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isNodeList.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/isNodeList.js");
48526
48527function removeAttrs(els, attrs) {
48528  els = Object(_isNodeList_js__WEBPACK_IMPORTED_MODULE_0__["isNodeList"])(els) || els instanceof Array ? els : [els];
48529  attrs = attrs instanceof Array ? attrs : [attrs];
48530  var attrLength = attrs.length;
48531
48532  for (var i = els.length; i--;) {
48533    for (var j = attrLength; j--;) {
48534      els[i].removeAttribute(attrs[j]);
48535    }
48536  }
48537}
48538
48539/***/ }),
48540
vendor: 1,012 bytes, lines 48541-48560
48541/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeCSSRule.js":
48542/*!**********************************************************************************!*\
48543  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeCSSRule.js ***!
48544  \**********************************************************************************/
48545/*! exports provided: removeCSSRule */
48546/***/ (function(module, __webpack_exports__, __webpack_require__) {
48547
48548"use strict";
48549__webpack_require__.r(__webpack_exports__);
48550/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeCSSRule", function() { return removeCSSRule; });
48551/* harmony import */ var _raf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./raf.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/raf.js");
48552// cross browsers addRule method
48553
48554function removeCSSRule(sheet, index) {
48555  // return raf(function() {
48556  'deleteRule' in sheet ? sheet.deleteRule(index) : sheet.removeRule(index); // });
48557}
48558
48559/***/ }),
48560
vendor: 1,206 bytes, lines 48561-48585
48561/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeClass.js":
48562/*!********************************************************************************!*\
48563  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeClass.js ***!
48564  \********************************************************************************/
48565/*! exports provided: removeClass */
48566/***/ (function(module, __webpack_exports__, __webpack_require__) {
48567
48568"use strict";
48569__webpack_require__.r(__webpack_exports__);
48570/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeClass", function() { return removeClass; });
48571/* harmony import */ var _hasClass_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hasClass.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hasClass.js");
48572
48573var removeClass = _hasClass_js__WEBPACK_IMPORTED_MODULE_0__["classListSupport"] ? function (el, str) {
48574  if (Object(_hasClass_js__WEBPACK_IMPORTED_MODULE_0__["hasClass"])(el, str)) {
48575    el.classList.remove(str);
48576  }
48577} : function (el, str) {
48578  if (Object(_hasClass_js__WEBPACK_IMPORTED_MODULE_0__["hasClass"])(el, str)) {
48579    el.className = el.className.replace(str, '');
48580  }
48581};
48582
48583
48584/***/ }),
48585
vendor: 1,105 bytes, lines 48586-48606
48586/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeEvents.js":
48587/*!*********************************************************************************!*\
48588  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeEvents.js ***!
48589  \*********************************************************************************/
48590/*! exports provided: removeEvents */
48591/***/ (function(module, __webpack_exports__, __webpack_require__) {
48592
48593"use strict";
48594__webpack_require__.r(__webpack_exports__);
48595/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "removeEvents", function() { return removeEvents; });
48596/* harmony import */ var _passiveOption_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./passiveOption.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/passiveOption.js");
48597
48598function removeEvents(el, obj) {
48599  for (var prop in obj) {
48600    var option = ['touchstart', 'touchmove'].indexOf(prop) >= 0 ? _passiveOption_js__WEBPACK_IMPORTED_MODULE_0__["passiveOption"] : false;
48601    el.removeEventListener(prop, obj[prop], option);
48602  }
48603}
48604
48605/***/ }),
48606
vendor: 1,198 bytes, lines 48607-48630
48607/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/resetFakeBody.js":
48608/*!**********************************************************************************!*\
48609  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/resetFakeBody.js ***!
48610  \**********************************************************************************/
48611/*! exports provided: resetFakeBody */
48612/***/ (function(module, __webpack_exports__, __webpack_require__) {
48613
48614"use strict";
48615__webpack_require__.r(__webpack_exports__);
48616/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetFakeBody", function() { return resetFakeBody; });
48617/* harmony import */ var _docElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./docElement.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/docElement.js");
48618
48619function resetFakeBody(body, docOverflow) {
48620  if (body.fake) {
48621    body.remove();
48622    _docElement_js__WEBPACK_IMPORTED_MODULE_0__["docElement"].style.overflow = docOverflow; // Trigger layout so kinetic scrolling isn't disabled in iOS6+
48623    // eslint-disable-next-line
48624
48625    _docElement_js__WEBPACK_IMPORTED_MODULE_0__["docElement"].offsetHeight;
48626  }
48627}
48628
48629/***/ }),
48630
vendor: 1,168 bytes, lines 48631-48658
48631/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setAttrs.js":
48632/*!*****************************************************************************!*\
48633  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setAttrs.js ***!
48634  \*****************************************************************************/
48635/*! exports provided: setAttrs */
48636/***/ (function(module, __webpack_exports__, __webpack_require__) {
48637
48638"use strict";
48639__webpack_require__.r(__webpack_exports__);
48640/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAttrs", function() { return setAttrs; });
48641/* harmony import */ var _isNodeList_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isNodeList.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/isNodeList.js");
48642
48643function setAttrs(els, attrs) {
48644  els = Object(_isNodeList_js__WEBPACK_IMPORTED_MODULE_0__["isNodeList"])(els) || els instanceof Array ? els : [els];
48645
48646  if (Object.prototype.toString.call(attrs) !== '[object Object]') {
48647    return;
48648  }
48649
48650  for (var i = els.length; i--;) {
48651    for (var key in attrs) {
48652      els[i].setAttribute(key, attrs[key]);
48653    }
48654  }
48655}
48656
48657/***/ }),
48658
vendor: 1,398 bytes, lines 48659-48687
48659/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setFakeBody.js":
48660/*!********************************************************************************!*\
48661  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setFakeBody.js ***!
48662  \********************************************************************************/
48663/*! exports provided: setFakeBody */
48664/***/ (function(module, __webpack_exports__, __webpack_require__) {
48665
48666"use strict";
48667__webpack_require__.r(__webpack_exports__);
48668/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setFakeBody", function() { return setFakeBody; });
48669/* harmony import */ var _docElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./docElement.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/docElement.js");
48670
48671function setFakeBody(body) {
48672  var docOverflow = '';
48673
48674  if (body.fake) {
48675    docOverflow = _docElement_js__WEBPACK_IMPORTED_MODULE_0__["docElement"].style.overflow; //avoid crashing IE8, if background image is used
48676
48677    body.style.background = ''; //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
48678
48679    body.style.overflow = _docElement_js__WEBPACK_IMPORTED_MODULE_0__["docElement"].style.overflow = 'hidden';
48680    _docElement_js__WEBPACK_IMPORTED_MODULE_0__["docElement"].appendChild(body);
48681  }
48682
48683  return docOverflow;
48684}
48685
48686/***/ }),
48687
vendor: 828 bytes, lines 48688-48709
48688/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setLocalStorage.js":
48689/*!************************************************************************************!*\
48690  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setLocalStorage.js ***!
48691  \************************************************************************************/
48692/*! exports provided: setLocalStorage */
48693/***/ (function(module, __webpack_exports__, __webpack_require__) {
48694
48695"use strict";
48696__webpack_require__.r(__webpack_exports__);
48697/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setLocalStorage", function() { return setLocalStorage; });
48698function setLocalStorage(storage, key, value, access) {
48699  if (access) {
48700    try {
48701      storage.setItem(key, value);
48702    } catch (e) {}
48703  }
48704
48705  return value;
48706}
48707
48708/***/ }),
48709
vendor: 749 bytes, lines 48710-48727
48710/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/showElement.js":
48711/*!********************************************************************************!*\
48712  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/showElement.js ***!
48713  \********************************************************************************/
48714/*! exports provided: showElement */
48715/***/ (function(module, __webpack_exports__, __webpack_require__) {
48716
48717"use strict";
48718__webpack_require__.r(__webpack_exports__);
48719/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showElement", function() { return showElement; });
48720function showElement(el, forceHide) {
48721  if (el.style.display === 'none') {
48722    el.style.display = '';
48723  }
48724}
48725
48726/***/ }),
48727
vendor: 693 bytes, lines 48728-48743
48728/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/toDegree.js":
48729/*!*****************************************************************************!*\
48730  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/toDegree.js ***!
48731  \*****************************************************************************/
48732/*! exports provided: toDegree */
48733/***/ (function(module, __webpack_exports__, __webpack_require__) {
48734
48735"use strict";
48736__webpack_require__.r(__webpack_exports__);
48737/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toDegree", function() { return toDegree; });
48738function toDegree(y, x) {
48739  return Math.atan2(y, x) * (180 / Math.PI);
48740}
48741
48742/***/ }),
48743
vendor: 1,281 bytes, lines 48744-48782
48744/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/whichProperty.js":
48745/*!**********************************************************************************!*\
48746  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/whichProperty.js ***!
48747  \**********************************************************************************/
48748/*! exports provided: whichProperty */
48749/***/ (function(module, __webpack_exports__, __webpack_require__) {
48750
48751"use strict";
48752__webpack_require__.r(__webpack_exports__);
48753/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "whichProperty", function() { return whichProperty; });
48754function whichProperty(props) {
48755  if (typeof props === 'string') {
48756    var arr = [props],
48757        Props = props.charAt(0).toUpperCase() + props.substr(1),
48758        prefixes = ['Webkit', 'Moz', 'ms', 'O'];
48759    prefixes.forEach(function (prefix) {
48760      if (prefix !== 'ms' || props === 'transform') {
48761        arr.push(prefix + Props);
48762      }
48763    });
48764    props = arr;
48765  }
48766
48767  var el = document.createElement('fakeelement'),
48768      len = props.length;
48769
48770  for (var i = 0; i < props.length; i++) {
48771    var prop = props[i];
48772
48773    if (el.style[prop] !== undefined) {
48774      return prop;
48775    }
48776  }
48777
48778  return false; // explicit for ie9-
48779}
48780
48781/***/ }),
48782
vendor: 113,083 bytes, lines 48783-52067
48783/***/ "../rvw_autobahn_core/node_modules/tiny-slider/src/tiny-slider.js":
48784/*!************************************************************************!*\
48785  !*** ../rvw_autobahn_core/node_modules/tiny-slider/src/tiny-slider.js ***!
48786  \************************************************************************/
48787/*! exports provided: tns */
48788/***/ (function(module, __webpack_exports__, __webpack_require__) {
48789
48790"use strict";
48791__webpack_require__.r(__webpack_exports__);
48792/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tns", function() { return tns; });
48793/* harmony import */ var _helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./helpers/raf.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/raf.js");
48794/* harmony import */ var _helpers_caf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./helpers/caf.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/caf.js");
48795/* harmony import */ var _helpers_extend_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./helpers/extend.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/extend.js");
48796/* harmony import */ var _helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./helpers/checkStorageValue.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/checkStorageValue.js");
48797/* harmony import */ var _helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./helpers/setLocalStorage.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setLocalStorage.js");
48798/* harmony import */ var _helpers_getSlideId_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./helpers/getSlideId.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getSlideId.js");
48799/* harmony import */ var _helpers_calc_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./helpers/calc.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/calc.js");
48800/* harmony import */ var _helpers_percentageLayout_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./helpers/percentageLayout.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/percentageLayout.js");
48801/* harmony import */ var _helpers_mediaquerySupport_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./helpers/mediaquerySupport.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/mediaquerySupport.js");
48802/* harmony import */ var _helpers_createStyleSheet_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./helpers/createStyleSheet.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/createStyleSheet.js");
48803/* harmony import */ var _helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./helpers/addCSSRule.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addCSSRule.js");
48804/* harmony import */ var _helpers_removeCSSRule_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./helpers/removeCSSRule.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeCSSRule.js");
48805/* harmony import */ var _helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./helpers/getCssRulesLength.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getCssRulesLength.js");
48806/* harmony import */ var _helpers_toDegree_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./helpers/toDegree.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/toDegree.js");
48807/* harmony import */ var _helpers_getTouchDirection_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./helpers/getTouchDirection.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getTouchDirection.js");
48808/* harmony import */ var _helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./helpers/forEach.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/forEach.js");
48809/* harmony import */ var _helpers_hasClass_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./helpers/hasClass.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hasClass.js");
48810/* harmony import */ var _helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./helpers/addClass.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addClass.js");
48811/* harmony import */ var _helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./helpers/removeClass.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeClass.js");
48812/* harmony import */ var _helpers_hasAttr_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./helpers/hasAttr.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hasAttr.js");
48813/* harmony import */ var _helpers_getAttr_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./helpers/getAttr.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getAttr.js");
48814/* harmony import */ var _helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./helpers/setAttrs.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/setAttrs.js");
48815/* harmony import */ var _helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./helpers/removeAttrs.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeAttrs.js");
48816/* harmony import */ var _helpers_arrayFromNodeList_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./helpers/arrayFromNodeList.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/arrayFromNodeList.js");
48817/* harmony import */ var _helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./helpers/hideElement.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/hideElement.js");
48818/* harmony import */ var _helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./helpers/showElement.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/showElement.js");
48819/* harmony import */ var _helpers_isVisible_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./helpers/isVisible.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/isVisible.js");
48820/* harmony import */ var _helpers_whichProperty_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./helpers/whichProperty.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/whichProperty.js");
48821/* harmony import */ var _helpers_has3DTransforms_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./helpers/has3DTransforms.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/has3DTransforms.js");
48822/* harmony import */ var _helpers_getEndProperty_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./helpers/getEndProperty.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/getEndProperty.js");
48823/* harmony import */ var _helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./helpers/addEvents.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/addEvents.js");
48824/* harmony import */ var _helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./helpers/removeEvents.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/removeEvents.js");
48825/* harmony import */ var _helpers_events_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./helpers/events.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/events.js");
48826/* harmony import */ var _helpers_jsTransform_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./helpers/jsTransform.js */ "../rvw_autobahn_core/node_modules/tiny-slider/src/helpers/jsTransform.js");
48827function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
48828
48829// Object.keys
48830if (!Object.keys) {
48831  Object.keys = function (object) {
48832    var keys = [];
48833
48834    for (var name in object) {
48835      if (Object.prototype.hasOwnProperty.call(object, name)) {
48836        keys.push(name);
48837      }
48838    }
48839
48840    return keys;
48841  };
48842} // ChildNode.remove
48843
48844
48845if (!("remove" in Element.prototype)) {
48846  Element.prototype.remove = function () {
48847    if (this.parentNode) {
48848      this.parentNode.removeChild(this);
48849    }
48850  };
48851}
48852
48853
48854
48855
48856
48857
48858
48859
48860
48861
48862
48863
48864
48865
48866
48867
48868
48869
48870
48871
48872
48873
48874
48875
48876
48877
48878
48879
48880
48881
48882
48883
48884
48885
48886
48887var tns = function tns(options) {
48888  options = Object(_helpers_extend_js__WEBPACK_IMPORTED_MODULE_2__["extend"])({
48889    container: '.slider',
48890    mode: 'carousel',
48891    axis: 'horizontal',
48892    items: 1,
48893    gutter: 0,
48894    edgePadding: 0,
48895    fixedWidth: false,
48896    autoWidth: false,
48897    viewportMax: false,
48898    slideBy: 1,
48899    center: false,
48900    controls: true,
48901    controlsPosition: 'top',
48902    controlsText: ['prev', 'next'],
48903    controlsContainer: false,
48904    prevButton: false,
48905    nextButton: false,
48906    nav: true,
48907    navPosition: 'top',
48908    navContainer: false,
48909    navAsThumbnails: false,
48910    arrowKeys: false,
48911    speed: 300,
48912    autoplay: false,
48913    autoplayPosition: 'top',
48914    autoplayTimeout: 5000,
48915    autoplayDirection: 'forward',
48916    autoplayText: ['start', 'stop'],
48917    autoplayHoverPause: false,
48918    autoplayButton: false,
48919    autoplayButtonOutput: true,
48920    autoplayResetOnVisibility: true,
48921    animateIn: 'tns-fadeIn',
48922    animateOut: 'tns-fadeOut',
48923    animateNormal: 'tns-normal',
48924    animateDelay: false,
48925    loop: true,
48926    rewind: false,
48927    autoHeight: false,
48928    responsive: false,
48929    lazyload: false,
48930    lazyloadSelector: '.tns-lazy-img',
48931    touch: true,
48932    mouseDrag: false,
48933    swipeAngle: 15,
48934    nested: false,
48935    preventActionWhenRunning: false,
48936    preventScrollOnTouch: false,
48937    freezable: true,
48938    onInit: false,
48939    useLocalStorage: true,
48940    nonce: false
48941  }, options || {});
48942  var doc = document,
48943      win = window,
48944      KEYS = {
48945    ENTER: 13,
48946    SPACE: 32,
48947    LEFT: 37,
48948    RIGHT: 39
48949  },
48950      tnsStorage = {},
48951      localStorageAccess = options.useLocalStorage;
48952
48953  if (localStorageAccess) {
48954    // check browser version and local storage access
48955    var browserInfo = navigator.userAgent;
48956    var uid = new Date();
48957
48958    try {
48959      tnsStorage = win.localStorage;
48960
48961      if (tnsStorage) {
48962        tnsStorage.setItem(uid, uid);
48963        localStorageAccess = tnsStorage.getItem(uid) == uid;
48964        tnsStorage.removeItem(uid);
48965      } else {
48966        localStorageAccess = false;
48967      }
48968
48969      if (!localStorageAccess) {
48970        tnsStorage = {};
48971      }
48972    } catch (e) {
48973      localStorageAccess = false;
48974    }
48975
48976    if (localStorageAccess) {
48977      // remove storage when browser version changes
48978      if (tnsStorage['tnsApp'] && tnsStorage['tnsApp'] !== browserInfo) {
48979        ['tC', 'tPL', 'tMQ', 'tTf', 't3D', 'tTDu', 'tTDe', 'tADu', 'tADe', 'tTE', 'tAE'].forEach(function (item) {
48980          tnsStorage.removeItem(item);
48981        });
48982      } // update browserInfo
48983
48984
48985      localStorage['tnsApp'] = browserInfo;
48986    }
48987  }
48988
48989  var CALC = tnsStorage['tC'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tC']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tC', Object(_helpers_calc_js__WEBPACK_IMPORTED_MODULE_6__["calc"])(), localStorageAccess),
48990      PERCENTAGELAYOUT = tnsStorage['tPL'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tPL']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tPL', Object(_helpers_percentageLayout_js__WEBPACK_IMPORTED_MODULE_7__["percentageLayout"])(), localStorageAccess),
48991      CSSMQ = tnsStorage['tMQ'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tMQ']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tMQ', Object(_helpers_mediaquerySupport_js__WEBPACK_IMPORTED_MODULE_8__["mediaquerySupport"])(), localStorageAccess),
48992      TRANSFORM = tnsStorage['tTf'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tTf']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tTf', Object(_helpers_whichProperty_js__WEBPACK_IMPORTED_MODULE_27__["whichProperty"])('transform'), localStorageAccess),
48993      HAS3DTRANSFORMS = tnsStorage['t3D'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['t3D']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 't3D', Object(_helpers_has3DTransforms_js__WEBPACK_IMPORTED_MODULE_28__["has3DTransforms"])(TRANSFORM), localStorageAccess),
48994      TRANSITIONDURATION = tnsStorage['tTDu'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tTDu']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tTDu', Object(_helpers_whichProperty_js__WEBPACK_IMPORTED_MODULE_27__["whichProperty"])('transitionDuration'), localStorageAccess),
48995      TRANSITIONDELAY = tnsStorage['tTDe'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tTDe']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tTDe', Object(_helpers_whichProperty_js__WEBPACK_IMPORTED_MODULE_27__["whichProperty"])('transitionDelay'), localStorageAccess),
48996      ANIMATIONDURATION = tnsStorage['tADu'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tADu']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tADu', Object(_helpers_whichProperty_js__WEBPACK_IMPORTED_MODULE_27__["whichProperty"])('animationDuration'), localStorageAccess),
48997      ANIMATIONDELAY = tnsStorage['tADe'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tADe']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tADe', Object(_helpers_whichProperty_js__WEBPACK_IMPORTED_MODULE_27__["whichProperty"])('animationDelay'), localStorageAccess),
48998      TRANSITIONEND = tnsStorage['tTE'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tTE']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tTE', Object(_helpers_getEndProperty_js__WEBPACK_IMPORTED_MODULE_29__["getEndProperty"])(TRANSITIONDURATION, 'Transition'), localStorageAccess),
48999      ANIMATIONEND = tnsStorage['tAE'] ? Object(_helpers_checkStorageValue_js__WEBPACK_IMPORTED_MODULE_3__["checkStorageValue"])(tnsStorage['tAE']) : Object(_helpers_setLocalStorage_js__WEBPACK_IMPORTED_MODULE_4__["setLocalStorage"])(tnsStorage, 'tAE', Object(_helpers_getEndProperty_js__WEBPACK_IMPORTED_MODULE_29__["getEndProperty"])(ANIMATIONDURATION, 'Animation'), localStorageAccess); // get element nodes from selectors
49000
49001  var supportConsoleWarn = win.console && typeof win.console.warn === "function",
49002      tnsList = ['container', 'controlsContainer', 'prevButton', 'nextButton', 'navContainer', 'autoplayButton'],
49003      optionsElements = {};
49004  tnsList.forEach(function (item) {
49005    if (typeof options[item] === 'string') {
49006      var str = options[item],
49007          el = doc.querySelector(str);
49008      optionsElements[item] = str;
49009
49010      if (el && el.nodeName) {
49011        options[item] = el;
49012      } else {
49013        if (supportConsoleWarn) {
49014          console.warn('Can\'t find', options[item]);
49015        }
49016
49017        return;
49018      }
49019    }
49020  }); // make sure at least 1 slide
49021
49022  if (options.container.children.length < 1) {
49023    if (supportConsoleWarn) {
49024      console.warn('No slides found in', options.container);
49025    }
49026
49027    return;
49028  } // update options
49029
49030
49031  var responsive = options.responsive,
49032      nested = options.nested,
49033      carousel = options.mode === 'carousel' ? true : false;
49034
49035  if (responsive) {
49036    // apply responsive[0] to options and remove it
49037    if (0 in responsive) {
49038      options = Object(_helpers_extend_js__WEBPACK_IMPORTED_MODULE_2__["extend"])(options, responsive[0]);
49039      delete responsive[0];
49040    }
49041
49042    var responsiveTem = {};
49043
49044    for (var key in responsive) {
49045      var val = responsive[key]; // update responsive
49046      // from: 300: 2
49047      // to:
49048      //   300: {
49049      //     items: 2
49050      //   }
49051
49052      val = typeof val === 'number' ? {
49053        items: val
49054      } : val;
49055      responsiveTem[key] = val;
49056    }
49057
49058    responsive = responsiveTem;
49059    responsiveTem = null;
49060  } // update options
49061
49062
49063  function updateOptions(obj) {
49064    for (var key in obj) {
49065      if (!carousel) {
49066        if (key === 'slideBy') {
49067          obj[key] = 'page';
49068        }
49069
49070        if (key === 'edgePadding') {
49071          obj[key] = false;
49072        }
49073
49074        if (key === 'autoHeight') {
49075          obj[key] = false;
49076        }
49077      } // update responsive options
49078
49079
49080      if (key === 'responsive') {
49081        updateOptions(obj[key]);
49082      }
49083    }
49084  }
49085
49086  if (!carousel) {
49087    updateOptions(options);
49088  } // === define and set variables ===
49089
49090
49091  if (!carousel) {
49092    options.axis = 'horizontal';
49093    options.slideBy = 'page';
49094    options.edgePadding = false;
49095    var animateIn = options.animateIn,
49096        animateOut = options.animateOut,
49097        animateDelay = options.animateDelay,
49098        animateNormal = options.animateNormal;
49099  }
49100
49101  var horizontal = options.axis === 'horizontal' ? true : false,
49102      outerWrapper = doc.createElement('div'),
49103      innerWrapper = doc.createElement('div'),
49104      middleWrapper,
49105      container = options.container,
49106      containerParent = container.parentNode,
49107      containerHTML = container.outerHTML,
49108      slideItems = container.children,
49109      slideCount = slideItems.length,
49110      breakpointZone,
49111      windowWidth = getWindowWidth(),
49112      isOn = false;
49113
49114  if (responsive) {
49115    setBreakpointZone();
49116  }
49117
49118  if (carousel) {
49119    container.className += ' tns-vpfix';
49120  } // fixedWidth: viewport > rightBoundary > indexMax
49121
49122
49123  var autoWidth = options.autoWidth,
49124      fixedWidth = getOption('fixedWidth'),
49125      edgePadding = getOption('edgePadding'),
49126      gutter = getOption('gutter'),
49127      viewport = getViewportWidth(),
49128      center = getOption('center'),
49129      items = !autoWidth ? Math.floor(getOption('items')) : 1,
49130      slideBy = getOption('slideBy'),
49131      viewportMax = options.viewportMax || options.fixedWidthViewportWidth,
49132      arrowKeys = getOption('arrowKeys'),
49133      speed = getOption('speed'),
49134      rewind = options.rewind,
49135      loop = rewind ? false : options.loop,
49136      autoHeight = getOption('autoHeight'),
49137      controls = getOption('controls'),
49138      controlsText = getOption('controlsText'),
49139      nav = getOption('nav'),
49140      touch = getOption('touch'),
49141      mouseDrag = getOption('mouseDrag'),
49142      autoplay = getOption('autoplay'),
49143      autoplayTimeout = getOption('autoplayTimeout'),
49144      autoplayText = getOption('autoplayText'),
49145      autoplayHoverPause = getOption('autoplayHoverPause'),
49146      autoplayResetOnVisibility = getOption('autoplayResetOnVisibility'),
49147      sheet = Object(_helpers_createStyleSheet_js__WEBPACK_IMPORTED_MODULE_9__["createStyleSheet"])(null, getOption('nonce')),
49148      lazyload = options.lazyload,
49149      lazyloadSelector = options.lazyloadSelector,
49150      slidePositions,
49151      // collection of slide positions
49152  slideItemsOut = [],
49153      cloneCount = loop ? getCloneCountForLoop() : 0,
49154      slideCountNew = !carousel ? slideCount + cloneCount : slideCount + cloneCount * 2,
49155      hasRightDeadZone = (fixedWidth || autoWidth) && !loop ? true : false,
49156      rightBoundary = fixedWidth ? getRightBoundary() : null,
49157      updateIndexBeforeTransform = !carousel || !loop ? true : false,
49158      // transform
49159  transformAttr = horizontal ? 'left' : 'top',
49160      transformPrefix = '',
49161      transformPostfix = '',
49162      // index
49163  getIndexMax = function () {
49164    if (fixedWidth) {
49165      return function () {
49166        return center && !loop ? slideCount - 1 : Math.ceil(-rightBoundary / (fixedWidth + gutter));
49167      };
49168    } else if (autoWidth) {
49169      return function () {
49170        for (var i = 0; i < slideCountNew; i++) {
49171          if (slidePositions[i] >= -rightBoundary) {
49172            return i;
49173          }
49174        }
49175      };
49176    } else {
49177      return function () {
49178        if (center && carousel && !loop) {
49179          return slideCount - 1;
49180        } else {
49181          return loop || carousel ? Math.max(0, slideCountNew - Math.ceil(items)) : slideCountNew - 1;
49182        }
49183      };
49184    }
49185  }(),
49186      index = getStartIndex(getOption('startIndex')),
49187      indexCached = index,
49188      displayIndex = getCurrentSlide(),
49189      indexMin = 0,
49190      indexMax = !autoWidth ? getIndexMax() : null,
49191      // resize
49192  resizeTimer,
49193      preventActionWhenRunning = options.preventActionWhenRunning,
49194      swipeAngle = options.swipeAngle,
49195      moveDirectionExpected = swipeAngle ? '?' : true,
49196      running = false,
49197      onInit = options.onInit,
49198      events = new _helpers_events_js__WEBPACK_IMPORTED_MODULE_32__["Events"](),
49199      // id, class
49200  newContainerClasses = ' tns-slider tns-' + options.mode,
49201      slideId = container.id || Object(_helpers_getSlideId_js__WEBPACK_IMPORTED_MODULE_5__["getSlideId"])(),
49202      disable = getOption('disable'),
49203      disabled = false,
49204      freezable = options.freezable,
49205      freeze = freezable && !autoWidth ? getFreeze() : false,
49206      frozen = false,
49207      controlsEvents = {
49208    'click': onControlsClick,
49209    'keydown': onControlsKeydown
49210  },
49211      navEvents = {
49212    'click': onNavClick,
49213    'keydown': onNavKeydown
49214  },
49215      hoverEvents = {
49216    'mouseover': mouseoverPause,
49217    'mouseout': mouseoutRestart
49218  },
49219      visibilityEvent = {
49220    'visibilitychange': onVisibilityChange
49221  },
49222      docmentKeydownEvent = {
49223    'keydown': onDocumentKeydown
49224  },
49225      touchEvents = {
49226    'touchstart': onPanStart,
49227    'touchmove': onPanMove,
49228    'touchend': onPanEnd,
49229    'touchcancel': onPanEnd
49230  },
49231      dragEvents = {
49232    'mousedown': onPanStart,
49233    'mousemove': onPanMove,
49234    'mouseup': onPanEnd,
49235    'mouseleave': onPanEnd
49236  },
49237      hasControls = hasOption('controls'),
49238      hasNav = hasOption('nav'),
49239      navAsThumbnails = autoWidth ? true : options.navAsThumbnails,
49240      hasAutoplay = hasOption('autoplay'),
49241      hasTouch = hasOption('touch'),
49242      hasMouseDrag = hasOption('mouseDrag'),
49243      slideActiveClass = 'tns-slide-active',
49244      slideClonedClass = 'tns-slide-cloned',
49245      imgCompleteClass = 'tns-complete',
49246      imgEvents = {
49247    'load': onImgLoaded,
49248    'error': onImgFailed
49249  },
49250      imgsComplete,
49251      liveregionCurrent,
49252      preventScroll = options.preventScrollOnTouch === 'force' ? true : false; // controls
49253
49254
49255  if (hasControls) {
49256    var controlsContainer = options.controlsContainer,
49257        controlsContainerHTML = options.controlsContainer ? options.controlsContainer.outerHTML : '',
49258        prevButton = options.prevButton,
49259        nextButton = options.nextButton,
49260        prevButtonHTML = options.prevButton ? options.prevButton.outerHTML : '',
49261        nextButtonHTML = options.nextButton ? options.nextButton.outerHTML : '',
49262        prevIsButton,
49263        nextIsButton;
49264  } // nav
49265
49266
49267  if (hasNav) {
49268    var navContainer = options.navContainer,
49269        navContainerHTML = options.navContainer ? options.navContainer.outerHTML : '',
49270        navItems,
49271        pages = autoWidth ? slideCount : getPages(),
49272        pagesCached = 0,
49273        navClicked = -1,
49274        navCurrentIndex = getCurrentNavIndex(),
49275        navCurrentIndexCached = navCurrentIndex,
49276        navActiveClass = 'tns-nav-active',
49277        navStr = 'Carousel Page ',
49278        navStrCurrent = ' (Current Slide)';
49279  } // autoplay
49280
49281
49282  if (hasAutoplay) {
49283    var autoplayDirection = options.autoplayDirection === 'forward' ? 1 : -1,
49284        autoplayButton = options.autoplayButton,
49285        autoplayButtonHTML = options.autoplayButton ? options.autoplayButton.outerHTML : '',
49286        autoplayHtmlStrings = ['<span class=\'tns-visually-hidden\'>', ' animation</span>'],
49287        autoplayTimer,
49288        animating,
49289        autoplayHoverPaused,
49290        autoplayUserPaused,
49291        autoplayVisibilityPaused;
49292  }
49293
49294  if (hasTouch || hasMouseDrag) {
49295    var initPosition = {},
49296        lastPosition = {},
49297        translateInit,
49298        disX,
49299        disY,
49300        panStart = false,
49301        rafIndex,
49302        getDist = horizontal ? function (a, b) {
49303      return a.x - b.x;
49304    } : function (a, b) {
49305      return a.y - b.y;
49306    };
49307  } // disable slider when slidecount <= items
49308
49309
49310  if (!autoWidth) {
49311    resetVariblesWhenDisable(disable || freeze);
49312  }
49313
49314  if (TRANSFORM) {
49315    transformAttr = TRANSFORM;
49316    transformPrefix = 'translate';
49317
49318    if (HAS3DTRANSFORMS) {
49319      transformPrefix += horizontal ? '3d(' : '3d(0px, ';
49320      transformPostfix = horizontal ? ', 0px, 0px)' : ', 0px)';
49321    } else {
49322      transformPrefix += horizontal ? 'X(' : 'Y(';
49323      transformPostfix = ')';
49324    }
49325  }
49326
49327  if (carousel) {
49328    container.className = container.className.replace('tns-vpfix', '');
49329  }
49330
49331  initStructure();
49332  initSheet();
49333  initSliderTransform(); // === COMMON FUNCTIONS === //
49334
49335  function resetVariblesWhenDisable(condition) {
49336    if (condition) {
49337      controls = nav = touch = mouseDrag = arrowKeys = autoplay = autoplayHoverPause = autoplayResetOnVisibility = false;
49338    }
49339  }
49340
49341  function getCurrentSlide() {
49342    var tem = carousel ? index - cloneCount : index;
49343
49344    while (tem < 0) {
49345      tem += slideCount;
49346    }
49347
49348    return tem % slideCount + 1;
49349  }
49350
49351  function getStartIndex(ind) {
49352    ind = ind ? Math.max(0, Math.min(loop ? slideCount - 1 : slideCount - items, ind)) : 0;
49353    return carousel ? ind + cloneCount : ind;
49354  }
49355
49356  function getAbsIndex(i) {
49357    if (i == null) {
49358      i = index;
49359    }
49360
49361    if (carousel) {
49362      i -= cloneCount;
49363    }
49364
49365    while (i < 0) {
49366      i += slideCount;
49367    }
49368
49369    return Math.floor(i % slideCount);
49370  }
49371
49372  function getCurrentNavIndex() {
49373    var absIndex = getAbsIndex(),
49374        result;
49375    result = navAsThumbnails ? absIndex : fixedWidth || autoWidth ? Math.ceil((absIndex + 1) * pages / slideCount - 1) : Math.floor(absIndex / items); // set active nav to the last one when reaches the right edge
49376
49377    if (!loop && carousel && index === indexMax) {
49378      result = pages - 1;
49379    }
49380
49381    return result;
49382  }
49383
49384  function getItemsMax() {
49385    // fixedWidth or autoWidth while viewportMax is not available
49386    if (autoWidth || fixedWidth && !viewportMax) {
49387      return slideCount - 1; // most cases
49388    } else {
49389      var str = fixedWidth ? 'fixedWidth' : 'items',
49390          arr = [];
49391
49392      if (fixedWidth || options[str] < slideCount) {
49393        arr.push(options[str]);
49394      }
49395
49396      if (responsive) {
49397        for (var bp in responsive) {
49398          var tem = responsive[bp][str];
49399
49400          if (tem && (fixedWidth || tem < slideCount)) {
49401            arr.push(tem);
49402          }
49403        }
49404      }
49405
49406      if (!arr.length) {
49407        arr.push(0);
49408      }
49409
49410      return Math.ceil(fixedWidth ? viewportMax / Math.min.apply(null, arr) : Math.max.apply(null, arr));
49411    }
49412  }
49413
49414  function getCloneCountForLoop() {
49415    var itemsMax = getItemsMax(),
49416        result = carousel ? Math.ceil((itemsMax * 5 - slideCount) / 2) : itemsMax * 4 - slideCount;
49417    result = Math.max(itemsMax, result);
49418    return hasOption('edgePadding') ? result + 1 : result;
49419  }
49420
49421  function getWindowWidth() {
49422    return win.innerWidth || doc.documentElement.clientWidth || doc.body.clientWidth;
49423  }
49424
49425  function getInsertPosition(pos) {
49426    return pos === 'top' ? 'afterbegin' : 'beforeend';
49427  }
49428
49429  function getClientWidth(el) {
49430    if (el == null) {
49431      return;
49432    }
49433
49434    var div = doc.createElement('div'),
49435        rect,
49436        width;
49437    el.appendChild(div);
49438    rect = div.getBoundingClientRect();
49439    width = rect.right - rect.left;
49440    div.remove();
49441
49442    if (width) {
49443      return width;
49444    } else if (el.parentNode.parentNode !== null) {
49445      getClientWidth(el.parentNode);
49446    } else {
49447      return;
49448    }
49449  }
49450
49451  function getViewportWidth() {
49452    var gap = edgePadding ? edgePadding * 2 - gutter : 0;
49453    return getClientWidth(containerParent) - gap;
49454  }
49455
49456  function hasOption(item) {
49457    if (options[item]) {
49458      return true;
49459    } else {
49460      if (responsive) {
49461        for (var bp in responsive) {
49462          if (responsive[bp][item]) {
49463            return true;
49464          }
49465        }
49466      }
49467
49468      return false;
49469    }
49470  } // get option:
49471  // fixed width: viewport, fixedWidth, gutter => items
49472  // others: window width => all variables
49473  // all: items => slideBy
49474
49475
49476  function getOption(item, ww) {
49477    if (ww == null) {
49478      ww = windowWidth;
49479    }
49480
49481    if (item === 'items' && fixedWidth) {
49482      return Math.floor((viewport + gutter) / (fixedWidth + gutter)) || 1;
49483    } else {
49484      var result = options[item];
49485
49486      if (responsive) {
49487        for (var bp in responsive) {
49488          // bp: convert string to number
49489          if (ww >= parseInt(bp)) {
49490            if (item in responsive[bp]) {
49491              result = responsive[bp][item];
49492            }
49493          }
49494        }
49495      }
49496
49497      if (item === 'slideBy' && result === 'page') {
49498        result = getOption('items');
49499      }
49500
49501      if (!carousel && (item === 'slideBy' || item === 'items')) {
49502        result = Math.floor(result);
49503      }
49504
49505      return result;
49506    }
49507  }
49508
49509  function getSlideMarginLeft(i) {
49510    return CALC ? CALC + '(' + i * 100 + '% / ' + slideCountNew + ')' : i * 100 / slideCountNew + '%';
49511  }
49512
49513  function getInnerWrapperStyles(edgePaddingTem, gutterTem, fixedWidthTem, speedTem, autoHeightBP) {
49514    var str = '';
49515
49516    if (edgePaddingTem !== undefined) {
49517      var gap = edgePaddingTem;
49518
49519      if (gutterTem) {
49520        gap -= gutterTem;
49521      }
49522
49523      str = horizontal ? 'margin: 0 ' + gap + 'px 0 ' + edgePaddingTem + 'px;' : 'margin: ' + edgePaddingTem + 'px 0 ' + gap + 'px 0;';
49524    } else if (gutterTem && !fixedWidthTem) {
49525      var gutterTemUnit = '-' + gutterTem + 'px',
49526          dir = horizontal ? gutterTemUnit + ' 0 0' : '0 ' + gutterTemUnit + ' 0';
49527      str = 'margin: 0 ' + dir + ';';
49528    }
49529
49530    if (!carousel && autoHeightBP && TRANSITIONDURATION && speedTem) {
49531      str += getTransitionDurationStyle(speedTem);
49532    }
49533
49534    return str;
49535  }
49536
49537  function getContainerWidth(fixedWidthTem, gutterTem, itemsTem) {
49538    if (fixedWidthTem) {
49539      return (fixedWidthTem + gutterTem) * slideCountNew + 'px';
49540    } else {
49541      return CALC ? CALC + '(' + slideCountNew * 100 + '% / ' + itemsTem + ')' : slideCountNew * 100 / itemsTem + '%';
49542    }
49543  }
49544
49545  function getSlideWidthStyle(fixedWidthTem, gutterTem, itemsTem) {
49546    var width;
49547
49548    if (fixedWidthTem) {
49549      width = fixedWidthTem + gutterTem + 'px';
49550    } else {
49551      if (!carousel) {
49552        itemsTem = Math.floor(itemsTem);
49553      }
49554
49555      var dividend = carousel ? slideCountNew : itemsTem;
49556      width = CALC ? CALC + '(100% / ' + dividend + ')' : 100 / dividend + '%';
49557    }
49558
49559    width = 'width:' + width; // inner slider: overwrite outer slider styles
49560
49561    return nested !== 'inner' ? width + ';' : width + ' !important;';
49562  }
49563
49564  function getSlideGutterStyle(gutterTem) {
49565    var str = ''; // gutter maybe interger || 0
49566    // so can't use 'if (gutter)'
49567
49568    if (gutterTem !== false) {
49569      var prop = horizontal ? 'padding-' : 'margin-',
49570          dir = horizontal ? 'right' : 'bottom';
49571      str = prop + dir + ': ' + gutterTem + 'px;';
49572    }
49573
49574    return str;
49575  }
49576
49577  function getCSSPrefix(name, num) {
49578    var prefix = name.substring(0, name.length - num).toLowerCase();
49579
49580    if (prefix) {
49581      prefix = '-' + prefix + '-';
49582    }
49583
49584    return prefix;
49585  }
49586
49587  function getTransitionDurationStyle(speed) {
49588    return getCSSPrefix(TRANSITIONDURATION, 18) + 'transition-duration:' + speed / 1000 + 's;';
49589  }
49590
49591  function getAnimationDurationStyle(speed) {
49592    return getCSSPrefix(ANIMATIONDURATION, 17) + 'animation-duration:' + speed / 1000 + 's;';
49593  }
49594
49595  function initStructure() {
49596    var classOuter = 'tns-outer',
49597        classInner = 'tns-inner',
49598        hasGutter = hasOption('gutter');
49599    outerWrapper.className = classOuter;
49600    innerWrapper.className = classInner;
49601    outerWrapper.id = slideId + '-ow';
49602    innerWrapper.id = slideId + '-iw'; // set container properties
49603
49604    if (container.id === '') {
49605      container.id = slideId;
49606    }
49607
49608    newContainerClasses += PERCENTAGELAYOUT || autoWidth ? ' tns-subpixel' : ' tns-no-subpixel';
49609    newContainerClasses += CALC ? ' tns-calc' : ' tns-no-calc';
49610
49611    if (autoWidth) {
49612      newContainerClasses += ' tns-autowidth';
49613    }
49614
49615    newContainerClasses += ' tns-' + options.axis;
49616    container.className += newContainerClasses; // add constrain layer for carousel
49617
49618    if (carousel) {
49619      middleWrapper = doc.createElement('div');
49620      middleWrapper.id = slideId + '-mw';
49621      middleWrapper.className = 'tns-ovh';
49622      outerWrapper.appendChild(middleWrapper);
49623      middleWrapper.appendChild(innerWrapper);
49624    } else {
49625      outerWrapper.appendChild(innerWrapper);
49626    }
49627
49628    if (autoHeight) {
49629      var wp = middleWrapper ? middleWrapper : innerWrapper;
49630      wp.className += ' tns-ah';
49631    }
49632
49633    containerParent.insertBefore(outerWrapper, container);
49634    innerWrapper.appendChild(container); // add id, class, aria attributes
49635    // before clone slides
49636
49637    Object(_helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__["forEach"])(slideItems, function (item, i) {
49638      Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, 'tns-item');
49639
49640      if (!item.id) {
49641        item.id = slideId + '-item' + i;
49642      }
49643
49644      if (!carousel && animateNormal) {
49645        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, animateNormal);
49646      }
49647
49648      Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(item, {
49649        'aria-hidden': 'true',
49650        'tabindex': '-1'
49651      });
49652      Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(item.querySelectorAll('a, button, details, input, textarea, select'), {
49653        'aria-hidden': 'true',
49654        'tabindex': '-1'
49655      });
49656    }); // ## clone slides
49657    // carousel: n + slides + n
49658    // gallery:      slides + n
49659
49660    if (cloneCount) {
49661      var fragmentBefore = doc.createDocumentFragment(),
49662          fragmentAfter = doc.createDocumentFragment();
49663
49664      for (var j = cloneCount; j--;) {
49665        var num = j % slideCount,
49666            cloneFirst = slideItems[num].cloneNode(true);
49667        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(cloneFirst, slideClonedClass);
49668        Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(cloneFirst, 'id');
49669        fragmentAfter.insertBefore(cloneFirst, fragmentAfter.firstChild);
49670
49671        if (carousel) {
49672          var cloneLast = slideItems[slideCount - 1 - num].cloneNode(true);
49673          Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(cloneLast, slideClonedClass);
49674          Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(cloneLast, 'id');
49675          fragmentBefore.appendChild(cloneLast);
49676        }
49677      }
49678
49679      container.insertBefore(fragmentBefore, container.firstChild);
49680      container.appendChild(fragmentAfter);
49681      slideItems = container.children;
49682    }
49683  }
49684
49685  function initSliderTransform() {
49686    // ## images loaded/failed
49687    if (hasOption('autoHeight') || autoWidth || !horizontal) {
49688      var imgs = container.querySelectorAll('img'); // add img load event listener
49689
49690      Object(_helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__["forEach"])(imgs, function (img) {
49691        var src = img.src;
49692
49693        if (!lazyload) {
49694          // not data img
49695          if (src && src.indexOf('data:image') < 0) {
49696            img.src = '';
49697            Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(img, imgEvents);
49698            Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(img, 'loading');
49699            img.src = src; // data img
49700          } else {
49701            imgLoaded(img);
49702          }
49703        }
49704      }); // set imgsComplete
49705
49706      Object(_helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__["raf"])(function () {
49707        imgsLoadedCheck(Object(_helpers_arrayFromNodeList_js__WEBPACK_IMPORTED_MODULE_23__["arrayFromNodeList"])(imgs), function () {
49708          imgsComplete = true;
49709        });
49710      }); // reset imgs for auto height: check visible imgs only
49711
49712      if (hasOption('autoHeight')) {
49713        imgs = getImageArray(index, Math.min(index + items - 1, slideCountNew - 1));
49714      }
49715
49716      lazyload ? initSliderTransformStyleCheck() : Object(_helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__["raf"])(function () {
49717        imgsLoadedCheck(Object(_helpers_arrayFromNodeList_js__WEBPACK_IMPORTED_MODULE_23__["arrayFromNodeList"])(imgs), initSliderTransformStyleCheck);
49718      });
49719    } else {
49720      // set container transform property
49721      if (carousel) {
49722        doContainerTransformSilent();
49723      } // update slider tools and events
49724
49725
49726      initTools();
49727      initEvents();
49728    }
49729  }
49730
49731  function initSliderTransformStyleCheck() {
49732    if (autoWidth && slideCount > 1) {
49733      // check styles application
49734      var num = loop ? index : slideCount - 1;
49735
49736      (function stylesApplicationCheck() {
49737        var left = slideItems[num].getBoundingClientRect().left;
49738        var right = slideItems[num - 1].getBoundingClientRect().right;
49739        Math.abs(left - right) <= 1 ? initSliderTransformCore() : setTimeout(function () {
49740          stylesApplicationCheck();
49741        }, 16);
49742      })();
49743    } else {
49744      initSliderTransformCore();
49745    }
49746  }
49747
49748  function initSliderTransformCore() {
49749    // run Fn()s which are rely on image loading
49750    if (!horizontal || autoWidth) {
49751      setSlidePositions();
49752
49753      if (autoWidth) {
49754        rightBoundary = getRightBoundary();
49755
49756        if (freezable) {
49757          freeze = getFreeze();
49758        }
49759
49760        indexMax = getIndexMax(); // <= slidePositions, rightBoundary <=
49761
49762        resetVariblesWhenDisable(disable || freeze);
49763      } else {
49764        updateContentWrapperHeight();
49765      }
49766    } // set container transform property
49767
49768
49769    if (carousel) {
49770      doContainerTransformSilent();
49771    } // update slider tools and events
49772
49773
49774    initTools();
49775    initEvents();
49776  }
49777
49778  function initSheet() {
49779    // gallery:
49780    // set animation classes and left value for gallery slider
49781    if (!carousel) {
49782      for (var i = index, l = index + Math.min(slideCount, items); i < l; i++) {
49783        var item = slideItems[i];
49784        item.style.left = (i - index) * 100 / items + '%';
49785        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, animateIn);
49786        Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, animateNormal);
49787      }
49788    } // #### LAYOUT
49789    // ## INLINE-BLOCK VS FLOAT
49790    // ## PercentageLayout:
49791    // slides: inline-block
49792    // remove blank space between slides by set font-size: 0
49793    // ## Non PercentageLayout:
49794    // slides: float
49795    //         margin-right: -100%
49796    //         margin-left: ~
49797    // Resource: https://docs.google.com/spreadsheets/d/147up245wwTXeQYve3BRSAD4oVcvQmuGsFteJOeA5xNQ/edit?usp=sharing
49798
49799
49800    if (horizontal) {
49801      if (PERCENTAGELAYOUT || autoWidth) {
49802        Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '#' + slideId + ' > .tns-item', 'font-size:' + win.getComputedStyle(slideItems[0]).fontSize + ';', Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet));
49803        Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '#' + slideId, 'font-size:0;', Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet));
49804      } else if (carousel) {
49805        Object(_helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__["forEach"])(slideItems, function (slide, i) {
49806          slide.style.marginLeft = getSlideMarginLeft(i);
49807        });
49808      }
49809    } // ## BASIC STYLES
49810
49811
49812    if (CSSMQ) {
49813      // middle wrapper style
49814      if (TRANSITIONDURATION) {
49815        var str = middleWrapper && options.autoHeight ? getTransitionDurationStyle(options.speed) : '';
49816        Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '#' + slideId + '-mw', str, Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet));
49817      } // inner wrapper styles
49818
49819
49820      str = getInnerWrapperStyles(options.edgePadding, options.gutter, options.fixedWidth, options.speed, options.autoHeight);
49821      Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '#' + slideId + '-iw', str, Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet)); // container styles
49822
49823      if (carousel) {
49824        str = horizontal && !autoWidth ? 'width:' + getContainerWidth(options.fixedWidth, options.gutter, options.items) + ';' : '';
49825
49826        if (TRANSITIONDURATION) {
49827          str += getTransitionDurationStyle(speed);
49828        }
49829
49830        Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '#' + slideId, str, Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet));
49831      } // slide styles
49832
49833
49834      str = horizontal && !autoWidth ? getSlideWidthStyle(options.fixedWidth, options.gutter, options.items) : '';
49835
49836      if (options.gutter) {
49837        str += getSlideGutterStyle(options.gutter);
49838      } // set gallery items transition-duration
49839
49840
49841      if (!carousel) {
49842        if (TRANSITIONDURATION) {
49843          str += getTransitionDurationStyle(speed);
49844        }
49845
49846        if (ANIMATIONDURATION) {
49847          str += getAnimationDurationStyle(speed);
49848        }
49849      }
49850
49851      if (str) {
49852        Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '#' + slideId + ' > .tns-item', str, Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet));
49853      } // non CSS mediaqueries: IE8
49854      // ## update inner wrapper, container, slides if needed
49855      // set inline styles for inner wrapper & container
49856      // insert stylesheet (one line) for slides only (since slides are many)
49857
49858    } else {
49859      // middle wrapper styles
49860      update_carousel_transition_duration(); // inner wrapper styles
49861
49862      innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, autoHeight); // container styles
49863
49864      if (carousel && horizontal && !autoWidth) {
49865        container.style.width = getContainerWidth(fixedWidth, gutter, items);
49866      } // slide styles
49867
49868
49869      var str = horizontal && !autoWidth ? getSlideWidthStyle(fixedWidth, gutter, items) : '';
49870
49871      if (gutter) {
49872        str += getSlideGutterStyle(gutter);
49873      } // append to the last line
49874
49875
49876      if (str) {
49877        Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '#' + slideId + ' > .tns-item', str, Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet));
49878      }
49879    } // ## MEDIAQUERIES
49880
49881
49882    if (responsive && CSSMQ) {
49883      for (var bp in responsive) {
49884        // bp: convert string to number
49885        bp = parseInt(bp);
49886        var opts = responsive[bp],
49887            str = '',
49888            middleWrapperStr = '',
49889            innerWrapperStr = '',
49890            containerStr = '',
49891            slideStr = '',
49892            itemsBP = !autoWidth ? getOption('items', bp) : null,
49893            fixedWidthBP = getOption('fixedWidth', bp),
49894            speedBP = getOption('speed', bp),
49895            edgePaddingBP = getOption('edgePadding', bp),
49896            autoHeightBP = getOption('autoHeight', bp),
49897            gutterBP = getOption('gutter', bp); // middle wrapper string
49898
49899        if (TRANSITIONDURATION && middleWrapper && getOption('autoHeight', bp) && 'speed' in opts) {
49900          middleWrapperStr = '#' + slideId + '-mw{' + getTransitionDurationStyle(speedBP) + '}';
49901        } // inner wrapper string
49902
49903
49904        if ('edgePadding' in opts || 'gutter' in opts) {
49905          innerWrapperStr = '#' + slideId + '-iw{' + getInnerWrapperStyles(edgePaddingBP, gutterBP, fixedWidthBP, speedBP, autoHeightBP) + '}';
49906        } // container string
49907
49908
49909        if (carousel && horizontal && !autoWidth && ('fixedWidth' in opts || 'items' in opts || fixedWidth && 'gutter' in opts)) {
49910          containerStr = 'width:' + getContainerWidth(fixedWidthBP, gutterBP, itemsBP) + ';';
49911        }
49912
49913        if (TRANSITIONDURATION && 'speed' in opts) {
49914          containerStr += getTransitionDurationStyle(speedBP);
49915        }
49916
49917        if (containerStr) {
49918          containerStr = '#' + slideId + '{' + containerStr + '}';
49919        } // slide string
49920
49921
49922        if ('fixedWidth' in opts || fixedWidth && 'gutter' in opts || !carousel && 'items' in opts) {
49923          slideStr += getSlideWidthStyle(fixedWidthBP, gutterBP, itemsBP);
49924        }
49925
49926        if ('gutter' in opts) {
49927          slideStr += getSlideGutterStyle(gutterBP);
49928        } // set gallery items transition-duration
49929
49930
49931        if (!carousel && 'speed' in opts) {
49932          if (TRANSITIONDURATION) {
49933            slideStr += getTransitionDurationStyle(speedBP);
49934          }
49935
49936          if (ANIMATIONDURATION) {
49937            slideStr += getAnimationDurationStyle(speedBP);
49938          }
49939        }
49940
49941        if (slideStr) {
49942          slideStr = '#' + slideId + ' > .tns-item{' + slideStr + '}';
49943        } // add up
49944
49945
49946        str = middleWrapperStr + innerWrapperStr + containerStr + slideStr;
49947
49948        if (str) {
49949          sheet.insertRule('@media (min-width: ' + bp / 16 + 'em) {' + str + '}', sheet.cssRules.length);
49950        }
49951      }
49952    }
49953  }
49954
49955  function initTools() {
49956    // == slides ==
49957    updateSlideStatus(); // == live region ==
49958
49959    outerWrapper.insertAdjacentHTML('afterbegin', '<div class="tns-liveregion tns-visually-hidden" aria-live="polite" aria-atomic="true">slide <span class="current">' + getLiveRegionStr() + '</span>  of ' + slideCount + '</div>');
49960    liveregionCurrent = outerWrapper.querySelector('.tns-liveregion .current'); // == autoplayInit ==
49961
49962    if (hasAutoplay) {
49963      var txt = autoplay ? 'stop' : 'start';
49964
49965      if (autoplayButton) {
49966        Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(autoplayButton, {
49967          'data-action': txt
49968        });
49969      } else if (options.autoplayButtonOutput) {
49970        outerWrapper.insertAdjacentHTML(getInsertPosition(options.autoplayPosition), '<button type="button" data-action="' + txt + '">' + autoplayHtmlStrings[0] + txt + autoplayHtmlStrings[1] + autoplayText[0] + '</button>');
49971        autoplayButton = outerWrapper.querySelector('[data-action]');
49972      } // add event
49973
49974
49975      if (autoplayButton) {
49976        Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(autoplayButton, {
49977          'click': toggleAutoplay
49978        });
49979      }
49980
49981      if (autoplay) {
49982        startAutoplay();
49983
49984        if (autoplayHoverPause) {
49985          Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(container, hoverEvents);
49986        }
49987
49988        if (autoplayResetOnVisibility) {
49989          Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(container, visibilityEvent);
49990        }
49991      }
49992    } // == navInit ==
49993
49994
49995    if (hasNav) {
49996      var initIndex = !carousel ? 0 : cloneCount; // customized nav
49997      // will not hide the navs in case they're thumbnails
49998
49999      if (navContainer) {
50000        Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(navContainer, {
50001          'aria-label': 'Carousel Pagination'
50002        });
50003        navItems = navContainer.children;
50004        Object(_helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__["forEach"])(navItems, function (item, i) {
50005          Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(item, {
50006            'data-nav': i,
50007            'tabindex': '-1',
50008            'aria-label': navStr + (i + 1),
50009            'aria-controls': slideId
50010          });
50011        }); // generated nav
50012      } else {
50013        var navHtml = '',
50014            hiddenStr = navAsThumbnails ? '' : 'style="display:none"';
50015
50016        for (var i = 0; i < slideCount; i++) {
50017          // hide nav items by default
50018          navHtml += '<button type="button" data-nav="' + i + '" tabindex="-1" aria-controls="' + slideId + '" ' + hiddenStr + ' aria-label="' + navStr + (i + 1) + '"></button>';
50019        }
50020
50021        navHtml = '<div class="tns-nav" aria-label="Carousel Pagination">' + navHtml + '</div>';
50022        outerWrapper.insertAdjacentHTML(getInsertPosition(options.navPosition), navHtml);
50023        navContainer = outerWrapper.querySelector('.tns-nav');
50024        navItems = navContainer.children;
50025      }
50026
50027      updateNavVisibility(); // add transition
50028
50029      if (TRANSITIONDURATION) {
50030        var prefix = TRANSITIONDURATION.substring(0, TRANSITIONDURATION.length - 18).toLowerCase(),
50031            str = 'transition: all ' + speed / 1000 + 's';
50032
50033        if (prefix) {
50034          str = '-' + prefix + '-' + str;
50035        }
50036
50037        Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '[aria-controls^=' + slideId + '-item]', str, Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet));
50038      }
50039
50040      Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(navItems[navCurrentIndex], {
50041        'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent
50042      });
50043      Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(navItems[navCurrentIndex], 'tabindex');
50044      Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(navItems[navCurrentIndex], navActiveClass); // add events
50045
50046      Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(navContainer, navEvents);
50047    } // == controlsInit ==
50048
50049
50050    if (hasControls) {
50051      if (!controlsContainer && (!prevButton || !nextButton)) {
50052        outerWrapper.insertAdjacentHTML(getInsertPosition(options.controlsPosition), '<div class="tns-controls" aria-label="Carousel Navigation" tabindex="0"><button type="button" data-controls="prev" tabindex="-1" aria-controls="' + slideId + '">' + controlsText[0] + '</button><button type="button" data-controls="next" tabindex="-1" aria-controls="' + slideId + '">' + controlsText[1] + '</button></div>');
50053        controlsContainer = outerWrapper.querySelector('.tns-controls');
50054      }
50055
50056      if (!prevButton || !nextButton) {
50057        prevButton = controlsContainer.children[0];
50058        nextButton = controlsContainer.children[1];
50059      }
50060
50061      if (options.controlsContainer) {
50062        Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(controlsContainer, {
50063          'aria-label': 'Carousel Navigation',
50064          'tabindex': '0'
50065        });
50066      }
50067
50068      if (options.controlsContainer || options.prevButton && options.nextButton) {
50069        Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])([prevButton, nextButton], {
50070          'aria-controls': slideId,
50071          'tabindex': '-1'
50072        });
50073      }
50074
50075      if (options.controlsContainer || options.prevButton && options.nextButton) {
50076        Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(prevButton, {
50077          'data-controls': 'prev'
50078        });
50079        Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(nextButton, {
50080          'data-controls': 'next'
50081        });
50082      }
50083
50084      prevIsButton = isButton(prevButton);
50085      nextIsButton = isButton(nextButton);
50086      updateControlsStatus(); // add events
50087
50088      if (controlsContainer) {
50089        Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(controlsContainer, controlsEvents);
50090      } else {
50091        Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(prevButton, controlsEvents);
50092        Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(nextButton, controlsEvents);
50093      }
50094    } // hide tools if needed
50095
50096
50097    disableUI();
50098  }
50099
50100  function initEvents() {
50101    // add events
50102    if (carousel && TRANSITIONEND) {
50103      var eve = {};
50104      eve[TRANSITIONEND] = onTransitionEnd;
50105      Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(container, eve);
50106    }
50107
50108    if (touch) {
50109      Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(container, touchEvents, options.preventScrollOnTouch);
50110    }
50111
50112    if (mouseDrag) {
50113      Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(container, dragEvents);
50114    }
50115
50116    if (arrowKeys) {
50117      Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(doc, docmentKeydownEvent);
50118    }
50119
50120    if (nested === 'inner') {
50121      events.on('outerResized', function () {
50122        resizeTasks();
50123        events.emit('innerLoaded', info());
50124      });
50125    } else if (responsive || fixedWidth || autoWidth || autoHeight || !horizontal) {
50126      Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(win, {
50127        'resize': onResize
50128      });
50129    }
50130
50131    if (autoHeight) {
50132      if (nested === 'outer') {
50133        events.on('innerLoaded', doAutoHeight);
50134      } else if (!disable) {
50135        doAutoHeight();
50136      }
50137    }
50138
50139    doLazyLoad();
50140
50141    if (disable) {
50142      disableSlider();
50143    } else if (freeze) {
50144      freezeSlider();
50145    }
50146
50147    events.on('indexChanged', additionalUpdates);
50148
50149    if (nested === 'inner') {
50150      events.emit('innerLoaded', info());
50151    }
50152
50153    if (typeof onInit === 'function') {
50154      onInit(info());
50155    }
50156
50157    isOn = true;
50158  }
50159
50160  function destroy() {
50161    // sheet
50162    sheet.disabled = true;
50163
50164    if (sheet.ownerNode) {
50165      sheet.ownerNode.remove();
50166    } // remove win event listeners
50167
50168
50169    Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(win, {
50170      'resize': onResize
50171    }); // arrowKeys, controls, nav
50172
50173    if (arrowKeys) {
50174      Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(doc, docmentKeydownEvent);
50175    }
50176
50177    if (controlsContainer) {
50178      Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(controlsContainer, controlsEvents);
50179    }
50180
50181    if (navContainer) {
50182      Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(navContainer, navEvents);
50183    } // autoplay
50184
50185
50186    Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(container, hoverEvents);
50187    Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(container, visibilityEvent);
50188
50189    if (autoplayButton) {
50190      Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(autoplayButton, {
50191        'click': toggleAutoplay
50192      });
50193    }
50194
50195    if (autoplay) {
50196      clearInterval(autoplayTimer);
50197    } // container
50198
50199
50200    if (carousel && TRANSITIONEND) {
50201      var eve = {};
50202      eve[TRANSITIONEND] = onTransitionEnd;
50203      Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(container, eve);
50204    }
50205
50206    if (touch) {
50207      Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(container, touchEvents);
50208    }
50209
50210    if (mouseDrag) {
50211      Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(container, dragEvents);
50212    } // cache Object values in options && reset HTML
50213
50214
50215    var htmlList = [containerHTML, controlsContainerHTML, prevButtonHTML, nextButtonHTML, navContainerHTML, autoplayButtonHTML];
50216    tnsList.forEach(function (item, i) {
50217      var el = item === 'container' ? outerWrapper : options[item];
50218
50219      if (_typeof(el) === 'object' && el) {
50220        var prevEl = el.previousElementSibling ? el.previousElementSibling : false,
50221            parentEl = el.parentNode;
50222        el.outerHTML = htmlList[i];
50223        options[item] = prevEl ? prevEl.nextElementSibling : parentEl.firstElementChild;
50224      }
50225    }); // reset variables
50226
50227    tnsList = animateIn = animateOut = animateDelay = animateNormal = horizontal = outerWrapper = innerWrapper = container = containerParent = containerHTML = slideItems = slideCount = breakpointZone = windowWidth = autoWidth = fixedWidth = edgePadding = gutter = viewport = items = slideBy = viewportMax = arrowKeys = speed = rewind = loop = autoHeight = sheet = lazyload = slidePositions = slideItemsOut = cloneCount = slideCountNew = hasRightDeadZone = rightBoundary = updateIndexBeforeTransform = transformAttr = transformPrefix = transformPostfix = getIndexMax = index = indexCached = indexMin = indexMax = resizeTimer = swipeAngle = moveDirectionExpected = running = onInit = events = newContainerClasses = slideId = disable = disabled = freezable = freeze = frozen = controlsEvents = navEvents = hoverEvents = visibilityEvent = docmentKeydownEvent = touchEvents = dragEvents = hasControls = hasNav = navAsThumbnails = hasAutoplay = hasTouch = hasMouseDrag = slideActiveClass = imgCompleteClass = imgEvents = imgsComplete = controls = controlsText = controlsContainer = controlsContainerHTML = prevButton = nextButton = prevIsButton = nextIsButton = nav = navContainer = navContainerHTML = navItems = pages = pagesCached = navClicked = navCurrentIndex = navCurrentIndexCached = navActiveClass = navStr = navStrCurrent = autoplay = autoplayTimeout = autoplayDirection = autoplayText = autoplayHoverPause = autoplayButton = autoplayButtonHTML = autoplayResetOnVisibility = autoplayHtmlStrings = autoplayTimer = animating = autoplayHoverPaused = autoplayUserPaused = autoplayVisibilityPaused = initPosition = lastPosition = translateInit = disX = disY = panStart = rafIndex = getDist = touch = mouseDrag = null; // check variables
50228    // [animateIn, animateOut, animateDelay, animateNormal, horizontal, outerWrapper, innerWrapper, container, containerParent, containerHTML, slideItems, slideCount, breakpointZone, windowWidth, autoWidth, fixedWidth, edgePadding, gutter, viewport, items, slideBy, viewportMax, arrowKeys, speed, rewind, loop, autoHeight, sheet, lazyload, slidePositions, slideItemsOut, cloneCount, slideCountNew, hasRightDeadZone, rightBoundary, updateIndexBeforeTransform, transformAttr, transformPrefix, transformPostfix, getIndexMax, index, indexCached, indexMin, indexMax, resizeTimer, swipeAngle, moveDirectionExpected, running, onInit, events, newContainerClasses, slideId, disable, disabled, freezable, freeze, frozen, controlsEvents, navEvents, hoverEvents, visibilityEvent, docmentKeydownEvent, touchEvents, dragEvents, hasControls, hasNav, navAsThumbnails, hasAutoplay, hasTouch, hasMouseDrag, slideActiveClass, imgCompleteClass, imgEvents, imgsComplete, controls, controlsText, controlsContainer, controlsContainerHTML, prevButton, nextButton, prevIsButton, nextIsButton, nav, navContainer, navContainerHTML, navItems, pages, pagesCached, navClicked, navCurrentIndex, navCurrentIndexCached, navActiveClass, navStr, navStrCurrent, autoplay, autoplayTimeout, autoplayDirection, autoplayText, autoplayHoverPause, autoplayButton, autoplayButtonHTML, autoplayResetOnVisibility, autoplayHtmlStrings, autoplayTimer, animating, autoplayHoverPaused, autoplayUserPaused, autoplayVisibilityPaused, initPosition, lastPosition, translateInit, disX, disY, panStart, rafIndex, getDist, touch, mouseDrag ].forEach(function(item) { if (item !== null) { console.log(item); } });
50229
50230    for (var a in this) {
50231      if (a !== 'rebuild') {
50232        this[a] = null;
50233      }
50234    }
50235
50236    isOn = false;
50237  } // === ON RESIZE ===
50238  // responsive || fixedWidth || autoWidth || !horizontal
50239
50240
50241  function onResize(e) {
50242    Object(_helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__["raf"])(function () {
50243      resizeTasks(getEvent(e));
50244    });
50245  }
50246
50247  function resizeTasks(e) {
50248    if (!isOn) {
50249      return;
50250    }
50251
50252    if (nested === 'outer') {
50253      events.emit('outerResized', info(e));
50254    }
50255
50256    windowWidth = getWindowWidth();
50257    var bpChanged,
50258        breakpointZoneTem = breakpointZone,
50259        needContainerTransform = false;
50260
50261    if (responsive) {
50262      setBreakpointZone();
50263      bpChanged = breakpointZoneTem !== breakpointZone; // if (hasRightDeadZone) { needContainerTransform = true; } // *?
50264
50265      if (bpChanged) {
50266        events.emit('newBreakpointStart', info(e));
50267      }
50268    }
50269
50270    var indChanged,
50271        itemsChanged,
50272        itemsTem = items,
50273        disableTem = disable,
50274        freezeTem = freeze,
50275        arrowKeysTem = arrowKeys,
50276        controlsTem = controls,
50277        navTem = nav,
50278        touchTem = touch,
50279        mouseDragTem = mouseDrag,
50280        autoplayTem = autoplay,
50281        autoplayHoverPauseTem = autoplayHoverPause,
50282        autoplayResetOnVisibilityTem = autoplayResetOnVisibility,
50283        indexTem = index;
50284
50285    if (bpChanged) {
50286      var fixedWidthTem = fixedWidth,
50287          autoHeightTem = autoHeight,
50288          controlsTextTem = controlsText,
50289          centerTem = center,
50290          autoplayTextTem = autoplayText;
50291
50292      if (!CSSMQ) {
50293        var gutterTem = gutter,
50294            edgePaddingTem = edgePadding;
50295      }
50296    } // get option:
50297    // fixed width: viewport, fixedWidth, gutter => items
50298    // others: window width => all variables
50299    // all: items => slideBy
50300
50301
50302    arrowKeys = getOption('arrowKeys');
50303    controls = getOption('controls');
50304    nav = getOption('nav');
50305    touch = getOption('touch');
50306    center = getOption('center');
50307    mouseDrag = getOption('mouseDrag');
50308    autoplay = getOption('autoplay');
50309    autoplayHoverPause = getOption('autoplayHoverPause');
50310    autoplayResetOnVisibility = getOption('autoplayResetOnVisibility');
50311
50312    if (bpChanged) {
50313      disable = getOption('disable');
50314      fixedWidth = getOption('fixedWidth');
50315      speed = getOption('speed');
50316      autoHeight = getOption('autoHeight');
50317      controlsText = getOption('controlsText');
50318      autoplayText = getOption('autoplayText');
50319      autoplayTimeout = getOption('autoplayTimeout');
50320
50321      if (!CSSMQ) {
50322        edgePadding = getOption('edgePadding');
50323        gutter = getOption('gutter');
50324      }
50325    } // update options
50326
50327
50328    resetVariblesWhenDisable(disable);
50329    viewport = getViewportWidth(); // <= edgePadding, gutter
50330
50331    if ((!horizontal || autoWidth) && !disable) {
50332      setSlidePositions();
50333
50334      if (!horizontal) {
50335        updateContentWrapperHeight(); // <= setSlidePositions
50336
50337        needContainerTransform = true;
50338      }
50339    }
50340
50341    if (fixedWidth || autoWidth) {
50342      rightBoundary = getRightBoundary(); // autoWidth: <= viewport, slidePositions, gutter
50343      // fixedWidth: <= viewport, fixedWidth, gutter
50344
50345      indexMax = getIndexMax(); // autoWidth: <= rightBoundary, slidePositions
50346      // fixedWidth: <= rightBoundary, fixedWidth, gutter
50347    }
50348
50349    if (bpChanged || fixedWidth) {
50350      items = getOption('items');
50351      slideBy = getOption('slideBy');
50352      itemsChanged = items !== itemsTem;
50353
50354      if (itemsChanged) {
50355        if (!fixedWidth && !autoWidth) {
50356          indexMax = getIndexMax();
50357        } // <= items
50358        // check index before transform in case
50359        // slider reach the right edge then items become bigger
50360
50361
50362        updateIndex();
50363      }
50364    }
50365
50366    if (bpChanged) {
50367      if (disable !== disableTem) {
50368        if (disable) {
50369          disableSlider();
50370        } else {
50371          enableSlider(); // <= slidePositions, rightBoundary, indexMax
50372        }
50373      }
50374    }
50375
50376    if (freezable && (bpChanged || fixedWidth || autoWidth)) {
50377      freeze = getFreeze(); // <= autoWidth: slidePositions, gutter, viewport, rightBoundary
50378      // <= fixedWidth: fixedWidth, gutter, rightBoundary
50379      // <= others: items
50380
50381      if (freeze !== freezeTem) {
50382        if (freeze) {
50383          doContainerTransform(getContainerTransformValue(getStartIndex(0)));
50384          freezeSlider();
50385        } else {
50386          unfreezeSlider();
50387          needContainerTransform = true;
50388        }
50389      }
50390    }
50391
50392    resetVariblesWhenDisable(disable || freeze); // controls, nav, touch, mouseDrag, arrowKeys, autoplay, autoplayHoverPause, autoplayResetOnVisibility
50393
50394    if (!autoplay) {
50395      autoplayHoverPause = autoplayResetOnVisibility = false;
50396    }
50397
50398    if (arrowKeys !== arrowKeysTem) {
50399      arrowKeys ? Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(doc, docmentKeydownEvent) : Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(doc, docmentKeydownEvent);
50400    }
50401
50402    if (controls !== controlsTem) {
50403      if (controls) {
50404        if (controlsContainer) {
50405          Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(controlsContainer);
50406        } else {
50407          if (prevButton) {
50408            Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(prevButton);
50409          }
50410
50411          if (nextButton) {
50412            Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(nextButton);
50413          }
50414        }
50415      } else {
50416        if (controlsContainer) {
50417          Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(controlsContainer);
50418        } else {
50419          if (prevButton) {
50420            Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(prevButton);
50421          }
50422
50423          if (nextButton) {
50424            Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(nextButton);
50425          }
50426        }
50427      }
50428    }
50429
50430    if (nav !== navTem) {
50431      if (nav) {
50432        Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(navContainer);
50433        updateNavVisibility();
50434      } else {
50435        Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(navContainer);
50436      }
50437    }
50438
50439    if (touch !== touchTem) {
50440      touch ? Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(container, touchEvents, options.preventScrollOnTouch) : Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(container, touchEvents);
50441    }
50442
50443    if (mouseDrag !== mouseDragTem) {
50444      mouseDrag ? Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(container, dragEvents) : Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(container, dragEvents);
50445    }
50446
50447    if (autoplay !== autoplayTem) {
50448      if (autoplay) {
50449        if (autoplayButton) {
50450          Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(autoplayButton);
50451        }
50452
50453        if (!animating && !autoplayUserPaused) {
50454          startAutoplay();
50455        }
50456      } else {
50457        if (autoplayButton) {
50458          Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(autoplayButton);
50459        }
50460
50461        if (animating) {
50462          stopAutoplay();
50463        }
50464      }
50465    }
50466
50467    if (autoplayHoverPause !== autoplayHoverPauseTem) {
50468      autoplayHoverPause ? Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(container, hoverEvents) : Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(container, hoverEvents);
50469    }
50470
50471    if (autoplayResetOnVisibility !== autoplayResetOnVisibilityTem) {
50472      autoplayResetOnVisibility ? Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(doc, visibilityEvent) : Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(doc, visibilityEvent);
50473    }
50474
50475    if (bpChanged) {
50476      if (fixedWidth !== fixedWidthTem || center !== centerTem) {
50477        needContainerTransform = true;
50478      }
50479
50480      if (autoHeight !== autoHeightTem) {
50481        if (!autoHeight) {
50482          innerWrapper.style.height = '';
50483        }
50484      }
50485
50486      if (controls && controlsText !== controlsTextTem) {
50487        prevButton.innerHTML = controlsText[0];
50488        nextButton.innerHTML = controlsText[1];
50489      }
50490
50491      if (autoplayButton && autoplayText !== autoplayTextTem) {
50492        var i = autoplay ? 1 : 0,
50493            html = autoplayButton.innerHTML,
50494            len = html.length - autoplayTextTem[i].length;
50495
50496        if (html.substring(len) === autoplayTextTem[i]) {
50497          autoplayButton.innerHTML = html.substring(0, len) + autoplayText[i];
50498        }
50499      }
50500    } else {
50501      if (center && (fixedWidth || autoWidth)) {
50502        needContainerTransform = true;
50503      }
50504    }
50505
50506    if (itemsChanged || fixedWidth && !autoWidth) {
50507      pages = getPages();
50508      updateNavVisibility();
50509    }
50510
50511    indChanged = index !== indexTem;
50512
50513    if (indChanged) {
50514      events.emit('indexChanged', info());
50515      needContainerTransform = true;
50516    } else if (itemsChanged) {
50517      if (!indChanged) {
50518        additionalUpdates();
50519      }
50520    } else if (fixedWidth || autoWidth) {
50521      doLazyLoad();
50522      updateSlideStatus();
50523      updateLiveRegion();
50524    }
50525
50526    if (itemsChanged && !carousel) {
50527      updateGallerySlidePositions();
50528    }
50529
50530    if (!disable && !freeze) {
50531      // non-mediaqueries: IE8
50532      if (bpChanged && !CSSMQ) {
50533        // middle wrapper styles
50534        // inner wrapper styles
50535        if (edgePadding !== edgePaddingTem || gutter !== gutterTem) {
50536          innerWrapper.style.cssText = getInnerWrapperStyles(edgePadding, gutter, fixedWidth, speed, autoHeight);
50537        }
50538
50539        if (horizontal) {
50540          // container styles
50541          if (carousel) {
50542            container.style.width = getContainerWidth(fixedWidth, gutter, items);
50543          } // slide styles
50544
50545
50546          var str = getSlideWidthStyle(fixedWidth, gutter, items) + getSlideGutterStyle(gutter); // remove the last line and
50547          // add new styles
50548
50549          Object(_helpers_removeCSSRule_js__WEBPACK_IMPORTED_MODULE_11__["removeCSSRule"])(sheet, Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet) - 1);
50550          Object(_helpers_addCSSRule_js__WEBPACK_IMPORTED_MODULE_10__["addCSSRule"])(sheet, '#' + slideId + ' > .tns-item', str, Object(_helpers_getCssRulesLength_js__WEBPACK_IMPORTED_MODULE_12__["getCssRulesLength"])(sheet));
50551        }
50552      } // auto height
50553
50554
50555      if (autoHeight) {
50556        doAutoHeight();
50557      }
50558
50559      if (needContainerTransform) {
50560        doContainerTransformSilent();
50561        indexCached = index;
50562      }
50563    }
50564
50565    if (bpChanged) {
50566      events.emit('newBreakpointEnd', info(e));
50567    }
50568  } // === INITIALIZATION FUNCTIONS === //
50569
50570
50571  function getFreeze() {
50572    if (!fixedWidth && !autoWidth) {
50573      var a = center ? items - (items - 1) / 2 : items;
50574      return slideCount <= a;
50575    }
50576
50577    var width = fixedWidth ? (fixedWidth + gutter) * slideCount : slidePositions[slideCount],
50578        vp = edgePadding ? viewport + edgePadding * 2 : viewport + gutter;
50579
50580    if (center) {
50581      vp -= fixedWidth ? (viewport - fixedWidth) / 2 : (viewport - (slidePositions[index + 1] - slidePositions[index] - gutter)) / 2;
50582    }
50583
50584    return width <= vp;
50585  }
50586
50587  function setBreakpointZone() {
50588    breakpointZone = 0;
50589
50590    for (var bp in responsive) {
50591      bp = parseInt(bp); // convert string to number
50592
50593      if (windowWidth >= bp) {
50594        breakpointZone = bp;
50595      }
50596    }
50597  } // (slideBy, indexMin, indexMax) => index
50598
50599
50600  var updateIndex = function () {
50601    return loop ? carousel ? // loop + carousel
50602    function () {
50603      var leftEdge = indexMin,
50604          rightEdge = indexMax;
50605      leftEdge += slideBy;
50606      rightEdge -= slideBy; // adjust edges when has edge paddings
50607      // or fixed-width slider with extra space on the right side
50608
50609      if (edgePadding) {
50610        leftEdge += 1;
50611        rightEdge -= 1;
50612      } else if (fixedWidth) {
50613        if ((viewport + gutter) % (fixedWidth + gutter)) {
50614          rightEdge -= 1;
50615        }
50616      }
50617
50618      if (cloneCount) {
50619        if (index > rightEdge) {
50620          index -= slideCount;
50621        } else if (index < leftEdge) {
50622          index += slideCount;
50623        }
50624      }
50625    } : // loop + gallery
50626    function () {
50627      if (index > indexMax) {
50628        while (index >= indexMin + slideCount) {
50629          index -= slideCount;
50630        }
50631      } else if (index < indexMin) {
50632        while (index <= indexMax - slideCount) {
50633          index += slideCount;
50634        }
50635      }
50636    } : // non-loop
50637    function () {
50638      index = Math.max(indexMin, Math.min(indexMax, index));
50639    };
50640  }();
50641
50642  function disableUI() {
50643    if (!autoplay && autoplayButton) {
50644      Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(autoplayButton);
50645    }
50646
50647    if (!nav && navContainer) {
50648      Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(navContainer);
50649    }
50650
50651    if (!controls) {
50652      if (controlsContainer) {
50653        Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(controlsContainer);
50654      } else {
50655        if (prevButton) {
50656          Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(prevButton);
50657        }
50658
50659        if (nextButton) {
50660          Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(nextButton);
50661        }
50662      }
50663    }
50664  }
50665
50666  function enableUI() {
50667    if (autoplay && autoplayButton) {
50668      Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(autoplayButton);
50669    }
50670
50671    if (nav && navContainer) {
50672      Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(navContainer);
50673    }
50674
50675    if (controls) {
50676      if (controlsContainer) {
50677        Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(controlsContainer);
50678      } else {
50679        if (prevButton) {
50680          Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(prevButton);
50681        }
50682
50683        if (nextButton) {
50684          Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(nextButton);
50685        }
50686      }
50687    }
50688  }
50689
50690  function freezeSlider() {
50691    if (frozen) {
50692      return;
50693    } // remove edge padding from inner wrapper
50694
50695
50696    if (edgePadding) {
50697      innerWrapper.style.margin = '0px';
50698    } // add class tns-transparent to cloned slides
50699
50700
50701    if (cloneCount) {
50702      var str = 'tns-transparent';
50703
50704      for (var i = cloneCount; i--;) {
50705        if (carousel) {
50706          Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(slideItems[i], str);
50707        }
50708
50709        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(slideItems[slideCountNew - i - 1], str);
50710      }
50711    } // update tools
50712
50713
50714    disableUI();
50715    frozen = true;
50716  }
50717
50718  function unfreezeSlider() {
50719    if (!frozen) {
50720      return;
50721    } // restore edge padding for inner wrapper
50722    // for mordern browsers
50723
50724
50725    if (edgePadding && CSSMQ) {
50726      innerWrapper.style.margin = '';
50727    } // remove class tns-transparent to cloned slides
50728
50729
50730    if (cloneCount) {
50731      var str = 'tns-transparent';
50732
50733      for (var i = cloneCount; i--;) {
50734        if (carousel) {
50735          Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(slideItems[i], str);
50736        }
50737
50738        Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(slideItems[slideCountNew - i - 1], str);
50739      }
50740    } // update tools
50741
50742
50743    enableUI();
50744    frozen = false;
50745  }
50746
50747  function disableSlider() {
50748    if (disabled) {
50749      return;
50750    }
50751
50752    sheet.disabled = true;
50753    container.className = container.className.replace(newContainerClasses.substring(1), '');
50754    Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(container, ['style']);
50755
50756    if (loop) {
50757      for (var j = cloneCount; j--;) {
50758        if (carousel) {
50759          Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(slideItems[j]);
50760        }
50761
50762        Object(_helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"])(slideItems[slideCountNew - j - 1]);
50763      }
50764    } // vertical slider
50765
50766
50767    if (!horizontal || !carousel) {
50768      Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(innerWrapper, ['style']);
50769    } // gallery
50770
50771
50772    if (!carousel) {
50773      for (var i = index, l = index + slideCount; i < l; i++) {
50774        var item = slideItems[i];
50775        Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(item, ['style']);
50776        Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, animateIn);
50777        Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, animateNormal);
50778      }
50779    } // update tools
50780
50781
50782    disableUI();
50783    disabled = true;
50784  }
50785
50786  function enableSlider() {
50787    if (!disabled) {
50788      return;
50789    }
50790
50791    sheet.disabled = false;
50792    container.className += newContainerClasses;
50793    doContainerTransformSilent();
50794
50795    if (loop) {
50796      for (var j = cloneCount; j--;) {
50797        if (carousel) {
50798          Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(slideItems[j]);
50799        }
50800
50801        Object(_helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"])(slideItems[slideCountNew - j - 1]);
50802      }
50803    } // gallery
50804
50805
50806    if (!carousel) {
50807      for (var i = index, l = index + slideCount; i < l; i++) {
50808        var item = slideItems[i],
50809            classN = i < index + items ? animateIn : animateNormal;
50810        item.style.left = (i - index) * 100 / items + '%';
50811        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, classN);
50812      }
50813    } // update tools
50814
50815
50816    enableUI();
50817    disabled = false;
50818  }
50819
50820  function updateLiveRegion() {
50821    var str = getLiveRegionStr();
50822
50823    if (liveregionCurrent.innerHTML !== str) {
50824      liveregionCurrent.innerHTML = str;
50825    }
50826  }
50827
50828  function getLiveRegionStr() {
50829    var arr = getVisibleSlideRange(),
50830        start = arr[0] + 1,
50831        end = arr[1] + 1;
50832    return start === end ? start + '' : start + ' to ' + end;
50833  }
50834
50835  function getVisibleSlideRange(val) {
50836    if (val == null) {
50837      val = getContainerTransformValue();
50838    }
50839
50840    var start = index,
50841        end,
50842        rangestart,
50843        rangeend; // get range start, range end for autoWidth and fixedWidth
50844
50845    if (center || edgePadding) {
50846      if (autoWidth || fixedWidth) {
50847        rangestart = -(parseFloat(val) + edgePadding);
50848        rangeend = rangestart + viewport + edgePadding * 2;
50849      }
50850    } else {
50851      if (autoWidth) {
50852        rangestart = slidePositions[index];
50853        rangeend = rangestart + viewport;
50854      }
50855    } // get start, end
50856    // - check auto width
50857
50858
50859    if (autoWidth) {
50860      slidePositions.forEach(function (point, i) {
50861        if (i < slideCountNew) {
50862          if ((center || edgePadding) && point <= rangestart + 0.5) {
50863            start = i;
50864          }
50865
50866          if (rangeend - point >= 0.5) {
50867            end = i;
50868          }
50869        }
50870      }); // - check percentage width, fixed width
50871    } else {
50872      if (fixedWidth) {
50873        var cell = fixedWidth + gutter;
50874
50875        if (center || edgePadding) {
50876          start = Math.floor(rangestart / cell);
50877          end = Math.ceil(rangeend / cell - 1);
50878        } else {
50879          end = start + Math.ceil(viewport / cell) - 1;
50880        }
50881      } else {
50882        if (center || edgePadding) {
50883          var a = items - 1;
50884
50885          if (center) {
50886            start -= a / 2;
50887            end = index + a / 2;
50888          } else {
50889            end = index + a;
50890          }
50891
50892          if (edgePadding) {
50893            var b = edgePadding * items / viewport;
50894            start -= b;
50895            end += b;
50896          }
50897
50898          start = Math.floor(start);
50899          end = Math.ceil(end);
50900        } else {
50901          end = start + items - 1;
50902        }
50903      }
50904
50905      start = Math.max(start, 0);
50906      end = Math.min(end, slideCountNew - 1);
50907    }
50908
50909    return [start, end];
50910  }
50911
50912  function doLazyLoad() {
50913    if (lazyload && !disable) {
50914      var arg = getVisibleSlideRange();
50915      arg.push(lazyloadSelector);
50916      getImageArray.apply(null, arg).forEach(function (img) {
50917        if (!Object(_helpers_hasClass_js__WEBPACK_IMPORTED_MODULE_16__["hasClass"])(img, imgCompleteClass)) {
50918          // stop propagation transitionend event to container
50919          var eve = {};
50920
50921          eve[TRANSITIONEND] = function (e) {
50922            e.stopPropagation();
50923          };
50924
50925          Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(img, eve);
50926          Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(img, imgEvents); // update src
50927
50928          img.src = Object(_helpers_getAttr_js__WEBPACK_IMPORTED_MODULE_20__["getAttr"])(img, 'data-src'); // update srcset
50929
50930          var srcset = Object(_helpers_getAttr_js__WEBPACK_IMPORTED_MODULE_20__["getAttr"])(img, 'data-srcset');
50931
50932          if (srcset) {
50933            img.srcset = srcset;
50934          }
50935
50936          Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(img, 'loading');
50937        }
50938      });
50939    }
50940  }
50941
50942  function onImgLoaded(e) {
50943    imgLoaded(getTarget(e));
50944  }
50945
50946  function onImgFailed(e) {
50947    imgFailed(getTarget(e));
50948  }
50949
50950  function imgLoaded(img) {
50951    Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(img, 'loaded');
50952    imgCompleted(img);
50953  }
50954
50955  function imgFailed(img) {
50956    Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(img, 'failed');
50957    imgCompleted(img);
50958  }
50959
50960  function imgCompleted(img) {
50961    Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(img, imgCompleteClass);
50962    Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(img, 'loading');
50963    Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(img, imgEvents);
50964  }
50965
50966  function getImageArray(start, end, imgSelector) {
50967    var imgs = [];
50968
50969    if (!imgSelector) {
50970      imgSelector = 'img';
50971    }
50972
50973    while (start <= end) {
50974      Object(_helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__["forEach"])(slideItems[start].querySelectorAll(imgSelector), function (img) {
50975        imgs.push(img);
50976      });
50977      start++;
50978    }
50979
50980    return imgs;
50981  } // check if all visible images are loaded
50982  // and update container height if it's done
50983
50984
50985  function doAutoHeight() {
50986    var imgs = getImageArray.apply(null, getVisibleSlideRange());
50987    Object(_helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__["raf"])(function () {
50988      imgsLoadedCheck(imgs, updateInnerWrapperHeight);
50989    });
50990  }
50991
50992  function imgsLoadedCheck(imgs, cb) {
50993    // execute callback function if all images are complete
50994    if (imgsComplete) {
50995      return cb();
50996    } // check image classes
50997
50998
50999    imgs.forEach(function (img, index) {
51000      if (!lazyload && img.complete) {
51001        imgCompleted(img);
51002      } // Check image.complete
51003
51004
51005      if (Object(_helpers_hasClass_js__WEBPACK_IMPORTED_MODULE_16__["hasClass"])(img, imgCompleteClass)) {
51006        imgs.splice(index, 1);
51007      }
51008    }); // execute callback function if selected images are all complete
51009
51010    if (!imgs.length) {
51011      return cb();
51012    } // otherwise execute this functiona again
51013
51014
51015    Object(_helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__["raf"])(function () {
51016      imgsLoadedCheck(imgs, cb);
51017    });
51018  }
51019
51020  function additionalUpdates() {
51021    doLazyLoad();
51022    updateSlideStatus();
51023    updateLiveRegion();
51024    updateControlsStatus();
51025    updateNavStatus();
51026  }
51027
51028  function update_carousel_transition_duration() {
51029    if (carousel && autoHeight) {
51030      middleWrapper.style[TRANSITIONDURATION] = speed / 1000 + 's';
51031    }
51032  }
51033
51034  function getMaxSlideHeight(slideStart, slideRange) {
51035    var heights = [];
51036
51037    for (var i = slideStart, l = Math.min(slideStart + slideRange, slideCountNew); i < l; i++) {
51038      heights.push(slideItems[i].offsetHeight);
51039    }
51040
51041    return Math.max.apply(null, heights);
51042  } // update inner wrapper height
51043  // 1. get the max-height of the visible slides
51044  // 2. set transitionDuration to speed
51045  // 3. update inner wrapper height to max-height
51046  // 4. set transitionDuration to 0s after transition done
51047
51048
51049  function updateInnerWrapperHeight() {
51050    var maxHeight = autoHeight ? getMaxSlideHeight(index, items) : getMaxSlideHeight(cloneCount, slideCount),
51051        wp = middleWrapper ? middleWrapper : innerWrapper;
51052
51053    if (wp.style.height !== maxHeight) {
51054      wp.style.height = maxHeight + 'px';
51055    }
51056  } // get the distance from the top edge of the first slide to each slide
51057  // (init) => slidePositions
51058
51059
51060  function setSlidePositions() {
51061    slidePositions = [0];
51062    var attr = horizontal ? 'left' : 'top',
51063        attr2 = horizontal ? 'right' : 'bottom',
51064        base = slideItems[0].getBoundingClientRect()[attr];
51065    Object(_helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__["forEach"])(slideItems, function (item, i) {
51066      // skip the first slide
51067      if (i) {
51068        slidePositions.push(item.getBoundingClientRect()[attr] - base);
51069      } // add the end edge
51070
51071
51072      if (i === slideCountNew - 1) {
51073        slidePositions.push(item.getBoundingClientRect()[attr2] - base);
51074      }
51075    });
51076  } // update slide
51077
51078
51079  function updateSlideStatus() {
51080    var range = getVisibleSlideRange(),
51081        start = range[0],
51082        end = range[1];
51083    Object(_helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__["forEach"])(slideItems, function (item, i) {
51084      // show slides
51085      if (i >= start && i <= end) {
51086        if (Object(_helpers_hasAttr_js__WEBPACK_IMPORTED_MODULE_19__["hasAttr"])(item, 'aria-hidden')) {
51087          Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(item, ['aria-hidden', 'tabindex']);
51088          Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(item.querySelectorAll('a, button, details, input, textarea, select'), ['aria-hidden', 'tabindex']);
51089          Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, slideActiveClass);
51090        } // hide slides
51091
51092      } else {
51093        if (!Object(_helpers_hasAttr_js__WEBPACK_IMPORTED_MODULE_19__["hasAttr"])(item, 'aria-hidden')) {
51094          Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(item, {
51095            'aria-hidden': 'true',
51096            'tabindex': '-1'
51097          });
51098          Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(item.querySelectorAll('a, button, details, input, textarea, select'), {
51099            'aria-hidden': 'true',
51100            'tabindex': '-1'
51101          });
51102          Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, slideActiveClass);
51103        }
51104      }
51105    });
51106  } // gallery: update slide position
51107
51108
51109  function updateGallerySlidePositions() {
51110    var l = index + Math.min(slideCount, items);
51111
51112    for (var i = slideCountNew; i--;) {
51113      var item = slideItems[i];
51114
51115      if (i >= index && i < l) {
51116        // add transitions to visible slides when adjusting their positions
51117        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, 'tns-moving');
51118        item.style.left = (i - index) * 100 / items + '%';
51119        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, animateIn);
51120        Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, animateNormal);
51121      } else if (item.style.left) {
51122        item.style.left = '';
51123        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, animateNormal);
51124        Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, animateIn);
51125      } // remove outlet animation
51126
51127
51128      Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, animateOut);
51129    } // removing '.tns-moving'
51130
51131
51132    setTimeout(function () {
51133      Object(_helpers_forEach_js__WEBPACK_IMPORTED_MODULE_15__["forEach"])(slideItems, function (el) {
51134        Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(el, 'tns-moving');
51135      });
51136    }, 300);
51137  } // set tabindex on Nav
51138
51139
51140  function updateNavStatus() {
51141    // get current nav
51142    if (nav) {
51143      navCurrentIndex = navClicked >= 0 ? navClicked : getCurrentNavIndex();
51144      navClicked = -1;
51145
51146      if (navCurrentIndex !== navCurrentIndexCached) {
51147        var navPrev = navItems[navCurrentIndexCached],
51148            navCurrent = navItems[navCurrentIndex];
51149        Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(navPrev, {
51150          'tabindex': '-1',
51151          'aria-label': navStr + (navCurrentIndexCached + 1)
51152        });
51153        Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(navPrev, navActiveClass);
51154        Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(navCurrent, {
51155          'aria-label': navStr + (navCurrentIndex + 1) + navStrCurrent
51156        });
51157        Object(_helpers_removeAttrs_js__WEBPACK_IMPORTED_MODULE_22__["removeAttrs"])(navCurrent, 'tabindex');
51158        Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(navCurrent, navActiveClass);
51159        navCurrentIndexCached = navCurrentIndex;
51160      }
51161    }
51162  }
51163
51164  function getLowerCaseNodeName(el) {
51165    return el.nodeName.toLowerCase();
51166  }
51167
51168  function isButton(el) {
51169    return getLowerCaseNodeName(el) === 'button';
51170  }
51171
51172  function isAriaDisabled(el) {
51173    return el.getAttribute('aria-disabled') === 'true';
51174  }
51175
51176  function disEnableElement(isButton, el, val) {
51177    if (isButton) {
51178      el.disabled = val;
51179    } else {
51180      el.setAttribute('aria-disabled', val.toString());
51181    }
51182  } // set 'disabled' to true on controls when reach the edges
51183
51184
51185  function updateControlsStatus() {
51186    if (!controls || rewind || loop) {
51187      return;
51188    }
51189
51190    var prevDisabled = prevIsButton ? prevButton.disabled : isAriaDisabled(prevButton),
51191        nextDisabled = nextIsButton ? nextButton.disabled : isAriaDisabled(nextButton),
51192        disablePrev = index <= indexMin ? true : false,
51193        disableNext = !rewind && index >= indexMax ? true : false;
51194
51195    if (disablePrev && !prevDisabled) {
51196      disEnableElement(prevIsButton, prevButton, true);
51197    }
51198
51199    if (!disablePrev && prevDisabled) {
51200      disEnableElement(prevIsButton, prevButton, false);
51201    }
51202
51203    if (disableNext && !nextDisabled) {
51204      disEnableElement(nextIsButton, nextButton, true);
51205    }
51206
51207    if (!disableNext && nextDisabled) {
51208      disEnableElement(nextIsButton, nextButton, false);
51209    }
51210  } // set duration
51211
51212
51213  function resetDuration(el, str) {
51214    if (TRANSITIONDURATION) {
51215      el.style[TRANSITIONDURATION] = str;
51216    }
51217  }
51218
51219  function getSliderWidth() {
51220    return fixedWidth ? (fixedWidth + gutter) * slideCountNew : slidePositions[slideCountNew];
51221  }
51222
51223  function getCenterGap(num) {
51224    if (num == null) {
51225      num = index;
51226    }
51227
51228    var gap = edgePadding ? gutter : 0;
51229    return autoWidth ? (viewport - gap - (slidePositions[num + 1] - slidePositions[num] - gutter)) / 2 : fixedWidth ? (viewport - fixedWidth) / 2 : (items - 1) / 2;
51230  }
51231
51232  function getRightBoundary() {
51233    var gap = edgePadding ? gutter : 0,
51234        result = viewport + gap - getSliderWidth();
51235
51236    if (center && !loop) {
51237      result = fixedWidth ? -(fixedWidth + gutter) * (slideCountNew - 1) - getCenterGap() : getCenterGap(slideCountNew - 1) - slidePositions[slideCountNew - 1];
51238    }
51239
51240    if (result > 0) {
51241      result = 0;
51242    }
51243
51244    return result;
51245  }
51246
51247  function getContainerTransformValue(num) {
51248    if (num == null) {
51249      num = index;
51250    }
51251
51252    var val;
51253
51254    if (horizontal && !autoWidth) {
51255      if (fixedWidth) {
51256        val = -(fixedWidth + gutter) * num;
51257
51258        if (center) {
51259          val += getCenterGap();
51260        }
51261      } else {
51262        var denominator = TRANSFORM ? slideCountNew : items;
51263
51264        if (center) {
51265          num -= getCenterGap();
51266        }
51267
51268        val = -num * 100 / denominator;
51269      }
51270    } else {
51271      val = -slidePositions[num];
51272
51273      if (center && autoWidth) {
51274        val += getCenterGap();
51275      }
51276    }
51277
51278    if (hasRightDeadZone) {
51279      val = Math.max(val, rightBoundary);
51280    }
51281
51282    val += horizontal && !autoWidth && !fixedWidth ? '%' : 'px';
51283    return val;
51284  }
51285
51286  function doContainerTransformSilent(val) {
51287    resetDuration(container, '0s');
51288    doContainerTransform(val);
51289  }
51290
51291  function doContainerTransform(val) {
51292    if (val == null) {
51293      val = getContainerTransformValue();
51294    }
51295
51296    container.style[transformAttr] = transformPrefix + val + transformPostfix;
51297  }
51298
51299  function animateSlide(number, classOut, classIn, isOut) {
51300    var l = number + items;
51301
51302    if (!loop) {
51303      l = Math.min(l, slideCountNew);
51304    }
51305
51306    for (var i = number; i < l; i++) {
51307      var item = slideItems[i]; // set item positions
51308
51309      if (!isOut) {
51310        item.style.left = (i - index) * 100 / items + '%';
51311      }
51312
51313      if (animateDelay && TRANSITIONDELAY) {
51314        item.style[TRANSITIONDELAY] = item.style[ANIMATIONDELAY] = animateDelay * (i - number) / 1000 + 's';
51315      }
51316
51317      Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, classOut);
51318      Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, classIn);
51319
51320      if (isOut) {
51321        slideItemsOut.push(item);
51322      }
51323    }
51324  } // make transfer after click/drag:
51325  // 1. change 'transform' property for mordern browsers
51326  // 2. change 'left' property for legacy browsers
51327
51328
51329  var transformCore = function () {
51330    return carousel ? function () {
51331      resetDuration(container, '');
51332
51333      if (TRANSITIONDURATION || !speed) {
51334        // for morden browsers with non-zero duration or
51335        // zero duration for all browsers
51336        doContainerTransform(); // run fallback function manually
51337        // when duration is 0 / container is hidden
51338
51339        if (!speed || !Object(_helpers_isVisible_js__WEBPACK_IMPORTED_MODULE_26__["isVisible"])(container)) {
51340          onTransitionEnd();
51341        }
51342      } else {
51343        // for old browser with non-zero duration
51344        Object(_helpers_jsTransform_js__WEBPACK_IMPORTED_MODULE_33__["jsTransform"])(container, transformAttr, transformPrefix, transformPostfix, getContainerTransformValue(), speed, onTransitionEnd);
51345      }
51346
51347      if (!horizontal) {
51348        updateContentWrapperHeight();
51349      }
51350    } : function () {
51351      slideItemsOut = [];
51352      var eve = {};
51353      eve[TRANSITIONEND] = eve[ANIMATIONEND] = onTransitionEnd;
51354      Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(slideItems[indexCached], eve);
51355      Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(slideItems[index], eve);
51356      animateSlide(indexCached, animateIn, animateOut, true);
51357      animateSlide(index, animateNormal, animateIn); // run fallback function manually
51358      // when transition or animation not supported / duration is 0
51359
51360      if (!TRANSITIONEND || !ANIMATIONEND || !speed || !Object(_helpers_isVisible_js__WEBPACK_IMPORTED_MODULE_26__["isVisible"])(container)) {
51361        onTransitionEnd();
51362      }
51363    };
51364  }();
51365
51366  function render(e, sliderMoved) {
51367    if (updateIndexBeforeTransform) {
51368      updateIndex();
51369    } // render when slider was moved (touch or drag) even though index may not change
51370
51371
51372    if (index !== indexCached || sliderMoved) {
51373      // events
51374      events.emit('indexChanged', info());
51375      events.emit('transitionStart', info());
51376
51377      if (autoHeight) {
51378        doAutoHeight();
51379      } // pause autoplay when click or keydown from user
51380
51381
51382      if (animating && e && ['click', 'keydown'].indexOf(e.type) >= 0) {
51383        stopAutoplay();
51384      }
51385
51386      running = true;
51387      transformCore();
51388    }
51389  }
51390  /*
51391   * Transfer prefixed properties to the same format
51392   * CSS: -Webkit-Transform => webkittransform
51393   * JS: WebkitTransform => webkittransform
51394   * @param {string} str - property
51395   *
51396   */
51397
51398
51399  function strTrans(str) {
51400    return str.toLowerCase().replace(/-/g, '');
51401  } // AFTER TRANSFORM
51402  // Things need to be done after a transfer:
51403  // 1. check index
51404  // 2. add classes to visible slide
51405  // 3. disable controls buttons when reach the first/last slide in non-loop slider
51406  // 4. update nav status
51407  // 5. lazyload images
51408  // 6. update container height
51409
51410
51411  function onTransitionEnd(event) {
51412    // check running on gallery mode
51413    // make sure trantionend/animationend events run only once
51414    if (carousel || running) {
51415      events.emit('transitionEnd', info(event));
51416
51417      if (!carousel && slideItemsOut.length > 0) {
51418        for (var i = 0; i < slideItemsOut.length; i++) {
51419          var item = slideItemsOut[i]; // set item positions
51420
51421          item.style.left = '';
51422
51423          if (ANIMATIONDELAY && TRANSITIONDELAY) {
51424            item.style[ANIMATIONDELAY] = '';
51425            item.style[TRANSITIONDELAY] = '';
51426          }
51427
51428          Object(_helpers_removeClass_js__WEBPACK_IMPORTED_MODULE_18__["removeClass"])(item, animateOut);
51429          Object(_helpers_addClass_js__WEBPACK_IMPORTED_MODULE_17__["addClass"])(item, animateNormal);
51430        }
51431      }
51432      /* update slides, nav, controls after checking ...
51433       * => legacy browsers who don't support 'event'
51434       *    have to check event first, otherwise event.target will cause an error
51435       * => or 'gallery' mode:
51436       *   + event target is slide item
51437       * => or 'carousel' mode:
51438       *   + event target is container,
51439       *   + event.property is the same with transform attribute
51440       */
51441
51442
51443      if (!event || !carousel && event.target.parentNode === container || event.target === container && strTrans(event.propertyName) === strTrans(transformAttr)) {
51444        if (!updateIndexBeforeTransform) {
51445          var indexTem = index;
51446          updateIndex();
51447
51448          if (index !== indexTem) {
51449            events.emit('indexChanged', info());
51450            doContainerTransformSilent();
51451          }
51452        }
51453
51454        if (nested === 'inner') {
51455          events.emit('innerLoaded', info());
51456        }
51457
51458        running = false;
51459        indexCached = index;
51460      }
51461    }
51462  } // # ACTIONS
51463
51464
51465  function goTo(targetIndex, e) {
51466    if (freeze) {
51467      return;
51468    } // prev slideBy
51469
51470
51471    if (targetIndex === 'prev') {
51472      onControlsClick(e, -1); // next slideBy
51473    } else if (targetIndex === 'next') {
51474      onControlsClick(e, 1); // go to exact slide
51475    } else {
51476      if (running) {
51477        if (preventActionWhenRunning) {
51478          return;
51479        } else {
51480          onTransitionEnd();
51481        }
51482      }
51483
51484      var absIndex = getAbsIndex(),
51485          indexGap = 0;
51486
51487      if (targetIndex === 'first') {
51488        indexGap = -absIndex;
51489      } else if (targetIndex === 'last') {
51490        indexGap = carousel ? slideCount - items - absIndex : slideCount - 1 - absIndex;
51491      } else {
51492        if (typeof targetIndex !== 'number') {
51493          targetIndex = parseInt(targetIndex);
51494        }
51495
51496        if (!isNaN(targetIndex)) {
51497          // from directly called goTo function
51498          if (!e) {
51499            targetIndex = Math.max(0, Math.min(slideCount - 1, targetIndex));
51500          }
51501
51502          indexGap = targetIndex - absIndex;
51503        }
51504      } // gallery: make sure new page won't overlap with current page
51505
51506
51507      if (!carousel && indexGap && Math.abs(indexGap) < items) {
51508        var factor = indexGap > 0 ? 1 : -1;
51509        indexGap += index + indexGap - slideCount >= indexMin ? slideCount * factor : slideCount * 2 * factor * -1;
51510      }
51511
51512      index += indexGap; // make sure index is in range
51513
51514      if (carousel && loop) {
51515        if (index < indexMin) {
51516          index += slideCount;
51517        }
51518
51519        if (index > indexMax) {
51520          index -= slideCount;
51521        }
51522      } // if index is changed, start rendering
51523
51524
51525      if (getAbsIndex(index) !== getAbsIndex(indexCached)) {
51526        render(e);
51527      }
51528    }
51529  } // on controls click
51530
51531
51532  function onControlsClick(e, dir) {
51533    if (running) {
51534      if (preventActionWhenRunning) {
51535        return;
51536      } else {
51537        onTransitionEnd();
51538      }
51539    }
51540
51541    var passEventObject;
51542
51543    if (!dir) {
51544      e = getEvent(e);
51545      var target = getTarget(e);
51546
51547      while (target !== controlsContainer && [prevButton, nextButton].indexOf(target) < 0) {
51548        target = target.parentNode;
51549      }
51550
51551      var targetIn = [prevButton, nextButton].indexOf(target);
51552
51553      if (targetIn >= 0) {
51554        passEventObject = true;
51555        dir = targetIn === 0 ? -1 : 1;
51556      }
51557    }
51558
51559    if (rewind) {
51560      if (index === indexMin && dir === -1) {
51561        goTo('last', e);
51562        return;
51563      } else if (index === indexMax && dir === 1) {
51564        goTo('first', e);
51565        return;
51566      }
51567    }
51568
51569    if (dir) {
51570      index += slideBy * dir;
51571
51572      if (autoWidth) {
51573        index = Math.floor(index);
51574      } // pass e when click control buttons or keydown
51575
51576
51577      render(passEventObject || e && e.type === 'keydown' ? e : null);
51578    }
51579  } // on nav click
51580
51581
51582  function onNavClick(e) {
51583    if (running) {
51584      if (preventActionWhenRunning) {
51585        return;
51586      } else {
51587        onTransitionEnd();
51588      }
51589    }
51590
51591    e = getEvent(e);
51592    var target = getTarget(e),
51593        navIndex; // find the clicked nav item
51594
51595    while (target !== navContainer && !Object(_helpers_hasAttr_js__WEBPACK_IMPORTED_MODULE_19__["hasAttr"])(target, 'data-nav')) {
51596      target = target.parentNode;
51597    }
51598
51599    if (Object(_helpers_hasAttr_js__WEBPACK_IMPORTED_MODULE_19__["hasAttr"])(target, 'data-nav')) {
51600      var navIndex = navClicked = Number(Object(_helpers_getAttr_js__WEBPACK_IMPORTED_MODULE_20__["getAttr"])(target, 'data-nav')),
51601          targetIndexBase = fixedWidth || autoWidth ? navIndex * slideCount / pages : navIndex * items,
51602          targetIndex = navAsThumbnails ? navIndex : Math.min(Math.ceil(targetIndexBase), slideCount - 1);
51603      goTo(targetIndex, e);
51604
51605      if (navCurrentIndex === navIndex) {
51606        if (animating) {
51607          stopAutoplay();
51608        }
51609
51610        navClicked = -1; // reset navClicked
51611      }
51612    }
51613  } // autoplay functions
51614
51615
51616  function setAutoplayTimer() {
51617    autoplayTimer = setInterval(function () {
51618      onControlsClick(null, autoplayDirection);
51619    }, autoplayTimeout);
51620    animating = true;
51621  }
51622
51623  function stopAutoplayTimer() {
51624    clearInterval(autoplayTimer);
51625    animating = false;
51626  }
51627
51628  function updateAutoplayButton(action, txt) {
51629    Object(_helpers_setAttrs_js__WEBPACK_IMPORTED_MODULE_21__["setAttrs"])(autoplayButton, {
51630      'data-action': action
51631    });
51632    autoplayButton.innerHTML = autoplayHtmlStrings[0] + action + autoplayHtmlStrings[1] + txt;
51633  }
51634
51635  function startAutoplay() {
51636    setAutoplayTimer();
51637
51638    if (autoplayButton) {
51639      updateAutoplayButton('stop', autoplayText[1]);
51640    }
51641  }
51642
51643  function stopAutoplay() {
51644    stopAutoplayTimer();
51645
51646    if (autoplayButton) {
51647      updateAutoplayButton('start', autoplayText[0]);
51648    }
51649  } // programaitcally play/pause the slider
51650
51651
51652  function play() {
51653    if (autoplay && !animating) {
51654      startAutoplay();
51655      autoplayUserPaused = false;
51656    }
51657  }
51658
51659  function pause() {
51660    if (animating) {
51661      stopAutoplay();
51662      autoplayUserPaused = true;
51663    }
51664  }
51665
51666  function toggleAutoplay() {
51667    if (animating) {
51668      stopAutoplay();
51669      autoplayUserPaused = true;
51670    } else {
51671      startAutoplay();
51672      autoplayUserPaused = false;
51673    }
51674  }
51675
51676  function onVisibilityChange() {
51677    if (doc.hidden) {
51678      if (animating) {
51679        stopAutoplayTimer();
51680        autoplayVisibilityPaused = true;
51681      }
51682    } else if (autoplayVisibilityPaused) {
51683      setAutoplayTimer();
51684      autoplayVisibilityPaused = false;
51685    }
51686  }
51687
51688  function mouseoverPause() {
51689    if (animating) {
51690      stopAutoplayTimer();
51691      autoplayHoverPaused = true;
51692    }
51693  }
51694
51695  function mouseoutRestart() {
51696    if (autoplayHoverPaused) {
51697      setAutoplayTimer();
51698      autoplayHoverPaused = false;
51699    }
51700  } // keydown events on document
51701
51702
51703  function onDocumentKeydown(e) {
51704    e = getEvent(e);
51705    var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);
51706
51707    if (keyIndex >= 0) {
51708      onControlsClick(e, keyIndex === 0 ? -1 : 1);
51709    }
51710  } // on key control
51711
51712
51713  function onControlsKeydown(e) {
51714    e = getEvent(e);
51715    var keyIndex = [KEYS.LEFT, KEYS.RIGHT].indexOf(e.keyCode);
51716
51717    if (keyIndex >= 0) {
51718      if (keyIndex === 0) {
51719        if (!prevButton.disabled) {
51720          onControlsClick(e, -1);
51721        }
51722      } else if (!nextButton.disabled) {
51723        onControlsClick(e, 1);
51724      }
51725    }
51726  } // set focus
51727
51728
51729  function setFocus(el) {
51730    el.focus();
51731  } // on key nav
51732
51733
51734  function onNavKeydown(e) {
51735    e = getEvent(e);
51736    var curElement = doc.activeElement;
51737
51738    if (!Object(_helpers_hasAttr_js__WEBPACK_IMPORTED_MODULE_19__["hasAttr"])(curElement, 'data-nav')) {
51739      return;
51740    } // var code = e.keyCode,
51741
51742
51743    var keyIndex = [KEYS.LEFT, KEYS.RIGHT, KEYS.ENTER, KEYS.SPACE].indexOf(e.keyCode),
51744        navIndex = Number(Object(_helpers_getAttr_js__WEBPACK_IMPORTED_MODULE_20__["getAttr"])(curElement, 'data-nav'));
51745
51746    if (keyIndex >= 0) {
51747      if (keyIndex === 0) {
51748        if (navIndex > 0) {
51749          setFocus(navItems[navIndex - 1]);
51750        }
51751      } else if (keyIndex === 1) {
51752        if (navIndex < pages - 1) {
51753          setFocus(navItems[navIndex + 1]);
51754        }
51755      } else {
51756        navClicked = navIndex;
51757        goTo(navIndex, e);
51758      }
51759    }
51760  }
51761
51762  function getEvent(e) {
51763    e = e || win.event;
51764    return isTouchEvent(e) ? e.changedTouches[0] : e;
51765  }
51766
51767  function getTarget(e) {
51768    return e.target || win.event.srcElement;
51769  }
51770
51771  function isTouchEvent(e) {
51772    return e.type.indexOf('touch') >= 0;
51773  }
51774
51775  function preventDefaultBehavior(e) {
51776    e.preventDefault ? e.preventDefault() : e.returnValue = false;
51777  }
51778
51779  function getMoveDirectionExpected() {
51780    return Object(_helpers_getTouchDirection_js__WEBPACK_IMPORTED_MODULE_14__["getTouchDirection"])(Object(_helpers_toDegree_js__WEBPACK_IMPORTED_MODULE_13__["toDegree"])(lastPosition.y - initPosition.y, lastPosition.x - initPosition.x), swipeAngle) === options.axis;
51781  }
51782
51783  function onPanStart(e) {
51784    if (running) {
51785      if (preventActionWhenRunning) {
51786        return;
51787      } else {
51788        onTransitionEnd();
51789      }
51790    }
51791
51792    if (autoplay && animating) {
51793      stopAutoplayTimer();
51794    }
51795
51796    panStart = true;
51797
51798    if (rafIndex) {
51799      Object(_helpers_caf_js__WEBPACK_IMPORTED_MODULE_1__["caf"])(rafIndex);
51800      rafIndex = null;
51801    }
51802
51803    var $ = getEvent(e);
51804    events.emit(isTouchEvent(e) ? 'touchStart' : 'dragStart', info(e));
51805
51806    if (!isTouchEvent(e) && ['img', 'a'].indexOf(getLowerCaseNodeName(getTarget(e))) >= 0) {
51807      preventDefaultBehavior(e);
51808    }
51809
51810    lastPosition.x = initPosition.x = $.clientX;
51811    lastPosition.y = initPosition.y = $.clientY;
51812
51813    if (carousel) {
51814      translateInit = parseFloat(container.style[transformAttr].replace(transformPrefix, ''));
51815      resetDuration(container, '0s');
51816    }
51817  }
51818
51819  function onPanMove(e) {
51820    if (panStart) {
51821      var $ = getEvent(e);
51822      lastPosition.x = $.clientX;
51823      lastPosition.y = $.clientY;
51824
51825      if (carousel) {
51826        if (!rafIndex) {
51827          rafIndex = Object(_helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__["raf"])(function () {
51828            panUpdate(e);
51829          });
51830        }
51831      } else {
51832        if (moveDirectionExpected === '?') {
51833          moveDirectionExpected = getMoveDirectionExpected();
51834        }
51835
51836        if (moveDirectionExpected) {
51837          preventScroll = true;
51838        }
51839      }
51840
51841      if ((typeof e.cancelable !== 'boolean' || e.cancelable) && preventScroll) {
51842        e.preventDefault();
51843      }
51844    }
51845  }
51846
51847  function panUpdate(e) {
51848    if (!moveDirectionExpected) {
51849      panStart = false;
51850      return;
51851    }
51852
51853    Object(_helpers_caf_js__WEBPACK_IMPORTED_MODULE_1__["caf"])(rafIndex);
51854
51855    if (panStart) {
51856      rafIndex = Object(_helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__["raf"])(function () {
51857        panUpdate(e);
51858      });
51859    }
51860
51861    if (moveDirectionExpected === '?') {
51862      moveDirectionExpected = getMoveDirectionExpected();
51863    }
51864
51865    if (moveDirectionExpected) {
51866      if (!preventScroll && isTouchEvent(e)) {
51867        preventScroll = true;
51868      }
51869
51870      try {
51871        if (e.type) {
51872          events.emit(isTouchEvent(e) ? 'touchMove' : 'dragMove', info(e));
51873        }
51874      } catch (err) {}
51875
51876      var x = translateInit,
51877          dist = getDist(lastPosition, initPosition);
51878
51879      if (!horizontal || fixedWidth || autoWidth) {
51880        x += dist;
51881        x += 'px';
51882      } else {
51883        var percentageX = TRANSFORM ? dist * items * 100 / ((viewport + gutter) * slideCountNew) : dist * 100 / (viewport + gutter);
51884        x += percentageX;
51885        x += '%';
51886      }
51887
51888      container.style[transformAttr] = transformPrefix + x + transformPostfix;
51889    }
51890  }
51891
51892  function onPanEnd(e) {
51893    if (panStart) {
51894      if (rafIndex) {
51895        Object(_helpers_caf_js__WEBPACK_IMPORTED_MODULE_1__["caf"])(rafIndex);
51896        rafIndex = null;
51897      }
51898
51899      if (carousel) {
51900        resetDuration(container, '');
51901      }
51902
51903      panStart = false;
51904      var $ = getEvent(e);
51905      lastPosition.x = $.clientX;
51906      lastPosition.y = $.clientY;
51907      var dist = getDist(lastPosition, initPosition);
51908
51909      if (Math.abs(dist)) {
51910        // drag vs click
51911        if (!isTouchEvent(e)) {
51912          // prevent "click"
51913          var target = getTarget(e);
51914          Object(_helpers_addEvents_js__WEBPACK_IMPORTED_MODULE_30__["addEvents"])(target, {
51915            'click': function preventClick(e) {
51916              preventDefaultBehavior(e);
51917              Object(_helpers_removeEvents_js__WEBPACK_IMPORTED_MODULE_31__["removeEvents"])(target, {
51918                'click': preventClick
51919              });
51920            }
51921          });
51922        }
51923
51924        if (carousel) {
51925          rafIndex = Object(_helpers_raf_js__WEBPACK_IMPORTED_MODULE_0__["raf"])(function () {
51926            if (horizontal && !autoWidth) {
51927              var indexMoved = -dist * items / (viewport + gutter);
51928              indexMoved = dist > 0 ? Math.floor(indexMoved) : Math.ceil(indexMoved);
51929              index += indexMoved;
51930            } else {
51931              var moved = -(translateInit + dist);
51932
51933              if (moved <= 0) {
51934                index = indexMin;
51935              } else if (moved >= slidePositions[slideCountNew - 1]) {
51936                index = indexMax;
51937              } else {
51938                var i = 0;
51939
51940                while (i < slideCountNew && moved >= slidePositions[i]) {
51941                  index = i;
51942
51943                  if (moved > slidePositions[i] && dist < 0) {
51944                    index += 1;
51945                  }
51946
51947                  i++;
51948                }
51949              }
51950            }
51951
51952            render(e, dist);
51953            events.emit(isTouchEvent(e) ? 'touchEnd' : 'dragEnd', info(e));
51954          });
51955        } else {
51956          if (moveDirectionExpected) {
51957            onControlsClick(e, dist > 0 ? -1 : 1);
51958          }
51959        }
51960      }
51961    } // reset
51962
51963
51964    if (options.preventScrollOnTouch === 'auto') {
51965      preventScroll = false;
51966    }
51967
51968    if (swipeAngle) {
51969      moveDirectionExpected = '?';
51970    }
51971
51972    if (autoplay && !animating) {
51973      setAutoplayTimer();
51974    }
51975  } // === RESIZE FUNCTIONS === //
51976  // (slidePositions, index, items) => vertical_conentWrapper.height
51977
51978
51979  function updateContentWrapperHeight() {
51980    var wp = middleWrapper ? middleWrapper : innerWrapper;
51981    wp.style.height = slidePositions[index + items] - slidePositions[index] + 'px';
51982  }
51983
51984  function getPages() {
51985    var rough = fixedWidth ? (fixedWidth + gutter) * slideCount / viewport : slideCount / items;
51986    return Math.min(Math.ceil(rough), slideCount);
51987  }
51988  /*
51989   * 1. update visible nav items list
51990   * 2. add "hidden" attributes to previous visible nav items
51991   * 3. remove "hidden" attrubutes to new visible nav items
51992   */
51993
51994
51995  function updateNavVisibility() {
51996    if (!nav || navAsThumbnails) {
51997      return;
51998    }
51999
52000    if (pages !== pagesCached) {
52001      var min = pagesCached,
52002          max = pages,
52003          fn = _helpers_showElement_js__WEBPACK_IMPORTED_MODULE_25__["showElement"];
52004
52005      if (pagesCached > pages) {
52006        min = pages;
52007        max = pagesCached;
52008        fn = _helpers_hideElement_js__WEBPACK_IMPORTED_MODULE_24__["hideElement"];
52009      }
52010
52011      while (min < max) {
52012        fn(navItems[min]);
52013        min++;
52014      } // cache pages
52015
52016
52017      pagesCached = pages;
52018    }
52019  }
52020
52021  function info(e) {
52022    return {
52023      container: container,
52024      slideItems: slideItems,
52025      navContainer: navContainer,
52026      navItems: navItems,
52027      controlsContainer: controlsContainer,
52028      hasControls: hasControls,
52029      prevButton: prevButton,
52030      nextButton: nextButton,
52031      items: items,
52032      slideBy: slideBy,
52033      cloneCount: cloneCount,
52034      slideCount: slideCount,
52035      slideCountNew: slideCountNew,
52036      index: index,
52037      indexCached: indexCached,
52038      displayIndex: getCurrentSlide(),
52039      navCurrentIndex: navCurrentIndex,
52040      navCurrentIndexCached: navCurrentIndexCached,
52041      pages: pages,
52042      pagesCached: pagesCached,
52043      sheet: sheet,
52044      isOn: isOn,
52045      event: e || {}
52046    };
52047  }
52048
52049  return {
52050    version: '2.9.3',
52051    getInfo: info,
52052    events: events,
52053    goTo: goTo,
52054    play: play,
52055    pause: pause,
52056    isOn: isOn,
52057    updateSliderHeight: updateInnerWrapperHeight,
52058    refresh: initSliderTransform,
52059    destroy: destroy,
52060    rebuild: function rebuild() {
52061      return tns(Object(_helpers_extend_js__WEBPACK_IMPORTED_MODULE_2__["extend"])(options, optionsElements));
52062    }
52063  };
52064};
52065
52066/***/ }),
52067
vendor: 707,751 bytes, lines 52068-70859
52068/***/ "../rvw_autobahn_core/node_modules/video.js/dist/video.min.js":
52069/*!********************************************************************!*\
52070  !*** ../rvw_autobahn_core/node_modules/video.js/dist/video.min.js ***!
52071  \********************************************************************/
52072/*! no static exports found */
52073/***/ (function(module, exports, __webpack_require__) {
52074
52075/* WEBPACK VAR INJECTION */(function(Buffer) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
52076
52077/**
52078 * @license
52079 * Video.js 7.8.4 <http://videojs.com/>
52080 * Copyright Brightcove, Inc. <https://www.brightcove.com/>
52081 * Available under Apache License Version 2.0
52082 * <https://github.com/videojs/video.js/blob/master/LICENSE>
52083 *
52084 * Includes vtt.js <https://github.com/mozilla/vtt.js>
52085 * Available under Apache License Version 2.0
52086 * <https://github.com/mozilla/vtt.js/blob/master/LICENSE>
52087 */
52088!function (e, t) {
52089  "object" == ( false ? undefined : _typeof(exports)) && "undefined" != typeof module ? module.exports = t(__webpack_require__(/*! global/window */ "../rvw_autobahn_core/node_modules/global/window.js"), __webpack_require__(/*! global/document */ "../rvw_autobahn_core/node_modules/global/document.js")) :  true ? !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! global/window */ "../rvw_autobahn_core/node_modules/global/window.js"), __webpack_require__(/*! global/document */ "../rvw_autobahn_core/node_modules/global/document.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (t),
52090				__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
52091				(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
52092				__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) : undefined;
52093}(this, function (y, h) {
52094  "use strict";
52095
52096  y = y && Object.prototype.hasOwnProperty.call(y, "default") ? y["default"] : y, h = h && Object.prototype.hasOwnProperty.call(h, "default") ? h["default"] : h;
52097
52098  var d = "7.8.4",
52099      l = [],
52100      e = function e(o, u) {
52101    return function (e, t, i) {
52102      var n = u.levels[t],
52103          r = new RegExp("^(" + n + ")$");
52104
52105      if ("log" !== e && i.unshift(e.toUpperCase() + ":"), i.unshift(o + ":"), l) {
52106        l.push([].concat(i));
52107        var s = l.length - 1e3;
52108        l.splice(0, 0 < s ? s : 0);
52109      }
52110
52111      if (y.console) {
52112        var a = y.console[e];
52113        a || "debug" !== e || (a = y.console.info || y.console.log), a && n && r.test(e) && a[Array.isArray(i) ? "apply" : "call"](y.console, i);
52114      }
52115    };
52116  };
52117
52118  var p = function t(i) {
52119    function n() {
52120      for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
52121        t[i] = arguments[i];
52122      }
52123
52124      r("log", s, t);
52125    }
52126
52127    var r,
52128        s = "info";
52129    return r = e(i, n), n.createLogger = function (e) {
52130      return t(i + ": " + e);
52131    }, n.levels = {
52132      all: "debug|log|warn|error",
52133      off: "",
52134      debug: "debug|log|warn|error",
52135      info: "log|warn|error",
52136      warn: "warn|error",
52137      error: "error",
52138      DEFAULT: s
52139    }, n.level = function (e) {
52140      if ("string" == typeof e) {
52141        if (!n.levels.hasOwnProperty(e)) throw new Error('"' + e + '" in not a valid log level');
52142        s = e;
52143      }
52144
52145      return s;
52146    }, (n.history = function () {
52147      return l ? [].concat(l) : [];
52148    }).filter = function (t) {
52149      return (l || []).filter(function (e) {
52150        return new RegExp(".*" + t + ".*").test(e[0]);
52151      });
52152    }, n.history.clear = function () {
52153      l && (l.length = 0);
52154    }, n.history.disable = function () {
52155      null !== l && (l.length = 0, l = null);
52156    }, n.history.enable = function () {
52157      null === l && (l = []);
52158    }, n.error = function () {
52159      for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
52160        t[i] = arguments[i];
52161      }
52162
52163      return r("error", s, t);
52164    }, n.warn = function () {
52165      for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
52166        t[i] = arguments[i];
52167      }
52168
52169      return r("warn", s, t);
52170    }, n.debug = function () {
52171      for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
52172        t[i] = arguments[i];
52173      }
52174
52175      return r("debug", s, t);
52176    }, n;
52177  }("VIDEOJS"),
52178      f = p.createLogger;
52179
52180  function t(e, t) {
52181    return e(t = {
52182      exports: {}
52183    }, t.exports), t.exports;
52184  }
52185
52186  var r = t(function (e) {
52187    function t() {
52188      return e.exports = t = Object.assign || function (e) {
52189        for (var t = 1; t < arguments.length; t++) {
52190          var i = arguments[t];
52191
52192          for (var n in i) {
52193            Object.prototype.hasOwnProperty.call(i, n) && (e[n] = i[n]);
52194          }
52195        }
52196
52197        return e;
52198      }, t.apply(this, arguments);
52199    }
52200
52201    e.exports = t;
52202  }),
52203      i = Object.prototype.toString,
52204      s = function s(e) {
52205    return o(e) ? Object.keys(e) : [];
52206  };
52207
52208  function a(t, i) {
52209    s(t).forEach(function (e) {
52210      return i(t[e], e);
52211    });
52212  }
52213
52214  function m(i) {
52215    for (var e = arguments.length, t = new Array(1 < e ? e - 1 : 0), n = 1; n < e; n++) {
52216      t[n - 1] = arguments[n];
52217    }
52218
52219    return Object.assign ? r.apply(void 0, [i].concat(t)) : (t.forEach(function (e) {
52220      e && a(e, function (e, t) {
52221        i[t] = e;
52222      });
52223    }), i);
52224  }
52225
52226  function o(e) {
52227    return !!e && "object" == _typeof(e);
52228  }
52229
52230  function u(e) {
52231    return o(e) && "[object Object]" === i.call(e) && e.constructor === Object;
52232  }
52233
52234  function n(e, t) {
52235    if (!e || !t) return "";
52236    if ("function" != typeof y.getComputedStyle) return "";
52237    var i = y.getComputedStyle(e);
52238    return i ? i.getPropertyValue(t) || i[t] : "";
52239  }
52240
52241  function c(e) {
52242    return "string" == typeof e && Boolean(e.trim());
52243  }
52244
52245  function g(e) {
52246    if (0 <= e.indexOf(" ")) throw new Error("class has illegal whitespace characters");
52247  }
52248
52249  function v() {
52250    return h === y.document;
52251  }
52252
52253  function _(e) {
52254    return o(e) && 1 === e.nodeType;
52255  }
52256
52257  function b() {
52258    try {
52259      return y.parent !== y.self;
52260    } catch (e) {
52261      return !0;
52262    }
52263  }
52264
52265  function T(n) {
52266    return function (e, t) {
52267      if (!c(e)) return h[n](null);
52268      c(t) && (t = h.querySelector(t));
52269      var i = _(t) ? t : h;
52270      return i[n] && i[n](e);
52271    };
52272  }
52273
52274  function S(e, i, t, n) {
52275    void 0 === e && (e = "div"), void 0 === i && (i = {}), void 0 === t && (t = {});
52276    var r = h.createElement(e);
52277    return Object.getOwnPropertyNames(i).forEach(function (e) {
52278      var t = i[e];
52279      -1 !== e.indexOf("aria-") || "role" === e || "type" === e ? (p.warn("Setting attributes in the second argument of createEl()\nhas been deprecated. Use the third argument instead.\ncreateEl(type, properties, attributes). Attempting to set " + e + " to " + t + "."), r.setAttribute(e, t)) : "textContent" === e ? k(r, t) : r[e] !== t && (r[e] = t);
52280    }), Object.getOwnPropertyNames(t).forEach(function (e) {
52281      r.setAttribute(e, t[e]);
52282    }), n && V(r, n), r;
52283  }
52284
52285  function k(e, t) {
52286    return "undefined" == typeof e.textContent ? e.innerText = t : e.textContent = t, e;
52287  }
52288
52289  function C(e, t) {
52290    t.firstChild ? t.insertBefore(e, t.firstChild) : t.appendChild(e);
52291  }
52292
52293  function w(e, t) {
52294    return g(t), e.classList ? e.classList.contains(t) : function (e) {
52295      return new RegExp("(^|\\s)" + e + "($|\\s)");
52296    }(t).test(e.className);
52297  }
52298
52299  function E(e, t) {
52300    return e.classList ? e.classList.add(t) : w(e, t) || (e.className = (e.className + " " + t).trim()), e;
52301  }
52302
52303  function x(e, t) {
52304    return e.classList ? e.classList.remove(t) : (g(t), e.className = e.className.split(/\s+/).filter(function (e) {
52305      return e !== t;
52306    }).join(" ")), e;
52307  }
52308
52309  function A(e, t, i) {
52310    var n = w(e, t);
52311    if ("function" == typeof i && (i = i(e, t)), "boolean" != typeof i && (i = !n), i !== n) return i ? E(e, t) : x(e, t), e;
52312  }
52313
52314  function I(i, n) {
52315    Object.getOwnPropertyNames(n).forEach(function (e) {
52316      var t = n[e];
52317      null === t || "undefined" == typeof t || !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? "" : t);
52318    });
52319  }
52320
52321  function P(e) {
52322    var t = {},
52323        i = ",autoplay,controls,playsinline,loop,muted,default,defaultMuted,";
52324    if (e && e.attributes && 0 < e.attributes.length) for (var n = e.attributes, r = n.length - 1; 0 <= r; r--) {
52325      var s = n[r].name,
52326          a = n[r].value;
52327      "boolean" != typeof e[s] && -1 === i.indexOf("," + s + ",") || (a = null !== a), t[s] = a;
52328    }
52329    return t;
52330  }
52331
52332  function L(e, t) {
52333    return e.getAttribute(t);
52334  }
52335
52336  function O(e, t, i) {
52337    e.setAttribute(t, i);
52338  }
52339
52340  function D(e, t) {
52341    e.removeAttribute(t);
52342  }
52343
52344  function N() {
52345    h.body.focus(), h.onselectstart = function () {
52346      return !1;
52347    };
52348  }
52349
52350  function R() {
52351    h.onselectstart = function () {
52352      return !0;
52353    };
52354  }
52355
52356  function U(e) {
52357    if (e && e.getBoundingClientRect && e.parentNode) {
52358      var t = e.getBoundingClientRect(),
52359          i = {};
52360      return ["bottom", "height", "left", "right", "top", "width"].forEach(function (e) {
52361        void 0 !== t[e] && (i[e] = t[e]);
52362      }), i.height || (i.height = parseFloat(n(e, "height"))), i.width || (i.width = parseFloat(n(e, "width"))), i;
52363    }
52364  }
52365
52366  function M(e) {
52367    var t;
52368    if (e.getBoundingClientRect && e.parentNode && (t = e.getBoundingClientRect()), !t) return {
52369      left: 0,
52370      top: 0
52371    };
52372    var i = h.documentElement,
52373        n = h.body,
52374        r = i.clientLeft || n.clientLeft || 0,
52375        s = y.pageXOffset || n.scrollLeft,
52376        a = t.left + s - r,
52377        o = i.clientTop || n.clientTop || 0,
52378        u = y.pageYOffset || n.scrollTop,
52379        l = t.top + u - o;
52380    return {
52381      left: Math.round(a),
52382      top: Math.round(l)
52383    };
52384  }
52385
52386  function B(e, t) {
52387    var i = {},
52388        n = M(e),
52389        r = e.offsetWidth,
52390        s = e.offsetHeight,
52391        a = n.top,
52392        o = n.left,
52393        u = t.pageY,
52394        l = t.pageX;
52395    return t.changedTouches && (l = t.changedTouches[0].pageX, u = t.changedTouches[0].pageY), i.y = Math.max(0, Math.min(1, (a - u + s) / s)), i.x = Math.max(0, Math.min(1, (l - o) / r)), i;
52396  }
52397
52398  function j(e) {
52399    return o(e) && 3 === e.nodeType;
52400  }
52401
52402  function F(e) {
52403    for (; e.firstChild;) {
52404      e.removeChild(e.firstChild);
52405    }
52406
52407    return e;
52408  }
52409
52410  function H(e) {
52411    return "function" == typeof e && (e = e()), (Array.isArray(e) ? e : [e]).map(function (e) {
52412      return "function" == typeof e && (e = e()), _(e) || j(e) ? e : "string" == typeof e && /\S/.test(e) ? h.createTextNode(e) : void 0;
52413    }).filter(function (e) {
52414      return e;
52415    });
52416  }
52417
52418  function V(t, e) {
52419    return H(e).forEach(function (e) {
52420      return t.appendChild(e);
52421    }), t;
52422  }
52423
52424  function q(e, t) {
52425    return V(F(e), t);
52426  }
52427
52428  function W(e) {
52429    return void 0 === e.button && void 0 === e.buttons || 0 === e.button && void 0 === e.buttons || "mouseup" === e.type && 0 === e.button && 0 === e.buttons || 0 === e.button && 1 === e.buttons;
52430  }
52431
52432  var z,
52433      G = T("querySelector"),
52434      X = T("querySelectorAll"),
52435      K = Object.freeze({
52436    __proto__: null,
52437    isReal: v,
52438    isEl: _,
52439    isInFrame: b,
52440    createEl: S,
52441    textContent: k,
52442    prependTo: C,
52443    hasClass: w,
52444    addClass: E,
52445    removeClass: x,
52446    toggleClass: A,
52447    setAttributes: I,
52448    getAttributes: P,
52449    getAttribute: L,
52450    setAttribute: O,
52451    removeAttribute: D,
52452    blockTextSelection: N,
52453    unblockTextSelection: R,
52454    getBoundingClientRect: U,
52455    findPosition: M,
52456    getPointerPosition: B,
52457    isTextNode: j,
52458    emptyEl: F,
52459    normalizeContent: H,
52460    appendContent: V,
52461    insertContent: q,
52462    isSingleLeftClick: W,
52463    $: G,
52464    $$: X
52465  }),
52466      Y = !1,
52467      $ = function $() {
52468    if (v() && !1 !== z.options.autoSetup) {
52469      var e = Array.prototype.slice.call(h.getElementsByTagName("video")),
52470          t = Array.prototype.slice.call(h.getElementsByTagName("audio")),
52471          i = Array.prototype.slice.call(h.getElementsByTagName("video-js")),
52472          n = e.concat(t, i);
52473      if (n && 0 < n.length) for (var r = 0, s = n.length; r < s; r++) {
52474        var a = n[r];
52475
52476        if (!a || !a.getAttribute) {
52477          Q(1);
52478          break;
52479        }
52480
52481        void 0 === a.player && null !== a.getAttribute("data-setup") && z(a);
52482      } else Y || Q(1);
52483    }
52484  };
52485
52486  function Q(e, t) {
52487    t && (z = t), y.setTimeout($, e);
52488  }
52489
52490  function J() {
52491    Y = !0, y.removeEventListener("load", J);
52492  }
52493
52494  v() && ("complete" === h.readyState ? J() : y.addEventListener("load", J));
52495
52496  function Z(e) {
52497    var t = h.createElement("style");
52498    return t.className = e, t;
52499  }
52500
52501  function ee(e, t) {
52502    e.styleSheet ? e.styleSheet.cssText = t : e.textContent = t;
52503  }
52504
52505  var te,
52506      ie = 3;
52507
52508  function ne() {
52509    return ie++;
52510  }
52511
52512  y.WeakMap || (te = function () {
52513    function e() {
52514      this.vdata = "vdata" + Math.floor(y.performance && y.performance.now() || Date.now()), this.data = {};
52515    }
52516
52517    var t = e.prototype;
52518    return t.set = function (e, t) {
52519      var i = e[this.vdata] || ne();
52520      return e[this.vdata] || (e[this.vdata] = i), this.data[i] = t, this;
52521    }, t.get = function (e) {
52522      var t = e[this.vdata];
52523      if (t) return this.data[t];
52524      p("We have no data for this element", e);
52525    }, t.has = function (e) {
52526      return e[this.vdata] in this.data;
52527    }, t["delete"] = function (e) {
52528      var t = e[this.vdata];
52529      t && (delete this.data[t], delete e[this.vdata]);
52530    }, e;
52531  }());
52532  var re,
52533      se = y.WeakMap ? new WeakMap() : new te();
52534
52535  function ae(e, t) {
52536    if (se.has(e)) {
52537      var i = se.get(e);
52538      0 === i.handlers[t].length && (delete i.handlers[t], e.removeEventListener ? e.removeEventListener(t, i.dispatcher, !1) : e.detachEvent && e.detachEvent("on" + t, i.dispatcher)), Object.getOwnPropertyNames(i.handlers).length <= 0 && (delete i.handlers, delete i.dispatcher, delete i.disabled), 0 === Object.getOwnPropertyNames(i).length && se["delete"](e);
52539    }
52540  }
52541
52542  function oe(t, i, e, n) {
52543    e.forEach(function (e) {
52544      t(i, e, n);
52545    });
52546  }
52547
52548  function ue(e) {
52549    if (e.fixed_) return e;
52550
52551    function t() {
52552      return !0;
52553    }
52554
52555    function i() {
52556      return !1;
52557    }
52558
52559    if (!e || !e.isPropagationStopped) {
52560      var n = e || y.event;
52561
52562      for (var r in e = {}, n) {
52563        "layerX" !== r && "layerY" !== r && "keyLocation" !== r && "webkitMovementX" !== r && "webkitMovementY" !== r && ("returnValue" === r && n.preventDefault || (e[r] = n[r]));
52564      }
52565
52566      if (e.target || (e.target = e.srcElement || h), e.relatedTarget || (e.relatedTarget = e.fromElement === e.target ? e.toElement : e.fromElement), e.preventDefault = function () {
52567        n.preventDefault && n.preventDefault(), e.returnValue = !1, n.returnValue = !1, e.defaultPrevented = !0;
52568      }, e.defaultPrevented = !1, e.stopPropagation = function () {
52569        n.stopPropagation && n.stopPropagation(), e.cancelBubble = !0, n.cancelBubble = !0, e.isPropagationStopped = t;
52570      }, e.isPropagationStopped = i, e.stopImmediatePropagation = function () {
52571        n.stopImmediatePropagation && n.stopImmediatePropagation(), e.isImmediatePropagationStopped = t, e.stopPropagation();
52572      }, e.isImmediatePropagationStopped = i, null !== e.clientX && void 0 !== e.clientX) {
52573        var s = h.documentElement,
52574            a = h.body;
52575        e.pageX = e.clientX + (s && s.scrollLeft || a && a.scrollLeft || 0) - (s && s.clientLeft || a && a.clientLeft || 0), e.pageY = e.clientY + (s && s.scrollTop || a && a.scrollTop || 0) - (s && s.clientTop || a && a.clientTop || 0);
52576      }
52577
52578      e.which = e.charCode || e.keyCode, null !== e.button && void 0 !== e.button && (e.button = 1 & e.button ? 0 : 4 & e.button ? 1 : 2 & e.button ? 2 : 0);
52579    }
52580
52581    return e.fixed_ = !0, e;
52582  }
52583
52584  var le = function le() {
52585    if ("boolean" != typeof re) {
52586      re = !1;
52587
52588      try {
52589        var e = Object.defineProperty({}, "passive", {
52590          get: function get() {
52591            re = !0;
52592          }
52593        });
52594        y.addEventListener("test", null, e), y.removeEventListener("test", null, e);
52595      } catch (e) {}
52596    }
52597
52598    return re;
52599  },
52600      ce = ["touchstart", "touchmove"];
52601
52602  function he(a, e, t) {
52603    if (Array.isArray(e)) return oe(he, a, e, t);
52604    se.has(a) || se.set(a, {});
52605    var o = se.get(a);
52606    if (o.handlers || (o.handlers = {}), o.handlers[e] || (o.handlers[e] = []), t.guid || (t.guid = ne()), o.handlers[e].push(t), o.dispatcher || (o.disabled = !1, o.dispatcher = function (e, t) {
52607      if (!o.disabled) {
52608        e = ue(e);
52609        var i = o.handlers[e.type];
52610        if (i) for (var n = i.slice(0), r = 0, s = n.length; r < s && !e.isImmediatePropagationStopped(); r++) {
52611          try {
52612            n[r].call(a, e, t);
52613          } catch (e) {
52614            p.error(e);
52615          }
52616        }
52617      }
52618    }), 1 === o.handlers[e].length) if (a.addEventListener) {
52619      var i = !1;
52620      le() && -1 < ce.indexOf(e) && (i = {
52621        passive: !0
52622      }), a.addEventListener(e, o.dispatcher, i);
52623    } else a.attachEvent && a.attachEvent("on" + e, o.dispatcher);
52624  }
52625
52626  function de(e, t, i) {
52627    if (se.has(e)) {
52628      var n = se.get(e);
52629
52630      if (n.handlers) {
52631        if (Array.isArray(t)) return oe(de, e, t, i);
52632
52633        var r = function r(e, t) {
52634          n.handlers[t] = [], ae(e, t);
52635        };
52636
52637        if (void 0 !== t) {
52638          var s = n.handlers[t];
52639          if (s) if (i) {
52640            if (i.guid) for (var a = 0; a < s.length; a++) {
52641              s[a].guid === i.guid && s.splice(a--, 1);
52642            }
52643            ae(e, t);
52644          } else r(e, t);
52645        } else for (var o in n.handlers) {
52646          Object.prototype.hasOwnProperty.call(n.handlers || {}, o) && r(e, o);
52647        }
52648      }
52649    }
52650  }
52651
52652  function pe(e, t, i) {
52653    var n = se.has(e) ? se.get(e) : {},
52654        r = e.parentNode || e.ownerDocument;
52655    if ("string" == typeof t ? t = {
52656      type: t,
52657      target: e
52658    } : t.target || (t.target = e), t = ue(t), n.dispatcher && n.dispatcher.call(e, t, i), r && !t.isPropagationStopped() && !0 === t.bubbles) pe.call(null, r, t, i);else if (!r && !t.defaultPrevented && t.target && t.target[t.type]) {
52659      se.has(t.target) || se.set(t.target, {});
52660      var s = se.get(t.target);
52661      t.target[t.type] && (s.disabled = !0, "function" == typeof t.target[t.type] && t.target[t.type](), s.disabled = !1);
52662    }
52663    return !t.defaultPrevented;
52664  }
52665
52666  function fe(e, t, i) {
52667    if (Array.isArray(t)) return oe(fe, e, t, i);
52668
52669    function n() {
52670      de(e, t, n), i.apply(this, arguments);
52671    }
52672
52673    n.guid = i.guid = i.guid || ne(), he(e, t, n);
52674  }
52675
52676  function me(e, t, i) {
52677    function n() {
52678      de(e, t, n), i.apply(this, arguments);
52679    }
52680
52681    n.guid = i.guid = i.guid || ne(), he(e, t, n);
52682  }
52683
52684  function ge(e, t, i) {
52685    t.guid || (t.guid = ne());
52686    var n = t.bind(e);
52687    return n.guid = i ? i + "_" + t.guid : t.guid, n;
52688  }
52689
52690  function ve(t, i) {
52691    var n = y.performance.now();
52692    return function () {
52693      var e = y.performance.now();
52694      i <= e - n && (t.apply(void 0, arguments), n = e);
52695    };
52696  }
52697
52698  function ye() {}
52699
52700  var _e,
52701      be = Object.freeze({
52702    __proto__: null,
52703    fixEvent: ue,
52704    on: he,
52705    off: de,
52706    trigger: pe,
52707    one: fe,
52708    any: me
52709  });
52710
52711  ye.prototype.allowedEvents_ = {}, ye.prototype.addEventListener = ye.prototype.on = function (e, t) {
52712    var i = this.addEventListener;
52713    this.addEventListener = function () {}, he(this, e, t), this.addEventListener = i;
52714  }, ye.prototype.removeEventListener = ye.prototype.off = function (e, t) {
52715    de(this, e, t);
52716  }, ye.prototype.one = function (e, t) {
52717    var i = this.addEventListener;
52718    this.addEventListener = function () {}, fe(this, e, t), this.addEventListener = i;
52719  }, ye.prototype.any = function (e, t) {
52720    var i = this.addEventListener;
52721    this.addEventListener = function () {}, me(this, e, t), this.addEventListener = i;
52722  }, ye.prototype.dispatchEvent = ye.prototype.trigger = function (e) {
52723    var t = e.type || e;
52724    "string" == typeof e && (e = {
52725      type: t
52726    }), e = ue(e), this.allowedEvents_[t] && this["on" + t] && this["on" + t](e), pe(this, e);
52727  }, ye.prototype.queueTrigger = function (e) {
52728    var t = this;
52729    _e = _e || new Map();
52730
52731    var i = e.type || e,
52732        n = _e.get(this);
52733
52734    n || (n = new Map(), _e.set(this, n));
52735    var r = n.get(i);
52736    n["delete"](i), y.clearTimeout(r);
52737    var s = y.setTimeout(function () {
52738      0 === n.size && (n = null, _e["delete"](t)), t.trigger(e);
52739    }, 0);
52740    n.set(i, s);
52741  };
52742
52743  function Te(e) {
52744    return "string" == typeof e && /\S/.test(e) || Array.isArray(e) && !!e.length;
52745  }
52746
52747  function Se(e) {
52748    if (!e.nodeName && !xe(e)) throw new Error("Invalid target; must be a DOM node or evented object.");
52749  }
52750
52751  function ke(e) {
52752    if (!Te(e)) throw new Error("Invalid event type; must be a non-empty string or array.");
52753  }
52754
52755  function Ce(e) {
52756    if ("function" != typeof e) throw new Error("Invalid listener; must be a function.");
52757  }
52758
52759  function we(e, t) {
52760    var i,
52761        n,
52762        r,
52763        s = t.length < 3 || t[0] === e || t[0] === e.eventBusEl_;
52764    return r = s ? (i = e.eventBusEl_, 3 <= t.length && t.shift(), n = t[0], t[1]) : (i = t[0], n = t[1], t[2]), Se(i), ke(n), Ce(r), {
52765      isTargetingSelf: s,
52766      target: i,
52767      type: n,
52768      listener: r = ge(e, r)
52769    };
52770  }
52771
52772  function Ee(e, t, i, n) {
52773    Se(e), e.nodeName ? be[t](e, i, n) : e[t](i, n);
52774  }
52775
52776  var xe = function xe(t) {
52777    return t instanceof ye || !!t.eventBusEl_ && ["on", "one", "off", "trigger"].every(function (e) {
52778      return "function" == typeof t[e];
52779    });
52780  },
52781      Ae = {
52782    on: function on() {
52783      for (var e = this, t = arguments.length, i = new Array(t), n = 0; n < t; n++) {
52784        i[n] = arguments[n];
52785      }
52786
52787      var r = we(this, i),
52788          s = r.isTargetingSelf,
52789          a = r.target,
52790          o = r.type,
52791          u = r.listener;
52792
52793      if (Ee(a, "on", o, u), !s) {
52794        var l = function l() {
52795          return e.off(a, o, u);
52796        };
52797
52798        l.guid = u.guid;
52799
52800        var c = function c() {
52801          return e.off("dispose", l);
52802        };
52803
52804        c.guid = u.guid, Ee(this, "on", "dispose", l), Ee(a, "on", "dispose", c);
52805      }
52806    },
52807    one: function one() {
52808      for (var r = this, e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
52809        t[i] = arguments[i];
52810      }
52811
52812      var n = we(this, t),
52813          s = n.isTargetingSelf,
52814          a = n.target,
52815          o = n.type,
52816          u = n.listener;
52817      if (s) Ee(a, "one", o, u);else {
52818        var l = function e() {
52819          r.off(a, o, e);
52820
52821          for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) {
52822            i[n] = arguments[n];
52823          }
52824
52825          u.apply(null, i);
52826        };
52827
52828        l.guid = u.guid, Ee(a, "one", o, l);
52829      }
52830    },
52831    any: function any() {
52832      for (var r = this, e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
52833        t[i] = arguments[i];
52834      }
52835
52836      var n = we(this, t),
52837          s = n.isTargetingSelf,
52838          a = n.target,
52839          o = n.type,
52840          u = n.listener;
52841      if (s) Ee(a, "any", o, u);else {
52842        var l = function e() {
52843          r.off(a, o, e);
52844
52845          for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) {
52846            i[n] = arguments[n];
52847          }
52848
52849          u.apply(null, i);
52850        };
52851
52852        l.guid = u.guid, Ee(a, "any", o, l);
52853      }
52854    },
52855    off: function off(e, t, i) {
52856      if (!e || Te(e)) de(this.eventBusEl_, e, t);else {
52857        var n = e,
52858            r = t;
52859        Se(n), ke(r), Ce(i), i = ge(this, i), this.off("dispose", i), n.nodeName ? (de(n, r, i), de(n, "dispose", i)) : xe(n) && (n.off(r, i), n.off("dispose", i));
52860      }
52861    },
52862    trigger: function trigger(e, t) {
52863      return pe(this.eventBusEl_, e, t);
52864    }
52865  };
52866
52867  function Ie(e, t) {
52868    void 0 === t && (t = {});
52869    var i = t.eventBusKey;
52870
52871    if (i) {
52872      if (!e[i].nodeName) throw new Error('The eventBusKey "' + i + '" does not refer to an element.');
52873      e.eventBusEl_ = e[i];
52874    } else e.eventBusEl_ = S("span", {
52875      className: "vjs-event-bus"
52876    });
52877
52878    return m(e, Ae), e.eventedCallbacks && e.eventedCallbacks.forEach(function (e) {
52879      e();
52880    }), e.on("dispose", function () {
52881      e.off(), y.setTimeout(function () {
52882        e.eventBusEl_ = null;
52883      }, 0);
52884    }), e;
52885  }
52886
52887  var Pe = {
52888    state: {},
52889    setState: function setState(e) {
52890      var i,
52891          n = this;
52892      return "function" == typeof e && (e = e()), a(e, function (e, t) {
52893        n.state[t] !== e && ((i = i || {})[t] = {
52894          from: n.state[t],
52895          to: e
52896        }), n.state[t] = e;
52897      }), i && xe(this) && this.trigger({
52898        changes: i,
52899        type: "statechanged"
52900      }), i;
52901    }
52902  };
52903
52904  function Le(e, t) {
52905    return m(e, Pe), e.state = m({}, e.state, t), "function" == typeof e.handleStateChanged && xe(e) && e.on("statechanged", e.handleStateChanged), e;
52906  }
52907
52908  function Oe(e) {
52909    return "string" != typeof e ? e : e.replace(/./, function (e) {
52910      return e.toLowerCase();
52911    });
52912  }
52913
52914  function De(e) {
52915    return "string" != typeof e ? e : e.replace(/./, function (e) {
52916      return e.toUpperCase();
52917    });
52918  }
52919
52920  function Ne() {
52921    for (var i = {}, e = arguments.length, t = new Array(e), n = 0; n < e; n++) {
52922      t[n] = arguments[n];
52923    }
52924
52925    return t.forEach(function (e) {
52926      e && a(e, function (e, t) {
52927        u(e) ? (u(i[t]) || (i[t] = {}), i[t] = Ne(i[t], e)) : i[t] = e;
52928      });
52929    }), i;
52930  }
52931
52932  var Re = function () {
52933    function l(e, t, i) {
52934      if (!e && this.play ? this.player_ = e = this : this.player_ = e, this.isDisposed_ = !1, this.parentComponent_ = null, this.options_ = Ne({}, this.options_), t = this.options_ = Ne(this.options_, t), this.id_ = t.id || t.el && t.el.id, !this.id_) {
52935        var n = e && e.id && e.id() || "no_player";
52936        this.id_ = n + "_component_" + ne();
52937      }
52938
52939      var r;
52940      this.name_ = t.name || null, t.el ? this.el_ = t.el : !1 !== t.createEl && (this.el_ = this.createEl()), !1 !== t.evented && Ie(this, {
52941        eventBusKey: this.el_ ? "el_" : null
52942      }), Le(this, this.constructor.defaultState), this.children_ = [], this.childIndex_ = {}, this.childNameIndex_ = {}, y.Set || (r = function () {
52943        function e() {
52944          this.set_ = {};
52945        }
52946
52947        var t = e.prototype;
52948        return t.has = function (e) {
52949          return e in this.set_;
52950        }, t["delete"] = function (e) {
52951          var t = this.has(e);
52952          return delete this.set_[e], t;
52953        }, t.add = function (e) {
52954          return this.set_[e] = 1, this;
52955        }, t.forEach = function (e, t) {
52956          for (var i in this.set_) {
52957            e.call(t, i, i, this);
52958          }
52959        }, e;
52960      }()), this.setTimeoutIds_ = y.Set ? new Set() : new r(), this.setIntervalIds_ = y.Set ? new Set() : new r(), this.rafIds_ = y.Set ? new Set() : new r(), (this.clearingTimersOnDispose_ = !1) !== t.initChildren && this.initChildren(), this.ready(i), !1 !== t.reportTouchActivity && this.enableTouchActivity();
52961    }
52962
52963    var e = l.prototype;
52964    return e.dispose = function () {
52965      if (!this.isDisposed_) {
52966        if (this.trigger({
52967          type: "dispose",
52968          bubbles: !1
52969        }), this.isDisposed_ = !0, this.children_) for (var e = this.children_.length - 1; 0 <= e; e--) {
52970          this.children_[e].dispose && this.children_[e].dispose();
52971        }
52972        this.children_ = null, this.childIndex_ = null, this.childNameIndex_ = null, this.parentComponent_ = null, this.el_ && (this.el_.parentNode && this.el_.parentNode.removeChild(this.el_), se.has(this.el_) && se["delete"](this.el_), this.el_ = null), this.player_ = null;
52973      }
52974    }, e.isDisposed = function () {
52975      return Boolean(this.isDisposed_);
52976    }, e.player = function () {
52977      return this.player_;
52978    }, e.options = function (e) {
52979      return e && (this.options_ = Ne(this.options_, e)), this.options_;
52980    }, e.el = function () {
52981      return this.el_;
52982    }, e.createEl = function (e, t, i) {
52983      return S(e, t, i);
52984    }, e.localize = function (e, r, t) {
52985      void 0 === t && (t = e);
52986      var i = this.player_.language && this.player_.language(),
52987          n = this.player_.languages && this.player_.languages(),
52988          s = n && n[i],
52989          a = i && i.split("-")[0],
52990          o = n && n[a],
52991          u = t;
52992      return s && s[e] ? u = s[e] : o && o[e] && (u = o[e]), r && (u = u.replace(/\{(\d+)\}/g, function (e, t) {
52993        var i = r[t - 1],
52994            n = i;
52995        return "undefined" == typeof i && (n = e), n;
52996      })), u;
52997    }, e.contentEl = function () {
52998      return this.contentEl_ || this.el_;
52999    }, e.id = function () {
53000      return this.id_;
53001    }, e.name = function () {
53002      return this.name_;
53003    }, e.children = function () {
53004      return this.children_;
53005    }, e.getChildById = function (e) {
53006      return this.childIndex_[e];
53007    }, e.getChild = function (e) {
53008      if (e) return this.childNameIndex_[e];
53009    }, e.getDescendant = function () {
53010      for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
53011        t[i] = arguments[i];
53012      }
53013
53014      t = t.reduce(function (e, t) {
53015        return e.concat(t);
53016      }, []);
53017
53018      for (var n = this, r = 0; r < t.length; r++) {
53019        if (!(n = n.getChild(t[r])) || !n.getChild) return;
53020      }
53021
53022      return n;
53023    }, e.addChild = function (e, t, i) {
53024      var n, r;
53025
53026      if (void 0 === t && (t = {}), void 0 === i && (i = this.children_.length), "string" == typeof e) {
53027        r = De(e);
53028        var s = t.componentClass || r;
53029        t.name = r;
53030        var a = l.getComponent(s);
53031        if (!a) throw new Error("Component " + s + " does not exist");
53032        if ("function" != typeof a) return null;
53033        n = new a(this.player_ || this, t);
53034      } else n = e;
53035
53036      if (n.parentComponent_ && n.parentComponent_.removeChild(n), this.children_.splice(i, 0, n), n.parentComponent_ = this, "function" == typeof n.id && (this.childIndex_[n.id()] = n), (r = r || n.name && De(n.name())) && (this.childNameIndex_[r] = n, this.childNameIndex_[Oe(r)] = n), "function" == typeof n.el && n.el()) {
53037        var o = null;
53038        this.children_[i + 1] && (this.children_[i + 1].el_ ? o = this.children_[i + 1].el_ : _(this.children_[i + 1]) && (o = this.children_[i + 1])), this.contentEl().insertBefore(n.el(), o);
53039      }
53040
53041      return n;
53042    }, e.removeChild = function (e) {
53043      if ("string" == typeof e && (e = this.getChild(e)), e && this.children_) {
53044        for (var t = !1, i = this.children_.length - 1; 0 <= i; i--) {
53045          if (this.children_[i] === e) {
53046            t = !0, this.children_.splice(i, 1);
53047            break;
53048          }
53049        }
53050
53051        if (t) {
53052          e.parentComponent_ = null, this.childIndex_[e.id()] = null, this.childNameIndex_[De(e.name())] = null, this.childNameIndex_[Oe(e.name())] = null;
53053          var n = e.el();
53054          n && n.parentNode === this.contentEl() && this.contentEl().removeChild(e.el());
53055        }
53056      }
53057    }, e.initChildren = function () {
53058      var r = this,
53059          n = this.options_.children;
53060
53061      if (n) {
53062        var e,
53063            s = this.options_,
53064            i = l.getComponent("Tech");
53065        (e = Array.isArray(n) ? n : Object.keys(n)).concat(Object.keys(this.options_).filter(function (t) {
53066          return !e.some(function (e) {
53067            return "string" == typeof e ? t === e : t === e.name;
53068          });
53069        })).map(function (e) {
53070          var t, i;
53071          return i = "string" == typeof e ? n[t = e] || r.options_[t] || {} : (t = e.name, e), {
53072            name: t,
53073            opts: i
53074          };
53075        }).filter(function (e) {
53076          var t = l.getComponent(e.opts.componentClass || De(e.name));
53077          return t && !i.isTech(t);
53078        }).forEach(function (e) {
53079          var t = e.name,
53080              i = e.opts;
53081
53082          if (void 0 !== s[t] && (i = s[t]), !1 !== i) {
53083            !0 === i && (i = {}), i.playerOptions = r.options_.playerOptions;
53084            var n = r.addChild(t, i);
53085            n && (r[t] = n);
53086          }
53087        });
53088      }
53089    }, e.buildCSSClass = function () {
53090      return "";
53091    }, e.ready = function (e, t) {
53092      if (void 0 === t && (t = !1), e) return this.isReady_ ? void (t ? e.call(this) : this.setTimeout(e, 1)) : (this.readyQueue_ = this.readyQueue_ || [], void this.readyQueue_.push(e));
53093    }, e.triggerReady = function () {
53094      this.isReady_ = !0, this.setTimeout(function () {
53095        var e = this.readyQueue_;
53096        this.readyQueue_ = [], e && 0 < e.length && e.forEach(function (e) {
53097          e.call(this);
53098        }, this), this.trigger("ready");
53099      }, 1);
53100    }, e.$ = function (e, t) {
53101      return G(e, t || this.contentEl());
53102    }, e.$$ = function (e, t) {
53103      return X(e, t || this.contentEl());
53104    }, e.hasClass = function (e) {
53105      return w(this.el_, e);
53106    }, e.addClass = function (e) {
53107      E(this.el_, e);
53108    }, e.removeClass = function (e) {
53109      x(this.el_, e);
53110    }, e.toggleClass = function (e, t) {
53111      A(this.el_, e, t);
53112    }, e.show = function () {
53113      this.removeClass("vjs-hidden");
53114    }, e.hide = function () {
53115      this.addClass("vjs-hidden");
53116    }, e.lockShowing = function () {
53117      this.addClass("vjs-lock-showing");
53118    }, e.unlockShowing = function () {
53119      this.removeClass("vjs-lock-showing");
53120    }, e.getAttribute = function (e) {
53121      return L(this.el_, e);
53122    }, e.setAttribute = function (e, t) {
53123      O(this.el_, e, t);
53124    }, e.removeAttribute = function (e) {
53125      D(this.el_, e);
53126    }, e.width = function (e, t) {
53127      return this.dimension("width", e, t);
53128    }, e.height = function (e, t) {
53129      return this.dimension("height", e, t);
53130    }, e.dimensions = function (e, t) {
53131      this.width(e, !0), this.height(t);
53132    }, e.dimension = function (e, t, i) {
53133      if (void 0 !== t) return null !== t && t == t || (t = 0), -1 !== ("" + t).indexOf("%") || -1 !== ("" + t).indexOf("px") ? this.el_.style[e] = t : this.el_.style[e] = "auto" === t ? "" : t + "px", void (i || this.trigger("componentresize"));
53134      if (!this.el_) return 0;
53135      var n = this.el_.style[e],
53136          r = n.indexOf("px");
53137      return -1 !== r ? parseInt(n.slice(0, r), 10) : parseInt(this.el_["offset" + De(e)], 10);
53138    }, e.currentDimension = function (e) {
53139      var t = 0;
53140      if ("width" !== e && "height" !== e) throw new Error("currentDimension only accepts width or height value");
53141
53142      if (t = n(this.el_, e), 0 === (t = parseFloat(t)) || isNaN(t)) {
53143        var i = "offset" + De(e);
53144        t = this.el_[i];
53145      }
53146
53147      return t;
53148    }, e.currentDimensions = function () {
53149      return {
53150        width: this.currentDimension("width"),
53151        height: this.currentDimension("height")
53152      };
53153    }, e.currentWidth = function () {
53154      return this.currentDimension("width");
53155    }, e.currentHeight = function () {
53156      return this.currentDimension("height");
53157    }, e.focus = function () {
53158      this.el_.focus();
53159    }, e.blur = function () {
53160      this.el_.blur();
53161    }, e.handleKeyDown = function (e) {
53162      this.player_ && (e.stopPropagation(), this.player_.handleKeyDown(e));
53163    }, e.handleKeyPress = function (e) {
53164      this.handleKeyDown(e);
53165    }, e.emitTapEvents = function () {
53166      var n,
53167          t = 0,
53168          r = null;
53169      this.on("touchstart", function (e) {
53170        1 === e.touches.length && (r = {
53171          pageX: e.touches[0].pageX,
53172          pageY: e.touches[0].pageY
53173        }, t = y.performance.now(), n = !0);
53174      }), this.on("touchmove", function (e) {
53175        if (1 < e.touches.length) n = !1;else if (r) {
53176          var t = e.touches[0].pageX - r.pageX,
53177              i = e.touches[0].pageY - r.pageY;
53178          10 < Math.sqrt(t * t + i * i) && (n = !1);
53179        }
53180      });
53181
53182      function e() {
53183        n = !1;
53184      }
53185
53186      this.on("touchleave", e), this.on("touchcancel", e), this.on("touchend", function (e) {
53187        !(r = null) === n && y.performance.now() - t < 200 && (e.preventDefault(), this.trigger("tap"));
53188      });
53189    }, e.enableTouchActivity = function () {
53190      if (this.player() && this.player().reportUserActivity) {
53191        var t,
53192            i = ge(this.player(), this.player().reportUserActivity);
53193        this.on("touchstart", function () {
53194          i(), this.clearInterval(t), t = this.setInterval(i, 250);
53195        });
53196
53197        var e = function e(_e2) {
53198          i(), this.clearInterval(t);
53199        };
53200
53201        this.on("touchmove", i), this.on("touchend", e), this.on("touchcancel", e);
53202      }
53203    }, e.setTimeout = function (e, t) {
53204      var i,
53205          n = this;
53206      return e = ge(this, e), this.clearTimersOnDispose_(), i = y.setTimeout(function () {
53207        n.setTimeoutIds_.has(i) && n.setTimeoutIds_["delete"](i), e();
53208      }, t), this.setTimeoutIds_.add(i), i;
53209    }, e.clearTimeout = function (e) {
53210      return this.setTimeoutIds_.has(e) && (this.setTimeoutIds_["delete"](e), y.clearTimeout(e)), e;
53211    }, e.setInterval = function (e, t) {
53212      e = ge(this, e), this.clearTimersOnDispose_();
53213      var i = y.setInterval(e, t);
53214      return this.setIntervalIds_.add(i), i;
53215    }, e.clearInterval = function (e) {
53216      return this.setIntervalIds_.has(e) && (this.setIntervalIds_["delete"](e), y.clearInterval(e)), e;
53217    }, e.requestAnimationFrame = function (e) {
53218      var t,
53219          i = this;
53220      return this.supportsRaf_ ? (this.clearTimersOnDispose_(), e = ge(this, e), t = y.requestAnimationFrame(function () {
53221        i.rafIds_.has(t) && i.rafIds_["delete"](t), e();
53222      }), this.rafIds_.add(t), t) : this.setTimeout(e, 1e3 / 60);
53223    }, e.cancelAnimationFrame = function (e) {
53224      return this.supportsRaf_ ? (this.rafIds_.has(e) && (this.rafIds_["delete"](e), y.cancelAnimationFrame(e)), e) : this.clearTimeout(e);
53225    }, e.clearTimersOnDispose_ = function () {
53226      var n = this;
53227      this.clearingTimersOnDispose_ || (this.clearingTimersOnDispose_ = !0, this.one("dispose", function () {
53228        [["rafIds_", "cancelAnimationFrame"], ["setTimeoutIds_", "clearTimeout"], ["setIntervalIds_", "clearInterval"]].forEach(function (e) {
53229          var t = e[0],
53230              i = e[1];
53231          n[t].forEach(n[i], n);
53232        }), n.clearingTimersOnDispose_ = !1;
53233      }));
53234    }, l.registerComponent = function (e, t) {
53235      if ("string" != typeof e || !e) throw new Error('Illegal component name, "' + e + '"; must be a non-empty string.');
53236      var i,
53237          n = l.getComponent("Tech"),
53238          r = n && n.isTech(t),
53239          s = l === t || l.prototype.isPrototypeOf(t.prototype);
53240      if (r || !s) throw i = r ? "techs must be registered using Tech.registerTech()" : "must be a Component subclass", new Error('Illegal component, "' + e + '"; ' + i + ".");
53241      e = De(e), l.components_ || (l.components_ = {});
53242      var a = l.getComponent("Player");
53243
53244      if ("Player" === e && a && a.players) {
53245        var o = a.players,
53246            u = Object.keys(o);
53247        if (o && 0 < u.length && u.map(function (e) {
53248          return o[e];
53249        }).every(Boolean)) throw new Error("Can not register Player component after player has been created.");
53250      }
53251
53252      return l.components_[e] = t, l.components_[Oe(e)] = t;
53253    }, l.getComponent = function (e) {
53254      if (e && l.components_) return l.components_[e];
53255    }, l;
53256  }();
53257
53258  Re.prototype.supportsRaf_ = "function" == typeof y.requestAnimationFrame && "function" == typeof y.cancelAnimationFrame, Re.registerComponent("Component", Re);
53259
53260  var Ue = function Ue(e) {
53261    if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
53262    return e;
53263  };
53264
53265  t(function (t) {
53266    function i(e) {
53267      return "function" == typeof Symbol && "symbol" == _typeof(Symbol.iterator) ? t.exports = i = function i(e) {
53268        return _typeof(e);
53269      } : t.exports = i = function i(e) {
53270        return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : _typeof(e);
53271      }, i(e);
53272    }
53273
53274    t.exports = i;
53275  }), t(function (t) {
53276    function i(e) {
53277      return t.exports = i = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
53278        return e.__proto__ || Object.getPrototypeOf(e);
53279      }, i(e);
53280    }
53281
53282    t.exports = i;
53283  });
53284
53285  var Me,
53286      Be,
53287      je,
53288      Fe,
53289      He = function He(e, t) {
53290    e.prototype = Object.create(t.prototype), (e.prototype.constructor = e).__proto__ = t;
53291  },
53292      Ve = y.navigator && y.navigator.userAgent || "",
53293      qe = /AppleWebKit\/([\d.]+)/i.exec(Ve),
53294      We = qe ? parseFloat(qe.pop()) : null,
53295      ze = /iPod/i.test(Ve),
53296      Ge = (Me = Ve.match(/OS (\d+)_/i)) && Me[1] ? Me[1] : null,
53297      Xe = /Android/i.test(Ve),
53298      Ke = function () {
53299    var e = Ve.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);
53300    if (!e) return null;
53301    var t = e[1] && parseFloat(e[1]),
53302        i = e[2] && parseFloat(e[2]);
53303    return t && i ? parseFloat(e[1] + "." + e[2]) : t || null;
53304  }(),
53305      Ye = Xe && Ke < 5 && We < 537,
53306      $e = /Firefox/i.test(Ve),
53307      Qe = /Edg/i.test(Ve),
53308      Je = !Qe && (/Chrome/i.test(Ve) || /CriOS/i.test(Ve)),
53309      Ze = (Be = Ve.match(/(Chrome|CriOS)\/(\d+)/)) && Be[2] ? parseFloat(Be[2]) : null,
53310      et = (je = /MSIE\s(\d+)\.\d/.exec(Ve), !(Fe = je && parseFloat(je[1])) && /Trident\/7.0/i.test(Ve) && /rv:11.0/.test(Ve) && (Fe = 11), Fe),
53311      tt = /Safari/i.test(Ve) && !Je && !Xe && !Qe,
53312      it = /Windows/i.test(Ve),
53313      nt = v() && ("ontouchstart" in y || y.navigator.maxTouchPoints || y.DocumentTouch && y.document instanceof y.DocumentTouch),
53314      rt = /iPad/i.test(Ve) || tt && nt && !/iPhone/i.test(Ve),
53315      st = /iPhone/i.test(Ve) && !rt,
53316      at = st || rt || ze,
53317      ot = (tt || at) && !Je,
53318      ut = Object.freeze({
53319    __proto__: null,
53320    IS_IPOD: ze,
53321    IOS_VERSION: Ge,
53322    IS_ANDROID: Xe,
53323    ANDROID_VERSION: Ke,
53324    IS_NATIVE_ANDROID: Ye,
53325    IS_FIREFOX: $e,
53326    IS_EDGE: Qe,
53327    IS_CHROME: Je,
53328    CHROME_VERSION: Ze,
53329    IE_VERSION: et,
53330    IS_SAFARI: tt,
53331    IS_WINDOWS: it,
53332    TOUCH_ENABLED: nt,
53333    IS_IPAD: rt,
53334    IS_IPHONE: st,
53335    IS_IOS: at,
53336    IS_ANY_SAFARI: ot
53337  });
53338
53339  function lt(e, t, i, n) {
53340    return function (e, t, i) {
53341      if ("number" != typeof t || t < 0 || i < t) throw new Error("Failed to execute '" + e + "' on 'TimeRanges': The index provided (" + t + ") is non-numeric or out of bounds (0-" + i + ").");
53342    }(e, n, i.length - 1), i[n][t];
53343  }
53344
53345  function ct(e) {
53346    return void 0 === e || 0 === e.length ? {
53347      length: 0,
53348      start: function start() {
53349        throw new Error("This TimeRanges object is empty");
53350      },
53351      end: function end() {
53352        throw new Error("This TimeRanges object is empty");
53353      }
53354    } : {
53355      length: e.length,
53356      start: lt.bind(null, "start", 0, e),
53357      end: lt.bind(null, "end", 1, e)
53358    };
53359  }
53360
53361  function ht(e, t) {
53362    return Array.isArray(e) ? ct(e) : void 0 === e || void 0 === t ? ct() : ct([[e, t]]);
53363  }
53364
53365  function dt(e, t) {
53366    var i,
53367        n,
53368        r = 0;
53369    if (!t) return 0;
53370    e && e.length || (e = ht(0, 0));
53371
53372    for (var s = 0; s < e.length; s++) {
53373      i = e.start(s), t < (n = e.end(s)) && (n = t), r += n - i;
53374    }
53375
53376    return r / t;
53377  }
53378
53379  for (var pt, ft = {
53380    prefixed: !0
53381  }, mt = [["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror", "fullscreen"], ["webkitRequestFullscreen", "webkitExitFullscreen", "webkitFullscreenElement", "webkitFullscreenEnabled", "webkitfullscreenchange", "webkitfullscreenerror", "-webkit-full-screen"], ["mozRequestFullScreen", "mozCancelFullScreen", "mozFullScreenElement", "mozFullScreenEnabled", "mozfullscreenchange", "mozfullscreenerror", "-moz-full-screen"], ["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError", "-ms-fullscreen"]], gt = mt[0], vt = 0; vt < mt.length; vt++) {
53382    if (mt[vt][1] in h) {
53383      pt = mt[vt];
53384      break;
53385    }
53386  }
53387
53388  if (pt) {
53389    for (var yt = 0; yt < pt.length; yt++) {
53390      ft[gt[yt]] = pt[yt];
53391    }
53392
53393    ft.prefixed = pt[0] !== gt[0];
53394  }
53395
53396  function _t(e) {
53397    if (e instanceof _t) return e;
53398    "number" == typeof e ? this.code = e : "string" == typeof e ? this.message = e : o(e) && ("number" == typeof e.code && (this.code = e.code), m(this, e)), this.message || (this.message = _t.defaultMessages[this.code] || "");
53399  }
53400
53401  _t.prototype.code = 0, _t.prototype.message = "", _t.prototype.status = null, _t.errorTypes = ["MEDIA_ERR_CUSTOM", "MEDIA_ERR_ABORTED", "MEDIA_ERR_NETWORK", "MEDIA_ERR_DECODE", "MEDIA_ERR_SRC_NOT_SUPPORTED", "MEDIA_ERR_ENCRYPTED"], _t.defaultMessages = {
53402    1: "You aborted the media playback",
53403    2: "A network error caused the media download to fail part-way.",
53404    3: "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.",
53405    4: "The media could not be loaded, either because the server or network failed or because the format is not supported.",
53406    5: "The media is encrypted and we do not have the keys to decrypt it."
53407  };
53408
53409  for (var bt = 0; bt < _t.errorTypes.length; bt++) {
53410    _t[_t.errorTypes[bt]] = bt, _t.prototype[_t.errorTypes[bt]] = bt;
53411  }
53412
53413  var Tt = function Tt(e, t) {
53414    var i,
53415        n = null;
53416
53417    try {
53418      i = JSON.parse(e, t);
53419    } catch (e) {
53420      n = e;
53421    }
53422
53423    return [n, i];
53424  };
53425
53426  function St(e) {
53427    return null != e && "function" == typeof e.then;
53428  }
53429
53430  function kt(e) {
53431    St(e) && e.then(null, function (e) {});
53432  }
53433
53434  function Ct(n) {
53435    return ["kind", "label", "language", "id", "inBandMetadataTrackDispatchType", "mode", "src"].reduce(function (e, t, i) {
53436      return n[t] && (e[t] = n[t]), e;
53437    }, {
53438      cues: n.cues && Array.prototype.map.call(n.cues, function (e) {
53439        return {
53440          startTime: e.startTime,
53441          endTime: e.endTime,
53442          text: e.text,
53443          id: e.id
53444        };
53445      })
53446    });
53447  }
53448
53449  var wt = function wt(e) {
53450    var t = e.$$("track"),
53451        i = Array.prototype.map.call(t, function (e) {
53452      return e.track;
53453    });
53454    return Array.prototype.map.call(t, function (e) {
53455      var t = Ct(e.track);
53456      return e.src && (t.src = e.src), t;
53457    }).concat(Array.prototype.filter.call(e.textTracks(), function (e) {
53458      return -1 === i.indexOf(e);
53459    }).map(Ct));
53460  },
53461      Et = function Et(e, i) {
53462    return e.forEach(function (e) {
53463      var t = i.addRemoteTextTrack(e).track;
53464      !e.src && e.cues && e.cues.forEach(function (e) {
53465        return t.addCue(e);
53466      });
53467    }), i.textTracks();
53468  },
53469      xt = t(function (e, t) {
53470    function i(e) {
53471      if (e && "object" == _typeof(e)) {
53472        var t = e.which || e.keyCode || e.charCode;
53473        t && (e = t);
53474      }
53475
53476      if ("number" == typeof e) return a[e];
53477      var i,
53478          n = String(e);
53479      return (i = r[n.toLowerCase()]) ? i : (i = s[n.toLowerCase()]) || (1 === n.length ? n.charCodeAt(0) : void 0);
53480    }
53481
53482    i.isEventKey = function (e, t) {
53483      if (e && "object" == _typeof(e)) {
53484        var i = e.which || e.keyCode || e.charCode;
53485        if (null == i) return !1;
53486
53487        if ("string" == typeof t) {
53488          var n;
53489          if (n = r[t.toLowerCase()]) return n === i;
53490          if (n = s[t.toLowerCase()]) return n === i;
53491        } else if ("number" == typeof t) return t === i;
53492
53493        return !1;
53494      }
53495    };
53496
53497    var r = (t = e.exports = i).code = t.codes = {
53498      backspace: 8,
53499      tab: 9,
53500      enter: 13,
53501      shift: 16,
53502      ctrl: 17,
53503      alt: 18,
53504      "pause/break": 19,
53505      "caps lock": 20,
53506      esc: 27,
53507      space: 32,
53508      "page up": 33,
53509      "page down": 34,
53510      end: 35,
53511      home: 36,
53512      left: 37,
53513      up: 38,
53514      right: 39,
53515      down: 40,
53516      insert: 45,
53517      "delete": 46,
53518      command: 91,
53519      "left command": 91,
53520      "right command": 93,
53521      "numpad *": 106,
53522      "numpad +": 107,
53523      "numpad -": 109,
53524      "numpad .": 110,
53525      "numpad /": 111,
53526      "num lock": 144,
53527      "scroll lock": 145,
53528      "my computer": 182,
53529      "my calculator": 183,
53530      ";": 186,
53531      "=": 187,
53532      ",": 188,
53533      "-": 189,
53534      ".": 190,
53535      "/": 191,
53536      "`": 192,
53537      "[": 219,
53538      "\\": 220,
53539      "]": 221,
53540      "'": 222
53541    },
53542        s = t.aliases = {
53543      windows: 91,
53544      "⇧": 16,
53545      "⌥": 18,
53546      "⌃": 17,
53547      "⌘": 91,
53548      ctl: 17,
53549      control: 17,
53550      option: 18,
53551      pause: 19,
53552      "break": 19,
53553      caps: 20,
53554      "return": 13,
53555      escape: 27,
53556      spc: 32,
53557      spacebar: 32,
53558      pgup: 33,
53559      pgdn: 34,
53560      ins: 45,
53561      del: 46,
53562      cmd: 91
53563    };
53564
53565    for (n = 97; n < 123; n++) {
53566      r[String.fromCharCode(n)] = n - 32;
53567    }
53568
53569    for (var n = 48; n < 58; n++) {
53570      r[n - 48] = n;
53571    }
53572
53573    for (n = 1; n < 13; n++) {
53574      r["f" + n] = n + 111;
53575    }
53576
53577    for (n = 0; n < 10; n++) {
53578      r["numpad " + n] = n + 96;
53579    }
53580
53581    var a = t.names = t.title = {};
53582
53583    for (n in r) {
53584      a[r[n]] = n;
53585    }
53586
53587    for (var o in s) {
53588      r[o] = s[o];
53589    }
53590  }),
53591      At = (xt.code, xt.codes, xt.aliases, xt.names, xt.title, "vjs-modal-dialog"),
53592      It = function (n) {
53593    function e(e, t) {
53594      var i;
53595      return (i = n.call(this, e, t) || this).opened_ = i.hasBeenOpened_ = i.hasBeenFilled_ = !1, i.closeable(!i.options_.uncloseable), i.content(i.options_.content), i.contentEl_ = S("div", {
53596        className: At + "-content"
53597      }, {
53598        role: "document"
53599      }), i.descEl_ = S("p", {
53600        className: At + "-description vjs-control-text",
53601        id: i.el().getAttribute("aria-describedby")
53602      }), k(i.descEl_, i.description()), i.el_.appendChild(i.descEl_), i.el_.appendChild(i.contentEl_), i;
53603    }
53604
53605    He(e, n);
53606    var t = e.prototype;
53607    return t.createEl = function () {
53608      return n.prototype.createEl.call(this, "div", {
53609        className: this.buildCSSClass(),
53610        tabIndex: -1
53611      }, {
53612        "aria-describedby": this.id() + "_description",
53613        "aria-hidden": "true",
53614        "aria-label": this.label(),
53615        role: "dialog"
53616      });
53617    }, t.dispose = function () {
53618      this.contentEl_ = null, this.descEl_ = null, this.previouslyActiveEl_ = null, n.prototype.dispose.call(this);
53619    }, t.buildCSSClass = function () {
53620      return At + " vjs-hidden " + n.prototype.buildCSSClass.call(this);
53621    }, t.label = function () {
53622      return this.localize(this.options_.label || "Modal Window");
53623    }, t.description = function () {
53624      var e = this.options_.description || this.localize("This is a modal window.");
53625      return this.closeable() && (e += " " + this.localize("This modal can be closed by pressing the Escape key or activating the close button.")), e;
53626    }, t.open = function () {
53627      if (!this.opened_) {
53628        var e = this.player();
53629        this.trigger("beforemodalopen"), this.opened_ = !0, !this.options_.fillAlways && (this.hasBeenOpened_ || this.hasBeenFilled_) || this.fill(), this.wasPlaying_ = !e.paused(), this.options_.pauseOnOpen && this.wasPlaying_ && e.pause(), this.on("keydown", this.handleKeyDown), this.hadControls_ = e.controls(), e.controls(!1), this.show(), this.conditionalFocus_(), this.el().setAttribute("aria-hidden", "false"), this.trigger("modalopen"), this.hasBeenOpened_ = !0;
53630      }
53631    }, t.opened = function (e) {
53632      return "boolean" == typeof e && this[e ? "open" : "close"](), this.opened_;
53633    }, t.close = function () {
53634      if (this.opened_) {
53635        var e = this.player();
53636        this.trigger("beforemodalclose"), this.opened_ = !1, this.wasPlaying_ && this.options_.pauseOnOpen && e.play(), this.off("keydown", this.handleKeyDown), this.hadControls_ && e.controls(!0), this.hide(), this.el().setAttribute("aria-hidden", "true"), this.trigger("modalclose"), this.conditionalBlur_(), this.options_.temporary && this.dispose();
53637      }
53638    }, t.closeable = function (e) {
53639      if ("boolean" == typeof e) {
53640        var t = this.closeable_ = !!e,
53641            i = this.getChild("closeButton");
53642
53643        if (t && !i) {
53644          var n = this.contentEl_;
53645          this.contentEl_ = this.el_, i = this.addChild("closeButton", {
53646            controlText: "Close Modal Dialog"
53647          }), this.contentEl_ = n, this.on(i, "close", this.close);
53648        }
53649
53650        !t && i && (this.off(i, "close", this.close), this.removeChild(i), i.dispose());
53651      }
53652
53653      return this.closeable_;
53654    }, t.fill = function () {
53655      this.fillWith(this.content());
53656    }, t.fillWith = function (e) {
53657      var t = this.contentEl(),
53658          i = t.parentNode,
53659          n = t.nextSibling;
53660      this.trigger("beforemodalfill"), this.hasBeenFilled_ = !0, i.removeChild(t), this.empty(), q(t, e), this.trigger("modalfill"), n ? i.insertBefore(t, n) : i.appendChild(t);
53661      var r = this.getChild("closeButton");
53662      r && i.appendChild(r.el_);
53663    }, t.empty = function () {
53664      this.trigger("beforemodalempty"), F(this.contentEl()), this.trigger("modalempty");
53665    }, t.content = function (e) {
53666      return "undefined" != typeof e && (this.content_ = e), this.content_;
53667    }, t.conditionalFocus_ = function () {
53668      var e = h.activeElement,
53669          t = this.player_.el_;
53670      this.previouslyActiveEl_ = null, !t.contains(e) && t !== e || (this.previouslyActiveEl_ = e, this.focus());
53671    }, t.conditionalBlur_ = function () {
53672      this.previouslyActiveEl_ && (this.previouslyActiveEl_.focus(), this.previouslyActiveEl_ = null);
53673    }, t.handleKeyDown = function (e) {
53674      if (e.stopPropagation(), xt.isEventKey(e, "Escape") && this.closeable()) return e.preventDefault(), void this.close();
53675
53676      if (xt.isEventKey(e, "Tab")) {
53677        for (var t, i = this.focusableEls_(), n = this.el_.querySelector(":focus"), r = 0; r < i.length; r++) {
53678          if (n === i[r]) {
53679            t = r;
53680            break;
53681          }
53682        }
53683
53684        h.activeElement === this.el_ && (t = 0), e.shiftKey && 0 === t ? (i[i.length - 1].focus(), e.preventDefault()) : e.shiftKey || t !== i.length - 1 || (i[0].focus(), e.preventDefault());
53685      }
53686    }, t.focusableEls_ = function () {
53687      var e = this.el_.querySelectorAll("*");
53688      return Array.prototype.filter.call(e, function (e) {
53689        return (e instanceof y.HTMLAnchorElement || e instanceof y.HTMLAreaElement) && e.hasAttribute("href") || (e instanceof y.HTMLInputElement || e instanceof y.HTMLSelectElement || e instanceof y.HTMLTextAreaElement || e instanceof y.HTMLButtonElement) && !e.hasAttribute("disabled") || e instanceof y.HTMLIFrameElement || e instanceof y.HTMLObjectElement || e instanceof y.HTMLEmbedElement || e.hasAttribute("tabindex") && -1 !== e.getAttribute("tabindex") || e.hasAttribute("contenteditable");
53690      });
53691    }, e;
53692  }(Re);
53693
53694  It.prototype.options_ = {
53695    pauseOnOpen: !0,
53696    temporary: !0
53697  }, Re.registerComponent("ModalDialog", It);
53698
53699  var Pt = function (n) {
53700    function e(e) {
53701      var t;
53702      void 0 === e && (e = []), (t = n.call(this) || this).tracks_ = [], Object.defineProperty(Ue(t), "length", {
53703        get: function get() {
53704          return this.tracks_.length;
53705        }
53706      });
53707
53708      for (var i = 0; i < e.length; i++) {
53709        t.addTrack(e[i]);
53710      }
53711
53712      return t;
53713    }
53714
53715    He(e, n);
53716    var t = e.prototype;
53717    return t.addTrack = function (e) {
53718      var t = this.tracks_.length;
53719      "" + t in this || Object.defineProperty(this, t, {
53720        get: function get() {
53721          return this.tracks_[t];
53722        }
53723      }), -1 === this.tracks_.indexOf(e) && (this.tracks_.push(e), this.trigger({
53724        track: e,
53725        type: "addtrack",
53726        target: this
53727      }));
53728    }, t.removeTrack = function (e) {
53729      for (var t, i = 0, n = this.length; i < n; i++) {
53730        if (this[i] === e) {
53731          (t = this[i]).off && t.off(), this.tracks_.splice(i, 1);
53732          break;
53733        }
53734      }
53735
53736      t && this.trigger({
53737        track: t,
53738        type: "removetrack",
53739        target: this
53740      });
53741    }, t.getTrackById = function (e) {
53742      for (var t = null, i = 0, n = this.length; i < n; i++) {
53743        var r = this[i];
53744
53745        if (r.id === e) {
53746          t = r;
53747          break;
53748        }
53749      }
53750
53751      return t;
53752    }, e;
53753  }(ye);
53754
53755  for (var Lt in Pt.prototype.allowedEvents_ = {
53756    change: "change",
53757    addtrack: "addtrack",
53758    removetrack: "removetrack"
53759  }, Pt.prototype.allowedEvents_) {
53760    Pt.prototype["on" + Lt] = null;
53761  }
53762
53763  function Ot(e, t) {
53764    for (var i = 0; i < e.length; i++) {
53765      Object.keys(e[i]).length && t.id !== e[i].id && (e[i].enabled = !1);
53766    }
53767  }
53768
53769  function Dt(e, t) {
53770    for (var i = 0; i < e.length; i++) {
53771      Object.keys(e[i]).length && t.id !== e[i].id && (e[i].selected = !1);
53772    }
53773  }
53774
53775  function Nt(e) {
53776    var t = ["protocol", "hostname", "port", "pathname", "search", "hash", "host"],
53777        i = h.createElement("a");
53778    i.href = e;
53779    var n,
53780        r = "" === i.host && "file:" !== i.protocol;
53781    r && ((n = h.createElement("div")).innerHTML = '<a href="' + e + '"></a>', i = n.firstChild, n.setAttribute("style", "display:none; position:absolute;"), h.body.appendChild(n));
53782
53783    for (var s = {}, a = 0; a < t.length; a++) {
53784      s[t[a]] = i[t[a]];
53785    }
53786
53787    return "http:" === s.protocol && (s.host = s.host.replace(/:80$/, "")), "https:" === s.protocol && (s.host = s.host.replace(/:443$/, "")), s.protocol || (s.protocol = y.location.protocol), r && h.body.removeChild(n), s;
53788  }
53789
53790  function Rt(e) {
53791    if (!e.match(/^https?:\/\//)) {
53792      var t = h.createElement("div");
53793      t.innerHTML = '<a href="' + e + '">x</a>', e = t.firstChild.href;
53794    }
53795
53796    return e;
53797  }
53798
53799  function Ut(e) {
53800    if ("string" == typeof e) {
53801      var t = /^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/.exec(e);
53802      if (t) return t.pop().toLowerCase();
53803    }
53804
53805    return "";
53806  }
53807
53808  function Mt(e, t) {
53809    void 0 === t && (t = y.location);
53810    var i = Nt(e);
53811    return (":" === i.protocol ? t.protocol : i.protocol) + i.host !== t.protocol + t.host;
53812  }
53813
53814  var Bt = function (n) {
53815    function e(e) {
53816      var t;
53817      void 0 === e && (e = []);
53818
53819      for (var i = e.length - 1; 0 <= i; i--) {
53820        if (e[i].enabled) {
53821          Ot(e, e[i]);
53822          break;
53823        }
53824      }
53825
53826      return (t = n.call(this, e) || this).changing_ = !1, t;
53827    }
53828
53829    He(e, n);
53830    var t = e.prototype;
53831    return t.addTrack = function (e) {
53832      var t = this;
53833      e.enabled && Ot(this, e), n.prototype.addTrack.call(this, e), e.addEventListener && (e.enabledChange_ = function () {
53834        t.changing_ || (t.changing_ = !0, Ot(t, e), t.changing_ = !1, t.trigger("change"));
53835      }, e.addEventListener("enabledchange", e.enabledChange_));
53836    }, t.removeTrack = function (e) {
53837      n.prototype.removeTrack.call(this, e), e.removeEventListener && e.enabledChange_ && (e.removeEventListener("enabledchange", e.enabledChange_), e.enabledChange_ = null);
53838    }, e;
53839  }(Pt),
53840      jt = function (n) {
53841    function e(e) {
53842      var t;
53843      void 0 === e && (e = []);
53844
53845      for (var i = e.length - 1; 0 <= i; i--) {
53846        if (e[i].selected) {
53847          Dt(e, e[i]);
53848          break;
53849        }
53850      }
53851
53852      return (t = n.call(this, e) || this).changing_ = !1, Object.defineProperty(Ue(t), "selectedIndex", {
53853        get: function get() {
53854          for (var e = 0; e < this.length; e++) {
53855            if (this[e].selected) return e;
53856          }
53857
53858          return -1;
53859        },
53860        set: function set() {}
53861      }), t;
53862    }
53863
53864    He(e, n);
53865    var t = e.prototype;
53866    return t.addTrack = function (e) {
53867      var t = this;
53868      e.selected && Dt(this, e), n.prototype.addTrack.call(this, e), e.addEventListener && (e.selectedChange_ = function () {
53869        t.changing_ || (t.changing_ = !0, Dt(t, e), t.changing_ = !1, t.trigger("change"));
53870      }, e.addEventListener("selectedchange", e.selectedChange_));
53871    }, t.removeTrack = function (e) {
53872      n.prototype.removeTrack.call(this, e), e.removeEventListener && e.selectedChange_ && (e.removeEventListener("selectedchange", e.selectedChange_), e.selectedChange_ = null);
53873    }, e;
53874  }(Pt),
53875      Ft = function (i) {
53876    function e() {
53877      return i.apply(this, arguments) || this;
53878    }
53879
53880    He(e, i);
53881    var t = e.prototype;
53882    return t.addTrack = function (e) {
53883      var t = this;
53884      i.prototype.addTrack.call(this, e), this.queueChange_ || (this.queueChange_ = function () {
53885        return t.queueTrigger("change");
53886      }), this.triggerSelectedlanguagechange || (this.triggerSelectedlanguagechange_ = function () {
53887        return t.trigger("selectedlanguagechange");
53888      }), e.addEventListener("modechange", this.queueChange_);
53889      -1 === ["metadata", "chapters"].indexOf(e.kind) && e.addEventListener("modechange", this.triggerSelectedlanguagechange_);
53890    }, t.removeTrack = function (e) {
53891      i.prototype.removeTrack.call(this, e), e.removeEventListener && (this.queueChange_ && e.removeEventListener("modechange", this.queueChange_), this.selectedlanguagechange_ && e.removeEventListener("modechange", this.triggerSelectedlanguagechange_));
53892    }, e;
53893  }(Pt),
53894      Ht = function () {
53895    function e(e) {
53896      void 0 === e && (e = []), this.trackElements_ = [], Object.defineProperty(this, "length", {
53897        get: function get() {
53898          return this.trackElements_.length;
53899        }
53900      });
53901
53902      for (var t = 0, i = e.length; t < i; t++) {
53903        this.addTrackElement_(e[t]);
53904      }
53905    }
53906
53907    var t = e.prototype;
53908    return t.addTrackElement_ = function (e) {
53909      var t = this.trackElements_.length;
53910      "" + t in this || Object.defineProperty(this, t, {
53911        get: function get() {
53912          return this.trackElements_[t];
53913        }
53914      }), -1 === this.trackElements_.indexOf(e) && this.trackElements_.push(e);
53915    }, t.getTrackElementByTrack_ = function (e) {
53916      for (var t, i = 0, n = this.trackElements_.length; i < n; i++) {
53917        if (e === this.trackElements_[i].track) {
53918          t = this.trackElements_[i];
53919          break;
53920        }
53921      }
53922
53923      return t;
53924    }, t.removeTrackElement_ = function (e) {
53925      for (var t = 0, i = this.trackElements_.length; t < i; t++) {
53926        if (e === this.trackElements_[t]) {
53927          this.trackElements_[t].track && "function" == typeof this.trackElements_[t].track.off && this.trackElements_[t].track.off(), "function" == typeof this.trackElements_[t].off && this.trackElements_[t].off(), this.trackElements_.splice(t, 1);
53928          break;
53929        }
53930      }
53931    }, e;
53932  }(),
53933      Vt = function () {
53934    function t(e) {
53935      t.prototype.setCues_.call(this, e), Object.defineProperty(this, "length", {
53936        get: function get() {
53937          return this.length_;
53938        }
53939      });
53940    }
53941
53942    var e = t.prototype;
53943    return e.setCues_ = function (e) {
53944      var t = this.length || 0,
53945          i = 0,
53946          n = e.length;
53947      this.cues_ = e, this.length_ = e.length;
53948
53949      function r(e) {
53950        "" + e in this || Object.defineProperty(this, "" + e, {
53951          get: function get() {
53952            return this.cues_[e];
53953          }
53954        });
53955      }
53956
53957      if (t < n) for (i = t; i < n; i++) {
53958        r.call(this, i);
53959      }
53960    }, e.getCueById = function (e) {
53961      for (var t = null, i = 0, n = this.length; i < n; i++) {
53962        var r = this[i];
53963
53964        if (r.id === e) {
53965          t = r;
53966          break;
53967        }
53968      }
53969
53970      return t;
53971    }, t;
53972  }(),
53973      qt = {
53974    alternative: "alternative",
53975    captions: "captions",
53976    main: "main",
53977    sign: "sign",
53978    subtitles: "subtitles",
53979    commentary: "commentary"
53980  },
53981      Wt = {
53982    alternative: "alternative",
53983    descriptions: "descriptions",
53984    main: "main",
53985    "main-desc": "main-desc",
53986    translation: "translation",
53987    commentary: "commentary"
53988  },
53989      zt = {
53990    subtitles: "subtitles",
53991    captions: "captions",
53992    descriptions: "descriptions",
53993    chapters: "chapters",
53994    metadata: "metadata"
53995  },
53996      Gt = {
53997    disabled: "disabled",
53998    hidden: "hidden",
53999    showing: "showing"
54000  },
54001      Xt = function (s) {
54002    function e(e) {
54003      var t;
54004      void 0 === e && (e = {}), t = s.call(this) || this;
54005
54006      function i(e) {
54007        Object.defineProperty(Ue(t), e, {
54008          get: function get() {
54009            return n[e];
54010          },
54011          set: function set() {}
54012        });
54013      }
54014
54015      var n = {
54016        id: e.id || "vjs_track_" + ne(),
54017        kind: e.kind || "",
54018        label: e.label || "",
54019        language: e.language || ""
54020      };
54021
54022      for (var r in n) {
54023        i(r);
54024      }
54025
54026      return t;
54027    }
54028
54029    return He(e, s), e;
54030  }(ye),
54031      Kt = Object.freeze({
54032    __proto__: null,
54033    parseUrl: Nt,
54034    getAbsoluteURL: Rt,
54035    getFileExtension: Ut,
54036    isCrossOrigin: Mt
54037  }),
54038      Yt = function Yt(e) {
54039    var t = $t.call(e);
54040    return "[object Function]" === t || "function" == typeof e && "[object RegExp]" !== t || "undefined" != typeof window && (e === window.setTimeout || e === window.alert || e === window.confirm || e === window.prompt);
54041  }
54042  /**
54043     * @license
54044     * slighly modified parse-headers 2.0.2 <https://github.com/kesla/parse-headers/>
54045     * Copyright (c) 2014 David Björklund
54046     * Available under the MIT license
54047     * <https://github.com/kesla/parse-headers/blob/master/LICENCE>
54048     */
54049  ,
54050      $t = Object.prototype.toString;
54051
54052  var Qt = function Qt(e) {
54053    var r = {};
54054    return e && e.trim().split("\n").forEach(function (e) {
54055      var t = e.indexOf(":"),
54056          i = e.slice(0, t).trim().toLowerCase(),
54057          n = e.slice(t + 1).trim();
54058      "undefined" == typeof r[i] ? r[i] = n : Array.isArray(r[i]) ? r[i].push(n) : r[i] = [r[i], n];
54059    }), r;
54060  },
54061      Jt = ti,
54062      Zt = ti;
54063
54064  function ei(e, t, i) {
54065    var n = e;
54066    return Yt(t) ? (i = t, "string" == typeof e && (n = {
54067      uri: e
54068    })) : n = r({}, t, {
54069      uri: e
54070    }), n.callback = i, n;
54071  }
54072
54073  function ti(e, t, i) {
54074    return ii(t = ei(e, t, i));
54075  }
54076
54077  function ii(n) {
54078    if ("undefined" == typeof n.callback) throw new Error("callback argument missing");
54079
54080    var r = !1,
54081        s = function s(e, t, i) {
54082      r || (r = !0, n.callback(e, t, i));
54083    };
54084
54085    function t(e) {
54086      return clearTimeout(o), e instanceof Error || (e = new Error("" + (e || "Unknown XMLHttpRequest Error"))), e.statusCode = 0, s(e, m);
54087    }
54088
54089    function e() {
54090      if (!a) {
54091        var e;
54092        clearTimeout(o), e = n.useXDR && void 0 === u.status ? 200 : 1223 === u.status ? 204 : u.status;
54093        var t = m,
54094            i = null;
54095        return 0 !== e ? (t = {
54096          body: function () {
54097            var e = void 0;
54098            if (e = u.response ? u.response : u.responseText || function (e) {
54099              try {
54100                if ("document" === e.responseType) return e.responseXML;
54101                var t = e.responseXML && "parsererror" === e.responseXML.documentElement.nodeName;
54102                if ("" === e.responseType && !t) return e.responseXML;
54103              } catch (e) {}
54104
54105              return null;
54106            }(u), f) try {
54107              e = JSON.parse(e);
54108            } catch (e) {}
54109            return e;
54110          }(),
54111          statusCode: e,
54112          method: c,
54113          headers: {},
54114          url: l,
54115          rawRequest: u
54116        }, u.getAllResponseHeaders && (t.headers = Qt(u.getAllResponseHeaders()))) : i = new Error("Internal XMLHttpRequest Error"), s(i, t, t.body);
54117      }
54118    }
54119
54120    var i,
54121        a,
54122        o,
54123        u = n.xhr || null,
54124        l = (u = u || (n.cors || n.useXDR ? new ti.XDomainRequest() : new ti.XMLHttpRequest())).url = n.uri || n.url,
54125        c = u.method = n.method || "GET",
54126        h = n.body || n.data,
54127        d = u.headers = n.headers || {},
54128        p = !!n.sync,
54129        f = !1,
54130        m = {
54131      body: void 0,
54132      headers: {},
54133      statusCode: 0,
54134      method: c,
54135      url: l,
54136      rawRequest: u
54137    };
54138    if ("json" in n && !1 !== n.json && (f = !0, d.accept || d.Accept || (d.Accept = "application/json"), "GET" !== c && "HEAD" !== c && (d["content-type"] || d["Content-Type"] || (d["Content-Type"] = "application/json"), h = JSON.stringify(!0 === n.json ? h : n.json))), u.onreadystatechange = function () {
54139      4 === u.readyState && setTimeout(e, 0);
54140    }, u.onload = e, u.onerror = t, u.onprogress = function () {}, u.onabort = function () {
54141      a = !0;
54142    }, u.ontimeout = t, u.open(c, l, !p, n.username, n.password), p || (u.withCredentials = !!n.withCredentials), !p && 0 < n.timeout && (o = setTimeout(function () {
54143      if (!a) {
54144        a = !0, u.abort("timeout");
54145        var e = new Error("XMLHttpRequest timeout");
54146        e.code = "ETIMEDOUT", t(e);
54147      }
54148    }, n.timeout)), u.setRequestHeader) for (i in d) {
54149      d.hasOwnProperty(i) && u.setRequestHeader(i, d[i]);
54150    } else if (n.headers && !function (e) {
54151      for (var t in e) {
54152        if (e.hasOwnProperty(t)) return !1;
54153      }
54154
54155      return !0;
54156    }(n.headers)) throw new Error("Headers cannot be set on an XDomainRequest object");
54157    return "responseType" in n && (u.responseType = n.responseType), "beforeSend" in n && "function" == typeof n.beforeSend && n.beforeSend(u), u.send(h || null), u;
54158  }
54159
54160  ti.XMLHttpRequest = y.XMLHttpRequest || function () {}, ti.XDomainRequest = "withCredentials" in new ti.XMLHttpRequest() ? ti.XMLHttpRequest : y.XDomainRequest, function (e, t) {
54161    for (var i = 0; i < e.length; i++) {
54162      t(e[i]);
54163    }
54164  }(["get", "put", "post", "patch", "head", "delete"], function (n) {
54165    ti["delete" === n ? "del" : n] = function (e, t, i) {
54166      return (t = ei(e, t, i)).method = n.toUpperCase(), ii(t);
54167    };
54168  }), Jt["default"] = Zt;
54169
54170  function ni(e, t) {
54171    var i = new y.WebVTT.Parser(y, y.vttjs, y.WebVTT.StringDecoder()),
54172        n = [];
54173    i.oncue = function (e) {
54174      t.addCue(e);
54175    }, i.onparsingerror = function (e) {
54176      n.push(e);
54177    }, i.onflush = function () {
54178      t.trigger({
54179        type: "loadeddata",
54180        target: t
54181      });
54182    }, i.parse(e), 0 < n.length && (y.console && y.console.groupCollapsed && y.console.groupCollapsed("Text Track parsing errors for " + t.src), n.forEach(function (e) {
54183      return p.error(e);
54184    }), y.console && y.console.groupEnd && y.console.groupEnd()), i.flush();
54185  }
54186
54187  function ri(e, n) {
54188    var t = {
54189      uri: e
54190    },
54191        i = Mt(e);
54192    i && (t.cors = i), Jt(t, ge(this, function (e, t, i) {
54193      if (e) return p.error(e, t);
54194      n.loaded_ = !0, "function" != typeof y.WebVTT ? n.tech_ && n.tech_.any(["vttjsloaded", "vttjserror"], function (e) {
54195        if ("vttjserror" !== e.type) return ni(i, n);
54196        p.error("vttjs failed to load, stopping trying to process " + n.src);
54197      }) : ni(i, n);
54198    }));
54199  }
54200
54201  var si = function (l) {
54202    function e(e) {
54203      var t;
54204      if (void 0 === e && (e = {}), !e.tech) throw new Error("A tech was not provided.");
54205      var i = Ne(e, {
54206        kind: zt[e.kind] || "subtitles",
54207        language: e.language || e.srclang || ""
54208      }),
54209          n = Gt[i.mode] || "disabled",
54210          r = i["default"];
54211      "metadata" !== i.kind && "chapters" !== i.kind || (n = "hidden"), (t = l.call(this, i) || this).tech_ = i.tech, t.cues_ = [], t.activeCues_ = [], t.preload_ = !1 !== t.tech_.preloadTextTracks;
54212      var s = new Vt(t.cues_),
54213          a = new Vt(t.activeCues_),
54214          o = !1,
54215          u = ge(Ue(t), function () {
54216        this.activeCues = this.activeCues, o && (this.trigger("cuechange"), o = !1);
54217      });
54218      return "disabled" !== n && t.tech_.ready(function () {
54219        t.tech_.on("timeupdate", u);
54220      }, !0), Object.defineProperties(Ue(t), {
54221        "default": {
54222          get: function get() {
54223            return r;
54224          },
54225          set: function set() {}
54226        },
54227        mode: {
54228          get: function get() {
54229            return n;
54230          },
54231          set: function set(e) {
54232            var t = this;
54233            Gt[e] && (n = e, this.preload_ || "disabled" === n || 0 !== this.cues.length || ri(this.src, this), "disabled" !== n ? this.tech_.ready(function () {
54234              t.tech_.on("timeupdate", u);
54235            }, !0) : this.tech_.off("timeupdate", u), this.trigger("modechange"));
54236          }
54237        },
54238        cues: {
54239          get: function get() {
54240            return this.loaded_ ? s : null;
54241          },
54242          set: function set() {}
54243        },
54244        activeCues: {
54245          get: function get() {
54246            if (!this.loaded_) return null;
54247            if (0 === this.cues.length) return a;
54248
54249            for (var e = this.tech_.currentTime(), t = [], i = 0, n = this.cues.length; i < n; i++) {
54250              var r = this.cues[i];
54251              r.startTime <= e && r.endTime >= e ? t.push(r) : r.startTime === r.endTime && r.startTime <= e && r.startTime + .5 >= e && t.push(r);
54252            }
54253
54254            if (o = !1, t.length !== this.activeCues_.length) o = !0;else for (var s = 0; s < t.length; s++) {
54255              -1 === this.activeCues_.indexOf(t[s]) && (o = !0);
54256            }
54257            return this.activeCues_ = t, a.setCues_(this.activeCues_), a;
54258          },
54259          set: function set() {}
54260        }
54261      }), i.src ? (t.src = i.src, t.preload_ || (t.loaded_ = !0), (t.preload_ || r || "subtitles" !== i.kind && "captions" !== i.kind) && ri(t.src, Ue(t))) : t.loaded_ = !0, t;
54262    }
54263
54264    He(e, l);
54265    var t = e.prototype;
54266    return t.addCue = function (e) {
54267      var t = e;
54268
54269      if (y.vttjs && !(e instanceof y.vttjs.VTTCue)) {
54270        for (var i in t = new y.vttjs.VTTCue(e.startTime, e.endTime, e.text), e) {
54271          i in t || (t[i] = e[i]);
54272        }
54273
54274        t.id = e.id, t.originalCue_ = e;
54275      }
54276
54277      for (var n = this.tech_.textTracks(), r = 0; r < n.length; r++) {
54278        n[r] !== this && n[r].removeCue(t);
54279      }
54280
54281      this.cues_.push(t), this.cues.setCues_(this.cues_);
54282    }, t.removeCue = function (e) {
54283      for (var t = this.cues_.length; t--;) {
54284        var i = this.cues_[t];
54285
54286        if (i === e || i.originalCue_ && i.originalCue_ === e) {
54287          this.cues_.splice(t, 1), this.cues.setCues_(this.cues_);
54288          break;
54289        }
54290      }
54291    }, e;
54292  }(Xt);
54293
54294  si.prototype.allowedEvents_ = {
54295    cuechange: "cuechange"
54296  };
54297
54298  var ai = function (r) {
54299    function e(e) {
54300      var t;
54301      void 0 === e && (e = {});
54302      var i = Ne(e, {
54303        kind: Wt[e.kind] || ""
54304      });
54305      t = r.call(this, i) || this;
54306      var n = !1;
54307      return Object.defineProperty(Ue(t), "enabled", {
54308        get: function get() {
54309          return n;
54310        },
54311        set: function set(e) {
54312          "boolean" == typeof e && e !== n && (n = e, this.trigger("enabledchange"));
54313        }
54314      }), i.enabled && (t.enabled = i.enabled), t.loaded_ = !0, t;
54315    }
54316
54317    return He(e, r), e;
54318  }(Xt),
54319      oi = function (r) {
54320    function e(e) {
54321      var t;
54322      void 0 === e && (e = {});
54323      var i = Ne(e, {
54324        kind: qt[e.kind] || ""
54325      });
54326      t = r.call(this, i) || this;
54327      var n = !1;
54328      return Object.defineProperty(Ue(t), "selected", {
54329        get: function get() {
54330          return n;
54331        },
54332        set: function set(e) {
54333          "boolean" == typeof e && e !== n && (n = e, this.trigger("selectedchange"));
54334        }
54335      }), i.selected && (t.selected = i.selected), t;
54336    }
54337
54338    return He(e, r), e;
54339  }(Xt),
54340      ui = function (r) {
54341    function e(e) {
54342      var t, i;
54343      void 0 === e && (e = {}), t = r.call(this) || this;
54344      var n = new si(e);
54345      return t.kind = n.kind, t.src = n.src, t.srclang = n.language, t.label = n.label, t["default"] = n["default"], Object.defineProperties(Ue(t), {
54346        readyState: {
54347          get: function get() {
54348            return i;
54349          }
54350        },
54351        track: {
54352          get: function get() {
54353            return n;
54354          }
54355        }
54356      }), i = 0, n.addEventListener("loadeddata", function () {
54357        i = 2, t.trigger({
54358          type: "load",
54359          target: Ue(t)
54360        });
54361      }), t;
54362    }
54363
54364    return He(e, r), e;
54365  }(ye);
54366
54367  ui.prototype.allowedEvents_ = {
54368    load: "load"
54369  }, ui.NONE = 0, ui.LOADING = 1, ui.LOADED = 2, ui.ERROR = 3;
54370  var li = {
54371    audio: {
54372      ListClass: Bt,
54373      TrackClass: ai,
54374      capitalName: "Audio"
54375    },
54376    video: {
54377      ListClass: jt,
54378      TrackClass: oi,
54379      capitalName: "Video"
54380    },
54381    text: {
54382      ListClass: Ft,
54383      TrackClass: si,
54384      capitalName: "Text"
54385    }
54386  };
54387  Object.keys(li).forEach(function (e) {
54388    li[e].getterName = e + "Tracks", li[e].privateName = e + "Tracks_";
54389  });
54390  var ci = {
54391    remoteText: {
54392      ListClass: Ft,
54393      TrackClass: si,
54394      capitalName: "RemoteText",
54395      getterName: "remoteTextTracks",
54396      privateName: "remoteTextTracks_"
54397    },
54398    remoteTextEl: {
54399      ListClass: Ht,
54400      TrackClass: ui,
54401      capitalName: "RemoteTextTrackEls",
54402      getterName: "remoteTextTrackEls",
54403      privateName: "remoteTextTrackEls_"
54404    }
54405  },
54406      hi = r({}, li, ci);
54407  ci.names = Object.keys(ci), li.names = Object.keys(li), hi.names = [].concat(ci.names).concat(li.names);
54408
54409  var di = Object.create || function (e) {
54410    if (1 !== arguments.length) throw new Error("Object.create shim only accepts one parameter.");
54411    return pi.prototype = e, new pi();
54412  };
54413
54414  function pi() {}
54415
54416  function fi(e, t) {
54417    this.name = "ParsingError", this.code = e.code, this.message = t || e.message;
54418  }
54419
54420  function mi(e) {
54421    function t(e, t, i, n) {
54422      return 3600 * (0 | e) + 60 * (0 | t) + (0 | i) + (0 | n) / 1e3;
54423    }
54424
54425    var i = e.match(/^(\d+):(\d{1,2})(:\d{1,2})?\.(\d{3})/);
54426    return i ? i[3] ? t(i[1], i[2], i[3].replace(":", ""), i[4]) : 59 < i[1] ? t(i[1], i[2], 0, i[4]) : t(0, i[1], i[2], i[4]) : null;
54427  }
54428
54429  function gi() {
54430    this.values = di(null);
54431  }
54432
54433  function vi(e, t, i, n) {
54434    var r = n ? e.split(n) : [e];
54435
54436    for (var s in r) {
54437      if ("string" == typeof r[s]) {
54438        var a = r[s].split(i);
54439        if (2 === a.length) t(a[0], a[1]);
54440      }
54441    }
54442  }
54443
54444  function yi(t, e, a) {
54445    var i = t;
54446
54447    function n() {
54448      var e = mi(t);
54449      if (null === e) throw new fi(fi.Errors.BadTimeStamp, "Malformed timestamp: " + i);
54450      return t = t.replace(/^[^\sa-zA-Z-]+/, ""), e;
54451    }
54452
54453    function r() {
54454      t = t.replace(/^\s+/, "");
54455    }
54456
54457    if (r(), e.startTime = n(), r(), "--\x3e" !== t.substr(0, 3)) throw new fi(fi.Errors.BadTimeStamp, "Malformed time stamp (time stamps must be separated by '--\x3e'): " + i);
54458    t = t.substr(3), r(), e.endTime = n(), r(), function (e, t) {
54459      var s = new gi();
54460      vi(e, function (e, t) {
54461        switch (e) {
54462          case "region":
54463            for (var i = a.length - 1; 0 <= i; i--) {
54464              if (a[i].id === t) {
54465                s.set(e, a[i].region);
54466                break;
54467              }
54468            }
54469
54470            break;
54471
54472          case "vertical":
54473            s.alt(e, t, ["rl", "lr"]);
54474            break;
54475
54476          case "line":
54477            var n = t.split(","),
54478                r = n[0];
54479            s.integer(e, r), s.percent(e, r) && s.set("snapToLines", !1), s.alt(e, r, ["auto"]), 2 === n.length && s.alt("lineAlign", n[1], ["start", "center", "end"]);
54480            break;
54481
54482          case "position":
54483            n = t.split(","), s.percent(e, n[0]), 2 === n.length && s.alt("positionAlign", n[1], ["start", "center", "end"]);
54484            break;
54485
54486          case "size":
54487            s.percent(e, t);
54488            break;
54489
54490          case "align":
54491            s.alt(e, t, ["start", "center", "end", "left", "right"]);
54492        }
54493      }, /:/, /\s/), t.region = s.get("region", null), t.vertical = s.get("vertical", "");
54494
54495      try {
54496        t.line = s.get("line", "auto");
54497      } catch (e) {}
54498
54499      t.lineAlign = s.get("lineAlign", "start"), t.snapToLines = s.get("snapToLines", !0), t.size = s.get("size", 100);
54500
54501      try {
54502        t.align = s.get("align", "center");
54503      } catch (e) {
54504        t.align = s.get("align", "middle");
54505      }
54506
54507      try {
54508        t.position = s.get("position", "auto");
54509      } catch (e) {
54510        t.position = s.get("position", {
54511          start: 0,
54512          left: 0,
54513          center: 50,
54514          middle: 50,
54515          end: 100,
54516          right: 100
54517        }, t.align);
54518      }
54519
54520      t.positionAlign = s.get("positionAlign", {
54521        start: "start",
54522        left: "start",
54523        center: "center",
54524        middle: "center",
54525        end: "end",
54526        right: "end"
54527      }, t.align);
54528    }(t, e);
54529  }
54530
54531  ((fi.prototype = di(Error.prototype)).constructor = fi).Errors = {
54532    BadSignature: {
54533      code: 0,
54534      message: "Malformed WebVTT signature."
54535    },
54536    BadTimeStamp: {
54537      code: 1,
54538      message: "Malformed time stamp."
54539    }
54540  }, gi.prototype = {
54541    set: function set(e, t) {
54542      this.get(e) || "" === t || (this.values[e] = t);
54543    },
54544    get: function get(e, t, i) {
54545      return i ? this.has(e) ? this.values[e] : t[i] : this.has(e) ? this.values[e] : t;
54546    },
54547    has: function has(e) {
54548      return e in this.values;
54549    },
54550    alt: function alt(e, t, i) {
54551      for (var n = 0; n < i.length; ++n) {
54552        if (t === i[n]) {
54553          this.set(e, t);
54554          break;
54555        }
54556      }
54557    },
54558    integer: function integer(e, t) {
54559      /^-?\d+$/.test(t) && this.set(e, parseInt(t, 10));
54560    },
54561    percent: function percent(e, t) {
54562      return !!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/) && 0 <= (t = parseFloat(t)) && t <= 100) && (this.set(e, t), !0);
54563    }
54564  };
54565
54566  var _i = h.createElement("textarea"),
54567      bi = {
54568    c: "span",
54569    i: "i",
54570    b: "b",
54571    u: "u",
54572    ruby: "ruby",
54573    rt: "rt",
54574    v: "span",
54575    lang: "span"
54576  },
54577      Ti = {
54578    white: "rgba(255,255,255,1)",
54579    lime: "rgba(0,255,0,1)",
54580    cyan: "rgba(0,255,255,1)",
54581    red: "rgba(255,0,0,1)",
54582    yellow: "rgba(255,255,0,1)",
54583    magenta: "rgba(255,0,255,1)",
54584    blue: "rgba(0,0,255,1)",
54585    black: "rgba(0,0,0,1)"
54586  },
54587      Si = {
54588    v: "title",
54589    lang: "lang"
54590  },
54591      ki = {
54592    rt: "ruby"
54593  };
54594
54595  function Ci(s, i) {
54596    function e() {
54597      if (!i) return null;
54598      var e,
54599          t = i.match(/^([^<]*)(<[^>]*>?)?/);
54600      return e = t[1] ? t[1] : t[2], i = i.substr(e.length), e;
54601    }
54602
54603    function t(e, t) {
54604      var i = bi[e];
54605      if (!i) return null;
54606      var n = s.document.createElement(i),
54607          r = Si[e];
54608      return r && t && (n[r] = t.trim()), n;
54609    }
54610
54611    for (var n, r, a, o, u = s.document.createElement("div"), l = u, c = []; null !== (n = e());) {
54612      if ("<" !== n[0]) l.appendChild(s.document.createTextNode((r = n, _i.innerHTML = r, r = _i.textContent, _i.textContent = "", r)));else {
54613        if ("/" === n[1]) {
54614          c.length && c[c.length - 1] === n.substr(2).replace(">", "") && (c.pop(), l = l.parentNode);
54615          continue;
54616        }
54617
54618        var h,
54619            d = mi(n.substr(1, n.length - 2));
54620
54621        if (d) {
54622          h = s.document.createProcessingInstruction("timestamp", d), l.appendChild(h);
54623          continue;
54624        }
54625
54626        var p = n.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/);
54627        if (!p) continue;
54628        if (!(h = t(p[1], p[3]))) continue;
54629        if (a = l, ki[(o = h).localName] && ki[o.localName] !== a.localName) continue;
54630
54631        if (p[2]) {
54632          var f = p[2].split(".");
54633          f.forEach(function (e) {
54634            var t = /^bg_/.test(e),
54635                i = t ? e.slice(3) : e;
54636
54637            if (Ti.hasOwnProperty(i)) {
54638              var n = t ? "background-color" : "color",
54639                  r = Ti[i];
54640              h.style[n] = r;
54641            }
54642          }), h.className = f.join(" ");
54643        }
54644
54645        c.push(p[1]), l.appendChild(h), l = h;
54646      }
54647    }
54648
54649    return u;
54650  }
54651
54652  var wi = [[1470, 1470], [1472, 1472], [1475, 1475], [1478, 1478], [1488, 1514], [1520, 1524], [1544, 1544], [1547, 1547], [1549, 1549], [1563, 1563], [1566, 1610], [1645, 1647], [1649, 1749], [1765, 1766], [1774, 1775], [1786, 1805], [1807, 1808], [1810, 1839], [1869, 1957], [1969, 1969], [1984, 2026], [2036, 2037], [2042, 2042], [2048, 2069], [2074, 2074], [2084, 2084], [2088, 2088], [2096, 2110], [2112, 2136], [2142, 2142], [2208, 2208], [2210, 2220], [8207, 8207], [64285, 64285], [64287, 64296], [64298, 64310], [64312, 64316], [64318, 64318], [64320, 64321], [64323, 64324], [64326, 64449], [64467, 64829], [64848, 64911], [64914, 64967], [65008, 65020], [65136, 65140], [65142, 65276], [67584, 67589], [67592, 67592], [67594, 67637], [67639, 67640], [67644, 67644], [67647, 67669], [67671, 67679], [67840, 67867], [67872, 67897], [67903, 67903], [67968, 68023], [68030, 68031], [68096, 68096], [68112, 68115], [68117, 68119], [68121, 68147], [68160, 68167], [68176, 68184], [68192, 68223], [68352, 68405], [68416, 68437], [68440, 68466], [68472, 68479], [68608, 68680], [126464, 126467], [126469, 126495], [126497, 126498], [126500, 126500], [126503, 126503], [126505, 126514], [126516, 126519], [126521, 126521], [126523, 126523], [126530, 126530], [126535, 126535], [126537, 126537], [126539, 126539], [126541, 126543], [126545, 126546], [126548, 126548], [126551, 126551], [126553, 126553], [126555, 126555], [126557, 126557], [126559, 126559], [126561, 126562], [126564, 126564], [126567, 126570], [126572, 126578], [126580, 126583], [126585, 126588], [126590, 126590], [126592, 126601], [126603, 126619], [126625, 126627], [126629, 126633], [126635, 126651], [1114109, 1114109]];
54653
54654  function Ei(e) {
54655    for (var t = 0; t < wi.length; t++) {
54656      var i = wi[t];
54657      if (e >= i[0] && e <= i[1]) return !0;
54658    }
54659
54660    return !1;
54661  }
54662
54663  function xi() {}
54664
54665  function Ai(e, t, i) {
54666    xi.call(this), this.cue = t, this.cueDiv = Ci(e, t.text);
54667    var n = {
54668      color: "rgba(255, 255, 255, 1)",
54669      backgroundColor: "rgba(0, 0, 0, 0.8)",
54670      position: "relative",
54671      left: 0,
54672      right: 0,
54673      top: 0,
54674      bottom: 0,
54675      display: "inline",
54676      writingMode: "" === t.vertical ? "horizontal-tb" : "lr" === t.vertical ? "vertical-lr" : "vertical-rl",
54677      unicodeBidi: "plaintext"
54678    };
54679    this.applyStyles(n, this.cueDiv), this.div = e.document.createElement("div"), n = {
54680      direction: function (e) {
54681        var t = [],
54682            i = "";
54683        if (!e || !e.childNodes) return "ltr";
54684
54685        function r(e, t) {
54686          for (var i = t.childNodes.length - 1; 0 <= i; i--) {
54687            e.push(t.childNodes[i]);
54688          }
54689        }
54690
54691        function s(e) {
54692          if (!e || !e.length) return null;
54693          var t = e.pop(),
54694              i = t.textContent || t.innerText;
54695
54696          if (i) {
54697            var n = i.match(/^.*(\n|\r)/);
54698            return n ? n[e.length = 0] : i;
54699          }
54700
54701          return "ruby" === t.tagName ? s(e) : t.childNodes ? (r(e, t), s(e)) : void 0;
54702        }
54703
54704        for (r(t, e); i = s(t);) {
54705          for (var n = 0; n < i.length; n++) {
54706            if (Ei(i.charCodeAt(n))) return "rtl";
54707          }
54708        }
54709
54710        return "ltr";
54711      }(this.cueDiv),
54712      writingMode: "" === t.vertical ? "horizontal-tb" : "lr" === t.vertical ? "vertical-lr" : "vertical-rl",
54713      unicodeBidi: "plaintext",
54714      textAlign: "middle" === t.align ? "center" : t.align,
54715      font: i.font,
54716      whiteSpace: "pre-line",
54717      position: "absolute"
54718    }, this.applyStyles(n), this.div.appendChild(this.cueDiv);
54719    var r = 0;
54720
54721    switch (t.positionAlign) {
54722      case "start":
54723        r = t.position;
54724        break;
54725
54726      case "center":
54727        r = t.position - t.size / 2;
54728        break;
54729
54730      case "end":
54731        r = t.position - t.size;
54732    }
54733
54734    "" === t.vertical ? this.applyStyles({
54735      left: this.formatStyle(r, "%"),
54736      width: this.formatStyle(t.size, "%")
54737    }) : this.applyStyles({
54738      top: this.formatStyle(r, "%"),
54739      height: this.formatStyle(t.size, "%")
54740    }), this.move = function (e) {
54741      this.applyStyles({
54742        top: this.formatStyle(e.top, "px"),
54743        bottom: this.formatStyle(e.bottom, "px"),
54744        left: this.formatStyle(e.left, "px"),
54745        right: this.formatStyle(e.right, "px"),
54746        height: this.formatStyle(e.height, "px"),
54747        width: this.formatStyle(e.width, "px")
54748      });
54749    };
54750  }
54751
54752  function Ii(e) {
54753    var t, i, n, r;
54754
54755    if (e.div) {
54756      i = e.div.offsetHeight, n = e.div.offsetWidth, r = e.div.offsetTop;
54757      var s = (s = e.div.childNodes) && (s = s[0]) && s.getClientRects && s.getClientRects();
54758      e = e.div.getBoundingClientRect(), t = s ? Math.max(s[0] && s[0].height || 0, e.height / s.length) : 0;
54759    }
54760
54761    this.left = e.left, this.right = e.right, this.top = e.top || r, this.height = e.height || i, this.bottom = e.bottom || r + (e.height || i), this.width = e.width || n, this.lineHeight = void 0 !== t ? t : e.lineHeight;
54762  }
54763
54764  function Pi(e, t, o, u) {
54765    var i = new Ii(t),
54766        n = t.cue,
54767        r = function (e) {
54768      if ("number" == typeof e.line && (e.snapToLines || 0 <= e.line && e.line <= 100)) return e.line;
54769      if (!e.track || !e.track.textTrackList || !e.track.textTrackList.mediaElement) return -1;
54770
54771      for (var t = e.track, i = t.textTrackList, n = 0, r = 0; r < i.length && i[r] !== t; r++) {
54772        "showing" === i[r].mode && n++;
54773      }
54774
54775      return -1 * ++n;
54776    }(n),
54777        s = [];
54778
54779    if (n.snapToLines) {
54780      var a;
54781
54782      switch (n.vertical) {
54783        case "":
54784          s = ["+y", "-y"], a = "height";
54785          break;
54786
54787        case "rl":
54788          s = ["+x", "-x"], a = "width";
54789          break;
54790
54791        case "lr":
54792          s = ["-x", "+x"], a = "width";
54793      }
54794
54795      var l = i.lineHeight,
54796          c = l * Math.round(r),
54797          h = o[a] + l,
54798          d = s[0];
54799      Math.abs(c) > h && (c = c < 0 ? -1 : 1, c *= Math.ceil(h / l) * l), r < 0 && (c += "" === n.vertical ? o.height : o.width, s = s.reverse()), i.move(d, c);
54800    } else {
54801      var p = i.lineHeight / o.height * 100;
54802
54803      switch (n.lineAlign) {
54804        case "center":
54805          r -= p / 2;
54806          break;
54807
54808        case "end":
54809          r -= p;
54810      }
54811
54812      switch (n.vertical) {
54813        case "":
54814          t.applyStyles({
54815            top: t.formatStyle(r, "%")
54816          });
54817          break;
54818
54819        case "rl":
54820          t.applyStyles({
54821            left: t.formatStyle(r, "%")
54822          });
54823          break;
54824
54825        case "lr":
54826          t.applyStyles({
54827            right: t.formatStyle(r, "%")
54828          });
54829      }
54830
54831      s = ["+y", "-x", "+x", "-y"], i = new Ii(t);
54832    }
54833
54834    var f = function (e, t) {
54835      for (var i, n = new Ii(e), r = 1, s = 0; s < t.length; s++) {
54836        for (; e.overlapsOppositeAxis(o, t[s]) || e.within(o) && e.overlapsAny(u);) {
54837          e.move(t[s]);
54838        }
54839
54840        if (e.within(o)) return e;
54841        var a = e.intersectPercentage(o);
54842        a < r && (i = new Ii(e), r = a), e = new Ii(n);
54843      }
54844
54845      return i || n;
54846    }(i, s);
54847
54848    t.move(f.toCSSCompatValues(o));
54849  }
54850
54851  function Li() {}
54852
54853  xi.prototype.applyStyles = function (e, t) {
54854    for (var i in t = t || this.div, e) {
54855      e.hasOwnProperty(i) && (t.style[i] = e[i]);
54856    }
54857  }, xi.prototype.formatStyle = function (e, t) {
54858    return 0 === e ? 0 : e + t;
54859  }, (Ai.prototype = di(xi.prototype)).constructor = Ai, Ii.prototype.move = function (e, t) {
54860    switch (t = void 0 !== t ? t : this.lineHeight, e) {
54861      case "+x":
54862        this.left += t, this.right += t;
54863        break;
54864
54865      case "-x":
54866        this.left -= t, this.right -= t;
54867        break;
54868
54869      case "+y":
54870        this.top += t, this.bottom += t;
54871        break;
54872
54873      case "-y":
54874        this.top -= t, this.bottom -= t;
54875    }
54876  }, Ii.prototype.overlaps = function (e) {
54877    return this.left < e.right && this.right > e.left && this.top < e.bottom && this.bottom > e.top;
54878  }, Ii.prototype.overlapsAny = function (e) {
54879    for (var t = 0; t < e.length; t++) {
54880      if (this.overlaps(e[t])) return !0;
54881    }
54882
54883    return !1;
54884  }, Ii.prototype.within = function (e) {
54885    return this.top >= e.top && this.bottom <= e.bottom && this.left >= e.left && this.right <= e.right;
54886  }, Ii.prototype.overlapsOppositeAxis = function (e, t) {
54887    switch (t) {
54888      case "+x":
54889        return this.left < e.left;
54890
54891      case "-x":
54892        return this.right > e.right;
54893
54894      case "+y":
54895        return this.top < e.top;
54896
54897      case "-y":
54898        return this.bottom > e.bottom;
54899    }
54900  }, Ii.prototype.intersectPercentage = function (e) {
54901    return Math.max(0, Math.min(this.right, e.right) - Math.max(this.left, e.left)) * Math.max(0, Math.min(this.bottom, e.bottom) - Math.max(this.top, e.top)) / (this.height * this.width);
54902  }, Ii.prototype.toCSSCompatValues = function (e) {
54903    return {
54904      top: this.top - e.top,
54905      bottom: e.bottom - this.bottom,
54906      left: this.left - e.left,
54907      right: e.right - this.right,
54908      height: this.height,
54909      width: this.width
54910    };
54911  }, Ii.getSimpleBoxPosition = function (e) {
54912    var t = e.div ? e.div.offsetHeight : e.tagName ? e.offsetHeight : 0,
54913        i = e.div ? e.div.offsetWidth : e.tagName ? e.offsetWidth : 0,
54914        n = e.div ? e.div.offsetTop : e.tagName ? e.offsetTop : 0;
54915    return {
54916      left: (e = e.div ? e.div.getBoundingClientRect() : e.tagName ? e.getBoundingClientRect() : e).left,
54917      right: e.right,
54918      top: e.top || n,
54919      height: e.height || t,
54920      bottom: e.bottom || n + (e.height || t),
54921      width: e.width || i
54922    };
54923  }, Li.StringDecoder = function () {
54924    return {
54925      decode: function decode(e) {
54926        if (!e) return "";
54927        if ("string" != typeof e) throw new Error("Error - expected string data.");
54928        return decodeURIComponent(encodeURIComponent(e));
54929      }
54930    };
54931  }, Li.convertCueToDOMTree = function (e, t) {
54932    return e && t ? Ci(e, t) : null;
54933  };
54934  Li.processCues = function (n, r, e) {
54935    if (!n || !r || !e) return null;
54936
54937    for (; e.firstChild;) {
54938      e.removeChild(e.firstChild);
54939    }
54940
54941    var s = n.document.createElement("div");
54942
54943    if (s.style.position = "absolute", s.style.left = "0", s.style.right = "0", s.style.top = "0", s.style.bottom = "0", s.style.margin = "1.5%", e.appendChild(s), function (e) {
54944      for (var t = 0; t < e.length; t++) {
54945        if (e[t].hasBeenReset || !e[t].displayState) return !0;
54946      }
54947
54948      return !1;
54949    }(r)) {
54950      var a = [],
54951          o = Ii.getSimpleBoxPosition(s),
54952          u = {
54953        font: Math.round(.05 * o.height * 100) / 100 + "px sans-serif"
54954      };
54955      !function () {
54956        for (var e, t, i = 0; i < r.length; i++) {
54957          t = r[i], e = new Ai(n, t, u), s.appendChild(e.div), Pi(0, e, o, a), t.displayState = e.div, a.push(Ii.getSimpleBoxPosition(e));
54958        }
54959      }();
54960    } else for (var t = 0; t < r.length; t++) {
54961      s.appendChild(r[t].displayState);
54962    }
54963  }, (Li.Parser = function (e, t, i) {
54964    i || (i = t, t = {}), t = t || {}, this.window = e, this.vttjs = t, this.state = "INITIAL", this.buffer = "", this.decoder = i || new TextDecoder("utf8"), this.regionList = [];
54965  }).prototype = {
54966    reportOrThrowError: function reportOrThrowError(e) {
54967      if (!(e instanceof fi)) throw e;
54968      this.onparsingerror && this.onparsingerror(e);
54969    },
54970    parse: function parse(e) {
54971      var n = this;
54972
54973      function t() {
54974        for (var e = n.buffer, t = 0; t < e.length && "\r" !== e[t] && "\n" !== e[t];) {
54975          ++t;
54976        }
54977
54978        var i = e.substr(0, t);
54979        return "\r" === e[t] && ++t, "\n" === e[t] && ++t, n.buffer = e.substr(t), i;
54980      }
54981
54982      function i(e) {
54983        e.match(/X-TIMESTAMP-MAP/) ? vi(e, function (e, t) {
54984          switch (e) {
54985            case "X-TIMESTAMP-MAP":
54986              !function (e) {
54987                var i = new gi();
54988                vi(e, function (e, t) {
54989                  switch (e) {
54990                    case "MPEGT":
54991                      i.integer(e + "S", t);
54992                      break;
54993
54994                    case "LOCA":
54995                      i.set(e + "L", mi(t));
54996                  }
54997                }, /[^\d]:/, /,/), n.ontimestampmap && n.ontimestampmap({
54998                  MPEGTS: i.get("MPEGTS"),
54999                  LOCAL: i.get("LOCAL")
55000                });
55001              }(t);
55002          }
55003        }, /=/) : vi(e, function (e, t) {
55004          switch (e) {
55005            case "Region":
55006              !function (e) {
55007                var r = new gi();
55008
55009                if (vi(e, function (e, t) {
55010                  switch (e) {
55011                    case "id":
55012                      r.set(e, t);
55013                      break;
55014
55015                    case "width":
55016                      r.percent(e, t);
55017                      break;
55018
55019                    case "lines":
55020                      r.integer(e, t);
55021                      break;
55022
55023                    case "regionanchor":
55024                    case "viewportanchor":
55025                      var i = t.split(",");
55026                      if (2 !== i.length) break;
55027                      var n = new gi();
55028                      if (n.percent("x", i[0]), n.percent("y", i[1]), !n.has("x") || !n.has("y")) break;
55029                      r.set(e + "X", n.get("x")), r.set(e + "Y", n.get("y"));
55030                      break;
55031
55032                    case "scroll":
55033                      r.alt(e, t, ["up"]);
55034                  }
55035                }, /=/, /\s/), r.has("id")) {
55036                  var t = new (n.vttjs.VTTRegion || n.window.VTTRegion)();
55037                  t.width = r.get("width", 100), t.lines = r.get("lines", 3), t.regionAnchorX = r.get("regionanchorX", 0), t.regionAnchorY = r.get("regionanchorY", 100), t.viewportAnchorX = r.get("viewportanchorX", 0), t.viewportAnchorY = r.get("viewportanchorY", 100), t.scroll = r.get("scroll", ""), n.onregion && n.onregion(t), n.regionList.push({
55038                    id: r.get("id"),
55039                    region: t
55040                  });
55041                }
55042              }(t);
55043          }
55044        }, /:/);
55045      }
55046
55047      e && (n.buffer += n.decoder.decode(e, {
55048        stream: !0
55049      }));
55050
55051      try {
55052        var r;
55053
55054        if ("INITIAL" === n.state) {
55055          if (!/\r\n|\n/.test(n.buffer)) return this;
55056          var s = (r = t()).match(/^WEBVTT([ \t].*)?$/);
55057          if (!s || !s[0]) throw new fi(fi.Errors.BadSignature);
55058          n.state = "HEADER";
55059        }
55060
55061        for (var a = !1; n.buffer;) {
55062          if (!/\r\n|\n/.test(n.buffer)) return this;
55063
55064          switch (a ? a = !1 : r = t(), n.state) {
55065            case "HEADER":
55066              /:/.test(r) ? i(r) : r || (n.state = "ID");
55067              continue;
55068
55069            case "NOTE":
55070              r || (n.state = "ID");
55071              continue;
55072
55073            case "ID":
55074              if (/^NOTE($|[ \t])/.test(r)) {
55075                n.state = "NOTE";
55076                break;
55077              }
55078
55079              if (!r) continue;
55080              n.cue = new (n.vttjs.VTTCue || n.window.VTTCue)(0, 0, "");
55081
55082              try {
55083                n.cue.align = "center";
55084              } catch (e) {
55085                n.cue.align = "middle";
55086              }
55087
55088              if (n.state = "CUE", -1 === r.indexOf("--\x3e")) {
55089                n.cue.id = r;
55090                continue;
55091              }
55092
55093            case "CUE":
55094              try {
55095                yi(r, n.cue, n.regionList);
55096              } catch (e) {
55097                n.reportOrThrowError(e), n.cue = null, n.state = "BADCUE";
55098                continue;
55099              }
55100
55101              n.state = "CUETEXT";
55102              continue;
55103
55104            case "CUETEXT":
55105              var o = -1 !== r.indexOf("--\x3e");
55106
55107              if (!r || o && (a = !0)) {
55108                n.oncue && n.oncue(n.cue), n.cue = null, n.state = "ID";
55109                continue;
55110              }
55111
55112              n.cue.text && (n.cue.text += "\n"), n.cue.text += r.replace(/\u2028/g, "\n").replace(/u2029/g, "\n");
55113              continue;
55114
55115            case "BADCUE":
55116              r || (n.state = "ID");
55117              continue;
55118          }
55119        }
55120      } catch (e) {
55121        n.reportOrThrowError(e), "CUETEXT" === n.state && n.cue && n.oncue && n.oncue(n.cue), n.cue = null, n.state = "INITIAL" === n.state ? "BADWEBVTT" : "BADCUE";
55122      }
55123
55124      return this;
55125    },
55126    flush: function flush() {
55127      var t = this;
55128
55129      try {
55130        if (t.buffer += t.decoder.decode(), !t.cue && "HEADER" !== t.state || (t.buffer += "\n\n", t.parse()), "INITIAL" === t.state) throw new fi(fi.Errors.BadSignature);
55131      } catch (e) {
55132        t.reportOrThrowError(e);
55133      }
55134
55135      return t.onflush && t.onflush(), this;
55136    }
55137  };
55138  var Oi = Li,
55139      Di = {
55140    "": 1,
55141    lr: 1,
55142    rl: 1
55143  },
55144      Ni = {
55145    start: 1,
55146    center: 1,
55147    end: 1,
55148    left: 1,
55149    right: 1,
55150    auto: 1,
55151    "line-left": 1,
55152    "line-right": 1
55153  };
55154
55155  function Ri(e) {
55156    return "string" == typeof e && !!Ni[e.toLowerCase()] && e.toLowerCase();
55157  }
55158
55159  function Ui(e, t, i) {
55160    this.hasBeenReset = !1;
55161    var n = "",
55162        r = !1,
55163        s = e,
55164        a = t,
55165        o = i,
55166        u = null,
55167        l = "",
55168        c = !0,
55169        h = "auto",
55170        d = "start",
55171        p = "auto",
55172        f = "auto",
55173        m = 100,
55174        g = "center";
55175    Object.defineProperties(this, {
55176      id: {
55177        enumerable: !0,
55178        get: function get() {
55179          return n;
55180        },
55181        set: function set(e) {
55182          n = "" + e;
55183        }
55184      },
55185      pauseOnExit: {
55186        enumerable: !0,
55187        get: function get() {
55188          return r;
55189        },
55190        set: function set(e) {
55191          r = !!e;
55192        }
55193      },
55194      startTime: {
55195        enumerable: !0,
55196        get: function get() {
55197          return s;
55198        },
55199        set: function set(e) {
55200          if ("number" != typeof e) throw new TypeError("Start time must be set to a number.");
55201          s = e, this.hasBeenReset = !0;
55202        }
55203      },
55204      endTime: {
55205        enumerable: !0,
55206        get: function get() {
55207          return a;
55208        },
55209        set: function set(e) {
55210          if ("number" != typeof e) throw new TypeError("End time must be set to a number.");
55211          a = e, this.hasBeenReset = !0;
55212        }
55213      },
55214      text: {
55215        enumerable: !0,
55216        get: function get() {
55217          return o;
55218        },
55219        set: function set(e) {
55220          o = "" + e, this.hasBeenReset = !0;
55221        }
55222      },
55223      region: {
55224        enumerable: !0,
55225        get: function get() {
55226          return u;
55227        },
55228        set: function set(e) {
55229          u = e, this.hasBeenReset = !0;
55230        }
55231      },
55232      vertical: {
55233        enumerable: !0,
55234        get: function get() {
55235          return l;
55236        },
55237        set: function set(e) {
55238          var t = function (e) {
55239            return "string" == typeof e && !!Di[e.toLowerCase()] && e.toLowerCase();
55240          }(e);
55241
55242          if (!1 === t) throw new SyntaxError("Vertical: an invalid or illegal direction string was specified.");
55243          l = t, this.hasBeenReset = !0;
55244        }
55245      },
55246      snapToLines: {
55247        enumerable: !0,
55248        get: function get() {
55249          return c;
55250        },
55251        set: function set(e) {
55252          c = !!e, this.hasBeenReset = !0;
55253        }
55254      },
55255      line: {
55256        enumerable: !0,
55257        get: function get() {
55258          return h;
55259        },
55260        set: function set(e) {
55261          if ("number" != typeof e && "auto" !== e) throw new SyntaxError("Line: an invalid number or illegal string was specified.");
55262          h = e, this.hasBeenReset = !0;
55263        }
55264      },
55265      lineAlign: {
55266        enumerable: !0,
55267        get: function get() {
55268          return d;
55269        },
55270        set: function set(e) {
55271          var t = Ri(e);
55272          t && (d = t, this.hasBeenReset = !0);
55273        }
55274      },
55275      position: {
55276        enumerable: !0,
55277        get: function get() {
55278          return p;
55279        },
55280        set: function set(e) {
55281          if (e < 0 || 100 < e) throw new Error("Position must be between 0 and 100.");
55282          p = e, this.hasBeenReset = !0;
55283        }
55284      },
55285      positionAlign: {
55286        enumerable: !0,
55287        get: function get() {
55288          return f;
55289        },
55290        set: function set(e) {
55291          var t = Ri(e);
55292          t && (f = t, this.hasBeenReset = !0);
55293        }
55294      },
55295      size: {
55296        enumerable: !0,
55297        get: function get() {
55298          return m;
55299        },
55300        set: function set(e) {
55301          if (e < 0 || 100 < e) throw new Error("Size must be between 0 and 100.");
55302          m = e, this.hasBeenReset = !0;
55303        }
55304      },
55305      align: {
55306        enumerable: !0,
55307        get: function get() {
55308          return g;
55309        },
55310        set: function set(e) {
55311          var t = Ri(e);
55312          if (!t) throw new SyntaxError("align: an invalid or illegal alignment string was specified.");
55313          g = t, this.hasBeenReset = !0;
55314        }
55315      }
55316    }), this.displayState = void 0;
55317  }
55318
55319  Ui.prototype.getCueAsHTML = function () {
55320    return WebVTT.convertCueToDOMTree(window, this.text);
55321  };
55322
55323  var Mi = Ui,
55324      Bi = {
55325    "": !0,
55326    up: !0
55327  };
55328
55329  function ji(e) {
55330    return "number" == typeof e && 0 <= e && e <= 100;
55331  }
55332
55333  function Fi() {
55334    var t = 100,
55335        i = 3,
55336        n = 0,
55337        r = 100,
55338        s = 0,
55339        a = 100,
55340        o = "";
55341    Object.defineProperties(this, {
55342      width: {
55343        enumerable: !0,
55344        get: function get() {
55345          return t;
55346        },
55347        set: function set(e) {
55348          if (!ji(e)) throw new Error("Width must be between 0 and 100.");
55349          t = e;
55350        }
55351      },
55352      lines: {
55353        enumerable: !0,
55354        get: function get() {
55355          return i;
55356        },
55357        set: function set(e) {
55358          if ("number" != typeof e) throw new TypeError("Lines must be set to a number.");
55359          i = e;
55360        }
55361      },
55362      regionAnchorY: {
55363        enumerable: !0,
55364        get: function get() {
55365          return r;
55366        },
55367        set: function set(e) {
55368          if (!ji(e)) throw new Error("RegionAnchorX must be between 0 and 100.");
55369          r = e;
55370        }
55371      },
55372      regionAnchorX: {
55373        enumerable: !0,
55374        get: function get() {
55375          return n;
55376        },
55377        set: function set(e) {
55378          if (!ji(e)) throw new Error("RegionAnchorY must be between 0 and 100.");
55379          n = e;
55380        }
55381      },
55382      viewportAnchorY: {
55383        enumerable: !0,
55384        get: function get() {
55385          return a;
55386        },
55387        set: function set(e) {
55388          if (!ji(e)) throw new Error("ViewportAnchorY must be between 0 and 100.");
55389          a = e;
55390        }
55391      },
55392      viewportAnchorX: {
55393        enumerable: !0,
55394        get: function get() {
55395          return s;
55396        },
55397        set: function set(e) {
55398          if (!ji(e)) throw new Error("ViewportAnchorX must be between 0 and 100.");
55399          s = e;
55400        }
55401      },
55402      scroll: {
55403        enumerable: !0,
55404        get: function get() {
55405          return o;
55406        },
55407        set: function set(e) {
55408          var t = function (e) {
55409            return "string" == typeof e && !!Bi[e.toLowerCase()] && e.toLowerCase();
55410          }(e);
55411
55412          !1 === t || (o = t);
55413        }
55414      }
55415    });
55416  }
55417
55418  var Hi = t(function (e) {
55419    var t = e.exports = {
55420      WebVTT: Oi,
55421      VTTCue: Mi,
55422      VTTRegion: Fi
55423    };
55424    y.vttjs = t, y.WebVTT = t.WebVTT;
55425    var i = t.VTTCue,
55426        n = t.VTTRegion,
55427        r = y.VTTCue,
55428        s = y.VTTRegion;
55429    t.shim = function () {
55430      y.VTTCue = i, y.VTTRegion = n;
55431    }, t.restore = function () {
55432      y.VTTCue = r, y.VTTRegion = s;
55433    }, y.VTTCue || t.shim();
55434  });
55435  Hi.WebVTT, Hi.VTTCue, Hi.VTTRegion;
55436
55437  var Vi = function (t) {
55438    function i(i, e) {
55439      var n;
55440      return void 0 === i && (i = {}), void 0 === e && (e = function e() {}), i.reportTouchActivity = !1, (n = t.call(this, null, i, e) || this).hasStarted_ = !1, n.on("playing", function () {
55441        this.hasStarted_ = !0;
55442      }), n.on("loadstart", function () {
55443        this.hasStarted_ = !1;
55444      }), hi.names.forEach(function (e) {
55445        var t = hi[e];
55446        i && i[t.getterName] && (n[t.privateName] = i[t.getterName]);
55447      }), n.featuresProgressEvents || n.manualProgressOn(), n.featuresTimeupdateEvents || n.manualTimeUpdatesOn(), ["Text", "Audio", "Video"].forEach(function (e) {
55448        !1 === i["native" + e + "Tracks"] && (n["featuresNative" + e + "Tracks"] = !1);
55449      }), !1 === i.nativeCaptions || !1 === i.nativeTextTracks ? n.featuresNativeTextTracks = !1 : !0 !== i.nativeCaptions && !0 !== i.nativeTextTracks || (n.featuresNativeTextTracks = !0), n.featuresNativeTextTracks || n.emulateTextTracks(), n.preloadTextTracks = !1 !== i.preloadTextTracks, n.autoRemoteTextTracks_ = new hi.text.ListClass(), n.initTrackListeners(), i.nativeControlsForTouch || n.emitTapEvents(), n.constructor && (n.name_ = n.constructor.name || "Unknown Tech"), n;
55450    }
55451
55452    He(i, t);
55453    var e = i.prototype;
55454    return e.triggerSourceset = function (e) {
55455      var t = this;
55456      this.isReady_ || this.one("ready", function () {
55457        return t.setTimeout(function () {
55458          return t.triggerSourceset(e);
55459        }, 1);
55460      }), this.trigger({
55461        src: e,
55462        type: "sourceset"
55463      });
55464    }, e.manualProgressOn = function () {
55465      this.on("durationchange", this.onDurationChange), this.manualProgress = !0, this.one("ready", this.trackProgress);
55466    }, e.manualProgressOff = function () {
55467      this.manualProgress = !1, this.stopTrackingProgress(), this.off("durationchange", this.onDurationChange);
55468    }, e.trackProgress = function (e) {
55469      this.stopTrackingProgress(), this.progressInterval = this.setInterval(ge(this, function () {
55470        var e = this.bufferedPercent();
55471        this.bufferedPercent_ !== e && this.trigger("progress"), 1 === (this.bufferedPercent_ = e) && this.stopTrackingProgress();
55472      }), 500);
55473    }, e.onDurationChange = function (e) {
55474      this.duration_ = this.duration();
55475    }, e.buffered = function () {
55476      return ht(0, 0);
55477    }, e.bufferedPercent = function () {
55478      return dt(this.buffered(), this.duration_);
55479    }, e.stopTrackingProgress = function () {
55480      this.clearInterval(this.progressInterval);
55481    }, e.manualTimeUpdatesOn = function () {
55482      this.manualTimeUpdates = !0, this.on("play", this.trackCurrentTime), this.on("pause", this.stopTrackingCurrentTime);
55483    }, e.manualTimeUpdatesOff = function () {
55484      this.manualTimeUpdates = !1, this.stopTrackingCurrentTime(), this.off("play", this.trackCurrentTime), this.off("pause", this.stopTrackingCurrentTime);
55485    }, e.trackCurrentTime = function () {
55486      this.currentTimeInterval && this.stopTrackingCurrentTime(), this.currentTimeInterval = this.setInterval(function () {
55487        this.trigger({
55488          type: "timeupdate",
55489          target: this,
55490          manuallyTriggered: !0
55491        });
55492      }, 250);
55493    }, e.stopTrackingCurrentTime = function () {
55494      this.clearInterval(this.currentTimeInterval), this.trigger({
55495        type: "timeupdate",
55496        target: this,
55497        manuallyTriggered: !0
55498      });
55499    }, e.dispose = function () {
55500      this.clearTracks(li.names), this.manualProgress && this.manualProgressOff(), this.manualTimeUpdates && this.manualTimeUpdatesOff(), t.prototype.dispose.call(this);
55501    }, e.clearTracks = function (e) {
55502      var r = this;
55503      (e = [].concat(e)).forEach(function (e) {
55504        for (var t = r[e + "Tracks"]() || [], i = t.length; i--;) {
55505          var n = t[i];
55506          "text" === e && r.removeRemoteTextTrack(n), t.removeTrack(n);
55507        }
55508      });
55509    }, e.cleanupAutoTextTracks = function () {
55510      for (var e = this.autoRemoteTextTracks_ || [], t = e.length; t--;) {
55511        var i = e[t];
55512        this.removeRemoteTextTrack(i);
55513      }
55514    }, e.reset = function () {}, e.error = function (e) {
55515      return void 0 !== e && (this.error_ = new _t(e), this.trigger("error")), this.error_;
55516    }, e.played = function () {
55517      return this.hasStarted_ ? ht(0, 0) : ht();
55518    }, e.setCurrentTime = function () {
55519      this.manualTimeUpdates && this.trigger({
55520        type: "timeupdate",
55521        target: this,
55522        manuallyTriggered: !0
55523      });
55524    }, e.initTrackListeners = function () {
55525      var r = this;
55526      li.names.forEach(function (e) {
55527        function t() {
55528          r.trigger(e + "trackchange");
55529        }
55530
55531        var i = li[e],
55532            n = r[i.getterName]();
55533        n.addEventListener("removetrack", t), n.addEventListener("addtrack", t), r.on("dispose", function () {
55534          n.removeEventListener("removetrack", t), n.removeEventListener("addtrack", t);
55535        });
55536      });
55537    }, e.addWebVttScript_ = function () {
55538      var e = this;
55539      if (!y.WebVTT) if (h.body.contains(this.el())) {
55540        if (!this.options_["vtt.js"] && u(Hi) && 0 < Object.keys(Hi).length) return void this.trigger("vttjsloaded");
55541        var t = h.createElement("script");
55542        t.src = this.options_["vtt.js"] || "https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js", t.onload = function () {
55543          e.trigger("vttjsloaded");
55544        }, t.onerror = function () {
55545          e.trigger("vttjserror");
55546        }, this.on("dispose", function () {
55547          t.onload = null, t.onerror = null;
55548        }), y.WebVTT = !0, this.el().parentNode.appendChild(t);
55549      } else this.ready(this.addWebVttScript_);
55550    }, e.emulateTextTracks = function () {
55551      function t(e) {
55552        return n.addTrack(e.track);
55553      }
55554
55555      function i(e) {
55556        return n.removeTrack(e.track);
55557      }
55558
55559      var e = this,
55560          n = this.textTracks(),
55561          r = this.remoteTextTracks();
55562      r.on("addtrack", t), r.on("removetrack", i), this.addWebVttScript_();
55563
55564      function s() {
55565        return e.trigger("texttrackchange");
55566      }
55567
55568      function a() {
55569        s();
55570
55571        for (var e = 0; e < n.length; e++) {
55572          var t = n[e];
55573          t.removeEventListener("cuechange", s), "showing" === t.mode && t.addEventListener("cuechange", s);
55574        }
55575      }
55576
55577      a(), n.addEventListener("change", a), n.addEventListener("addtrack", a), n.addEventListener("removetrack", a), this.on("dispose", function () {
55578        r.off("addtrack", t), r.off("removetrack", i), n.removeEventListener("change", a), n.removeEventListener("addtrack", a), n.removeEventListener("removetrack", a);
55579
55580        for (var e = 0; e < n.length; e++) {
55581          n[e].removeEventListener("cuechange", s);
55582        }
55583      });
55584    }, e.addTextTrack = function (e, t, i) {
55585      if (!e) throw new Error("TextTrack kind is required but was not provided");
55586      return function (e, t, i, n, r) {
55587        void 0 === r && (r = {});
55588        var s = e.textTracks();
55589        r.kind = t, i && (r.label = i), n && (r.language = n), r.tech = e;
55590        var a = new hi.text.TrackClass(r);
55591        return s.addTrack(a), a;
55592      }(this, e, t, i);
55593    }, e.createRemoteTextTrack = function (e) {
55594      var t = Ne(e, {
55595        tech: this
55596      });
55597      return new ci.remoteTextEl.TrackClass(t);
55598    }, e.addRemoteTextTrack = function (e, t) {
55599      var i = this;
55600      void 0 === e && (e = {});
55601      var n = this.createRemoteTextTrack(e);
55602      return !0 !== t && !1 !== t && (p.warn('Calling addRemoteTextTrack without explicitly setting the "manualCleanup" parameter to `true` is deprecated and default to `false` in future version of video.js'), t = !0), this.remoteTextTrackEls().addTrackElement_(n), this.remoteTextTracks().addTrack(n.track), !0 !== t && this.ready(function () {
55603        return i.autoRemoteTextTracks_.addTrack(n.track);
55604      }), n;
55605    }, e.removeRemoteTextTrack = function (e) {
55606      var t = this.remoteTextTrackEls().getTrackElementByTrack_(e);
55607      this.remoteTextTrackEls().removeTrackElement_(t), this.remoteTextTracks().removeTrack(e), this.autoRemoteTextTracks_.removeTrack(e);
55608    }, e.getVideoPlaybackQuality = function () {
55609      return {};
55610    }, e.requestPictureInPicture = function () {
55611      var e = this.options_.Promise || y.Promise;
55612      if (e) return e.reject();
55613    }, e.setPoster = function () {}, e.playsinline = function () {}, e.setPlaysinline = function () {}, e.overrideNativeAudioTracks = function () {}, e.overrideNativeVideoTracks = function () {}, e.canPlayType = function () {
55614      return "";
55615    }, i.canPlayType = function () {
55616      return "";
55617    }, i.canPlaySource = function (e, t) {
55618      return i.canPlayType(e.type);
55619    }, i.isTech = function (e) {
55620      return e.prototype instanceof i || e instanceof i || e === i;
55621    }, i.registerTech = function (e, t) {
55622      if (i.techs_ || (i.techs_ = {}), !i.isTech(t)) throw new Error("Tech " + e + " must be a Tech");
55623      if (!i.canPlayType) throw new Error("Techs must have a static canPlayType method on them");
55624      if (!i.canPlaySource) throw new Error("Techs must have a static canPlaySource method on them");
55625      return e = De(e), i.techs_[e] = t, i.techs_[Oe(e)] = t, "Tech" !== e && i.defaultTechOrder_.push(e), t;
55626    }, i.getTech = function (e) {
55627      if (e) return i.techs_ && i.techs_[e] ? i.techs_[e] : (e = De(e), y && y.videojs && y.videojs[e] ? (p.warn("The " + e + " tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)"), y.videojs[e]) : void 0);
55628    }, i;
55629  }(Re);
55630
55631  hi.names.forEach(function (e) {
55632    var t = hi[e];
55633
55634    Vi.prototype[t.getterName] = function () {
55635      return this[t.privateName] = this[t.privateName] || new t.ListClass(), this[t.privateName];
55636    };
55637  }), Vi.prototype.featuresVolumeControl = !0, Vi.prototype.featuresMuteControl = !0, Vi.prototype.featuresFullscreenResize = !1, Vi.prototype.featuresPlaybackRate = !1, Vi.prototype.featuresProgressEvents = !1, Vi.prototype.featuresSourceset = !1, Vi.prototype.featuresTimeupdateEvents = !1, Vi.prototype.featuresNativeTextTracks = !1, Vi.withSourceHandlers = function (r) {
55638    r.registerSourceHandler = function (e, t) {
55639      var i = r.sourceHandlers;
55640      i = i || (r.sourceHandlers = []), void 0 === t && (t = i.length), i.splice(t, 0, e);
55641    }, r.canPlayType = function (e) {
55642      for (var t, i = r.sourceHandlers || [], n = 0; n < i.length; n++) {
55643        if (t = i[n].canPlayType(e)) return t;
55644      }
55645
55646      return "";
55647    }, r.selectSourceHandler = function (e, t) {
55648      for (var i = r.sourceHandlers || [], n = 0; n < i.length; n++) {
55649        if (i[n].canHandleSource(e, t)) return i[n];
55650      }
55651
55652      return null;
55653    }, r.canPlaySource = function (e, t) {
55654      var i = r.selectSourceHandler(e, t);
55655      return i ? i.canHandleSource(e, t) : "";
55656    };
55657    ["seekable", "seeking", "duration"].forEach(function (e) {
55658      var t = this[e];
55659      "function" == typeof t && (this[e] = function () {
55660        return this.sourceHandler_ && this.sourceHandler_[e] ? this.sourceHandler_[e].apply(this.sourceHandler_, arguments) : t.apply(this, arguments);
55661      });
55662    }, r.prototype), r.prototype.setSource = function (e) {
55663      var t = r.selectSourceHandler(e, this.options_);
55664      t || (r.nativeSourceHandler ? t = r.nativeSourceHandler : p.error("No source handler found for the current source.")), this.disposeSourceHandler(), this.off("dispose", this.disposeSourceHandler), t !== r.nativeSourceHandler && (this.currentSource_ = e), this.sourceHandler_ = t.handleSource(e, this, this.options_), this.one("dispose", this.disposeSourceHandler);
55665    }, r.prototype.disposeSourceHandler = function () {
55666      this.currentSource_ && (this.clearTracks(["audio", "video"]), this.currentSource_ = null), this.cleanupAutoTextTracks(), this.sourceHandler_ && (this.sourceHandler_.dispose && this.sourceHandler_.dispose(), this.sourceHandler_ = null);
55667    };
55668  }, Re.registerComponent("Tech", Vi), Vi.registerTech("Tech", Vi), Vi.defaultTechOrder_ = [];
55669  var qi = {},
55670      Wi = {},
55671      zi = {};
55672
55673  function Gi(e, t, i) {
55674    e.setTimeout(function () {
55675      return function i(n, e, r, s, a, o) {
55676        void 0 === n && (n = {});
55677        void 0 === e && (e = []);
55678        void 0 === a && (a = []);
55679        void 0 === o && (o = !1);
55680        var t = e,
55681            u = t[0],
55682            l = t.slice(1);
55683        if ("string" == typeof u) i(n, qi[u], r, s, a, o);else if (u) {
55684          var c = Ji(s, u);
55685          if (!c.setSource) return a.push(c), i(n, l, r, s, a, o);
55686          c.setSource(m({}, n), function (e, t) {
55687            if (e) return i(n, l, r, s, a, o);
55688            a.push(c), i(t, n.type === t.type ? l : qi[t.type], r, s, a, o);
55689          });
55690        } else l.length ? i(n, l, r, s, a, o) : o ? r(n, a) : i(n, qi["*"], r, s, a, !0);
55691      }(t, qi[t.type], i, e);
55692    }, 1);
55693  }
55694
55695  function Xi(e, t, i, n) {
55696    void 0 === n && (n = null);
55697    var r = "call" + De(i),
55698        s = e.reduce(Qi(r), n),
55699        a = s === zi,
55700        o = a ? null : t[i](s);
55701    return function (e, t, i, n) {
55702      for (var r = e.length - 1; 0 <= r; r--) {
55703        var s = e[r];
55704        s[t] && s[t](n, i);
55705      }
55706    }(e, i, o, a), o;
55707  }
55708
55709  var Ki = {
55710    buffered: 1,
55711    currentTime: 1,
55712    duration: 1,
55713    muted: 1,
55714    played: 1,
55715    paused: 1,
55716    seekable: 1,
55717    volume: 1
55718  },
55719      Yi = {
55720    setCurrentTime: 1,
55721    setMuted: 1,
55722    setVolume: 1
55723  },
55724      $i = {
55725    play: 1,
55726    pause: 1
55727  };
55728
55729  function Qi(i) {
55730    return function (e, t) {
55731      return e === zi ? zi : t[i] ? t[i](e) : e;
55732    };
55733  }
55734
55735  function Ji(e, t) {
55736    var i = Wi[e.id()],
55737        n = null;
55738    if (null == i) return n = t(e), Wi[e.id()] = [[t, n]], n;
55739
55740    for (var r = 0; r < i.length; r++) {
55741      var s = i[r],
55742          a = s[0],
55743          o = s[1];
55744      a === t && (n = o);
55745    }
55746
55747    return null === n && (n = t(e), i.push([t, n])), n;
55748  }
55749
55750  function Zi(e) {
55751    void 0 === e && (e = "");
55752    var t = Ut(e);
55753    return en[t.toLowerCase()] || "";
55754  }
55755
55756  var en = {
55757    opus: "video/ogg",
55758    ogv: "video/ogg",
55759    mp4: "video/mp4",
55760    mov: "video/mp4",
55761    m4v: "video/mp4",
55762    mkv: "video/x-matroska",
55763    m4a: "audio/mp4",
55764    mp3: "audio/mpeg",
55765    aac: "audio/aac",
55766    oga: "audio/ogg",
55767    m3u8: "application/x-mpegURL",
55768    jpg: "image/jpeg",
55769    jpeg: "image/jpeg",
55770    gif: "image/gif",
55771    png: "image/png",
55772    svg: "image/svg+xml",
55773    webp: "image/webp"
55774  };
55775
55776  function tn(e) {
55777    if (!e.type) {
55778      var t = Zi(e.src);
55779      t && (e.type = t);
55780    }
55781
55782    return e;
55783  }
55784
55785  var nn = function (l) {
55786    function e(e, t, i) {
55787      var n,
55788          r = Ne({
55789        createEl: !1
55790      }, t);
55791      if (n = l.call(this, e, r, i) || this, t.playerOptions.sources && 0 !== t.playerOptions.sources.length) e.src(t.playerOptions.sources);else for (var s = 0, a = t.playerOptions.techOrder; s < a.length; s++) {
55792        var o = De(a[s]),
55793            u = Vi.getTech(o);
55794
55795        if (o || (u = Re.getComponent(o)), u && u.isSupported()) {
55796          e.loadTech_(o);
55797          break;
55798        }
55799      }
55800      return n;
55801    }
55802
55803    return He(e, l), e;
55804  }(Re);
55805
55806  Re.registerComponent("MediaLoader", nn);
55807
55808  var rn = function (r) {
55809    function e(e, t) {
55810      var i;
55811      return (i = r.call(this, e, t) || this).emitTapEvents(), i.enable(), i;
55812    }
55813
55814    He(e, r);
55815    var t = e.prototype;
55816    return t.createEl = function (e, t, i) {
55817      void 0 === e && (e = "div"), void 0 === t && (t = {}), void 0 === i && (i = {}), t = m({
55818        innerHTML: '<span aria-hidden="true" class="vjs-icon-placeholder"></span>',
55819        className: this.buildCSSClass(),
55820        tabIndex: 0
55821      }, t), "button" === e && p.error("Creating a ClickableComponent with an HTML element of " + e + " is not supported; use a Button instead."), i = m({
55822        role: "button"
55823      }, i), this.tabIndex_ = t.tabIndex;
55824      var n = r.prototype.createEl.call(this, e, t, i);
55825      return this.createControlTextEl(n), n;
55826    }, t.dispose = function () {
55827      this.controlTextEl_ = null, r.prototype.dispose.call(this);
55828    }, t.createControlTextEl = function (e) {
55829      return this.controlTextEl_ = S("span", {
55830        className: "vjs-control-text"
55831      }, {
55832        "aria-live": "polite"
55833      }), e && e.appendChild(this.controlTextEl_), this.controlText(this.controlText_, e), this.controlTextEl_;
55834    }, t.controlText = function (e, t) {
55835      if (void 0 === t && (t = this.el()), void 0 === e) return this.controlText_ || "Need Text";
55836      var i = this.localize(e);
55837      this.controlText_ = e, k(this.controlTextEl_, i), this.nonIconControl || t.setAttribute("title", i);
55838    }, t.buildCSSClass = function () {
55839      return "vjs-control vjs-button " + r.prototype.buildCSSClass.call(this);
55840    }, t.enable = function () {
55841      this.enabled_ || (this.enabled_ = !0, this.removeClass("vjs-disabled"), this.el_.setAttribute("aria-disabled", "false"), "undefined" != typeof this.tabIndex_ && this.el_.setAttribute("tabIndex", this.tabIndex_), this.on(["tap", "click"], this.handleClick), this.on("keydown", this.handleKeyDown));
55842    }, t.disable = function () {
55843      this.enabled_ = !1, this.addClass("vjs-disabled"), this.el_.setAttribute("aria-disabled", "true"), "undefined" != typeof this.tabIndex_ && this.el_.removeAttribute("tabIndex"), this.off("mouseover", this.handleMouseOver), this.off("mouseout", this.handleMouseOut), this.off(["tap", "click"], this.handleClick), this.off("keydown", this.handleKeyDown);
55844    }, t.handleClick = function (e) {
55845      this.options_.clickHandler && this.options_.clickHandler.call(this, arguments);
55846    }, t.handleKeyDown = function (e) {
55847      xt.isEventKey(e, "Space") || xt.isEventKey(e, "Enter") ? (e.preventDefault(), e.stopPropagation(), this.trigger("click")) : r.prototype.handleKeyDown.call(this, e);
55848    }, e;
55849  }(Re);
55850
55851  Re.registerComponent("ClickableComponent", rn);
55852
55853  var sn = function (n) {
55854    function e(e, t) {
55855      var i;
55856      return (i = n.call(this, e, t) || this).update(), e.on("posterchange", ge(Ue(i), i.update)), i;
55857    }
55858
55859    He(e, n);
55860    var t = e.prototype;
55861    return t.dispose = function () {
55862      this.player().off("posterchange", this.update), n.prototype.dispose.call(this);
55863    }, t.createEl = function () {
55864      return S("div", {
55865        className: "vjs-poster",
55866        tabIndex: -1
55867      });
55868    }, t.update = function (e) {
55869      var t = this.player().poster();
55870      this.setSrc(t), t ? this.show() : this.hide();
55871    }, t.setSrc = function (e) {
55872      var t = "";
55873      e && (t = 'url("' + e + '")'), this.el_.style.backgroundImage = t;
55874    }, t.handleClick = function (e) {
55875      if (this.player_.controls()) {
55876        var t = this.player_.usingPlugin("eme") && this.player_.eme.sessions && 0 < this.player_.eme.sessions.length;
55877        !this.player_.tech(!0) || (et || Qe) && t || this.player_.tech(!0).focus(), this.player_.paused() ? kt(this.player_.play()) : this.player_.pause();
55878      }
55879    }, e;
55880  }(rn);
55881
55882  Re.registerComponent("PosterImage", sn);
55883  var an = "#222",
55884      on = {
55885    monospace: "monospace",
55886    sansSerif: "sans-serif",
55887    serif: "serif",
55888    monospaceSansSerif: '"Andale Mono", "Lucida Console", monospace',
55889    monospaceSerif: '"Courier New", monospace',
55890    proportionalSansSerif: "sans-serif",
55891    proportionalSerif: "serif",
55892    casual: '"Comic Sans MS", Impact, fantasy',
55893    script: '"Monotype Corsiva", cursive',
55894    smallcaps: '"Andale Mono", "Lucida Console", monospace, sans-serif'
55895  };
55896
55897  function un(e, t) {
55898    var i;
55899    if (4 === e.length) i = e[1] + e[1] + e[2] + e[2] + e[3] + e[3];else {
55900      if (7 !== e.length) throw new Error("Invalid color code provided, " + e + "; must be formatted as e.g. #f0e or #f604e2.");
55901      i = e.slice(1);
55902    }
55903    return "rgba(" + parseInt(i.slice(0, 2), 16) + "," + parseInt(i.slice(2, 4), 16) + "," + parseInt(i.slice(4, 6), 16) + "," + t + ")";
55904  }
55905
55906  function ln(e, t, i) {
55907    try {
55908      e.style[t] = i;
55909    } catch (e) {
55910      return;
55911    }
55912  }
55913
55914  var cn = function (s) {
55915    function e(i, e, t) {
55916      var n;
55917      n = s.call(this, i, e, t) || this;
55918      var r = ge(Ue(n), n.updateDisplay);
55919      return i.on("loadstart", ge(Ue(n), n.toggleDisplay)), i.on("texttrackchange", r), i.on("loadedmetadata", ge(Ue(n), n.preselectTrack)), i.ready(ge(Ue(n), function () {
55920        if (i.tech_ && i.tech_.featuresNativeTextTracks) this.hide();else {
55921          i.on("fullscreenchange", r), i.on("playerresize", r), y.addEventListener("orientationchange", r), i.on("dispose", function () {
55922            return y.removeEventListener("orientationchange", r);
55923          });
55924
55925          for (var e = this.options_.playerOptions.tracks || [], t = 0; t < e.length; t++) {
55926            this.player_.addRemoteTextTrack(e[t], !0);
55927          }
55928
55929          this.preselectTrack();
55930        }
55931      })), n;
55932    }
55933
55934    He(e, s);
55935    var t = e.prototype;
55936    return t.preselectTrack = function () {
55937      for (var e, t, i, n = {
55938        captions: 1,
55939        subtitles: 1
55940      }, r = this.player_.textTracks(), s = this.player_.cache_.selectedLanguage, a = 0; a < r.length; a++) {
55941        var o = r[a];
55942        s && s.enabled && s.language && s.language === o.language && o.kind in n ? i = o.kind === s.kind ? o : i || o : s && !s.enabled ? t = e = i = null : o["default"] && ("descriptions" !== o.kind || e ? o.kind in n && !t && (t = o) : e = o);
55943      }
55944
55945      i ? i.mode = "showing" : t ? t.mode = "showing" : e && (e.mode = "showing");
55946    }, t.toggleDisplay = function () {
55947      this.player_.tech_ && this.player_.tech_.featuresNativeTextTracks ? this.hide() : this.show();
55948    }, t.createEl = function () {
55949      return s.prototype.createEl.call(this, "div", {
55950        className: "vjs-text-track-display"
55951      }, {
55952        "aria-live": "off",
55953        "aria-atomic": "true"
55954      });
55955    }, t.clearDisplay = function () {
55956      "function" == typeof y.WebVTT && y.WebVTT.processCues(y, [], this.el_);
55957    }, t.updateDisplay = function () {
55958      var e = this.player_.textTracks(),
55959          t = this.options_.allowMultipleShowingTracks;
55960
55961      if (this.clearDisplay(), t) {
55962        for (var i = [], n = 0; n < e.length; ++n) {
55963          var r = e[n];
55964          "showing" === r.mode && i.push(r);
55965        }
55966
55967        this.updateForTrack(i);
55968      } else {
55969        for (var s = null, a = null, o = e.length; o--;) {
55970          var u = e[o];
55971          "showing" === u.mode && ("descriptions" === u.kind ? s = u : a = u);
55972        }
55973
55974        a ? ("off" !== this.getAttribute("aria-live") && this.setAttribute("aria-live", "off"), this.updateForTrack(a)) : s && ("assertive" !== this.getAttribute("aria-live") && this.setAttribute("aria-live", "assertive"), this.updateForTrack(s));
55975      }
55976    }, t.updateDisplayState = function (e) {
55977      for (var t = this.player_.textTrackSettings.getValues(), i = e.activeCues, n = i.length; n--;) {
55978        var r = i[n];
55979
55980        if (r) {
55981          var s = r.displayState;
55982
55983          if (t.color && (s.firstChild.style.color = t.color), t.textOpacity && ln(s.firstChild, "color", un(t.color || "#fff", t.textOpacity)), t.backgroundColor && (s.firstChild.style.backgroundColor = t.backgroundColor), t.backgroundOpacity && ln(s.firstChild, "backgroundColor", un(t.backgroundColor || "#000", t.backgroundOpacity)), t.windowColor && (t.windowOpacity ? ln(s, "backgroundColor", un(t.windowColor, t.windowOpacity)) : s.style.backgroundColor = t.windowColor), t.edgeStyle && ("dropshadow" === t.edgeStyle ? s.firstChild.style.textShadow = "2px 2px 3px #222, 2px 2px 4px #222, 2px 2px 5px " + an : "raised" === t.edgeStyle ? s.firstChild.style.textShadow = "1px 1px #222, 2px 2px #222, 3px 3px " + an : "depressed" === t.edgeStyle ? s.firstChild.style.textShadow = "1px 1px #ccc, 0 1px #ccc, -1px -1px #222, 0 -1px " + an : "uniform" === t.edgeStyle && (s.firstChild.style.textShadow = "0 0 4px #222, 0 0 4px #222, 0 0 4px #222, 0 0 4px " + an)), t.fontPercent && 1 !== t.fontPercent) {
55984            var a = y.parseFloat(s.style.fontSize);
55985            s.style.fontSize = a * t.fontPercent + "px", s.style.height = "auto", s.style.top = "auto", s.style.bottom = "2px";
55986          }
55987
55988          t.fontFamily && "default" !== t.fontFamily && ("small-caps" === t.fontFamily ? s.firstChild.style.fontVariant = "small-caps" : s.firstChild.style.fontFamily = on[t.fontFamily]);
55989        }
55990      }
55991    }, t.updateForTrack = function (e) {
55992      if (Array.isArray(e) || (e = [e]), "function" == typeof y.WebVTT && !e.every(function (e) {
55993        return !e.activeCues;
55994      })) {
55995        for (var t = [], i = 0; i < e.length; ++i) {
55996          for (var n = e[i], r = 0; r < n.activeCues.length; ++r) {
55997            t.push(n.activeCues[r]);
55998          }
55999        }
56000
56001        y.WebVTT.processCues(y, t, this.el_);
56002
56003        for (var s = 0; s < e.length; ++s) {
56004          for (var a = e[s], o = 0; o < a.activeCues.length; ++o) {
56005            var u = a.activeCues[o].displayState;
56006            E(u, "vjs-text-track-cue"), E(u, "vjs-text-track-cue-" + (a.language ? a.language : s));
56007          }
56008
56009          this.player_.textTrackSettings && this.updateDisplayState(a);
56010        }
56011      }
56012    }, e;
56013  }(Re);
56014
56015  Re.registerComponent("TextTrackDisplay", cn);
56016
56017  var hn = function (r) {
56018    function e() {
56019      return r.apply(this, arguments) || this;
56020    }
56021
56022    return He(e, r), e.prototype.createEl = function () {
56023      var e = this.player_.isAudio(),
56024          t = this.localize(e ? "Audio Player" : "Video Player"),
56025          i = S("span", {
56026        className: "vjs-control-text",
56027        innerHTML: this.localize("{1} is loading.", [t])
56028      }),
56029          n = r.prototype.createEl.call(this, "div", {
56030        className: "vjs-loading-spinner",
56031        dir: "ltr"
56032      });
56033      return n.appendChild(i), n;
56034    }, e;
56035  }(Re);
56036
56037  Re.registerComponent("LoadingSpinner", hn);
56038
56039  var dn = function (t) {
56040    function e() {
56041      return t.apply(this, arguments) || this;
56042    }
56043
56044    He(e, t);
56045    var i = e.prototype;
56046    return i.createEl = function (e, t, i) {
56047      void 0 === t && (t = {}), void 0 === i && (i = {}), t = m({
56048        innerHTML: '<span aria-hidden="true" class="vjs-icon-placeholder"></span>',
56049        className: this.buildCSSClass()
56050      }, t), i = m({
56051        type: "button"
56052      }, i);
56053      var n = Re.prototype.createEl.call(this, "button", t, i);
56054      return this.createControlTextEl(n), n;
56055    }, i.addChild = function (e, t) {
56056      void 0 === t && (t = {});
56057      var i = this.constructor.name;
56058      return p.warn("Adding an actionable (user controllable) child to a Button (" + i + ") is not supported; use a ClickableComponent instead."), Re.prototype.addChild.call(this, e, t);
56059    }, i.enable = function () {
56060      t.prototype.enable.call(this), this.el_.removeAttribute("disabled");
56061    }, i.disable = function () {
56062      t.prototype.disable.call(this), this.el_.setAttribute("disabled", "disabled");
56063    }, i.handleKeyDown = function (e) {
56064      xt.isEventKey(e, "Space") || xt.isEventKey(e, "Enter") ? e.stopPropagation() : t.prototype.handleKeyDown.call(this, e);
56065    }, e;
56066  }(rn);
56067
56068  Re.registerComponent("Button", dn);
56069
56070  var pn = function (n) {
56071    function e(e, t) {
56072      var i;
56073      return (i = n.call(this, e, t) || this).mouseused_ = !1, i.on("mousedown", i.handleMouseDown), i;
56074    }
56075
56076    He(e, n);
56077    var t = e.prototype;
56078    return t.buildCSSClass = function () {
56079      return "vjs-big-play-button";
56080    }, t.handleClick = function (e) {
56081      var t = this.player_.play();
56082
56083      if (this.mouseused_ && e.clientX && e.clientY) {
56084        var i = this.player_.usingPlugin("eme") && this.player_.eme.sessions && 0 < this.player_.eme.sessions.length;
56085        return kt(t), void (!this.player_.tech(!0) || (et || Qe) && i || this.player_.tech(!0).focus());
56086      }
56087
56088      var n = this.player_.getChild("controlBar"),
56089          r = n && n.getChild("playToggle");
56090
56091      if (r) {
56092        var s = function s() {
56093          return r.focus();
56094        };
56095
56096        St(t) ? t.then(s, function () {}) : this.setTimeout(s, 1);
56097      } else this.player_.tech(!0).focus();
56098    }, t.handleKeyDown = function (e) {
56099      this.mouseused_ = !1, n.prototype.handleKeyDown.call(this, e);
56100    }, t.handleMouseDown = function (e) {
56101      this.mouseused_ = !0;
56102    }, e;
56103  }(dn);
56104
56105  pn.prototype.controlText_ = "Play Video", Re.registerComponent("BigPlayButton", pn);
56106
56107  var fn = function (n) {
56108    function e(e, t) {
56109      var i;
56110      return (i = n.call(this, e, t) || this).controlText(t && t.controlText || i.localize("Close")), i;
56111    }
56112
56113    He(e, n);
56114    var t = e.prototype;
56115    return t.buildCSSClass = function () {
56116      return "vjs-close-button " + n.prototype.buildCSSClass.call(this);
56117    }, t.handleClick = function (e) {
56118      this.trigger({
56119        type: "close",
56120        bubbles: !1
56121      });
56122    }, t.handleKeyDown = function (e) {
56123      xt.isEventKey(e, "Esc") ? (e.preventDefault(), e.stopPropagation(), this.trigger("click")) : n.prototype.handleKeyDown.call(this, e);
56124    }, e;
56125  }(dn);
56126
56127  Re.registerComponent("CloseButton", fn);
56128
56129  var mn = function (n) {
56130    function e(e, t) {
56131      var i;
56132      return void 0 === t && (t = {}), i = n.call(this, e, t) || this, t.replay = void 0 === t.replay || t.replay, i.on(e, "play", i.handlePlay), i.on(e, "pause", i.handlePause), t.replay && i.on(e, "ended", i.handleEnded), i;
56133    }
56134
56135    He(e, n);
56136    var t = e.prototype;
56137    return t.buildCSSClass = function () {
56138      return "vjs-play-control " + n.prototype.buildCSSClass.call(this);
56139    }, t.handleClick = function (e) {
56140      this.player_.paused() ? this.player_.play() : this.player_.pause();
56141    }, t.handleSeeked = function (e) {
56142      this.removeClass("vjs-ended"), this.player_.paused() ? this.handlePause(e) : this.handlePlay(e);
56143    }, t.handlePlay = function (e) {
56144      this.removeClass("vjs-ended"), this.removeClass("vjs-paused"), this.addClass("vjs-playing"), this.controlText("Pause");
56145    }, t.handlePause = function (e) {
56146      this.removeClass("vjs-playing"), this.addClass("vjs-paused"), this.controlText("Play");
56147    }, t.handleEnded = function (e) {
56148      this.removeClass("vjs-playing"), this.addClass("vjs-ended"), this.controlText("Replay"), this.one(this.player_, "seeked", this.handleSeeked);
56149    }, e;
56150  }(dn);
56151
56152  mn.prototype.controlText_ = "Play", Re.registerComponent("PlayToggle", mn);
56153
56154  function gn(e, t) {
56155    e = e < 0 ? 0 : e;
56156    var i = Math.floor(e % 60),
56157        n = Math.floor(e / 60 % 60),
56158        r = Math.floor(e / 3600),
56159        s = Math.floor(t / 60 % 60),
56160        a = Math.floor(t / 3600);
56161    return !isNaN(e) && e !== 1 / 0 || (r = n = i = "-"), (r = 0 < r || 0 < a ? r + ":" : "") + (n = ((r || 10 <= s) && n < 10 ? "0" + n : n) + ":") + (i = i < 10 ? "0" + i : i);
56162  }
56163
56164  var vn = gn;
56165
56166  function yn(e, t) {
56167    return void 0 === t && (t = e), vn(e, t);
56168  }
56169
56170  var _n = function (n) {
56171    function e(e, t) {
56172      var i;
56173      return (i = n.call(this, e, t) || this).on(e, ["timeupdate", "ended"], i.updateContent), i.updateTextNode_(), i;
56174    }
56175
56176    He(e, n);
56177    var t = e.prototype;
56178    return t.createEl = function () {
56179      var e = this.buildCSSClass(),
56180          t = n.prototype.createEl.call(this, "div", {
56181        className: e + " vjs-time-control vjs-control",
56182        innerHTML: '<span class="vjs-control-text" role="presentation">' + this.localize(this.labelText_) + " </span>"
56183      });
56184      return this.contentEl_ = S("span", {
56185        className: e + "-display"
56186      }, {
56187        "aria-live": "off",
56188        role: "presentation"
56189      }), t.appendChild(this.contentEl_), t;
56190    }, t.dispose = function () {
56191      this.contentEl_ = null, this.textNode_ = null, n.prototype.dispose.call(this);
56192    }, t.updateTextNode_ = function (e) {
56193      var t = this;
56194      void 0 === e && (e = 0), e = yn(e), this.formattedTime_ !== e && (this.formattedTime_ = e, this.requestAnimationFrame(function () {
56195        if (t.contentEl_) {
56196          var e = t.textNode_;
56197          t.textNode_ = h.createTextNode(t.formattedTime_), t.textNode_ && (e ? t.contentEl_.replaceChild(t.textNode_, e) : t.contentEl_.appendChild(t.textNode_));
56198        }
56199      }));
56200    }, t.updateContent = function (e) {}, e;
56201  }(Re);
56202
56203  _n.prototype.labelText_ = "Time", _n.prototype.controlText_ = "Time", Re.registerComponent("TimeDisplay", _n);
56204
56205  var bn = function (e) {
56206    function t() {
56207      return e.apply(this, arguments) || this;
56208    }
56209
56210    He(t, e);
56211    var i = t.prototype;
56212    return i.buildCSSClass = function () {
56213      return "vjs-current-time";
56214    }, i.updateContent = function (e) {
56215      var t;
56216      t = this.player_.ended() ? this.player_.duration() : this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime(), this.updateTextNode_(t);
56217    }, t;
56218  }(_n);
56219
56220  bn.prototype.labelText_ = "Current Time", bn.prototype.controlText_ = "Current Time", Re.registerComponent("CurrentTimeDisplay", bn);
56221
56222  var Tn = function (n) {
56223    function e(e, t) {
56224      var i;
56225      return (i = n.call(this, e, t) || this).on(e, "durationchange", i.updateContent), i.on(e, "loadstart", i.updateContent), i.on(e, "loadedmetadata", i.updateContent), i;
56226    }
56227
56228    He(e, n);
56229    var t = e.prototype;
56230    return t.buildCSSClass = function () {
56231      return "vjs-duration";
56232    }, t.updateContent = function (e) {
56233      var t = this.player_.duration();
56234      this.updateTextNode_(t);
56235    }, e;
56236  }(_n);
56237
56238  Tn.prototype.labelText_ = "Duration", Tn.prototype.controlText_ = "Duration", Re.registerComponent("DurationDisplay", Tn);
56239
56240  var Sn = function (e) {
56241    function t() {
56242      return e.apply(this, arguments) || this;
56243    }
56244
56245    return He(t, e), t.prototype.createEl = function () {
56246      return e.prototype.createEl.call(this, "div", {
56247        className: "vjs-time-control vjs-time-divider",
56248        innerHTML: "<div><span>/</span></div>"
56249      }, {
56250        "aria-hidden": !0
56251      });
56252    }, t;
56253  }(Re);
56254
56255  Re.registerComponent("TimeDivider", Sn);
56256
56257  var kn = function (n) {
56258    function e(e, t) {
56259      var i;
56260      return (i = n.call(this, e, t) || this).on(e, "durationchange", i.updateContent), i;
56261    }
56262
56263    He(e, n);
56264    var t = e.prototype;
56265    return t.buildCSSClass = function () {
56266      return "vjs-remaining-time";
56267    }, t.createEl = function () {
56268      var e = n.prototype.createEl.call(this);
56269      return e.insertBefore(S("span", {}, {
56270        "aria-hidden": !0
56271      }, "-"), this.contentEl_), e;
56272    }, t.updateContent = function (e) {
56273      var t;
56274      "number" == typeof this.player_.duration() && (t = this.player_.ended() ? 0 : this.player_.remainingTimeDisplay ? this.player_.remainingTimeDisplay() : this.player_.remainingTime(), this.updateTextNode_(t));
56275    }, e;
56276  }(_n);
56277
56278  kn.prototype.labelText_ = "Remaining Time", kn.prototype.controlText_ = "Remaining Time", Re.registerComponent("RemainingTimeDisplay", kn);
56279
56280  var Cn = function (n) {
56281    function e(e, t) {
56282      var i;
56283      return (i = n.call(this, e, t) || this).updateShowing(), i.on(i.player(), "durationchange", i.updateShowing), i;
56284    }
56285
56286    He(e, n);
56287    var t = e.prototype;
56288    return t.createEl = function () {
56289      var e = n.prototype.createEl.call(this, "div", {
56290        className: "vjs-live-control vjs-control"
56291      });
56292      return this.contentEl_ = S("div", {
56293        className: "vjs-live-display",
56294        innerHTML: '<span class="vjs-control-text">' + this.localize("Stream Type") + " </span>" + this.localize("LIVE")
56295      }, {
56296        "aria-live": "off"
56297      }), e.appendChild(this.contentEl_), e;
56298    }, t.dispose = function () {
56299      this.contentEl_ = null, n.prototype.dispose.call(this);
56300    }, t.updateShowing = function (e) {
56301      this.player().duration() === 1 / 0 ? this.show() : this.hide();
56302    }, e;
56303  }(Re);
56304
56305  Re.registerComponent("LiveDisplay", Cn);
56306
56307  var wn = function (n) {
56308    function e(e, t) {
56309      var i;
56310      return (i = n.call(this, e, t) || this).updateLiveEdgeStatus(), i.player_.liveTracker && i.on(i.player_.liveTracker, "liveedgechange", i.updateLiveEdgeStatus), i;
56311    }
56312
56313    He(e, n);
56314    var t = e.prototype;
56315    return t.createEl = function () {
56316      var e = n.prototype.createEl.call(this, "button", {
56317        className: "vjs-seek-to-live-control vjs-control"
56318      });
56319      return this.textEl_ = S("span", {
56320        className: "vjs-seek-to-live-text",
56321        innerHTML: this.localize("LIVE")
56322      }, {
56323        "aria-hidden": "true"
56324      }), e.appendChild(this.textEl_), e;
56325    }, t.updateLiveEdgeStatus = function () {
56326      !this.player_.liveTracker || this.player_.liveTracker.atLiveEdge() ? (this.setAttribute("aria-disabled", !0), this.addClass("vjs-at-live-edge"), this.controlText("Seek to live, currently playing live")) : (this.setAttribute("aria-disabled", !1), this.removeClass("vjs-at-live-edge"), this.controlText("Seek to live, currently behind live"));
56327    }, t.handleClick = function () {
56328      this.player_.liveTracker.seekToLiveEdge();
56329    }, t.dispose = function () {
56330      this.player_.liveTracker && this.off(this.player_.liveTracker, "liveedgechange", this.updateLiveEdgeStatus), this.textEl_ = null, n.prototype.dispose.call(this);
56331    }, e;
56332  }(dn);
56333
56334  wn.prototype.controlText_ = "Seek to live, currently playing live", Re.registerComponent("SeekToLive", wn);
56335
56336  function En(e, t, i) {
56337    return e = Number(e), Math.min(i, Math.max(t, isNaN(e) ? t : e));
56338  }
56339
56340  var xn = function (n) {
56341    function e(e, t) {
56342      var i;
56343      return (i = n.call(this, e, t) || this).bar = i.getChild(i.options_.barName), i.vertical(!!i.options_.vertical), i.enable(), i;
56344    }
56345
56346    He(e, n);
56347    var t = e.prototype;
56348    return t.enabled = function () {
56349      return this.enabled_;
56350    }, t.enable = function () {
56351      this.enabled() || (this.on("mousedown", this.handleMouseDown), this.on("touchstart", this.handleMouseDown), this.on("keydown", this.handleKeyDown), this.on("click", this.handleClick), this.on(this.player_, "controlsvisible", this.update), this.playerEvent && this.on(this.player_, this.playerEvent, this.update), this.removeClass("disabled"), this.setAttribute("tabindex", 0), this.enabled_ = !0);
56352    }, t.disable = function () {
56353      if (this.enabled()) {
56354        var e = this.bar.el_.ownerDocument;
56355        this.off("mousedown", this.handleMouseDown), this.off("touchstart", this.handleMouseDown), this.off("keydown", this.handleKeyDown), this.off("click", this.handleClick), this.off(this.player_, "controlsvisible", this.update), this.off(e, "mousemove", this.handleMouseMove), this.off(e, "mouseup", this.handleMouseUp), this.off(e, "touchmove", this.handleMouseMove), this.off(e, "touchend", this.handleMouseUp), this.removeAttribute("tabindex"), this.addClass("disabled"), this.playerEvent && this.off(this.player_, this.playerEvent, this.update), this.enabled_ = !1;
56356      }
56357    }, t.createEl = function (e, t, i) {
56358      return void 0 === t && (t = {}), void 0 === i && (i = {}), t.className = t.className + " vjs-slider", t = m({
56359        tabIndex: 0
56360      }, t), i = m({
56361        role: "slider",
56362        "aria-valuenow": 0,
56363        "aria-valuemin": 0,
56364        "aria-valuemax": 100,
56365        tabIndex: 0
56366      }, i), n.prototype.createEl.call(this, e, t, i);
56367    }, t.handleMouseDown = function (e) {
56368      var t = this.bar.el_.ownerDocument;
56369      "mousedown" === e.type && e.preventDefault(), "touchstart" !== e.type || Je || e.preventDefault(), N(), this.addClass("vjs-sliding"), this.trigger("slideractive"), this.on(t, "mousemove", this.handleMouseMove), this.on(t, "mouseup", this.handleMouseUp), this.on(t, "touchmove", this.handleMouseMove), this.on(t, "touchend", this.handleMouseUp), this.handleMouseMove(e);
56370    }, t.handleMouseMove = function (e) {}, t.handleMouseUp = function () {
56371      var e = this.bar.el_.ownerDocument;
56372      R(), this.removeClass("vjs-sliding"), this.trigger("sliderinactive"), this.off(e, "mousemove", this.handleMouseMove), this.off(e, "mouseup", this.handleMouseUp), this.off(e, "touchmove", this.handleMouseMove), this.off(e, "touchend", this.handleMouseUp), this.update();
56373    }, t.update = function () {
56374      var t = this;
56375
56376      if (this.el_ && this.bar) {
56377        var i = this.getProgress();
56378        return i === this.progress_ || (this.progress_ = i, this.requestAnimationFrame(function () {
56379          var e = t.vertical() ? "height" : "width";
56380          t.bar.el().style[e] = (100 * i).toFixed(2) + "%";
56381        })), i;
56382      }
56383    }, t.getProgress = function () {
56384      return Number(En(this.getPercent(), 0, 1).toFixed(4));
56385    }, t.calculateDistance = function (e) {
56386      var t = B(this.el_, e);
56387      return this.vertical() ? t.y : t.x;
56388    }, t.handleKeyDown = function (e) {
56389      xt.isEventKey(e, "Left") || xt.isEventKey(e, "Down") ? (e.preventDefault(), e.stopPropagation(), this.stepBack()) : xt.isEventKey(e, "Right") || xt.isEventKey(e, "Up") ? (e.preventDefault(), e.stopPropagation(), this.stepForward()) : n.prototype.handleKeyDown.call(this, e);
56390    }, t.handleClick = function (e) {
56391      e.stopPropagation(), e.preventDefault();
56392    }, t.vertical = function (e) {
56393      if (void 0 === e) return this.vertical_ || !1;
56394      this.vertical_ = !!e, this.vertical_ ? this.addClass("vjs-slider-vertical") : this.addClass("vjs-slider-horizontal");
56395    }, e;
56396  }(Re);
56397
56398  Re.registerComponent("Slider", xn);
56399
56400  function An(e, t) {
56401    return En(e / t * 100, 0, 100).toFixed(2) + "%";
56402  }
56403
56404  var In = function (r) {
56405    function e(e, t) {
56406      var i;
56407      return (i = r.call(this, e, t) || this).partEls_ = [], i.on(e, "progress", i.update), i;
56408    }
56409
56410    He(e, r);
56411    var t = e.prototype;
56412    return t.createEl = function () {
56413      var e = r.prototype.createEl.call(this, "div", {
56414        className: "vjs-load-progress"
56415      }),
56416          t = S("span", {
56417        className: "vjs-control-text"
56418      }),
56419          i = S("span", {
56420        textContent: this.localize("Loaded")
56421      }),
56422          n = h.createTextNode(": ");
56423      return this.percentageEl_ = S("span", {
56424        className: "vjs-control-text-loaded-percentage",
56425        textContent: "0%"
56426      }), e.appendChild(t), t.appendChild(i), t.appendChild(n), t.appendChild(this.percentageEl_), e;
56427    }, t.dispose = function () {
56428      this.partEls_ = null, this.percentageEl_ = null, r.prototype.dispose.call(this);
56429    }, t.update = function (e) {
56430      var h = this;
56431      this.requestAnimationFrame(function () {
56432        var e = h.player_.liveTracker,
56433            t = h.player_.buffered(),
56434            i = e && e.isLive() ? e.seekableEnd() : h.player_.duration(),
56435            n = h.player_.bufferedEnd(),
56436            r = h.partEls_,
56437            s = An(n, i);
56438        h.percent_ !== s && (h.el_.style.width = s, k(h.percentageEl_, s), h.percent_ = s);
56439
56440        for (var a = 0; a < t.length; a++) {
56441          var o = t.start(a),
56442              u = t.end(a),
56443              l = r[a];
56444          l || (l = h.el_.appendChild(S()), r[a] = l), l.dataset.start === o && l.dataset.end === u || (l.dataset.start = o, l.dataset.end = u, l.style.left = An(o, n), l.style.width = An(u - o, n));
56445        }
56446
56447        for (var c = r.length; c > t.length; c--) {
56448          h.el_.removeChild(r[c - 1]);
56449        }
56450
56451        r.length = t.length;
56452      });
56453    }, e;
56454  }(Re);
56455
56456  Re.registerComponent("LoadProgressBar", In);
56457
56458  var Pn = function (n) {
56459    function e(e, t) {
56460      var i;
56461      return (i = n.call(this, e, t) || this).update = ve(ge(Ue(i), i.update), 30), i;
56462    }
56463
56464    He(e, n);
56465    var t = e.prototype;
56466    return t.createEl = function () {
56467      return n.prototype.createEl.call(this, "div", {
56468        className: "vjs-time-tooltip"
56469      }, {
56470        "aria-hidden": "true"
56471      });
56472    }, t.update = function (e, t, i) {
56473      var n = U(this.el_),
56474          r = U(this.player_.el()),
56475          s = e.width * t;
56476
56477      if (r && n) {
56478        var a = e.left - r.left + s,
56479            o = e.width - s + (r.right - e.right),
56480            u = n.width / 2;
56481        a < u ? u += u - a : o < u && (u = o), u < 0 ? u = 0 : u > n.width && (u = n.width), this.el_.style.right = "-" + u + "px", this.write(i);
56482      }
56483    }, t.write = function (e) {
56484      k(this.el_, e);
56485    }, t.updateTime = function (r, s, a, o) {
56486      var u = this;
56487      this.rafId_ && this.cancelAnimationFrame(this.rafId_), this.rafId_ = this.requestAnimationFrame(function () {
56488        var e,
56489            t = u.player_.duration();
56490
56491        if (u.player_.liveTracker && u.player_.liveTracker.isLive()) {
56492          var i = u.player_.liveTracker.liveWindow(),
56493              n = i - s * i;
56494          e = (n < 1 ? "" : "-") + yn(n, i);
56495        } else e = yn(a, t);
56496
56497        u.update(r, s, e), o && o();
56498      });
56499    }, e;
56500  }(Re);
56501
56502  Re.registerComponent("TimeTooltip", Pn);
56503
56504  var Ln = function (n) {
56505    function e(e, t) {
56506      var i;
56507      return (i = n.call(this, e, t) || this).update = ve(ge(Ue(i), i.update), 30), i;
56508    }
56509
56510    He(e, n);
56511    var t = e.prototype;
56512    return t.createEl = function () {
56513      return n.prototype.createEl.call(this, "div", {
56514        className: "vjs-play-progress vjs-slider-bar"
56515      }, {
56516        "aria-hidden": "true"
56517      });
56518    }, t.update = function (e, t) {
56519      var i = this.getChild("timeTooltip");
56520
56521      if (i) {
56522        var n = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();
56523        i.updateTime(e, t, n);
56524      }
56525    }, e;
56526  }(Re);
56527
56528  Ln.prototype.options_ = {
56529    children: []
56530  }, at || Xe || Ln.prototype.options_.children.push("timeTooltip"), Re.registerComponent("PlayProgressBar", Ln);
56531
56532  var On = function (n) {
56533    function e(e, t) {
56534      var i;
56535      return (i = n.call(this, e, t) || this).update = ve(ge(Ue(i), i.update), 30), i;
56536    }
56537
56538    He(e, n);
56539    var t = e.prototype;
56540    return t.createEl = function () {
56541      return n.prototype.createEl.call(this, "div", {
56542        className: "vjs-mouse-display"
56543      });
56544    }, t.update = function (e, t) {
56545      var i = this,
56546          n = t * this.player_.duration();
56547      this.getChild("timeTooltip").updateTime(e, t, n, function () {
56548        i.el_.style.left = e.width * t + "px";
56549      });
56550    }, e;
56551  }(Re);
56552
56553  On.prototype.options_ = {
56554    children: ["timeTooltip"]
56555  }, Re.registerComponent("MouseTimeDisplay", On);
56556
56557  var Dn = function (s) {
56558    function e(e, t) {
56559      var i;
56560      return (i = s.call(this, e, t) || this).setEventHandlers_(), i;
56561    }
56562
56563    He(e, s);
56564    var t = e.prototype;
56565    return t.setEventHandlers_ = function () {
56566      this.update_ = ge(this, this.update), this.update = ve(this.update_, 30), this.on(this.player_, ["ended", "durationchange", "timeupdate"], this.update), this.player_.liveTracker && this.on(this.player_.liveTracker, "liveedgechange", this.update), this.updateInterval = null, this.on(this.player_, ["playing"], this.enableInterval_), this.on(this.player_, ["ended", "pause", "waiting"], this.disableInterval_), "hidden" in h && "visibilityState" in h && this.on(h, "visibilitychange", this.toggleVisibility_);
56567    }, t.toggleVisibility_ = function (e) {
56568      h.hidden ? this.disableInterval_(e) : (this.enableInterval_(), this.update());
56569    }, t.enableInterval_ = function () {
56570      this.updateInterval || (this.updateInterval = this.setInterval(this.update, 30));
56571    }, t.disableInterval_ = function (e) {
56572      this.player_.liveTracker && this.player_.liveTracker.isLive() && e && "ended" !== e.type || this.updateInterval && (this.clearInterval(this.updateInterval), this.updateInterval = null);
56573    }, t.createEl = function () {
56574      return s.prototype.createEl.call(this, "div", {
56575        className: "vjs-progress-holder"
56576      }, {
56577        "aria-label": this.localize("Progress Bar")
56578      });
56579    }, t.update = function (e) {
56580      var n = this,
56581          r = s.prototype.update.call(this);
56582      return this.requestAnimationFrame(function () {
56583        var e = n.player_.ended() ? n.player_.duration() : n.getCurrentTime_(),
56584            t = n.player_.liveTracker,
56585            i = n.player_.duration();
56586        t && t.isLive() && (i = n.player_.liveTracker.liveCurrentTime()), n.percent_ !== r && (n.el_.setAttribute("aria-valuenow", (100 * r).toFixed(2)), n.percent_ = r), n.currentTime_ === e && n.duration_ === i || (n.el_.setAttribute("aria-valuetext", n.localize("progress bar timing: currentTime={1} duration={2}", [yn(e, i), yn(i, i)], "{1} of {2}")), n.currentTime_ = e, n.duration_ = i), n.bar && n.bar.update(U(n.el()), n.getProgress());
56587      }), r;
56588    }, t.getCurrentTime_ = function () {
56589      return this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime();
56590    }, t.getPercent = function () {
56591      var e,
56592          t = this.getCurrentTime_(),
56593          i = this.player_.liveTracker;
56594      return i && i.isLive() ? (e = (t - i.seekableStart()) / i.liveWindow(), i.atLiveEdge() && (e = 1)) : e = t / this.player_.duration(), e;
56595    }, t.handleMouseDown = function (e) {
56596      W(e) && (e.stopPropagation(), this.player_.scrubbing(!0), this.videoWasPlaying = !this.player_.paused(), this.player_.pause(), s.prototype.handleMouseDown.call(this, e));
56597    }, t.handleMouseMove = function (e) {
56598      if (W(e)) {
56599        var t,
56600            i = this.calculateDistance(e),
56601            n = this.player_.liveTracker;
56602
56603        if (n && n.isLive()) {
56604          if (.99 <= i) return void n.seekToLiveEdge();
56605          var r = n.seekableStart(),
56606              s = n.liveCurrentTime();
56607          if (s <= (t = r + i * n.liveWindow()) && (t = s), t <= r && (t = r + .1), t === 1 / 0) return;
56608        } else (t = i * this.player_.duration()) === this.player_.duration() && (t -= .1);
56609
56610        this.player_.currentTime(t);
56611      }
56612    }, t.enable = function () {
56613      s.prototype.enable.call(this);
56614      var e = this.getChild("mouseTimeDisplay");
56615      e && e.show();
56616    }, t.disable = function () {
56617      s.prototype.disable.call(this);
56618      var e = this.getChild("mouseTimeDisplay");
56619      e && e.hide();
56620    }, t.handleMouseUp = function (e) {
56621      s.prototype.handleMouseUp.call(this, e), e && e.stopPropagation(), this.player_.scrubbing(!1), this.player_.trigger({
56622        type: "timeupdate",
56623        target: this,
56624        manuallyTriggered: !0
56625      }), this.videoWasPlaying ? kt(this.player_.play()) : this.update_();
56626    }, t.stepForward = function () {
56627      this.player_.currentTime(this.player_.currentTime() + 5);
56628    }, t.stepBack = function () {
56629      this.player_.currentTime(this.player_.currentTime() - 5);
56630    }, t.handleAction = function (e) {
56631      this.player_.paused() ? this.player_.play() : this.player_.pause();
56632    }, t.handleKeyDown = function (e) {
56633      if (xt.isEventKey(e, "Space") || xt.isEventKey(e, "Enter")) e.preventDefault(), e.stopPropagation(), this.handleAction(e);else if (xt.isEventKey(e, "Home")) e.preventDefault(), e.stopPropagation(), this.player_.currentTime(0);else if (xt.isEventKey(e, "End")) e.preventDefault(), e.stopPropagation(), this.player_.currentTime(this.player_.duration());else if (/^[0-9]$/.test(xt(e))) {
56634        e.preventDefault(), e.stopPropagation();
56635        var t = 10 * (xt.codes[xt(e)] - xt.codes[0]) / 100;
56636        this.player_.currentTime(this.player_.duration() * t);
56637      } else xt.isEventKey(e, "PgDn") ? (e.preventDefault(), e.stopPropagation(), this.player_.currentTime(this.player_.currentTime() - 60)) : xt.isEventKey(e, "PgUp") ? (e.preventDefault(), e.stopPropagation(), this.player_.currentTime(this.player_.currentTime() + 60)) : s.prototype.handleKeyDown.call(this, e);
56638    }, t.dispose = function () {
56639      this.disableInterval_(), this.off(this.player_, ["ended", "durationchange", "timeupdate"], this.update), this.player_.liveTracker && this.on(this.player_.liveTracker, "liveedgechange", this.update), this.off(this.player_, ["playing"], this.enableInterval_), this.off(this.player_, ["ended", "pause", "waiting"], this.disableInterval_), "hidden" in h && "visibilityState" in h && this.off(h, "visibilitychange", this.toggleVisibility_), s.prototype.dispose.call(this);
56640    }, e;
56641  }(xn);
56642
56643  Dn.prototype.options_ = {
56644    children: ["loadProgressBar", "playProgressBar"],
56645    barName: "playProgressBar"
56646  }, at || Xe || Dn.prototype.options_.children.splice(1, 0, "mouseTimeDisplay"), Re.registerComponent("SeekBar", Dn);
56647
56648  var Nn = function (n) {
56649    function e(e, t) {
56650      var i;
56651      return (i = n.call(this, e, t) || this).handleMouseMove = ve(ge(Ue(i), i.handleMouseMove), 30), i.throttledHandleMouseSeek = ve(ge(Ue(i), i.handleMouseSeek), 30), i.enable(), i;
56652    }
56653
56654    He(e, n);
56655    var t = e.prototype;
56656    return t.createEl = function () {
56657      return n.prototype.createEl.call(this, "div", {
56658        className: "vjs-progress-control vjs-control"
56659      });
56660    }, t.handleMouseMove = function (e) {
56661      var t = this.getChild("seekBar");
56662
56663      if (t) {
56664        var i = t.getChild("playProgressBar"),
56665            n = t.getChild("mouseTimeDisplay");
56666
56667        if (i || n) {
56668          var r = t.el(),
56669              s = U(r),
56670              a = B(r, e).x;
56671          a = En(0, 1, a), n && n.update(s, a), i && i.update(s, t.getProgress());
56672        }
56673      }
56674    }, t.handleMouseSeek = function (e) {
56675      var t = this.getChild("seekBar");
56676      t && t.handleMouseMove(e);
56677    }, t.enabled = function () {
56678      return this.enabled_;
56679    }, t.disable = function () {
56680      this.children().forEach(function (e) {
56681        return e.disable && e.disable();
56682      }), this.enabled() && (this.off(["mousedown", "touchstart"], this.handleMouseDown), this.off(this.el_, "mousemove", this.handleMouseMove), this.handleMouseUp(), this.addClass("disabled"), this.enabled_ = !1);
56683    }, t.enable = function () {
56684      this.children().forEach(function (e) {
56685        return e.enable && e.enable();
56686      }), this.enabled() || (this.on(["mousedown", "touchstart"], this.handleMouseDown), this.on(this.el_, "mousemove", this.handleMouseMove), this.removeClass("disabled"), this.enabled_ = !0);
56687    }, t.handleMouseDown = function (e) {
56688      var t = this.el_.ownerDocument,
56689          i = this.getChild("seekBar");
56690      i && i.handleMouseDown(e), this.on(t, "mousemove", this.throttledHandleMouseSeek), this.on(t, "touchmove", this.throttledHandleMouseSeek), this.on(t, "mouseup", this.handleMouseUp), this.on(t, "touchend", this.handleMouseUp);
56691    }, t.handleMouseUp = function (e) {
56692      var t = this.el_.ownerDocument,
56693          i = this.getChild("seekBar");
56694      i && i.handleMouseUp(e), this.off(t, "mousemove", this.throttledHandleMouseSeek), this.off(t, "touchmove", this.throttledHandleMouseSeek), this.off(t, "mouseup", this.handleMouseUp), this.off(t, "touchend", this.handleMouseUp);
56695    }, e;
56696  }(Re);
56697
56698  Nn.prototype.options_ = {
56699    children: ["seekBar"]
56700  }, Re.registerComponent("ProgressControl", Nn);
56701
56702  var Rn = function (n) {
56703    function e(e, t) {
56704      var i;
56705      return (i = n.call(this, e, t) || this).on(e, ["enterpictureinpicture", "leavepictureinpicture"], i.handlePictureInPictureChange), h.pictureInPictureEnabled || i.disable(), i;
56706    }
56707
56708    He(e, n);
56709    var t = e.prototype;
56710    return t.buildCSSClass = function () {
56711      return "vjs-picture-in-picture-control " + n.prototype.buildCSSClass.call(this);
56712    }, t.handlePictureInPictureChange = function (e) {
56713      this.player_.isInPictureInPicture() ? this.controlText("Exit Picture-in-Picture") : this.controlText("Picture-in-Picture");
56714    }, t.handleClick = function (e) {
56715      this.player_.isInPictureInPicture() ? this.player_.exitPictureInPicture() : this.player_.requestPictureInPicture();
56716    }, e;
56717  }(dn);
56718
56719  Rn.prototype.controlText_ = "Picture-in-Picture", Re.registerComponent("PictureInPictureToggle", Rn);
56720
56721  var Un = function (n) {
56722    function e(e, t) {
56723      var i;
56724      return (i = n.call(this, e, t) || this).on(e, "fullscreenchange", i.handleFullscreenChange), !1 === h[e.fsApi_.fullscreenEnabled] && i.disable(), i;
56725    }
56726
56727    He(e, n);
56728    var t = e.prototype;
56729    return t.buildCSSClass = function () {
56730      return "vjs-fullscreen-control " + n.prototype.buildCSSClass.call(this);
56731    }, t.handleFullscreenChange = function (e) {
56732      this.player_.isFullscreen() ? this.controlText("Non-Fullscreen") : this.controlText("Fullscreen");
56733    }, t.handleClick = function (e) {
56734      this.player_.isFullscreen() ? this.player_.exitFullscreen() : this.player_.requestFullscreen();
56735    }, e;
56736  }(dn);
56737
56738  Un.prototype.controlText_ = "Fullscreen", Re.registerComponent("FullscreenToggle", Un);
56739
56740  var Mn = function (e) {
56741    function t() {
56742      return e.apply(this, arguments) || this;
56743    }
56744
56745    return He(t, e), t.prototype.createEl = function () {
56746      return e.prototype.createEl.call(this, "div", {
56747        className: "vjs-volume-level",
56748        innerHTML: '<span class="vjs-control-text"></span>'
56749      });
56750    }, t;
56751  }(Re);
56752
56753  Re.registerComponent("VolumeLevel", Mn);
56754
56755  var Bn = function (n) {
56756    function e(e, t) {
56757      var i;
56758      return (i = n.call(this, e, t) || this).on("slideractive", i.updateLastVolume_), i.on(e, "volumechange", i.updateARIAAttributes), e.ready(function () {
56759        return i.updateARIAAttributes();
56760      }), i;
56761    }
56762
56763    He(e, n);
56764    var t = e.prototype;
56765    return t.createEl = function () {
56766      return n.prototype.createEl.call(this, "div", {
56767        className: "vjs-volume-bar vjs-slider-bar"
56768      }, {
56769        "aria-label": this.localize("Volume Level"),
56770        "aria-live": "polite"
56771      });
56772    }, t.handleMouseDown = function (e) {
56773      W(e) && n.prototype.handleMouseDown.call(this, e);
56774    }, t.handleMouseMove = function (e) {
56775      W(e) && (this.checkMuted(), this.player_.volume(this.calculateDistance(e)));
56776    }, t.checkMuted = function () {
56777      this.player_.muted() && this.player_.muted(!1);
56778    }, t.getPercent = function () {
56779      return this.player_.muted() ? 0 : this.player_.volume();
56780    }, t.stepForward = function () {
56781      this.checkMuted(), this.player_.volume(this.player_.volume() + .1);
56782    }, t.stepBack = function () {
56783      this.checkMuted(), this.player_.volume(this.player_.volume() - .1);
56784    }, t.updateARIAAttributes = function (e) {
56785      var t = this.player_.muted() ? 0 : this.volumeAsPercentage_();
56786      this.el_.setAttribute("aria-valuenow", t), this.el_.setAttribute("aria-valuetext", t + "%");
56787    }, t.volumeAsPercentage_ = function () {
56788      return Math.round(100 * this.player_.volume());
56789    }, t.updateLastVolume_ = function () {
56790      var e = this,
56791          t = this.player_.volume();
56792      this.one("sliderinactive", function () {
56793        0 === e.player_.volume() && e.player_.lastVolume_(t);
56794      });
56795    }, e;
56796  }(xn);
56797
56798  Bn.prototype.options_ = {
56799    children: ["volumeLevel"],
56800    barName: "volumeLevel"
56801  }, Bn.prototype.playerEvent = "volumechange", Re.registerComponent("VolumeBar", Bn);
56802
56803  var jn = function (n) {
56804    function e(e, t) {
56805      var i;
56806      return void 0 === t && (t = {}), t.vertical = t.vertical || !1, "undefined" != typeof t.volumeBar && !u(t.volumeBar) || (t.volumeBar = t.volumeBar || {}, t.volumeBar.vertical = t.vertical), i = n.call(this, e, t) || this, function (e, t) {
56807        t.tech_ && !t.tech_.featuresVolumeControl && e.addClass("vjs-hidden"), e.on(t, "loadstart", function () {
56808          t.tech_.featuresVolumeControl ? e.removeClass("vjs-hidden") : e.addClass("vjs-hidden");
56809        });
56810      }(Ue(i), e), i.throttledHandleMouseMove = ve(ge(Ue(i), i.handleMouseMove), 30), i.on("mousedown", i.handleMouseDown), i.on("touchstart", i.handleMouseDown), i.on(i.volumeBar, ["focus", "slideractive"], function () {
56811        i.volumeBar.addClass("vjs-slider-active"), i.addClass("vjs-slider-active"), i.trigger("slideractive");
56812      }), i.on(i.volumeBar, ["blur", "sliderinactive"], function () {
56813        i.volumeBar.removeClass("vjs-slider-active"), i.removeClass("vjs-slider-active"), i.trigger("sliderinactive");
56814      }), i;
56815    }
56816
56817    He(e, n);
56818    var t = e.prototype;
56819    return t.createEl = function () {
56820      var e = "vjs-volume-horizontal";
56821      return this.options_.vertical && (e = "vjs-volume-vertical"), n.prototype.createEl.call(this, "div", {
56822        className: "vjs-volume-control vjs-control " + e
56823      });
56824    }, t.handleMouseDown = function (e) {
56825      var t = this.el_.ownerDocument;
56826      this.on(t, "mousemove", this.throttledHandleMouseMove), this.on(t, "touchmove", this.throttledHandleMouseMove), this.on(t, "mouseup", this.handleMouseUp), this.on(t, "touchend", this.handleMouseUp);
56827    }, t.handleMouseUp = function (e) {
56828      var t = this.el_.ownerDocument;
56829      this.off(t, "mousemove", this.throttledHandleMouseMove), this.off(t, "touchmove", this.throttledHandleMouseMove), this.off(t, "mouseup", this.handleMouseUp), this.off(t, "touchend", this.handleMouseUp);
56830    }, t.handleMouseMove = function (e) {
56831      this.volumeBar.handleMouseMove(e);
56832    }, e;
56833  }(Re);
56834
56835  jn.prototype.options_ = {
56836    children: ["volumeBar"]
56837  }, Re.registerComponent("VolumeControl", jn);
56838
56839  var Fn = function (n) {
56840    function e(e, t) {
56841      var i;
56842      return i = n.call(this, e, t) || this, function (e, t) {
56843        t.tech_ && !t.tech_.featuresMuteControl && e.addClass("vjs-hidden"), e.on(t, "loadstart", function () {
56844          t.tech_.featuresMuteControl ? e.removeClass("vjs-hidden") : e.addClass("vjs-hidden");
56845        });
56846      }(Ue(i), e), i.on(e, ["loadstart", "volumechange"], i.update), i;
56847    }
56848
56849    He(e, n);
56850    var t = e.prototype;
56851    return t.buildCSSClass = function () {
56852      return "vjs-mute-control " + n.prototype.buildCSSClass.call(this);
56853    }, t.handleClick = function (e) {
56854      var t = this.player_.volume(),
56855          i = this.player_.lastVolume_();
56856
56857      if (0 === t) {
56858        var n = i < .1 ? .1 : i;
56859        this.player_.volume(n), this.player_.muted(!1);
56860      } else this.player_.muted(!this.player_.muted());
56861    }, t.update = function (e) {
56862      this.updateIcon_(), this.updateControlText_();
56863    }, t.updateIcon_ = function () {
56864      var e = this.player_.volume(),
56865          t = 3;
56866      at && this.player_.tech_ && this.player_.tech_.el_ && this.player_.muted(this.player_.tech_.el_.muted), 0 === e || this.player_.muted() ? t = 0 : e < .33 ? t = 1 : e < .67 && (t = 2);
56867
56868      for (var i = 0; i < 4; i++) {
56869        x(this.el_, "vjs-vol-" + i);
56870      }
56871
56872      E(this.el_, "vjs-vol-" + t);
56873    }, t.updateControlText_ = function () {
56874      var e = this.player_.muted() || 0 === this.player_.volume() ? "Unmute" : "Mute";
56875      this.controlText() !== e && this.controlText(e);
56876    }, e;
56877  }(dn);
56878
56879  Fn.prototype.controlText_ = "Mute", Re.registerComponent("MuteToggle", Fn);
56880
56881  var Hn = function (n) {
56882    function e(e, t) {
56883      var i;
56884      return void 0 === t && (t = {}), "undefined" != typeof t.inline ? t.inline = t.inline : t.inline = !0, "undefined" != typeof t.volumeControl && !u(t.volumeControl) || (t.volumeControl = t.volumeControl || {}, t.volumeControl.vertical = !t.inline), (i = n.call(this, e, t) || this).on(e, ["loadstart"], i.volumePanelState_), i.on(i.muteToggle, "keyup", i.handleKeyPress), i.on(i.volumeControl, "keyup", i.handleVolumeControlKeyUp), i.on("keydown", i.handleKeyPress), i.on("mouseover", i.handleMouseOver), i.on("mouseout", i.handleMouseOut), i.on(i.volumeControl, ["slideractive"], i.sliderActive_), i.on(i.volumeControl, ["sliderinactive"], i.sliderInactive_), i;
56885    }
56886
56887    He(e, n);
56888    var t = e.prototype;
56889    return t.sliderActive_ = function () {
56890      this.addClass("vjs-slider-active");
56891    }, t.sliderInactive_ = function () {
56892      this.removeClass("vjs-slider-active");
56893    }, t.volumePanelState_ = function () {
56894      this.volumeControl.hasClass("vjs-hidden") && this.muteToggle.hasClass("vjs-hidden") && this.addClass("vjs-hidden"), this.volumeControl.hasClass("vjs-hidden") && !this.muteToggle.hasClass("vjs-hidden") && this.addClass("vjs-mute-toggle-only");
56895    }, t.createEl = function () {
56896      var e = "vjs-volume-panel-horizontal";
56897      return this.options_.inline || (e = "vjs-volume-panel-vertical"), n.prototype.createEl.call(this, "div", {
56898        className: "vjs-volume-panel vjs-control " + e
56899      });
56900    }, t.dispose = function () {
56901      this.handleMouseOut(), n.prototype.dispose.call(this);
56902    }, t.handleVolumeControlKeyUp = function (e) {
56903      xt.isEventKey(e, "Esc") && this.muteToggle.focus();
56904    }, t.handleMouseOver = function (e) {
56905      this.addClass("vjs-hover"), he(h, "keyup", ge(this, this.handleKeyPress));
56906    }, t.handleMouseOut = function (e) {
56907      this.removeClass("vjs-hover"), de(h, "keyup", ge(this, this.handleKeyPress));
56908    }, t.handleKeyPress = function (e) {
56909      xt.isEventKey(e, "Esc") && this.handleMouseOut();
56910    }, e;
56911  }(Re);
56912
56913  Hn.prototype.options_ = {
56914    children: ["muteToggle", "volumeControl"]
56915  }, Re.registerComponent("VolumePanel", Hn);
56916
56917  var Vn = function (n) {
56918    function e(e, t) {
56919      var i;
56920      return i = n.call(this, e, t) || this, t && (i.menuButton_ = t.menuButton), i.focusedChild_ = -1, i.on("keydown", i.handleKeyDown), i.boundHandleBlur_ = ge(Ue(i), i.handleBlur), i.boundHandleTapClick_ = ge(Ue(i), i.handleTapClick), i;
56921    }
56922
56923    He(e, n);
56924    var t = e.prototype;
56925    return t.addEventListenerForItem = function (e) {
56926      e instanceof Re && (this.on(e, "blur", this.boundHandleBlur_), this.on(e, ["tap", "click"], this.boundHandleTapClick_));
56927    }, t.removeEventListenerForItem = function (e) {
56928      e instanceof Re && (this.off(e, "blur", this.boundHandleBlur_), this.off(e, ["tap", "click"], this.boundHandleTapClick_));
56929    }, t.removeChild = function (e) {
56930      "string" == typeof e && (e = this.getChild(e)), this.removeEventListenerForItem(e), n.prototype.removeChild.call(this, e);
56931    }, t.addItem = function (e) {
56932      var t = this.addChild(e);
56933      t && this.addEventListenerForItem(t);
56934    }, t.createEl = function () {
56935      var e = this.options_.contentElType || "ul";
56936      this.contentEl_ = S(e, {
56937        className: "vjs-menu-content"
56938      }), this.contentEl_.setAttribute("role", "menu");
56939      var t = n.prototype.createEl.call(this, "div", {
56940        append: this.contentEl_,
56941        className: "vjs-menu"
56942      });
56943      return t.appendChild(this.contentEl_), he(t, "click", function (e) {
56944        e.preventDefault(), e.stopImmediatePropagation();
56945      }), t;
56946    }, t.dispose = function () {
56947      this.contentEl_ = null, this.boundHandleBlur_ = null, this.boundHandleTapClick_ = null, n.prototype.dispose.call(this);
56948    }, t.handleBlur = function (e) {
56949      var t = e.relatedTarget || h.activeElement;
56950
56951      if (!this.children().some(function (e) {
56952        return e.el() === t;
56953      })) {
56954        var i = this.menuButton_;
56955        i && i.buttonPressed_ && t !== i.el().firstChild && i.unpressButton();
56956      }
56957    }, t.handleTapClick = function (t) {
56958      if (this.menuButton_) {
56959        this.menuButton_.unpressButton();
56960        var e = this.children();
56961        if (!Array.isArray(e)) return;
56962        var i = e.filter(function (e) {
56963          return e.el() === t.target;
56964        })[0];
56965        if (!i) return;
56966        "CaptionSettingsMenuItem" !== i.name() && this.menuButton_.focus();
56967      }
56968    }, t.handleKeyDown = function (e) {
56969      xt.isEventKey(e, "Left") || xt.isEventKey(e, "Down") ? (e.preventDefault(), e.stopPropagation(), this.stepForward()) : (xt.isEventKey(e, "Right") || xt.isEventKey(e, "Up")) && (e.preventDefault(), e.stopPropagation(), this.stepBack());
56970    }, t.stepForward = function () {
56971      var e = 0;
56972      void 0 !== this.focusedChild_ && (e = this.focusedChild_ + 1), this.focus(e);
56973    }, t.stepBack = function () {
56974      var e = 0;
56975      void 0 !== this.focusedChild_ && (e = this.focusedChild_ - 1), this.focus(e);
56976    }, t.focus = function (e) {
56977      void 0 === e && (e = 0);
56978      var t = this.children().slice();
56979      t.length && t[0].className && /vjs-menu-title/.test(t[0].className) && t.shift(), 0 < t.length && (e < 0 ? e = 0 : e >= t.length && (e = t.length - 1), t[this.focusedChild_ = e].el_.focus());
56980    }, e;
56981  }(Re);
56982
56983  Re.registerComponent("Menu", Vn);
56984
56985  var qn = function (r) {
56986    function e(e, t) {
56987      var i;
56988      void 0 === t && (t = {}), (i = r.call(this, e, t) || this).menuButton_ = new dn(e, t), i.menuButton_.controlText(i.controlText_), i.menuButton_.el_.setAttribute("aria-haspopup", "true");
56989      var n = dn.prototype.buildCSSClass();
56990      return i.menuButton_.el_.className = i.buildCSSClass() + " " + n, i.menuButton_.removeClass("vjs-control"), i.addChild(i.menuButton_), i.update(), i.enabled_ = !0, i.on(i.menuButton_, "tap", i.handleClick), i.on(i.menuButton_, "click", i.handleClick), i.on(i.menuButton_, "keydown", i.handleKeyDown), i.on(i.menuButton_, "mouseenter", function () {
56991        i.addClass("vjs-hover"), i.menu.show(), he(h, "keyup", ge(Ue(i), i.handleMenuKeyUp));
56992      }), i.on("mouseleave", i.handleMouseLeave), i.on("keydown", i.handleSubmenuKeyDown), i;
56993    }
56994
56995    He(e, r);
56996    var t = e.prototype;
56997    return t.update = function () {
56998      var e = this.createMenu();
56999      this.menu && (this.menu.dispose(), this.removeChild(this.menu)), this.menu = e, this.addChild(e), this.buttonPressed_ = !1, this.menuButton_.el_.setAttribute("aria-expanded", "false"), this.items && this.items.length <= this.hideThreshold_ ? this.hide() : this.show();
57000    }, t.createMenu = function () {
57001      var e = new Vn(this.player_, {
57002        menuButton: this
57003      });
57004
57005      if (this.hideThreshold_ = 0, this.options_.title) {
57006        var t = S("li", {
57007          className: "vjs-menu-title",
57008          innerHTML: De(this.options_.title),
57009          tabIndex: -1
57010        });
57011        this.hideThreshold_ += 1;
57012        var i = new Re(this.player_, {
57013          el: t
57014        });
57015        e.addItem(i);
57016      }
57017
57018      if (this.items = this.createItems(), this.items) for (var n = 0; n < this.items.length; n++) {
57019        e.addItem(this.items[n]);
57020      }
57021      return e;
57022    }, t.createItems = function () {}, t.createEl = function () {
57023      return r.prototype.createEl.call(this, "div", {
57024        className: this.buildWrapperCSSClass()
57025      }, {});
57026    }, t.buildWrapperCSSClass = function () {
57027      var e = "vjs-menu-button";
57028      return !0 === this.options_.inline ? e += "-inline" : e += "-popup", "vjs-menu-button " + e + " " + dn.prototype.buildCSSClass() + " " + r.prototype.buildCSSClass.call(this);
57029    }, t.buildCSSClass = function () {
57030      var e = "vjs-menu-button";
57031      return !0 === this.options_.inline ? e += "-inline" : e += "-popup", "vjs-menu-button " + e + " " + r.prototype.buildCSSClass.call(this);
57032    }, t.controlText = function (e, t) {
57033      return void 0 === t && (t = this.menuButton_.el()), this.menuButton_.controlText(e, t);
57034    }, t.dispose = function () {
57035      this.handleMouseLeave(), r.prototype.dispose.call(this);
57036    }, t.handleClick = function (e) {
57037      this.buttonPressed_ ? this.unpressButton() : this.pressButton();
57038    }, t.handleMouseLeave = function (e) {
57039      this.removeClass("vjs-hover"), de(h, "keyup", ge(this, this.handleMenuKeyUp));
57040    }, t.focus = function () {
57041      this.menuButton_.focus();
57042    }, t.blur = function () {
57043      this.menuButton_.blur();
57044    }, t.handleKeyDown = function (e) {
57045      xt.isEventKey(e, "Esc") || xt.isEventKey(e, "Tab") ? (this.buttonPressed_ && this.unpressButton(), xt.isEventKey(e, "Tab") || (e.preventDefault(), this.menuButton_.focus())) : (xt.isEventKey(e, "Up") || xt.isEventKey(e, "Down")) && (this.buttonPressed_ || (e.preventDefault(), this.pressButton()));
57046    }, t.handleMenuKeyUp = function (e) {
57047      (xt.isEventKey(e, "Esc") || xt.isEventKey(e, "Tab")) && this.removeClass("vjs-hover");
57048    }, t.handleSubmenuKeyPress = function (e) {
57049      this.handleSubmenuKeyDown(e);
57050    }, t.handleSubmenuKeyDown = function (e) {
57051      (xt.isEventKey(e, "Esc") || xt.isEventKey(e, "Tab")) && (this.buttonPressed_ && this.unpressButton(), xt.isEventKey(e, "Tab") || (e.preventDefault(), this.menuButton_.focus()));
57052    }, t.pressButton = function () {
57053      if (this.enabled_) {
57054        if (this.buttonPressed_ = !0, this.menu.show(), this.menu.lockShowing(), this.menuButton_.el_.setAttribute("aria-expanded", "true"), at && b()) return;
57055        this.menu.focus();
57056      }
57057    }, t.unpressButton = function () {
57058      this.enabled_ && (this.buttonPressed_ = !1, this.menu.unlockShowing(), this.menu.hide(), this.menuButton_.el_.setAttribute("aria-expanded", "false"));
57059    }, t.disable = function () {
57060      this.unpressButton(), this.enabled_ = !1, this.addClass("vjs-disabled"), this.menuButton_.disable();
57061    }, t.enable = function () {
57062      this.enabled_ = !0, this.removeClass("vjs-disabled"), this.menuButton_.enable();
57063    }, e;
57064  }(Re);
57065
57066  Re.registerComponent("MenuButton", qn);
57067
57068  var Wn = function (s) {
57069    function e(e, t) {
57070      var i,
57071          n = t.tracks;
57072      if ((i = s.call(this, e, t) || this).items.length <= 1 && i.hide(), !n) return Ue(i);
57073      var r = ge(Ue(i), i.update);
57074      return n.addEventListener("removetrack", r), n.addEventListener("addtrack", r), i.player_.on("ready", r), i.player_.on("dispose", function () {
57075        n.removeEventListener("removetrack", r), n.removeEventListener("addtrack", r);
57076      }), i;
57077    }
57078
57079    return He(e, s), e;
57080  }(qn);
57081
57082  Re.registerComponent("TrackButton", Wn);
57083
57084  var zn = ["Tab", "Esc", "Up", "Down", "Right", "Left"],
57085      Gn = function (n) {
57086    function e(e, t) {
57087      var i;
57088      return (i = n.call(this, e, t) || this).selectable = t.selectable, i.isSelected_ = t.selected || !1, i.multiSelectable = t.multiSelectable, i.selected(i.isSelected_), i.selectable ? i.multiSelectable ? i.el_.setAttribute("role", "menuitemcheckbox") : i.el_.setAttribute("role", "menuitemradio") : i.el_.setAttribute("role", "menuitem"), i;
57089    }
57090
57091    He(e, n);
57092    var t = e.prototype;
57093    return t.createEl = function (e, t, i) {
57094      return this.nonIconControl = !0, n.prototype.createEl.call(this, "li", m({
57095        className: "vjs-menu-item",
57096        innerHTML: '<span class="vjs-menu-item-text">' + this.localize(this.options_.label) + "</span>",
57097        tabIndex: -1
57098      }, t), i);
57099    }, t.handleKeyDown = function (t) {
57100      zn.some(function (e) {
57101        return xt.isEventKey(t, e);
57102      }) || n.prototype.handleKeyDown.call(this, t);
57103    }, t.handleClick = function (e) {
57104      this.selected(!0);
57105    }, t.selected = function (e) {
57106      this.selectable && (e ? (this.addClass("vjs-selected"), this.el_.setAttribute("aria-checked", "true"), this.controlText(", selected"), this.isSelected_ = !0) : (this.removeClass("vjs-selected"), this.el_.setAttribute("aria-checked", "false"), this.controlText(""), this.isSelected_ = !1));
57107    }, e;
57108  }(rn);
57109
57110  Re.registerComponent("MenuItem", Gn);
57111
57112  var Xn = function (u) {
57113    function e(e, t) {
57114      var n,
57115          i = t.track,
57116          r = e.textTracks();
57117      t.label = i.label || i.language || "Unknown", t.selected = "showing" === i.mode, (n = u.call(this, e, t) || this).track = i, n.kinds = (t.kinds || [t.kind || n.track.kind]).filter(Boolean);
57118
57119      function s() {
57120        for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
57121          t[i] = arguments[i];
57122        }
57123
57124        n.handleTracksChange.apply(Ue(n), t);
57125      }
57126
57127      function a() {
57128        for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
57129          t[i] = arguments[i];
57130        }
57131
57132        n.handleSelectedLanguageChange.apply(Ue(n), t);
57133      }
57134
57135      var o;
57136      e.on(["loadstart", "texttrackchange"], s), r.addEventListener("change", s), r.addEventListener("selectedlanguagechange", a), n.on("dispose", function () {
57137        e.off(["loadstart", "texttrackchange"], s), r.removeEventListener("change", s), r.removeEventListener("selectedlanguagechange", a);
57138      }), void 0 === r.onchange && n.on(["tap", "click"], function () {
57139        if ("object" != _typeof(y.Event)) try {
57140          o = new y.Event("change");
57141        } catch (e) {}
57142        o || (o = h.createEvent("Event")).initEvent("change", !0, !0), r.dispatchEvent(o);
57143      });
57144      return n.handleTracksChange(), n;
57145    }
57146
57147    He(e, u);
57148    var t = e.prototype;
57149    return t.handleClick = function (e) {
57150      var t = this.track,
57151          i = this.player_.textTracks();
57152      if (u.prototype.handleClick.call(this, e), i) for (var n = 0; n < i.length; n++) {
57153        var r = i[n];
57154        -1 !== this.kinds.indexOf(r.kind) && (r === t ? "showing" !== r.mode && (r.mode = "showing") : "disabled" !== r.mode && (r.mode = "disabled"));
57155      }
57156    }, t.handleTracksChange = function (e) {
57157      var t = "showing" === this.track.mode;
57158      t !== this.isSelected_ && this.selected(t);
57159    }, t.handleSelectedLanguageChange = function (e) {
57160      if ("showing" === this.track.mode) {
57161        var t = this.player_.cache_.selectedLanguage;
57162        if (t && t.enabled && t.language === this.track.language && t.kind !== this.track.kind) return;
57163        this.player_.cache_.selectedLanguage = {
57164          enabled: !0,
57165          language: this.track.language,
57166          kind: this.track.kind
57167        };
57168      }
57169    }, t.dispose = function () {
57170      this.track = null, u.prototype.dispose.call(this);
57171    }, e;
57172  }(Gn);
57173
57174  Re.registerComponent("TextTrackMenuItem", Xn);
57175
57176  var Kn = function (i) {
57177    function e(e, t) {
57178      return t.track = {
57179        player: e,
57180        kind: t.kind,
57181        kinds: t.kinds,
57182        "default": !1,
57183        mode: "disabled"
57184      }, t.kinds || (t.kinds = [t.kind]), t.label ? t.track.label = t.label : t.track.label = t.kinds.join(" and ") + " off", t.selectable = !0, t.multiSelectable = !1, i.call(this, e, t) || this;
57185    }
57186
57187    He(e, i);
57188    var t = e.prototype;
57189    return t.handleTracksChange = function (e) {
57190      for (var t = this.player().textTracks(), i = !0, n = 0, r = t.length; n < r; n++) {
57191        var s = t[n];
57192
57193        if (-1 < this.options_.kinds.indexOf(s.kind) && "showing" === s.mode) {
57194          i = !1;
57195          break;
57196        }
57197      }
57198
57199      i !== this.isSelected_ && this.selected(i);
57200    }, t.handleSelectedLanguageChange = function (e) {
57201      for (var t = this.player().textTracks(), i = !0, n = 0, r = t.length; n < r; n++) {
57202        var s = t[n];
57203
57204        if (-1 < ["captions", "descriptions", "subtitles"].indexOf(s.kind) && "showing" === s.mode) {
57205          i = !1;
57206          break;
57207        }
57208      }
57209
57210      i && (this.player_.cache_.selectedLanguage = {
57211        enabled: !1
57212      });
57213    }, e;
57214  }(Xn);
57215
57216  Re.registerComponent("OffTextTrackMenuItem", Kn);
57217
57218  var Yn = function (i) {
57219    function e(e, t) {
57220      return void 0 === t && (t = {}), t.tracks = e.textTracks(), i.call(this, e, t) || this;
57221    }
57222
57223    return He(e, i), e.prototype.createItems = function (e, t) {
57224      var i;
57225      void 0 === e && (e = []), void 0 === t && (t = Xn), this.label_ && (i = this.label_ + " off"), e.push(new Kn(this.player_, {
57226        kinds: this.kinds_,
57227        kind: this.kind_,
57228        label: i
57229      })), this.hideThreshold_ += 1;
57230      var n = this.player_.textTracks();
57231      Array.isArray(this.kinds_) || (this.kinds_ = [this.kind_]);
57232
57233      for (var r = 0; r < n.length; r++) {
57234        var s = n[r];
57235
57236        if (-1 < this.kinds_.indexOf(s.kind)) {
57237          var a = new t(this.player_, {
57238            track: s,
57239            kinds: this.kinds_,
57240            kind: this.kind_,
57241            selectable: !0,
57242            multiSelectable: !1
57243          });
57244          a.addClass("vjs-" + s.kind + "-menu-item"), e.push(a);
57245        }
57246      }
57247
57248      return e;
57249    }, e;
57250  }(Wn);
57251
57252  Re.registerComponent("TextTrackButton", Yn);
57253
57254  var $n = function (a) {
57255    function e(e, t) {
57256      var i,
57257          n = t.track,
57258          r = t.cue,
57259          s = e.currentTime();
57260      return t.selectable = !0, t.multiSelectable = !1, t.label = r.text, t.selected = r.startTime <= s && s < r.endTime, (i = a.call(this, e, t) || this).track = n, i.cue = r, n.addEventListener("cuechange", ge(Ue(i), i.update)), i;
57261    }
57262
57263    He(e, a);
57264    var t = e.prototype;
57265    return t.handleClick = function (e) {
57266      a.prototype.handleClick.call(this), this.player_.currentTime(this.cue.startTime), this.update(this.cue.startTime);
57267    }, t.update = function (e) {
57268      var t = this.cue,
57269          i = this.player_.currentTime();
57270      this.selected(t.startTime <= i && i < t.endTime);
57271    }, e;
57272  }(Gn);
57273
57274  Re.registerComponent("ChaptersTrackMenuItem", $n);
57275
57276  var Qn = function (n) {
57277    function e(e, t, i) {
57278      return n.call(this, e, t, i) || this;
57279    }
57280
57281    He(e, n);
57282    var t = e.prototype;
57283    return t.buildCSSClass = function () {
57284      return "vjs-chapters-button " + n.prototype.buildCSSClass.call(this);
57285    }, t.buildWrapperCSSClass = function () {
57286      return "vjs-chapters-button " + n.prototype.buildWrapperCSSClass.call(this);
57287    }, t.update = function (e) {
57288      this.track_ && (!e || "addtrack" !== e.type && "removetrack" !== e.type) || this.setTrack(this.findChaptersTrack()), n.prototype.update.call(this);
57289    }, t.setTrack = function (e) {
57290      if (this.track_ !== e) {
57291        if (this.updateHandler_ || (this.updateHandler_ = this.update.bind(this)), this.track_) {
57292          var t = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_);
57293          t && t.removeEventListener("load", this.updateHandler_), this.track_ = null;
57294        }
57295
57296        if (this.track_ = e, this.track_) {
57297          this.track_.mode = "hidden";
57298          var i = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_);
57299          i && i.addEventListener("load", this.updateHandler_);
57300        }
57301      }
57302    }, t.findChaptersTrack = function () {
57303      for (var e = this.player_.textTracks() || [], t = e.length - 1; 0 <= t; t--) {
57304        var i = e[t];
57305        if (i.kind === this.kind_) return i;
57306      }
57307    }, t.getMenuCaption = function () {
57308      return this.track_ && this.track_.label ? this.track_.label : this.localize(De(this.kind_));
57309    }, t.createMenu = function () {
57310      return this.options_.title = this.getMenuCaption(), n.prototype.createMenu.call(this);
57311    }, t.createItems = function () {
57312      var e = [];
57313      if (!this.track_) return e;
57314      var t = this.track_.cues;
57315      if (!t) return e;
57316
57317      for (var i = 0, n = t.length; i < n; i++) {
57318        var r = t[i],
57319            s = new $n(this.player_, {
57320          track: this.track_,
57321          cue: r
57322        });
57323        e.push(s);
57324      }
57325
57326      return e;
57327    }, e;
57328  }(Yn);
57329
57330  Qn.prototype.kind_ = "chapters", Qn.prototype.controlText_ = "Chapters", Re.registerComponent("ChaptersButton", Qn);
57331
57332  var Jn = function (a) {
57333    function e(e, t, i) {
57334      var n;
57335      n = a.call(this, e, t, i) || this;
57336      var r = e.textTracks(),
57337          s = ge(Ue(n), n.handleTracksChange);
57338      return r.addEventListener("change", s), n.on("dispose", function () {
57339        r.removeEventListener("change", s);
57340      }), n;
57341    }
57342
57343    He(e, a);
57344    var t = e.prototype;
57345    return t.handleTracksChange = function (e) {
57346      for (var t = this.player().textTracks(), i = !1, n = 0, r = t.length; n < r; n++) {
57347        var s = t[n];
57348
57349        if (s.kind !== this.kind_ && "showing" === s.mode) {
57350          i = !0;
57351          break;
57352        }
57353      }
57354
57355      i ? this.disable() : this.enable();
57356    }, t.buildCSSClass = function () {
57357      return "vjs-descriptions-button " + a.prototype.buildCSSClass.call(this);
57358    }, t.buildWrapperCSSClass = function () {
57359      return "vjs-descriptions-button " + a.prototype.buildWrapperCSSClass.call(this);
57360    }, e;
57361  }(Yn);
57362
57363  Jn.prototype.kind_ = "descriptions", Jn.prototype.controlText_ = "Descriptions", Re.registerComponent("DescriptionsButton", Jn);
57364
57365  var Zn = function (n) {
57366    function e(e, t, i) {
57367      return n.call(this, e, t, i) || this;
57368    }
57369
57370    He(e, n);
57371    var t = e.prototype;
57372    return t.buildCSSClass = function () {
57373      return "vjs-subtitles-button " + n.prototype.buildCSSClass.call(this);
57374    }, t.buildWrapperCSSClass = function () {
57375      return "vjs-subtitles-button " + n.prototype.buildWrapperCSSClass.call(this);
57376    }, e;
57377  }(Yn);
57378
57379  Zn.prototype.kind_ = "subtitles", Zn.prototype.controlText_ = "Subtitles", Re.registerComponent("SubtitlesButton", Zn);
57380
57381  var er = function (n) {
57382    function e(e, t) {
57383      var i;
57384      return t.track = {
57385        player: e,
57386        kind: t.kind,
57387        label: t.kind + " settings",
57388        selectable: !1,
57389        "default": !1,
57390        mode: "disabled"
57391      }, t.selectable = !1, t.name = "CaptionSettingsMenuItem", (i = n.call(this, e, t) || this).addClass("vjs-texttrack-settings"), i.controlText(", opens " + t.kind + " settings dialog"), i;
57392    }
57393
57394    return He(e, n), e.prototype.handleClick = function (e) {
57395      this.player().getChild("textTrackSettings").open();
57396    }, e;
57397  }(Xn);
57398
57399  Re.registerComponent("CaptionSettingsMenuItem", er);
57400
57401  var tr = function (n) {
57402    function e(e, t, i) {
57403      return n.call(this, e, t, i) || this;
57404    }
57405
57406    He(e, n);
57407    var t = e.prototype;
57408    return t.buildCSSClass = function () {
57409      return "vjs-captions-button " + n.prototype.buildCSSClass.call(this);
57410    }, t.buildWrapperCSSClass = function () {
57411      return "vjs-captions-button " + n.prototype.buildWrapperCSSClass.call(this);
57412    }, t.createItems = function () {
57413      var e = [];
57414      return this.player().tech_ && this.player().tech_.featuresNativeTextTracks || !this.player().getChild("textTrackSettings") || (e.push(new er(this.player_, {
57415        kind: this.kind_
57416      })), this.hideThreshold_ += 1), n.prototype.createItems.call(this, e);
57417    }, e;
57418  }(Yn);
57419
57420  tr.prototype.kind_ = "captions", tr.prototype.controlText_ = "Captions", Re.registerComponent("CaptionsButton", tr);
57421
57422  var ir = function (r) {
57423    function e() {
57424      return r.apply(this, arguments) || this;
57425    }
57426
57427    return He(e, r), e.prototype.createEl = function (e, t, i) {
57428      var n = '<span class="vjs-menu-item-text">' + this.localize(this.options_.label);
57429      return "captions" === this.options_.track.kind && (n += '\n        <span aria-hidden="true" class="vjs-icon-placeholder"></span>\n        <span class="vjs-control-text"> ' + this.localize("Captions") + "</span>\n      "), n += "</span>", r.prototype.createEl.call(this, e, m({
57430        innerHTML: n
57431      }, t), i);
57432    }, e;
57433  }(Xn);
57434
57435  Re.registerComponent("SubsCapsMenuItem", ir);
57436
57437  var nr = function (n) {
57438    function e(e, t) {
57439      var i;
57440      return void 0 === t && (t = {}), (i = n.call(this, e, t) || this).label_ = "subtitles", -1 < ["en", "en-us", "en-ca", "fr-ca"].indexOf(i.player_.language_) && (i.label_ = "captions"), i.menuButton_.controlText(De(i.label_)), i;
57441    }
57442
57443    He(e, n);
57444    var t = e.prototype;
57445    return t.buildCSSClass = function () {
57446      return "vjs-subs-caps-button " + n.prototype.buildCSSClass.call(this);
57447    }, t.buildWrapperCSSClass = function () {
57448      return "vjs-subs-caps-button " + n.prototype.buildWrapperCSSClass.call(this);
57449    }, t.createItems = function () {
57450      var e = [];
57451      return this.player().tech_ && this.player().tech_.featuresNativeTextTracks || !this.player().getChild("textTrackSettings") || (e.push(new er(this.player_, {
57452        kind: this.label_
57453      })), this.hideThreshold_ += 1), e = n.prototype.createItems.call(this, e, ir);
57454    }, e;
57455  }(Yn);
57456
57457  nr.prototype.kinds_ = ["captions", "subtitles"], nr.prototype.controlText_ = "Subtitles", Re.registerComponent("SubsCapsButton", nr);
57458
57459  var rr = function (a) {
57460    function e(e, t) {
57461      var n,
57462          i = t.track,
57463          r = e.audioTracks();
57464      t.label = i.label || i.language || "Unknown", t.selected = i.enabled, (n = a.call(this, e, t) || this).track = i, n.addClass("vjs-" + i.kind + "-menu-item");
57465
57466      function s() {
57467        for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
57468          t[i] = arguments[i];
57469        }
57470
57471        n.handleTracksChange.apply(Ue(n), t);
57472      }
57473
57474      return r.addEventListener("change", s), n.on("dispose", function () {
57475        r.removeEventListener("change", s);
57476      }), n;
57477    }
57478
57479    He(e, a);
57480    var t = e.prototype;
57481    return t.createEl = function (e, t, i) {
57482      var n = '<span class="vjs-menu-item-text">' + this.localize(this.options_.label);
57483      return "main-desc" === this.options_.track.kind && (n += '\n        <span aria-hidden="true" class="vjs-icon-placeholder"></span>\n        <span class="vjs-control-text"> ' + this.localize("Descriptions") + "</span>\n      "), n += "</span>", a.prototype.createEl.call(this, e, m({
57484        innerHTML: n
57485      }, t), i);
57486    }, t.handleClick = function (e) {
57487      var t = this.player_.audioTracks();
57488      a.prototype.handleClick.call(this, e);
57489
57490      for (var i = 0; i < t.length; i++) {
57491        var n = t[i];
57492        n.enabled = n === this.track;
57493      }
57494    }, t.handleTracksChange = function (e) {
57495      this.selected(this.track.enabled);
57496    }, e;
57497  }(Gn);
57498
57499  Re.registerComponent("AudioTrackMenuItem", rr);
57500
57501  var sr = function (i) {
57502    function e(e, t) {
57503      return void 0 === t && (t = {}), t.tracks = e.audioTracks(), i.call(this, e, t) || this;
57504    }
57505
57506    He(e, i);
57507    var t = e.prototype;
57508    return t.buildCSSClass = function () {
57509      return "vjs-audio-button " + i.prototype.buildCSSClass.call(this);
57510    }, t.buildWrapperCSSClass = function () {
57511      return "vjs-audio-button " + i.prototype.buildWrapperCSSClass.call(this);
57512    }, t.createItems = function (e) {
57513      void 0 === e && (e = []), this.hideThreshold_ = 1;
57514
57515      for (var t = this.player_.audioTracks(), i = 0; i < t.length; i++) {
57516        var n = t[i];
57517        e.push(new rr(this.player_, {
57518          track: n,
57519          selectable: !0,
57520          multiSelectable: !1
57521        }));
57522      }
57523
57524      return e;
57525    }, e;
57526  }(Wn);
57527
57528  sr.prototype.controlText_ = "Audio Track", Re.registerComponent("AudioTrackButton", sr);
57529
57530  var ar = function (s) {
57531    function e(e, t) {
57532      var i,
57533          n = t.rate,
57534          r = parseFloat(n, 10);
57535      return t.label = n, t.selected = 1 === r, t.selectable = !0, t.multiSelectable = !1, (i = s.call(this, e, t) || this).label = n, i.rate = r, i.on(e, "ratechange", i.update), i;
57536    }
57537
57538    He(e, s);
57539    var t = e.prototype;
57540    return t.handleClick = function (e) {
57541      s.prototype.handleClick.call(this), this.player().playbackRate(this.rate);
57542    }, t.update = function (e) {
57543      this.selected(this.player().playbackRate() === this.rate);
57544    }, e;
57545  }(Gn);
57546
57547  ar.prototype.contentElType = "button", Re.registerComponent("PlaybackRateMenuItem", ar);
57548
57549  var or = function (n) {
57550    function e(e, t) {
57551      var i;
57552      return (i = n.call(this, e, t) || this).updateVisibility(), i.updateLabel(), i.on(e, "loadstart", i.updateVisibility), i.on(e, "ratechange", i.updateLabel), i;
57553    }
57554
57555    He(e, n);
57556    var t = e.prototype;
57557    return t.createEl = function () {
57558      var e = n.prototype.createEl.call(this);
57559      return this.labelEl_ = S("div", {
57560        className: "vjs-playback-rate-value",
57561        innerHTML: "1x"
57562      }), e.appendChild(this.labelEl_), e;
57563    }, t.dispose = function () {
57564      this.labelEl_ = null, n.prototype.dispose.call(this);
57565    }, t.buildCSSClass = function () {
57566      return "vjs-playback-rate " + n.prototype.buildCSSClass.call(this);
57567    }, t.buildWrapperCSSClass = function () {
57568      return "vjs-playback-rate " + n.prototype.buildWrapperCSSClass.call(this);
57569    }, t.createMenu = function () {
57570      var e = new Vn(this.player()),
57571          t = this.playbackRates();
57572      if (t) for (var i = t.length - 1; 0 <= i; i--) {
57573        e.addChild(new ar(this.player(), {
57574          rate: t[i] + "x"
57575        }));
57576      }
57577      return e;
57578    }, t.updateARIAAttributes = function () {
57579      this.el().setAttribute("aria-valuenow", this.player().playbackRate());
57580    }, t.handleClick = function (e) {
57581      for (var t = this.player().playbackRate(), i = this.playbackRates(), n = i[0], r = 0; r < i.length; r++) {
57582        if (i[r] > t) {
57583          n = i[r];
57584          break;
57585        }
57586      }
57587
57588      this.player().playbackRate(n);
57589    }, t.playbackRates = function () {
57590      return this.options_.playbackRates || this.options_.playerOptions && this.options_.playerOptions.playbackRates;
57591    }, t.playbackRateSupported = function () {
57592      return this.player().tech_ && this.player().tech_.featuresPlaybackRate && this.playbackRates() && 0 < this.playbackRates().length;
57593    }, t.updateVisibility = function (e) {
57594      this.playbackRateSupported() ? this.removeClass("vjs-hidden") : this.addClass("vjs-hidden");
57595    }, t.updateLabel = function (e) {
57596      this.playbackRateSupported() && (this.labelEl_.innerHTML = this.player().playbackRate() + "x");
57597    }, e;
57598  }(qn);
57599
57600  or.prototype.controlText_ = "Playback Rate", Re.registerComponent("PlaybackRateMenuButton", or);
57601
57602  var ur = function (e) {
57603    function t() {
57604      return e.apply(this, arguments) || this;
57605    }
57606
57607    He(t, e);
57608    var i = t.prototype;
57609    return i.buildCSSClass = function () {
57610      return "vjs-spacer " + e.prototype.buildCSSClass.call(this);
57611    }, i.createEl = function () {
57612      return e.prototype.createEl.call(this, "div", {
57613        className: this.buildCSSClass()
57614      });
57615    }, t;
57616  }(Re);
57617
57618  Re.registerComponent("Spacer", ur);
57619
57620  var lr = function (t) {
57621    function e() {
57622      return t.apply(this, arguments) || this;
57623    }
57624
57625    He(e, t);
57626    var i = e.prototype;
57627    return i.buildCSSClass = function () {
57628      return "vjs-custom-control-spacer " + t.prototype.buildCSSClass.call(this);
57629    }, i.createEl = function () {
57630      var e = t.prototype.createEl.call(this, {
57631        className: this.buildCSSClass()
57632      });
57633      return e.innerHTML = " ", e;
57634    }, e;
57635  }(ur);
57636
57637  Re.registerComponent("CustomControlSpacer", lr);
57638
57639  var cr = function (e) {
57640    function t() {
57641      return e.apply(this, arguments) || this;
57642    }
57643
57644    return He(t, e), t.prototype.createEl = function () {
57645      return e.prototype.createEl.call(this, "div", {
57646        className: "vjs-control-bar",
57647        dir: "ltr"
57648      });
57649    }, t;
57650  }(Re);
57651
57652  cr.prototype.options_ = {
57653    children: ["playToggle", "volumePanel", "currentTimeDisplay", "timeDivider", "durationDisplay", "progressControl", "liveDisplay", "seekToLive", "remainingTimeDisplay", "customControlSpacer", "playbackRateMenuButton", "chaptersButton", "descriptionsButton", "subsCapsButton", "audioTrackButton", "fullscreenToggle"]
57654  }, "exitPictureInPicture" in h && cr.prototype.options_.children.splice(cr.prototype.options_.children.length - 1, 0, "pictureInPictureToggle"), Re.registerComponent("ControlBar", cr);
57655
57656  var hr = function (n) {
57657    function e(e, t) {
57658      var i;
57659      return (i = n.call(this, e, t) || this).on(e, "error", i.open), i;
57660    }
57661
57662    He(e, n);
57663    var t = e.prototype;
57664    return t.buildCSSClass = function () {
57665      return "vjs-error-display " + n.prototype.buildCSSClass.call(this);
57666    }, t.content = function () {
57667      var e = this.player().error();
57668      return e ? this.localize(e.message) : "";
57669    }, e;
57670  }(It);
57671
57672  hr.prototype.options_ = r({}, It.prototype.options_, {
57673    pauseOnOpen: !1,
57674    fillAlways: !0,
57675    temporary: !1,
57676    uncloseable: !0
57677  }), Re.registerComponent("ErrorDisplay", hr);
57678  var dr = "vjs-text-track-settings",
57679      pr = ["#000", "Black"],
57680      fr = ["#00F", "Blue"],
57681      mr = ["#0FF", "Cyan"],
57682      gr = ["#0F0", "Green"],
57683      vr = ["#F0F", "Magenta"],
57684      yr = ["#F00", "Red"],
57685      _r = ["#FFF", "White"],
57686      br = ["#FF0", "Yellow"],
57687      Tr = ["1", "Opaque"],
57688      Sr = ["0.5", "Semi-Transparent"],
57689      kr = ["0", "Transparent"],
57690      Cr = {
57691    backgroundColor: {
57692      selector: ".vjs-bg-color > select",
57693      id: "captions-background-color-%s",
57694      label: "Color",
57695      options: [pr, _r, yr, gr, fr, br, vr, mr]
57696    },
57697    backgroundOpacity: {
57698      selector: ".vjs-bg-opacity > select",
57699      id: "captions-background-opacity-%s",
57700      label: "Transparency",
57701      options: [Tr, Sr, kr]
57702    },
57703    color: {
57704      selector: ".vjs-fg-color > select",
57705      id: "captions-foreground-color-%s",
57706      label: "Color",
57707      options: [_r, pr, yr, gr, fr, br, vr, mr]
57708    },
57709    edgeStyle: {
57710      selector: ".vjs-edge-style > select",
57711      id: "%s",
57712      label: "Text Edge Style",
57713      options: [["none", "None"], ["raised", "Raised"], ["depressed", "Depressed"], ["uniform", "Uniform"], ["dropshadow", "Dropshadow"]]
57714    },
57715    fontFamily: {
57716      selector: ".vjs-font-family > select",
57717      id: "captions-font-family-%s",
57718      label: "Font Family",
57719      options: [["proportionalSansSerif", "Proportional Sans-Serif"], ["monospaceSansSerif", "Monospace Sans-Serif"], ["proportionalSerif", "Proportional Serif"], ["monospaceSerif", "Monospace Serif"], ["casual", "Casual"], ["script", "Script"], ["small-caps", "Small Caps"]]
57720    },
57721    fontPercent: {
57722      selector: ".vjs-font-percent > select",
57723      id: "captions-font-size-%s",
57724      label: "Font Size",
57725      options: [["0.50", "50%"], ["0.75", "75%"], ["1.00", "100%"], ["1.25", "125%"], ["1.50", "150%"], ["1.75", "175%"], ["2.00", "200%"], ["3.00", "300%"], ["4.00", "400%"]],
57726      "default": 2,
57727      parser: function parser(e) {
57728        return "1.00" === e ? null : Number(e);
57729      }
57730    },
57731    textOpacity: {
57732      selector: ".vjs-text-opacity > select",
57733      id: "captions-foreground-opacity-%s",
57734      label: "Transparency",
57735      options: [Tr, Sr]
57736    },
57737    windowColor: {
57738      selector: ".vjs-window-color > select",
57739      id: "captions-window-color-%s",
57740      label: "Color"
57741    },
57742    windowOpacity: {
57743      selector: ".vjs-window-opacity > select",
57744      id: "captions-window-opacity-%s",
57745      label: "Transparency",
57746      options: [kr, Sr, Tr]
57747    }
57748  };
57749
57750  function wr(e, t) {
57751    if (t && (e = t(e)), e && "none" !== e) return e;
57752  }
57753
57754  Cr.windowColor.options = Cr.backgroundColor.options;
57755
57756  var Er = function (n) {
57757    function e(e, t) {
57758      var i;
57759      return t.temporary = !1, (i = n.call(this, e, t) || this).updateDisplay = ge(Ue(i), i.updateDisplay), i.fill(), i.hasBeenOpened_ = i.hasBeenFilled_ = !0, i.endDialog = S("p", {
57760        className: "vjs-control-text",
57761        textContent: i.localize("End of dialog window.")
57762      }), i.el().appendChild(i.endDialog), i.setDefaults(), void 0 === t.persistTextTrackSettings && (i.options_.persistTextTrackSettings = i.options_.playerOptions.persistTextTrackSettings), i.on(i.$(".vjs-done-button"), "click", function () {
57763        i.saveSettings(), i.close();
57764      }), i.on(i.$(".vjs-default-button"), "click", function () {
57765        i.setDefaults(), i.updateDisplay();
57766      }), a(Cr, function (e) {
57767        i.on(i.$(e.selector), "change", i.updateDisplay);
57768      }), i.options_.persistTextTrackSettings && i.restoreSettings(), i;
57769    }
57770
57771    He(e, n);
57772    var t = e.prototype;
57773    return t.dispose = function () {
57774      this.endDialog = null, n.prototype.dispose.call(this);
57775    }, t.createElSelect_ = function (e, t, i) {
57776      var n = this;
57777      void 0 === t && (t = ""), void 0 === i && (i = "label");
57778      var r = Cr[e],
57779          s = r.id.replace("%s", this.id_),
57780          a = [t, s].join(" ").trim();
57781      return ["<" + i + ' id="' + s + '" class="' + ("label" === i ? "vjs-label" : "") + '">', this.localize(r.label), "</" + i + ">", '<select aria-labelledby="' + a + '">'].concat(r.options.map(function (e) {
57782        var t = s + "-" + e[1].replace(/\W+/g, "");
57783        return ['<option id="' + t + '" value="' + e[0] + '" ', 'aria-labelledby="' + a + " " + t + '">', n.localize(e[1]), "</option>"].join("");
57784      })).concat("</select>").join("");
57785    }, t.createElFgColor_ = function () {
57786      var e = "captions-text-legend-" + this.id_;
57787      return ['<fieldset class="vjs-fg-color vjs-track-setting">', '<legend id="' + e + '">', this.localize("Text"), "</legend>", this.createElSelect_("color", e), '<span class="vjs-text-opacity vjs-opacity">', this.createElSelect_("textOpacity", e), "</span>", "</fieldset>"].join("");
57788    }, t.createElBgColor_ = function () {
57789      var e = "captions-background-" + this.id_;
57790      return ['<fieldset class="vjs-bg-color vjs-track-setting">', '<legend id="' + e + '">', this.localize("Background"), "</legend>", this.createElSelect_("backgroundColor", e), '<span class="vjs-bg-opacity vjs-opacity">', this.createElSelect_("backgroundOpacity", e), "</span>", "</fieldset>"].join("");
57791    }, t.createElWinColor_ = function () {
57792      var e = "captions-window-" + this.id_;
57793      return ['<fieldset class="vjs-window-color vjs-track-setting">', '<legend id="' + e + '">', this.localize("Window"), "</legend>", this.createElSelect_("windowColor", e), '<span class="vjs-window-opacity vjs-opacity">', this.createElSelect_("windowOpacity", e), "</span>", "</fieldset>"].join("");
57794    }, t.createElColors_ = function () {
57795      return S("div", {
57796        className: "vjs-track-settings-colors",
57797        innerHTML: [this.createElFgColor_(), this.createElBgColor_(), this.createElWinColor_()].join("")
57798      });
57799    }, t.createElFont_ = function () {
57800      return S("div", {
57801        className: "vjs-track-settings-font",
57802        innerHTML: ['<fieldset class="vjs-font-percent vjs-track-setting">', this.createElSelect_("fontPercent", "", "legend"), "</fieldset>", '<fieldset class="vjs-edge-style vjs-track-setting">', this.createElSelect_("edgeStyle", "", "legend"), "</fieldset>", '<fieldset class="vjs-font-family vjs-track-setting">', this.createElSelect_("fontFamily", "", "legend"), "</fieldset>"].join("")
57803      });
57804    }, t.createElControls_ = function () {
57805      var e = this.localize("restore all settings to the default values");
57806      return S("div", {
57807        className: "vjs-track-settings-controls",
57808        innerHTML: ['<button type="button" class="vjs-default-button" title="' + e + '">', this.localize("Reset"), '<span class="vjs-control-text"> ' + e + "</span>", "</button>", '<button type="button" class="vjs-done-button">' + this.localize("Done") + "</button>"].join("")
57809      });
57810    }, t.content = function () {
57811      return [this.createElColors_(), this.createElFont_(), this.createElControls_()];
57812    }, t.label = function () {
57813      return this.localize("Caption Settings Dialog");
57814    }, t.description = function () {
57815      return this.localize("Beginning of dialog window. Escape will cancel and close the window.");
57816    }, t.buildCSSClass = function () {
57817      return n.prototype.buildCSSClass.call(this) + " vjs-text-track-settings";
57818    }, t.getValues = function () {
57819      var r = this;
57820      return function (i, n, e) {
57821        return void 0 === e && (e = 0), s(i).reduce(function (e, t) {
57822          return n(e, i[t], t);
57823        }, e);
57824      }(Cr, function (e, t, i) {
57825        var n = function (e, t) {
57826          return wr(e.options[e.options.selectedIndex].value, t);
57827        }(r.$(t.selector), t.parser);
57828
57829        return void 0 !== n && (e[i] = n), e;
57830      }, {});
57831    }, t.setValues = function (i) {
57832      var n = this;
57833      a(Cr, function (e, t) {
57834        !function (e, t, i) {
57835          if (t) for (var n = 0; n < e.options.length; n++) {
57836            if (wr(e.options[n].value, i) === t) {
57837              e.selectedIndex = n;
57838              break;
57839            }
57840          }
57841        }(n.$(e.selector), i[t], e.parser);
57842      });
57843    }, t.setDefaults = function () {
57844      var i = this;
57845      a(Cr, function (e) {
57846        var t = e.hasOwnProperty("default") ? e["default"] : 0;
57847        i.$(e.selector).selectedIndex = t;
57848      });
57849    }, t.restoreSettings = function () {
57850      var e;
57851
57852      try {
57853        e = JSON.parse(y.localStorage.getItem(dr));
57854      } catch (e) {
57855        p.warn(e);
57856      }
57857
57858      e && this.setValues(e);
57859    }, t.saveSettings = function () {
57860      if (this.options_.persistTextTrackSettings) {
57861        var e = this.getValues();
57862
57863        try {
57864          Object.keys(e).length ? y.localStorage.setItem(dr, JSON.stringify(e)) : y.localStorage.removeItem(dr);
57865        } catch (e) {
57866          p.warn(e);
57867        }
57868      }
57869    }, t.updateDisplay = function () {
57870      var e = this.player_.getChild("textTrackDisplay");
57871      e && e.updateDisplay();
57872    }, t.conditionalBlur_ = function () {
57873      this.previouslyActiveEl_ = null;
57874      var e = this.player_.controlBar,
57875          t = e && e.subsCapsButton,
57876          i = e && e.captionsButton;
57877      t ? t.focus() : i && i.focus();
57878    }, e;
57879  }(It);
57880
57881  Re.registerComponent("TextTrackSettings", Er);
57882
57883  var xr = function (s) {
57884    function e(e, t) {
57885      var i,
57886          n = t.ResizeObserver || y.ResizeObserver;
57887      null === t.ResizeObserver && (n = !1);
57888      var r = Ne({
57889        createEl: !n,
57890        reportTouchActivity: !1
57891      }, t);
57892      return (i = s.call(this, e, r) || this).ResizeObserver = t.ResizeObserver || y.ResizeObserver, i.loadListener_ = null, i.resizeObserver_ = null, i.debouncedHandler_ = function (n, r, s, a) {
57893        var o;
57894        void 0 === a && (a = y);
57895
57896        function e() {
57897          var e = this,
57898              t = arguments,
57899              _i2 = function i() {
57900            _i2 = o = null, s || n.apply(e, t);
57901          };
57902
57903          !o && s && n.apply(e, t), a.clearTimeout(o), o = a.setTimeout(_i2, r);
57904        }
57905
57906        return e.cancel = function () {
57907          a.clearTimeout(o), o = null;
57908        }, e;
57909      }(function () {
57910        i.resizeHandler();
57911      }, 100, !1, Ue(i)), n ? (i.resizeObserver_ = new i.ResizeObserver(i.debouncedHandler_), i.resizeObserver_.observe(e.el())) : (i.loadListener_ = function () {
57912        if (i.el_ && i.el_.contentWindow) {
57913          var e = i.debouncedHandler_,
57914              t = i.unloadListener_ = function () {
57915            de(this, "resize", e), de(this, "unload", t), t = null;
57916          };
57917
57918          he(i.el_.contentWindow, "unload", t), he(i.el_.contentWindow, "resize", e);
57919        }
57920      }, i.one("load", i.loadListener_)), i;
57921    }
57922
57923    He(e, s);
57924    var t = e.prototype;
57925    return t.createEl = function () {
57926      return s.prototype.createEl.call(this, "iframe", {
57927        className: "vjs-resize-manager",
57928        tabIndex: -1
57929      }, {
57930        "aria-hidden": "true"
57931      });
57932    }, t.resizeHandler = function () {
57933      this.player_ && this.player_.trigger && this.player_.trigger("playerresize");
57934    }, t.dispose = function () {
57935      this.debouncedHandler_ && this.debouncedHandler_.cancel(), this.resizeObserver_ && (this.player_.el() && this.resizeObserver_.unobserve(this.player_.el()), this.resizeObserver_.disconnect()), this.loadListener_ && this.off("load", this.loadListener_), this.el_ && this.el_.contentWindow && this.unloadListener_ && this.unloadListener_.call(this.el_.contentWindow), this.ResizeObserver = null, this.resizeObserver = null, this.debouncedHandler_ = null, this.loadListener_ = null, s.prototype.dispose.call(this);
57936    }, e;
57937  }(Re);
57938
57939  Re.registerComponent("ResizeManager", xr);
57940
57941  var Ar = {
57942    trackingThreshold: 30,
57943    liveTolerance: 15
57944  },
57945      Ir = function (r) {
57946    function e(e, t) {
57947      var i,
57948          n = Ne(Ar, t, {
57949        createEl: !1
57950      });
57951      return (i = r.call(this, e, n) || this).reset_(), i.on(i.player_, "durationchange", i.handleDurationchange), et && "hidden" in h && "visibilityState" in h && i.on(h, "visibilitychange", i.handleVisibilityChange), i;
57952    }
57953
57954    He(e, r);
57955    var t = e.prototype;
57956    return t.handleVisibilityChange = function () {
57957      this.player_.duration() === 1 / 0 && (h.hidden ? this.stopTracking() : this.startTracking());
57958    }, t.trackLive_ = function () {
57959      var e = this.player_.seekable();
57960
57961      if (e && e.length) {
57962        var t = Number(y.performance.now().toFixed(4)),
57963            i = -1 === this.lastTime_ ? 0 : (t - this.lastTime_) / 1e3;
57964        this.lastTime_ = t, this.pastSeekEnd_ = this.pastSeekEnd() + i;
57965        var n = this.liveCurrentTime(),
57966            r = this.player_.currentTime(),
57967            s = this.player_.paused() || this.seekedBehindLive_ || Math.abs(n - r) > this.options_.liveTolerance;
57968        this.timeupdateSeen_ && n !== 1 / 0 || (s = !1), s !== this.behindLiveEdge_ && (this.behindLiveEdge_ = s, this.trigger("liveedgechange"));
57969      }
57970    }, t.handleDurationchange = function () {
57971      this.player_.duration() === 1 / 0 && this.liveWindow() >= this.options_.trackingThreshold ? (this.player_.options_.liveui && this.player_.addClass("vjs-liveui"), this.startTracking()) : (this.player_.removeClass("vjs-liveui"), this.stopTracking());
57972    }, t.startTracking = function () {
57973      this.isTracking() || (this.timeupdateSeen_ || (this.timeupdateSeen_ = this.player_.hasStarted()), this.trackingInterval_ = this.setInterval(this.trackLive_, 30), this.trackLive_(), this.on(this.player_, ["play", "pause"], this.trackLive_), this.timeupdateSeen_ ? this.on(this.player_, "seeked", this.handleSeeked) : (this.one(this.player_, "play", this.handlePlay), this.one(this.player_, "timeupdate", this.handleFirstTimeupdate)));
57974    }, t.handleFirstTimeupdate = function () {
57975      this.timeupdateSeen_ = !0, this.on(this.player_, "seeked", this.handleSeeked);
57976    }, t.handleSeeked = function () {
57977      var e = Math.abs(this.liveCurrentTime() - this.player_.currentTime());
57978      this.seekedBehindLive_ = !this.skipNextSeeked_ && 2 < e, this.skipNextSeeked_ = !1, this.trackLive_();
57979    }, t.handlePlay = function () {
57980      this.one(this.player_, "timeupdate", this.seekToLiveEdge);
57981    }, t.reset_ = function () {
57982      this.lastTime_ = -1, this.pastSeekEnd_ = 0, this.lastSeekEnd_ = -1, this.behindLiveEdge_ = !0, this.timeupdateSeen_ = !1, this.seekedBehindLive_ = !1, this.skipNextSeeked_ = !1, this.clearInterval(this.trackingInterval_), this.trackingInterval_ = null, this.off(this.player_, ["play", "pause"], this.trackLive_), this.off(this.player_, "seeked", this.handleSeeked), this.off(this.player_, "play", this.handlePlay), this.off(this.player_, "timeupdate", this.handleFirstTimeupdate), this.off(this.player_, "timeupdate", this.seekToLiveEdge);
57983    }, t.stopTracking = function () {
57984      this.isTracking() && (this.reset_(), this.trigger("liveedgechange"));
57985    }, t.seekableEnd = function () {
57986      for (var e = this.player_.seekable(), t = [], i = e ? e.length : 0; i--;) {
57987        t.push(e.end(i));
57988      }
57989
57990      return t.length ? t.sort()[t.length - 1] : 1 / 0;
57991    }, t.seekableStart = function () {
57992      for (var e = this.player_.seekable(), t = [], i = e ? e.length : 0; i--;) {
57993        t.push(e.start(i));
57994      }
57995
57996      return t.length ? t.sort()[0] : 0;
57997    }, t.liveWindow = function () {
57998      var e = this.liveCurrentTime();
57999      return e === 1 / 0 ? 1 / 0 : e - this.seekableStart();
58000    }, t.isLive = function () {
58001      return this.isTracking();
58002    }, t.atLiveEdge = function () {
58003      return !this.behindLiveEdge();
58004    }, t.liveCurrentTime = function () {
58005      return this.pastSeekEnd() + this.seekableEnd();
58006    }, t.pastSeekEnd = function () {
58007      var e = this.seekableEnd();
58008      return -1 !== this.lastSeekEnd_ && e !== this.lastSeekEnd_ && (this.pastSeekEnd_ = 0), this.lastSeekEnd_ = e, this.pastSeekEnd_;
58009    }, t.behindLiveEdge = function () {
58010      return this.behindLiveEdge_;
58011    }, t.isTracking = function () {
58012      return "number" == typeof this.trackingInterval_;
58013    }, t.seekToLiveEdge = function () {
58014      this.seekedBehindLive_ = !1, this.atLiveEdge() || (this.skipNextSeeked_ = !0, this.player_.currentTime(this.liveCurrentTime()));
58015    }, t.dispose = function () {
58016      this.off(h, "visibilitychange", this.handleVisibilityChange), this.stopTracking(), r.prototype.dispose.call(this);
58017    }, e;
58018  }(Re);
58019
58020  Re.registerComponent("LiveTracker", Ir);
58021
58022  function Pr(e) {
58023    var t = e.el();
58024    if (t.hasAttribute("src")) return e.triggerSourceset(t.src), !0;
58025    var i = e.$$("source"),
58026        n = [],
58027        r = "";
58028    if (!i.length) return !1;
58029
58030    for (var s = 0; s < i.length; s++) {
58031      var a = i[s].src;
58032      a && -1 === n.indexOf(a) && n.push(a);
58033    }
58034
58035    return !!n.length && (1 === n.length && (r = n[0]), e.triggerSourceset(r), !0);
58036  }
58037
58038  function Lr(e, t) {
58039    for (var i = {}, n = 0; n < e.length && !((i = Object.getOwnPropertyDescriptor(e[n], t)) && i.set && i.get); n++) {
58040      ;
58041    }
58042
58043    return i.enumerable = !0, i.configurable = !0, i;
58044  }
58045
58046  function Or(s) {
58047    var a = s.el();
58048
58049    if (!a.resetSourceWatch_) {
58050      var t = {},
58051          e = function (e) {
58052        return Lr([e.el(), y.HTMLMediaElement.prototype, y.Element.prototype, Ur], "innerHTML");
58053      }(s),
58054          i = function i(r) {
58055        return function () {
58056          for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
58057            t[i] = arguments[i];
58058          }
58059
58060          var n = r.apply(a, t);
58061          return Pr(s), n;
58062        };
58063      };
58064
58065      ["append", "appendChild", "insertAdjacentHTML"].forEach(function (e) {
58066        a[e] && (t[e] = a[e], a[e] = i(t[e]));
58067      }), Object.defineProperty(a, "innerHTML", Ne(e, {
58068        set: i(e.set)
58069      })), a.resetSourceWatch_ = function () {
58070        a.resetSourceWatch_ = null, Object.keys(t).forEach(function (e) {
58071          a[e] = t[e];
58072        }), Object.defineProperty(a, "innerHTML", e);
58073      }, s.one("sourceset", a.resetSourceWatch_);
58074    }
58075  }
58076
58077  function Dr(n) {
58078    if (n.featuresSourceset) {
58079      var r = n.el();
58080
58081      if (!r.resetSourceset_) {
58082        var i = function (e) {
58083          return Lr([e.el(), y.HTMLMediaElement.prototype, Mr], "src");
58084        }(n),
58085            s = r.setAttribute,
58086            t = r.load;
58087
58088        Object.defineProperty(r, "src", Ne(i, {
58089          set: function set(e) {
58090            var t = i.set.call(r, e);
58091            return n.triggerSourceset(r.src), t;
58092          }
58093        })), r.setAttribute = function (e, t) {
58094          var i = s.call(r, e, t);
58095          return /src/i.test(e) && n.triggerSourceset(r.src), i;
58096        }, r.load = function () {
58097          var e = t.call(r);
58098          return Pr(n) || (n.triggerSourceset(""), Or(n)), e;
58099        }, r.currentSrc ? n.triggerSourceset(r.currentSrc) : Pr(n) || Or(n), r.resetSourceset_ = function () {
58100          r.resetSourceset_ = null, r.load = t, r.setAttribute = s, Object.defineProperty(r, "src", i), r.resetSourceWatch_ && r.resetSourceWatch_();
58101        };
58102      }
58103    }
58104  }
58105
58106  function Nr(t, i, n, e) {
58107    function r(e) {
58108      return Object.defineProperty(t, i, {
58109        value: e,
58110        enumerable: !0,
58111        writable: !0
58112      });
58113    }
58114
58115    void 0 === e && (e = !0);
58116    var s = {
58117      configurable: !0,
58118      enumerable: !0,
58119      get: function get() {
58120        var e = n();
58121        return r(e), e;
58122      }
58123    };
58124    return e && (s.set = r), Object.defineProperty(t, i, s);
58125  }
58126
58127  var Rr,
58128      Ur = Object.defineProperty({}, "innerHTML", {
58129    get: function get() {
58130      return this.cloneNode(!0).innerHTML;
58131    },
58132    set: function set(e) {
58133      var t = h.createElement(this.nodeName.toLowerCase());
58134      t.innerHTML = e;
58135
58136      for (var i = h.createDocumentFragment(); t.childNodes.length;) {
58137        i.appendChild(t.childNodes[0]);
58138      }
58139
58140      return this.innerText = "", y.Element.prototype.appendChild.call(this, i), this.innerHTML;
58141    }
58142  }),
58143      Mr = Object.defineProperty({}, "src", {
58144    get: function get() {
58145      return this.hasAttribute("src") ? Rt(y.Element.prototype.getAttribute.call(this, "src")) : "";
58146    },
58147    set: function set(e) {
58148      return y.Element.prototype.setAttribute.call(this, "src", e), e;
58149    }
58150  }),
58151      Br = function (c) {
58152    function o(e, t) {
58153      var i;
58154      i = c.call(this, e, t) || this;
58155      var n = e.source,
58156          r = !1;
58157
58158      if (n && (i.el_.currentSrc !== n.src || e.tag && 3 === e.tag.initNetworkState_) ? i.setSource(n) : i.handleLateInit_(i.el_), e.enableSourceset && i.setupSourcesetHandling_(), i.el_.hasChildNodes()) {
58159        for (var s = i.el_.childNodes, a = s.length, o = []; a--;) {
58160          var u = s[a];
58161          "track" === u.nodeName.toLowerCase() && (i.featuresNativeTextTracks ? (i.remoteTextTrackEls().addTrackElement_(u), i.remoteTextTracks().addTrack(u.track), i.textTracks().addTrack(u.track), r || i.el_.hasAttribute("crossorigin") || !Mt(u.src) || (r = !0)) : o.push(u));
58162        }
58163
58164        for (var l = 0; l < o.length; l++) {
58165          i.el_.removeChild(o[l]);
58166        }
58167      }
58168
58169      return i.proxyNativeTracks_(), i.featuresNativeTextTracks && r && p.warn("Text Tracks are being loaded from another origin but the crossorigin attribute isn't used.\nThis may prevent text tracks from loading."), i.restoreMetadataTracksInIOSNativePlayer_(), (nt || st || Ye) && !0 === e.nativeControlsForTouch && i.setControls(!0), i.proxyWebkitFullscreen_(), i.triggerReady(), i;
58170    }
58171
58172    He(o, c);
58173    var e = o.prototype;
58174    return e.dispose = function () {
58175      this.el_ && this.el_.resetSourceset_ && this.el_.resetSourceset_(), o.disposeMediaElement(this.el_), this.options_ = null, c.prototype.dispose.call(this);
58176    }, e.setupSourcesetHandling_ = function () {
58177      Dr(this);
58178    }, e.restoreMetadataTracksInIOSNativePlayer_ = function () {
58179      function e() {
58180        i = [];
58181
58182        for (var e = 0; e < n.length; e++) {
58183          var t = n[e];
58184          "metadata" === t.kind && i.push({
58185            track: t,
58186            storedMode: t.mode
58187          });
58188        }
58189      }
58190
58191      var i,
58192          n = this.textTracks();
58193      e(), n.addEventListener("change", e), this.on("dispose", function () {
58194        return n.removeEventListener("change", e);
58195      });
58196
58197      function r() {
58198        for (var e = 0; e < i.length; e++) {
58199          var t = i[e];
58200          "disabled" === t.track.mode && t.track.mode !== t.storedMode && (t.track.mode = t.storedMode);
58201        }
58202
58203        n.removeEventListener("change", r);
58204      }
58205
58206      this.on("webkitbeginfullscreen", function () {
58207        n.removeEventListener("change", e), n.removeEventListener("change", r), n.addEventListener("change", r);
58208      }), this.on("webkitendfullscreen", function () {
58209        n.removeEventListener("change", e), n.addEventListener("change", e), n.removeEventListener("change", r);
58210      });
58211    }, e.overrideNative_ = function (e, t) {
58212      var i = this;
58213
58214      if (t === this["featuresNative" + e + "Tracks"]) {
58215        var n = e.toLowerCase();
58216        this[n + "TracksListeners_"] && Object.keys(this[n + "TracksListeners_"]).forEach(function (e) {
58217          i.el()[n + "Tracks"].removeEventListener(e, i[n + "TracksListeners_"][e]);
58218        }), this["featuresNative" + e + "Tracks"] = !t, this[n + "TracksListeners_"] = null, this.proxyNativeTracksForType_(n);
58219      }
58220    }, e.overrideNativeAudioTracks = function (e) {
58221      this.overrideNative_("Audio", e);
58222    }, e.overrideNativeVideoTracks = function (e) {
58223      this.overrideNative_("Video", e);
58224    }, e.proxyNativeTracksForType_ = function (i) {
58225      var n = this,
58226          e = li[i],
58227          r = this.el()[e.getterName],
58228          s = this[e.getterName]();
58229
58230      if (this["featuresNative" + e.capitalName + "Tracks"] && r && r.addEventListener) {
58231        var a = {
58232          change: function change(e) {
58233            var t = {
58234              type: "change",
58235              target: s,
58236              currentTarget: s,
58237              srcElement: s
58238            };
58239            s.trigger(t), "text" === i && n[ci.remoteText.getterName]().trigger(t);
58240          },
58241          addtrack: function addtrack(e) {
58242            s.addTrack(e.track);
58243          },
58244          removetrack: function removetrack(e) {
58245            s.removeTrack(e.track);
58246          }
58247        },
58248            t = function t() {
58249          for (var e = [], t = 0; t < s.length; t++) {
58250            for (var i = !1, n = 0; n < r.length; n++) {
58251              if (r[n] === s[t]) {
58252                i = !0;
58253                break;
58254              }
58255            }
58256
58257            i || e.push(s[t]);
58258          }
58259
58260          for (; e.length;) {
58261            s.removeTrack(e.shift());
58262          }
58263        };
58264
58265        this[e.getterName + "Listeners_"] = a, Object.keys(a).forEach(function (t) {
58266          var i = a[t];
58267          r.addEventListener(t, i), n.on("dispose", function (e) {
58268            return r.removeEventListener(t, i);
58269          });
58270        }), this.on("loadstart", t), this.on("dispose", function (e) {
58271          return n.off("loadstart", t);
58272        });
58273      }
58274    }, e.proxyNativeTracks_ = function () {
58275      var t = this;
58276      li.names.forEach(function (e) {
58277        t.proxyNativeTracksForType_(e);
58278      });
58279    }, e.createEl = function () {
58280      var e = this.options_.tag;
58281
58282      if (!e || !this.options_.playerElIngest && !this.movingMediaElementInDOM) {
58283        if (e) {
58284          var t = e.cloneNode(!0);
58285          e.parentNode && e.parentNode.insertBefore(t, e), o.disposeMediaElement(e), e = t;
58286        } else {
58287          e = h.createElement("video");
58288          var i = Ne({}, this.options_.tag && P(this.options_.tag));
58289          nt && !0 === this.options_.nativeControlsForTouch || delete i.controls, I(e, m(i, {
58290            id: this.options_.techId,
58291            "class": "vjs-tech"
58292          }));
58293        }
58294
58295        e.playerId = this.options_.playerId;
58296      }
58297
58298      "undefined" != typeof this.options_.preload && O(e, "preload", this.options_.preload);
58299
58300      for (var n = ["loop", "muted", "playsinline", "autoplay"], r = 0; r < n.length; r++) {
58301        var s = n[r],
58302            a = this.options_[s];
58303        "undefined" != typeof a && (a ? O(e, s, s) : D(e, s), e[s] = a);
58304      }
58305
58306      return e;
58307    }, e.handleLateInit_ = function (e) {
58308      if (0 !== e.networkState && 3 !== e.networkState) {
58309        if (0 === e.readyState) {
58310          var t = !1,
58311              i = function i() {
58312            t = !0;
58313          };
58314
58315          this.on("loadstart", i);
58316
58317          var n = function n() {
58318            t || this.trigger("loadstart");
58319          };
58320
58321          return this.on("loadedmetadata", n), void this.ready(function () {
58322            this.off("loadstart", i), this.off("loadedmetadata", n), t || this.trigger("loadstart");
58323          });
58324        }
58325
58326        var r = ["loadstart"];
58327        r.push("loadedmetadata"), 2 <= e.readyState && r.push("loadeddata"), 3 <= e.readyState && r.push("canplay"), 4 <= e.readyState && r.push("canplaythrough"), this.ready(function () {
58328          r.forEach(function (e) {
58329            this.trigger(e);
58330          }, this);
58331        });
58332      }
58333    }, e.setCurrentTime = function (e) {
58334      try {
58335        this.el_.currentTime = e;
58336      } catch (e) {
58337        p(e, "Video is not ready. (Video.js)");
58338      }
58339    }, e.duration = function () {
58340      var t = this;
58341
58342      if (this.el_.duration === 1 / 0 && Xe && Je && 0 === this.el_.currentTime) {
58343        return this.on("timeupdate", function e() {
58344          0 < t.el_.currentTime && (t.el_.duration === 1 / 0 && t.trigger("durationchange"), t.off("timeupdate", e));
58345        }), NaN;
58346      }
58347
58348      return this.el_.duration || NaN;
58349    }, e.width = function () {
58350      return this.el_.offsetWidth;
58351    }, e.height = function () {
58352      return this.el_.offsetHeight;
58353    }, e.proxyWebkitFullscreen_ = function () {
58354      var e = this;
58355
58356      if ("webkitDisplayingFullscreen" in this.el_) {
58357        var t = function t() {
58358          this.trigger("fullscreenchange", {
58359            isFullscreen: !1
58360          });
58361        },
58362            i = function i() {
58363          "webkitPresentationMode" in this.el_ && "picture-in-picture" !== this.el_.webkitPresentationMode && (this.one("webkitendfullscreen", t), this.trigger("fullscreenchange", {
58364            isFullscreen: !0,
58365            nativeIOSFullscreen: !0
58366          }));
58367        };
58368
58369        this.on("webkitbeginfullscreen", i), this.on("dispose", function () {
58370          e.off("webkitbeginfullscreen", i), e.off("webkitendfullscreen", t);
58371        });
58372      }
58373    }, e.supportsFullScreen = function () {
58374      if ("function" == typeof this.el_.webkitEnterFullScreen) {
58375        var e = y.navigator && y.navigator.userAgent || "";
58376        if (/Android/.test(e) || !/Chrome|Mac OS X 10.5/.test(e)) return !0;
58377      }
58378
58379      return !1;
58380    }, e.enterFullScreen = function () {
58381      var e = this.el_;
58382      if (e.paused && e.networkState <= e.HAVE_METADATA) kt(this.el_.play()), this.setTimeout(function () {
58383        e.pause();
58384
58385        try {
58386          e.webkitEnterFullScreen();
58387        } catch (e) {
58388          this.trigger("fullscreenerror", e);
58389        }
58390      }, 0);else try {
58391        e.webkitEnterFullScreen();
58392      } catch (e) {
58393        this.trigger("fullscreenerror", e);
58394      }
58395    }, e.exitFullScreen = function () {
58396      this.el_.webkitDisplayingFullscreen ? this.el_.webkitExitFullScreen() : this.trigger("fullscreenerror", new Error("The video is not fullscreen"));
58397    }, e.requestPictureInPicture = function () {
58398      return this.el_.requestPictureInPicture();
58399    }, e.src = function (e) {
58400      if (void 0 === e) return this.el_.src;
58401      this.setSrc(e);
58402    }, e.reset = function () {
58403      o.resetMediaElement(this.el_);
58404    }, e.currentSrc = function () {
58405      return this.currentSource_ ? this.currentSource_.src : this.el_.currentSrc;
58406    }, e.setControls = function (e) {
58407      this.el_.controls = !!e;
58408    }, e.addTextTrack = function (e, t, i) {
58409      return this.featuresNativeTextTracks ? this.el_.addTextTrack(e, t, i) : c.prototype.addTextTrack.call(this, e, t, i);
58410    }, e.createRemoteTextTrack = function (e) {
58411      if (!this.featuresNativeTextTracks) return c.prototype.createRemoteTextTrack.call(this, e);
58412      var t = h.createElement("track");
58413      return e.kind && (t.kind = e.kind), e.label && (t.label = e.label), (e.language || e.srclang) && (t.srclang = e.language || e.srclang), e["default"] && (t["default"] = e["default"]), e.id && (t.id = e.id), e.src && (t.src = e.src), t;
58414    }, e.addRemoteTextTrack = function (e, t) {
58415      var i = c.prototype.addRemoteTextTrack.call(this, e, t);
58416      return this.featuresNativeTextTracks && this.el().appendChild(i), i;
58417    }, e.removeRemoteTextTrack = function (e) {
58418      if (c.prototype.removeRemoteTextTrack.call(this, e), this.featuresNativeTextTracks) for (var t = this.$$("track"), i = t.length; i--;) {
58419        e !== t[i] && e !== t[i].track || this.el().removeChild(t[i]);
58420      }
58421    }, e.getVideoPlaybackQuality = function () {
58422      if ("function" == typeof this.el().getVideoPlaybackQuality) return this.el().getVideoPlaybackQuality();
58423      var e = {};
58424      return "undefined" != typeof this.el().webkitDroppedFrameCount && "undefined" != typeof this.el().webkitDecodedFrameCount && (e.droppedVideoFrames = this.el().webkitDroppedFrameCount, e.totalVideoFrames = this.el().webkitDecodedFrameCount), y.performance && "function" == typeof y.performance.now ? e.creationTime = y.performance.now() : y.performance && y.performance.timing && "number" == typeof y.performance.timing.navigationStart && (e.creationTime = y.Date.now() - y.performance.timing.navigationStart), e;
58425    }, o;
58426  }(Vi);
58427
58428  Nr(Br, "TEST_VID", function () {
58429    if (v()) {
58430      var e = h.createElement("video"),
58431          t = h.createElement("track");
58432      return t.kind = "captions", t.srclang = "en", t.label = "English", e.appendChild(t), e;
58433    }
58434  }), Br.isSupported = function () {
58435    try {
58436      Br.TEST_VID.volume = .5;
58437    } catch (e) {
58438      return !1;
58439    }
58440
58441    return !(!Br.TEST_VID || !Br.TEST_VID.canPlayType);
58442  }, Br.canPlayType = function (e) {
58443    return Br.TEST_VID.canPlayType(e);
58444  }, Br.canPlaySource = function (e, t) {
58445    return Br.canPlayType(e.type);
58446  }, Br.canControlVolume = function () {
58447    try {
58448      var e = Br.TEST_VID.volume;
58449      return Br.TEST_VID.volume = e / 2 + .1, e !== Br.TEST_VID.volume;
58450    } catch (e) {
58451      return !1;
58452    }
58453  }, Br.canMuteVolume = function () {
58454    try {
58455      var e = Br.TEST_VID.muted;
58456      return Br.TEST_VID.muted = !e, Br.TEST_VID.muted ? O(Br.TEST_VID, "muted", "muted") : D(Br.TEST_VID, "muted"), e !== Br.TEST_VID.muted;
58457    } catch (e) {
58458      return !1;
58459    }
58460  }, Br.canControlPlaybackRate = function () {
58461    if (Xe && Je && Ze < 58) return !1;
58462
58463    try {
58464      var e = Br.TEST_VID.playbackRate;
58465      return Br.TEST_VID.playbackRate = e / 2 + .1, e !== Br.TEST_VID.playbackRate;
58466    } catch (e) {
58467      return !1;
58468    }
58469  }, Br.canOverrideAttributes = function () {
58470    try {
58471      var e = function e() {};
58472
58473      Object.defineProperty(h.createElement("video"), "src", {
58474        get: e,
58475        set: e
58476      }), Object.defineProperty(h.createElement("audio"), "src", {
58477        get: e,
58478        set: e
58479      }), Object.defineProperty(h.createElement("video"), "innerHTML", {
58480        get: e,
58481        set: e
58482      }), Object.defineProperty(h.createElement("audio"), "innerHTML", {
58483        get: e,
58484        set: e
58485      });
58486    } catch (e) {
58487      return !1;
58488    }
58489
58490    return !0;
58491  }, Br.supportsNativeTextTracks = function () {
58492    return ot || at && Je;
58493  }, Br.supportsNativeVideoTracks = function () {
58494    return !(!Br.TEST_VID || !Br.TEST_VID.videoTracks);
58495  }, Br.supportsNativeAudioTracks = function () {
58496    return !(!Br.TEST_VID || !Br.TEST_VID.audioTracks);
58497  }, Br.Events = ["loadstart", "suspend", "abort", "error", "emptied", "stalled", "loadedmetadata", "loadeddata", "canplay", "canplaythrough", "playing", "waiting", "seeking", "seeked", "ended", "durationchange", "timeupdate", "progress", "play", "pause", "ratechange", "resize", "volumechange"], [["featuresVolumeControl", "canControlVolume"], ["featuresMuteControl", "canMuteVolume"], ["featuresPlaybackRate", "canControlPlaybackRate"], ["featuresSourceset", "canOverrideAttributes"], ["featuresNativeTextTracks", "supportsNativeTextTracks"], ["featuresNativeVideoTracks", "supportsNativeVideoTracks"], ["featuresNativeAudioTracks", "supportsNativeAudioTracks"]].forEach(function (e) {
58498    var t = e[0],
58499        i = e[1];
58500    Nr(Br.prototype, t, function () {
58501      return Br[i]();
58502    }, !0);
58503  }), Br.prototype.movingMediaElementInDOM = !at, Br.prototype.featuresFullscreenResize = !0, Br.prototype.featuresProgressEvents = !0, Br.prototype.featuresTimeupdateEvents = !0, Br.patchCanPlayType = function () {
58504    4 <= Ke && !$e && !Je && (Rr = Br.TEST_VID && Br.TEST_VID.constructor.prototype.canPlayType, Br.TEST_VID.constructor.prototype.canPlayType = function (e) {
58505      return e && /^application\/(?:x-|vnd\.apple\.)mpegurl/i.test(e) ? "maybe" : Rr.call(this, e);
58506    });
58507  }, Br.unpatchCanPlayType = function () {
58508    var e = Br.TEST_VID.constructor.prototype.canPlayType;
58509    return Rr && (Br.TEST_VID.constructor.prototype.canPlayType = Rr), e;
58510  }, Br.patchCanPlayType(), Br.disposeMediaElement = function (e) {
58511    if (e) {
58512      for (e.parentNode && e.parentNode.removeChild(e); e.hasChildNodes();) {
58513        e.removeChild(e.firstChild);
58514      }
58515
58516      e.removeAttribute("src"), "function" == typeof e.load && function () {
58517        try {
58518          e.load();
58519        } catch (e) {}
58520      }();
58521    }
58522  }, Br.resetMediaElement = function (e) {
58523    if (e) {
58524      for (var t = e.querySelectorAll("source"), i = t.length; i--;) {
58525        e.removeChild(t[i]);
58526      }
58527
58528      e.removeAttribute("src"), "function" == typeof e.load && function () {
58529        try {
58530          e.load();
58531        } catch (e) {}
58532      }();
58533    }
58534  }, ["muted", "defaultMuted", "autoplay", "controls", "loop", "playsinline"].forEach(function (e) {
58535    Br.prototype[e] = function () {
58536      return this.el_[e] || this.el_.hasAttribute(e);
58537    };
58538  }), ["muted", "defaultMuted", "autoplay", "loop", "playsinline"].forEach(function (t) {
58539    Br.prototype["set" + De(t)] = function (e) {
58540      (this.el_[t] = e) ? this.el_.setAttribute(t, t) : this.el_.removeAttribute(t);
58541    };
58542  }), ["paused", "currentTime", "buffered", "volume", "poster", "preload", "error", "seeking", "seekable", "ended", "playbackRate", "defaultPlaybackRate", "played", "networkState", "readyState", "videoWidth", "videoHeight", "crossOrigin"].forEach(function (e) {
58543    Br.prototype[e] = function () {
58544      return this.el_[e];
58545    };
58546  }), ["volume", "src", "poster", "preload", "playbackRate", "defaultPlaybackRate", "crossOrigin"].forEach(function (t) {
58547    Br.prototype["set" + De(t)] = function (e) {
58548      this.el_[t] = e;
58549    };
58550  }), ["pause", "load", "play"].forEach(function (e) {
58551    Br.prototype[e] = function () {
58552      return this.el_[e]();
58553    };
58554  }), Vi.withSourceHandlers(Br), Br.nativeSourceHandler = {}, Br.nativeSourceHandler.canPlayType = function (e) {
58555    try {
58556      return Br.TEST_VID.canPlayType(e);
58557    } catch (e) {
58558      return "";
58559    }
58560  }, Br.nativeSourceHandler.canHandleSource = function (e, t) {
58561    if (e.type) return Br.nativeSourceHandler.canPlayType(e.type);
58562
58563    if (e.src) {
58564      var i = Ut(e.src);
58565      return Br.nativeSourceHandler.canPlayType("video/" + i);
58566    }
58567
58568    return "";
58569  }, Br.nativeSourceHandler.handleSource = function (e, t, i) {
58570    t.setSrc(e.src);
58571  }, Br.nativeSourceHandler.dispose = function () {}, Br.registerSourceHandler(Br.nativeSourceHandler), Vi.registerTech("Html5", Br);
58572  var jr = ["progress", "abort", "suspend", "emptied", "stalled", "loadedmetadata", "loadeddata", "timeupdate", "resize", "volumechange", "texttrackchange"],
58573      Fr = {
58574    canplay: "CanPlay",
58575    canplaythrough: "CanPlayThrough",
58576    playing: "Playing",
58577    seeked: "Seeked"
58578  },
58579      Hr = ["tiny", "xsmall", "small", "medium", "large", "xlarge", "huge"],
58580      Vr = {};
58581  Hr.forEach(function (e) {
58582    var t = "x" === e.charAt(0) ? "x-" + e.substring(1) : e;
58583    Vr[e] = "vjs-layout-" + t;
58584  });
58585
58586  var qr = {
58587    tiny: 210,
58588    xsmall: 320,
58589    small: 425,
58590    medium: 768,
58591    large: 1440,
58592    xlarge: 2560,
58593    huge: 1 / 0
58594  },
58595      Wr = function (c) {
58596    function l(e, t, i) {
58597      var n;
58598      if (e.id = e.id || t.id || "vjs_video_" + ne(), (t = m(l.getTagSettings(e), t)).initChildren = !1, t.createEl = !1, t.evented = !1, t.reportTouchActivity = !1, !t.language) if ("function" == typeof e.closest) {
58599        var r = e.closest("[lang]");
58600        r && r.getAttribute && (t.language = r.getAttribute("lang"));
58601      } else for (var s = e; s && 1 === s.nodeType;) {
58602        if (P(s).hasOwnProperty("lang")) {
58603          t.language = s.getAttribute("lang");
58604          break;
58605        }
58606
58607        s = s.parentNode;
58608      }
58609      if ((n = c.call(this, null, t, i) || this).boundDocumentFullscreenChange_ = ge(Ue(n), n.documentFullscreenChange_), n.boundFullWindowOnEscKey_ = ge(Ue(n), n.fullWindowOnEscKey), n.isFullscreen_ = !1, n.log = f(n.id_), n.fsApi_ = ft, n.isPosterFromTech_ = !1, n.queuedCallbacks_ = [], n.isReady_ = !1, n.hasStarted_ = !1, n.userActive_ = !1, !n.options_ || !n.options_.techOrder || !n.options_.techOrder.length) throw new Error("No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?");
58610
58611      if (n.tag = e, n.tagAttributes = e && P(e), n.language(n.options_.language), t.languages) {
58612        var a = {};
58613        Object.getOwnPropertyNames(t.languages).forEach(function (e) {
58614          a[e.toLowerCase()] = t.languages[e];
58615        }), n.languages_ = a;
58616      } else n.languages_ = l.prototype.options_.languages;
58617
58618      n.resetCache_(), n.poster_ = t.poster || "", n.controls_ = !!t.controls, e.controls = !1, e.removeAttribute("controls"), n.changingSrc_ = !1, n.playCallbacks_ = [], n.playTerminatedQueue_ = [], e.hasAttribute("autoplay") ? n.autoplay(!0) : n.autoplay(n.options_.autoplay), t.plugins && Object.keys(t.plugins).forEach(function (e) {
58619        if ("function" != typeof n[e]) throw new Error('plugin "' + e + '" does not exist');
58620      }), n.scrubbing_ = !1, n.el_ = n.createEl(), Ie(Ue(n), {
58621        eventBusKey: "el_"
58622      }), n.fsApi_.requestFullscreen && (he(h, n.fsApi_.fullscreenchange, n.boundDocumentFullscreenChange_), n.on(n.fsApi_.fullscreenchange, n.boundDocumentFullscreenChange_)), n.fluid_ && n.on("playerreset", n.updateStyleEl_);
58623      var o = Ne(n.options_);
58624      t.plugins && Object.keys(t.plugins).forEach(function (e) {
58625        n[e](t.plugins[e]);
58626      }), n.options_.playerOptions = o, n.middleware_ = [], n.initChildren(), n.isAudio("audio" === e.nodeName.toLowerCase()), n.controls() ? n.addClass("vjs-controls-enabled") : n.addClass("vjs-controls-disabled"), n.el_.setAttribute("role", "region"), n.isAudio() ? n.el_.setAttribute("aria-label", n.localize("Audio Player")) : n.el_.setAttribute("aria-label", n.localize("Video Player")), n.isAudio() && n.addClass("vjs-audio"), n.flexNotSupported_() && n.addClass("vjs-no-flex"), nt && n.addClass("vjs-touch-enabled"), at || n.addClass("vjs-workinghover"), l.players[n.id_] = Ue(n);
58627      var u = d.split(".")[0];
58628      return n.addClass("vjs-v" + u), n.userActive(!0), n.reportUserActivity(), n.one("play", n.listenForUserActivity_), n.on("stageclick", n.handleStageClick_), n.on("keydown", n.handleKeyDown), n.breakpoints(n.options_.breakpoints), n.responsive(n.options_.responsive), n;
58629    }
58630
58631    He(l, c);
58632    var e = l.prototype;
58633    return e.dispose = function () {
58634      var n = this;
58635      this.trigger("dispose"), this.off("dispose"), de(h, this.fsApi_.fullscreenchange, this.boundDocumentFullscreenChange_), de(h, "keydown", this.boundFullWindowOnEscKey_), this.styleEl_ && this.styleEl_.parentNode && (this.styleEl_.parentNode.removeChild(this.styleEl_), this.styleEl_ = null), l.players[this.id_] = null, this.tag && this.tag.player && (this.tag.player = null), this.el_ && this.el_.player && (this.el_.player = null), this.tech_ && (this.tech_.dispose(), this.isPosterFromTech_ = !1, this.poster_ = ""), this.playerElIngest_ && (this.playerElIngest_ = null), this.tag && (this.tag = null), function (e) {
58636        Wi[e.id()] = null;
58637      }(this), hi.names.forEach(function (e) {
58638        var t = hi[e],
58639            i = n[t.getterName]();
58640        i && i.off && i.off();
58641      }), c.prototype.dispose.call(this);
58642    }, e.createEl = function () {
58643      var t,
58644          i = this.tag,
58645          e = this.playerElIngest_ = i.parentNode && i.parentNode.hasAttribute && i.parentNode.hasAttribute("data-vjs-player"),
58646          n = "video-js" === this.tag.tagName.toLowerCase();
58647      e ? t = this.el_ = i.parentNode : n || (t = this.el_ = c.prototype.createEl.call(this, "div"));
58648      var r = P(i);
58649
58650      if (n) {
58651        for (t = this.el_ = i, i = this.tag = h.createElement("video"); t.children.length;) {
58652          i.appendChild(t.firstChild);
58653        }
58654
58655        w(t, "video-js") || E(t, "video-js"), t.appendChild(i), e = this.playerElIngest_ = t, Object.keys(t).forEach(function (e) {
58656          try {
58657            i[e] = t[e];
58658          } catch (e) {}
58659        });
58660      }
58661
58662      if (i.setAttribute("tabindex", "-1"), r.tabindex = "-1", (et || Je && it) && (i.setAttribute("role", "application"), r.role = "application"), i.removeAttribute("width"), i.removeAttribute("height"), "width" in r && delete r.width, "height" in r && delete r.height, Object.getOwnPropertyNames(r).forEach(function (e) {
58663        n && "class" === e || t.setAttribute(e, r[e]), n && i.setAttribute(e, r[e]);
58664      }), i.playerId = i.id, i.id += "_html5_api", i.className = "vjs-tech", i.player = t.player = this, this.addClass("vjs-paused"), !0 !== y.VIDEOJS_NO_DYNAMIC_STYLE) {
58665        this.styleEl_ = Z("vjs-styles-dimensions");
58666        var s = G(".vjs-styles-defaults"),
58667            a = G("head");
58668        a.insertBefore(this.styleEl_, s ? s.nextSibling : a.firstChild);
58669      }
58670
58671      this.fill_ = !1, this.fluid_ = !1, this.width(this.options_.width), this.height(this.options_.height), this.fill(this.options_.fill), this.fluid(this.options_.fluid), this.aspectRatio(this.options_.aspectRatio), this.crossOrigin(this.options_.crossOrigin || this.options_.crossorigin);
58672
58673      for (var o = i.getElementsByTagName("a"), u = 0; u < o.length; u++) {
58674        var l = o.item(u);
58675        E(l, "vjs-hidden"), l.setAttribute("hidden", "hidden");
58676      }
58677
58678      return i.initNetworkState_ = i.networkState, i.parentNode && !e && i.parentNode.insertBefore(t, i), C(i, t), this.children_.unshift(i), this.el_.setAttribute("lang", this.language_), this.el_ = t;
58679    }, e.crossOrigin = function (e) {
58680      if (!e) return this.techGet_("crossOrigin");
58681      "anonymous" === e || "use-credentials" === e ? this.techCall_("setCrossOrigin", e) : p.warn('crossOrigin must be "anonymous" or "use-credentials", given "' + e + '"');
58682    }, e.width = function (e) {
58683      return this.dimension("width", e);
58684    }, e.height = function (e) {
58685      return this.dimension("height", e);
58686    }, e.dimension = function (e, t) {
58687      var i = e + "_";
58688      if (void 0 === t) return this[i] || 0;
58689      if ("" === t || "auto" === t) return this[i] = void 0, void this.updateStyleEl_();
58690      var n = parseFloat(t);
58691      isNaN(n) ? p.error('Improper value "' + t + '" supplied for for ' + e) : (this[i] = n, this.updateStyleEl_());
58692    }, e.fluid = function (e) {
58693      if (void 0 === e) return !!this.fluid_;
58694      this.fluid_ = !!e, xe(this) && this.off("playerreset", this.updateStyleEl_), e ? (this.addClass("vjs-fluid"), this.fill(!1), function (e, t) {
58695        xe(e) ? t() : (e.eventedCallbacks || (e.eventedCallbacks = []), e.eventedCallbacks.push(t));
58696      }(function () {
58697        this.on("playerreset", this.updateStyleEl_);
58698      })) : this.removeClass("vjs-fluid"), this.updateStyleEl_();
58699    }, e.fill = function (e) {
58700      if (void 0 === e) return !!this.fill_;
58701      this.fill_ = !!e, e ? (this.addClass("vjs-fill"), this.fluid(!1)) : this.removeClass("vjs-fill");
58702    }, e.aspectRatio = function (e) {
58703      if (void 0 === e) return this.aspectRatio_;
58704      if (!/^\d+\:\d+$/.test(e)) throw new Error("Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.");
58705      this.aspectRatio_ = e, this.fluid(!0), this.updateStyleEl_();
58706    }, e.updateStyleEl_ = function () {
58707      if (!0 !== y.VIDEOJS_NO_DYNAMIC_STYLE) {
58708        var e,
58709            t,
58710            i,
58711            n = (void 0 !== this.aspectRatio_ && "auto" !== this.aspectRatio_ ? this.aspectRatio_ : 0 < this.videoWidth() ? this.videoWidth() + ":" + this.videoHeight() : "16:9").split(":"),
58712            r = n[1] / n[0];
58713        e = void 0 !== this.width_ ? this.width_ : void 0 !== this.height_ ? this.height_ / r : this.videoWidth() || 300, t = void 0 !== this.height_ ? this.height_ : e * r, i = /^[^a-zA-Z]/.test(this.id()) ? "dimensions-" + this.id() : this.id() + "-dimensions", this.addClass(i), ee(this.styleEl_, "\n      ." + i + " {\n        width: " + e + "px;\n        height: " + t + "px;\n      }\n\n      ." + i + ".vjs-fluid {\n        padding-top: " + 100 * r + "%;\n      }\n    ");
58714      } else {
58715        var s = "number" == typeof this.width_ ? this.width_ : this.options_.width,
58716            a = "number" == typeof this.height_ ? this.height_ : this.options_.height,
58717            o = this.tech_ && this.tech_.el();
58718        o && (0 <= s && (o.width = s), 0 <= a && (o.height = a));
58719      }
58720    }, e.loadTech_ = function (e, t) {
58721      var i = this;
58722      this.tech_ && this.unloadTech_();
58723      var n = De(e),
58724          r = e.charAt(0).toLowerCase() + e.slice(1);
58725      "Html5" !== n && this.tag && (Vi.getTech("Html5").disposeMediaElement(this.tag), this.tag.player = null, this.tag = null), this.techName_ = n, this.isReady_ = !1;
58726      var s = {
58727        source: t,
58728        autoplay: "string" != typeof this.autoplay() && this.autoplay(),
58729        nativeControlsForTouch: this.options_.nativeControlsForTouch,
58730        playerId: this.id(),
58731        techId: this.id() + "_" + r + "_api",
58732        playsinline: this.options_.playsinline,
58733        preload: this.options_.preload,
58734        loop: this.options_.loop,
58735        muted: this.options_.muted,
58736        poster: this.poster(),
58737        language: this.language(),
58738        playerElIngest: this.playerElIngest_ || !1,
58739        "vtt.js": this.options_["vtt.js"],
58740        canOverridePoster: !!this.options_.techCanOverridePoster,
58741        enableSourceset: this.options_.enableSourceset,
58742        Promise: this.options_.Promise
58743      };
58744      hi.names.forEach(function (e) {
58745        var t = hi[e];
58746        s[t.getterName] = i[t.privateName];
58747      }), m(s, this.options_[n]), m(s, this.options_[r]), m(s, this.options_[e.toLowerCase()]), this.tag && (s.tag = this.tag), t && t.src === this.cache_.src && 0 < this.cache_.currentTime && (s.startTime = this.cache_.currentTime);
58748      var a = Vi.getTech(e);
58749      if (!a) throw new Error("No Tech named '" + n + "' exists! '" + n + "' should be registered using videojs.registerTech()'");
58750      this.tech_ = new a(s), this.tech_.ready(ge(this, this.handleTechReady_), !0), Et(this.textTracksJson_ || [], this.tech_), jr.forEach(function (e) {
58751        i.on(i.tech_, e, i["handleTech" + De(e) + "_"]);
58752      }), Object.keys(Fr).forEach(function (t) {
58753        i.on(i.tech_, t, function (e) {
58754          0 === i.tech_.playbackRate() && i.tech_.seeking() ? i.queuedCallbacks_.push({
58755            callback: i["handleTech" + Fr[t] + "_"].bind(i),
58756            event: e
58757          }) : i["handleTech" + Fr[t] + "_"](e);
58758        });
58759      }), this.on(this.tech_, "loadstart", this.handleTechLoadStart_), this.on(this.tech_, "sourceset", this.handleTechSourceset_), this.on(this.tech_, "waiting", this.handleTechWaiting_), this.on(this.tech_, "ended", this.handleTechEnded_), this.on(this.tech_, "seeking", this.handleTechSeeking_), this.on(this.tech_, "play", this.handleTechPlay_), this.on(this.tech_, "firstplay", this.handleTechFirstPlay_), this.on(this.tech_, "pause", this.handleTechPause_), this.on(this.tech_, "durationchange", this.handleTechDurationChange_), this.on(this.tech_, "fullscreenchange", this.handleTechFullscreenChange_), this.on(this.tech_, "fullscreenerror", this.handleTechFullscreenError_), this.on(this.tech_, "enterpictureinpicture", this.handleTechEnterPictureInPicture_), this.on(this.tech_, "leavepictureinpicture", this.handleTechLeavePictureInPicture_), this.on(this.tech_, "error", this.handleTechError_), this.on(this.tech_, "loadedmetadata", this.updateStyleEl_), this.on(this.tech_, "posterchange", this.handleTechPosterChange_), this.on(this.tech_, "textdata", this.handleTechTextData_), this.on(this.tech_, "ratechange", this.handleTechRateChange_), this.usingNativeControls(this.techGet_("controls")), this.controls() && !this.usingNativeControls() && this.addTechControlsListeners_(), this.tech_.el().parentNode === this.el() || "Html5" === n && this.tag || C(this.tech_.el(), this.el()), this.tag && (this.tag.player = null, this.tag = null);
58760    }, e.unloadTech_ = function () {
58761      var i = this;
58762      hi.names.forEach(function (e) {
58763        var t = hi[e];
58764        i[t.privateName] = i[t.getterName]();
58765      }), this.textTracksJson_ = wt(this.tech_), this.isReady_ = !1, this.tech_.dispose(), this.tech_ = !1, this.isPosterFromTech_ && (this.poster_ = "", this.trigger("posterchange")), this.isPosterFromTech_ = !1;
58766    }, e.tech = function (e) {
58767      return void 0 === e && p.warn("Using the tech directly can be dangerous. I hope you know what you're doing.\nSee https://github.com/videojs/video.js/issues/2617 for more info.\n"), this.tech_;
58768    }, e.addTechControlsListeners_ = function () {
58769      this.removeTechControlsListeners_(), this.on(this.tech_, "mouseup", this.handleTechClick_), this.on(this.tech_, "dblclick", this.handleTechDoubleClick_), this.on(this.tech_, "touchstart", this.handleTechTouchStart_), this.on(this.tech_, "touchmove", this.handleTechTouchMove_), this.on(this.tech_, "touchend", this.handleTechTouchEnd_), this.on(this.tech_, "tap", this.handleTechTap_);
58770    }, e.removeTechControlsListeners_ = function () {
58771      this.off(this.tech_, "tap", this.handleTechTap_), this.off(this.tech_, "touchstart", this.handleTechTouchStart_), this.off(this.tech_, "touchmove", this.handleTechTouchMove_), this.off(this.tech_, "touchend", this.handleTechTouchEnd_), this.off(this.tech_, "mouseup", this.handleTechClick_), this.off(this.tech_, "dblclick", this.handleTechDoubleClick_);
58772    }, e.handleTechReady_ = function () {
58773      this.triggerReady(), this.cache_.volume && this.techCall_("setVolume", this.cache_.volume), this.handleTechPosterChange_(), this.handleTechDurationChange_();
58774    }, e.handleTechLoadStart_ = function () {
58775      this.removeClass("vjs-ended"), this.removeClass("vjs-seeking"), this.error(null), this.handleTechDurationChange_(), this.paused() ? (this.hasStarted(!1), this.trigger("loadstart")) : (this.trigger("loadstart"), this.trigger("firstplay")), this.manualAutoplay_(this.autoplay());
58776    }, e.manualAutoplay_ = function (t) {
58777      var n = this;
58778
58779      if (this.tech_ && "string" == typeof t) {
58780        var e,
58781            i = function i() {
58782          var e = n.muted();
58783          n.muted(!0);
58784
58785          function t() {
58786            n.muted(e);
58787          }
58788
58789          n.playTerminatedQueue_.push(t);
58790          var i = n.play();
58791          if (St(i)) return i["catch"](t);
58792        };
58793
58794        if ("any" === t && !0 !== this.muted() ? St(e = this.play()) && (e = e["catch"](i)) : e = "muted" === t && !0 !== this.muted() ? i() : this.play(), St(e)) return e.then(function () {
58795          n.trigger({
58796            type: "autoplay-success",
58797            autoplay: t
58798          });
58799        })["catch"](function (e) {
58800          n.trigger({
58801            type: "autoplay-failure",
58802            autoplay: t
58803          });
58804        });
58805      }
58806    }, e.updateSourceCaches_ = function (e) {
58807      void 0 === e && (e = "");
58808      var t = e,
58809          i = "";
58810      "string" != typeof t && (t = e.src, i = e.type), this.cache_.source = this.cache_.source || {}, this.cache_.sources = this.cache_.sources || [], t && !i && (i = function (e, t) {
58811        if (!t) return "";
58812        if (e.cache_.source.src === t && e.cache_.source.type) return e.cache_.source.type;
58813        var i = e.cache_.sources.filter(function (e) {
58814          return e.src === t;
58815        });
58816        if (i.length) return i[0].type;
58817
58818        for (var n = e.$$("source"), r = 0; r < n.length; r++) {
58819          var s = n[r];
58820          if (s.type && s.src && s.src === t) return s.type;
58821        }
58822
58823        return Zi(t);
58824      }(this, t)), this.cache_.source = Ne({}, e, {
58825        src: t,
58826        type: i
58827      });
58828
58829      for (var n = this.cache_.sources.filter(function (e) {
58830        return e.src && e.src === t;
58831      }), r = [], s = this.$$("source"), a = [], o = 0; o < s.length; o++) {
58832        var u = P(s[o]);
58833        r.push(u), u.src && u.src === t && a.push(u.src);
58834      }
58835
58836      a.length && !n.length ? this.cache_.sources = r : n.length || (this.cache_.sources = [this.cache_.source]), this.cache_.src = t;
58837    }, e.handleTechSourceset_ = function (e) {
58838      var i = this;
58839
58840      if (!this.changingSrc_) {
58841        var t = function t(e) {
58842          return i.updateSourceCaches_(e);
58843        },
58844            n = this.currentSource().src,
58845            r = e.src;
58846
58847        n && !/^blob:/.test(n) && /^blob:/.test(r) && (this.lastSource_ && (this.lastSource_.tech === r || this.lastSource_.player === n) || (t = function t() {})), t(r), e.src || this.tech_.any(["sourceset", "loadstart"], function (e) {
58848          if ("sourceset" !== e.type) {
58849            var t = i.techGet("currentSrc");
58850            i.lastSource_.tech = t, i.updateSourceCaches_(t);
58851          }
58852        });
58853      }
58854
58855      this.lastSource_ = {
58856        player: this.currentSource().src,
58857        tech: e.src
58858      }, this.trigger({
58859        src: e.src,
58860        type: "sourceset"
58861      });
58862    }, e.hasStarted = function (e) {
58863      if (void 0 === e) return this.hasStarted_;
58864      e !== this.hasStarted_ && (this.hasStarted_ = e, this.hasStarted_ ? (this.addClass("vjs-has-started"), this.trigger("firstplay")) : this.removeClass("vjs-has-started"));
58865    }, e.handleTechPlay_ = function () {
58866      this.removeClass("vjs-ended"), this.removeClass("vjs-paused"), this.addClass("vjs-playing"), this.hasStarted(!0), this.trigger("play");
58867    }, e.handleTechRateChange_ = function () {
58868      0 < this.tech_.playbackRate() && 0 === this.cache_.lastPlaybackRate && (this.queuedCallbacks_.forEach(function (e) {
58869        return e.callback(e.event);
58870      }), this.queuedCallbacks_ = []), this.cache_.lastPlaybackRate = this.tech_.playbackRate(), this.trigger("ratechange");
58871    }, e.handleTechWaiting_ = function () {
58872      var t = this;
58873      this.addClass("vjs-waiting"), this.trigger("waiting");
58874      var i = this.currentTime();
58875      this.on("timeupdate", function e() {
58876        i !== t.currentTime() && (t.removeClass("vjs-waiting"), t.off("timeupdate", e));
58877      });
58878    }, e.handleTechCanPlay_ = function () {
58879      this.removeClass("vjs-waiting"), this.trigger("canplay");
58880    }, e.handleTechCanPlayThrough_ = function () {
58881      this.removeClass("vjs-waiting"), this.trigger("canplaythrough");
58882    }, e.handleTechPlaying_ = function () {
58883      this.removeClass("vjs-waiting"), this.trigger("playing");
58884    }, e.handleTechSeeking_ = function () {
58885      this.addClass("vjs-seeking"), this.trigger("seeking");
58886    }, e.handleTechSeeked_ = function () {
58887      this.removeClass("vjs-seeking"), this.removeClass("vjs-ended"), this.trigger("seeked");
58888    }, e.handleTechFirstPlay_ = function () {
58889      this.options_.starttime && (p.warn("Passing the `starttime` option to the player will be deprecated in 6.0"), this.currentTime(this.options_.starttime)), this.addClass("vjs-has-started"), this.trigger("firstplay");
58890    }, e.handleTechPause_ = function () {
58891      this.removeClass("vjs-playing"), this.addClass("vjs-paused"), this.trigger("pause");
58892    }, e.handleTechEnded_ = function () {
58893      this.addClass("vjs-ended"), this.options_.loop ? (this.currentTime(0), this.play()) : this.paused() || this.pause(), this.trigger("ended");
58894    }, e.handleTechDurationChange_ = function () {
58895      this.duration(this.techGet_("duration"));
58896    }, e.handleTechClick_ = function (e) {
58897      W(e) && this.controls_ && (this.paused() ? kt(this.play()) : this.pause());
58898    }, e.handleTechDoubleClick_ = function (t) {
58899      this.controls_ && (Array.prototype.some.call(this.$$(".vjs-control-bar, .vjs-modal-dialog"), function (e) {
58900        return e.contains(t.target);
58901      }) || void 0 !== this.options_ && void 0 !== this.options_.userActions && void 0 !== this.options_.userActions.doubleClick && !1 === this.options_.userActions.doubleClick || (void 0 !== this.options_ && void 0 !== this.options_.userActions && "function" == typeof this.options_.userActions.doubleClick ? this.options_.userActions.doubleClick.call(this, t) : this.isFullscreen() ? this.exitFullscreen() : this.requestFullscreen()));
58902    }, e.handleTechTap_ = function () {
58903      this.userActive(!this.userActive());
58904    }, e.handleTechTouchStart_ = function () {
58905      this.userWasActive = this.userActive();
58906    }, e.handleTechTouchMove_ = function () {
58907      this.userWasActive && this.reportUserActivity();
58908    }, e.handleTechTouchEnd_ = function (e) {
58909      e.preventDefault();
58910    }, e.handleStageClick_ = function () {
58911      this.reportUserActivity();
58912    }, e.toggleFullscreenClass_ = function () {
58913      this.isFullscreen() ? this.addClass("vjs-fullscreen") : this.removeClass("vjs-fullscreen");
58914    }, e.documentFullscreenChange_ = function (e) {
58915      var t = e.target.player;
58916
58917      if (!t || t === this) {
58918        var i = this.el(),
58919            n = h[this.fsApi_.fullscreenElement] === i;
58920        !n && i.matches ? n = i.matches(":" + this.fsApi_.fullscreen) : !n && i.msMatchesSelector && (n = i.msMatchesSelector(":" + this.fsApi_.fullscreen)), this.isFullscreen(n);
58921      }
58922    }, e.handleTechFullscreenChange_ = function (e, t) {
58923      t && (t.nativeIOSFullscreen && this.toggleClass("vjs-ios-native-fs"), this.isFullscreen(t.isFullscreen));
58924    }, e.handleTechFullscreenError_ = function (e, t) {
58925      this.trigger("fullscreenerror", t);
58926    }, e.togglePictureInPictureClass_ = function () {
58927      this.isInPictureInPicture() ? this.addClass("vjs-picture-in-picture") : this.removeClass("vjs-picture-in-picture");
58928    }, e.handleTechEnterPictureInPicture_ = function (e) {
58929      this.isInPictureInPicture(!0);
58930    }, e.handleTechLeavePictureInPicture_ = function (e) {
58931      this.isInPictureInPicture(!1);
58932    }, e.handleTechError_ = function () {
58933      var e = this.tech_.error();
58934      this.error(e);
58935    }, e.handleTechTextData_ = function (e, t) {
58936      var i = null;
58937      1 < arguments.length && (i = t), this.trigger("textdata", i);
58938    }, e.getCache = function () {
58939      return this.cache_;
58940    }, e.resetCache_ = function () {
58941      this.cache_ = {
58942        currentTime: 0,
58943        initTime: 0,
58944        inactivityTimeout: this.options_.inactivityTimeout,
58945        duration: NaN,
58946        lastVolume: 1,
58947        lastPlaybackRate: this.defaultPlaybackRate(),
58948        media: null,
58949        src: "",
58950        source: {},
58951        sources: [],
58952        volume: 1
58953      };
58954    }, e.techCall_ = function (e, t) {
58955      this.ready(function () {
58956        if (e in Yi) return function (e, t, i, n) {
58957          return t[i](e.reduce(Qi(i), n));
58958        }(this.middleware_, this.tech_, e, t);
58959        if (e in $i) return Xi(this.middleware_, this.tech_, e, t);
58960
58961        try {
58962          this.tech_ && this.tech_[e](t);
58963        } catch (e) {
58964          throw p(e), e;
58965        }
58966      }, !0);
58967    }, e.techGet_ = function (t) {
58968      if (this.tech_ && this.tech_.isReady_) {
58969        if (t in Ki) return function (e, t, i) {
58970          return e.reduceRight(Qi(i), t[i]());
58971        }(this.middleware_, this.tech_, t);
58972        if (t in $i) return Xi(this.middleware_, this.tech_, t);
58973
58974        try {
58975          return this.tech_[t]();
58976        } catch (e) {
58977          if (void 0 === this.tech_[t]) throw p("Video.js: " + t + " method not defined for " + this.techName_ + " playback technology.", e), e;
58978          if ("TypeError" === e.name) throw p("Video.js: " + t + " unavailable on " + this.techName_ + " playback technology element.", e), this.tech_.isReady_ = !1, e;
58979          throw p(e), e;
58980        }
58981      }
58982    }, e.play = function () {
58983      var t = this,
58984          e = this.options_.Promise || y.Promise;
58985      return e ? new e(function (e) {
58986        t.play_(e);
58987      }) : this.play_();
58988    }, e.play_ = function (e) {
58989      var t = this;
58990      void 0 === e && (e = kt), this.playCallbacks_.push(e);
58991      var i = Boolean(!this.changingSrc_ && (this.src() || this.currentSrc()));
58992      if (this.waitToPlay_ && (this.off(["ready", "loadstart"], this.waitToPlay_), this.waitToPlay_ = null), !this.isReady_ || !i) return this.waitToPlay_ = function (e) {
58993        t.play_();
58994      }, this.one(["ready", "loadstart"], this.waitToPlay_), void (i || !ot && !at || this.load());
58995      var n = this.techGet_("play");
58996      null === n ? this.runPlayTerminatedQueue_() : this.runPlayCallbacks_(n);
58997    }, e.runPlayTerminatedQueue_ = function () {
58998      var e = this.playTerminatedQueue_.slice(0);
58999      this.playTerminatedQueue_ = [], e.forEach(function (e) {
59000        e();
59001      });
59002    }, e.runPlayCallbacks_ = function (t) {
59003      var e = this.playCallbacks_.slice(0);
59004      this.playCallbacks_ = [], this.playTerminatedQueue_ = [], e.forEach(function (e) {
59005        e(t);
59006      });
59007    }, e.pause = function () {
59008      this.techCall_("pause");
59009    }, e.paused = function () {
59010      return !1 !== this.techGet_("paused");
59011    }, e.played = function () {
59012      return this.techGet_("played") || ht(0, 0);
59013    }, e.scrubbing = function (e) {
59014      if ("undefined" == typeof e) return this.scrubbing_;
59015      this.scrubbing_ = !!e, e ? this.addClass("vjs-scrubbing") : this.removeClass("vjs-scrubbing");
59016    }, e.currentTime = function (e) {
59017      return "undefined" != typeof e ? (e < 0 && (e = 0), this.isReady_ && !this.changingSrc_ && this.tech_ && this.tech_.isReady_ ? (this.techCall_("setCurrentTime", e), void (this.cache_.initTime = 0)) : (this.cache_.initTime = e, this.off("canplay", this.applyInitTime_), void this.one("canplay", this.applyInitTime_))) : (this.cache_.currentTime = this.techGet_("currentTime") || 0, this.cache_.currentTime);
59018    }, e.applyInitTime_ = function () {
59019      this.currentTime(this.cache_.initTime);
59020    }, e.duration = function (e) {
59021      if (void 0 === e) return void 0 !== this.cache_.duration ? this.cache_.duration : NaN;
59022      (e = parseFloat(e)) < 0 && (e = 1 / 0), e !== this.cache_.duration && ((this.cache_.duration = e) === 1 / 0 ? this.addClass("vjs-live") : this.removeClass("vjs-live"), isNaN(e) || this.trigger("durationchange"));
59023    }, e.remainingTime = function () {
59024      return this.duration() - this.currentTime();
59025    }, e.remainingTimeDisplay = function () {
59026      return Math.floor(this.duration()) - Math.floor(this.currentTime());
59027    }, e.buffered = function () {
59028      var e = this.techGet_("buffered");
59029      return e && e.length || (e = ht(0, 0)), e;
59030    }, e.bufferedPercent = function () {
59031      return dt(this.buffered(), this.duration());
59032    }, e.bufferedEnd = function () {
59033      var e = this.buffered(),
59034          t = this.duration(),
59035          i = e.end(e.length - 1);
59036      return t < i && (i = t), i;
59037    }, e.volume = function (e) {
59038      var t;
59039      return void 0 !== e ? (t = Math.max(0, Math.min(1, parseFloat(e))), this.cache_.volume = t, this.techCall_("setVolume", t), void (0 < t && this.lastVolume_(t))) : (t = parseFloat(this.techGet_("volume")), isNaN(t) ? 1 : t);
59040    }, e.muted = function (e) {
59041      if (void 0 === e) return this.techGet_("muted") || !1;
59042      this.techCall_("setMuted", e);
59043    }, e.defaultMuted = function (e) {
59044      return void 0 !== e ? this.techCall_("setDefaultMuted", e) : this.techGet_("defaultMuted") || !1;
59045    }, e.lastVolume_ = function (e) {
59046      if (void 0 === e || 0 === e) return this.cache_.lastVolume;
59047      this.cache_.lastVolume = e;
59048    }, e.supportsFullScreen = function () {
59049      return this.techGet_("supportsFullScreen") || !1;
59050    }, e.isFullscreen = function (e) {
59051      if (void 0 === e) return this.isFullscreen_;
59052      var t = this.isFullscreen_;
59053      return this.isFullscreen_ = Boolean(e), this.isFullscreen_ !== t && this.fsApi_.prefixed && this.trigger("fullscreenchange"), void this.toggleFullscreenClass_();
59054    }, e.requestFullscreen = function (a) {
59055      var e = this.options_.Promise || y.Promise;
59056
59057      if (e) {
59058        var o = this;
59059        return new e(function (e, i) {
59060          function n() {
59061            o.off("fullscreenerror", r), o.off("fullscreenchange", t);
59062          }
59063
59064          function t() {
59065            n(), e();
59066          }
59067
59068          function r(e, t) {
59069            n(), i(t);
59070          }
59071
59072          o.one("fullscreenchange", t), o.one("fullscreenerror", r);
59073          var s = o.requestFullscreenHelper_(a);
59074          if (s) return s.then(n, n), s;
59075        });
59076      }
59077
59078      return this.requestFullscreenHelper_();
59079    }, e.requestFullscreenHelper_ = function (e) {
59080      var t,
59081          i = this;
59082
59083      if (this.fsApi_.prefixed || (t = this.options_.fullscreen && this.options_.fullscreen.options || {}, void 0 !== e && (t = e)), this.fsApi_.requestFullscreen) {
59084        var n = this.el_[this.fsApi_.requestFullscreen](t);
59085        return n && n.then(function () {
59086          return i.isFullscreen(!0);
59087        }, function () {
59088          return i.isFullscreen(!1);
59089        }), n;
59090      }
59091
59092      this.tech_.supportsFullScreen() ? this.techCall_("enterFullScreen") : this.enterFullWindow();
59093    }, e.exitFullscreen = function () {
59094      var e = this.options_.Promise || y.Promise;
59095
59096      if (e) {
59097        var a = this;
59098        return new e(function (e, i) {
59099          function n() {
59100            a.off("fullscreenerror", r), a.off("fullscreenchange", t);
59101          }
59102
59103          function t() {
59104            n(), e();
59105          }
59106
59107          function r(e, t) {
59108            n(), i(t);
59109          }
59110
59111          a.one("fullscreenchange", t), a.one("fullscreenerror", r);
59112          var s = a.exitFullscreenHelper_();
59113          if (s) return s.then(n, n), s;
59114        });
59115      }
59116
59117      return this.exitFullscreenHelper_();
59118    }, e.exitFullscreenHelper_ = function () {
59119      var e = this;
59120
59121      if (this.fsApi_.requestFullscreen) {
59122        var t = h[this.fsApi_.exitFullscreen]();
59123        return t && t.then(function () {
59124          return e.isFullscreen(!1);
59125        }), t;
59126      }
59127
59128      this.tech_.supportsFullScreen() ? this.techCall_("exitFullScreen") : this.exitFullWindow();
59129    }, e.enterFullWindow = function () {
59130      this.isFullscreen(!0), this.isFullWindow = !0, this.docOrigOverflow = h.documentElement.style.overflow, he(h, "keydown", this.boundFullWindowOnEscKey_), h.documentElement.style.overflow = "hidden", E(h.body, "vjs-full-window"), this.trigger("enterFullWindow");
59131    }, e.fullWindowOnEscKey = function (e) {
59132      xt.isEventKey(e, "Esc") && (!0 === this.isFullscreen() ? this.exitFullscreen() : this.exitFullWindow());
59133    }, e.exitFullWindow = function () {
59134      this.isFullscreen(!1), this.isFullWindow = !1, de(h, "keydown", this.boundFullWindowOnEscKey_), h.documentElement.style.overflow = this.docOrigOverflow, x(h.body, "vjs-full-window"), this.trigger("exitFullWindow");
59135    }, e.isInPictureInPicture = function (e) {
59136      return void 0 !== e ? (this.isInPictureInPicture_ = !!e, void this.togglePictureInPictureClass_()) : !!this.isInPictureInPicture_;
59137    }, e.requestPictureInPicture = function () {
59138      if ("pictureInPictureEnabled" in h) return this.techGet_("requestPictureInPicture");
59139    }, e.exitPictureInPicture = function () {
59140      if ("pictureInPictureEnabled" in h) return h.exitPictureInPicture();
59141    }, e.handleKeyDown = function (e) {
59142      var t = this.options_.userActions;
59143
59144      if (t && t.hotkeys) {
59145        !function (e) {
59146          var t = e.tagName.toLowerCase();
59147          if (e.isContentEditable) return !0;
59148          if ("input" === t) return -1 === ["button", "checkbox", "hidden", "radio", "reset", "submit"].indexOf(e.type);
59149          return -1 !== ["textarea"].indexOf(t);
59150        }(this.el_.ownerDocument.activeElement) && ("function" == typeof t.hotkeys ? t.hotkeys.call(this, e) : this.handleHotkeys(e));
59151      }
59152    }, e.handleHotkeys = function (e) {
59153      var t = this.options_.userActions ? this.options_.userActions.hotkeys : {},
59154          i = t.fullscreenKey,
59155          n = void 0 === i ? function (e) {
59156        return xt.isEventKey(e, "f");
59157      } : i,
59158          r = t.muteKey,
59159          s = void 0 === r ? function (e) {
59160        return xt.isEventKey(e, "m");
59161      } : r,
59162          a = t.playPauseKey,
59163          o = void 0 === a ? function (e) {
59164        return xt.isEventKey(e, "k") || xt.isEventKey(e, "Space");
59165      } : a;
59166
59167      if (n.call(this, e)) {
59168        e.preventDefault(), e.stopPropagation();
59169        var u = Re.getComponent("FullscreenToggle");
59170        !1 !== h[this.fsApi_.fullscreenEnabled] && u.prototype.handleClick.call(this, e);
59171      } else if (s.call(this, e)) {
59172        e.preventDefault(), e.stopPropagation(), Re.getComponent("MuteToggle").prototype.handleClick.call(this, e);
59173      } else if (o.call(this, e)) {
59174        e.preventDefault(), e.stopPropagation(), Re.getComponent("PlayToggle").prototype.handleClick.call(this, e);
59175      }
59176    }, e.canPlayType = function (e) {
59177      for (var t, i = 0, n = this.options_.techOrder; i < n.length; i++) {
59178        var r = n[i],
59179            s = Vi.getTech(r);
59180
59181        if (s = s || Re.getComponent(r)) {
59182          if (s.isSupported() && (t = s.canPlayType(e))) return t;
59183        } else p.error('The "' + r + '" tech is undefined. Skipped browser support check for that tech.');
59184      }
59185
59186      return "";
59187    }, e.selectSource = function (e) {
59188      function t(e, i, n) {
59189        var r;
59190        return e.some(function (t) {
59191          return i.some(function (e) {
59192            if (r = n(t, e)) return !0;
59193          });
59194        }), r;
59195      }
59196
59197      function i(e, t) {
59198        var i = e[0];
59199        if (e[1].canPlaySource(t, r.options_[i.toLowerCase()])) return {
59200          source: t,
59201          tech: i
59202        };
59203      }
59204
59205      var n,
59206          r = this,
59207          s = this.options_.techOrder.map(function (e) {
59208        return [e, Vi.getTech(e)];
59209      }).filter(function (e) {
59210        var t = e[0],
59211            i = e[1];
59212        return i ? i.isSupported() : (p.error('The "' + t + '" tech is undefined. Skipped browser support check for that tech.'), !1);
59213      });
59214      return (this.options_.sourceOrder ? t(e, s, (n = i, function (e, t) {
59215        return n(t, e);
59216      })) : t(s, e, i)) || !1;
59217    }, e.src = function (e) {
59218      var i = this;
59219      if ("undefined" == typeof e) return this.cache_.src || "";
59220
59221      var n = function t(e) {
59222        if (Array.isArray(e)) {
59223          var i = [];
59224          e.forEach(function (e) {
59225            e = t(e), Array.isArray(e) ? i = i.concat(e) : o(e) && i.push(e);
59226          }), e = i;
59227        } else e = "string" == typeof e && e.trim() ? [tn({
59228          src: e
59229        })] : o(e) && "string" == typeof e.src && e.src && e.src.trim() ? [tn(e)] : [];
59230
59231        return e;
59232      }(e);
59233
59234      n.length ? (this.changingSrc_ = !0, this.cache_.sources = n, this.updateSourceCaches_(n[0]), Gi(this, n[0], function (e, t) {
59235        if (i.middleware_ = t, i.cache_.sources = n, i.updateSourceCaches_(e), i.src_(e)) return 1 < n.length ? i.src(n.slice(1)) : (i.changingSrc_ = !1, i.setTimeout(function () {
59236          this.error({
59237            code: 4,
59238            message: this.localize(this.options_.notSupportedMessage)
59239          });
59240        }, 0), void i.triggerReady());
59241        !function (e, t) {
59242          e.forEach(function (e) {
59243            return e.setTech && e.setTech(t);
59244          });
59245        }(t, i.tech_);
59246      })) : this.setTimeout(function () {
59247        this.error({
59248          code: 4,
59249          message: this.localize(this.options_.notSupportedMessage)
59250        });
59251      }, 0);
59252    }, e.src_ = function (e) {
59253      var t = this,
59254          i = this.selectSource([e]);
59255      return !i || (function (e, t) {
59256        return De(e) === De(t);
59257      }(i.tech, this.techName_) ? this.ready(function () {
59258        this.tech_.constructor.prototype.hasOwnProperty("setSource") ? this.techCall_("setSource", e) : this.techCall_("src", e.src), this.changingSrc_ = !1;
59259      }, !0) : (this.changingSrc_ = !0, this.loadTech_(i.tech, i.source), this.tech_.ready(function () {
59260        t.changingSrc_ = !1;
59261      })), !1);
59262    }, e.load = function () {
59263      this.techCall_("load");
59264    }, e.reset = function () {
59265      var e = this,
59266          t = this.options_.Promise || y.Promise;
59267      this.paused() || !t ? this.doReset_() : kt(this.play().then(function () {
59268        return e.doReset_();
59269      }));
59270    }, e.doReset_ = function () {
59271      this.tech_ && this.tech_.clearTracks("text"), this.resetCache_(), this.poster(""), this.loadTech_(this.options_.techOrder[0], null), this.techCall_("reset"), this.resetControlBarUI_(), xe(this) && this.trigger("playerreset");
59272    }, e.resetControlBarUI_ = function () {
59273      this.resetProgressBar_(), this.resetPlaybackRate_(), this.resetVolumeBar_();
59274    }, e.resetProgressBar_ = function () {
59275      this.currentTime(0);
59276      var e = this.controlBar,
59277          t = e.durationDisplay,
59278          i = e.remainingTimeDisplay;
59279      t && t.updateContent(), i && i.updateContent();
59280    }, e.resetPlaybackRate_ = function () {
59281      this.playbackRate(this.defaultPlaybackRate()), this.handleTechRateChange_();
59282    }, e.resetVolumeBar_ = function () {
59283      this.volume(1), this.trigger("volumechange");
59284    }, e.currentSources = function () {
59285      var e = this.currentSource(),
59286          t = [];
59287      return 0 !== Object.keys(e).length && t.push(e), this.cache_.sources || t;
59288    }, e.currentSource = function () {
59289      return this.cache_.source || {};
59290    }, e.currentSrc = function () {
59291      return this.currentSource() && this.currentSource().src || "";
59292    }, e.currentType = function () {
59293      return this.currentSource() && this.currentSource().type || "";
59294    }, e.preload = function (e) {
59295      return void 0 !== e ? (this.techCall_("setPreload", e), void (this.options_.preload = e)) : this.techGet_("preload");
59296    }, e.autoplay = function (e) {
59297      if (void 0 === e) return this.options_.autoplay || !1;
59298      var t;
59299      "string" == typeof e && /(any|play|muted)/.test(e) ? (this.options_.autoplay = e, this.manualAutoplay_(e), t = !1) : this.options_.autoplay = !!e, t = "undefined" == typeof t ? this.options_.autoplay : t, this.tech_ && this.techCall_("setAutoplay", t);
59300    }, e.playsinline = function (e) {
59301      return void 0 !== e ? (this.techCall_("setPlaysinline", e), this.options_.playsinline = e, this) : this.techGet_("playsinline");
59302    }, e.loop = function (e) {
59303      return void 0 !== e ? (this.techCall_("setLoop", e), void (this.options_.loop = e)) : this.techGet_("loop");
59304    }, e.poster = function (e) {
59305      if (void 0 === e) return this.poster_;
59306      (e = e || "") !== this.poster_ && (this.poster_ = e, this.techCall_("setPoster", e), this.isPosterFromTech_ = !1, this.trigger("posterchange"));
59307    }, e.handleTechPosterChange_ = function () {
59308      if ((!this.poster_ || this.options_.techCanOverridePoster) && this.tech_ && this.tech_.poster) {
59309        var e = this.tech_.poster() || "";
59310        e !== this.poster_ && (this.poster_ = e, this.isPosterFromTech_ = !0, this.trigger("posterchange"));
59311      }
59312    }, e.controls = function (e) {
59313      if (void 0 === e) return !!this.controls_;
59314      e = !!e, this.controls_ !== e && (this.controls_ = e, this.usingNativeControls() && this.techCall_("setControls", e), this.controls_ ? (this.removeClass("vjs-controls-disabled"), this.addClass("vjs-controls-enabled"), this.trigger("controlsenabled"), this.usingNativeControls() || this.addTechControlsListeners_()) : (this.removeClass("vjs-controls-enabled"), this.addClass("vjs-controls-disabled"), this.trigger("controlsdisabled"), this.usingNativeControls() || this.removeTechControlsListeners_()));
59315    }, e.usingNativeControls = function (e) {
59316      if (void 0 === e) return !!this.usingNativeControls_;
59317      e = !!e, this.usingNativeControls_ !== e && (this.usingNativeControls_ = e, this.usingNativeControls_ ? (this.addClass("vjs-using-native-controls"), this.trigger("usingnativecontrols")) : (this.removeClass("vjs-using-native-controls"), this.trigger("usingcustomcontrols")));
59318    }, e.error = function (e) {
59319      if (void 0 === e) return this.error_ || null;
59320
59321      if (this.options_.suppressNotSupportedError && e && 4 === e.code) {
59322        var t = function t() {
59323          this.error(e);
59324        };
59325
59326        return this.options_.suppressNotSupportedError = !1, this.any(["click", "touchstart"], t), void this.one("loadstart", function () {
59327          this.off(["click", "touchstart"], t);
59328        });
59329      }
59330
59331      if (null === e) return this.error_ = e, this.removeClass("vjs-error"), void (this.errorDisplay && this.errorDisplay.close());
59332      this.error_ = new _t(e), this.addClass("vjs-error"), p.error("(CODE:" + this.error_.code + " " + _t.errorTypes[this.error_.code] + ")", this.error_.message, this.error_), this.trigger("error");
59333    }, e.reportUserActivity = function (e) {
59334      this.userActivity_ = !0;
59335    }, e.userActive = function (e) {
59336      if (void 0 === e) return this.userActive_;
59337
59338      if ((e = !!e) !== this.userActive_) {
59339        if (this.userActive_ = e, this.userActive_) return this.userActivity_ = !0, this.removeClass("vjs-user-inactive"), this.addClass("vjs-user-active"), void this.trigger("useractive");
59340        this.tech_ && this.tech_.one("mousemove", function (e) {
59341          e.stopPropagation(), e.preventDefault();
59342        }), this.userActivity_ = !1, this.removeClass("vjs-user-active"), this.addClass("vjs-user-inactive"), this.trigger("userinactive");
59343      }
59344    }, e.listenForUserActivity_ = function () {
59345      function e(e) {
59346        r(), this.clearInterval(t);
59347      }
59348
59349      var t,
59350          i,
59351          n,
59352          r = ge(this, this.reportUserActivity);
59353      this.on("mousedown", function () {
59354        r(), this.clearInterval(t), t = this.setInterval(r, 250);
59355      }), this.on("mousemove", function (e) {
59356        e.screenX === i && e.screenY === n || (i = e.screenX, n = e.screenY, r());
59357      }), this.on("mouseup", e), this.on("mouseleave", e);
59358      var s,
59359          a = this.getChild("controlBar");
59360      !a || at || Xe || (a.on("mouseenter", function (e) {
59361        this.player().cache_.inactivityTimeout = this.player().options_.inactivityTimeout, this.player().options_.inactivityTimeout = 0;
59362      }), a.on("mouseleave", function (e) {
59363        this.player().options_.inactivityTimeout = this.player().cache_.inactivityTimeout;
59364      })), this.on("keydown", r), this.on("keyup", r), this.setInterval(function () {
59365        if (this.userActivity_) {
59366          this.userActivity_ = !1, this.userActive(!0), this.clearTimeout(s);
59367          var e = this.options_.inactivityTimeout;
59368          e <= 0 || (s = this.setTimeout(function () {
59369            this.userActivity_ || this.userActive(!1);
59370          }, e));
59371        }
59372      }, 250);
59373    }, e.playbackRate = function (e) {
59374      if (void 0 === e) return this.tech_ && this.tech_.featuresPlaybackRate ? this.cache_.lastPlaybackRate || this.techGet_("playbackRate") : 1;
59375      this.techCall_("setPlaybackRate", e);
59376    }, e.defaultPlaybackRate = function (e) {
59377      return void 0 !== e ? this.techCall_("setDefaultPlaybackRate", e) : this.tech_ && this.tech_.featuresPlaybackRate ? this.techGet_("defaultPlaybackRate") : 1;
59378    }, e.isAudio = function (e) {
59379      if (void 0 === e) return !!this.isAudio_;
59380      this.isAudio_ = !!e;
59381    }, e.addTextTrack = function (e, t, i) {
59382      if (this.tech_) return this.tech_.addTextTrack(e, t, i);
59383    }, e.addRemoteTextTrack = function (e, t) {
59384      if (this.tech_) return this.tech_.addRemoteTextTrack(e, t);
59385    }, e.removeRemoteTextTrack = function (e) {
59386      void 0 === e && (e = {});
59387      var t = e.track;
59388      if (t = t || e, this.tech_) return this.tech_.removeRemoteTextTrack(t);
59389    }, e.getVideoPlaybackQuality = function () {
59390      return this.techGet_("getVideoPlaybackQuality");
59391    }, e.videoWidth = function () {
59392      return this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth() || 0;
59393    }, e.videoHeight = function () {
59394      return this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight() || 0;
59395    }, e.language = function (e) {
59396      if (void 0 === e) return this.language_;
59397      this.language_ = String(e).toLowerCase();
59398    }, e.languages = function () {
59399      return Ne(l.prototype.options_.languages, this.languages_);
59400    }, e.toJSON = function () {
59401      var e = Ne(this.options_),
59402          t = e.tracks;
59403      e.tracks = [];
59404
59405      for (var i = 0; i < t.length; i++) {
59406        var n = t[i];
59407        (n = Ne(n)).player = void 0, e.tracks[i] = n;
59408      }
59409
59410      return e;
59411    }, e.createModal = function (e, t) {
59412      var i = this;
59413      (t = t || {}).content = e || "";
59414      var n = new It(this, t);
59415      return this.addChild(n), n.on("dispose", function () {
59416        i.removeChild(n);
59417      }), n.open(), n;
59418    }, e.updateCurrentBreakpoint_ = function () {
59419      if (this.responsive()) for (var e = this.currentBreakpoint(), t = this.currentWidth(), i = 0; i < Hr.length; i++) {
59420        var n = Hr[i];
59421
59422        if (t <= this.breakpoints_[n]) {
59423          if (e === n) return;
59424          e && this.removeClass(Vr[e]), this.addClass(Vr[n]), this.breakpoint_ = n;
59425          break;
59426        }
59427      }
59428    }, e.removeCurrentBreakpoint_ = function () {
59429      var e = this.currentBreakpointClass();
59430      this.breakpoint_ = "", e && this.removeClass(e);
59431    }, e.breakpoints = function (e) {
59432      return void 0 === e || (this.breakpoint_ = "", this.breakpoints_ = m({}, qr, e), this.updateCurrentBreakpoint_()), m(this.breakpoints_);
59433    }, e.responsive = function (e) {
59434      return void 0 === e ? this.responsive_ : (e = Boolean(e)) !== this.responsive_ ? ((this.responsive_ = e) ? (this.on("playerresize", this.updateCurrentBreakpoint_), this.updateCurrentBreakpoint_()) : (this.off("playerresize", this.updateCurrentBreakpoint_), this.removeCurrentBreakpoint_()), e) : void 0;
59435    }, e.currentBreakpoint = function () {
59436      return this.breakpoint_;
59437    }, e.currentBreakpointClass = function () {
59438      return Vr[this.breakpoint_] || "";
59439    }, e.loadMedia = function (e, t) {
59440      var i = this;
59441
59442      if (e && "object" == _typeof(e)) {
59443        this.reset(), this.cache_.media = Ne(e);
59444        var n = this.cache_.media,
59445            r = n.artwork,
59446            s = n.poster,
59447            a = n.src,
59448            o = n.textTracks;
59449        !r && s && (this.cache_.media.artwork = [{
59450          src: s,
59451          type: Zi(s)
59452        }]), a && this.src(a), s && this.poster(s), Array.isArray(o) && o.forEach(function (e) {
59453          return i.addRemoteTextTrack(e, !1);
59454        }), this.ready(t);
59455      }
59456    }, e.getMedia = function () {
59457      if (this.cache_.media) return Ne(this.cache_.media);
59458      var e = this.poster(),
59459          t = {
59460        src: this.currentSources(),
59461        textTracks: Array.prototype.map.call(this.remoteTextTracks(), function (e) {
59462          return {
59463            kind: e.kind,
59464            label: e.label,
59465            language: e.language,
59466            src: e.src
59467          };
59468        })
59469      };
59470      return e && (t.poster = e, t.artwork = [{
59471        src: t.poster,
59472        type: Zi(t.poster)
59473      }]), t;
59474    }, l.getTagSettings = function (e) {
59475      var t = {
59476        sources: [],
59477        tracks: []
59478      },
59479          i = P(e),
59480          n = i["data-setup"];
59481
59482      if (w(e, "vjs-fill") && (i.fill = !0), w(e, "vjs-fluid") && (i.fluid = !0), null !== n) {
59483        var r = Tt(n || "{}"),
59484            s = r[0],
59485            a = r[1];
59486        s && p.error(s), m(i, a);
59487      }
59488
59489      if (m(t, i), e.hasChildNodes()) for (var o = e.childNodes, u = 0, l = o.length; u < l; u++) {
59490        var c = o[u],
59491            h = c.nodeName.toLowerCase();
59492        "source" === h ? t.sources.push(P(c)) : "track" === h && t.tracks.push(P(c));
59493      }
59494      return t;
59495    }, e.flexNotSupported_ = function () {
59496      var e = h.createElement("i");
59497      return !("flexBasis" in e.style || "webkitFlexBasis" in e.style || "mozFlexBasis" in e.style || "msFlexBasis" in e.style || "msFlexOrder" in e.style);
59498    }, l;
59499  }(Re);
59500
59501  hi.names.forEach(function (e) {
59502    var t = hi[e];
59503
59504    Wr.prototype[t.getterName] = function () {
59505      return this.tech_ ? this.tech_[t.getterName]() : (this[t.privateName] = this[t.privateName] || new t.ListClass(), this[t.privateName]);
59506    };
59507  }), Wr.prototype.crossorigin = Wr.prototype.crossOrigin, Wr.players = {};
59508  var zr = y.navigator;
59509  Wr.prototype.options_ = {
59510    techOrder: Vi.defaultTechOrder_,
59511    html5: {},
59512    flash: {},
59513    inactivityTimeout: 2e3,
59514    playbackRates: [],
59515    liveui: !1,
59516    children: ["mediaLoader", "posterImage", "textTrackDisplay", "loadingSpinner", "bigPlayButton", "liveTracker", "controlBar", "errorDisplay", "textTrackSettings", "resizeManager"],
59517    language: zr && (zr.languages && zr.languages[0] || zr.userLanguage || zr.language) || "en",
59518    languages: {},
59519    notSupportedMessage: "No compatible source was found for this media.",
59520    fullscreen: {
59521      options: {
59522        navigationUI: "hide"
59523      }
59524    },
59525    breakpoints: {},
59526    responsive: !1
59527  }, ["ended", "seeking", "seekable", "networkState", "readyState"].forEach(function (e) {
59528    Wr.prototype[e] = function () {
59529      return this.techGet_(e);
59530    };
59531  }), jr.forEach(function (e) {
59532    Wr.prototype["handleTech" + De(e) + "_"] = function () {
59533      return this.trigger(e);
59534    };
59535  }), Re.registerComponent("Player", Wr);
59536  var Gr = t(function (i) {
59537    function n(e, t) {
59538      return i.exports = n = Object.setPrototypeOf || function (e, t) {
59539        return e.__proto__ = t, e;
59540      }, n(e, t);
59541    }
59542
59543    i.exports = n;
59544  });
59545
59546  function Xr(e) {
59547    return is.hasOwnProperty(e);
59548  }
59549
59550  function Kr(e) {
59551    return Xr(e) ? is[e] : void 0;
59552  }
59553
59554  function Yr(e, t) {
59555    e[ts] = e[ts] || {}, e[ts][t] = !0;
59556  }
59557
59558  function $r(e, t, i) {
59559    var n = (i ? "before" : "") + "pluginsetup";
59560    e.trigger(n, t), e.trigger(n + ":" + t.name, t);
59561  }
59562
59563  function Qr(r, s) {
59564    return s.prototype.name = r, function () {
59565      $r(this, {
59566        name: r,
59567        plugin: s,
59568        instance: null
59569      }, !0);
59570
59571      for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
59572        t[i] = arguments[i];
59573      }
59574
59575      var n = Zr(s, [this].concat(t));
59576      return this[r] = function () {
59577        return n;
59578      }, $r(this, n.getEventHash()), n;
59579    };
59580  }
59581
59582  var Jr = function Jr() {
59583    if ("undefined" == typeof Reflect || !Reflect.construct) return !1;
59584    if (Reflect.construct.sham) return !1;
59585    if ("function" == typeof Proxy) return !0;
59586
59587    try {
59588      return Date.prototype.toString.call(Reflect.construct(Date, [], function () {})), !0;
59589    } catch (e) {
59590      return !1;
59591    }
59592  },
59593      Zr = t(function (n) {
59594    function r(e, t, i) {
59595      return Jr() ? n.exports = r = Reflect.construct : n.exports = r = function r(e, t, i) {
59596        var n = [null];
59597        n.push.apply(n, t);
59598        var r = new (Function.bind.apply(e, n))();
59599        return i && Gr(r, i.prototype), r;
59600      }, r.apply(null, arguments);
59601    }
59602
59603    n.exports = r;
59604  }),
59605      es = "plugin",
59606      ts = "activePlugins_",
59607      is = {},
59608      ns = function () {
59609    function i(e) {
59610      if (this.constructor === i) throw new Error("Plugin must be sub-classed; not directly instantiated.");
59611      this.player = e, Ie(this), delete this.trigger, Le(this, this.constructor.defaultState), Yr(e, this.name), this.dispose = ge(this, this.dispose), e.on("dispose", this.dispose);
59612    }
59613
59614    var e = i.prototype;
59615    return e.version = function () {
59616      return this.constructor.VERSION;
59617    }, e.getEventHash = function (e) {
59618      return void 0 === e && (e = {}), e.name = this.name, e.plugin = this.constructor, e.instance = this, e;
59619    }, e.trigger = function (e, t) {
59620      return void 0 === t && (t = {}), pe(this.eventBusEl_, e, this.getEventHash(t));
59621    }, e.handleStateChanged = function (e) {}, e.dispose = function () {
59622      var e = this.name,
59623          t = this.player;
59624      this.trigger("dispose"), this.off(), t.off("dispose", this.dispose), t[ts][e] = !1, this.player = this.state = null, t[e] = Qr(e, is[e]);
59625    }, i.isBasic = function (e) {
59626      var t = "string" == typeof e ? Kr(e) : e;
59627      return "function" == typeof t && !i.prototype.isPrototypeOf(t.prototype);
59628    }, i.registerPlugin = function (e, t) {
59629      if ("string" != typeof e) throw new Error('Illegal plugin name, "' + e + '", must be a string, was ' + _typeof(e) + ".");
59630      if (Xr(e)) p.warn('A plugin named "' + e + '" already exists. You may want to avoid re-registering plugins!');else if (Wr.prototype.hasOwnProperty(e)) throw new Error('Illegal plugin name, "' + e + '", cannot share a name with an existing player method!');
59631      if ("function" != typeof t) throw new Error('Illegal plugin for "' + e + '", must be a function, was ' + _typeof(t) + ".");
59632      return is[e] = t, e !== es && (i.isBasic(t) ? Wr.prototype[e] = function (t, i) {
59633        function n() {
59634          $r(this, {
59635            name: t,
59636            plugin: i,
59637            instance: null
59638          }, !0);
59639          var e = i.apply(this, arguments);
59640          return Yr(this, t), $r(this, {
59641            name: t,
59642            plugin: i,
59643            instance: e
59644          }), e;
59645        }
59646
59647        return Object.keys(i).forEach(function (e) {
59648          n[e] = i[e];
59649        }), n;
59650      }(e, t) : Wr.prototype[e] = Qr(e, t)), t;
59651    }, i.deregisterPlugin = function (e) {
59652      if (e === es) throw new Error("Cannot de-register base plugin.");
59653      Xr(e) && (delete is[e], delete Wr.prototype[e]);
59654    }, i.getPlugins = function (e) {
59655      var i;
59656      return void 0 === e && (e = Object.keys(is)), e.forEach(function (e) {
59657        var t = Kr(e);
59658        t && ((i = i || {})[e] = t);
59659      }), i;
59660    }, i.getPluginVersion = function (e) {
59661      var t = Kr(e);
59662      return t && t.VERSION || "";
59663    }, i;
59664  }();
59665
59666  ns.getPlugin = Kr, ns.BASE_PLUGIN_NAME = es, ns.registerPlugin(es, ns), Wr.prototype.usingPlugin = function (e) {
59667    return !!this[ts] && !0 === this[ts][e];
59668  }, Wr.prototype.hasPlugin = function (e) {
59669    return !!Xr(e);
59670  };
59671
59672  var rs = function rs(e, t) {
59673    if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
59674    e.prototype = Object.create(t && t.prototype, {
59675      constructor: {
59676        value: e,
59677        writable: !0,
59678        configurable: !0
59679      }
59680    }), t && Gr(e, t);
59681  },
59682      ss = function ss(e) {
59683    return 0 === e.indexOf("#") ? e.slice(1) : e;
59684  };
59685
59686  function as(e, i, t) {
59687    var n = as.getPlayer(e);
59688    if (n) return i && p.warn('Player "' + e + '" is already initialised. Options will not be applied.'), t && n.ready(t), n;
59689    var r = "string" == typeof e ? G("#" + ss(e)) : e;
59690    if (!_(r)) throw new TypeError("The element or ID supplied is not valid. (videojs)");
59691    r.ownerDocument.defaultView && r.ownerDocument.body.contains(r) || p.warn("The element supplied is not included in the DOM"), i = i || {}, as.hooks("beforesetup").forEach(function (e) {
59692      var t = e(r, Ne(i));
59693      o(t) && !Array.isArray(t) ? i = Ne(i, t) : p.error("please return an object in beforesetup hooks");
59694    });
59695    var s = Re.getComponent("Player");
59696    return n = new s(r, i, t), as.hooks("setup").forEach(function (e) {
59697      return e(n);
59698    }), n;
59699  }
59700
59701  if (as.hooks_ = {}, as.hooks = function (e, t) {
59702    return as.hooks_[e] = as.hooks_[e] || [], t && (as.hooks_[e] = as.hooks_[e].concat(t)), as.hooks_[e];
59703  }, as.hook = function (e, t) {
59704    as.hooks(e, t);
59705  }, as.hookOnce = function (i, e) {
59706    as.hooks(i, [].concat(e).map(function (t) {
59707      return function e() {
59708        return as.removeHook(i, e), t.apply(void 0, arguments);
59709      };
59710    }));
59711  }, as.removeHook = function (e, t) {
59712    var i = as.hooks(e).indexOf(t);
59713    return !(i <= -1) && (as.hooks_[e] = as.hooks_[e].slice(), as.hooks_[e].splice(i, 1), !0);
59714  }, !0 !== y.VIDEOJS_NO_DYNAMIC_STYLE && v()) {
59715    var os = G(".vjs-styles-defaults");
59716
59717    if (!os) {
59718      os = Z("vjs-styles-defaults");
59719      var us = G("head");
59720      us && us.insertBefore(os, us.firstChild), ee(os, "\n      .video-js {\n        width: 300px;\n        height: 150px;\n      }\n\n      .vjs-fluid {\n        padding-top: 56.25%\n      }\n    ");
59721    }
59722  }
59723
59724  Q(1, as), as.VERSION = d, as.options = Wr.prototype.options_, as.getPlayers = function () {
59725    return Wr.players;
59726  }, as.getPlayer = function (e) {
59727    var t,
59728        i = Wr.players;
59729
59730    if ("string" == typeof e) {
59731      var n = ss(e),
59732          r = i[n];
59733      if (r) return r;
59734      t = G("#" + n);
59735    } else t = e;
59736
59737    if (_(t)) {
59738      var s = t,
59739          a = s.player,
59740          o = s.playerId;
59741      if (a || i[o]) return a || i[o];
59742    }
59743  }, as.getAllPlayers = function () {
59744    return Object.keys(Wr.players).map(function (e) {
59745      return Wr.players[e];
59746    }).filter(Boolean);
59747  }, as.players = Wr.players, as.getComponent = Re.getComponent, as.registerComponent = function (e, t) {
59748    Vi.isTech(t) && p.warn("The " + e + " tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)"), Re.registerComponent.call(Re, e, t);
59749  }, as.getTech = Vi.getTech, as.registerTech = Vi.registerTech, as.use = function (e, t) {
59750    qi[e] = qi[e] || [], qi[e].push(t);
59751  }, Object.defineProperty(as, "middleware", {
59752    value: {},
59753    writeable: !1,
59754    enumerable: !0
59755  }), Object.defineProperty(as.middleware, "TERMINATOR", {
59756    value: zi,
59757    writeable: !1,
59758    enumerable: !0
59759  }), as.browser = ut, as.TOUCH_ENABLED = nt, as.extend = function (e, t) {
59760    void 0 === t && (t = {});
59761
59762    var i = function i() {
59763      e.apply(this, arguments);
59764    },
59765        n = {};
59766
59767    for (var r in "object" == _typeof(t) ? (t.constructor !== Object.prototype.constructor && (i = t.constructor), n = t) : "function" == typeof t && (i = t), rs(i, e), e && (i.super_ = e), n) {
59768      n.hasOwnProperty(r) && (i.prototype[r] = n[r]);
59769    }
59770
59771    return i;
59772  }, as.mergeOptions = Ne, as.bind = ge, as.registerPlugin = ns.registerPlugin, as.deregisterPlugin = ns.deregisterPlugin, as.plugin = function (e, t) {
59773    return p.warn("videojs.plugin() is deprecated; use videojs.registerPlugin() instead"), ns.registerPlugin(e, t);
59774  }, as.getPlugins = ns.getPlugins, as.getPlugin = ns.getPlugin, as.getPluginVersion = ns.getPluginVersion, as.addLanguage = function (e, t) {
59775    var i;
59776    return e = ("" + e).toLowerCase(), as.options.languages = Ne(as.options.languages, ((i = {})[e] = t, i)), as.options.languages[e];
59777  }, as.log = p, as.createLogger = f, as.createTimeRange = as.createTimeRanges = ht, as.formatTime = yn, as.setFormatTime = function (e) {
59778    vn = e;
59779  }, as.resetFormatTime = function () {
59780    vn = gn;
59781  }, as.parseUrl = Nt, as.isCrossOrigin = Mt, as.EventTarget = ye, as.on = he, as.one = fe, as.off = de, as.trigger = pe, as.xhr = Jt, as.TextTrack = si, as.AudioTrack = ai, as.VideoTrack = oi, ["isEl", "isTextNode", "createEl", "hasClass", "addClass", "removeClass", "toggleClass", "setAttributes", "getAttributes", "emptyEl", "appendContent", "insertContent"].forEach(function (e) {
59782    as[e] = function () {
59783      return p.warn("videojs." + e + "() is deprecated; use videojs.dom." + e + "() instead"), K[e].apply(null, arguments);
59784    };
59785  }), as.computedStyle = n, as.dom = K, as.url = Kt, as.defineLazyProperty = Nr;
59786  var ls = t(function (e, t) {
59787    var i, c, n, r, h;
59788    i = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/\?#]*\/)*.*?)??(;.*?)?(\?.*?)?(#.*?)?$/, c = /^([^\/?#]*)(.*)$/, n = /(?:\/|^)\.(?=\/)/g, r = /(?:\/|^)\.\.\/(?!\.\.\/).*?(?=\/)/g, h = {
59789      buildAbsoluteURL: function buildAbsoluteURL(e, t, i) {
59790        if (i = i || {}, e = e.trim(), !(t = t.trim())) {
59791          if (!i.alwaysNormalize) return e;
59792          var n = h.parseURL(e);
59793          if (!n) throw new Error("Error trying to parse base URL.");
59794          return n.path = h.normalizePath(n.path), h.buildURLFromParts(n);
59795        }
59796
59797        var r = h.parseURL(t);
59798        if (!r) throw new Error("Error trying to parse relative URL.");
59799        if (r.scheme) return i.alwaysNormalize ? (r.path = h.normalizePath(r.path), h.buildURLFromParts(r)) : t;
59800        var s = h.parseURL(e);
59801        if (!s) throw new Error("Error trying to parse base URL.");
59802
59803        if (!s.netLoc && s.path && "/" !== s.path[0]) {
59804          var a = c.exec(s.path);
59805          s.netLoc = a[1], s.path = a[2];
59806        }
59807
59808        s.netLoc && !s.path && (s.path = "/");
59809        var o = {
59810          scheme: s.scheme,
59811          netLoc: r.netLoc,
59812          path: null,
59813          params: r.params,
59814          query: r.query,
59815          fragment: r.fragment
59816        };
59817        if (!r.netLoc && (o.netLoc = s.netLoc, "/" !== r.path[0])) if (r.path) {
59818          var u = s.path,
59819              l = u.substring(0, u.lastIndexOf("/") + 1) + r.path;
59820          o.path = h.normalizePath(l);
59821        } else o.path = s.path, r.params || (o.params = s.params, r.query || (o.query = s.query));
59822        return null === o.path && (o.path = i.alwaysNormalize ? h.normalizePath(r.path) : r.path), h.buildURLFromParts(o);
59823      },
59824      parseURL: function parseURL(e) {
59825        var t = i.exec(e);
59826        return t ? {
59827          scheme: t[1] || "",
59828          netLoc: t[2] || "",
59829          path: t[3] || "",
59830          params: t[4] || "",
59831          query: t[5] || "",
59832          fragment: t[6] || ""
59833        } : null;
59834      },
59835      normalizePath: function normalizePath(e) {
59836        for (e = e.split("").reverse().join("").replace(n, ""); e.length !== (e = e.replace(r, "")).length;) {
59837          ;
59838        }
59839
59840        return e.split("").reverse().join("");
59841      },
59842      buildURLFromParts: function buildURLFromParts(e) {
59843        return e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment;
59844      }
59845    }, e.exports = h;
59846  });
59847  /*! @name m3u8-parser @version 4.4.0 @license Apache-2.0 */
59848
59849  function cs() {
59850    return (cs = Object.assign || function (e) {
59851      for (var t = 1; t < arguments.length; t++) {
59852        var i = arguments[t];
59853
59854        for (var n in i) {
59855          Object.prototype.hasOwnProperty.call(i, n) && (e[n] = i[n]);
59856        }
59857      }
59858
59859      return e;
59860    }).apply(this, arguments);
59861  }
59862
59863  function hs(e, t) {
59864    e.prototype = Object.create(t.prototype), (e.prototype.constructor = e).__proto__ = t;
59865  }
59866
59867  function ds(e) {
59868    for (var t, i = e.split(new RegExp('(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))')), n = {}, r = i.length; r--;) {
59869      "" !== i[r] && ((t = /([^=]*)=(.*)/.exec(i[r]).slice(1))[0] = t[0].replace(/^\s+|\s+$/g, ""), t[1] = t[1].replace(/^\s+|\s+$/g, ""), t[1] = t[1].replace(/^['"](.*)['"]$/g, "$1"), n[t[0]] = t[1]);
59870    }
59871
59872    return n;
59873  }
59874
59875  var ps = function () {
59876    function e() {
59877      this.listeners = {};
59878    }
59879
59880    var t = e.prototype;
59881    return t.on = function (e, t) {
59882      this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t);
59883    }, t.off = function (e, t) {
59884      if (!this.listeners[e]) return !1;
59885      var i = this.listeners[e].indexOf(t);
59886      return this.listeners[e].splice(i, 1), -1 < i;
59887    }, t.trigger = function (e, t) {
59888      var i,
59889          n,
59890          r,
59891          s = this.listeners[e];
59892      if (s) if (2 === arguments.length) for (n = s.length, i = 0; i < n; ++i) {
59893        s[i].call(this, t);
59894      } else for (r = Array.prototype.slice.call(arguments, 1), n = s.length, i = 0; i < n; ++i) {
59895        s[i].apply(this, r);
59896      }
59897    }, t.dispose = function () {
59898      this.listeners = {};
59899    }, t.pipe = function (t) {
59900      this.on("data", function (e) {
59901        t.push(e);
59902      });
59903    }, e;
59904  }(),
59905      fs = function (t) {
59906    function e() {
59907      var e;
59908      return (e = t.call(this) || this).buffer = "", e;
59909    }
59910
59911    return hs(e, t), e.prototype.push = function (e) {
59912      var t;
59913
59914      for (this.buffer += e, t = this.buffer.indexOf("\n"); -1 < t; t = this.buffer.indexOf("\n")) {
59915        this.trigger("data", this.buffer.substring(0, t)), this.buffer = this.buffer.substring(t + 1);
59916      }
59917    }, e;
59918  }(ps),
59919      ms = function (t) {
59920    function e() {
59921      var e;
59922      return (e = t.call(this) || this).customParsers = [], e.tagMappers = [], e;
59923    }
59924
59925    hs(e, t);
59926    var i = e.prototype;
59927    return i.push = function (n) {
59928      var u,
59929          l,
59930          c = this;
59931      0 !== (n = n.trim()).length && ("#" === n[0] ? this.tagMappers.reduce(function (e, t) {
59932        var i = t(n);
59933        return i === n ? e : e.concat([i]);
59934      }, [n]).forEach(function (e) {
59935        for (var t = 0; t < c.customParsers.length; t++) {
59936          if (c.customParsers[t].call(c, e)) return;
59937        }
59938
59939        if (0 === e.indexOf("#EXT")) {
59940          if (e = e.replace("\r", ""), u = /^#EXTM3U/.exec(e)) c.trigger("data", {
59941            type: "tag",
59942            tagType: "m3u"
59943          });else {
59944            if (u = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(e)) return l = {
59945              type: "tag",
59946              tagType: "inf"
59947            }, u[1] && (l.duration = parseFloat(u[1])), u[2] && (l.title = u[2]), void c.trigger("data", l);
59948            if (u = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(e)) return l = {
59949              type: "tag",
59950              tagType: "targetduration"
59951            }, u[1] && (l.duration = parseInt(u[1], 10)), void c.trigger("data", l);
59952            if (u = /^#ZEN-TOTAL-DURATION:?([0-9.]*)?/.exec(e)) return l = {
59953              type: "tag",
59954              tagType: "totalduration"
59955            }, u[1] && (l.duration = parseInt(u[1], 10)), void c.trigger("data", l);
59956            if (u = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(e)) return l = {
59957              type: "tag",
59958              tagType: "version"
59959            }, u[1] && (l.version = parseInt(u[1], 10)), void c.trigger("data", l);
59960            if (u = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(e)) return l = {
59961              type: "tag",
59962              tagType: "media-sequence"
59963            }, u[1] && (l.number = parseInt(u[1], 10)), void c.trigger("data", l);
59964            if (u = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(e)) return l = {
59965              type: "tag",
59966              tagType: "discontinuity-sequence"
59967            }, u[1] && (l.number = parseInt(u[1], 10)), void c.trigger("data", l);
59968            if (u = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(e)) return l = {
59969              type: "tag",
59970              tagType: "playlist-type"
59971            }, u[1] && (l.playlistType = u[1]), void c.trigger("data", l);
59972            if (u = /^#EXT-X-BYTERANGE:?([0-9.]*)?@?([0-9.]*)?/.exec(e)) return l = {
59973              type: "tag",
59974              tagType: "byterange"
59975            }, u[1] && (l.length = parseInt(u[1], 10)), u[2] && (l.offset = parseInt(u[2], 10)), void c.trigger("data", l);
59976            if (u = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(e)) return l = {
59977              type: "tag",
59978              tagType: "allow-cache"
59979            }, u[1] && (l.allowed = !/NO/.test(u[1])), void c.trigger("data", l);
59980
59981            if (u = /^#EXT-X-MAP:?(.*)$/.exec(e)) {
59982              if (l = {
59983                type: "tag",
59984                tagType: "map"
59985              }, u[1]) {
59986                var i = ds(u[1]);
59987
59988                if (i.URI && (l.uri = i.URI), i.BYTERANGE) {
59989                  var n = i.BYTERANGE.split("@"),
59990                      r = n[0],
59991                      s = n[1];
59992                  l.byterange = {}, r && (l.byterange.length = parseInt(r, 10)), s && (l.byterange.offset = parseInt(s, 10));
59993                }
59994              }
59995
59996              c.trigger("data", l);
59997            } else if (u = /^#EXT-X-STREAM-INF:?(.*)$/.exec(e)) {
59998              if (l = {
59999                type: "tag",
60000                tagType: "stream-inf"
60001              }, u[1]) {
60002                if (l.attributes = ds(u[1]), l.attributes.RESOLUTION) {
60003                  var a = l.attributes.RESOLUTION.split("x"),
60004                      o = {};
60005                  a[0] && (o.width = parseInt(a[0], 10)), a[1] && (o.height = parseInt(a[1], 10)), l.attributes.RESOLUTION = o;
60006                }
60007
60008                l.attributes.BANDWIDTH && (l.attributes.BANDWIDTH = parseInt(l.attributes.BANDWIDTH, 10)), l.attributes["PROGRAM-ID"] && (l.attributes["PROGRAM-ID"] = parseInt(l.attributes["PROGRAM-ID"], 10));
60009              }
60010
60011              c.trigger("data", l);
60012            } else {
60013              if (u = /^#EXT-X-MEDIA:?(.*)$/.exec(e)) return l = {
60014                type: "tag",
60015                tagType: "media"
60016              }, u[1] && (l.attributes = ds(u[1])), void c.trigger("data", l);
60017              if (u = /^#EXT-X-ENDLIST/.exec(e)) c.trigger("data", {
60018                type: "tag",
60019                tagType: "endlist"
60020              });else if (u = /^#EXT-X-DISCONTINUITY/.exec(e)) c.trigger("data", {
60021                type: "tag",
60022                tagType: "discontinuity"
60023              });else {
60024                if (u = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(e)) return l = {
60025                  type: "tag",
60026                  tagType: "program-date-time"
60027                }, u[1] && (l.dateTimeString = u[1], l.dateTimeObject = new Date(u[1])), void c.trigger("data", l);
60028                if (u = /^#EXT-X-KEY:?(.*)$/.exec(e)) return l = {
60029                  type: "tag",
60030                  tagType: "key"
60031                }, u[1] && (l.attributes = ds(u[1]), l.attributes.IV && ("0x" === l.attributes.IV.substring(0, 2).toLowerCase() && (l.attributes.IV = l.attributes.IV.substring(2)), l.attributes.IV = l.attributes.IV.match(/.{8}/g), l.attributes.IV[0] = parseInt(l.attributes.IV[0], 16), l.attributes.IV[1] = parseInt(l.attributes.IV[1], 16), l.attributes.IV[2] = parseInt(l.attributes.IV[2], 16), l.attributes.IV[3] = parseInt(l.attributes.IV[3], 16), l.attributes.IV = new Uint32Array(l.attributes.IV))), void c.trigger("data", l);
60032                if (u = /^#EXT-X-START:?(.*)$/.exec(e)) return l = {
60033                  type: "tag",
60034                  tagType: "start"
60035                }, u[1] && (l.attributes = ds(u[1]), l.attributes["TIME-OFFSET"] = parseFloat(l.attributes["TIME-OFFSET"]), l.attributes.PRECISE = /YES/.test(l.attributes.PRECISE)), void c.trigger("data", l);
60036                if (u = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(e)) return l = {
60037                  type: "tag",
60038                  tagType: "cue-out-cont"
60039                }, u[1] ? l.data = u[1] : l.data = "", void c.trigger("data", l);
60040                if (u = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(e)) return l = {
60041                  type: "tag",
60042                  tagType: "cue-out"
60043                }, u[1] ? l.data = u[1] : l.data = "", void c.trigger("data", l);
60044                if (u = /^#EXT-X-CUE-IN:?(.*)?$/.exec(e)) return l = {
60045                  type: "tag",
60046                  tagType: "cue-in"
60047                }, u[1] ? l.data = u[1] : l.data = "", void c.trigger("data", l);
60048                c.trigger("data", {
60049                  type: "tag",
60050                  data: e.slice(4)
60051                });
60052              }
60053            }
60054          }
60055        } else c.trigger("data", {
60056          type: "comment",
60057          text: e.slice(1)
60058        });
60059      }) : this.trigger("data", {
60060        type: "uri",
60061        uri: n
60062      }));
60063    }, i.addParser = function (e) {
60064      var t = this,
60065          i = e.expression,
60066          n = e.customType,
60067          r = e.dataParser,
60068          s = e.segment;
60069      "function" != typeof r && (r = function r(e) {
60070        return e;
60071      }), this.customParsers.push(function (e) {
60072        if (i.exec(e)) return t.trigger("data", {
60073          type: "custom",
60074          data: r(e),
60075          customType: n,
60076          segment: s
60077        }), !0;
60078      });
60079    }, i.addTagMapper = function (e) {
60080      var t = e.expression,
60081          i = e.map;
60082      this.tagMappers.push(function (e) {
60083        return t.test(e) ? i(e) : e;
60084      });
60085    }, e;
60086  }(ps);
60087
60088  var gs = function (t) {
60089    function e() {
60090      var e;
60091      (e = t.call(this) || this).lineStream = new fs(), e.parseStream = new ms(), e.lineStream.pipe(e.parseStream);
60092
60093      var r,
60094          s,
60095          a = function (e) {
60096        if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
60097        return e;
60098      }(e),
60099          o = [],
60100          u = {},
60101          l = {
60102        AUDIO: {},
60103        VIDEO: {},
60104        "CLOSED-CAPTIONS": {},
60105        SUBTITLES: {}
60106      },
60107          c = 0;
60108
60109      return e.manifest = {
60110        allowCache: !0,
60111        discontinuityStarts: [],
60112        segments: []
60113      }, e.parseStream.on("data", function (t) {
60114        var i, n;
60115        ({
60116          tag: function tag() {
60117            (({
60118              "allow-cache": function allowCache() {
60119                this.manifest.allowCache = t.allowed, "allowed" in t || (this.trigger("info", {
60120                  message: "defaulting allowCache to YES"
60121                }), this.manifest.allowCache = !0);
60122              },
60123              byterange: function byterange() {
60124                var e = {};
60125                "length" in t && ((u.byterange = e).length = t.length, "offset" in t || (this.trigger("info", {
60126                  message: "defaulting offset to zero"
60127                }), t.offset = 0)), "offset" in t && ((u.byterange = e).offset = t.offset);
60128              },
60129              endlist: function endlist() {
60130                this.manifest.endList = !0;
60131              },
60132              inf: function inf() {
60133                "mediaSequence" in this.manifest || (this.manifest.mediaSequence = 0, this.trigger("info", {
60134                  message: "defaulting media sequence to zero"
60135                })), "discontinuitySequence" in this.manifest || (this.manifest.discontinuitySequence = 0, this.trigger("info", {
60136                  message: "defaulting discontinuity sequence to zero"
60137                })), 0 < t.duration && (u.duration = t.duration), 0 === t.duration && (u.duration = .01, this.trigger("info", {
60138                  message: "updating zero segment duration to a small value"
60139                })), this.manifest.segments = o;
60140              },
60141              key: function key() {
60142                if (t.attributes) {
60143                  if ("NONE" !== t.attributes.METHOD) {
60144                    if (t.attributes.URI) {
60145                      if ("urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" === t.attributes.KEYFORMAT) {
60146                        return -1 === ["SAMPLE-AES", "SAMPLE-AES-CTR", "SAMPLE-AES-CENC"].indexOf(t.attributes.METHOD) ? void this.trigger("warn", {
60147                          message: "invalid key method provided for Widevine"
60148                        }) : ("SAMPLE-AES-CENC" === t.attributes.METHOD && this.trigger("warn", {
60149                          message: "SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead"
60150                        }), "data:text/plain;base64," !== t.attributes.URI.substring(0, 23) ? void this.trigger("warn", {
60151                          message: "invalid key URI provided for Widevine"
60152                        }) : t.attributes.KEYID && "0x" === t.attributes.KEYID.substring(0, 2) ? void (this.manifest.contentProtection = {
60153                          "com.widevine.alpha": {
60154                            attributes: {
60155                              schemeIdUri: t.attributes.KEYFORMAT,
60156                              keyId: t.attributes.KEYID.substring(2)
60157                            },
60158                            pssh: function (e) {
60159                              for (var t = y.atob(e || ""), i = new Uint8Array(t.length), n = 0; n < t.length; n++) {
60160                                i[n] = t.charCodeAt(n);
60161                              }
60162
60163                              return i;
60164                            }(t.attributes.URI.split(",")[1])
60165                          }
60166                        }) : void this.trigger("warn", {
60167                          message: "invalid key ID provided for Widevine"
60168                        }));
60169                      }
60170
60171                      t.attributes.METHOD || this.trigger("warn", {
60172                        message: "defaulting key method to AES-128"
60173                      }), s = {
60174                        method: t.attributes.METHOD || "AES-128",
60175                        uri: t.attributes.URI
60176                      }, "undefined" != typeof t.attributes.IV && (s.iv = t.attributes.IV);
60177                    } else this.trigger("warn", {
60178                      message: "ignoring key declaration without URI"
60179                    });
60180                  } else s = null;
60181                } else this.trigger("warn", {
60182                  message: "ignoring key declaration without attribute list"
60183                });
60184              },
60185              "media-sequence": function mediaSequence() {
60186                isFinite(t.number) ? this.manifest.mediaSequence = t.number : this.trigger("warn", {
60187                  message: "ignoring invalid media sequence: " + t.number
60188                });
60189              },
60190              "discontinuity-sequence": function discontinuitySequence() {
60191                isFinite(t.number) ? (this.manifest.discontinuitySequence = t.number, c = t.number) : this.trigger("warn", {
60192                  message: "ignoring invalid discontinuity sequence: " + t.number
60193                });
60194              },
60195              "playlist-type": function playlistType() {
60196                /VOD|EVENT/.test(t.playlistType) ? this.manifest.playlistType = t.playlistType : this.trigger("warn", {
60197                  message: "ignoring unknown playlist type: " + t.playlist
60198                });
60199              },
60200              map: function map() {
60201                r = {}, t.uri && (r.uri = t.uri), t.byterange && (r.byterange = t.byterange);
60202              },
60203              "stream-inf": function streamInf() {
60204                this.manifest.playlists = o, this.manifest.mediaGroups = this.manifest.mediaGroups || l, t.attributes ? (u.attributes || (u.attributes = {}), cs(u.attributes, t.attributes)) : this.trigger("warn", {
60205                  message: "ignoring empty stream-inf attributes"
60206                });
60207              },
60208              media: function media() {
60209                if (this.manifest.mediaGroups = this.manifest.mediaGroups || l, t.attributes && t.attributes.TYPE && t.attributes["GROUP-ID"] && t.attributes.NAME) {
60210                  var e = this.manifest.mediaGroups[t.attributes.TYPE];
60211                  e[t.attributes["GROUP-ID"]] = e[t.attributes["GROUP-ID"]] || {}, i = e[t.attributes["GROUP-ID"]], (n = {
60212                    "default": /yes/i.test(t.attributes.DEFAULT)
60213                  })["default"] ? n.autoselect = !0 : n.autoselect = /yes/i.test(t.attributes.AUTOSELECT), t.attributes.LANGUAGE && (n.language = t.attributes.LANGUAGE), t.attributes.URI && (n.uri = t.attributes.URI), t.attributes["INSTREAM-ID"] && (n.instreamId = t.attributes["INSTREAM-ID"]), t.attributes.CHARACTERISTICS && (n.characteristics = t.attributes.CHARACTERISTICS), t.attributes.FORCED && (n.forced = /yes/i.test(t.attributes.FORCED)), i[t.attributes.NAME] = n;
60214                } else this.trigger("warn", {
60215                  message: "ignoring incomplete or missing media group"
60216                });
60217              },
60218              discontinuity: function discontinuity() {
60219                c += 1, u.discontinuity = !0, this.manifest.discontinuityStarts.push(o.length);
60220              },
60221              "program-date-time": function programDateTime() {
60222                "undefined" == typeof this.manifest.dateTimeString && (this.manifest.dateTimeString = t.dateTimeString, this.manifest.dateTimeObject = t.dateTimeObject), u.dateTimeString = t.dateTimeString, u.dateTimeObject = t.dateTimeObject;
60223              },
60224              targetduration: function targetduration() {
60225                !isFinite(t.duration) || t.duration < 0 ? this.trigger("warn", {
60226                  message: "ignoring invalid target duration: " + t.duration
60227                }) : this.manifest.targetDuration = t.duration;
60228              },
60229              totalduration: function totalduration() {
60230                !isFinite(t.duration) || t.duration < 0 ? this.trigger("warn", {
60231                  message: "ignoring invalid total duration: " + t.duration
60232                }) : this.manifest.totalDuration = t.duration;
60233              },
60234              start: function start() {
60235                t.attributes && !isNaN(t.attributes["TIME-OFFSET"]) ? this.manifest.start = {
60236                  timeOffset: t.attributes["TIME-OFFSET"],
60237                  precise: t.attributes.PRECISE
60238                } : this.trigger("warn", {
60239                  message: "ignoring start declaration without appropriate attribute list"
60240                });
60241              },
60242              "cue-out": function cueOut() {
60243                u.cueOut = t.data;
60244              },
60245              "cue-out-cont": function cueOutCont() {
60246                u.cueOutCont = t.data;
60247              },
60248              "cue-in": function cueIn() {
60249                u.cueIn = t.data;
60250              }
60251            })[t.tagType] || function () {}).call(a);
60252          },
60253          uri: function uri() {
60254            u.uri = t.uri, o.push(u), !this.manifest.targetDuration || "duration" in u || (this.trigger("warn", {
60255              message: "defaulting segment duration to the target duration"
60256            }), u.duration = this.manifest.targetDuration), s && (u.key = s), u.timeline = c, r && (u.map = r), u = {};
60257          },
60258          comment: function comment() {},
60259          custom: function custom() {
60260            t.segment ? (u.custom = u.custom || {}, u.custom[t.customType] = t.data) : (this.manifest.custom = this.manifest.custom || {}, this.manifest.custom[t.customType] = t.data);
60261          }
60262        })[t.type].call(a);
60263      }), e;
60264    }
60265
60266    hs(e, t);
60267    var i = e.prototype;
60268    return i.push = function (e) {
60269      this.lineStream.push(e);
60270    }, i.end = function () {
60271      this.lineStream.push("\n");
60272    }, i.addParser = function (e) {
60273      this.parseStream.addParser(e);
60274    }, i.addTagMapper = function (e) {
60275      this.parseStream.addTagMapper(e);
60276    }, e;
60277  }(ps);
60278
60279  function vs(e) {
60280    return e && "object" == _typeof(e) && "default" in e ? e["default"] : e;
60281  }
60282
60283  var ys = vs(ls),
60284      _s = vs(y),
60285      bs = function bs(e, t) {
60286    return /^[a-z]+:/i.test(t) ? t : (/\/\//i.test(e) || (e = ys.buildAbsoluteURL(_s.location && _s.location.href || "", e)), ys.buildAbsoluteURL(e, t));
60287  };
60288
60289  var Ts,
60290      Ss = (Ts = y) && "object" == _typeof(Ts) && "default" in Ts ? Ts["default"] : Ts;
60291
60292  var ks = function ks(e) {
60293    for (var t = function (e) {
60294      return Ss.atob ? Ss.atob(e) : Buffer.from(e, "base64").toString("binary");
60295    }(e), i = new Uint8Array(t.length), n = 0; n < t.length; n++) {
60296      i[n] = t.charCodeAt(n);
60297    }
60298
60299    return i;
60300  },
60301      Cs = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,
60302      ws = new RegExp("[\\-\\.0-9" + Cs.source.slice(1, -1) + "\\u00B7\\u0300-\\u036F\\u203F-\\u2040]"),
60303      Es = new RegExp("^" + Cs.source + ws.source + "*(?::" + Cs.source + ws.source + "*)?$"),
60304      xs = 0,
60305      As = 1,
60306      Is = 2,
60307      Ps = 3,
60308      Ls = 4,
60309      Os = 5,
60310      Ds = 6,
60311      Ns = 7;
60312
60313  function Rs() {}
60314
60315  function Us(e, t) {
60316    return t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber, t;
60317  }
60318
60319  function Ms(e, t, i, n, r, s) {
60320    for (var a, o = ++t, u = xs;;) {
60321      var l = e.charAt(o);
60322
60323      switch (l) {
60324        case "=":
60325          if (u === As) a = e.slice(t, o), u = Ps;else {
60326            if (u !== Is) throw new Error("attribute equal must after attrName");
60327            u = Ps;
60328          }
60329          break;
60330
60331        case "'":
60332        case '"':
60333          if (u === Ps || u === As) {
60334            if (u === As && (s.warning('attribute value must after "="'), a = e.slice(t, o)), t = o + 1, !(0 < (o = e.indexOf(l, t)))) throw new Error("attribute value no end '" + l + "' match");
60335            c = e.slice(t, o).replace(/&#?\w+;/g, r), i.add(a, c, t - 1), u = Os;
60336          } else {
60337            if (u != Ls) throw new Error('attribute value must after "="');
60338            c = e.slice(t, o).replace(/&#?\w+;/g, r), i.add(a, c, t), s.warning('attribute "' + a + '" missed start quot(' + l + ")!!"), t = o + 1, u = Os;
60339          }
60340
60341          break;
60342
60343        case "/":
60344          switch (u) {
60345            case xs:
60346              i.setTagName(e.slice(t, o));
60347
60348            case Os:
60349            case Ds:
60350            case Ns:
60351              u = Ns, i.closed = !0;
60352
60353            case Ls:
60354            case As:
60355            case Is:
60356              break;
60357
60358            default:
60359              throw new Error("attribute invalid close char('/')");
60360          }
60361
60362          break;
60363
60364        case "":
60365          return s.error("unexpected end of input"), u == xs && i.setTagName(e.slice(t, o)), o;
60366
60367        case ">":
60368          switch (u) {
60369            case xs:
60370              i.setTagName(e.slice(t, o));
60371
60372            case Os:
60373            case Ds:
60374            case Ns:
60375              break;
60376
60377            case Ls:
60378            case As:
60379              "/" === (c = e.slice(t, o)).slice(-1) && (i.closed = !0, c = c.slice(0, -1));
60380
60381            case Is:
60382              u === Is && (c = a), u == Ls ? (s.warning('attribute "' + c + '" missed quot(")!!'), i.add(a, c.replace(/&#?\w+;/g, r), t)) : ("http://www.w3.org/1999/xhtml" === n[""] && c.match(/^(?:disabled|checked|selected)$/i) || s.warning('attribute "' + c + '" missed value!! "' + c + '" instead!!'), i.add(c, c, t));
60383              break;
60384
60385            case Ps:
60386              throw new Error("attribute value missed!!");
60387          }
60388
60389          return o;
60390
60391        case "€":
60392          l = " ";
60393
60394        default:
60395          if (l <= " ") switch (u) {
60396            case xs:
60397              i.setTagName(e.slice(t, o)), u = Ds;
60398              break;
60399
60400            case As:
60401              a = e.slice(t, o), u = Is;
60402              break;
60403
60404            case Ls:
60405              var c = e.slice(t, o).replace(/&#?\w+;/g, r);
60406              s.warning('attribute "' + c + '" missed quot(")!!'), i.add(a, c, t);
60407
60408            case Os:
60409              u = Ds;
60410          } else switch (u) {
60411            case Is:
60412              i.tagName;
60413              "http://www.w3.org/1999/xhtml" === n[""] && a.match(/^(?:disabled|checked|selected)$/i) || s.warning('attribute "' + a + '" missed value!! "' + a + '" instead2!!'), i.add(a, a, t), t = o, u = As;
60414              break;
60415
60416            case Os:
60417              s.warning('attribute space is required"' + a + '"!!');
60418
60419            case Ds:
60420              u = As, t = o;
60421              break;
60422
60423            case Ps:
60424              u = Ls, t = o;
60425              break;
60426
60427            case Ns:
60428              throw new Error("elements closed character '/' and '>' must be connected to");
60429          }
60430      }
60431
60432      o++;
60433    }
60434  }
60435
60436  function Bs(e, t, i) {
60437    for (var n = e.tagName, r = null, s = e.length; s--;) {
60438      var a = e[s],
60439          o = a.qName,
60440          u = a.value;
60441      if (0 < (d = o.indexOf(":"))) var l = a.prefix = o.slice(0, d),
60442          c = o.slice(d + 1),
60443          h = "xmlns" === l && c;else l = null, h = "xmlns" === (c = o) && "";
60444      a.localName = c, !1 !== h && (null == r && (r = {}, Hs(i, i = {})), i[h] = r[h] = u, a.uri = "http://www.w3.org/2000/xmlns/", t.startPrefixMapping(h, u));
60445    }
60446
60447    for (s = e.length; s--;) {
60448      (l = (a = e[s]).prefix) && ("xml" === l && (a.uri = "http://www.w3.org/XML/1998/namespace"), "xmlns" !== l && (a.uri = i[l || ""]));
60449    }
60450
60451    var d;
60452    c = 0 < (d = n.indexOf(":")) ? (l = e.prefix = n.slice(0, d), e.localName = n.slice(d + 1)) : (l = null, e.localName = n);
60453    var p = e.uri = i[l || ""];
60454    if (t.startElement(p, c, n, e), !e.closed) return e.currentNSMap = i, e.localNSMap = r, !0;
60455    if (t.endElement(p, c, n), r) for (l in r) {
60456      t.endPrefixMapping(l);
60457    }
60458  }
60459
60460  function js(e, t, i, n, r) {
60461    if (/^(?:script|textarea)$/i.test(i)) {
60462      var s = e.indexOf("</" + i + ">", t),
60463          a = e.substring(t + 1, s);
60464      if (/[&<]/.test(a)) return /^script$/i.test(i) || (a = a.replace(/&#?\w+;/g, n)), r.characters(a, 0, a.length), s;
60465    }
60466
60467    return t + 1;
60468  }
60469
60470  function Fs(e, t, i, n) {
60471    var r = n[i];
60472    return null == r && ((r = e.lastIndexOf("</" + i + ">")) < t && (r = e.lastIndexOf("</" + i)), n[i] = r), r < t;
60473  }
60474
60475  function Hs(e, t) {
60476    for (var i in e) {
60477      t[i] = e[i];
60478    }
60479  }
60480
60481  function Vs(e, t, i, n) {
60482    switch (e.charAt(t + 2)) {
60483      case "-":
60484        return "-" !== e.charAt(t + 3) ? -1 : t < (r = e.indexOf("--\x3e", t + 4)) ? (i.comment(e, t + 4, r - t - 4), r + 3) : (n.error("Unclosed comment"), -1);
60485
60486      default:
60487        if ("CDATA[" == e.substr(t + 3, 6)) {
60488          var r = e.indexOf("]]>", t + 9);
60489          return i.startCDATA(), i.characters(e, t + 9, r - t - 9), i.endCDATA(), r + 3;
60490        }
60491
60492        var s = function (e, t) {
60493          var i,
60494              n = [],
60495              r = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g;
60496          r.lastIndex = t, r.exec(e);
60497
60498          for (; i = r.exec(e);) {
60499            if (n.push(i), i[1]) return n;
60500          }
60501        }(e, t),
60502            a = s.length;
60503
60504        if (1 < a && /!doctype/i.test(s[0][0])) {
60505          var o = s[1][0],
60506              u = 3 < a && /^public$/i.test(s[2][0]) && s[3][0],
60507              l = 4 < a && s[4][0],
60508              c = s[a - 1];
60509          return i.startDTD(o, u && u.replace(/^(['"])(.*?)\1$/, "$2"), l && l.replace(/^(['"])(.*?)\1$/, "$2")), i.endDTD(), c.index + c[0].length;
60510        }
60511
60512    }
60513
60514    return -1;
60515  }
60516
60517  function qs(e, t, i) {
60518    var n = e.indexOf("?>", t);
60519
60520    if (n) {
60521      var r = e.substring(t, n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/);
60522
60523      if (r) {
60524        r[0].length;
60525        return i.processingInstruction(r[1], r[2]), n + 2;
60526      }
60527
60528      return -1;
60529    }
60530
60531    return -1;
60532  }
60533
60534  function Ws(e) {}
60535
60536  function zs(e, t) {
60537    return e.__proto__ = t, e;
60538  }
60539
60540  Rs.prototype = {
60541    parse: function parse(e, t, i) {
60542      var n = this.domBuilder;
60543      n.startDocument(), Hs(t, t = {}), function (i, e, n, r, s) {
60544        function a(e) {
60545          var t = e.slice(1, -1);
60546          return t in n ? n[t] : "#" === t.charAt(0) ? function (e) {
60547            if (65535 < e) {
60548              var t = 55296 + ((e -= 65536) >> 10),
60549                  i = 56320 + (1023 & e);
60550              return String.fromCharCode(t, i);
60551            }
60552
60553            return String.fromCharCode(e);
60554          }(parseInt(t.substr(1).replace("x", "0x"))) : (s.error("entity not found:" + e), e);
60555        }
60556
60557        function t(e) {
60558          if (f < e) {
60559            var t = i.substring(f, e).replace(/&#?\w+;/g, a);
60560            h && o(f), r.characters(t, 0, e - f), f = e;
60561          }
60562        }
60563
60564        function o(e, t) {
60565          for (; l <= e && (t = c.exec(i));) {
60566            u = t.index, l = u + t[0].length, h.lineNumber++;
60567          }
60568
60569          h.columnNumber = e - u + 1;
60570        }
60571
60572        var u = 0,
60573            l = 0,
60574            c = /.*(?:\r\n?|\n)|.*$/g,
60575            h = r.locator,
60576            d = [{
60577          currentNSMap: e
60578        }],
60579            p = {},
60580            f = 0;
60581
60582        for (;;) {
60583          try {
60584            var m = i.indexOf("<", f);
60585
60586            if (m < 0) {
60587              if (!i.substr(f).match(/^\s*$/)) {
60588                var g = r.doc,
60589                    v = g.createTextNode(i.substr(f));
60590                g.appendChild(v), r.currentElement = v;
60591              }
60592
60593              return;
60594            }
60595
60596            switch (f < m && t(m), i.charAt(m + 1)) {
60597              case "/":
60598                var y = i.indexOf(">", m + 3),
60599                    _ = i.substring(m + 2, y),
60600                    b = d.pop();
60601
60602                y < 0 ? (_ = i.substring(m + 2).replace(/[\s<].*/, ""), s.error("end tag name: " + _ + " is not complete:" + b.tagName), y = m + 1 + _.length) : _.match(/\s</) && (_ = _.replace(/[\s<].*/, ""), s.error("end tag name: " + _ + " maybe not complete"), y = m + 1 + _.length);
60603                var T = b.localNSMap,
60604                    S = b.tagName == _;
60605
60606                if (S || b.tagName && b.tagName.toLowerCase() == _.toLowerCase()) {
60607                  if (r.endElement(b.uri, b.localName, _), T) for (var k in T) {
60608                    r.endPrefixMapping(k);
60609                  }
60610                  S || s.fatalError("end tag name: " + _ + " is not match the current start tagName:" + b.tagName);
60611                } else d.push(b);
60612
60613                y++;
60614                break;
60615
60616              case "?":
60617                h && o(m), y = qs(i, m, r);
60618                break;
60619
60620              case "!":
60621                h && o(m), y = Vs(i, m, r, s);
60622                break;
60623
60624              default:
60625                h && o(m);
60626                var C = new Ws(),
60627                    w = d[d.length - 1].currentNSMap,
60628                    E = (y = Ms(i, m, C, w, a, s), C.length);
60629
60630                if (!C.closed && Fs(i, y, C.tagName, p) && (C.closed = !0, n.nbsp || s.warning("unclosed xml attribute")), h && E) {
60631                  for (var x = Us(h, {}), A = 0; A < E; A++) {
60632                    var I = C[A];
60633                    o(I.offset), I.locator = Us(h, {});
60634                  }
60635
60636                  r.locator = x, Bs(C, r, w) && d.push(C), r.locator = h;
60637                } else Bs(C, r, w) && d.push(C);
60638
60639                "http://www.w3.org/1999/xhtml" !== C.uri || C.closed ? y++ : y = js(i, y, C.tagName, a, r);
60640            }
60641          } catch (e) {
60642            s.error("element parse error: " + e), y = -1;
60643          }
60644
60645          f < y ? f = y : t(Math.max(m, f) + 1);
60646        }
60647      }(e, t, i, n, this.errorHandler), n.endDocument();
60648    }
60649  }, Ws.prototype = {
60650    setTagName: function setTagName(e) {
60651      if (!Es.test(e)) throw new Error("invalid tagName:" + e);
60652      this.tagName = e;
60653    },
60654    add: function add(e, t, i) {
60655      if (!Es.test(e)) throw new Error("invalid attribute:" + e);
60656      this[this.length++] = {
60657        qName: e,
60658        value: t,
60659        offset: i
60660      };
60661    },
60662    length: 0,
60663    getLocalName: function getLocalName(e) {
60664      return this[e].localName;
60665    },
60666    getLocator: function getLocator(e) {
60667      return this[e].locator;
60668    },
60669    getQName: function getQName(e) {
60670      return this[e].qName;
60671    },
60672    getURI: function getURI(e) {
60673      return this[e].uri;
60674    },
60675    getValue: function getValue(e) {
60676      return this[e].value;
60677    }
60678  }, zs({}, zs.prototype) instanceof zs || (zs = function zs(e, t) {
60679    function i() {}
60680
60681    for (t in i.prototype = t, i = new i(), e) {
60682      i[t] = e[t];
60683    }
60684
60685    return i;
60686  });
60687  var Gs = {
60688    XMLReader: Rs
60689  };
60690
60691  function Xs(e, t) {
60692    for (var i in e) {
60693      t[i] = e[i];
60694    }
60695  }
60696
60697  function Ks(e, t) {
60698    var i = e.prototype;
60699
60700    if (Object.create) {
60701      var n = Object.create(t.prototype);
60702      i.__proto__ = n;
60703    }
60704
60705    if (!(i instanceof t)) {
60706      var r = function r() {};
60707
60708      r.prototype = t.prototype, Xs(i, r = new r()), e.prototype = i = r;
60709    }
60710
60711    i.constructor != e && (i.constructor = e);
60712  }
60713
60714  var Ys = "http://www.w3.org/1999/xhtml",
60715      $s = {},
60716      Qs = $s.ELEMENT_NODE = 1,
60717      Js = $s.ATTRIBUTE_NODE = 2,
60718      Zs = $s.TEXT_NODE = 3,
60719      ea = $s.CDATA_SECTION_NODE = 4,
60720      ta = $s.ENTITY_REFERENCE_NODE = 5,
60721      ia = $s.ENTITY_NODE = 6,
60722      na = $s.PROCESSING_INSTRUCTION_NODE = 7,
60723      ra = $s.COMMENT_NODE = 8,
60724      sa = $s.DOCUMENT_NODE = 9,
60725      aa = $s.DOCUMENT_TYPE_NODE = 10,
60726      oa = $s.DOCUMENT_FRAGMENT_NODE = 11,
60727      ua = $s.NOTATION_NODE = 12,
60728      la = {},
60729      ca = {},
60730      ha = (la.INDEX_SIZE_ERR = (ca[1] = "Index size error", 1), la.DOMSTRING_SIZE_ERR = (ca[2] = "DOMString size error", 2), la.HIERARCHY_REQUEST_ERR = (ca[3] = "Hierarchy request error", 3)),
60731      da = (la.WRONG_DOCUMENT_ERR = (ca[4] = "Wrong document", 4), la.INVALID_CHARACTER_ERR = (ca[5] = "Invalid character", 5), la.NO_DATA_ALLOWED_ERR = (ca[6] = "No data allowed", 6), la.NO_MODIFICATION_ALLOWED_ERR = (ca[7] = "No modification allowed", 7), la.NOT_FOUND_ERR = (ca[8] = "Not found", 8)),
60732      pa = (la.NOT_SUPPORTED_ERR = (ca[9] = "Not supported", 9), la.INUSE_ATTRIBUTE_ERR = (ca[10] = "Attribute in use", 10));
60733  la.INVALID_STATE_ERR = (ca[11] = "Invalid state", 11), la.SYNTAX_ERR = (ca[12] = "Syntax error", 12), la.INVALID_MODIFICATION_ERR = (ca[13] = "Invalid modification", 13), la.NAMESPACE_ERR = (ca[14] = "Invalid namespace", 14), la.INVALID_ACCESS_ERR = (ca[15] = "Invalid access", 15);
60734
60735  function fa(e, t) {
60736    if (t instanceof Error) var i = t;else i = this, Error.call(this, ca[e]), this.message = ca[e], Error.captureStackTrace && Error.captureStackTrace(this, fa);
60737    return i.code = e, t && (this.message = this.message + ": " + t), i;
60738  }
60739
60740  function ma() {}
60741
60742  function ga(e, t) {
60743    this._node = e, this._refresh = t, va(this);
60744  }
60745
60746  function va(e) {
60747    var t = e._node._inc || e._node.ownerDocument._inc;
60748
60749    if (e._inc != t) {
60750      var i = e._refresh(e._node);
60751
60752      Xa(e, "length", i.length), Xs(i, e), e._inc = t;
60753    }
60754  }
60755
60756  function ya() {}
60757
60758  function _a(e, t) {
60759    for (var i = e.length; i--;) {
60760      if (e[i] === t) return i;
60761    }
60762  }
60763
60764  function ba(e, t, i, n) {
60765    if (n ? t[_a(t, n)] = i : t[t.length++] = i, e) {
60766      var r = (i.ownerElement = e).ownerDocument;
60767      r && (n && xa(r, e, n), function (e, t, i) {
60768        e && e._inc++, "http://www.w3.org/2000/xmlns/" == i.namespaceURI && (t._nsMap[i.prefix ? i.localName : ""] = i.value);
60769      }(r, e, i));
60770    }
60771  }
60772
60773  function Ta(e, t, i) {
60774    var n = _a(t, i);
60775
60776    if (!(0 <= n)) throw fa(da, new Error(e.tagName + "@" + i));
60777
60778    for (var r = t.length - 1; n < r;) {
60779      t[n] = t[++n];
60780    }
60781
60782    if (t.length = r, e) {
60783      var s = e.ownerDocument;
60784      s && (xa(s, e, i), i.ownerElement = null);
60785    }
60786  }
60787
60788  function Sa(e) {
60789    if (this._features = {}, e) for (var t in e) {
60790      this._features = e[t];
60791    }
60792  }
60793
60794  function ka() {}
60795
60796  function Ca(e) {
60797    return ("<" == e ? "&lt;" : ">" == e && "&gt;") || "&" == e && "&amp;" || '"' == e && "&quot;" || "&#" + e.charCodeAt() + ";";
60798  }
60799
60800  function wa(e, t) {
60801    if (t(e)) return !0;
60802    if (e = e.firstChild) do {
60803      if (wa(e, t)) return !0;
60804    } while (e = e.nextSibling);
60805  }
60806
60807  function Ea() {}
60808
60809  function xa(e, t, i) {
60810    e && e._inc++, "http://www.w3.org/2000/xmlns/" == i.namespaceURI && delete t._nsMap[i.prefix ? i.localName : ""];
60811  }
60812
60813  function Aa(e, t, i) {
60814    if (e && e._inc) {
60815      e._inc++;
60816      var n = t.childNodes;
60817      if (i) n[n.length++] = i;else {
60818        for (var r = t.firstChild, s = 0; r;) {
60819          r = (n[s++] = r).nextSibling;
60820        }
60821
60822        n.length = s;
60823      }
60824    }
60825  }
60826
60827  function Ia(e, t) {
60828    var i = t.previousSibling,
60829        n = t.nextSibling;
60830    return i ? i.nextSibling = n : e.firstChild = n, n ? n.previousSibling = i : e.lastChild = i, Aa(e.ownerDocument, e), t;
60831  }
60832
60833  function Pa(e, t, i) {
60834    var n = t.parentNode;
60835
60836    if (n && n.removeChild(t), t.nodeType === oa) {
60837      var r = t.firstChild;
60838      if (null == r) return t;
60839      var s = t.lastChild;
60840    } else r = s = t;
60841
60842    var a = i ? i.previousSibling : e.lastChild;
60843
60844    for (r.previousSibling = a, s.nextSibling = i, a ? a.nextSibling = r : e.firstChild = r, null == i ? e.lastChild = s : i.previousSibling = s; r.parentNode = e, r !== s && (r = r.nextSibling);) {
60845      ;
60846    }
60847
60848    return Aa(e.ownerDocument || e, e), t.nodeType == oa && (t.firstChild = t.lastChild = null), t;
60849  }
60850
60851  function La() {
60852    this._nsMap = {};
60853  }
60854
60855  function Oa() {}
60856
60857  function Da() {}
60858
60859  function Na() {}
60860
60861  function Ra() {}
60862
60863  function Ua() {}
60864
60865  function Ma() {}
60866
60867  function Ba() {}
60868
60869  function ja() {}
60870
60871  function Fa() {}
60872
60873  function Ha() {}
60874
60875  function Va() {}
60876
60877  function qa() {}
60878
60879  function Wa(e, t) {
60880    var i = [],
60881        n = 9 == this.nodeType ? this.documentElement : this,
60882        r = n.prefix,
60883        s = n.namespaceURI;
60884    if (s && null == r && null == (r = n.lookupPrefix(s))) var a = [{
60885      namespace: s,
60886      prefix: null
60887    }];
60888    return Ga(this, i, e, t, a), i.join("");
60889  }
60890
60891  function za(e, t, i) {
60892    var n = e.prefix || "",
60893        r = e.namespaceURI;
60894    if (!n && !r) return !1;
60895    if ("xml" === n && "http://www.w3.org/XML/1998/namespace" === r || "http://www.w3.org/2000/xmlns/" == r) return !1;
60896
60897    for (var s = i.length; s--;) {
60898      var a = i[s];
60899      if (a.prefix == n) return a.namespace != r;
60900    }
60901
60902    return !0;
60903  }
60904
60905  function Ga(e, t, i, n, r) {
60906    if (n) {
60907      if (!(e = n(e))) return;
60908      if ("string" == typeof e) return void t.push(e);
60909    }
60910
60911    switch (e.nodeType) {
60912      case Qs:
60913        r = r || [];
60914        var s = e.attributes,
60915            a = s.length,
60916            o = e.firstChild,
60917            u = e.tagName;
60918        i = Ys === e.namespaceURI || i, t.push("<", u);
60919
60920        for (var l = 0; l < a; l++) {
60921          "xmlns" == (c = s.item(l)).prefix ? r.push({
60922            prefix: c.localName,
60923            namespace: c.value
60924          }) : "xmlns" == c.nodeName && r.push({
60925            prefix: "",
60926            namespace: c.value
60927          });
60928        }
60929
60930        for (l = 0; l < a; l++) {
60931          var c;
60932
60933          if (za(c = s.item(l), 0, r)) {
60934            var h = c.prefix || "",
60935                d = c.namespaceURI,
60936                p = h ? " xmlns:" + h : " xmlns";
60937            t.push(p, '="', d, '"'), r.push({
60938              prefix: h,
60939              namespace: d
60940            });
60941          }
60942
60943          Ga(c, t, i, n, r);
60944        }
60945
60946        if (za(e, 0, r)) {
60947          h = e.prefix || "", d = e.namespaceURI, p = h ? " xmlns:" + h : " xmlns";
60948          t.push(p, '="', d, '"'), r.push({
60949            prefix: h,
60950            namespace: d
60951          });
60952        }
60953
60954        if (o || i && !/^(?:meta|link|img|br|hr|input)$/i.test(u)) {
60955          if (t.push(">"), i && /^script$/i.test(u)) for (; o;) {
60956            o.data ? t.push(o.data) : Ga(o, t, i, n, r), o = o.nextSibling;
60957          } else for (; o;) {
60958            Ga(o, t, i, n, r), o = o.nextSibling;
60959          }
60960          t.push("</", u, ">");
60961        } else t.push("/>");
60962
60963        return;
60964
60965      case sa:
60966      case oa:
60967        for (o = e.firstChild; o;) {
60968          Ga(o, t, i, n, r), o = o.nextSibling;
60969        }
60970
60971        return;
60972
60973      case Js:
60974        return t.push(" ", e.name, '="', e.value.replace(/[<&"]/g, Ca), '"');
60975
60976      case Zs:
60977        return t.push(e.data.replace(/[<&]/g, Ca));
60978
60979      case ea:
60980        return t.push("<![CDATA[", e.data, "]]>");
60981
60982      case ra:
60983        return t.push("\x3c!--", e.data, "--\x3e");
60984
60985      case aa:
60986        var f = e.publicId,
60987            m = e.systemId;
60988        if (t.push("<!DOCTYPE ", e.name), f) t.push(' PUBLIC "', f), m && "." != m && t.push('" "', m), t.push('">');else if (m && "." != m) t.push(' SYSTEM "', m, '">');else {
60989          var g = e.internalSubset;
60990          g && t.push(" [", g, "]"), t.push(">");
60991        }
60992        return;
60993
60994      case na:
60995        return t.push("<?", e.target, " ", e.data, "?>");
60996
60997      case ta:
60998        return t.push("&", e.nodeName, ";");
60999
61000      default:
61001        t.push("??", e.nodeName);
61002    }
61003  }
61004
61005  function Xa(e, t, i) {
61006    e[t] = i;
61007  }
61008
61009  fa.prototype = Error.prototype, Xs(la, fa), ma.prototype = {
61010    length: 0,
61011    item: function item(e) {
61012      return this[e] || null;
61013    },
61014    toString: function toString(e, t) {
61015      for (var i = [], n = 0; n < this.length; n++) {
61016        Ga(this[n], i, e, t);
61017      }
61018
61019      return i.join("");
61020    }
61021  }, ga.prototype.item = function (e) {
61022    return va(this), this[e];
61023  }, Ks(ga, ma), ya.prototype = {
61024    length: 0,
61025    item: ma.prototype.item,
61026    getNamedItem: function getNamedItem(e) {
61027      for (var t = this.length; t--;) {
61028        var i = this[t];
61029        if (i.nodeName == e) return i;
61030      }
61031    },
61032    setNamedItem: function setNamedItem(e) {
61033      var t = e.ownerElement;
61034      if (t && t != this._ownerElement) throw new fa(pa);
61035      var i = this.getNamedItem(e.nodeName);
61036      return ba(this._ownerElement, this, e, i), i;
61037    },
61038    setNamedItemNS: function setNamedItemNS(e) {
61039      var t,
61040          i = e.ownerElement;
61041      if (i && i != this._ownerElement) throw new fa(pa);
61042      return t = this.getNamedItemNS(e.namespaceURI, e.localName), ba(this._ownerElement, this, e, t), t;
61043    },
61044    removeNamedItem: function removeNamedItem(e) {
61045      var t = this.getNamedItem(e);
61046      return Ta(this._ownerElement, this, t), t;
61047    },
61048    removeNamedItemNS: function removeNamedItemNS(e, t) {
61049      var i = this.getNamedItemNS(e, t);
61050      return Ta(this._ownerElement, this, i), i;
61051    },
61052    getNamedItemNS: function getNamedItemNS(e, t) {
61053      for (var i = this.length; i--;) {
61054        var n = this[i];
61055        if (n.localName == t && n.namespaceURI == e) return n;
61056      }
61057
61058      return null;
61059    }
61060  }, Sa.prototype = {
61061    hasFeature: function hasFeature(e, t) {
61062      var i = this._features[e.toLowerCase()];
61063
61064      return !(!i || t && !(t in i));
61065    },
61066    createDocument: function createDocument(e, t, i) {
61067      var n = new Ea();
61068
61069      if (n.implementation = this, n.childNodes = new ma(), (n.doctype = i) && n.appendChild(i), t) {
61070        var r = n.createElementNS(e, t);
61071        n.appendChild(r);
61072      }
61073
61074      return n;
61075    },
61076    createDocumentType: function createDocumentType(e, t, i) {
61077      var n = new Ma();
61078      return n.name = e, n.nodeName = e, n.publicId = t, n.systemId = i, n;
61079    }
61080  }, ka.prototype = {
61081    firstChild: null,
61082    lastChild: null,
61083    previousSibling: null,
61084    nextSibling: null,
61085    attributes: null,
61086    parentNode: null,
61087    childNodes: null,
61088    ownerDocument: null,
61089    nodeValue: null,
61090    namespaceURI: null,
61091    prefix: null,
61092    localName: null,
61093    insertBefore: function insertBefore(e, t) {
61094      return Pa(this, e, t);
61095    },
61096    replaceChild: function replaceChild(e, t) {
61097      this.insertBefore(e, t), t && this.removeChild(t);
61098    },
61099    removeChild: function removeChild(e) {
61100      return Ia(this, e);
61101    },
61102    appendChild: function appendChild(e) {
61103      return this.insertBefore(e, null);
61104    },
61105    hasChildNodes: function hasChildNodes() {
61106      return null != this.firstChild;
61107    },
61108    cloneNode: function cloneNode(e) {
61109      return function e(t, i, n) {
61110        var r = new i.constructor();
61111
61112        for (var s in i) {
61113          var a = i[s];
61114          "object" != _typeof(a) && a != r[s] && (r[s] = a);
61115        }
61116
61117        i.childNodes && (r.childNodes = new ma());
61118        r.ownerDocument = t;
61119
61120        switch (r.nodeType) {
61121          case Qs:
61122            var o = i.attributes,
61123                u = r.attributes = new ya(),
61124                l = o.length;
61125            u._ownerElement = r;
61126
61127            for (var c = 0; c < l; c++) {
61128              r.setAttributeNode(e(t, o.item(c), !0));
61129            }
61130
61131            break;
61132
61133          case Js:
61134            n = !0;
61135        }
61136
61137        if (n) for (var h = i.firstChild; h;) {
61138          r.appendChild(e(t, h, n)), h = h.nextSibling;
61139        }
61140        return r;
61141      }(this.ownerDocument || this, this, e);
61142    },
61143    normalize: function normalize() {
61144      for (var e = this.firstChild; e;) {
61145        var t = e.nextSibling;
61146        t && t.nodeType == Zs && e.nodeType == Zs ? (this.removeChild(t), e.appendData(t.data)) : (e.normalize(), e = t);
61147      }
61148    },
61149    isSupported: function isSupported(e, t) {
61150      return this.ownerDocument.implementation.hasFeature(e, t);
61151    },
61152    hasAttributes: function hasAttributes() {
61153      return 0 < this.attributes.length;
61154    },
61155    lookupPrefix: function lookupPrefix(e) {
61156      for (var t = this; t;) {
61157        var i = t._nsMap;
61158        if (i) for (var n in i) {
61159          if (i[n] == e) return n;
61160        }
61161        t = t.nodeType == Js ? t.ownerDocument : t.parentNode;
61162      }
61163
61164      return null;
61165    },
61166    lookupNamespaceURI: function lookupNamespaceURI(e) {
61167      for (var t = this; t;) {
61168        var i = t._nsMap;
61169        if (i && e in i) return i[e];
61170        t = t.nodeType == Js ? t.ownerDocument : t.parentNode;
61171      }
61172
61173      return null;
61174    },
61175    isDefaultNamespace: function isDefaultNamespace(e) {
61176      return null == this.lookupPrefix(e);
61177    }
61178  }, Xs($s, ka), Xs($s, ka.prototype), Ea.prototype = {
61179    nodeName: "#document",
61180    nodeType: sa,
61181    doctype: null,
61182    documentElement: null,
61183    _inc: 1,
61184    insertBefore: function insertBefore(e, t) {
61185      if (e.nodeType != oa) return null == this.documentElement && e.nodeType == Qs && (this.documentElement = e), Pa(this, e, t), e.ownerDocument = this, e;
61186
61187      for (var i = e.firstChild; i;) {
61188        var n = i.nextSibling;
61189        this.insertBefore(i, t), i = n;
61190      }
61191
61192      return e;
61193    },
61194    removeChild: function removeChild(e) {
61195      return this.documentElement == e && (this.documentElement = null), Ia(this, e);
61196    },
61197    importNode: function importNode(e, t) {
61198      return function e(t, i, n) {
61199        var r;
61200
61201        switch (i.nodeType) {
61202          case Qs:
61203            (r = i.cloneNode(!1)).ownerDocument = t;
61204
61205          case oa:
61206            break;
61207
61208          case Js:
61209            n = !0;
61210        }
61211
61212        r = r || i.cloneNode(!1);
61213        r.ownerDocument = t;
61214        r.parentNode = null;
61215        if (n) for (var s = i.firstChild; s;) {
61216          r.appendChild(e(t, s, n)), s = s.nextSibling;
61217        }
61218        return r;
61219      }(this, e, t);
61220    },
61221    getElementById: function getElementById(t) {
61222      var i = null;
61223      return wa(this.documentElement, function (e) {
61224        if (e.nodeType == Qs && e.getAttribute("id") == t) return i = e, !0;
61225      }), i;
61226    },
61227    createElement: function createElement(e) {
61228      var t = new La();
61229      return t.ownerDocument = this, t.nodeName = e, t.tagName = e, t.childNodes = new ma(), (t.attributes = new ya())._ownerElement = t;
61230    },
61231    createDocumentFragment: function createDocumentFragment() {
61232      var e = new Ha();
61233      return e.ownerDocument = this, e.childNodes = new ma(), e;
61234    },
61235    createTextNode: function createTextNode(e) {
61236      var t = new Na();
61237      return t.ownerDocument = this, t.appendData(e), t;
61238    },
61239    createComment: function createComment(e) {
61240      var t = new Ra();
61241      return t.ownerDocument = this, t.appendData(e), t;
61242    },
61243    createCDATASection: function createCDATASection(e) {
61244      var t = new Ua();
61245      return t.ownerDocument = this, t.appendData(e), t;
61246    },
61247    createProcessingInstruction: function createProcessingInstruction(e, t) {
61248      var i = new Va();
61249      return i.ownerDocument = this, i.tagName = i.target = e, i.nodeValue = i.data = t, i;
61250    },
61251    createAttribute: function createAttribute(e) {
61252      var t = new Oa();
61253      return t.ownerDocument = this, t.name = e, t.nodeName = e, t.localName = e, t.specified = !0, t;
61254    },
61255    createEntityReference: function createEntityReference(e) {
61256      var t = new Fa();
61257      return t.ownerDocument = this, t.nodeName = e, t;
61258    },
61259    createElementNS: function createElementNS(e, t) {
61260      var i = new La(),
61261          n = t.split(":"),
61262          r = i.attributes = new ya();
61263      return i.childNodes = new ma(), i.ownerDocument = this, i.nodeName = t, i.tagName = t, i.namespaceURI = e, 2 == n.length ? (i.prefix = n[0], i.localName = n[1]) : i.localName = t, r._ownerElement = i;
61264    },
61265    createAttributeNS: function createAttributeNS(e, t) {
61266      var i = new Oa(),
61267          n = t.split(":");
61268      return i.ownerDocument = this, i.nodeName = t, i.name = t, i.namespaceURI = e, i.specified = !0, 2 == n.length ? (i.prefix = n[0], i.localName = n[1]) : i.localName = t, i;
61269    }
61270  }, Ks(Ea, ka), Ea.prototype.getElementsByTagName = (La.prototype = {
61271    nodeType: Qs,
61272    hasAttribute: function hasAttribute(e) {
61273      return null != this.getAttributeNode(e);
61274    },
61275    getAttribute: function getAttribute(e) {
61276      var t = this.getAttributeNode(e);
61277      return t && t.value || "";
61278    },
61279    getAttributeNode: function getAttributeNode(e) {
61280      return this.attributes.getNamedItem(e);
61281    },
61282    setAttribute: function setAttribute(e, t) {
61283      var i = this.ownerDocument.createAttribute(e);
61284      i.value = i.nodeValue = "" + t, this.setAttributeNode(i);
61285    },
61286    removeAttribute: function removeAttribute(e) {
61287      var t = this.getAttributeNode(e);
61288      t && this.removeAttributeNode(t);
61289    },
61290    appendChild: function appendChild(e) {
61291      return e.nodeType === oa ? this.insertBefore(e, null) : function (e, t) {
61292        var i = t.parentNode;
61293
61294        if (i) {
61295          var n = e.lastChild;
61296          i.removeChild(t);
61297          n = e.lastChild;
61298        }
61299
61300        return n = e.lastChild, t.parentNode = e, t.previousSibling = n, t.nextSibling = null, n ? n.nextSibling = t : e.firstChild = t, e.lastChild = t, Aa(e.ownerDocument, e, t), t;
61301      }(this, e);
61302    },
61303    setAttributeNode: function setAttributeNode(e) {
61304      return this.attributes.setNamedItem(e);
61305    },
61306    setAttributeNodeNS: function setAttributeNodeNS(e) {
61307      return this.attributes.setNamedItemNS(e);
61308    },
61309    removeAttributeNode: function removeAttributeNode(e) {
61310      return this.attributes.removeNamedItem(e.nodeName);
61311    },
61312    removeAttributeNS: function removeAttributeNS(e, t) {
61313      var i = this.getAttributeNodeNS(e, t);
61314      i && this.removeAttributeNode(i);
61315    },
61316    hasAttributeNS: function hasAttributeNS(e, t) {
61317      return null != this.getAttributeNodeNS(e, t);
61318    },
61319    getAttributeNS: function getAttributeNS(e, t) {
61320      var i = this.getAttributeNodeNS(e, t);
61321      return i && i.value || "";
61322    },
61323    setAttributeNS: function setAttributeNS(e, t, i) {
61324      var n = this.ownerDocument.createAttributeNS(e, t);
61325      n.value = n.nodeValue = "" + i, this.setAttributeNode(n);
61326    },
61327    getAttributeNodeNS: function getAttributeNodeNS(e, t) {
61328      return this.attributes.getNamedItemNS(e, t);
61329    },
61330    getElementsByTagName: function getElementsByTagName(n) {
61331      return new ga(this, function (t) {
61332        var i = [];
61333        return wa(t, function (e) {
61334          e === t || e.nodeType != Qs || "*" !== n && e.tagName != n || i.push(e);
61335        }), i;
61336      });
61337    },
61338    getElementsByTagNameNS: function getElementsByTagNameNS(n, r) {
61339      return new ga(this, function (t) {
61340        var i = [];
61341        return wa(t, function (e) {
61342          e === t || e.nodeType !== Qs || "*" !== n && e.namespaceURI !== n || "*" !== r && e.localName != r || i.push(e);
61343        }), i;
61344      });
61345    }
61346  }).getElementsByTagName, Ea.prototype.getElementsByTagNameNS = La.prototype.getElementsByTagNameNS, Ks(La, ka), Oa.prototype.nodeType = Js, Ks(Oa, ka), Da.prototype = {
61347    data: "",
61348    substringData: function substringData(e, t) {
61349      return this.data.substring(e, e + t);
61350    },
61351    appendData: function appendData(e) {
61352      e = this.data + e, this.nodeValue = this.data = e, this.length = e.length;
61353    },
61354    insertData: function insertData(e, t) {
61355      this.replaceData(e, 0, t);
61356    },
61357    appendChild: function appendChild(e) {
61358      throw new Error(ca[ha]);
61359    },
61360    deleteData: function deleteData(e, t) {
61361      this.replaceData(e, t, "");
61362    },
61363    replaceData: function replaceData(e, t, i) {
61364      i = this.data.substring(0, e) + i + this.data.substring(e + t), this.nodeValue = this.data = i, this.length = i.length;
61365    }
61366  }, Ks(Da, ka), Na.prototype = {
61367    nodeName: "#text",
61368    nodeType: Zs,
61369    splitText: function splitText(e) {
61370      var t = this.data,
61371          i = t.substring(e);
61372      t = t.substring(0, e), this.data = this.nodeValue = t, this.length = t.length;
61373      var n = this.ownerDocument.createTextNode(i);
61374      return this.parentNode && this.parentNode.insertBefore(n, this.nextSibling), n;
61375    }
61376  }, Ks(Na, Da), Ra.prototype = {
61377    nodeName: "#comment",
61378    nodeType: ra
61379  }, Ks(Ra, Da), Ua.prototype = {
61380    nodeName: "#cdata-section",
61381    nodeType: ea
61382  }, Ks(Ua, Da), Ma.prototype.nodeType = aa, Ks(Ma, ka), Ba.prototype.nodeType = ua, Ks(Ba, ka), ja.prototype.nodeType = ia, Ks(ja, ka), Fa.prototype.nodeType = ta, Ks(Fa, ka), Ha.prototype.nodeName = "#document-fragment", Ha.prototype.nodeType = oa, Ks(Ha, ka), Va.prototype.nodeType = na, Ks(Va, ka), qa.prototype.serializeToString = function (e, t, i) {
61383    return Wa.call(e, t, i);
61384  }, ka.prototype.toString = Wa;
61385
61386  try {
61387    if (Object.defineProperty) {
61388      Object.defineProperty(ga.prototype, "length", {
61389        get: function get() {
61390          return va(this), this.$$length;
61391        }
61392      }), Object.defineProperty(ka.prototype, "textContent", {
61393        get: function get() {
61394          return function e(t) {
61395            switch (t.nodeType) {
61396              case Qs:
61397              case oa:
61398                var i = [];
61399
61400                for (t = t.firstChild; t;) {
61401                  7 !== t.nodeType && 8 !== t.nodeType && i.push(e(t)), t = t.nextSibling;
61402                }
61403
61404                return i.join("");
61405
61406              default:
61407                return t.nodeValue;
61408            }
61409          }(this);
61410        },
61411        set: function set(e) {
61412          switch (this.nodeType) {
61413            case Qs:
61414            case oa:
61415              for (; this.firstChild;) {
61416                this.removeChild(this.firstChild);
61417              }
61418
61419              (e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e));
61420              break;
61421
61422            default:
61423              this.data = e, this.value = e, this.nodeValue = e;
61424          }
61425        }
61426      }), Xa = function Xa(e, t, i) {
61427        e["$$" + t] = i;
61428      };
61429    }
61430  } catch (e) {}
61431
61432  function Ka(e) {
61433    return !!e && "object" == _typeof(e);
61434  }
61435
61436  function Ya() {
61437    for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) {
61438      t[i] = arguments[i];
61439    }
61440
61441    return t.reduce(function (t, i) {
61442      return Object.keys(i).forEach(function (e) {
61443        Array.isArray(t[e]) && Array.isArray(i[e]) ? t[e] = t[e].concat(i[e]) : Ka(t[e]) && Ka(i[e]) ? t[e] = Ya(t[e], i[e]) : t[e] = i[e];
61444      }), t;
61445    }, {});
61446  }
61447
61448  function $a(e) {
61449    return e.reduce(function (e, t) {
61450      return e.concat(t);
61451    }, []);
61452  }
61453
61454  function Qa(e) {
61455    if (!e.length) return [];
61456
61457    for (var t = [], i = 0; i < e.length; i++) {
61458      t.push(e[i]);
61459    }
61460
61461    return t;
61462  }
61463
61464  function Ja(e) {
61465    var t = e.baseUrl,
61466        i = void 0 === t ? "" : t,
61467        n = e.source,
61468        r = void 0 === n ? "" : n,
61469        s = e.range,
61470        a = void 0 === s ? "" : s,
61471        o = e.indexRange,
61472        u = void 0 === o ? "" : o,
61473        l = {
61474      uri: r,
61475      resolvedUri: bs(i || "", r)
61476    };
61477
61478    if (a || u) {
61479      var c = (a || u).split("-"),
61480          h = parseInt(c[0], 10),
61481          d = parseInt(c[1], 10);
61482      l.byterange = {
61483        length: d - h + 1,
61484        offset: h
61485      };
61486    }
61487
61488    return l;
61489  }
61490
61491  function Za(e) {
61492    var t = e.type,
61493        i = void 0 === t ? "static" : t,
61494        n = e.duration,
61495        r = e.timescale,
61496        s = void 0 === r ? 1 : r,
61497        a = e.sourceDuration,
61498        o = Vo[i](e),
61499        u = function (e, t) {
61500      for (var i = [], n = e; n < t; n++) {
61501        i.push(n);
61502      }
61503
61504      return i;
61505    }(o.start, o.end).map(function (o) {
61506      return function (e, t) {
61507        var i = o.duration,
61508            n = o.timescale,
61509            r = void 0 === n ? 1 : n,
61510            s = o.periodIndex,
61511            a = o.startNumber;
61512        return {
61513          number: (void 0 === a ? 1 : a) + e,
61514          duration: i / r,
61515          timeline: s,
61516          time: t * i
61517        };
61518      };
61519    }(e));
61520
61521    if ("static" === i) {
61522      var l = u.length - 1;
61523      u[l].duration = a - n / s * l;
61524    }
61525
61526    return u;
61527  }
61528
61529  function eo(e) {
61530    var t = e.baseUrl,
61531        i = e.initialization,
61532        n = void 0 === i ? {} : i,
61533        r = e.sourceDuration,
61534        s = e.timescale,
61535        a = void 0 === s ? 1 : s,
61536        o = e.indexRange,
61537        u = void 0 === o ? "" : o,
61538        l = e.duration;
61539    if (!t) throw new Error(jo);
61540    var c = Ja({
61541      baseUrl: t,
61542      source: n.sourceURL,
61543      range: n.range
61544    }),
61545        h = Ja({
61546      baseUrl: t,
61547      source: t,
61548      indexRange: u
61549    });
61550
61551    if (h.map = c, l) {
61552      var d = Za(e);
61553      d.length && (h.duration = d[0].duration, h.timeline = d[0].timeline);
61554    } else r && (h.duration = r / a, h.timeline = 0);
61555
61556    return h.number = 0, [h];
61557  }
61558
61559  function to(e, t, i) {
61560    for (var n = e.sidx.map ? e.sidx.map : null, r = e.sidx.duration, s = e.timeline || 0, a = e.sidx.byterange, o = a.offset + a.length, u = t.timescale, l = t.references.filter(function (e) {
61561      return 1 !== e.referenceType;
61562    }), c = [], h = o + t.firstOffset, d = 0; d < l.length; d++) {
61563      var p = t.references[d],
61564          f = p.referencedSize,
61565          m = p.subsegmentDuration,
61566          g = eo({
61567        baseUrl: i,
61568        timescale: u,
61569        timeline: s,
61570        periodIndex: s,
61571        duration: m,
61572        sourceDuration: r,
61573        indexRange: h + "-" + (h + f - 1)
61574      })[0];
61575      n && (g.map = n), c.push(g), h += f;
61576    }
61577
61578    return e.segments = c, e;
61579  }
61580
61581  function io(e) {
61582    return function (t) {
61583      return Object.keys(t).map(function (e) {
61584        return t[e];
61585      });
61586    }(e.reduce(function (e, t) {
61587      var i,
61588          n = t.attributes.id + (t.attributes.lang || "");
61589      e[n] ? (t.segments[0] && (t.segments[0].discontinuity = !0), (i = e[n].segments).push.apply(i, t.segments), t.attributes.contentProtection && (e[n].attributes.contentProtection = t.attributes.contentProtection)) : e[n] = t;
61590      return e;
61591    }, {})).map(function (e) {
61592      return e.discontinuityStarts = function (e, n) {
61593        return e.reduce(function (e, t, i) {
61594          return t[n] && e.push(i), e;
61595        }, []);
61596      }(e.segments, "discontinuity"), e;
61597    });
61598  }
61599
61600  function no(e, t) {
61601    if (void 0 === t && (t = {}), !Object.keys(t).length) return e;
61602
61603    for (var i in e) {
61604      var n = e[i];
61605
61606      if (n.sidx) {
61607        var r = n.sidx.uri + "-" + (a = n.sidx.byterange, void 0, o = a.offset + a.length - 1, a.offset + "-" + o),
61608            s = t[r] && t[r].sidx;
61609        n.sidx && s && to(n, s, n.sidx.resolvedUri);
61610      }
61611    }
61612
61613    var a, o;
61614    return e;
61615  }
61616
61617  function ro(e) {
61618    var t,
61619        i = e.attributes,
61620        n = e.segments,
61621        r = e.sidx,
61622        s = {
61623      attributes: (t = {
61624        NAME: i.id,
61625        AUDIO: "audio",
61626        SUBTITLES: "subs",
61627        RESOLUTION: {
61628          width: i.width,
61629          height: i.height
61630        },
61631        CODECS: i.codecs,
61632        BANDWIDTH: i.bandwidth
61633      }, t["PROGRAM-ID"] = 1, t),
61634      uri: "",
61635      endList: "static" === (i.type || "static"),
61636      timeline: i.periodIndex,
61637      resolvedUri: "",
61638      targetDuration: i.duration,
61639      segments: n,
61640      mediaSequence: n.length ? n[0].number : 1
61641    };
61642    return i.contentProtection && (s.contentProtection = i.contentProtection), r && (s.sidx = r), s;
61643  }
61644
61645  function so(e, t) {
61646    var i;
61647    if (void 0 === t && (t = {}), !e.length) return {};
61648    var n = e[0].attributes,
61649        r = n.sourceDuration,
61650        s = n.type,
61651        a = void 0 === s ? "static" : s,
61652        o = n.suggestedPresentationDelay,
61653        u = n.minimumUpdatePeriod,
61654        l = void 0 === u ? 0 : u,
61655        c = io(e.filter(function (e) {
61656      var t = e.attributes;
61657      return "video/mp4" === t.mimeType || "video" === t.contentType;
61658    })).map(ro),
61659        h = io(e.filter(function (e) {
61660      var t = e.attributes;
61661      return "audio/mp4" === t.mimeType || "audio" === t.contentType;
61662    })),
61663        d = e.filter(function (e) {
61664      var t = e.attributes;
61665      return "text/vtt" === t.mimeType || "text" === t.contentType;
61666    }),
61667        p = {
61668      allowCache: !0,
61669      discontinuityStarts: [],
61670      segments: [],
61671      endList: !0,
61672      mediaGroups: (i = {
61673        AUDIO: {},
61674        VIDEO: {}
61675      }, i["CLOSED-CAPTIONS"] = {}, i.SUBTITLES = {}, i),
61676      uri: "",
61677      duration: r,
61678      playlists: no(c, t),
61679      minimumUpdatePeriod: 1e3 * l
61680    };
61681    return "dynamic" === a && (p.suggestedPresentationDelay = o), h.length && (p.mediaGroups.AUDIO.audio = function (e, a) {
61682      var o;
61683      void 0 === a && (a = {});
61684      var t = e.reduce(function (e, t) {
61685        var i = t.attributes.role && t.attributes.role.value || "",
61686            n = t.attributes.lang || "",
61687            r = "main";
61688
61689        if (n) {
61690          var s = i ? " (" + i + ")" : "";
61691          r = t.attributes.lang + s;
61692        }
61693
61694        return e[r] && e[r].playlists[0].attributes.BANDWIDTH > t.attributes.bandwidth || (e[r] = {
61695          language: n,
61696          autoselect: !0,
61697          "default": "main" === i,
61698          playlists: no([function (e) {
61699            var t,
61700                i = e.attributes,
61701                n = e.segments,
61702                r = e.sidx,
61703                s = {
61704              attributes: (t = {
61705                NAME: i.id,
61706                BANDWIDTH: i.bandwidth,
61707                CODECS: i.codecs
61708              }, t["PROGRAM-ID"] = 1, t),
61709              uri: "",
61710              endList: "static" === (i.type || "static"),
61711              timeline: i.periodIndex,
61712              resolvedUri: "",
61713              targetDuration: i.duration,
61714              segments: n,
61715              mediaSequence: n.length ? n[0].number : 1
61716            };
61717            return i.contentProtection && (s.contentProtection = i.contentProtection), r && (s.sidx = r), s;
61718          }(t)], a),
61719          uri: ""
61720        }, "undefined" == typeof o && "main" === i && ((o = t)["default"] = !0)), e;
61721      }, {});
61722      o || (t[Object.keys(t)[0]]["default"] = !0);
61723      return t;
61724    }(h, t)), d.length && (p.mediaGroups.SUBTITLES.subs = function (e, n) {
61725      return void 0 === n && (n = {}), e.reduce(function (e, t) {
61726        var i = t.attributes.lang || "text";
61727        return e[i] || (e[i] = {
61728          language: i,
61729          "default": !1,
61730          autoselect: !1,
61731          playlists: no([function (e) {
61732            var t,
61733                i = e.attributes,
61734                n = e.segments;
61735            return "undefined" == typeof n && (n = [{
61736              uri: i.baseUrl,
61737              timeline: i.periodIndex,
61738              resolvedUri: i.baseUrl || "",
61739              duration: i.sourceDuration,
61740              number: 0
61741            }], i.duration = i.sourceDuration), {
61742              attributes: (t = {
61743                NAME: i.id,
61744                BANDWIDTH: i.bandwidth
61745              }, t["PROGRAM-ID"] = 1, t),
61746              uri: "",
61747              endList: "static" === (i.type || "static"),
61748              timeline: i.periodIndex,
61749              resolvedUri: i.baseUrl || "",
61750              targetDuration: i.duration,
61751              segments: n,
61752              mediaSequence: n.length ? n[0].number : 1
61753            };
61754          }(t)], n),
61755          uri: ""
61756        }), e;
61757      }, {});
61758    }(d, t)), p;
61759  }
61760
61761  function ao(e, t) {
61762    for (var i, n, r, s, a, o, u, l, c, h, d, p, f = e.type, m = void 0 === f ? "static" : f, g = e.minimumUpdatePeriod, v = void 0 === g ? 0 : g, y = e.media, _ = void 0 === y ? "" : y, b = e.sourceDuration, T = e.timescale, S = void 0 === T ? 1 : T, k = e.startNumber, C = void 0 === k ? 1 : k, w = e.periodIndex, E = [], x = -1, A = 0; A < t.length; A++) {
61763      var I = t[A],
61764          P = I.d,
61765          L = I.r || 0,
61766          O = I.t || 0;
61767      x < 0 && (x = O), O && x < O && (x = O);
61768      var D = void 0;
61769
61770      if (L < 0) {
61771        var N = A + 1;
61772        D = N === t.length ? "dynamic" === m && 0 < v && 0 < _.indexOf("$Number$") ? (n = x, r = P, void 0, s = (i = e).NOW, a = i.clientOffset, o = i.availabilityStartTime, u = i.timescale, l = void 0 === u ? 1 : u, c = i.start, h = void 0 === c ? 0 : c, d = i.minimumUpdatePeriod, p = (s + a) / 1e3 + (void 0 === d ? 0 : d) - (o + h), Math.ceil((p * l - n) / r)) : (b * S - x) / P : (t[N].t - x) / P;
61773      } else D = L + 1;
61774
61775      for (var R = C + E.length + D, U = C + E.length; U < R;) {
61776        E.push({
61777          number: U,
61778          duration: P / S,
61779          time: x,
61780          timeline: w
61781        }), x += P, U++;
61782      }
61783    }
61784
61785    return E;
61786  }
61787
61788  function oo(e, t) {
61789    return e.replace(qo, function (s) {
61790      return function (e, t, i, n) {
61791        if ("$$" === e) return "$";
61792        if ("undefined" == typeof s[t]) return e;
61793        var r = "" + s[t];
61794        return "RepresentationID" === t ? r : (n = i ? parseInt(n, 10) : 1) <= r.length ? r : new Array(n - r.length + 1).join("0") + r;
61795      };
61796    }(t));
61797  }
61798
61799  function uo(i, e) {
61800    var n = {
61801      RepresentationID: i.id,
61802      Bandwidth: i.bandwidth || 0
61803    },
61804        t = i.initialization,
61805        r = void 0 === t ? {
61806      sourceURL: "",
61807      range: ""
61808    } : t,
61809        s = Ja({
61810      baseUrl: i.baseUrl,
61811      source: oo(r.sourceURL, n),
61812      range: r.range
61813    });
61814    return function (e, t) {
61815      return e.duration || t ? e.duration ? Za(e) : ao(e, t) : [{
61816        number: e.startNumber || 1,
61817        duration: e.sourceDuration,
61818        time: 0,
61819        timeline: e.periodIndex
61820      }];
61821    }(i, e).map(function (e) {
61822      n.Number = e.number, n.Time = e.time;
61823      var t = oo(i.media || "", n);
61824      return {
61825        uri: t,
61826        timeline: e.timeline,
61827        duration: e.duration,
61828        resolvedUri: bs(i.baseUrl || "", t),
61829        map: s,
61830        number: e.number
61831      };
61832    });
61833  }
61834
61835  function lo(t, e) {
61836    var i = t.duration,
61837        n = t.segmentUrls,
61838        r = void 0 === n ? [] : n;
61839    if (!i && !e || i && e) throw new Error(Fo);
61840    var s,
61841        a = r.map(function (e) {
61842      return function (e, t) {
61843        var i = e.baseUrl,
61844            n = e.initialization,
61845            r = void 0 === n ? {} : n,
61846            s = Ja({
61847          baseUrl: i,
61848          source: r.sourceURL,
61849          range: r.range
61850        }),
61851            a = Ja({
61852          baseUrl: i,
61853          source: t.media,
61854          range: t.mediaRange
61855        });
61856        return a.map = s, a;
61857      }(t, e);
61858    });
61859    return i && (s = Za(t)), e && (s = ao(t, e)), s.map(function (e, t) {
61860      if (a[t]) {
61861        var i = a[t];
61862        return i.timeline = e.timeline, i.duration = e.duration, i.number = e.number, i;
61863      }
61864    }).filter(function (e) {
61865      return e;
61866    });
61867  }
61868
61869  function co(e) {
61870    var t,
61871        i,
61872        n = e.attributes,
61873        r = e.segmentInfo;
61874    r.template ? (i = uo, t = Ya(n, r.template)) : r.base ? (i = eo, t = Ya(n, r.base)) : r.list && (i = lo, t = Ya(n, r.list));
61875    var s = {
61876      attributes: n
61877    };
61878    if (!i) return s;
61879    var a = i(t, r.timeline);
61880
61881    if (t.duration) {
61882      var o = t,
61883          u = o.duration,
61884          l = o.timescale,
61885          c = void 0 === l ? 1 : l;
61886      t.duration = u / c;
61887    } else a.length ? t.duration = a.reduce(function (e, t) {
61888      return Math.max(e, Math.ceil(t.duration));
61889    }, 0) : t.duration = 0;
61890
61891    return s.attributes = t, s.segments = a, r.base && t.indexRange && (s.sidx = a[0], s.segments = []), s;
61892  }
61893
61894  function ho(e, t) {
61895    return Qa(e.childNodes).filter(function (e) {
61896      return e.tagName === t;
61897    });
61898  }
61899
61900  function po(e) {
61901    return e.textContent.trim();
61902  }
61903
61904  function fo(e) {
61905    var t = /P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(e);
61906    if (!t) return 0;
61907    var i = t.slice(1),
61908        n = i[0],
61909        r = i[1],
61910        s = i[2],
61911        a = i[3],
61912        o = i[4],
61913        u = i[5];
61914    return 31536e3 * parseFloat(n || 0) + 2592e3 * parseFloat(r || 0) + 86400 * parseFloat(s || 0) + 3600 * parseFloat(a || 0) + 60 * parseFloat(o || 0) + parseFloat(u || 0);
61915  }
61916
61917  function mo(e) {
61918    return e && e.attributes ? Qa(e.attributes).reduce(function (e, t) {
61919      var i = Wo[t.name] || Wo.DEFAULT;
61920      return e[t.name] = i(t.value), e;
61921    }, {}) : {};
61922  }
61923
61924  function go(e, i) {
61925    return i.length ? $a(e.map(function (t) {
61926      return i.map(function (e) {
61927        return bs(t, po(e));
61928      });
61929    })) : e;
61930  }
61931
61932  function vo(e) {
61933    var t = ho(e, "SegmentTemplate")[0],
61934        i = ho(e, "SegmentList")[0],
61935        n = i && ho(i, "SegmentURL").map(function (e) {
61936      return Ya({
61937        tag: "SegmentURL"
61938      }, mo(e));
61939    }),
61940        r = ho(e, "SegmentBase")[0],
61941        s = i || t,
61942        a = s && ho(s, "SegmentTimeline")[0],
61943        o = i || r || t,
61944        u = o && ho(o, "Initialization")[0],
61945        l = t && mo(t);
61946    l && u ? l.initialization = u && mo(u) : l && l.initialization && (l.initialization = {
61947      sourceURL: l.initialization
61948    });
61949    var c = {
61950      template: l,
61951      timeline: a && ho(a, "S").map(function (e) {
61952        return mo(e);
61953      }),
61954      list: i && Ya(mo(i), {
61955        segmentUrls: n,
61956        initialization: mo(u)
61957      }),
61958      base: r && Ya(mo(r), {
61959        initialization: mo(u)
61960      })
61961    };
61962    return Object.keys(c).forEach(function (e) {
61963      c[e] || delete c[e];
61964    }), c;
61965  }
61966
61967  function yo(c, h, d) {
61968    return function (e) {
61969      var t = mo(e),
61970          i = go(h, ho(e, "BaseURL")),
61971          n = ho(e, "Role")[0],
61972          r = {
61973        role: mo(n)
61974      },
61975          s = Ya(c, t, r),
61976          a = function (e) {
61977        return e.reduce(function (e, t) {
61978          var i = mo(t),
61979              n = zo[i.schemeIdUri];
61980
61981          if (n) {
61982            e[n] = {
61983              attributes: i
61984            };
61985            var r = ho(t, "cenc:pssh")[0];
61986
61987            if (r) {
61988              var s = po(r),
61989                  a = s && ks(s);
61990              e[n].pssh = a;
61991            }
61992          }
61993
61994          return e;
61995        }, {});
61996      }(ho(e, "ContentProtection"));
61997
61998      Object.keys(a).length && (s = Ya(s, {
61999        contentProtection: a
62000      }));
62001      var o = vo(e),
62002          u = ho(e, "Representation"),
62003          l = Ya(d, o);
62004      return $a(u.map(function (s, a, o) {
62005        return function (e) {
62006          var t = ho(e, "BaseURL"),
62007              i = go(a, t),
62008              n = Ya(s, mo(e)),
62009              r = vo(e);
62010          return i.map(function (e) {
62011            return {
62012              segmentInfo: Ya(o, r),
62013              attributes: Ya(n, {
62014                baseUrl: e
62015              })
62016            };
62017          });
62018        };
62019      }(s, i, l)));
62020    };
62021  }
62022
62023  function _o(e, t) {
62024    void 0 === t && (t = {});
62025    var i = t,
62026        n = i.manifestUri,
62027        r = void 0 === n ? "" : n,
62028        s = i.NOW,
62029        a = void 0 === s ? Date.now() : s,
62030        o = i.clientOffset,
62031        u = void 0 === o ? 0 : o,
62032        l = ho(e, "Period");
62033    if (!l.length) throw new Error(Uo);
62034    var c = mo(e),
62035        h = go([r], ho(e, "BaseURL"));
62036    return c.sourceDuration = c.mediaPresentationDuration || 0, c.NOW = a, c.clientOffset = u, $a(l.map(function (l, c) {
62037      return function (e, t) {
62038        var i = go(c, ho(e, "BaseURL")),
62039            n = mo(e),
62040            r = parseInt(n.id, 10),
62041            s = y.isNaN(r) ? t : r,
62042            a = Ya(l, {
62043          periodIndex: s
62044        }),
62045            o = ho(e, "AdaptationSet"),
62046            u = vo(e);
62047        return $a(o.map(yo(a, i, u)));
62048      };
62049    }(c, h)));
62050  }
62051
62052  function bo(e) {
62053    if ("" === e) throw new Error(Mo);
62054    var t = new Ro().parseFromString(e, "application/xml"),
62055        i = t && "MPD" === t.documentElement.tagName ? t.documentElement : null;
62056    if (!i || i && 0 < i.getElementsByTagName("parsererror").length) throw new Error(Bo);
62057    return i;
62058  }
62059
62060  function To(e, t) {
62061    return void 0 === t && (t = {}), so(function (e) {
62062      return e.map(co);
62063    }(_o(bo(e), t)), t.sidxMapping);
62064  }
62065
62066  function So(e) {
62067    return function (e) {
62068      var t = ho(e, "UTCTiming")[0];
62069      if (!t) return null;
62070      var i = mo(t);
62071
62072      switch (i.schemeIdUri) {
62073        case "urn:mpeg:dash:utc:http-head:2014":
62074        case "urn:mpeg:dash:utc:http-head:2012":
62075          i.method = "HEAD";
62076          break;
62077
62078        case "urn:mpeg:dash:utc:http-xsdate:2014":
62079        case "urn:mpeg:dash:utc:http-iso:2014":
62080        case "urn:mpeg:dash:utc:http-xsdate:2012":
62081        case "urn:mpeg:dash:utc:http-iso:2012":
62082          i.method = "GET";
62083          break;
62084
62085        case "urn:mpeg:dash:utc:direct:2014":
62086        case "urn:mpeg:dash:utc:direct:2012":
62087          i.method = "DIRECT", i.value = Date.parse(i.value);
62088          break;
62089
62090        case "urn:mpeg:dash:utc:http-ntp:2014":
62091        case "urn:mpeg:dash:utc:ntp:2014":
62092        case "urn:mpeg:dash:utc:sntp:2014":
62093        default:
62094          throw new Error(Ho);
62095      }
62096
62097      return i;
62098    }(bo(e));
62099  }
62100
62101  function ko(e) {
62102    return new Date(1e3 * e - 20828448e5);
62103  }
62104
62105  function Co(e) {
62106    return {
62107      isLeading: (12 & e[0]) >>> 2,
62108      dependsOn: 3 & e[0],
62109      isDependedOn: (192 & e[1]) >>> 6,
62110      hasRedundancy: (48 & e[1]) >>> 4,
62111      paddingValue: (14 & e[1]) >>> 1,
62112      isNonSyncSample: 1 & e[1],
62113      degradationPriority: e[2] << 8 | e[3]
62114    };
62115  }
62116
62117  function wo(e) {
62118    var t = "";
62119    return t += String.fromCharCode(e[0]), t += String.fromCharCode(e[1]), t += String.fromCharCode(e[2]), t += String.fromCharCode(e[3]);
62120  }
62121
62122  var Eo,
62123      _xo,
62124      Ao,
62125      Io,
62126      Po,
62127      Lo,
62128      Oo,
62129      Do = {
62130    DOMImplementation: Sa,
62131    XMLSerializer: qa
62132  },
62133      No = t(function (e, t) {
62134    function i(e) {
62135      this.options = e || {
62136        locator: {}
62137      };
62138    }
62139
62140    function l() {
62141      this.cdata = !1;
62142    }
62143
62144    function c(e, t) {
62145      t.lineNumber = e.lineNumber, t.columnNumber = e.columnNumber;
62146    }
62147
62148    function h(e) {
62149      if (e) return "\n@" + (e.systemId || "") + "#[line:" + e.lineNumber + ",col:" + e.columnNumber + "]";
62150    }
62151
62152    function r(e, t, i) {
62153      return "string" == typeof e ? e.substr(t, i) : e.length >= t + i || t ? new java.lang.String(e, t, i) + "" : e;
62154    }
62155
62156    function d(e, t) {
62157      e.currentElement ? e.currentElement.appendChild(t) : e.doc.appendChild(t);
62158    }
62159
62160    i.prototype.parseFromString = function (e, t) {
62161      var i = this.options,
62162          n = new p(),
62163          r = i.domBuilder || new l(),
62164          s = i.errorHandler,
62165          a = i.locator,
62166          o = i.xmlns || {},
62167          u = {
62168        lt: "<",
62169        gt: ">",
62170        amp: "&",
62171        quot: '"',
62172        apos: "'"
62173      };
62174      return a && r.setDocumentLocator(a), n.errorHandler = function (n, e, r) {
62175        if (!n) {
62176          if (e instanceof l) return e;
62177          n = e;
62178        }
62179
62180        var s = {},
62181            a = n instanceof Function;
62182
62183        function t(t) {
62184          var i = n[t];
62185          !i && a && (i = 2 == n.length ? function (e) {
62186            n(t, e);
62187          } : n), s[t] = i && function (e) {
62188            i("[xmldom " + t + "]\t" + e + h(r));
62189          } || function () {};
62190        }
62191
62192        return r = r || {}, t("warning"), t("error"), t("fatalError"), s;
62193      }(s, r, a), n.domBuilder = i.domBuilder || r, /\/x?html?$/.test(t) && (u.nbsp = " ", u.copy = "©", o[""] = "http://www.w3.org/1999/xhtml"), o.xml = o.xml || "http://www.w3.org/XML/1998/namespace", e ? n.parse(e, o, u) : n.errorHandler.error("invalid doc source"), r.doc;
62194    }, l.prototype = {
62195      startDocument: function startDocument() {
62196        this.doc = new n().createDocument(null, null, null), this.locator && (this.doc.documentURI = this.locator.systemId);
62197      },
62198      startElement: function startElement(e, t, i, n) {
62199        var r = this.doc,
62200            s = r.createElementNS(e, i || t),
62201            a = n.length;
62202        d(this, s), this.currentElement = s, this.locator && c(this.locator, s);
62203
62204        for (var o = 0; o < a; o++) {
62205          e = n.getURI(o);
62206          var u = n.getValue(o),
62207              l = (i = n.getQName(o), r.createAttributeNS(e, i));
62208          this.locator && c(n.getLocator(o), l), l.value = l.nodeValue = u, s.setAttributeNode(l);
62209        }
62210      },
62211      endElement: function endElement(e, t, i) {
62212        var n = this.currentElement;
62213        n.tagName;
62214        this.currentElement = n.parentNode;
62215      },
62216      startPrefixMapping: function startPrefixMapping(e, t) {},
62217      endPrefixMapping: function endPrefixMapping(e) {},
62218      processingInstruction: function processingInstruction(e, t) {
62219        var i = this.doc.createProcessingInstruction(e, t);
62220        this.locator && c(this.locator, i), d(this, i);
62221      },
62222      ignorableWhitespace: function ignorableWhitespace(e, t, i) {},
62223      characters: function characters(e, t, i) {
62224        if (e = r.apply(this, arguments)) {
62225          if (this.cdata) var n = this.doc.createCDATASection(e);else n = this.doc.createTextNode(e);
62226          this.currentElement ? this.currentElement.appendChild(n) : /^\s*$/.test(e) && this.doc.appendChild(n), this.locator && c(this.locator, n);
62227        }
62228      },
62229      skippedEntity: function skippedEntity(e) {},
62230      endDocument: function endDocument() {
62231        this.doc.normalize();
62232      },
62233      setDocumentLocator: function setDocumentLocator(e) {
62234        (this.locator = e) && (e.lineNumber = 0);
62235      },
62236      comment: function comment(e, t, i) {
62237        e = r.apply(this, arguments);
62238        var n = this.doc.createComment(e);
62239        this.locator && c(this.locator, n), d(this, n);
62240      },
62241      startCDATA: function startCDATA() {
62242        this.cdata = !0;
62243      },
62244      endCDATA: function endCDATA() {
62245        this.cdata = !1;
62246      },
62247      startDTD: function startDTD(e, t, i) {
62248        var n = this.doc.implementation;
62249
62250        if (n && n.createDocumentType) {
62251          var r = n.createDocumentType(e, t, i);
62252          this.locator && c(this.locator, r), d(this, r);
62253        }
62254      },
62255      warning: function warning(e) {},
62256      error: function error(e) {},
62257      fatalError: function fatalError(e) {
62258        throw e;
62259      }
62260    }, "endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl".replace(/\w+/g, function (e) {
62261      l.prototype[e] = function () {
62262        return null;
62263      };
62264    });
62265    var p = Gs.XMLReader,
62266        n = t.DOMImplementation = Do.DOMImplementation;
62267    t.XMLSerializer = Do.XMLSerializer, t.DOMParser = i;
62268  }),
62269      Ro = (No.DOMImplementation, No.XMLSerializer, No.DOMParser),
62270      Uo = "INVALID_NUMBER_OF_PERIOD",
62271      Mo = "DASH_EMPTY_MANIFEST",
62272      Bo = "DASH_INVALID_XML",
62273      jo = "NO_BASE_URL",
62274      Fo = "SEGMENT_TIME_UNSPECIFIED",
62275      Ho = "UNSUPPORTED_UTC_TIMING_SCHEME",
62276      Vo = {
62277    "static": function _static(e) {
62278      var t = e.duration,
62279          i = e.timescale,
62280          n = void 0 === i ? 1 : i,
62281          r = e.sourceDuration;
62282      return {
62283        start: 0,
62284        end: Math.ceil(r / (t / n))
62285      };
62286    },
62287    dynamic: function dynamic(e) {
62288      var t = e.NOW,
62289          i = e.clientOffset,
62290          n = e.availabilityStartTime,
62291          r = e.timescale,
62292          s = void 0 === r ? 1 : r,
62293          a = e.duration,
62294          o = e.start,
62295          u = void 0 === o ? 0 : o,
62296          l = e.minimumUpdatePeriod,
62297          c = void 0 === l ? 0 : l,
62298          h = e.timeShiftBufferDepth,
62299          d = void 0 === h ? 1 / 0 : h,
62300          p = (t + i) / 1e3,
62301          f = n + u,
62302          m = p + c - f,
62303          g = Math.ceil(m * s / a),
62304          v = Math.floor((p - f - d) * s / a),
62305          y = Math.floor((p - f) * s / a);
62306      return {
62307        start: Math.max(0, v),
62308        end: Math.min(g, y)
62309      };
62310    }
62311  },
62312      qo = /\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g,
62313      Wo = {
62314    mediaPresentationDuration: function mediaPresentationDuration(e) {
62315      return fo(e);
62316    },
62317    availabilityStartTime: function availabilityStartTime(e) {
62318      return function (e) {
62319        return /^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test(e) && (e += "Z"), Date.parse(e);
62320      }(e) / 1e3;
62321    },
62322    minimumUpdatePeriod: function minimumUpdatePeriod(e) {
62323      return fo(e);
62324    },
62325    suggestedPresentationDelay: function suggestedPresentationDelay(e) {
62326      return fo(e);
62327    },
62328    type: function type(e) {
62329      return e;
62330    },
62331    timeShiftBufferDepth: function timeShiftBufferDepth(e) {
62332      return fo(e);
62333    },
62334    start: function start(e) {
62335      return fo(e);
62336    },
62337    width: function width(e) {
62338      return parseInt(e, 10);
62339    },
62340    height: function height(e) {
62341      return parseInt(e, 10);
62342    },
62343    bandwidth: function bandwidth(e) {
62344      return parseInt(e, 10);
62345    },
62346    startNumber: function startNumber(e) {
62347      return parseInt(e, 10);
62348    },
62349    timescale: function timescale(e) {
62350      return parseInt(e, 10);
62351    },
62352    duration: function duration(e) {
62353      var t = parseInt(e, 10);
62354      return isNaN(t) ? fo(e) : t;
62355    },
62356    d: function d(e) {
62357      return parseInt(e, 10);
62358    },
62359    t: function t(e) {
62360      return parseInt(e, 10);
62361    },
62362    r: function r(e) {
62363      return parseInt(e, 10);
62364    },
62365    DEFAULT: function DEFAULT(e) {
62366      return e;
62367    }
62368  },
62369      zo = {
62370    "urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b": "org.w3.clearkey",
62371    "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed": "com.widevine.alpha",
62372    "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95": "com.microsoft.playready",
62373    "urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb": "com.adobe.primetime"
62374  },
62375      Go = function Go(e) {
62376    return e >>> 0;
62377  },
62378      Xo = function Xo(e) {
62379    return ("00" + e.toString(16)).slice(-2);
62380  },
62381      Ko = Go,
62382      Yo = {
62383    avc1: function avc1(e) {
62384      var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
62385      return {
62386        dataReferenceIndex: t.getUint16(6),
62387        width: t.getUint16(24),
62388        height: t.getUint16(26),
62389        horizresolution: t.getUint16(28) + t.getUint16(30) / 16,
62390        vertresolution: t.getUint16(32) + t.getUint16(34) / 16,
62391        frameCount: t.getUint16(40),
62392        depth: t.getUint16(74),
62393        config: Eo(e.subarray(78, e.byteLength))
62394      };
62395    },
62396    avcC: function avcC(e) {
62397      var t,
62398          i,
62399          n,
62400          r,
62401          s = new DataView(e.buffer, e.byteOffset, e.byteLength),
62402          a = {
62403        configurationVersion: e[0],
62404        avcProfileIndication: e[1],
62405        profileCompatibility: e[2],
62406        avcLevelIndication: e[3],
62407        lengthSizeMinusOne: 3 & e[4],
62408        sps: [],
62409        pps: []
62410      },
62411          o = 31 & e[5];
62412
62413      for (n = 6, r = 0; r < o; r++) {
62414        i = s.getUint16(n), n += 2, a.sps.push(new Uint8Array(e.subarray(n, n + i))), n += i;
62415      }
62416
62417      for (t = e[n], n++, r = 0; r < t; r++) {
62418        i = s.getUint16(n), n += 2, a.pps.push(new Uint8Array(e.subarray(n, n + i))), n += i;
62419      }
62420
62421      return a;
62422    },
62423    btrt: function btrt(e) {
62424      var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
62425      return {
62426        bufferSizeDB: t.getUint32(0),
62427        maxBitrate: t.getUint32(4),
62428        avgBitrate: t.getUint32(8)
62429      };
62430    },
62431    esds: function esds(e) {
62432      return {
62433        version: e[0],
62434        flags: new Uint8Array(e.subarray(1, 4)),
62435        esId: e[6] << 8 | e[7],
62436        streamPriority: 31 & e[8],
62437        decoderConfig: {
62438          objectProfileIndication: e[11],
62439          streamType: e[12] >>> 2 & 63,
62440          bufferSize: e[13] << 16 | e[14] << 8 | e[15],
62441          maxBitrate: e[16] << 24 | e[17] << 16 | e[18] << 8 | e[19],
62442          avgBitrate: e[20] << 24 | e[21] << 16 | e[22] << 8 | e[23],
62443          decoderConfigDescriptor: {
62444            tag: e[24],
62445            length: e[25],
62446            audioObjectType: e[26] >>> 3 & 31,
62447            samplingFrequencyIndex: (7 & e[26]) << 1 | e[27] >>> 7 & 1,
62448            channelConfiguration: e[27] >>> 3 & 15
62449          }
62450        }
62451      };
62452    },
62453    ftyp: function ftyp(e) {
62454      for (var t = new DataView(e.buffer, e.byteOffset, e.byteLength), i = {
62455        majorBrand: wo(e.subarray(0, 4)),
62456        minorVersion: t.getUint32(4),
62457        compatibleBrands: []
62458      }, n = 8; n < e.byteLength;) {
62459        i.compatibleBrands.push(wo(e.subarray(n, n + 4))), n += 4;
62460      }
62461
62462      return i;
62463    },
62464    dinf: function dinf(e) {
62465      return {
62466        boxes: Eo(e)
62467      };
62468    },
62469    dref: function dref(e) {
62470      return {
62471        version: e[0],
62472        flags: new Uint8Array(e.subarray(1, 4)),
62473        dataReferences: Eo(e.subarray(8))
62474      };
62475    },
62476    hdlr: function hdlr(e) {
62477      var t = {
62478        version: new DataView(e.buffer, e.byteOffset, e.byteLength).getUint8(0),
62479        flags: new Uint8Array(e.subarray(1, 4)),
62480        handlerType: wo(e.subarray(8, 12)),
62481        name: ""
62482      },
62483          i = 8;
62484
62485      for (i = 24; i < e.byteLength; i++) {
62486        if (0 === e[i]) {
62487          i++;
62488          break;
62489        }
62490
62491        t.name += String.fromCharCode(e[i]);
62492      }
62493
62494      return t.name = decodeURIComponent(escape(t.name)), t;
62495    },
62496    mdat: function mdat(e) {
62497      return {
62498        byteLength: e.byteLength,
62499        nals: function (e) {
62500          var t,
62501              i,
62502              n = new DataView(e.buffer, e.byteOffset, e.byteLength),
62503              r = [];
62504
62505          for (t = 0; t + 4 < e.length; t += i) {
62506            if (i = n.getUint32(t), t += 4, i <= 0) r.push("<span style='color:red;'>MALFORMED DATA</span>");else switch (31 & e[t]) {
62507              case 1:
62508                r.push("slice_layer_without_partitioning_rbsp");
62509                break;
62510
62511              case 5:
62512                r.push("slice_layer_without_partitioning_rbsp_idr");
62513                break;
62514
62515              case 6:
62516                r.push("sei_rbsp");
62517                break;
62518
62519              case 7:
62520                r.push("seq_parameter_set_rbsp");
62521                break;
62522
62523              case 8:
62524                r.push("pic_parameter_set_rbsp");
62525                break;
62526
62527              case 9:
62528                r.push("access_unit_delimiter_rbsp");
62529                break;
62530
62531              default:
62532                r.push("UNKNOWN NAL - " + e[t] & 31);
62533            }
62534          }
62535
62536          return r;
62537        }(e)
62538      };
62539    },
62540    mdhd: function mdhd(e) {
62541      var t,
62542          i = new DataView(e.buffer, e.byteOffset, e.byteLength),
62543          n = 4,
62544          r = {
62545        version: i.getUint8(0),
62546        flags: new Uint8Array(e.subarray(1, 4)),
62547        language: ""
62548      };
62549      return 1 === r.version ? (n += 4, r.creationTime = ko(i.getUint32(n)), n += 8, r.modificationTime = ko(i.getUint32(n)), n += 4, r.timescale = i.getUint32(n), n += 8) : (r.creationTime = ko(i.getUint32(n)), n += 4, r.modificationTime = ko(i.getUint32(n)), n += 4, r.timescale = i.getUint32(n), n += 4), r.duration = i.getUint32(n), n += 4, t = i.getUint16(n), r.language += String.fromCharCode(96 + (t >> 10)), r.language += String.fromCharCode(96 + ((992 & t) >> 5)), r.language += String.fromCharCode(96 + (31 & t)), r;
62550    },
62551    mdia: function mdia(e) {
62552      return {
62553        boxes: Eo(e)
62554      };
62555    },
62556    mfhd: function mfhd(e) {
62557      return {
62558        version: e[0],
62559        flags: new Uint8Array(e.subarray(1, 4)),
62560        sequenceNumber: e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7]
62561      };
62562    },
62563    minf: function minf(e) {
62564      return {
62565        boxes: Eo(e)
62566      };
62567    },
62568    mp4a: function mp4a(e) {
62569      var t = new DataView(e.buffer, e.byteOffset, e.byteLength),
62570          i = {
62571        dataReferenceIndex: t.getUint16(6),
62572        channelcount: t.getUint16(16),
62573        samplesize: t.getUint16(18),
62574        samplerate: t.getUint16(24) + t.getUint16(26) / 65536
62575      };
62576      return 28 < e.byteLength && (i.streamDescriptor = Eo(e.subarray(28))[0]), i;
62577    },
62578    moof: function moof(e) {
62579      return {
62580        boxes: Eo(e)
62581      };
62582    },
62583    moov: function moov(e) {
62584      return {
62585        boxes: Eo(e)
62586      };
62587    },
62588    mvex: function mvex(e) {
62589      return {
62590        boxes: Eo(e)
62591      };
62592    },
62593    mvhd: function mvhd(e) {
62594      var t = new DataView(e.buffer, e.byteOffset, e.byteLength),
62595          i = 4,
62596          n = {
62597        version: t.getUint8(0),
62598        flags: new Uint8Array(e.subarray(1, 4))
62599      };
62600      return 1 === n.version ? (i += 4, n.creationTime = ko(t.getUint32(i)), i += 8, n.modificationTime = ko(t.getUint32(i)), i += 4, n.timescale = t.getUint32(i), i += 8) : (n.creationTime = ko(t.getUint32(i)), i += 4, n.modificationTime = ko(t.getUint32(i)), i += 4, n.timescale = t.getUint32(i), i += 4), n.duration = t.getUint32(i), i += 4, n.rate = t.getUint16(i) + t.getUint16(i + 2) / 16, i += 4, n.volume = t.getUint8(i) + t.getUint8(i + 1) / 8, i += 2, i += 2, i += 8, n.matrix = new Uint32Array(e.subarray(i, i + 36)), i += 36, i += 24, n.nextTrackId = t.getUint32(i), n;
62601    },
62602    pdin: function pdin(e) {
62603      var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
62604      return {
62605        version: t.getUint8(0),
62606        flags: new Uint8Array(e.subarray(1, 4)),
62607        rate: t.getUint32(4),
62608        initialDelay: t.getUint32(8)
62609      };
62610    },
62611    sdtp: function sdtp(e) {
62612      var t,
62613          i = {
62614        version: e[0],
62615        flags: new Uint8Array(e.subarray(1, 4)),
62616        samples: []
62617      };
62618
62619      for (t = 4; t < e.byteLength; t++) {
62620        i.samples.push({
62621          dependsOn: (48 & e[t]) >> 4,
62622          isDependedOn: (12 & e[t]) >> 2,
62623          hasRedundancy: 3 & e[t]
62624        });
62625      }
62626
62627      return i;
62628    },
62629    sidx: function sidx(e) {
62630      var t,
62631          i = new DataView(e.buffer, e.byteOffset, e.byteLength),
62632          n = {
62633        version: e[0],
62634        flags: new Uint8Array(e.subarray(1, 4)),
62635        references: [],
62636        referenceId: i.getUint32(4),
62637        timescale: i.getUint32(8),
62638        earliestPresentationTime: i.getUint32(12),
62639        firstOffset: i.getUint32(16)
62640      },
62641          r = i.getUint16(22);
62642
62643      for (t = 24; r; t += 12, r--) {
62644        n.references.push({
62645          referenceType: (128 & e[t]) >>> 7,
62646          referencedSize: 2147483647 & i.getUint32(t),
62647          subsegmentDuration: i.getUint32(t + 4),
62648          startsWithSap: !!(128 & e[t + 8]),
62649          sapType: (112 & e[t + 8]) >>> 4,
62650          sapDeltaTime: 268435455 & i.getUint32(t + 8)
62651        });
62652      }
62653
62654      return n;
62655    },
62656    smhd: function smhd(e) {
62657      return {
62658        version: e[0],
62659        flags: new Uint8Array(e.subarray(1, 4)),
62660        balance: e[4] + e[5] / 256
62661      };
62662    },
62663    stbl: function stbl(e) {
62664      return {
62665        boxes: Eo(e)
62666      };
62667    },
62668    stco: function stco(e) {
62669      var t,
62670          i = new DataView(e.buffer, e.byteOffset, e.byteLength),
62671          n = {
62672        version: e[0],
62673        flags: new Uint8Array(e.subarray(1, 4)),
62674        chunkOffsets: []
62675      },
62676          r = i.getUint32(4);
62677
62678      for (t = 8; r; t += 4, r--) {
62679        n.chunkOffsets.push(i.getUint32(t));
62680      }
62681
62682      return n;
62683    },
62684    stsc: function stsc(e) {
62685      var t,
62686          i = new DataView(e.buffer, e.byteOffset, e.byteLength),
62687          n = i.getUint32(4),
62688          r = {
62689        version: e[0],
62690        flags: new Uint8Array(e.subarray(1, 4)),
62691        sampleToChunks: []
62692      };
62693
62694      for (t = 8; n; t += 12, n--) {
62695        r.sampleToChunks.push({
62696          firstChunk: i.getUint32(t),
62697          samplesPerChunk: i.getUint32(t + 4),
62698          sampleDescriptionIndex: i.getUint32(t + 8)
62699        });
62700      }
62701
62702      return r;
62703    },
62704    stsd: function stsd(e) {
62705      return {
62706        version: e[0],
62707        flags: new Uint8Array(e.subarray(1, 4)),
62708        sampleDescriptions: Eo(e.subarray(8))
62709      };
62710    },
62711    stsz: function stsz(e) {
62712      var t,
62713          i = new DataView(e.buffer, e.byteOffset, e.byteLength),
62714          n = {
62715        version: e[0],
62716        flags: new Uint8Array(e.subarray(1, 4)),
62717        sampleSize: i.getUint32(4),
62718        entries: []
62719      };
62720
62721      for (t = 12; t < e.byteLength; t += 4) {
62722        n.entries.push(i.getUint32(t));
62723      }
62724
62725      return n;
62726    },
62727    stts: function stts(e) {
62728      var t,
62729          i = new DataView(e.buffer, e.byteOffset, e.byteLength),
62730          n = {
62731        version: e[0],
62732        flags: new Uint8Array(e.subarray(1, 4)),
62733        timeToSamples: []
62734      },
62735          r = i.getUint32(4);
62736
62737      for (t = 8; r; t += 8, r--) {
62738        n.timeToSamples.push({
62739          sampleCount: i.getUint32(t),
62740          sampleDelta: i.getUint32(t + 4)
62741        });
62742      }
62743
62744      return n;
62745    },
62746    styp: function styp(e) {
62747      return Yo.ftyp(e);
62748    },
62749    tfdt: function tfdt(e) {
62750      var t = {
62751        version: e[0],
62752        flags: new Uint8Array(e.subarray(1, 4)),
62753        baseMediaDecodeTime: Ko(e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7])
62754      };
62755      return 1 === t.version && (t.baseMediaDecodeTime *= Math.pow(2, 32), t.baseMediaDecodeTime += Ko(e[8] << 24 | e[9] << 16 | e[10] << 8 | e[11])), t;
62756    },
62757    tfhd: function tfhd(e) {
62758      var t,
62759          i = new DataView(e.buffer, e.byteOffset, e.byteLength),
62760          n = {
62761        version: e[0],
62762        flags: new Uint8Array(e.subarray(1, 4)),
62763        trackId: i.getUint32(4)
62764      },
62765          r = 1 & n.flags[2],
62766          s = 2 & n.flags[2],
62767          a = 8 & n.flags[2],
62768          o = 16 & n.flags[2],
62769          u = 32 & n.flags[2],
62770          l = 65536 & n.flags[0],
62771          c = 131072 & n.flags[0];
62772      return t = 8, r && (t += 4, n.baseDataOffset = i.getUint32(12), t += 4), s && (n.sampleDescriptionIndex = i.getUint32(t), t += 4), a && (n.defaultSampleDuration = i.getUint32(t), t += 4), o && (n.defaultSampleSize = i.getUint32(t), t += 4), u && (n.defaultSampleFlags = i.getUint32(t)), l && (n.durationIsEmpty = !0), !r && c && (n.baseDataOffsetIsMoof = !0), n;
62773    },
62774    tkhd: function tkhd(e) {
62775      var t = new DataView(e.buffer, e.byteOffset, e.byteLength),
62776          i = 4,
62777          n = {
62778        version: t.getUint8(0),
62779        flags: new Uint8Array(e.subarray(1, 4))
62780      };
62781      return 1 === n.version ? (i += 4, n.creationTime = ko(t.getUint32(i)), i += 8, n.modificationTime = ko(t.getUint32(i)), i += 4, n.trackId = t.getUint32(i), i += 4, i += 8) : (n.creationTime = ko(t.getUint32(i)), i += 4, n.modificationTime = ko(t.getUint32(i)), i += 4, n.trackId = t.getUint32(i), i += 4, i += 4), n.duration = t.getUint32(i), i += 4, i += 8, n.layer = t.getUint16(i), i += 2, n.alternateGroup = t.getUint16(i), i += 2, n.volume = t.getUint8(i) + t.getUint8(i + 1) / 8, i += 2, i += 2, n.matrix = new Uint32Array(e.subarray(i, i + 36)), i += 36, n.width = t.getUint16(i) + t.getUint16(i + 2) / 16, i += 4, n.height = t.getUint16(i) + t.getUint16(i + 2) / 16, n;
62782    },
62783    traf: function traf(e) {
62784      return {
62785        boxes: Eo(e)
62786      };
62787    },
62788    trak: function trak(e) {
62789      return {
62790        boxes: Eo(e)
62791      };
62792    },
62793    trex: function trex(e) {
62794      var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
62795      return {
62796        version: e[0],
62797        flags: new Uint8Array(e.subarray(1, 4)),
62798        trackId: t.getUint32(4),
62799        defaultSampleDescriptionIndex: t.getUint32(8),
62800        defaultSampleDuration: t.getUint32(12),
62801        defaultSampleSize: t.getUint32(16),
62802        sampleDependsOn: 3 & e[20],
62803        sampleIsDependedOn: (192 & e[21]) >> 6,
62804        sampleHasRedundancy: (48 & e[21]) >> 4,
62805        samplePaddingValue: (14 & e[21]) >> 1,
62806        sampleIsDifferenceSample: !!(1 & e[21]),
62807        sampleDegradationPriority: t.getUint16(22)
62808      };
62809    },
62810    trun: function trun(e) {
62811      var t,
62812          i = {
62813        version: e[0],
62814        flags: new Uint8Array(e.subarray(1, 4)),
62815        samples: []
62816      },
62817          n = new DataView(e.buffer, e.byteOffset, e.byteLength),
62818          r = 1 & i.flags[2],
62819          s = 4 & i.flags[2],
62820          a = 1 & i.flags[1],
62821          o = 2 & i.flags[1],
62822          u = 4 & i.flags[1],
62823          l = 8 & i.flags[1],
62824          c = n.getUint32(4),
62825          h = 8;
62826
62827      for (r && (i.dataOffset = n.getInt32(h), h += 4), s && c && (t = {
62828        flags: Co(e.subarray(h, h + 4))
62829      }, h += 4, a && (t.duration = n.getUint32(h), h += 4), o && (t.size = n.getUint32(h), h += 4), l && (t.compositionTimeOffset = n.getUint32(h), h += 4), i.samples.push(t), c--); c--;) {
62830        t = {}, a && (t.duration = n.getUint32(h), h += 4), o && (t.size = n.getUint32(h), h += 4), u && (t.flags = Co(e.subarray(h, h + 4)), h += 4), l && (t.compositionTimeOffset = n.getUint32(h), h += 4), i.samples.push(t);
62831      }
62832
62833      return i;
62834    },
62835    "url ": function url(e) {
62836      return {
62837        version: e[0],
62838        flags: new Uint8Array(e.subarray(1, 4))
62839      };
62840    },
62841    vmhd: function vmhd(e) {
62842      var t = new DataView(e.buffer, e.byteOffset, e.byteLength);
62843      return {
62844        version: e[0],
62845        flags: new Uint8Array(e.subarray(1, 4)),
62846        graphicsmode: t.getUint16(4),
62847        opcolor: new Uint16Array([t.getUint16(6), t.getUint16(8), t.getUint16(10)])
62848      };
62849    }
62850  },
62851      $o = {
62852    inspect: Eo = function Eo(e) {
62853      for (var t, i, n, r, s, a = 0, o = [], u = new ArrayBuffer(e.length), l = new Uint8Array(u), c = 0; c < e.length; ++c) {
62854        l[c] = e[c];
62855      }
62856
62857      for (t = new DataView(u); a < e.byteLength;) {
62858        i = t.getUint32(a), n = wo(e.subarray(a + 4, a + 8)), r = 1 < i ? a + i : e.byteLength, (s = (Yo[n] || function (e) {
62859          return {
62860            data: e
62861          };
62862        })(e.subarray(a + 8, r))).size = i, s.type = n, o.push(s), a = r;
62863      }
62864
62865      return o;
62866    },
62867    textify: _xo = function xo(e, t) {
62868      var s;
62869      return t = t || 0, s = new Array(2 * t + 1).join(" "), e.map(function (r, e) {
62870        return s + r.type + "\n" + Object.keys(r).filter(function (e) {
62871          return "type" !== e && "boxes" !== e;
62872        }).map(function (e) {
62873          var t = s + "  " + e + ": ",
62874              i = r[e];
62875
62876          if (i instanceof Uint8Array || i instanceof Uint32Array) {
62877            var n = Array.prototype.slice.call(new Uint8Array(i.buffer, i.byteOffset, i.byteLength)).map(function (e) {
62878              return " " + ("00" + e.toString(16)).slice(-2);
62879            }).join("").match(/.{1,24}/g);
62880            return n ? 1 === n.length ? t + "<" + n.join("").slice(1) + ">" : t + "<\n" + n.map(function (e) {
62881              return s + "  " + e;
62882            }).join("\n") + "\n" + s + "  >" : t + "<>";
62883          }
62884
62885          return t + JSON.stringify(i, null, 2).split("\n").map(function (e, t) {
62886            return 0 === t ? e : s + "  " + e;
62887          }).join("\n");
62888        }).join("\n") + (r.boxes ? "\n" + _xo(r.boxes, t + 1) : "");
62889      }).join("\n");
62890    },
62891    parseType: wo,
62892    findBox: function e(t, i) {
62893      var n,
62894          r,
62895          s,
62896          a,
62897          o,
62898          u = [];
62899      if (!i.length) return null;
62900
62901      for (n = 0; n < t.byteLength;) {
62902        r = Ko(t[n] << 24 | t[n + 1] << 16 | t[n + 2] << 8 | t[n + 3]), s = wo(t.subarray(n + 4, n + 8)), a = 1 < r ? n + r : t.byteLength, s === i[0] && (1 === i.length ? u.push(t.subarray(n + 8, a)) : (o = e(t.subarray(n + 8, a), i.slice(1))).length && (u = u.concat(o))), n = a;
62903      }
62904
62905      return u;
62906    },
62907    parseTraf: Yo.traf,
62908    parseTfdt: Yo.tfdt,
62909    parseHdlr: Yo.hdlr,
62910    parseTfhd: Yo.tfhd,
62911    parseTrun: Yo.trun,
62912    parseSidx: Yo.sidx
62913  },
62914      Qo = Go,
62915      Jo = Xo;
62916
62917  Ao = function Ao(e) {
62918    return $o.findBox(e, ["moov", "trak"]).reduce(function (e, t) {
62919      var i, n, r, s, a;
62920      return (i = $o.findBox(t, ["tkhd"])[0]) ? (n = i[0], s = Qo(i[r = 0 === n ? 12 : 20] << 24 | i[r + 1] << 16 | i[r + 2] << 8 | i[r + 3]), (a = $o.findBox(t, ["mdia", "mdhd"])[0]) ? (r = 0 === (n = a[0]) ? 12 : 20, e[s] = Qo(a[r] << 24 | a[r + 1] << 16 | a[r + 2] << 8 | a[r + 3]), e) : null) : null;
62921    }, {});
62922  }, Io = function Io(r, e) {
62923    var t, i, n;
62924    return t = $o.findBox(e, ["moof", "traf"]), i = [].concat.apply([], t.map(function (n) {
62925      return $o.findBox(n, ["tfhd"]).map(function (e) {
62926        var t, i;
62927        return t = Qo(e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7]), i = r[t] || 9e4, ($o.findBox(n, ["tfdt"]).map(function (e) {
62928          var t, i;
62929          return t = e[0], i = Qo(e[4] << 24 | e[5] << 16 | e[6] << 8 | e[7]), 1 === t && (i *= Math.pow(2, 32), i += Qo(e[8] << 24 | e[9] << 16 | e[10] << 8 | e[11])), i;
62930        })[0] || 1 / 0) / i;
62931      });
62932    })), n = Math.min.apply(null, i), isFinite(n) ? n : 0;
62933  }, Po = function Po(e, t) {
62934    var i,
62935        n = $o.findBox(t, ["moof", "traf"]),
62936        r = 0,
62937        s = 0;
62938    if (n && n.length) for (var a = $o.parseTraf(n[0]), o = 0; o < a.boxes.length; o++) {
62939      "tfhd" === a.boxes[o].type ? i = a.boxes[o].trackId : "tfdt" === a.boxes[o].type ? r = a.boxes[o].baseMediaDecodeTime : "trun" === a.boxes[o].type && a.boxes[o].samples.length && (s = a.boxes[o].samples[0].compositionTimeOffset || 0);
62940    }
62941    return (r + s) / (e[i] || 9e4);
62942  }, Lo = function Lo(e) {
62943    var t = $o.findBox(e, ["moov", "trak"]),
62944        o = [];
62945    return t.forEach(function (e) {
62946      var t = $o.findBox(e, ["mdia", "hdlr"]),
62947          a = $o.findBox(e, ["tkhd"]);
62948      t.forEach(function (e, t) {
62949        var i,
62950            n,
62951            r = $o.parseType(e.subarray(8, 12)),
62952            s = a[t];
62953        "vide" === r && (n = 0 === (i = new DataView(s.buffer, s.byteOffset, s.byteLength)).getUint8(0) ? i.getUint32(12) : i.getUint32(20), o.push(n));
62954      });
62955    }), o;
62956  }, Oo = function Oo(e) {
62957    var t = $o.findBox(e, ["moov", "trak"]),
62958        p = [];
62959    return t.forEach(function (e) {
62960      var t,
62961          i,
62962          n = {},
62963          r = $o.findBox(e, ["tkhd"])[0];
62964      r && (i = (t = new DataView(r.buffer, r.byteOffset, r.byteLength)).getUint8(0), n.id = 0 === i ? t.getUint32(12) : t.getUint32(20));
62965      var s = $o.findBox(e, ["mdia", "hdlr"])[0];
62966
62967      if (s) {
62968        var a = $o.parseType(s.subarray(8, 12));
62969        n.type = "vide" === a ? "video" : "soun" === a ? "audio" : a;
62970      }
62971
62972      var o = $o.findBox(e, ["mdia", "minf", "stbl", "stsd"])[0];
62973
62974      if (o) {
62975        var u = o.subarray(8);
62976        n.codec = $o.parseType(u.subarray(4, 8));
62977        var l,
62978            c = $o.findBox(u, [n.codec])[0];
62979        c && (/^[a-z]vc[1-9]$/i.test(n.codec) ? (l = c.subarray(78), "avcC" === $o.parseType(l.subarray(4, 8)) && 11 < l.length ? (n.codec += ".", n.codec += Jo(l[9]), n.codec += Jo(l[10]), n.codec += Jo(l[11])) : n.codec = "avc1.4d400d") : /^mp4[a,v]$/i.test(n.codec) && (l = c.subarray(28), "esds" === $o.parseType(l.subarray(4, 8)) && 20 < l.length && 0 !== l[19] ? (n.codec += "." + Jo(l[19]), n.codec += "." + Jo(l[20] >>> 2 & 63).replace(/^0/, "")) : n.codec = "mp4a.40.2"));
62980      }
62981
62982      var h = $o.findBox(e, ["mdia", "mdhd"])[0];
62983
62984      if (h && r) {
62985        var d = 0 === i ? 12 : 20;
62986        n.timescale = Qo(h[d] << 24 | h[1 + d] << 16 | h[2 + d] << 8 | h[3 + d]);
62987      }
62988
62989      p.push(n);
62990    }), p;
62991  };
62992
62993  function Zo() {
62994    this.init = function () {
62995      var s = {};
62996      this.on = function (e, t) {
62997        s[e] || (s[e] = []), s[e] = s[e].concat(t);
62998      }, this.off = function (e, t) {
62999        var i;
63000        return !!s[e] && (i = s[e].indexOf(t), s[e] = s[e].slice(), s[e].splice(i, 1), -1 < i);
63001      }, this.trigger = function (e) {
63002        var t, i, n, r;
63003        if (t = s[e]) if (2 === arguments.length) for (n = t.length, i = 0; i < n; ++i) {
63004          t[i].call(this, arguments[1]);
63005        } else {
63006          for (r = [], i = arguments.length, i = 1; i < arguments.length; ++i) {
63007            r.push(arguments[i]);
63008          }
63009
63010          for (n = t.length, i = 0; i < n; ++i) {
63011            t[i].apply(this, r);
63012          }
63013        }
63014      }, this.dispose = function () {
63015        s = {};
63016      };
63017    };
63018  }
63019
63020  var eu = {
63021    findBox: $o.findBox,
63022    parseType: $o.parseType,
63023    timescale: Ao,
63024    startTime: Io,
63025    compositionStartTime: Po,
63026    videoTrackIds: Lo,
63027    tracks: Oo
63028  },
63029      tu = function tu(e) {
63030    for (var t = 0, i = {
63031      payloadType: -1,
63032      payloadSize: 0
63033    }, n = 0, r = 0; t < e.byteLength && 128 !== e[t];) {
63034      for (; 255 === e[t];) {
63035        n += 255, t++;
63036      }
63037
63038      for (n += e[t++]; 255 === e[t];) {
63039        r += 255, t++;
63040      }
63041
63042      if (r += e[t++], !i.payload && 4 === n) {
63043        i.payloadType = n, i.payloadSize = r, i.payload = e.subarray(t, t + r);
63044        break;
63045      }
63046
63047      t += r, r = n = 0;
63048    }
63049
63050    return i;
63051  },
63052      iu = function iu(e) {
63053    return 181 !== e.payload[0] ? null : 49 != (e.payload[1] << 8 | e.payload[2]) ? null : "GA94" !== String.fromCharCode(e.payload[3], e.payload[4], e.payload[5], e.payload[6]) ? null : 3 !== e.payload[7] ? null : e.payload.subarray(8, e.payload.length - 1);
63054  },
63055      nu = function nu(e, t) {
63056    var i,
63057        n,
63058        r,
63059        s,
63060        a = [];
63061    if (!(64 & t[0])) return a;
63062
63063    for (n = 31 & t[0], i = 0; i < n; i++) {
63064      s = {
63065        type: 3 & t[2 + (r = 3 * i)],
63066        pts: e
63067      }, 4 & t[2 + r] && (s.ccData = t[3 + r] << 8 | t[4 + r], a.push(s));
63068    }
63069
63070    return a;
63071  },
63072      ru = function ru(e) {
63073    for (var t, i, n = e.byteLength, r = [], s = 1; s < n - 2;) {
63074      0 === e[s] && 0 === e[s + 1] && 3 === e[s + 2] ? (r.push(s + 2), s += 2) : s++;
63075    }
63076
63077    if (0 === r.length) return e;
63078    t = n - r.length, i = new Uint8Array(t);
63079    var a = 0;
63080
63081    for (s = 0; s < t; a++, s++) {
63082      a === r[0] && (a++, r.shift()), i[s] = e[a];
63083    }
63084
63085    return i;
63086  },
63087      su = 4;
63088
63089  Zo.prototype.pipe = function (t) {
63090    return this.on("data", function (e) {
63091      t.push(e);
63092    }), this.on("done", function (e) {
63093      t.flush(e);
63094    }), this.on("partialdone", function (e) {
63095      t.partialFlush(e);
63096    }), this.on("endedtimeline", function (e) {
63097      t.endTimeline(e);
63098    }), this.on("reset", function (e) {
63099      t.reset(e);
63100    }), t;
63101  }, Zo.prototype.push = function (e) {
63102    this.trigger("data", e);
63103  }, Zo.prototype.flush = function (e) {
63104    this.trigger("done", e);
63105  }, Zo.prototype.partialFlush = function (e) {
63106    this.trigger("partialdone", e);
63107  }, Zo.prototype.endTimeline = function (e) {
63108    this.trigger("endedtimeline", e);
63109  }, Zo.prototype.reset = function (e) {
63110    this.trigger("reset", e);
63111  };
63112
63113  function au() {
63114    au.prototype.init.call(this), this.captionPackets_ = [], this.ccStreams_ = [new du(0, 0), new du(0, 1), new du(1, 0), new du(1, 1)], this.reset(), this.ccStreams_.forEach(function (e) {
63115      e.on("data", this.trigger.bind(this, "data")), e.on("partialdone", this.trigger.bind(this, "partialdone")), e.on("done", this.trigger.bind(this, "done"));
63116    }, this);
63117  }
63118
63119  var ou = Zo;
63120  (au.prototype = new ou()).push = function (e) {
63121    var t, i, n;
63122    if ("sei_rbsp" === e.nalUnitType && (t = tu(e.escapedRBSP)).payloadType === su && (i = iu(t))) if (e.dts < this.latestDts_) this.ignoreNextEqualDts_ = !0;else {
63123      if (e.dts === this.latestDts_ && this.ignoreNextEqualDts_) return this.numSameDts_--, void (this.numSameDts_ || (this.ignoreNextEqualDts_ = !1));
63124      n = nu(e.pts, i), this.captionPackets_ = this.captionPackets_.concat(n), this.latestDts_ !== e.dts && (this.numSameDts_ = 0), this.numSameDts_++, this.latestDts_ = e.dts;
63125    }
63126  }, au.prototype.flushCCStreams = function (t) {
63127    this.ccStreams_.forEach(function (e) {
63128      return "flush" === t ? e.flush() : e.partialFlush();
63129    }, this);
63130  }, au.prototype.flushStream = function (e) {
63131    this.captionPackets_.length && (this.captionPackets_.forEach(function (e, t) {
63132      e.presortIndex = t;
63133    }), this.captionPackets_.sort(function (e, t) {
63134      return e.pts === t.pts ? e.presortIndex - t.presortIndex : e.pts - t.pts;
63135    }), this.captionPackets_.forEach(function (e) {
63136      e.type < 2 && this.dispatchCea608Packet(e);
63137    }, this), this.captionPackets_.length = 0), this.flushCCStreams(e);
63138  }, au.prototype.flush = function () {
63139    return this.flushStream("flush");
63140  }, au.prototype.partialFlush = function () {
63141    return this.flushStream("partialFlush");
63142  }, au.prototype.reset = function () {
63143    this.latestDts_ = null, this.ignoreNextEqualDts_ = !1, this.numSameDts_ = 0, this.activeCea608Channel_ = [null, null], this.ccStreams_.forEach(function (e) {
63144      e.reset();
63145    });
63146  }, au.prototype.dispatchCea608Packet = function (e) {
63147    this.setsTextOrXDSActive(e) ? this.activeCea608Channel_[e.type] = null : this.setsChannel1Active(e) ? this.activeCea608Channel_[e.type] = 0 : this.setsChannel2Active(e) && (this.activeCea608Channel_[e.type] = 1), null !== this.activeCea608Channel_[e.type] && this.ccStreams_[(e.type << 1) + this.activeCea608Channel_[e.type]].push(e);
63148  }, au.prototype.setsChannel1Active = function (e) {
63149    return 4096 == (30720 & e.ccData);
63150  }, au.prototype.setsChannel2Active = function (e) {
63151    return 6144 == (30720 & e.ccData);
63152  }, au.prototype.setsTextOrXDSActive = function (e) {
63153    return 256 == (28928 & e.ccData) || 4138 == (30974 & e.ccData) || 6186 == (30974 & e.ccData);
63154  };
63155
63156  function uu(e) {
63157    return null === e ? "" : (e = cu[e] || e, String.fromCharCode(e));
63158  }
63159
63160  function lu() {
63161    for (var e = [], t = 15; t--;) {
63162      e.push("");
63163    }
63164
63165    return e;
63166  }
63167
63168  var cu = {
63169    42: 225,
63170    92: 233,
63171    94: 237,
63172    95: 243,
63173    96: 250,
63174    123: 231,
63175    124: 247,
63176    125: 209,
63177    126: 241,
63178    127: 9608,
63179    304: 174,
63180    305: 176,
63181    306: 189,
63182    307: 191,
63183    308: 8482,
63184    309: 162,
63185    310: 163,
63186    311: 9834,
63187    312: 224,
63188    313: 160,
63189    314: 232,
63190    315: 226,
63191    316: 234,
63192    317: 238,
63193    318: 244,
63194    319: 251,
63195    544: 193,
63196    545: 201,
63197    546: 211,
63198    547: 218,
63199    548: 220,
63200    549: 252,
63201    550: 8216,
63202    551: 161,
63203    552: 42,
63204    553: 39,
63205    554: 8212,
63206    555: 169,
63207    556: 8480,
63208    557: 8226,
63209    558: 8220,
63210    559: 8221,
63211    560: 192,
63212    561: 194,
63213    562: 199,
63214    563: 200,
63215    564: 202,
63216    565: 203,
63217    566: 235,
63218    567: 206,
63219    568: 207,
63220    569: 239,
63221    570: 212,
63222    571: 217,
63223    572: 249,
63224    573: 219,
63225    574: 171,
63226    575: 187,
63227    800: 195,
63228    801: 227,
63229    802: 205,
63230    803: 204,
63231    804: 236,
63232    805: 210,
63233    806: 242,
63234    807: 213,
63235    808: 245,
63236    809: 123,
63237    810: 125,
63238    811: 92,
63239    812: 94,
63240    813: 95,
63241    814: 124,
63242    815: 126,
63243    816: 196,
63244    817: 228,
63245    818: 214,
63246    819: 246,
63247    820: 223,
63248    821: 165,
63249    822: 164,
63250    823: 9474,
63251    824: 197,
63252    825: 229,
63253    826: 216,
63254    827: 248,
63255    828: 9484,
63256    829: 9488,
63257    830: 9492,
63258    831: 9496
63259  },
63260      hu = [4352, 4384, 4608, 4640, 5376, 5408, 5632, 5664, 5888, 5920, 4096, 4864, 4896, 5120, 5152],
63261      du = function e(t, i) {
63262    e.prototype.init.call(this), this.field_ = t || 0, this.dataChannel_ = i || 0, this.name_ = "CC" + (1 + (this.field_ << 1 | this.dataChannel_)), this.setConstants(), this.reset(), this.push = function (e) {
63263      var t, i, n, r, s;
63264
63265      if ((t = 32639 & e.ccData) !== this.lastControlCode_) {
63266        if (4096 == (61440 & t) ? this.lastControlCode_ = t : t !== this.PADDING_ && (this.lastControlCode_ = null), n = t >>> 8, r = 255 & t, t !== this.PADDING_) if (t === this.RESUME_CAPTION_LOADING_) this.mode_ = "popOn";else if (t === this.END_OF_CAPTION_) this.mode_ = "popOn", this.clearFormatting(e.pts), this.flushDisplayed(e.pts), i = this.displayed_, this.displayed_ = this.nonDisplayed_, this.nonDisplayed_ = i, this.startPts_ = e.pts;else if (t === this.ROLL_UP_2_ROWS_) this.rollUpRows_ = 2, this.setRollUp(e.pts);else if (t === this.ROLL_UP_3_ROWS_) this.rollUpRows_ = 3, this.setRollUp(e.pts);else if (t === this.ROLL_UP_4_ROWS_) this.rollUpRows_ = 4, this.setRollUp(e.pts);else if (t === this.CARRIAGE_RETURN_) this.clearFormatting(e.pts), this.flushDisplayed(e.pts), this.shiftRowsUp_(), this.startPts_ = e.pts;else if (t === this.BACKSPACE_) "popOn" === this.mode_ ? this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1) : this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1);else if (t === this.ERASE_DISPLAYED_MEMORY_) this.flushDisplayed(e.pts), this.displayed_ = lu();else if (t === this.ERASE_NON_DISPLAYED_MEMORY_) this.nonDisplayed_ = lu();else if (t === this.RESUME_DIRECT_CAPTIONING_) "paintOn" !== this.mode_ && (this.flushDisplayed(e.pts), this.displayed_ = lu()), this.mode_ = "paintOn", this.startPts_ = e.pts;else if (this.isSpecialCharacter(n, r)) s = uu((n = (3 & n) << 8) | r), this[this.mode_](e.pts, s), this.column_++;else if (this.isExtCharacter(n, r)) "popOn" === this.mode_ ? this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1) : this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1), s = uu((n = (3 & n) << 8) | r), this[this.mode_](e.pts, s), this.column_++;else if (this.isMidRowCode(n, r)) this.clearFormatting(e.pts), this[this.mode_](e.pts, " "), this.column_++, 14 == (14 & r) && this.addFormatting(e.pts, ["i"]), 1 == (1 & r) && this.addFormatting(e.pts, ["u"]);else if (this.isOffsetControlCode(n, r)) this.column_ += 3 & r;else if (this.isPAC(n, r)) {
63267          var a = hu.indexOf(7968 & t);
63268          "rollUp" === this.mode_ && (a - this.rollUpRows_ + 1 < 0 && (a = this.rollUpRows_ - 1), this.setRollUp(e.pts, a)), a !== this.row_ && (this.clearFormatting(e.pts), this.row_ = a), 1 & r && -1 === this.formatting_.indexOf("u") && this.addFormatting(e.pts, ["u"]), 16 == (16 & t) && (this.column_ = 4 * ((14 & t) >> 1)), this.isColorPAC(r) && 14 == (14 & r) && this.addFormatting(e.pts, ["i"]);
63269        } else this.isNormalChar(n) && (0 === r && (r = null), s = uu(n), s += uu(r), this[this.mode_](e.pts, s), this.column_ += s.length);
63270      } else this.lastControlCode_ = null;
63271    };
63272  };
63273
63274  du.prototype = new ou(), du.prototype.flushDisplayed = function (e) {
63275    var t = this.displayed_.map(function (e) {
63276      try {
63277        return e.trim();
63278      } catch (e) {
63279        return "";
63280      }
63281    }).join("\n").replace(/^\n+|\n+$/g, "");
63282    t.length && this.trigger("data", {
63283      startPts: this.startPts_,
63284      endPts: e,
63285      text: t,
63286      stream: this.name_
63287    });
63288  }, du.prototype.reset = function () {
63289    this.mode_ = "popOn", this.topRow_ = 0, this.startPts_ = 0, this.displayed_ = lu(), this.nonDisplayed_ = lu(), this.lastControlCode_ = null, this.column_ = 0, this.row_ = 14, this.rollUpRows_ = 2, this.formatting_ = [];
63290  }, du.prototype.setConstants = function () {
63291    0 === this.dataChannel_ ? (this.BASE_ = 16, this.EXT_ = 17, this.CONTROL_ = (20 | this.field_) << 8, this.OFFSET_ = 23) : 1 === this.dataChannel_ && (this.BASE_ = 24, this.EXT_ = 25, this.CONTROL_ = (28 | this.field_) << 8, this.OFFSET_ = 31), this.PADDING_ = 0, this.RESUME_CAPTION_LOADING_ = 32 | this.CONTROL_, this.END_OF_CAPTION_ = 47 | this.CONTROL_, this.ROLL_UP_2_ROWS_ = 37 | this.CONTROL_, this.ROLL_UP_3_ROWS_ = 38 | this.CONTROL_, this.ROLL_UP_4_ROWS_ = 39 | this.CONTROL_, this.CARRIAGE_RETURN_ = 45 | this.CONTROL_, this.RESUME_DIRECT_CAPTIONING_ = 41 | this.CONTROL_, this.BACKSPACE_ = 33 | this.CONTROL_, this.ERASE_DISPLAYED_MEMORY_ = 44 | this.CONTROL_, this.ERASE_NON_DISPLAYED_MEMORY_ = 46 | this.CONTROL_;
63292  }, du.prototype.isSpecialCharacter = function (e, t) {
63293    return e === this.EXT_ && 48 <= t && t <= 63;
63294  }, du.prototype.isExtCharacter = function (e, t) {
63295    return (e === this.EXT_ + 1 || e === this.EXT_ + 2) && 32 <= t && t <= 63;
63296  }, du.prototype.isMidRowCode = function (e, t) {
63297    return e === this.EXT_ && 32 <= t && t <= 47;
63298  }, du.prototype.isOffsetControlCode = function (e, t) {
63299    return e === this.OFFSET_ && 33 <= t && t <= 35;
63300  }, du.prototype.isPAC = function (e, t) {
63301    return e >= this.BASE_ && e < this.BASE_ + 8 && 64 <= t && t <= 127;
63302  }, du.prototype.isColorPAC = function (e) {
63303    return 64 <= e && e <= 79 || 96 <= e && e <= 127;
63304  }, du.prototype.isNormalChar = function (e) {
63305    return 32 <= e && e <= 127;
63306  }, du.prototype.setRollUp = function (e, t) {
63307    if ("rollUp" !== this.mode_ && (this.row_ = 14, this.mode_ = "rollUp", this.flushDisplayed(e), this.nonDisplayed_ = lu(), this.displayed_ = lu()), void 0 !== t && t !== this.row_) for (var i = 0; i < this.rollUpRows_; i++) {
63308      this.displayed_[t - i] = this.displayed_[this.row_ - i], this.displayed_[this.row_ - i] = "";
63309    }
63310    void 0 === t && (t = this.row_), this.topRow_ = t - this.rollUpRows_ + 1;
63311  }, du.prototype.addFormatting = function (e, t) {
63312    this.formatting_ = this.formatting_.concat(t);
63313    var i = t.reduce(function (e, t) {
63314      return e + "<" + t + ">";
63315    }, "");
63316    this[this.mode_](e, i);
63317  }, du.prototype.clearFormatting = function (e) {
63318    if (this.formatting_.length) {
63319      var t = this.formatting_.reverse().reduce(function (e, t) {
63320        return e + "</" + t + ">";
63321      }, "");
63322      this.formatting_ = [], this[this.mode_](e, t);
63323    }
63324  }, du.prototype.popOn = function (e, t) {
63325    var i = this.nonDisplayed_[this.row_];
63326    i += t, this.nonDisplayed_[this.row_] = i;
63327  }, du.prototype.rollUp = function (e, t) {
63328    var i = this.displayed_[this.row_];
63329    i += t, this.displayed_[this.row_] = i;
63330  }, du.prototype.shiftRowsUp_ = function () {
63331    var e;
63332
63333    for (e = 0; e < this.topRow_; e++) {
63334      this.displayed_[e] = "";
63335    }
63336
63337    for (e = this.row_ + 1; e < 15; e++) {
63338      this.displayed_[e] = "";
63339    }
63340
63341    for (e = this.topRow_; e < this.row_; e++) {
63342      this.displayed_[e] = this.displayed_[e + 1];
63343    }
63344
63345    this.displayed_[this.row_] = "";
63346  }, du.prototype.paintOn = function (e, t) {
63347    var i = this.displayed_[this.row_];
63348    i += t, this.displayed_[this.row_] = i;
63349  };
63350
63351  function pu(e, t) {
63352    for (var i = e, n = 0; n < t.length; n++) {
63353      var r = t[n];
63354      if (i < r.size) return r;
63355      i -= r.size;
63356    }
63357
63358    return null;
63359  }
63360
63361  function fu(e, c) {
63362    var n = eu.findBox(e, ["moof", "traf"]),
63363        t = eu.findBox(e, ["mdat"]),
63364        h = {},
63365        r = [];
63366    return t.forEach(function (e, t) {
63367      var i = n[t];
63368      r.push({
63369        mdat: e,
63370        traf: i
63371      });
63372    }), r.forEach(function (e) {
63373      var t,
63374          i = e.mdat,
63375          n = e.traf,
63376          r = eu.findBox(n, ["tfhd"]),
63377          s = $o.parseTfhd(r[0]),
63378          a = s.trackId,
63379          o = eu.findBox(n, ["tfdt"]),
63380          u = 0 < o.length ? $o.parseTfdt(o[0]).baseMediaDecodeTime : 0,
63381          l = eu.findBox(n, ["trun"]);
63382      c === a && 0 < l.length && (t = function (e, t, i) {
63383        var n,
63384            r,
63385            s,
63386            a,
63387            o = new DataView(e.buffer, e.byteOffset, e.byteLength),
63388            u = [];
63389
63390        for (r = 0; r + 4 < e.length; r += s) {
63391          if (s = o.getUint32(r), r += 4, !(s <= 0)) switch (31 & e[r]) {
63392            case 6:
63393              var l = e.subarray(r + 1, r + 1 + s),
63394                  c = pu(r, t);
63395              n = {
63396                nalUnitType: "sei_rbsp",
63397                size: s,
63398                data: l,
63399                escapedRBSP: gu(l),
63400                trackId: i
63401              }, c ? (n.pts = c.pts, n.dts = c.dts, a = c) : (n.pts = a.pts, n.dts = a.dts), u.push(n);
63402          }
63403        }
63404
63405        return u;
63406      }(i, function (e, t, i) {
63407        var n = t,
63408            r = i.defaultSampleDuration || 0,
63409            s = i.defaultSampleSize || 0,
63410            a = i.trackId,
63411            o = [];
63412        return e.forEach(function (e) {
63413          var t = $o.parseTrun(e).samples;
63414          t.forEach(function (e) {
63415            void 0 === e.duration && (e.duration = r), void 0 === e.size && (e.size = s), e.trackId = a, e.dts = n, void 0 === e.compositionTimeOffset && (e.compositionTimeOffset = 0), e.pts = n + e.compositionTimeOffset, n += e.duration;
63416          }), o = o.concat(t);
63417        }), o;
63418      }(l, u, s), a), h[a] || (h[a] = []), h[a] = h[a].concat(t));
63419    }), h;
63420  }
63421
63422  function mu(e, t) {
63423    var i = 1;
63424
63425    for (t < e && (i = -1); 4294967296 < Math.abs(t - e);) {
63426      e += 8589934592 * i;
63427    }
63428
63429    return e;
63430  }
63431
63432  var gu = ru,
63433      vu = au,
63434      yu = function yu() {
63435    var t,
63436        s,
63437        a,
63438        o,
63439        u,
63440        i,
63441        n = !1;
63442    this.isInitialized = function () {
63443      return n;
63444    }, this.init = function (e) {
63445      t = new vu(), n = !0, i = !!e && e.isPartial, t.on("data", function (e) {
63446        e.startTime = e.startPts / o, e.endTime = e.endPts / o, u.captions.push(e), u.captionStreams[e.stream] = !0;
63447      });
63448    }, this.isNewInit = function (e, t) {
63449      return !(e && 0 === e.length || t && "object" == _typeof(t) && 0 === Object.keys(t).length) && (a !== e[0] || o !== t[a]);
63450    }, this.parse = function (e, t, i) {
63451      var n;
63452      if (!this.isInitialized()) return null;
63453      if (!t || !i) return null;
63454      if (this.isNewInit(t, i)) a = t[0], o = i[a];else if (null === a || !o) return s.push(e), null;
63455
63456      for (; 0 < s.length;) {
63457        var r = s.shift();
63458        this.parse(r, t, i);
63459      }
63460
63461      return null !== (n = function (e, t, i) {
63462        return null === t ? null : {
63463          seiNals: fu(e, t)[t],
63464          timescale: i
63465        };
63466      }(e, a, o)) && n.seiNals ? (this.pushNals(n.seiNals), this.flushStream(), u) : null;
63467    }, this.pushNals = function (e) {
63468      if (!this.isInitialized() || !e || 0 === e.length) return null;
63469      e.forEach(function (e) {
63470        t.push(e);
63471      });
63472    }, this.flushStream = function () {
63473      if (!this.isInitialized()) return null;
63474      i ? t.partialFlush() : t.flush();
63475    }, this.clearParsedCaptions = function () {
63476      u.captions = [], u.captionStreams = {};
63477    }, this.resetCaptionStream = function () {
63478      if (!this.isInitialized()) return null;
63479      t.reset();
63480    }, this.clearAllCaptions = function () {
63481      this.clearParsedCaptions(), this.resetCaptionStream();
63482    }, this.reset = function () {
63483      s = [], o = a = null, u ? this.clearParsedCaptions() : u = {
63484        captions: [],
63485        captionStreams: {}
63486      }, this.resetCaptionStream();
63487    }, this.reset();
63488  },
63489      _u = 27,
63490      bu = 15,
63491      Tu = 21;
63492
63493  new ou();
63494
63495  function Su(e) {
63496    var t = 31 & e[1];
63497    return t <<= 8, t |= e[2];
63498  }
63499
63500  function ku(e) {
63501    return !!(64 & e[1]);
63502  }
63503
63504  function Cu(e) {
63505    var t = 0;
63506    return 1 < (48 & e[3]) >>> 4 && (t += e[4] + 1), t;
63507  }
63508
63509  function wu(e) {
63510    switch (e) {
63511      case 5:
63512        return "slice_layer_without_partitioning_rbsp_idr";
63513
63514      case 6:
63515        return "sei_rbsp";
63516
63517      case 7:
63518        return "seq_parameter_set_rbsp";
63519
63520      case 8:
63521        return "pic_parameter_set_rbsp";
63522
63523      case 9:
63524        return "access_unit_delimiter_rbsp";
63525
63526      default:
63527        return null;
63528    }
63529  }
63530
63531  function Eu(e) {
63532    return e[0] << 21 | e[1] << 14 | e[2] << 7 | e[3];
63533  }
63534
63535  var xu,
63536      Au,
63537      Iu,
63538      Pu,
63539      Lu = {
63540    parseType: function parseType(e, t) {
63541      var i = Su(e);
63542      return 0 === i ? "pat" : i === t ? "pmt" : t ? "pes" : null;
63543    },
63544    parsePat: function parsePat(e) {
63545      var t = ku(e),
63546          i = 4 + Cu(e);
63547      return t && (i += e[i] + 1), (31 & e[i + 10]) << 8 | e[i + 11];
63548    },
63549    parsePmt: function parsePmt(e) {
63550      var t = {},
63551          i = ku(e),
63552          n = 4 + Cu(e);
63553
63554      if (i && (n += e[n] + 1), 1 & e[n + 5]) {
63555        var r;
63556        r = 3 + ((15 & e[n + 1]) << 8 | e[n + 2]) - 4;
63557
63558        for (var s = 12 + ((15 & e[n + 10]) << 8 | e[n + 11]); s < r;) {
63559          var a = n + s;
63560          t[(31 & e[a + 1]) << 8 | e[a + 2]] = e[a], s += 5 + ((15 & e[a + 3]) << 8 | e[a + 4]);
63561        }
63562
63563        return t;
63564      }
63565    },
63566    parsePayloadUnitStartIndicator: ku,
63567    parsePesType: function parsePesType(e, t) {
63568      switch (t[Su(e)]) {
63569        case _u:
63570          return "video";
63571
63572        case bu:
63573          return "audio";
63574
63575        case Tu:
63576          return "timed-metadata";
63577
63578        default:
63579          return null;
63580      }
63581    },
63582    parsePesTime: function parsePesTime(e) {
63583      if (!ku(e)) return null;
63584      var t = 4 + Cu(e);
63585      if (t >= e.byteLength) return null;
63586      var i,
63587          n = null;
63588      return 192 & (i = e[t + 7]) && ((n = {}).pts = (14 & e[t + 9]) << 27 | (255 & e[t + 10]) << 20 | (254 & e[t + 11]) << 12 | (255 & e[t + 12]) << 5 | (254 & e[t + 13]) >>> 3, n.pts *= 4, n.pts += (6 & e[t + 13]) >>> 1, n.dts = n.pts, 64 & i && (n.dts = (14 & e[t + 14]) << 27 | (255 & e[t + 15]) << 20 | (254 & e[t + 16]) << 12 | (255 & e[t + 17]) << 5 | (254 & e[t + 18]) >>> 3, n.dts *= 4, n.dts += (6 & e[t + 18]) >>> 1)), n;
63589    },
63590    videoPacketContainsKeyFrame: function videoPacketContainsKeyFrame(e) {
63591      for (var t = 4 + Cu(e), i = e.subarray(t), n = 0, r = 0, s = !1; r < i.byteLength - 3; r++) {
63592        if (1 === i[r + 2]) {
63593          n = r + 5;
63594          break;
63595        }
63596      }
63597
63598      for (; n < i.byteLength;) {
63599        switch (i[n]) {
63600          case 0:
63601            if (0 !== i[n - 1]) {
63602              n += 2;
63603              break;
63604            }
63605
63606            if (0 !== i[n - 2]) {
63607              n++;
63608              break;
63609            }
63610
63611            for (r + 3 !== n - 2 && "slice_layer_without_partitioning_rbsp_idr" === wu(31 & i[r + 3]) && (s = !0); 1 !== i[++n] && n < i.length;) {
63612              ;
63613            }
63614
63615            r = n - 2, n += 3;
63616            break;
63617
63618          case 1:
63619            if (0 !== i[n - 1] || 0 !== i[n - 2]) {
63620              n += 3;
63621              break;
63622            }
63623
63624            "slice_layer_without_partitioning_rbsp_idr" === wu(31 & i[r + 3]) && (s = !0), r = n - 2, n += 3;
63625            break;
63626
63627          default:
63628            n += 3;
63629        }
63630      }
63631
63632      return i = i.subarray(r), n -= r, r = 0, i && 3 < i.byteLength && "slice_layer_without_partitioning_rbsp_idr" === wu(31 & i[r + 3]) && (s = !0), s;
63633    }
63634  },
63635      Ou = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350],
63636      Du = {
63637    isLikelyAacData: function isLikelyAacData(e) {
63638      return e[0] === "I".charCodeAt(0) && e[1] === "D".charCodeAt(0) && e[2] === "3".charCodeAt(0);
63639    },
63640    parseId3TagSize: function parseId3TagSize(e, t) {
63641      var i = e[t + 6] << 21 | e[t + 7] << 14 | e[t + 8] << 7 | e[t + 9];
63642      return (16 & e[t + 5]) >> 4 ? 20 + i : 10 + i;
63643    },
63644    parseAdtsSize: function parseAdtsSize(e, t) {
63645      var i = (224 & e[t + 5]) >> 5,
63646          n = e[t + 4] << 3;
63647      return 6144 & e[t + 3] | n | i;
63648    },
63649    parseType: function parseType(e, t) {
63650      return e[t] === "I".charCodeAt(0) && e[t + 1] === "D".charCodeAt(0) && e[t + 2] === "3".charCodeAt(0) ? "timed-metadata" : !0 & e[t] && 240 == (240 & e[t + 1]) ? "audio" : null;
63651    },
63652    parseSampleRate: function parseSampleRate(e) {
63653      for (var t = 0; t + 5 < e.length;) {
63654        if (255 === e[t] && 240 == (246 & e[t + 1])) return Ou[(60 & e[t + 2]) >>> 2];
63655        t++;
63656      }
63657
63658      return null;
63659    },
63660    parseAacTimestamp: function parseAacTimestamp(e) {
63661      var t, i, n;
63662      t = 10, 64 & e[5] && (t += 4, t += Eu(e.subarray(10, 14)));
63663
63664      do {
63665        if ((i = Eu(e.subarray(t + 4, t + 8))) < 1) return null;
63666
63667        if ("PRIV" === String.fromCharCode(e[t], e[t + 1], e[t + 2], e[t + 3])) {
63668          n = e.subarray(t + 10, t + i + 10);
63669
63670          for (var r = 0; r < n.byteLength; r++) {
63671            if (0 === n[r]) {
63672              if ("com.apple.streaming.transportStreamTimestamp" !== unescape(function (e, t, i) {
63673                var n,
63674                    r = "";
63675
63676                for (n = t; n < i; n++) {
63677                  r += "%" + ("00" + e[n].toString(16)).slice(-2);
63678                }
63679
63680                return r;
63681              }(n, 0, r))) break;
63682              var s = n.subarray(r + 1),
63683                  a = (1 & s[3]) << 30 | s[4] << 22 | s[5] << 14 | s[6] << 6 | s[7] >>> 2;
63684              return a *= 4, a += 3 & s[7];
63685            }
63686          }
63687        }
63688
63689        t += 10, t += i;
63690      } while (t < e.byteLength);
63691
63692      return null;
63693    }
63694  },
63695      Nu = 9e4,
63696      Ru = (xu = function xu(e) {
63697    return 9e4 * e;
63698  }, Au = function Au(e, t) {
63699    return e * t;
63700  }, Iu = function Iu(e) {
63701    return e / 9e4;
63702  }, Pu = function Pu(e, t) {
63703    return e / t;
63704  }, mu),
63705      Uu = {};
63706  Uu.ts = Lu, Uu.aac = Du;
63707
63708  function Mu(e, t, i) {
63709    for (var n, r, s, a, o = 0, u = Hu, l = !1; u <= e.byteLength;) {
63710      if (71 !== e[o] || 71 !== e[u] && u !== e.byteLength) o++, u++;else {
63711        switch (n = e.subarray(o, u), Uu.ts.parseType(n, t.pid)) {
63712          case "pes":
63713            r = Uu.ts.parsePesType(n, t.table), s = Uu.ts.parsePayloadUnitStartIndicator(n), "audio" === r && s && (a = Uu.ts.parsePesTime(n)) && (a.type = "audio", i.audio.push(a), l = !0);
63714        }
63715
63716        if (l) break;
63717        o += Hu, u += Hu;
63718      }
63719    }
63720
63721    for (o = (u = e.byteLength) - Hu, l = !1; 0 <= o;) {
63722      if (71 !== e[o] || 71 !== e[u] && u !== e.byteLength) o--, u--;else {
63723        switch (n = e.subarray(o, u), Uu.ts.parseType(n, t.pid)) {
63724          case "pes":
63725            r = Uu.ts.parsePesType(n, t.table), s = Uu.ts.parsePayloadUnitStartIndicator(n), "audio" === r && s && (a = Uu.ts.parsePesTime(n)) && (a.type = "audio", i.audio.push(a), l = !0);
63726        }
63727
63728        if (l) break;
63729        o -= Hu, u -= Hu;
63730      }
63731    }
63732  }
63733
63734  function Bu(e, t, i) {
63735    for (var n, r, s, a, o, u, l, c = 0, h = Hu, d = !1, p = {
63736      data: [],
63737      size: 0
63738    }; h < e.byteLength;) {
63739      if (71 !== e[c] || 71 !== e[h]) c++, h++;else {
63740        switch (n = e.subarray(c, h), Uu.ts.parseType(n, t.pid)) {
63741          case "pes":
63742            if (r = Uu.ts.parsePesType(n, t.table), s = Uu.ts.parsePayloadUnitStartIndicator(n), "video" === r && (s && !d && (a = Uu.ts.parsePesTime(n)) && (a.type = "video", i.video.push(a), d = !0), !i.firstKeyFrame)) {
63743              if (s && 0 !== p.size) {
63744                for (o = new Uint8Array(p.size), u = 0; p.data.length;) {
63745                  l = p.data.shift(), o.set(l, u), u += l.byteLength;
63746                }
63747
63748                if (Uu.ts.videoPacketContainsKeyFrame(o)) {
63749                  var f = Uu.ts.parsePesTime(o);
63750                  f && (i.firstKeyFrame = f, i.firstKeyFrame.type = "video");
63751                }
63752
63753                p.size = 0;
63754              }
63755
63756              p.data.push(n), p.size += n.byteLength;
63757            }
63758
63759        }
63760
63761        if (d && i.firstKeyFrame) break;
63762        c += Hu, h += Hu;
63763      }
63764    }
63765
63766    for (c = (h = e.byteLength) - Hu, d = !1; 0 <= c;) {
63767      if (71 !== e[c] || 71 !== e[h]) c--, h--;else {
63768        switch (n = e.subarray(c, h), Uu.ts.parseType(n, t.pid)) {
63769          case "pes":
63770            r = Uu.ts.parsePesType(n, t.table), s = Uu.ts.parsePayloadUnitStartIndicator(n), "video" === r && s && (a = Uu.ts.parsePesTime(n)) && (a.type = "video", i.video.push(a), d = !0);
63771        }
63772
63773        if (d) break;
63774        c -= Hu, h -= Hu;
63775      }
63776    }
63777  }
63778
63779  function ju(e) {
63780    var t = {
63781      pid: null,
63782      table: null
63783    },
63784        i = {};
63785
63786    for (var n in function (e, t) {
63787      for (var i, n = 0, r = Hu; r < e.byteLength;) {
63788        if (71 !== e[n] || 71 !== e[r]) n++, r++;else {
63789          switch (i = e.subarray(n, r), Uu.ts.parseType(i, t.pid)) {
63790            case "pat":
63791              t.pid || (t.pid = Uu.ts.parsePat(i));
63792              break;
63793
63794            case "pmt":
63795              t.table || (t.table = Uu.ts.parsePmt(i));
63796          }
63797
63798          if (t.pid && t.table) return;
63799          n += Hu, r += Hu;
63800        }
63801      }
63802    }(e, t), t.table) {
63803      if (t.table.hasOwnProperty(n)) switch (t.table[n]) {
63804        case _u:
63805          i.video = [], Bu(e, t, i), 0 === i.video.length && delete i.video;
63806          break;
63807
63808        case bu:
63809          i.audio = [], Mu(e, t, i), 0 === i.audio.length && delete i.audio;
63810      }
63811    }
63812
63813    return i;
63814  }
63815
63816  var Fu = Nu,
63817      Hu = 188,
63818      Vu = function Vu(e, t) {
63819    var i;
63820    return (i = Uu.aac.isLikelyAacData(e) ? function (e) {
63821      for (var t, i = !1, n = 0, r = null, s = null, a = 0, o = 0; 3 <= e.length - o;) {
63822        switch (Uu.aac.parseType(e, o)) {
63823          case "timed-metadata":
63824            if (e.length - o < 10) {
63825              i = !0;
63826              break;
63827            }
63828
63829            if ((a = Uu.aac.parseId3TagSize(e, o)) > e.length) {
63830              i = !0;
63831              break;
63832            }
63833
63834            null === s && (t = e.subarray(o, o + a), s = Uu.aac.parseAacTimestamp(t)), o += a;
63835            break;
63836
63837          case "audio":
63838            if (e.length - o < 7) {
63839              i = !0;
63840              break;
63841            }
63842
63843            if ((a = Uu.aac.parseAdtsSize(e, o)) > e.length) {
63844              i = !0;
63845              break;
63846            }
63847
63848            null === r && (t = e.subarray(o, o + a), r = Uu.aac.parseSampleRate(t)), n++, o += a;
63849            break;
63850
63851          default:
63852            o++;
63853        }
63854
63855        if (i) return null;
63856      }
63857
63858      if (null === r || null === s) return null;
63859      var u = Fu / r;
63860      return {
63861        audio: [{
63862          type: "audio",
63863          dts: s,
63864          pts: s
63865        }, {
63866          type: "audio",
63867          dts: s + 1024 * n * u,
63868          pts: s + 1024 * n * u
63869        }]
63870      };
63871    }(e) : ju(e)) && (i.audio || i.video) ? (function (e, t) {
63872      if (e.audio && e.audio.length) {
63873        var i = t;
63874        "undefined" == typeof i && (i = e.audio[0].dts), e.audio.forEach(function (e) {
63875          e.dts = Ru(e.dts, i), e.pts = Ru(e.pts, i), e.dtsTime = e.dts / Fu, e.ptsTime = e.pts / Fu;
63876        });
63877      }
63878
63879      if (e.video && e.video.length) {
63880        var n = t;
63881
63882        if ("undefined" == typeof n && (n = e.video[0].dts), e.video.forEach(function (e) {
63883          e.dts = Ru(e.dts, n), e.pts = Ru(e.pts, n), e.dtsTime = e.dts / Fu, e.ptsTime = e.pts / Fu;
63884        }), e.firstKeyFrame) {
63885          var r = e.firstKeyFrame;
63886          r.dts = Ru(r.dts, n), r.pts = Ru(r.pts, n), r.dtsTime = r.dts / Fu, r.ptsTime = r.dts / Fu;
63887        }
63888      }
63889    }(i, t), i) : null;
63890  };
63891
63892  function qu(e, t) {
63893    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
63894  }
63895
63896  var Wu = function Wu(e, t, i) {
63897    return t && zu(e.prototype, t), i && zu(e, i), e;
63898  };
63899
63900  function zu(e, t) {
63901    for (var i = 0; i < t.length; i++) {
63902      var n = t[i];
63903      n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
63904    }
63905  }
63906
63907  var Gu = null,
63908      Xu = (Ku.prototype.decrypt = function (e, t, i, n, r, s) {
63909    var a = this._key[1],
63910        o = e ^ a[0],
63911        u = n ^ a[1],
63912        l = i ^ a[2],
63913        c = t ^ a[3],
63914        h = void 0,
63915        d = void 0,
63916        p = void 0,
63917        f = a.length / 4 - 2,
63918        m = void 0,
63919        g = 4,
63920        v = this._tables[1],
63921        y = v[0],
63922        _ = v[1],
63923        b = v[2],
63924        T = v[3],
63925        S = v[4];
63926
63927    for (m = 0; m < f; m++) {
63928      h = y[o >>> 24] ^ _[u >> 16 & 255] ^ b[l >> 8 & 255] ^ T[255 & c] ^ a[g], d = y[u >>> 24] ^ _[l >> 16 & 255] ^ b[c >> 8 & 255] ^ T[255 & o] ^ a[g + 1], p = y[l >>> 24] ^ _[c >> 16 & 255] ^ b[o >> 8 & 255] ^ T[255 & u] ^ a[g + 2], c = y[c >>> 24] ^ _[o >> 16 & 255] ^ b[u >> 8 & 255] ^ T[255 & l] ^ a[g + 3], g += 4, o = h, u = d, l = p;
63929    }
63930
63931    for (m = 0; m < 4; m++) {
63932      r[(3 & -m) + s] = S[o >>> 24] << 24 ^ S[u >> 16 & 255] << 16 ^ S[l >> 8 & 255] << 8 ^ S[255 & c] ^ a[g++], h = o, o = u, u = l, l = c, c = h;
63933    }
63934  }, Ku);
63935
63936  function Ku(e) {
63937    qu(this, Ku), Gu = Gu || function () {
63938      var e = [[[], [], [], [], []], [[], [], [], [], []]],
63939          t = e[0],
63940          i = e[1],
63941          n = t[4],
63942          r = i[4],
63943          s = void 0,
63944          a = void 0,
63945          o = void 0,
63946          u = [],
63947          l = [],
63948          c = void 0,
63949          h = void 0,
63950          d = void 0,
63951          p = void 0,
63952          f = void 0;
63953
63954      for (s = 0; s < 256; s++) {
63955        l[(u[s] = s << 1 ^ 283 * (s >> 7)) ^ s] = s;
63956      }
63957
63958      for (a = o = 0; !n[a]; a ^= c || 1, o = l[o] || 1) {
63959        for (d = (d = o ^ o << 1 ^ o << 2 ^ o << 3 ^ o << 4) >> 8 ^ 255 & d ^ 99, f = 16843009 * u[h = u[c = u[r[n[a] = d] = a]]] ^ 65537 * h ^ 257 * c ^ 16843008 * a, p = 257 * u[d] ^ 16843008 * d, s = 0; s < 4; s++) {
63960          t[s][a] = p = p << 24 ^ p >>> 8, i[s][d] = f = f << 24 ^ f >>> 8;
63961        }
63962      }
63963
63964      for (s = 0; s < 5; s++) {
63965        t[s] = t[s].slice(0), i[s] = i[s].slice(0);
63966      }
63967
63968      return e;
63969    }(), this._tables = [[Gu[0][0].slice(), Gu[0][1].slice(), Gu[0][2].slice(), Gu[0][3].slice(), Gu[0][4].slice()], [Gu[1][0].slice(), Gu[1][1].slice(), Gu[1][2].slice(), Gu[1][3].slice(), Gu[1][4].slice()]];
63970    var t = void 0,
63971        i = void 0,
63972        n = void 0,
63973        r = void 0,
63974        s = void 0,
63975        a = this._tables[0][4],
63976        o = this._tables[1],
63977        u = e.length,
63978        l = 1;
63979    if (4 !== u && 6 !== u && 8 !== u) throw new Error("Invalid aes key size");
63980
63981    for (r = e.slice(0), s = [], this._key = [r, s], t = u; t < 4 * u + 28; t++) {
63982      n = r[t - 1], (t % u == 0 || 8 === u && t % u == 4) && (n = a[n >>> 24] << 24 ^ a[n >> 16 & 255] << 16 ^ a[n >> 8 & 255] << 8 ^ a[255 & n], t % u == 0 && (n = n << 8 ^ n >>> 24 ^ l << 24, l = l << 1 ^ 283 * (l >> 7))), r[t] = r[t - u] ^ n;
63983    }
63984
63985    for (i = 0; t; i++, t--) {
63986      n = r[3 & i ? t : t - 4], s[i] = t <= 4 || i < 4 ? n : o[0][a[n >>> 24]] ^ o[1][a[n >> 16 & 255]] ^ o[2][a[n >> 8 & 255]] ^ o[3][a[255 & n]];
63987    }
63988  }
63989
63990  var Yu = ($u.prototype.on = function (e, t) {
63991    this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t);
63992  }, $u.prototype.off = function (e, t) {
63993    if (!this.listeners[e]) return !1;
63994    var i = this.listeners[e].indexOf(t);
63995    return this.listeners[e].splice(i, 1), -1 < i;
63996  }, $u.prototype.trigger = function (e, t) {
63997    var i = this.listeners[e];
63998    if (i) if (2 === arguments.length) for (var n = i.length, r = 0; r < n; ++r) {
63999      i[r].call(this, t);
64000    } else for (var s = Array.prototype.slice.call(arguments, 1), a = i.length, o = 0; o < a; ++o) {
64001      i[o].apply(this, s);
64002    }
64003  }, $u.prototype.dispose = function () {
64004    this.listeners = {};
64005  }, $u.prototype.pipe = function (t) {
64006    this.on("data", function (e) {
64007      t.push(e);
64008    });
64009  }, $u);
64010
64011  function $u() {
64012    qu(this, $u), this.listeners = {};
64013  }
64014
64015  var Qu,
64016      Ju = (function (e, t) {
64017    if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + _typeof(t));
64018    e.prototype = Object.create(t && t.prototype, {
64019      constructor: {
64020        value: e,
64021        enumerable: !1,
64022        writable: !0,
64023        configurable: !0
64024      }
64025    }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t);
64026  }(Zu, Qu = Yu), Zu.prototype.processJob_ = function () {
64027    this.jobs.shift()(), this.jobs.length ? this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay) : this.timeout_ = null;
64028  }, Zu.prototype.push = function (e) {
64029    this.jobs.push(e), this.timeout_ || (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay));
64030  }, Zu);
64031
64032  function Zu() {
64033    qu(this, Zu);
64034
64035    var e = function (e, t) {
64036      if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
64037      return !t || "object" != _typeof(t) && "function" != typeof t ? e : t;
64038    }(this, Qu.call(this, Yu));
64039
64040    return e.jobs = [], e.delay = 1, e.timeout_ = null, e;
64041  }
64042
64043  function el(e) {
64044    return e << 24 | (65280 & e) << 8 | (16711680 & e) >> 8 | e >>> 24;
64045  }
64046
64047  function tl(e, t, i) {
64048    var n = new Int32Array(e.buffer, e.byteOffset, e.byteLength >> 2),
64049        r = new Xu(Array.prototype.slice.call(t)),
64050        s = new Uint8Array(e.byteLength),
64051        a = new Int32Array(s.buffer),
64052        o = void 0,
64053        u = void 0,
64054        l = void 0,
64055        c = void 0,
64056        h = void 0,
64057        d = void 0,
64058        p = void 0,
64059        f = void 0,
64060        m = void 0;
64061
64062    for (o = i[0], u = i[1], l = i[2], c = i[3], m = 0; m < n.length; m += 4) {
64063      h = el(n[m]), d = el(n[m + 1]), p = el(n[m + 2]), f = el(n[m + 3]), r.decrypt(h, d, p, f, a, m), a[m] = el(a[m] ^ o), a[m + 1] = el(a[m + 1] ^ u), a[m + 2] = el(a[m + 2] ^ l), a[m + 3] = el(a[m + 3] ^ c), o = h, u = d, l = p, c = f;
64064    }
64065
64066    return s;
64067  }
64068
64069  var il = (nl.prototype.decryptChunk_ = function (t, i, n, r) {
64070    return function () {
64071      var e = tl(t, i, n);
64072      r.set(e, t.byteOffset);
64073    };
64074  }, Wu(nl, null, [{
64075    key: "STEP",
64076    get: function get() {
64077      return 32e3;
64078    }
64079  }]), nl);
64080
64081  function nl(e, t, i, n) {
64082    qu(this, nl);
64083    var r = nl.STEP,
64084        s = new Int32Array(e.buffer),
64085        a = new Uint8Array(e.byteLength),
64086        o = 0;
64087
64088    for (this.asyncStream_ = new Ju(), this.asyncStream_.push(this.decryptChunk_(s.subarray(o, o + r), t, i, a)), o = r; o < s.length; o += r) {
64089      i = new Uint32Array([el(s[o - 4]), el(s[o - 3]), el(s[o - 2]), el(s[o - 1])]), this.asyncStream_.push(this.decryptChunk_(s.subarray(o, o + r), t, i, a));
64090    }
64091
64092    this.asyncStream_.push(function () {
64093      n(null, function (e) {
64094        return e.subarray(0, e.byteLength - e[e.byteLength - 1]);
64095      }(a));
64096    });
64097  }
64098
64099  function rl(e, t) {
64100    return /^[a-z]+:/i.test(t) ? t : (/\/\//i.test(e) || (e = ls.buildAbsoluteURL(y.location.href, e)), ls.buildAbsoluteURL(e, t));
64101  }
64102
64103  function sl(e, t, i) {
64104    return e && i.responseURL && t !== i.responseURL ? i.responseURL : t;
64105  }
64106
64107  function al(e, t) {
64108    if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
64109  }
64110  /**
64111     * @videojs/http-streaming
64112     * @version 1.13.2
64113     * @copyright 2020 Brightcove, Inc
64114     * @license Apache-2.0
64115     */
64116
64117
64118  var ol = function ol(e, t, i) {
64119    return t && ul(e.prototype, t), i && ul(e, i), e;
64120  };
64121
64122  function ul(e, t) {
64123    for (var i = 0; i < t.length; i++) {
64124      var n = t[i];
64125      n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
64126    }
64127  }
64128
64129  function ll(e, t) {
64130    if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + _typeof(t));
64131    e.prototype = Object.create(t && t.prototype, {
64132      constructor: {
64133        value: e,
64134        enumerable: !1,
64135        writable: !0,
64136        configurable: !0
64137      }
64138    }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t);
64139  }
64140
64141  function cl(e, t) {
64142    if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
64143    return !t || "object" != _typeof(t) && "function" != typeof t ? e : t;
64144  }
64145
64146  function hl(r, s) {
64147    ["AUDIO", "SUBTITLES"].forEach(function (e) {
64148      for (var t in r.mediaGroups[e]) {
64149        for (var i in r.mediaGroups[e][t]) {
64150          var n = r.mediaGroups[e][t][i];
64151          s(n, e, t, i);
64152        }
64153      }
64154    });
64155  }
64156
64157  function dl(e, t) {
64158    var i = yl(e, {}),
64159        n = i.playlists[t.id];
64160    if (!n) return null;
64161    if (n.segments && t.segments && n.segments.length === t.segments.length && n.endList === t.endList && n.mediaSequence === t.mediaSequence) return null;
64162    var r = yl(n, t);
64163    n.segments && (r.segments = function (e, t, i) {
64164      var n = t.slice();
64165      i = i || 0;
64166
64167      for (var r = Math.min(e.length, t.length + i), s = i; s < r; s++) {
64168        n[s - i] = yl(e[s], n[s - i]);
64169      }
64170
64171      return n;
64172    }(n.segments, t.segments, t.mediaSequence - n.mediaSequence)), r.segments.forEach(function (e) {
64173      !function (e, t) {
64174        e.resolvedUri || (e.resolvedUri = rl(t, e.uri)), e.key && !e.key.resolvedUri && (e.key.resolvedUri = rl(t, e.key.uri)), e.map && !e.map.resolvedUri && (e.map.resolvedUri = rl(t, e.map.uri));
64175      }(e, r.resolvedUri);
64176    });
64177
64178    for (var s = 0; s < i.playlists.length; s++) {
64179      i.playlists[s].id === t.id && (i.playlists[s] = r);
64180    }
64181
64182    return i.playlists[t.id] = r, i.playlists[t.uri] = r, i;
64183  }
64184
64185  function pl(e, t) {
64186    return e + "-" + t;
64187  }
64188
64189  function fl(e) {
64190    for (var t = e.playlists.length; t--;) {
64191      var i = e.playlists[t];
64192      i.resolvedUri = rl(e.uri, i.uri), i.id = pl(t, i.uri), e.playlists[i.id] = i, (e.playlists[i.uri] = i).attributes || (i.attributes = {}, _l.warn("Invalid playlist STREAM-INF detected. Missing BANDWIDTH attribute."));
64193    }
64194  }
64195
64196  function ml(t) {
64197    hl(t, function (e) {
64198      e.uri && (e.resolvedUri = rl(t.uri, e.uri));
64199    });
64200  }
64201
64202  function gl(e, t) {
64203    var i = e.segments[e.segments.length - 1];
64204    return t && i && i.duration ? 1e3 * i.duration : 500 * (e.targetDuration || 10);
64205  }
64206
64207  var vl = function vl(e, t) {
64208    if (Array.isArray(e)) return e;
64209    if (Symbol.iterator in Object(e)) return function (e, t) {
64210      var i = [],
64211          n = !0,
64212          r = !1,
64213          s = void 0;
64214
64215      try {
64216        for (var a, o = e[Symbol.iterator](); !(n = (a = o.next()).done) && (i.push(a.value), !t || i.length !== t); n = !0) {
64217          ;
64218        }
64219      } catch (e) {
64220        r = !0, s = e;
64221      } finally {
64222        try {
64223          !n && o["return"] && o["return"]();
64224        } finally {
64225          if (r) throw s;
64226        }
64227      }
64228
64229      return i;
64230    }(e, t);
64231    throw new TypeError("Invalid attempt to destructure non-iterable instance");
64232  },
64233      yl = as.mergeOptions,
64234      _l = as.log,
64235      bl = (ll(Tl, as.EventTarget), ol(Tl, [{
64236    key: "playlistRequestError",
64237    value: function value(e, t, i) {
64238      var n = t.uri,
64239          r = t.id;
64240      this.request = null, i && (this.state = i), this.error = {
64241        playlist: this.master.playlists[r],
64242        status: e.status,
64243        message: "HLS playlist request error at URL: " + n + ".",
64244        responseText: e.responseText,
64245        code: 500 <= e.status ? 4 : 2
64246      }, this.trigger("error");
64247    }
64248  }, {
64249    key: "haveMetadata",
64250    value: function value(e, t, i) {
64251      var n = this;
64252      this.request = null, this.state = "HAVE_METADATA";
64253      var r = new gs();
64254      this.customTagParsers.forEach(function (e) {
64255        return r.addParser(e);
64256      }), this.customTagMappers.forEach(function (e) {
64257        return r.addTagMapper(e);
64258      }), r.push(e.responseText), r.end(), r.manifest.uri = t, r.manifest.id = i, r.manifest.attributes = r.manifest.attributes || {};
64259      var s = dl(this.master, r.manifest);
64260      this.targetDuration = r.manifest.targetDuration, s ? (this.master = s, this.media_ = this.master.playlists[i]) : this.trigger("playlistunchanged"), this.media().endList || (y.clearTimeout(this.mediaUpdateTimeout), this.mediaUpdateTimeout = y.setTimeout(function () {
64261        n.trigger("mediaupdatetimeout");
64262      }, gl(this.media(), !!s))), this.trigger("loadedplaylist");
64263    }
64264  }, {
64265    key: "dispose",
64266    value: function value() {
64267      this.trigger("dispose"), this.stopRequest(), y.clearTimeout(this.mediaUpdateTimeout), y.clearTimeout(this.finalRenditionTimeout), this.off();
64268    }
64269  }, {
64270    key: "stopRequest",
64271    value: function value() {
64272      if (this.request) {
64273        var e = this.request;
64274        this.request = null, e.onreadystatechange = null, e.abort();
64275      }
64276    }
64277  }, {
64278    key: "media",
64279    value: function value(i, e) {
64280      var n = this;
64281      if (!i) return this.media_;
64282      if ("HAVE_NOTHING" === this.state) throw new Error("Cannot switch media playlist from " + this.state);
64283
64284      if ("string" == typeof i) {
64285        if (!this.master.playlists[i]) throw new Error("Unknown playlist URI: " + i);
64286        i = this.master.playlists[i];
64287      }
64288
64289      if (y.clearTimeout(this.finalRenditionTimeout), e) {
64290        var t = i.targetDuration / 2 * 1e3 || 5e3;
64291        this.finalRenditionTimeout = y.setTimeout(this.media.bind(this, i, !1), t);
64292      } else {
64293        var r = this.state,
64294            s = !this.media_ || i.id !== this.media_.id;
64295        if (this.master.playlists[i.id].endList) return this.request && (this.request.onreadystatechange = null, this.request.abort(), this.request = null), this.state = "HAVE_METADATA", this.media_ = i, void (s && (this.trigger("mediachanging"), this.trigger("mediachange")));
64296
64297        if (s) {
64298          if (this.state = "SWITCHING_MEDIA", this.request) {
64299            if (i.resolvedUri === this.request.url) return;
64300            this.request.onreadystatechange = null, this.request.abort(), this.request = null;
64301          }
64302
64303          this.media_ && this.trigger("mediachanging"), this.request = this.hls_.xhr({
64304            uri: i.resolvedUri,
64305            withCredentials: this.withCredentials
64306          }, function (e, t) {
64307            if (n.request) {
64308              if (i.resolvedUri = sl(n.handleManifestRedirects, i.resolvedUri, t), e) return n.playlistRequestError(n.request, i, r);
64309              n.haveMetadata(t, i.uri, i.id), "HAVE_MASTER" === r ? n.trigger("loadedmetadata") : n.trigger("mediachange");
64310            }
64311          });
64312        }
64313      }
64314    }
64315  }, {
64316    key: "pause",
64317    value: function value() {
64318      this.stopRequest(), y.clearTimeout(this.mediaUpdateTimeout), "HAVE_NOTHING" === this.state && (this.started = !1), "SWITCHING_MEDIA" === this.state ? this.media_ ? this.state = "HAVE_METADATA" : this.state = "HAVE_MASTER" : "HAVE_CURRENT_METADATA" === this.state && (this.state = "HAVE_METADATA");
64319    }
64320  }, {
64321    key: "load",
64322    value: function value(e) {
64323      var t = this;
64324      y.clearTimeout(this.mediaUpdateTimeout);
64325      var i = this.media();
64326
64327      if (e) {
64328        var n = i ? i.targetDuration / 2 * 1e3 : 5e3;
64329        this.mediaUpdateTimeout = y.setTimeout(function () {
64330          return t.load();
64331        }, n);
64332      } else this.started ? i && !i.endList ? this.trigger("mediaupdatetimeout") : this.trigger("loadedplaylist") : this.start();
64333    }
64334  }, {
64335    key: "start",
64336    value: function value() {
64337      var r = this;
64338      this.started = !0, this.request = this.hls_.xhr({
64339        uri: this.srcUrl,
64340        withCredentials: this.withCredentials
64341      }, function (e, t) {
64342        if (r.request) {
64343          if (r.request = null, e) return r.error = {
64344            status: t.status,
64345            message: "HLS playlist request error at URL: " + r.srcUrl + ".",
64346            responseText: t.responseText,
64347            code: 2
64348          }, "HAVE_NOTHING" === r.state && (r.started = !1), r.trigger("error");
64349          var i = new gs();
64350          if (r.customTagParsers.forEach(function (e) {
64351            return i.addParser(e);
64352          }), r.customTagMappers.forEach(function (e) {
64353            return i.addTagMapper(e);
64354          }), i.push(t.responseText), i.end(), r.state = "HAVE_MASTER", r.srcUrl = sl(r.handleManifestRedirects, r.srcUrl, t), i.manifest.uri = r.srcUrl, i.manifest.playlists) return r.master = i.manifest, fl(r.master), ml(r.master), r.trigger("loadedplaylist"), void (r.request || r.media(i.manifest.playlists[0]));
64355          var n = pl(0, r.srcUrl);
64356          return r.master = {
64357            mediaGroups: {
64358              AUDIO: {},
64359              VIDEO: {},
64360              "CLOSED-CAPTIONS": {},
64361              SUBTITLES: {}
64362            },
64363            uri: y.location.href,
64364            playlists: [{
64365              uri: r.srcUrl,
64366              id: n,
64367              resolvedUri: r.srcUrl,
64368              attributes: {}
64369            }]
64370          }, r.master.playlists[n] = r.master.playlists[0], r.master.playlists[r.srcUrl] = r.master.playlists[0], r.haveMetadata(t, r.srcUrl, n), r.trigger("loadedmetadata");
64371        }
64372      });
64373    }
64374  }]), Tl);
64375
64376  function Tl(e, t) {
64377    var i = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};
64378    al(this, Tl);
64379    var n = cl(this, (Tl.__proto__ || Object.getPrototypeOf(Tl)).call(this)),
64380        r = i.withCredentials,
64381        s = void 0 !== r && r,
64382        a = i.handleManifestRedirects,
64383        o = void 0 !== a && a;
64384    n.srcUrl = e, n.hls_ = t, n.withCredentials = s, n.handleManifestRedirects = o;
64385    var u = t.options_;
64386    if (n.customTagParsers = u && u.customTagParsers || [], n.customTagMappers = u && u.customTagMappers || [], !n.srcUrl) throw new Error("A non-empty playlist URL is required");
64387    return n.state = "HAVE_NOTHING", n.on("mediaupdatetimeout", function () {
64388      "HAVE_METADATA" === n.state && (n.state = "HAVE_CURRENT_METADATA", n.request = n.hls_.xhr({
64389        uri: rl(n.master.uri, n.media().uri),
64390        withCredentials: n.withCredentials
64391      }, function (e, t) {
64392        if (n.request) return e ? n.playlistRequestError(n.request, n.media(), "HAVE_METADATA") : void n.haveMetadata(n.request, n.media().uri, n.media().id);
64393      }));
64394    }), n;
64395  }
64396
64397  function Sl(e, t, i) {
64398    var n, r;
64399    return "undefined" == typeof t && (t = e.mediaSequence + e.segments.length), t < e.mediaSequence ? 0 : (n = function (e, t) {
64400      var i = 0,
64401          n = t - e.mediaSequence,
64402          r = e.segments[n];
64403
64404      if (r) {
64405        if ("undefined" != typeof r.start) return {
64406          result: r.start,
64407          precise: !0
64408        };
64409        if ("undefined" != typeof r.end) return {
64410          result: r.end - r.duration,
64411          precise: !0
64412        };
64413      }
64414
64415      for (; n--;) {
64416        if ("undefined" != typeof (r = e.segments[n]).end) return {
64417          result: i + r.end,
64418          precise: !0
64419        };
64420        if (i += r.duration, "undefined" != typeof r.start) return {
64421          result: i + r.start,
64422          precise: !0
64423        };
64424      }
64425
64426      return {
64427        result: i,
64428        precise: !1
64429      };
64430    }(e, t)).precise ? n.result : (r = function (e, t) {
64431      for (var i = 0, n = void 0, r = t - e.mediaSequence; r < e.segments.length; r++) {
64432        if ("undefined" != typeof (n = e.segments[r]).start) return {
64433          result: n.start - i,
64434          precise: !0
64435        };
64436        if (i += n.duration, "undefined" != typeof n.end) return {
64437          result: n.end - i,
64438          precise: !0
64439        };
64440      }
64441
64442      return {
64443        result: -1,
64444        precise: !1
64445      };
64446    }(e, t)).precise ? r.result : n.result + i;
64447  }
64448
64449  function kl(e, t, i) {
64450    if (!e) return 0;
64451
64452    if ("number" != typeof i && (i = 0), "undefined" == typeof t) {
64453      if (e.totalDuration) return e.totalDuration;
64454      if (!e.endList) return y.Infinity;
64455    }
64456
64457    return Sl(e, t, i);
64458  }
64459
64460  function Cl(e, t, i) {
64461    var n = 0;
64462
64463    if (i < t) {
64464      var r = [i, t];
64465      t = r[0], i = r[1];
64466    }
64467
64468    if (t < 0) {
64469      for (var s = t; s < Math.min(0, i); s++) {
64470        n += e.targetDuration;
64471      }
64472
64473      t = 0;
64474    }
64475
64476    for (var a = t; a < i; a++) {
64477      n += e.segments[a].duration;
64478    }
64479
64480    return n;
64481  }
64482
64483  function wl(e, t) {
64484    if (!e.segments.length) return 0;
64485    var i = e.segments.length,
64486        n = e.segments[i - 1].duration || e.targetDuration,
64487        r = "number" == typeof t ? t : n + 2 * e.targetDuration;
64488    if (0 === r) return i;
64489
64490    for (var s = 0; i-- && !(r <= (s += e.segments[i].duration));) {
64491      ;
64492    }
64493
64494    return Math.max(0, i);
64495  }
64496
64497  function El(e, t, i, n) {
64498    if (!e || !e.segments) return null;
64499    if (e.endList) return kl(e);
64500    if (null === t) return null;
64501    t = t || 0;
64502    var r = i ? wl(e, n) : e.segments.length;
64503    return Sl(e, e.mediaSequence + r, t);
64504  }
64505
64506  function xl(e) {
64507    return e - Math.floor(e) == 0;
64508  }
64509
64510  function Al(e, t) {
64511    if (xl(t)) return t + .1 * e;
64512
64513    for (var i = t.toString().split(".")[1].length, n = 1; n <= i; n++) {
64514      var r = Math.pow(10, n),
64515          s = t * r;
64516      if (xl(s) || n === i) return (s + e) / r;
64517    }
64518  }
64519
64520  function Il(e) {
64521    return e.excludeUntil && e.excludeUntil > Date.now();
64522  }
64523
64524  function Pl(e) {
64525    return e.excludeUntil && e.excludeUntil === 1 / 0;
64526  }
64527
64528  function Ll(e) {
64529    var t = Il(e);
64530    return !e.disabled && !t;
64531  }
64532
64533  function Ol(e, t) {
64534    return t.attributes && t.attributes[e];
64535  }
64536
64537  function Dl(e, t) {
64538    if (1 === e.playlists.length) return !0;
64539    var i = t.attributes.BANDWIDTH || Number.MAX_VALUE;
64540    return 0 === e.playlists.filter(function (e) {
64541      return !!Ll(e) && (e.attributes.BANDWIDTH || 0) < i;
64542    }).length;
64543  }
64544
64545  function Nl() {
64546    return function e(t, n) {
64547      t = nc({
64548        timeout: 45e3
64549      }, t);
64550      var i = e.beforeRequest || as.Hls.xhr.beforeRequest;
64551
64552      if (i && "function" == typeof i) {
64553        var r = i(t);
64554        r && (t = r);
64555      }
64556
64557      var s = ic(t, function (e, t) {
64558        var i = s.response;
64559        !e && i && (s.responseTime = Date.now(), s.roundTripTime = s.responseTime - s.requestTime, s.bytesReceived = i.byteLength || i.length, s.bandwidth || (s.bandwidth = Math.floor(s.bytesReceived / s.roundTripTime * 8 * 1e3))), t.headers && (s.responseHeaders = t.headers), e && "ETIMEDOUT" === e.code && (s.timedout = !0), e || s.aborted || 200 === t.statusCode || 206 === t.statusCode || 0 === t.statusCode || (e = new Error("XHR Failed with a response of: " + (s && (i || s.responseText)))), n(e, s);
64560      }),
64561          a = s.abort;
64562      return s.abort = function () {
64563        return s.aborted = !0, a.apply(s, arguments);
64564      }, s.uri = t.uri, s.requestTime = Date.now(), s;
64565    };
64566  }
64567
64568  function Rl(e) {
64569    var t = {};
64570    return e.byterange && (t.Range = function (e) {
64571      var t;
64572      return t = e.offset + e.length - 1, "bytes=" + e.offset + "-" + t;
64573    }(e.byterange)), t;
64574  }
64575
64576  function Ul(e, t) {
64577    var i = e.toString(16);
64578    return "00".substring(0, 2 - i.length) + i + (t % 2 ? " " : "");
64579  }
64580
64581  function Ml(e) {
64582    return 32 <= e && e < 126 ? String.fromCharCode(e) : ".";
64583  }
64584
64585  function Bl(i) {
64586    var n = {};
64587    return Object.keys(i).forEach(function (e) {
64588      var t = i[e];
64589      ArrayBuffer.isView(t) ? n[e] = {
64590        bytes: t.buffer,
64591        byteOffset: t.byteOffset,
64592        byteLength: t.byteLength
64593      } : n[e] = t;
64594    }), n;
64595  }
64596
64597  function jl(e) {
64598    var t = e.byterange || {
64599      length: 1 / 0,
64600      offset: 0
64601    };
64602    return [t.length, t.offset, e.resolvedUri].join(",");
64603  }
64604
64605  function Fl(e) {
64606    return e.resolvedUri;
64607  }
64608
64609  function Hl(e) {
64610    for (var t = Array.prototype.slice.call(e), i = "", n = 0; n < t.length / 16; n++) {
64611      i += t.slice(16 * n, 16 * n + 16).map(Ul).join("") + " " + t.slice(16 * n, 16 * n + 16).map(Ml).join("") + "\n";
64612    }
64613
64614    return i;
64615  }
64616
64617  function Vl(e) {
64618    var t = e.playlist,
64619        i = e.time,
64620        n = void 0 === i ? void 0 : i,
64621        r = e.callback;
64622    if (!r) throw new Error("getProgramTime: callback must be provided");
64623    if (!t || void 0 === n) return r({
64624      message: "getProgramTime: playlist and time must be provided"
64625    });
64626
64627    var s = function (e, t) {
64628      if (!t || !t.segments || 0 === t.segments.length) return null;
64629
64630      for (var i = 0, n = void 0, r = 0; r < t.segments.length && !(e <= (i = (n = t.segments[r]).videoTimingInfo ? n.videoTimingInfo.transmuxedPresentationEnd : i + n.duration)); r++) {
64631        ;
64632      }
64633
64634      var s = t.segments[t.segments.length - 1];
64635      if (s.videoTimingInfo && s.videoTimingInfo.transmuxedPresentationEnd < e) return null;
64636
64637      if (i < e) {
64638        if (e > i + .25 * s.duration) return null;
64639        n = s;
64640      }
64641
64642      return {
64643        segment: n,
64644        estimatedStart: n.videoTimingInfo ? n.videoTimingInfo.transmuxedPresentationStart : i - n.duration,
64645        type: n.videoTimingInfo ? "accurate" : "estimate"
64646      };
64647    }(n, t);
64648
64649    if (!s) return r({
64650      message: "valid programTime was not found"
64651    });
64652    if ("estimate" === s.type) return r({
64653      message: "Accurate programTime could not be determined. Please seek to e.seekTime and try again",
64654      seekTime: s.estimatedStart
64655    });
64656
64657    var a = {
64658      mediaSeconds: n
64659    },
64660        o = function (e, t) {
64661      if (!t.dateTimeObject) return null;
64662      var i = t.videoTimingInfo.transmuxerPrependedSeconds,
64663          n = e - (t.videoTimingInfo.transmuxedPresentationStart + i);
64664      return new Date(t.dateTimeObject.getTime() + 1e3 * n);
64665    }(n, s.segment);
64666
64667    return o && (a.programDateTime = o.toISOString()), r(null, a);
64668  }
64669
64670  function ql(e) {
64671    var t = e.programTime,
64672        i = e.playlist,
64673        n = e.retryCount,
64674        r = void 0 === n ? 2 : n,
64675        s = e.seekTo,
64676        a = e.pauseAfterSeek,
64677        o = void 0 === a || a,
64678        u = e.tech,
64679        l = e.callback;
64680    if (!l) throw new Error("seekToProgramTime: callback must be provided");
64681    if ("undefined" == typeof t || !i || !s) return l({
64682      message: "seekToProgramTime: programTime, seekTo and playlist must be provided"
64683    });
64684    if (!i.endList && !u.hasStarted_) return l({
64685      message: "player must be playing a live stream to start buffering"
64686    });
64687    if (!function (e) {
64688      if (!e.segments || 0 === e.segments.length) return !1;
64689
64690      for (var t = 0; t < e.segments.length; t++) {
64691        if (!e.segments[t].dateTimeObject) return !1;
64692      }
64693
64694      return !0;
64695    }(i)) return l({
64696      message: "programDateTime tags must be provided in the manifest " + i.resolvedUri
64697    });
64698
64699    var c = function (e, t) {
64700      var i = void 0;
64701
64702      try {
64703        i = new Date(e);
64704      } catch (e) {
64705        return null;
64706      }
64707
64708      if (!t || !t.segments || 0 === t.segments.length) return null;
64709      var n = t.segments[0];
64710      if (i < n.dateTimeObject) return null;
64711
64712      for (var r = 0; r < t.segments.length - 1; r++) {
64713        if (n = t.segments[r], i < t.segments[r + 1].dateTimeObject) break;
64714      }
64715
64716      var s = t.segments[t.segments.length - 1],
64717          a = s.dateTimeObject,
64718          o = s.videoTimingInfo ? function (e) {
64719        return e.transmuxedPresentationEnd - e.transmuxedPresentationStart - e.transmuxerPrependedSeconds;
64720      }(s.videoTimingInfo) : s.duration + .25 * s.duration;
64721      return new Date(a.getTime() + 1e3 * o) < i ? null : (a < i && (n = s), {
64722        segment: n,
64723        estimatedStart: n.videoTimingInfo ? n.videoTimingInfo.transmuxedPresentationStart : tc.duration(t, t.mediaSequence + t.segments.indexOf(n)),
64724        type: n.videoTimingInfo ? "accurate" : "estimate"
64725      });
64726    }(t, i);
64727
64728    if (!c) return l({
64729      message: t + " was not found in the stream"
64730    });
64731
64732    var h = c.segment,
64733        d = function (e, t) {
64734      var i = void 0,
64735          n = void 0;
64736
64737      try {
64738        i = new Date(e), n = new Date(t);
64739      } catch (e) {}
64740
64741      var r = i.getTime();
64742      return (n.getTime() - r) / 1e3;
64743    }(h.dateTimeObject, t);
64744
64745    if ("estimate" === c.type) return 0 === r ? l({
64746      message: t + " is not buffered yet. Try again"
64747    }) : (s(c.estimatedStart + d), void u.one("seeked", function () {
64748      ql({
64749        programTime: t,
64750        playlist: i,
64751        retryCount: r - 1,
64752        seekTo: s,
64753        pauseAfterSeek: o,
64754        tech: u,
64755        callback: l
64756      });
64757    }));
64758    var p = h.start + d;
64759    u.one("seeked", function () {
64760      return l(null, u.currentTime());
64761    }), o && u.pause(), s(p);
64762  }
64763
64764  function Wl(e, t) {
64765    var i = [],
64766        n = void 0;
64767    if (e && e.length) for (n = 0; n < e.length; n++) {
64768      t(e.start(n), e.end(n)) && i.push([e.start(n), e.end(n)]);
64769    }
64770    return as.createTimeRanges(i);
64771  }
64772
64773  function zl(e, i) {
64774    return Wl(e, function (e, t) {
64775      return e - .1 <= i && i <= t + .1;
64776    });
64777  }
64778
64779  function Gl(e, t) {
64780    return Wl(e, function (e) {
64781      return t <= e - 1 / 30;
64782    });
64783  }
64784
64785  function Xl(e) {
64786    var t = [];
64787    if (!e || !e.length) return "";
64788
64789    for (var i = 0; i < e.length; i++) {
64790      t.push(e.start(i) + " => " + e.end(i));
64791    }
64792
64793    return t.join(", ");
64794  }
64795
64796  function Kl(e) {
64797    for (var t = [], i = 0; i < e.length; i++) {
64798      t.push({
64799        start: e.start(i),
64800        end: e.end(i)
64801      });
64802    }
64803
64804    return t;
64805  }
64806
64807  function Yl(e, t, i) {
64808    var n = void 0,
64809        r = void 0;
64810    if (i && i.cues) for (n = i.cues.length; n--;) {
64811      (r = i.cues[n]).startTime <= t && r.endTime >= e && i.removeCue(r);
64812    }
64813  }
64814
64815  function $l(e) {
64816    return isNaN(e) || Math.abs(e) === 1 / 0 ? Number.MAX_VALUE : e;
64817  }
64818
64819  function Ql(e, t, i) {
64820    var n = y.WebKitDataCue || y.VTTCue;
64821
64822    if (t && t.forEach(function (e) {
64823      var t = e.stream;
64824      this.inbandTextTracks_[t].addCue(new n(e.startTime + this.timestampOffset, e.endTime + this.timestampOffset, e.text));
64825    }, e), i) {
64826      var r = $l(e.mediaSource_.duration);
64827
64828      if (i.forEach(function (e) {
64829        var i = e.cueTime + this.timestampOffset;
64830        !("number" != typeof i || y.isNaN(i) || i < 0) && i < 1 / 0 && e.frames.forEach(function (e) {
64831          var t = new n(i, i, e.value || e.url || e.data || "");
64832          t.frame = e, t.value = e, function (e) {
64833            Object.defineProperties(e.frame, {
64834              id: {
64835                get: function get() {
64836                  return as.log.warn("cue.frame.id is deprecated. Use cue.value.key instead."), e.value.key;
64837                }
64838              },
64839              value: {
64840                get: function get() {
64841                  return as.log.warn("cue.frame.value is deprecated. Use cue.value.data instead."), e.value.data;
64842                }
64843              },
64844              privateData: {
64845                get: function get() {
64846                  return as.log.warn("cue.frame.privateData is deprecated. Use cue.value.data instead."), e.value.data;
64847                }
64848              }
64849            });
64850          }(t), this.metadataTrack_.addCue(t);
64851        }, this);
64852      }, e), e.metadataTrack_ && e.metadataTrack_.cues && e.metadataTrack_.cues.length) {
64853        for (var s = e.metadataTrack_.cues, a = [], o = 0; o < s.length; o++) {
64854          s[o] && a.push(s[o]);
64855        }
64856
64857        var u = a.reduce(function (e, t) {
64858          var i = e[t.startTime] || [];
64859          return i.push(t), e[t.startTime] = i, e;
64860        }, {}),
64861            l = Object.keys(u).sort(function (e, t) {
64862          return Number(e) - Number(t);
64863        });
64864        l.forEach(function (e, t) {
64865          var i = u[e],
64866              n = Number(l[t + 1]) || r;
64867          i.forEach(function (e) {
64868            e.endTime = n;
64869          });
64870        });
64871      }
64872    }
64873  }
64874
64875  var Jl = as.createTimeRange,
64876      Zl = Al.bind(null, 1),
64877      ec = Al.bind(null, -1),
64878      tc = {
64879    duration: kl,
64880    seekable: function seekable(e, t, i) {
64881      var n = t || 0,
64882          r = El(e, t, !0, i);
64883      return null === r ? Jl() : Jl(n, r);
64884    },
64885    safeLiveIndex: wl,
64886    getMediaInfoForTime: function getMediaInfoForTime(e, t, i, n) {
64887      var r = void 0,
64888          s = void 0,
64889          a = e.segments.length,
64890          o = t - n;
64891
64892      if (o < 0) {
64893        if (0 < i) for (r = i - 1; 0 <= r; r--) {
64894          if (s = e.segments[r], 0 < (o += ec(s.duration))) return {
64895            mediaIndex: r,
64896            startTime: n - Cl(e, i, r)
64897          };
64898        }
64899        return {
64900          mediaIndex: 0,
64901          startTime: t
64902        };
64903      }
64904
64905      if (i < 0) {
64906        for (r = i; r < 0; r++) {
64907          if ((o -= e.targetDuration) < 0) return {
64908            mediaIndex: 0,
64909            startTime: t
64910          };
64911        }
64912
64913        i = 0;
64914      }
64915
64916      for (r = i; r < a; r++) {
64917        if (s = e.segments[r], (o -= Zl(s.duration)) < 0) return {
64918          mediaIndex: r,
64919          startTime: n + Cl(e, i, r)
64920        };
64921      }
64922
64923      return {
64924        mediaIndex: a - 1,
64925        startTime: t
64926      };
64927    },
64928    isEnabled: Ll,
64929    isDisabled: function isDisabled(e) {
64930      return e.disabled;
64931    },
64932    isBlacklisted: Il,
64933    isIncompatible: Pl,
64934    playlistEnd: El,
64935    isAes: function isAes(e) {
64936      for (var t = 0; t < e.segments.length; t++) {
64937        if (e.segments[t].key) return !0;
64938      }
64939
64940      return !1;
64941    },
64942    isFmp4: function isFmp4(e) {
64943      for (var t = 0; t < e.segments.length; t++) {
64944        if (e.segments[t].map) return !0;
64945      }
64946
64947      return !1;
64948    },
64949    hasAttribute: Ol,
64950    estimateSegmentRequestTime: function estimateSegmentRequestTime(e, t, i, n) {
64951      var r = 3 < arguments.length && void 0 !== n ? n : 0;
64952      return Ol("BANDWIDTH", i) ? (e * i.attributes.BANDWIDTH - 8 * r) / t : NaN;
64953    },
64954    isLowestEnabledRendition: Dl
64955  },
64956      ic = as.xhr,
64957      nc = as.mergeOptions,
64958      rc = Object.freeze({
64959    createTransferableMessage: Bl,
64960    initSegmentId: jl,
64961    segmentKeyId: Fl,
64962    hexDump: Hl,
64963    tagDump: function tagDump(e) {
64964      var t = e.bytes;
64965      return Hl(t);
64966    },
64967    textRanges: function textRanges(e) {
64968      var t,
64969          i,
64970          n = "",
64971          r = void 0;
64972
64973      for (r = 0; r < e.length; r++) {
64974        n += (i = r, (t = e).start(i) + "-" + t.end(i) + " ");
64975      }
64976
64977      return n;
64978    }
64979  }),
64980      sc = "undefined" != typeof window ? window : {},
64981      ac = "undefined" == typeof Symbol ? "__target" : Symbol(),
64982      oc = "application/javascript",
64983      uc = sc.BlobBuilder || sc.WebKitBlobBuilder || sc.MozBlobBuilder || sc.MSBlobBuilder,
64984      lc = sc.URL || sc.webkitURL || lc && lc.msURL,
64985      cc = sc.Worker;
64986
64987  function hc(r, s) {
64988    return function (e) {
64989      var t = this;
64990      if (!s) return new cc(r);
64991
64992      if (cc && !e) {
64993        var i = mc(s.toString().replace(/^function.+?{/, "").slice(0, -1));
64994        return this[ac] = new cc(i), function (e, t) {
64995          if (!e || !t) return;
64996          var i = e.terminate;
64997          e.objURL = t, e.terminate = function () {
64998            e.objURL && lc.revokeObjectURL(e.objURL), i.call(e);
64999          };
65000        }(this[ac], i), this[ac];
65001      }
65002
65003      var n = {
65004        postMessage: function postMessage(e) {
65005          t.onmessage && setTimeout(function () {
65006            t.onmessage({
65007              data: e,
65008              target: n
65009            });
65010          });
65011        }
65012      };
65013      s.call(n), this.postMessage = function (e) {
65014        setTimeout(function () {
65015          n.onmessage({
65016            data: e,
65017            target: t
65018          });
65019        });
65020      }, this.isThisThread = !0;
65021    };
65022  }
65023
65024  if (cc) {
65025    var dc,
65026        pc = mc("self.onmessage = function () {}"),
65027        fc = new Uint8Array(1);
65028
65029    try {
65030      (dc = new cc(pc)).postMessage(fc, [fc.buffer]);
65031    } catch (e) {
65032      cc = null;
65033    } finally {
65034      lc.revokeObjectURL(pc), dc && dc.terminate();
65035    }
65036  }
65037
65038  function mc(t) {
65039    try {
65040      return lc.createObjectURL(new Blob([t], {
65041        type: oc
65042      }));
65043    } catch (e) {
65044      var i = new uc();
65045      return i.append(t), lc.createObjectURL(i.getBlob(type));
65046    }
65047  }
65048
65049  function gc(e) {
65050    return e.map(function (e) {
65051      return e.replace(/avc1\.(\d+)\.(\d+)/i, function (e, t, i) {
65052        return "avc1." + ("00" + Number(t).toString(16)).slice(-2) + "00" + ("00" + Number(i).toString(16)).slice(-2);
65053      });
65054    });
65055  }
65056
65057  function vc(e) {
65058    var t,
65059        i = 0 < arguments.length && void 0 !== e ? e : "",
65060        n = {
65061      codecCount: 0
65062    };
65063    return n.codecCount = i.split(",").length, n.codecCount = n.codecCount || 2, (t = /(^|\s|,)+(avc[13])([^ ,]*)/i.exec(i)) && (n.videoCodec = t[2], n.videoObjectTypeIndicator = t[3]), n.audioProfile = /(^|\s|,)+mp4a.[0-9A-Fa-f]+\.([0-9A-Fa-f]+)/i.exec(i), n.audioProfile = n.audioProfile && n.audioProfile[2], n;
65064  }
65065
65066  function yc(e, t, i) {
65067    return e + "/" + t + '; codecs="' + i.filter(function (e) {
65068      return !!e;
65069    }).join(", ") + '"';
65070  }
65071
65072  function _c(e, t) {
65073    var i = function (e) {
65074      return e.segments && e.segments.length && e.segments[0].map ? "mp4" : "mp2t";
65075    }(t),
65076        n = function (e) {
65077      var t = e.attributes || {};
65078      return t.CODECS ? vc(t.CODECS) : Cc;
65079    }(t),
65080        r = t.attributes || {},
65081        s = !0,
65082        a = !1;
65083
65084    if (!t) return [];
65085
65086    if (e.mediaGroups.AUDIO && r.AUDIO) {
65087      var o = e.mediaGroups.AUDIO[r.AUDIO];
65088      if (o) for (var u in s = !(a = !0), o) {
65089        if (!o[u].uri && !o[u].playlists) {
65090          s = !0;
65091          break;
65092        }
65093      }
65094    }
65095
65096    a && !n.audioProfile && (s || (n.audioProfile = function (e, t) {
65097      if (!e.mediaGroups.AUDIO || !t) return null;
65098      var i = e.mediaGroups.AUDIO[t];
65099      if (!i) return null;
65100
65101      for (var n in i) {
65102        var r = i[n];
65103        if (r["default"] && r.playlists) return vc(r.playlists[0].attributes.CODECS).audioProfile;
65104      }
65105
65106      return null;
65107    }(e, r.AUDIO)), n.audioProfile || (as.log.warn("Multiple audio tracks present but no audio codec string is specified. Attempting to use the default audio codec (mp4a.40.2)"), n.audioProfile = Cc.audioProfile));
65108    var l = {};
65109    n.videoCodec && (l.video = "" + n.videoCodec + n.videoObjectTypeIndicator), n.audioProfile && (l.audio = "mp4a.40." + n.audioProfile);
65110    var c = yc("audio", i, [l.audio]),
65111        h = yc("video", i, [l.video]),
65112        d = yc("video", i, [l.video, l.audio]);
65113    return a ? !s && l.video ? [h, c] : s || l.video ? [d, c] : [c, c] : l.video ? [d] : [c];
65114  }
65115
65116  function bc(e) {
65117    var r = {
65118      type: "",
65119      parameters: {}
65120    },
65121        t = e.trim().split(";");
65122    return r.type = t.shift().trim(), t.forEach(function (e) {
65123      var t = e.trim().split("=");
65124
65125      if (1 < t.length) {
65126        var i = t[0].replace(/"/g, "").trim(),
65127            n = t[1].replace(/"/g, "").trim();
65128        r.parameters[i] = n;
65129      }
65130    }), r;
65131  }
65132
65133  function Tc(e) {
65134    return /mp4a\.\d+.\d+/i.test(e);
65135  }
65136
65137  function Sc(e) {
65138    return /avc1\.[\da-f]+/i.test(e);
65139  }
65140
65141  var kc = new hc("./transmuxer-worker.worker.js", function (e, t) {
65142    var kt = this;
65143    !function () {
65144      function e() {
65145        this.init = function () {
65146          var s = {};
65147          this.on = function (e, t) {
65148            s[e] || (s[e] = []), s[e] = s[e].concat(t);
65149          }, this.off = function (e, t) {
65150            var i;
65151            return !!s[e] && (i = s[e].indexOf(t), s[e] = s[e].slice(), s[e].splice(i, 1), -1 < i);
65152          }, this.trigger = function (e) {
65153            var t, i, n, r;
65154            if (t = s[e]) if (2 === arguments.length) for (n = t.length, i = 0; i < n; ++i) {
65155              t[i].call(this, arguments[1]);
65156            } else {
65157              for (r = [], i = arguments.length, i = 1; i < arguments.length; ++i) {
65158                r.push(arguments[i]);
65159              }
65160
65161              for (n = t.length, i = 0; i < n; ++i) {
65162                t[i].apply(this, r);
65163              }
65164            }
65165          }, this.dispose = function () {
65166            s = {};
65167          };
65168        };
65169      }
65170
65171      e.prototype.pipe = function (t) {
65172        return this.on("data", function (e) {
65173          t.push(e);
65174        }), this.on("done", function (e) {
65175          t.flush(e);
65176        }), this.on("partialdone", function (e) {
65177          t.partialFlush(e);
65178        }), this.on("endedtimeline", function (e) {
65179          t.endTimeline(e);
65180        }), this.on("reset", function (e) {
65181          t.reset(e);
65182        }), t;
65183      }, e.prototype.push = function (e) {
65184        this.trigger("data", e);
65185      }, e.prototype.flush = function (e) {
65186        this.trigger("done", e);
65187      }, e.prototype.partialFlush = function (e) {
65188        this.trigger("partialdone", e);
65189      }, e.prototype.endTimeline = function (e) {
65190        this.trigger("endedtimeline", e);
65191      }, e.prototype.reset = function (e) {
65192        this.trigger("reset", e);
65193      };
65194
65195      var l,
65196          t,
65197          i,
65198          r,
65199          s,
65200          n,
65201          a,
65202          o,
65203          u,
65204          c,
65205          h,
65206          d,
65207          p,
65208          f,
65209          m,
65210          g,
65211          v,
65212          y,
65213          _,
65214          b,
65215          T,
65216          S,
65217          k,
65218          C,
65219          w,
65220          E,
65221          x,
65222          A,
65223          I,
65224          P,
65225          L,
65226          O,
65227          D,
65228          N,
65229          R,
65230          U,
65231          M,
65232          B,
65233          j,
65234          F,
65235          H = e,
65236          V = Math.pow(2, 32) - 1;
65237
65238      !function () {
65239        var e;
65240
65241        if (S = {
65242          avc1: [],
65243          avcC: [],
65244          btrt: [],
65245          dinf: [],
65246          dref: [],
65247          esds: [],
65248          ftyp: [],
65249          hdlr: [],
65250          mdat: [],
65251          mdhd: [],
65252          mdia: [],
65253          mfhd: [],
65254          minf: [],
65255          moof: [],
65256          moov: [],
65257          mp4a: [],
65258          mvex: [],
65259          mvhd: [],
65260          pasp: [],
65261          sdtp: [],
65262          smhd: [],
65263          stbl: [],
65264          stco: [],
65265          stsc: [],
65266          stsd: [],
65267          stsz: [],
65268          stts: [],
65269          styp: [],
65270          tfdt: [],
65271          tfhd: [],
65272          traf: [],
65273          trak: [],
65274          trun: [],
65275          trex: [],
65276          tkhd: [],
65277          vmhd: []
65278        }, "undefined" != typeof Uint8Array) {
65279          for (e in S) {
65280            S.hasOwnProperty(e) && (S[e] = [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)]);
65281          }
65282
65283          k = new Uint8Array(["i".charCodeAt(0), "s".charCodeAt(0), "o".charCodeAt(0), "m".charCodeAt(0)]), w = new Uint8Array(["a".charCodeAt(0), "v".charCodeAt(0), "c".charCodeAt(0), "1".charCodeAt(0)]), C = new Uint8Array([0, 0, 0, 1]), E = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0]), x = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0]), A = {
65284            video: E,
65285            audio: x
65286          }, L = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1]), P = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), O = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), D = O, N = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), R = O, I = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]);
65287        }
65288      }(), l = function l(e) {
65289        var t,
65290            i,
65291            n = [],
65292            r = 0;
65293
65294        for (t = 1; t < arguments.length; t++) {
65295          n.push(arguments[t]);
65296        }
65297
65298        for (t = n.length; t--;) {
65299          r += n[t].byteLength;
65300        }
65301
65302        for (i = new Uint8Array(r + 8), new DataView(i.buffer, i.byteOffset, i.byteLength).setUint32(0, i.byteLength), i.set(e, 4), t = 0, r = 8; t < n.length; t++) {
65303          i.set(n[t], r), r += n[t].byteLength;
65304        }
65305
65306        return i;
65307      }, t = function t() {
65308        return l(S.dinf, l(S.dref, L));
65309      }, i = function i(e) {
65310        return l(S.esds, new Uint8Array([0, 0, 0, 0, 3, 25, 0, 0, 0, 4, 17, 64, 21, 0, 6, 0, 0, 0, 218, 192, 0, 0, 218, 192, 5, 2, e.audioobjecttype << 3 | e.samplingfrequencyindex >>> 1, e.samplingfrequencyindex << 7 | e.channelcount << 3, 6, 1, 2]));
65311      }, m = function m(e) {
65312        return l(S.hdlr, A[e]);
65313      }, f = function f(e) {
65314        var t = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 1, 95, 144, e.duration >>> 24 & 255, e.duration >>> 16 & 255, e.duration >>> 8 & 255, 255 & e.duration, 85, 196, 0, 0]);
65315        return e.samplerate && (t[12] = e.samplerate >>> 24 & 255, t[13] = e.samplerate >>> 16 & 255, t[14] = e.samplerate >>> 8 & 255, t[15] = 255 & e.samplerate), l(S.mdhd, t);
65316      }, p = function p(e) {
65317        return l(S.mdia, f(e), m(e.type), n(e));
65318      }, s = function s(e) {
65319        return l(S.mfhd, new Uint8Array([0, 0, 0, 0, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e]));
65320      }, n = function n(e) {
65321        return l(S.minf, "video" === e.type ? l(S.vmhd, I) : l(S.smhd, P), t(), v(e));
65322      }, a = function a(e, t) {
65323        for (var i = [], n = t.length; n--;) {
65324          i[n] = _(t[n]);
65325        }
65326
65327        return l.apply(null, [S.moof, s(e)].concat(i));
65328      }, o = function o(e) {
65329        for (var t = e.length, i = []; t--;) {
65330          i[t] = h(e[t]);
65331        }
65332
65333        return l.apply(null, [S.moov, c(4294967295)].concat(i).concat(u(e)));
65334      }, u = function u(e) {
65335        for (var t = e.length, i = []; t--;) {
65336          i[t] = b(e[t]);
65337        }
65338
65339        return l.apply(null, [S.mvex].concat(i));
65340      }, c = function c(e) {
65341        var t = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 1, 95, 144, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255]);
65342        return l(S.mvhd, t);
65343      }, g = function g(e) {
65344        var t,
65345            i,
65346            n = e.samples || [],
65347            r = new Uint8Array(4 + n.length);
65348
65349        for (i = 0; i < n.length; i++) {
65350          t = n[i].flags, r[i + 4] = t.dependsOn << 4 | t.isDependedOn << 2 | t.hasRedundancy;
65351        }
65352
65353        return l(S.sdtp, r);
65354      }, v = function v(e) {
65355        return l(S.stbl, y(e), l(S.stts, R), l(S.stsc, D), l(S.stsz, N), l(S.stco, O));
65356      }, y = function y(e) {
65357        return l(S.stsd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]), "video" === e.type ? U(e) : M(e));
65358      }, U = function U(e) {
65359        var t,
65360            i,
65361            n = e.sps || [],
65362            r = e.pps || [],
65363            s = [],
65364            a = [];
65365
65366        for (t = 0; t < n.length; t++) {
65367          s.push((65280 & n[t].byteLength) >>> 8), s.push(255 & n[t].byteLength), s = s.concat(Array.prototype.slice.call(n[t]));
65368        }
65369
65370        for (t = 0; t < r.length; t++) {
65371          a.push((65280 & r[t].byteLength) >>> 8), a.push(255 & r[t].byteLength), a = a.concat(Array.prototype.slice.call(r[t]));
65372        }
65373
65374        if (i = [S.avc1, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (65280 & e.width) >> 8, 255 & e.width, (65280 & e.height) >> 8, 255 & e.height, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 19, 118, 105, 100, 101, 111, 106, 115, 45, 99, 111, 110, 116, 114, 105, 98, 45, 104, 108, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 17, 17]), l(S.avcC, new Uint8Array([1, e.profileIdc, e.profileCompatibility, e.levelIdc, 255].concat([n.length], s, [r.length], a))), l(S.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192]))], e.sarRatio) {
65375          var o = e.sarRatio[0],
65376              u = e.sarRatio[1];
65377          i.push(l(S.pasp, new Uint8Array([(4278190080 & o) >> 24, (16711680 & o) >> 16, (65280 & o) >> 8, 255 & o, (4278190080 & u) >> 24, (16711680 & u) >> 16, (65280 & u) >> 8, 255 & u])));
65378        }
65379
65380        return l.apply(null, i);
65381      }, M = function M(e) {
65382        return l(S.mp4a, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, (65280 & e.channelcount) >> 8, 255 & e.channelcount, (65280 & e.samplesize) >> 8, 255 & e.samplesize, 0, 0, 0, 0, (65280 & e.samplerate) >> 8, 255 & e.samplerate, 0, 0]), i(e));
65383      }, d = function d(e) {
65384        var t = new Uint8Array([0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 0, (4278190080 & e.duration) >> 24, (16711680 & e.duration) >> 16, (65280 & e.duration) >> 8, 255 & e.duration, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, (65280 & e.width) >> 8, 255 & e.width, 0, 0, (65280 & e.height) >> 8, 255 & e.height, 0, 0]);
65385        return l(S.tkhd, t);
65386      }, _ = function _(e) {
65387        var t, i, n, r, s, a;
65388        return t = l(S.tfhd, new Uint8Array([0, 0, 0, 58, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])), s = Math.floor(e.baseMediaDecodeTime / (1 + V)), a = Math.floor(e.baseMediaDecodeTime % (1 + V)), i = l(S.tfdt, new Uint8Array([1, 0, 0, 0, s >>> 24 & 255, s >>> 16 & 255, s >>> 8 & 255, 255 & s, a >>> 24 & 255, a >>> 16 & 255, a >>> 8 & 255, 255 & a])), 92, "audio" === e.type ? (n = T(e, 92), l(S.traf, t, i, n)) : (r = g(e), n = T(e, r.length + 92), l(S.traf, t, i, n, r));
65389      }, h = function h(e) {
65390        return e.duration = e.duration || 4294967295, l(S.trak, d(e), p(e));
65391      }, b = function b(e) {
65392        var t = new Uint8Array([0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]);
65393        return "video" !== e.type && (t[t.length - 1] = 0), l(S.trex, t);
65394      }, F = function F(e, t) {
65395        var i = 0,
65396            n = 0,
65397            r = 0,
65398            s = 0;
65399        return e.length && (void 0 !== e[0].duration && (i = 1), void 0 !== e[0].size && (n = 2), void 0 !== e[0].flags && (r = 4), void 0 !== e[0].compositionTimeOffset && (s = 8)), [0, 0, i | n | r | s, 1, (4278190080 & e.length) >>> 24, (16711680 & e.length) >>> 16, (65280 & e.length) >>> 8, 255 & e.length, (4278190080 & t) >>> 24, (16711680 & t) >>> 16, (65280 & t) >>> 8, 255 & t];
65400      }, j = function j(e, t) {
65401        var i, n, r, s;
65402
65403        for (t += 20 + 16 * (n = e.samples || []).length, i = F(n, t), s = 0; s < n.length; s++) {
65404          r = n[s], i = i.concat([(4278190080 & r.duration) >>> 24, (16711680 & r.duration) >>> 16, (65280 & r.duration) >>> 8, 255 & r.duration, (4278190080 & r.size) >>> 24, (16711680 & r.size) >>> 16, (65280 & r.size) >>> 8, 255 & r.size, r.flags.isLeading << 2 | r.flags.dependsOn, r.flags.isDependedOn << 6 | r.flags.hasRedundancy << 4 | r.flags.paddingValue << 1 | r.flags.isNonSyncSample, 61440 & r.flags.degradationPriority, 15 & r.flags.degradationPriority, (4278190080 & r.compositionTimeOffset) >>> 24, (16711680 & r.compositionTimeOffset) >>> 16, (65280 & r.compositionTimeOffset) >>> 8, 255 & r.compositionTimeOffset]);
65405        }
65406
65407        return l(S.trun, new Uint8Array(i));
65408      }, B = function B(e, t) {
65409        var i, n, r, s;
65410
65411        for (t += 20 + 8 * (n = e.samples || []).length, i = F(n, t), s = 0; s < n.length; s++) {
65412          r = n[s], i = i.concat([(4278190080 & r.duration) >>> 24, (16711680 & r.duration) >>> 16, (65280 & r.duration) >>> 8, 255 & r.duration, (4278190080 & r.size) >>> 24, (16711680 & r.size) >>> 16, (65280 & r.size) >>> 8, 255 & r.size]);
65413        }
65414
65415        return l(S.trun, new Uint8Array(i));
65416      }, T = function T(e, t) {
65417        return "audio" === e.type ? B(e, t) : j(e, t);
65418      };
65419
65420      r = function r() {
65421        return l(S.ftyp, k, C, k, w);
65422      };
65423
65424      function q(e, t) {
65425        var i = {
65426          size: 0,
65427          flags: {
65428            isLeading: 0,
65429            dependsOn: 1,
65430            isDependedOn: 0,
65431            hasRedundancy: 0,
65432            degradationPriority: 0,
65433            isNonSyncSample: 1
65434          }
65435        };
65436        return i.dataOffset = t, i.compositionTimeOffset = e.pts - e.dts, i.duration = e.duration, i.size = 4 * e.length, i.size += e.byteLength, e.keyFrame && (i.flags.dependsOn = 2, i.flags.isNonSyncSample = 0), i;
65437      }
65438
65439      function W(e) {
65440        for (var t = []; e--;) {
65441          t.push(0);
65442        }
65443
65444        return t;
65445      }
65446
65447      function z() {
65448        z.prototype.init.call(this), this.captionPackets_ = [], this.ccStreams_ = [new Ie(0, 0), new Ie(0, 1), new Ie(1, 0), new Ie(1, 1)], this.reset(), this.ccStreams_.forEach(function (e) {
65449          e.on("data", this.trigger.bind(this, "data")), e.on("partialdone", this.trigger.bind(this, "partialdone")), e.on("done", this.trigger.bind(this, "done"));
65450        }, this);
65451      }
65452
65453      var G,
65454          X,
65455          K,
65456          Y,
65457          $,
65458          Q = function Q(e) {
65459        return l(S.mdat, e);
65460      },
65461          J = a,
65462          Z = function Z(e) {
65463        var t,
65464            i = r(),
65465            n = o(e);
65466        return (t = new Uint8Array(i.byteLength + n.byteLength)).set(i), t.set(n, i.byteLength), t;
65467      },
65468          ee = function ee(e) {
65469        var t,
65470            i,
65471            n = [],
65472            r = [];
65473
65474        for (r.byteLength = 0, r.nalCount = 0, r.duration = 0, t = n.byteLength = 0; t < e.length; t++) {
65475          "access_unit_delimiter_rbsp" === (i = e[t]).nalUnitType ? (n.length && (n.duration = i.dts - n.dts, r.byteLength += n.byteLength, r.nalCount += n.length, r.duration += n.duration, r.push(n)), (n = [i]).byteLength = i.data.byteLength, n.pts = i.pts, n.dts = i.dts) : ("slice_layer_without_partitioning_rbsp_idr" === i.nalUnitType && (n.keyFrame = !0), n.duration = i.dts - n.dts, n.byteLength += i.data.byteLength, n.push(i));
65476        }
65477
65478        return r.length && (!n.duration || n.duration <= 0) && (n.duration = r[r.length - 1].duration), r.byteLength += n.byteLength, r.nalCount += n.length, r.duration += n.duration, r.push(n), r;
65479      },
65480          te = function te(e) {
65481        var t,
65482            i,
65483            n = [],
65484            r = [];
65485
65486        for (n.byteLength = 0, n.nalCount = 0, n.duration = 0, n.pts = e[0].pts, n.dts = e[0].dts, r.byteLength = 0, r.nalCount = 0, r.duration = 0, r.pts = e[0].pts, r.dts = e[0].dts, t = 0; t < e.length; t++) {
65487          (i = e[t]).keyFrame ? (n.length && (r.push(n), r.byteLength += n.byteLength, r.nalCount += n.nalCount, r.duration += n.duration), (n = [i]).nalCount = i.length, n.byteLength = i.byteLength, n.pts = i.pts, n.dts = i.dts, n.duration = i.duration) : (n.duration += i.duration, n.nalCount += i.length, n.byteLength += i.byteLength, n.push(i));
65488        }
65489
65490        return r.length && n.duration <= 0 && (n.duration = r[r.length - 1].duration), r.byteLength += n.byteLength, r.nalCount += n.nalCount, r.duration += n.duration, r.push(n), r;
65491      },
65492          ie = function ie(e) {
65493        var t;
65494        return !e[0][0].keyFrame && 1 < e.length && (t = e.shift(), e.byteLength -= t.byteLength, e.nalCount -= t.nalCount, e[0][0].dts = t.dts, e[0][0].pts = t.pts, e[0][0].duration += t.duration), e;
65495      },
65496          ne = function ne(e, t) {
65497        var i,
65498            n,
65499            r,
65500            s,
65501            a,
65502            o = t || 0,
65503            u = [];
65504
65505        for (i = 0; i < e.length; i++) {
65506          for (s = e[i], n = 0; n < s.length; n++) {
65507            a = s[n], o += (r = q(a, o)).size, u.push(r);
65508          }
65509        }
65510
65511        return u;
65512      },
65513          re = function re(e) {
65514        var t,
65515            i,
65516            n,
65517            r,
65518            s,
65519            a,
65520            o = 0,
65521            u = e.byteLength,
65522            l = e.nalCount,
65523            c = new Uint8Array(u + 4 * l),
65524            h = new DataView(c.buffer);
65525
65526        for (t = 0; t < e.length; t++) {
65527          for (r = e[t], i = 0; i < r.length; i++) {
65528            for (s = r[i], n = 0; n < s.length; n++) {
65529              a = s[n], h.setUint32(o, a.data.byteLength), o += 4, c.set(a.data, o), o += a.data.byteLength;
65530            }
65531          }
65532        }
65533
65534        return c;
65535      },
65536          se = [33, 16, 5, 32, 164, 27],
65537          ae = [33, 65, 108, 84, 1, 2, 4, 8, 168, 2, 4, 8, 17, 191, 252],
65538          oe = {
65539        96e3: [se, [227, 64], W(154), [56]],
65540        88200: [se, [231], W(170), [56]],
65541        64e3: [se, [248, 192], W(240), [56]],
65542        48e3: [se, [255, 192], W(268), [55, 148, 128], W(54), [112]],
65543        44100: [se, [255, 192], W(268), [55, 163, 128], W(84), [112]],
65544        32e3: [se, [255, 192], W(268), [55, 234], W(226), [112]],
65545        24e3: [se, [255, 192], W(268), [55, 255, 128], W(268), [111, 112], W(126), [224]],
65546        16e3: [se, [255, 192], W(268), [55, 255, 128], W(268), [111, 255], W(269), [223, 108], W(195), [1, 192]],
65547        12e3: [ae, W(268), [3, 127, 248], W(268), [6, 255, 240], W(268), [13, 255, 224], W(268), [27, 253, 128], W(259), [56]],
65548        11025: [ae, W(268), [3, 127, 248], W(268), [6, 255, 240], W(268), [13, 255, 224], W(268), [27, 255, 192], W(268), [55, 175, 128], W(108), [112]],
65549        8e3: [ae, W(268), [3, 121, 16], W(47), [7]]
65550      },
65551          ue = (G = oe, Object.keys(G).reduce(function (e, t) {
65552        return e[t] = new Uint8Array(G[t].reduce(function (e, t) {
65553          return e.concat(t);
65554        }, [])), e;
65555      }, {})),
65556          le = 9e4,
65557          ce = (X = function X(e) {
65558        return 9e4 * e;
65559      }, K = function K(e, t) {
65560        return e * t;
65561      }, Y = function Y(e) {
65562        return e / 9e4;
65563      }, $ = function $(e, t) {
65564        return e / t;
65565      }, function (e, t) {
65566        return X($(e, t));
65567      }),
65568          he = function he(e, t) {
65569        return K(Y(e), t);
65570      },
65571          de = function de(e, t, i) {
65572        return Y(i ? e : e - t);
65573      },
65574          pe = function pe(e, t, i, n) {
65575        var r,
65576            s,
65577            a,
65578            o,
65579            u,
65580            l = 0,
65581            c = 0,
65582            h = 0;
65583
65584        if (t.length && (r = ce(e.baseMediaDecodeTime, e.samplerate), s = Math.ceil(le / (e.samplerate / 1024)), i && n && (l = r - Math.max(i, n), h = (c = Math.floor(l / s)) * s), !(c < 1 || le / 2 < h))) {
65585          for (a = (a = ue[e.samplerate]) || t[0].data, o = 0; o < c; o++) {
65586            u = t[0], t.splice(0, 0, {
65587              data: a,
65588              dts: u.dts - s,
65589              pts: u.pts - s
65590            });
65591          }
65592
65593          e.baseMediaDecodeTime -= Math.floor(he(h, e.samplerate));
65594        }
65595      },
65596          fe = function fe(e, t, i) {
65597        return t.minSegmentDts >= i ? e : (t.minSegmentDts = 1 / 0, e.filter(function (e) {
65598          return e.dts >= i && (t.minSegmentDts = Math.min(t.minSegmentDts, e.dts), t.minSegmentPts = t.minSegmentDts, !0);
65599        }));
65600      },
65601          me = function me(e) {
65602        var t,
65603            i,
65604            n = [];
65605
65606        for (t = 0; t < e.length; t++) {
65607          i = e[t], n.push({
65608            size: i.data.byteLength,
65609            duration: 1024
65610          });
65611        }
65612
65613        return n;
65614      },
65615          ge = function ge(e) {
65616        var t,
65617            i,
65618            n = 0,
65619            r = new Uint8Array(function (e) {
65620          var t,
65621              i = 0;
65622
65623          for (t = 0; t < e.length; t++) {
65624            i += e[t].data.byteLength;
65625          }
65626
65627          return i;
65628        }(e));
65629
65630        for (t = 0; t < e.length; t++) {
65631          i = e[t], r.set(i.data, n), n += i.data.byteLength;
65632        }
65633
65634        return r;
65635      },
65636          ve = le,
65637          ye = function ye(e) {
65638        delete e.minSegmentDts, delete e.maxSegmentDts, delete e.minSegmentPts, delete e.maxSegmentPts;
65639      },
65640          _e = function _e(e, t) {
65641        var i,
65642            n = e.minSegmentDts;
65643        return t || (n -= e.timelineStartInfo.dts), i = e.timelineStartInfo.baseMediaDecodeTime, i += n, i = Math.max(0, i), "audio" === e.type && (i *= e.samplerate / ve, i = Math.floor(i)), i;
65644      },
65645          be = function be(e, t) {
65646        "number" == typeof t.pts && (void 0 === e.timelineStartInfo.pts && (e.timelineStartInfo.pts = t.pts), void 0 === e.minSegmentPts ? e.minSegmentPts = t.pts : e.minSegmentPts = Math.min(e.minSegmentPts, t.pts), void 0 === e.maxSegmentPts ? e.maxSegmentPts = t.pts : e.maxSegmentPts = Math.max(e.maxSegmentPts, t.pts)), "number" == typeof t.dts && (void 0 === e.timelineStartInfo.dts && (e.timelineStartInfo.dts = t.dts), void 0 === e.minSegmentDts ? e.minSegmentDts = t.dts : e.minSegmentDts = Math.min(e.minSegmentDts, t.dts), void 0 === e.maxSegmentDts ? e.maxSegmentDts = t.dts : e.maxSegmentDts = Math.max(e.maxSegmentDts, t.dts));
65647      },
65648          Te = function Te(e) {
65649        for (var t = 0, i = {
65650          payloadType: -1,
65651          payloadSize: 0
65652        }, n = 0, r = 0; t < e.byteLength && 128 !== e[t];) {
65653          for (; 255 === e[t];) {
65654            n += 255, t++;
65655          }
65656
65657          for (n += e[t++]; 255 === e[t];) {
65658            r += 255, t++;
65659          }
65660
65661          if (r += e[t++], !i.payload && 4 === n) {
65662            i.payloadType = n, i.payloadSize = r, i.payload = e.subarray(t, t + r);
65663            break;
65664          }
65665
65666          t += r, r = n = 0;
65667        }
65668
65669        return i;
65670      },
65671          Se = function Se(e) {
65672        return 181 !== e.payload[0] ? null : 49 != (e.payload[1] << 8 | e.payload[2]) ? null : "GA94" !== String.fromCharCode(e.payload[3], e.payload[4], e.payload[5], e.payload[6]) ? null : 3 !== e.payload[7] ? null : e.payload.subarray(8, e.payload.length - 1);
65673      },
65674          ke = function ke(e, t) {
65675        var i,
65676            n,
65677            r,
65678            s,
65679            a = [];
65680        if (!(64 & t[0])) return a;
65681
65682        for (n = 31 & t[0], i = 0; i < n; i++) {
65683          s = {
65684            type: 3 & t[2 + (r = 3 * i)],
65685            pts: e
65686          }, 4 & t[2 + r] && (s.ccData = t[3 + r] << 8 | t[4 + r], a.push(s));
65687        }
65688
65689        return a;
65690      },
65691          Ce = 4;
65692
65693      (z.prototype = new H()).push = function (e) {
65694        var t, i, n;
65695        if ("sei_rbsp" === e.nalUnitType && (t = Te(e.escapedRBSP)).payloadType === Ce && (i = Se(t))) if (e.dts < this.latestDts_) this.ignoreNextEqualDts_ = !0;else {
65696          if (e.dts === this.latestDts_ && this.ignoreNextEqualDts_) return this.numSameDts_--, void (this.numSameDts_ || (this.ignoreNextEqualDts_ = !1));
65697          n = ke(e.pts, i), this.captionPackets_ = this.captionPackets_.concat(n), this.latestDts_ !== e.dts && (this.numSameDts_ = 0), this.numSameDts_++, this.latestDts_ = e.dts;
65698        }
65699      }, z.prototype.flushCCStreams = function (t) {
65700        this.ccStreams_.forEach(function (e) {
65701          return "flush" === t ? e.flush() : e.partialFlush();
65702        }, this);
65703      }, z.prototype.flushStream = function (e) {
65704        this.captionPackets_.length && (this.captionPackets_.forEach(function (e, t) {
65705          e.presortIndex = t;
65706        }), this.captionPackets_.sort(function (e, t) {
65707          return e.pts === t.pts ? e.presortIndex - t.presortIndex : e.pts - t.pts;
65708        }), this.captionPackets_.forEach(function (e) {
65709          e.type < 2 && this.dispatchCea608Packet(e);
65710        }, this), this.captionPackets_.length = 0), this.flushCCStreams(e);
65711      }, z.prototype.flush = function () {
65712        return this.flushStream("flush");
65713      }, z.prototype.partialFlush = function () {
65714        return this.flushStream("partialFlush");
65715      }, z.prototype.reset = function () {
65716        this.latestDts_ = null, this.ignoreNextEqualDts_ = !1, this.numSameDts_ = 0, this.activeCea608Channel_ = [null, null], this.ccStreams_.forEach(function (e) {
65717          e.reset();
65718        });
65719      }, z.prototype.dispatchCea608Packet = function (e) {
65720        this.setsTextOrXDSActive(e) ? this.activeCea608Channel_[e.type] = null : this.setsChannel1Active(e) ? this.activeCea608Channel_[e.type] = 0 : this.setsChannel2Active(e) && (this.activeCea608Channel_[e.type] = 1), null !== this.activeCea608Channel_[e.type] && this.ccStreams_[(e.type << 1) + this.activeCea608Channel_[e.type]].push(e);
65721      }, z.prototype.setsChannel1Active = function (e) {
65722        return 4096 == (30720 & e.ccData);
65723      }, z.prototype.setsChannel2Active = function (e) {
65724        return 6144 == (30720 & e.ccData);
65725      }, z.prototype.setsTextOrXDSActive = function (e) {
65726        return 256 == (28928 & e.ccData) || 4138 == (30974 & e.ccData) || 6186 == (30974 & e.ccData);
65727      };
65728
65729      function we(e) {
65730        return null === e ? "" : (e = xe[e] || e, String.fromCharCode(e));
65731      }
65732
65733      function Ee() {
65734        for (var e = [], t = 15; t--;) {
65735          e.push("");
65736        }
65737
65738        return e;
65739      }
65740
65741      var xe = {
65742        42: 225,
65743        92: 233,
65744        94: 237,
65745        95: 243,
65746        96: 250,
65747        123: 231,
65748        124: 247,
65749        125: 209,
65750        126: 241,
65751        127: 9608,
65752        304: 174,
65753        305: 176,
65754        306: 189,
65755        307: 191,
65756        308: 8482,
65757        309: 162,
65758        310: 163,
65759        311: 9834,
65760        312: 224,
65761        313: 160,
65762        314: 232,
65763        315: 226,
65764        316: 234,
65765        317: 238,
65766        318: 244,
65767        319: 251,
65768        544: 193,
65769        545: 201,
65770        546: 211,
65771        547: 218,
65772        548: 220,
65773        549: 252,
65774        550: 8216,
65775        551: 161,
65776        552: 42,
65777        553: 39,
65778        554: 8212,
65779        555: 169,
65780        556: 8480,
65781        557: 8226,
65782        558: 8220,
65783        559: 8221,
65784        560: 192,
65785        561: 194,
65786        562: 199,
65787        563: 200,
65788        564: 202,
65789        565: 203,
65790        566: 235,
65791        567: 206,
65792        568: 207,
65793        569: 239,
65794        570: 212,
65795        571: 217,
65796        572: 249,
65797        573: 219,
65798        574: 171,
65799        575: 187,
65800        800: 195,
65801        801: 227,
65802        802: 205,
65803        803: 204,
65804        804: 236,
65805        805: 210,
65806        806: 242,
65807        807: 213,
65808        808: 245,
65809        809: 123,
65810        810: 125,
65811        811: 92,
65812        812: 94,
65813        813: 95,
65814        814: 124,
65815        815: 126,
65816        816: 196,
65817        817: 228,
65818        818: 214,
65819        819: 246,
65820        820: 223,
65821        821: 165,
65822        822: 164,
65823        823: 9474,
65824        824: 197,
65825        825: 229,
65826        826: 216,
65827        827: 248,
65828        828: 9484,
65829        829: 9488,
65830        830: 9492,
65831        831: 9496
65832      },
65833          Ae = [4352, 4384, 4608, 4640, 5376, 5408, 5632, 5664, 5888, 5920, 4096, 4864, 4896, 5120, 5152],
65834          Ie = function e(t, i) {
65835        e.prototype.init.call(this), this.field_ = t || 0, this.dataChannel_ = i || 0, this.name_ = "CC" + (1 + (this.field_ << 1 | this.dataChannel_)), this.setConstants(), this.reset(), this.push = function (e) {
65836          var t, i, n, r, s;
65837
65838          if ((t = 32639 & e.ccData) !== this.lastControlCode_) {
65839            if (4096 == (61440 & t) ? this.lastControlCode_ = t : t !== this.PADDING_ && (this.lastControlCode_ = null), n = t >>> 8, r = 255 & t, t !== this.PADDING_) if (t === this.RESUME_CAPTION_LOADING_) this.mode_ = "popOn";else if (t === this.END_OF_CAPTION_) this.mode_ = "popOn", this.clearFormatting(e.pts), this.flushDisplayed(e.pts), i = this.displayed_, this.displayed_ = this.nonDisplayed_, this.nonDisplayed_ = i, this.startPts_ = e.pts;else if (t === this.ROLL_UP_2_ROWS_) this.rollUpRows_ = 2, this.setRollUp(e.pts);else if (t === this.ROLL_UP_3_ROWS_) this.rollUpRows_ = 3, this.setRollUp(e.pts);else if (t === this.ROLL_UP_4_ROWS_) this.rollUpRows_ = 4, this.setRollUp(e.pts);else if (t === this.CARRIAGE_RETURN_) this.clearFormatting(e.pts), this.flushDisplayed(e.pts), this.shiftRowsUp_(), this.startPts_ = e.pts;else if (t === this.BACKSPACE_) "popOn" === this.mode_ ? this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1) : this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1);else if (t === this.ERASE_DISPLAYED_MEMORY_) this.flushDisplayed(e.pts), this.displayed_ = Ee();else if (t === this.ERASE_NON_DISPLAYED_MEMORY_) this.nonDisplayed_ = Ee();else if (t === this.RESUME_DIRECT_CAPTIONING_) "paintOn" !== this.mode_ && (this.flushDisplayed(e.pts), this.displayed_ = Ee()), this.mode_ = "paintOn", this.startPts_ = e.pts;else if (this.isSpecialCharacter(n, r)) s = we((n = (3 & n) << 8) | r), this[this.mode_](e.pts, s), this.column_++;else if (this.isExtCharacter(n, r)) "popOn" === this.mode_ ? this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1) : this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1), s = we((n = (3 & n) << 8) | r), this[this.mode_](e.pts, s), this.column_++;else if (this.isMidRowCode(n, r)) this.clearFormatting(e.pts), this[this.mode_](e.pts, " "), this.column_++, 14 == (14 & r) && this.addFormatting(e.pts, ["i"]), 1 == (1 & r) && this.addFormatting(e.pts, ["u"]);else if (this.isOffsetControlCode(n, r)) this.column_ += 3 & r;else if (this.isPAC(n, r)) {
65840              var a = Ae.indexOf(7968 & t);
65841              "rollUp" === this.mode_ && (a - this.rollUpRows_ + 1 < 0 && (a = this.rollUpRows_ - 1), this.setRollUp(e.pts, a)), a !== this.row_ && (this.clearFormatting(e.pts), this.row_ = a), 1 & r && -1 === this.formatting_.indexOf("u") && this.addFormatting(e.pts, ["u"]), 16 == (16 & t) && (this.column_ = 4 * ((14 & t) >> 1)), this.isColorPAC(r) && 14 == (14 & r) && this.addFormatting(e.pts, ["i"]);
65842            } else this.isNormalChar(n) && (0 === r && (r = null), s = we(n), s += we(r), this[this.mode_](e.pts, s), this.column_ += s.length);
65843          } else this.lastControlCode_ = null;
65844        };
65845      };
65846
65847      Ie.prototype = new H(), Ie.prototype.flushDisplayed = function (e) {
65848        var t = this.displayed_.map(function (e) {
65849          try {
65850            return e.trim();
65851          } catch (e) {
65852            return "";
65853          }
65854        }).join("\n").replace(/^\n+|\n+$/g, "");
65855        t.length && this.trigger("data", {
65856          startPts: this.startPts_,
65857          endPts: e,
65858          text: t,
65859          stream: this.name_
65860        });
65861      }, Ie.prototype.reset = function () {
65862        this.mode_ = "popOn", this.topRow_ = 0, this.startPts_ = 0, this.displayed_ = Ee(), this.nonDisplayed_ = Ee(), this.lastControlCode_ = null, this.column_ = 0, this.row_ = 14, this.rollUpRows_ = 2, this.formatting_ = [];
65863      }, Ie.prototype.setConstants = function () {
65864        0 === this.dataChannel_ ? (this.BASE_ = 16, this.EXT_ = 17, this.CONTROL_ = (20 | this.field_) << 8, this.OFFSET_ = 23) : 1 === this.dataChannel_ && (this.BASE_ = 24, this.EXT_ = 25, this.CONTROL_ = (28 | this.field_) << 8, this.OFFSET_ = 31), this.PADDING_ = 0, this.RESUME_CAPTION_LOADING_ = 32 | this.CONTROL_, this.END_OF_CAPTION_ = 47 | this.CONTROL_, this.ROLL_UP_2_ROWS_ = 37 | this.CONTROL_, this.ROLL_UP_3_ROWS_ = 38 | this.CONTROL_, this.ROLL_UP_4_ROWS_ = 39 | this.CONTROL_, this.CARRIAGE_RETURN_ = 45 | this.CONTROL_, this.RESUME_DIRECT_CAPTIONING_ = 41 | this.CONTROL_, this.BACKSPACE_ = 33 | this.CONTROL_, this.ERASE_DISPLAYED_MEMORY_ = 44 | this.CONTROL_, this.ERASE_NON_DISPLAYED_MEMORY_ = 46 | this.CONTROL_;
65865      }, Ie.prototype.isSpecialCharacter = function (e, t) {
65866        return e === this.EXT_ && 48 <= t && t <= 63;
65867      }, Ie.prototype.isExtCharacter = function (e, t) {
65868        return (e === this.EXT_ + 1 || e === this.EXT_ + 2) && 32 <= t && t <= 63;
65869      }, Ie.prototype.isMidRowCode = function (e, t) {
65870        return e === this.EXT_ && 32 <= t && t <= 47;
65871      }, Ie.prototype.isOffsetControlCode = function (e, t) {
65872        return e === this.OFFSET_ && 33 <= t && t <= 35;
65873      }, Ie.prototype.isPAC = function (e, t) {
65874        return e >= this.BASE_ && e < this.BASE_ + 8 && 64 <= t && t <= 127;
65875      }, Ie.prototype.isColorPAC = function (e) {
65876        return 64 <= e && e <= 79 || 96 <= e && e <= 127;
65877      }, Ie.prototype.isNormalChar = function (e) {
65878        return 32 <= e && e <= 127;
65879      }, Ie.prototype.setRollUp = function (e, t) {
65880        if ("rollUp" !== this.mode_ && (this.row_ = 14, this.mode_ = "rollUp", this.flushDisplayed(e), this.nonDisplayed_ = Ee(), this.displayed_ = Ee()), void 0 !== t && t !== this.row_) for (var i = 0; i < this.rollUpRows_; i++) {
65881          this.displayed_[t - i] = this.displayed_[this.row_ - i], this.displayed_[this.row_ - i] = "";
65882        }
65883        void 0 === t && (t = this.row_), this.topRow_ = t - this.rollUpRows_ + 1;
65884      }, Ie.prototype.addFormatting = function (e, t) {
65885        this.formatting_ = this.formatting_.concat(t);
65886        var i = t.reduce(function (e, t) {
65887          return e + "<" + t + ">";
65888        }, "");
65889        this[this.mode_](e, i);
65890      }, Ie.prototype.clearFormatting = function (e) {
65891        if (this.formatting_.length) {
65892          var t = this.formatting_.reverse().reduce(function (e, t) {
65893            return e + "</" + t + ">";
65894          }, "");
65895          this.formatting_ = [], this[this.mode_](e, t);
65896        }
65897      }, Ie.prototype.popOn = function (e, t) {
65898        var i = this.nonDisplayed_[this.row_];
65899        i += t, this.nonDisplayed_[this.row_] = i;
65900      }, Ie.prototype.rollUp = function (e, t) {
65901        var i = this.displayed_[this.row_];
65902        i += t, this.displayed_[this.row_] = i;
65903      }, Ie.prototype.shiftRowsUp_ = function () {
65904        var e;
65905
65906        for (e = 0; e < this.topRow_; e++) {
65907          this.displayed_[e] = "";
65908        }
65909
65910        for (e = this.row_ + 1; e < 15; e++) {
65911          this.displayed_[e] = "";
65912        }
65913
65914        for (e = this.topRow_; e < this.row_; e++) {
65915          this.displayed_[e] = this.displayed_[e + 1];
65916        }
65917
65918        this.displayed_[this.row_] = "";
65919      }, Ie.prototype.paintOn = function (e, t) {
65920        var i = this.displayed_[this.row_];
65921        i += t, this.displayed_[this.row_] = i;
65922      };
65923
65924      function Pe(e, t) {
65925        var i = 1;
65926
65927        for (t < e && (i = -1); 4294967296 < Math.abs(t - e);) {
65928          e += 8589934592 * i;
65929        }
65930
65931        return e;
65932      }
65933
65934      function Le(e) {
65935        var t, i;
65936        Le.prototype.init.call(this), this.type_ = e || "shared", this.push = function (e) {
65937          "shared" !== this.type_ && e.type !== this.type_ || (void 0 === i && (i = e.dts), e.dts = Pe(e.dts, i), e.pts = Pe(e.pts, i), t = e.dts, this.trigger("data", e));
65938        }, this.flush = function () {
65939          i = t, this.trigger("done");
65940        }, this.endTimeline = function () {
65941          this.flush(), this.trigger("endedtimeline");
65942        }, this.discontinuity = function () {
65943          t = i = void 0;
65944        }, this.reset = function () {
65945          this.discontinuity(), this.trigger("reset");
65946        };
65947      }
65948
65949      var Oe = {
65950        CaptionStream: z,
65951        Cea608Stream: Ie
65952      },
65953          De = {
65954        H264_STREAM_TYPE: 27,
65955        ADTS_STREAM_TYPE: 15,
65956        METADATA_STREAM_TYPE: 21
65957      };
65958      Le.prototype = new H();
65959
65960      function Ne(e, t, i) {
65961        var n,
65962            r = "";
65963
65964        for (n = t; n < i; n++) {
65965          r += "%" + ("00" + e[n].toString(16)).slice(-2);
65966        }
65967
65968        return r;
65969      }
65970
65971      function Re(e, t, i) {
65972        return decodeURIComponent(Ne(e, t, i));
65973      }
65974
65975      function Ue(e) {
65976        return e[0] << 21 | e[1] << 14 | e[2] << 7 | e[3];
65977      }
65978
65979      var _Me,
65980          Be = Le,
65981          je = {
65982        TXXX: function TXXX(e) {
65983          var t;
65984
65985          if (3 === e.data[0]) {
65986            for (t = 1; t < e.data.length; t++) {
65987              if (0 === e.data[t]) {
65988                e.description = Re(e.data, 1, t), e.value = Re(e.data, t + 1, e.data.length).replace(/\0*$/, "");
65989                break;
65990              }
65991            }
65992
65993            e.data = e.value;
65994          }
65995        },
65996        WXXX: function WXXX(e) {
65997          var t;
65998          if (3 === e.data[0]) for (t = 1; t < e.data.length; t++) {
65999            if (0 === e.data[t]) {
66000              e.description = Re(e.data, 1, t), e.url = Re(e.data, t + 1, e.data.length);
66001              break;
66002            }
66003          }
66004        },
66005        PRIV: function PRIV(e) {
66006          var t, i;
66007
66008          for (t = 0; t < e.data.length; t++) {
66009            if (0 === e.data[t]) {
66010              e.owner = (i = e.data, unescape(Ne(i, 0, t)));
66011              break;
66012            }
66013          }
66014
66015          e.privateData = e.data.subarray(t + 1), e.data = e.privateData;
66016        }
66017      };
66018
66019      (_Me = function Me(e) {
66020        var t,
66021            u = {
66022          debug: !(!e || !e.debug),
66023          descriptor: e && e.descriptor
66024        },
66025            l = 0,
66026            c = [],
66027            h = 0;
66028        if (_Me.prototype.init.call(this), this.dispatchType = De.METADATA_STREAM_TYPE.toString(16), u.descriptor) for (t = 0; t < u.descriptor.length; t++) {
66029          this.dispatchType += ("00" + u.descriptor[t].toString(16)).slice(-2);
66030        }
66031
66032        this.push = function (e) {
66033          var t, i, n, r, s;
66034          if ("timed-metadata" === e.type) if (e.dataAlignmentIndicator && (h = 0, c.length = 0), 0 === c.length && (e.data.length < 10 || e.data[0] !== "I".charCodeAt(0) || e.data[1] !== "D".charCodeAt(0) || e.data[2] !== "3".charCodeAt(0))) u.debug;else if (c.push(e), h += e.data.byteLength, 1 === c.length && (l = Ue(e.data.subarray(6, 10)), l += 10), !(h < l)) {
66035            for (t = {
66036              data: new Uint8Array(l),
66037              frames: [],
66038              pts: c[0].pts,
66039              dts: c[0].dts
66040            }, s = 0; s < l;) {
66041              t.data.set(c[0].data.subarray(0, l - s), s), s += c[0].data.byteLength, h -= c[0].data.byteLength, c.shift();
66042            }
66043
66044            i = 10, 64 & t.data[5] && (i += 4, i += Ue(t.data.subarray(10, 14)), l -= Ue(t.data.subarray(16, 20)));
66045
66046            do {
66047              if ((n = Ue(t.data.subarray(i + 4, i + 8))) < 1) return;
66048
66049              if ((r = {
66050                id: String.fromCharCode(t.data[i], t.data[i + 1], t.data[i + 2], t.data[i + 3]),
66051                data: t.data.subarray(i + 10, i + n + 10)
66052              }).key = r.id, je[r.id] && (je[r.id](r), "com.apple.streaming.transportStreamTimestamp" === r.owner)) {
66053                var a = r.data,
66054                    o = (1 & a[3]) << 30 | a[4] << 22 | a[5] << 14 | a[6] << 6 | a[7] >>> 2;
66055                o *= 4, o += 3 & a[7], r.timeStamp = o, void 0 === t.pts && void 0 === t.dts && (t.pts = r.timeStamp, t.dts = r.timeStamp), this.trigger("timestamp", r);
66056              }
66057
66058              t.frames.push(r), i += 10, i += n;
66059            } while (i < l);
66060
66061            this.trigger("data", t);
66062          }
66063        };
66064      }).prototype = new H();
66065
66066      var _Fe,
66067          _He,
66068          _Ve,
66069          qe = _Me,
66070          We = Be;
66071
66072      (_Fe = function Fe() {
66073        var r = new Uint8Array(188),
66074            s = 0;
66075        _Fe.prototype.init.call(this), this.push = function (e) {
66076          var t,
66077              i = 0,
66078              n = 188;
66079
66080          for (s ? ((t = new Uint8Array(e.byteLength + s)).set(r.subarray(0, s)), t.set(e, s), s = 0) : t = e; n < t.byteLength;) {
66081            71 !== t[i] || 71 !== t[n] ? (i++, n++) : (this.trigger("data", t.subarray(i, n)), i += 188, n += 188);
66082          }
66083
66084          i < t.byteLength && (r.set(t.subarray(i), 0), s = t.byteLength - i);
66085        }, this.flush = function () {
66086          188 === s && 71 === r[0] && (this.trigger("data", r), s = 0), this.trigger("done");
66087        }, this.endTimeline = function () {
66088          this.flush(), this.trigger("endedtimeline");
66089        }, this.reset = function () {
66090          s = 0, this.trigger("reset");
66091        };
66092      }).prototype = new H(), (_He = function He() {
66093        var n, r, s, a;
66094        _He.prototype.init.call(this), (a = this).packetsWaitingForPmt = [], this.programMapTable = void 0, n = function n(e, t) {
66095          var i = 0;
66096          t.payloadUnitStartIndicator && (i += e[i] + 1), "pat" === t.type ? r(e.subarray(i), t) : s(e.subarray(i), t);
66097        }, r = function r(e, t) {
66098          t.section_number = e[7], t.last_section_number = e[8], a.pmtPid = (31 & e[10]) << 8 | e[11], t.pmtPid = a.pmtPid;
66099        }, s = function s(e, t) {
66100          var i, n;
66101
66102          if (1 & e[5]) {
66103            for (a.programMapTable = {
66104              video: null,
66105              audio: null,
66106              "timed-metadata": {}
66107            }, i = 3 + ((15 & e[1]) << 8 | e[2]) - 4, n = 12 + ((15 & e[10]) << 8 | e[11]); n < i;) {
66108              var r = e[n],
66109                  s = (31 & e[n + 1]) << 8 | e[n + 2];
66110              r === De.H264_STREAM_TYPE && null === a.programMapTable.video ? a.programMapTable.video = s : r === De.ADTS_STREAM_TYPE && null === a.programMapTable.audio ? a.programMapTable.audio = s : r === De.METADATA_STREAM_TYPE && (a.programMapTable["timed-metadata"][s] = r), n += 5 + ((15 & e[n + 3]) << 8 | e[n + 4]);
66111            }
66112
66113            t.programMapTable = a.programMapTable;
66114          }
66115        }, this.push = function (e) {
66116          var t = {},
66117              i = 4;
66118          if (t.payloadUnitStartIndicator = !!(64 & e[1]), t.pid = 31 & e[1], t.pid <<= 8, t.pid |= e[2], 1 < (48 & e[3]) >>> 4 && (i += e[i] + 1), 0 === t.pid) t.type = "pat", n(e.subarray(i), t), this.trigger("data", t);else if (t.pid === this.pmtPid) for (t.type = "pmt", n(e.subarray(i), t), this.trigger("data", t); this.packetsWaitingForPmt.length;) {
66119            this.processPes_.apply(this, this.packetsWaitingForPmt.shift());
66120          } else void 0 === this.programMapTable ? this.packetsWaitingForPmt.push([e, i, t]) : this.processPes_(e, i, t);
66121        }, this.processPes_ = function (e, t, i) {
66122          i.pid === this.programMapTable.video ? i.streamType = De.H264_STREAM_TYPE : i.pid === this.programMapTable.audio ? i.streamType = De.ADTS_STREAM_TYPE : i.streamType = this.programMapTable["timed-metadata"][i.pid], i.type = "pes", i.data = e.subarray(t), this.trigger("data", i);
66123        };
66124      }).prototype = new H(), _He.STREAM_TYPES = {
66125        h264: 27,
66126        adts: 15
66127      }, (_Ve = function Ve() {
66128        function n(e, t, i) {
66129          var n,
66130              r,
66131              s = new Uint8Array(e.size),
66132              a = {
66133            type: t
66134          },
66135              o = 0,
66136              u = 0;
66137
66138          if (e.data.length && !(e.size < 9)) {
66139            for (a.trackId = e.data[0].pid, o = 0; o < e.data.length; o++) {
66140              r = e.data[o], s.set(r.data, u), u += r.data.byteLength;
66141            }
66142
66143            !function (e, t) {
66144              var i;
66145              t.packetLength = 6 + (e[4] << 8 | e[5]), t.dataAlignmentIndicator = 0 != (4 & e[6]), 192 & (i = e[7]) && (t.pts = (14 & e[9]) << 27 | (255 & e[10]) << 20 | (254 & e[11]) << 12 | (255 & e[12]) << 5 | (254 & e[13]) >>> 3, t.pts *= 4, t.pts += (6 & e[13]) >>> 1, t.dts = t.pts, 64 & i && (t.dts = (14 & e[14]) << 27 | (255 & e[15]) << 20 | (254 & e[16]) << 12 | (255 & e[17]) << 5 | (254 & e[18]) >>> 3, t.dts *= 4, t.dts += (6 & e[18]) >>> 1)), t.data = e.subarray(9 + e[8]);
66146            }(s, a), n = "video" === t || a.packetLength <= e.size, (i || n) && (e.size = 0, e.data.length = 0), n && l.trigger("data", a);
66147          }
66148        }
66149
66150        var t,
66151            l = this,
66152            r = {
66153          data: [],
66154          size: 0
66155        },
66156            s = {
66157          data: [],
66158          size: 0
66159        },
66160            a = {
66161          data: [],
66162          size: 0
66163        };
66164        _Ve.prototype.init.call(this), this.push = function (i) {
66165          ({
66166            pat: function pat() {},
66167            pes: function pes() {
66168              var e, t;
66169
66170              switch (i.streamType) {
66171                case De.H264_STREAM_TYPE:
66172                case De.H264_STREAM_TYPE:
66173                  e = r, t = "video";
66174                  break;
66175
66176                case De.ADTS_STREAM_TYPE:
66177                  e = s, t = "audio";
66178                  break;
66179
66180                case De.METADATA_STREAM_TYPE:
66181                  e = a, t = "timed-metadata";
66182                  break;
66183
66184                default:
66185                  return;
66186              }
66187
66188              i.payloadUnitStartIndicator && n(e, t, !0), e.data.push(i), e.size += i.data.byteLength;
66189            },
66190            pmt: function pmt() {
66191              var e = {
66192                type: "metadata",
66193                tracks: []
66194              };
66195              null !== (t = i.programMapTable).video && e.tracks.push({
66196                timelineStartInfo: {
66197                  baseMediaDecodeTime: 0
66198                },
66199                id: +t.video,
66200                codec: "avc",
66201                type: "video"
66202              }), null !== t.audio && e.tracks.push({
66203                timelineStartInfo: {
66204                  baseMediaDecodeTime: 0
66205                },
66206                id: +t.audio,
66207                codec: "adts",
66208                type: "audio"
66209              }), l.trigger("data", e);
66210            }
66211          })[i.type]();
66212        }, this.reset = function () {
66213          r.size = 0, r.data.length = 0, s.size = 0, s.data.length = 0, this.trigger("reset");
66214        }, this.flushStreams_ = function () {
66215          n(r, "video"), n(s, "audio"), n(a, "timed-metadata");
66216        }, this.flush = function () {
66217          this.flushStreams_(), this.trigger("done");
66218        };
66219      }).prototype = new H();
66220      var ze = {
66221        PAT_PID: 0,
66222        MP2T_PACKET_LENGTH: 188,
66223        TransportPacketStream: _Fe,
66224        TransportParseStream: _He,
66225        ElementaryStream: _Ve,
66226        TimestampRolloverStream: We,
66227        CaptionStream: Oe.CaptionStream,
66228        Cea608Stream: Oe.Cea608Stream,
66229        MetadataStream: qe
66230      };
66231
66232      for (var Ge in De) {
66233        De.hasOwnProperty(Ge) && (ze[Ge] = De[Ge]);
66234      }
66235
66236      var _Xe,
66237          Ke = ze,
66238          Ye = le,
66239          $e = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350];
66240
66241      (_Xe = function Xe(u) {
66242        var l,
66243            c = 0;
66244        _Xe.prototype.init.call(this), this.push = function (e) {
66245          var t,
66246              i,
66247              n,
66248              r,
66249              s,
66250              a,
66251              o = 0;
66252          if (u || (c = 0), "audio" === e.type) for (l ? (r = l, (l = new Uint8Array(r.byteLength + e.data.byteLength)).set(r), l.set(e.data, r.byteLength)) : l = e.data; o + 5 < l.length;) {
66253            if (255 === l[o] && 240 == (246 & l[o + 1])) {
66254              if (i = 2 * (1 & ~l[o + 1]), t = (3 & l[o + 3]) << 11 | l[o + 4] << 3 | (224 & l[o + 5]) >> 5, a = (s = 1024 * (1 + (3 & l[o + 6]))) * Ye / $e[(60 & l[o + 2]) >>> 2], n = o + t, l.byteLength < n) return;
66255              if (this.trigger("data", {
66256                pts: e.pts + c * a,
66257                dts: e.dts + c * a,
66258                sampleCount: s,
66259                audioobjecttype: 1 + (l[o + 2] >>> 6 & 3),
66260                channelcount: (1 & l[o + 2]) << 2 | (192 & l[o + 3]) >>> 6,
66261                samplerate: $e[(60 & l[o + 2]) >>> 2],
66262                samplingfrequencyindex: (60 & l[o + 2]) >>> 2,
66263                samplesize: 16,
66264                data: l.subarray(o + 7 + i, n)
66265              }), c++, l.byteLength === n) return void (l = void 0);
66266              l = l.subarray(n);
66267            } else o++;
66268          }
66269        }, this.flush = function () {
66270          c = 0, this.trigger("done");
66271        }, this.reset = function () {
66272          l = void 0, this.trigger("reset");
66273        }, this.endTimeline = function () {
66274          l = void 0, this.trigger("endedtimeline");
66275        };
66276      }).prototype = new H();
66277
66278      var _Qe,
66279          _Je,
66280          Ze,
66281          et = _Xe,
66282          tt = function tt(n) {
66283        var r = n.byteLength,
66284            s = 0,
66285            a = 0;
66286        this.length = function () {
66287          return 8 * r;
66288        }, this.bitsAvailable = function () {
66289          return 8 * r + a;
66290        }, this.loadWord = function () {
66291          var e = n.byteLength - r,
66292              t = new Uint8Array(4),
66293              i = Math.min(4, r);
66294          if (0 === i) throw new Error("no bytes available");
66295          t.set(n.subarray(e, e + i)), s = new DataView(t.buffer).getUint32(0), a = 8 * i, r -= i;
66296        }, this.skipBits = function (e) {
66297          var t;
66298          e < a || (e -= a, e -= 8 * (t = Math.floor(e / 8)), r -= t, this.loadWord()), s <<= e, a -= e;
66299        }, this.readBits = function (e) {
66300          var t = Math.min(a, e),
66301              i = s >>> 32 - t;
66302          return 0 < (a -= t) ? s <<= t : 0 < r && this.loadWord(), 0 < (t = e - t) ? i << t | this.readBits(t) : i;
66303        }, this.skipLeadingZeros = function () {
66304          var e;
66305
66306          for (e = 0; e < a; ++e) {
66307            if (0 != (s & 2147483648 >>> e)) return s <<= e, a -= e, e;
66308          }
66309
66310          return this.loadWord(), e + this.skipLeadingZeros();
66311        }, this.skipUnsignedExpGolomb = function () {
66312          this.skipBits(1 + this.skipLeadingZeros());
66313        }, this.skipExpGolomb = function () {
66314          this.skipBits(1 + this.skipLeadingZeros());
66315        }, this.readUnsignedExpGolomb = function () {
66316          var e = this.skipLeadingZeros();
66317          return this.readBits(e + 1) - 1;
66318        }, this.readExpGolomb = function () {
66319          var e = this.readUnsignedExpGolomb();
66320          return 1 & e ? 1 + e >>> 1 : -1 * (e >>> 1);
66321        }, this.readBoolean = function () {
66322          return 1 === this.readBits(1);
66323        }, this.readUnsignedByte = function () {
66324          return this.readBits(8);
66325        }, this.loadWord();
66326      };
66327
66328      (_Je = function Je() {
66329        var n,
66330            r,
66331            s = 0;
66332        _Je.prototype.init.call(this), this.push = function (e) {
66333          for (var t, i = (r = r ? ((t = new Uint8Array(r.byteLength + e.data.byteLength)).set(r), t.set(e.data, r.byteLength), t) : e.data).byteLength; s < i - 3; s++) {
66334            if (1 === r[s + 2]) {
66335              n = s + 5;
66336              break;
66337            }
66338          }
66339
66340          for (; n < i;) {
66341            switch (r[n]) {
66342              case 0:
66343                if (0 !== r[n - 1]) {
66344                  n += 2;
66345                  break;
66346                }
66347
66348                if (0 !== r[n - 2]) {
66349                  n++;
66350                  break;
66351                }
66352
66353                for (s + 3 !== n - 2 && this.trigger("data", r.subarray(s + 3, n - 2)); 1 !== r[++n] && n < i;) {
66354                  ;
66355                }
66356
66357                s = n - 2, n += 3;
66358                break;
66359
66360              case 1:
66361                if (0 !== r[n - 1] || 0 !== r[n - 2]) {
66362                  n += 3;
66363                  break;
66364                }
66365
66366                this.trigger("data", r.subarray(s + 3, n - 2)), s = n - 2, n += 3;
66367                break;
66368
66369              default:
66370                n += 3;
66371            }
66372          }
66373
66374          r = r.subarray(s), n -= s, s = 0;
66375        }, this.reset = function () {
66376          r = null, s = 0, this.trigger("reset");
66377        }, this.flush = function () {
66378          r && 3 < r.byteLength && this.trigger("data", r.subarray(s + 3)), r = null, s = 0, this.trigger("done");
66379        }, this.endTimeline = function () {
66380          this.flush(), this.trigger("endedtimeline");
66381        };
66382      }).prototype = new H(), Ze = {
66383        100: !0,
66384        110: !0,
66385        122: !0,
66386        244: !0,
66387        44: !0,
66388        83: !0,
66389        86: !0,
66390        118: !0,
66391        128: !0,
66392        138: !0,
66393        139: !0,
66394        134: !0
66395      }, (_Qe = function Qe() {
66396        var i,
66397            n,
66398            r,
66399            s,
66400            a,
66401            o,
66402            _,
66403            t = new _Je();
66404
66405        _Qe.prototype.init.call(this), (i = this).push = function (e) {
66406          "video" === e.type && (n = e.trackId, r = e.pts, s = e.dts, t.push(e));
66407        }, t.on("data", function (e) {
66408          var t = {
66409            trackId: n,
66410            pts: r,
66411            dts: s,
66412            data: e
66413          };
66414
66415          switch (31 & e[0]) {
66416            case 5:
66417              t.nalUnitType = "slice_layer_without_partitioning_rbsp_idr";
66418              break;
66419
66420            case 6:
66421              t.nalUnitType = "sei_rbsp", t.escapedRBSP = a(e.subarray(1));
66422              break;
66423
66424            case 7:
66425              t.nalUnitType = "seq_parameter_set_rbsp", t.escapedRBSP = a(e.subarray(1)), t.config = o(t.escapedRBSP);
66426              break;
66427
66428            case 8:
66429              t.nalUnitType = "pic_parameter_set_rbsp";
66430              break;
66431
66432            case 9:
66433              t.nalUnitType = "access_unit_delimiter_rbsp";
66434          }
66435
66436          i.trigger("data", t);
66437        }), t.on("done", function () {
66438          i.trigger("done");
66439        }), t.on("partialdone", function () {
66440          i.trigger("partialdone");
66441        }), t.on("reset", function () {
66442          i.trigger("reset");
66443        }), t.on("endedtimeline", function () {
66444          i.trigger("endedtimeline");
66445        }), this.flush = function () {
66446          t.flush();
66447        }, this.partialFlush = function () {
66448          t.partialFlush();
66449        }, this.reset = function () {
66450          t.reset();
66451        }, this.endTimeline = function () {
66452          t.endTimeline();
66453        }, _ = function _(e, t) {
66454          var i,
66455              n = 8,
66456              r = 8;
66457
66458          for (i = 0; i < e; i++) {
66459            0 !== r && (r = (n + t.readExpGolomb() + 256) % 256), n = 0 === r ? n : r;
66460          }
66461        }, a = function a(e) {
66462          for (var t, i, n = e.byteLength, r = [], s = 1; s < n - 2;) {
66463            0 === e[s] && 0 === e[s + 1] && 3 === e[s + 2] ? (r.push(s + 2), s += 2) : s++;
66464          }
66465
66466          if (0 === r.length) return e;
66467          t = n - r.length, i = new Uint8Array(t);
66468          var a = 0;
66469
66470          for (s = 0; s < t; a++, s++) {
66471            a === r[0] && (a++, r.shift()), i[s] = e[a];
66472          }
66473
66474          return i;
66475        }, o = function o(e) {
66476          var t,
66477              i,
66478              n,
66479              r,
66480              s,
66481              a,
66482              o,
66483              u,
66484              l,
66485              c,
66486              h,
66487              d,
66488              p,
66489              f = 0,
66490              m = 0,
66491              g = 0,
66492              v = 0,
66493              y = 1;
66494          if (i = (t = new tt(e)).readUnsignedByte(), r = t.readUnsignedByte(), n = t.readUnsignedByte(), t.skipUnsignedExpGolomb(), Ze[i] && (3 === (s = t.readUnsignedExpGolomb()) && t.skipBits(1), t.skipUnsignedExpGolomb(), t.skipUnsignedExpGolomb(), t.skipBits(1), t.readBoolean())) for (h = 3 !== s ? 8 : 12, p = 0; p < h; p++) {
66495            t.readBoolean() && _(p < 6 ? 16 : 64, t);
66496          }
66497          if (t.skipUnsignedExpGolomb(), 0 === (a = t.readUnsignedExpGolomb())) t.readUnsignedExpGolomb();else if (1 === a) for (t.skipBits(1), t.skipExpGolomb(), t.skipExpGolomb(), o = t.readUnsignedExpGolomb(), p = 0; p < o; p++) {
66498            t.skipExpGolomb();
66499          }
66500
66501          if (t.skipUnsignedExpGolomb(), t.skipBits(1), u = t.readUnsignedExpGolomb(), l = t.readUnsignedExpGolomb(), 0 === (c = t.readBits(1)) && t.skipBits(1), t.skipBits(1), t.readBoolean() && (f = t.readUnsignedExpGolomb(), m = t.readUnsignedExpGolomb(), g = t.readUnsignedExpGolomb(), v = t.readUnsignedExpGolomb()), t.readBoolean() && t.readBoolean()) {
66502            switch (t.readUnsignedByte()) {
66503              case 1:
66504                d = [1, 1];
66505                break;
66506
66507              case 2:
66508                d = [12, 11];
66509                break;
66510
66511              case 3:
66512                d = [10, 11];
66513                break;
66514
66515              case 4:
66516                d = [16, 11];
66517                break;
66518
66519              case 5:
66520                d = [40, 33];
66521                break;
66522
66523              case 6:
66524                d = [24, 11];
66525                break;
66526
66527              case 7:
66528                d = [20, 11];
66529                break;
66530
66531              case 8:
66532                d = [32, 11];
66533                break;
66534
66535              case 9:
66536                d = [80, 33];
66537                break;
66538
66539              case 10:
66540                d = [18, 11];
66541                break;
66542
66543              case 11:
66544                d = [15, 11];
66545                break;
66546
66547              case 12:
66548                d = [64, 33];
66549                break;
66550
66551              case 13:
66552                d = [160, 99];
66553                break;
66554
66555              case 14:
66556                d = [4, 3];
66557                break;
66558
66559              case 15:
66560                d = [3, 2];
66561                break;
66562
66563              case 16:
66564                d = [2, 1];
66565                break;
66566
66567              case 255:
66568                d = [t.readUnsignedByte() << 8 | t.readUnsignedByte(), t.readUnsignedByte() << 8 | t.readUnsignedByte()];
66569            }
66570
66571            d && (y = d[0] / d[1]);
66572          }
66573
66574          return {
66575            profileIdc: i,
66576            levelIdc: n,
66577            profileCompatibility: r,
66578            width: Math.ceil((16 * (u + 1) - 2 * f - 2 * m) * y),
66579            height: (2 - c) * (l + 1) * 16 - 2 * g - 2 * v,
66580            sarRatio: d
66581          };
66582        };
66583      }).prototype = new H();
66584
66585      var _it,
66586          nt = {
66587        H264Stream: _Qe,
66588        NalByteStream: _Je
66589      },
66590          rt = function rt(e) {
66591        return e[0] === "I".charCodeAt(0) && e[1] === "D".charCodeAt(0) && e[2] === "3".charCodeAt(0);
66592      },
66593          st = function st(e, t) {
66594        var i = e[t + 6] << 21 | e[t + 7] << 14 | e[t + 8] << 7 | e[t + 9];
66595        return (16 & e[t + 5]) >> 4 ? 20 + i : 10 + i;
66596      },
66597          at = function at(e, t) {
66598        var i = (224 & e[t + 5]) >> 5,
66599            n = e[t + 4] << 3;
66600        return 6144 & e[t + 3] | n | i;
66601      };
66602
66603      (_it = function it() {
66604        var o = new Uint8Array(),
66605            u = 0;
66606        _it.prototype.init.call(this), this.setTimestamp = function (e) {
66607          u = e;
66608        }, this.push = function (e) {
66609          var t,
66610              i,
66611              n,
66612              r,
66613              s = 0,
66614              a = 0;
66615
66616          for (o.length ? (r = o.length, (o = new Uint8Array(e.byteLength + r)).set(o.subarray(0, r)), o.set(e, r)) : o = e; 3 <= o.length - a;) {
66617            if (o[a] !== "I".charCodeAt(0) || o[a + 1] !== "D".charCodeAt(0) || o[a + 2] !== "3".charCodeAt(0)) {
66618              if (255 != (255 & o[a]) || 240 != (240 & o[a + 1])) a++;else {
66619                if (o.length - a < 7) break;
66620                if (a + (s = at(o, a)) > o.length) break;
66621                n = {
66622                  type: "audio",
66623                  data: o.subarray(a, a + s),
66624                  pts: u,
66625                  dts: u
66626                }, this.trigger("data", n), a += s;
66627              }
66628            } else {
66629              if (o.length - a < 10) break;
66630              if (a + (s = st(o, a)) > o.length) break;
66631              i = {
66632                type: "timed-metadata",
66633                data: o.subarray(a, a + s)
66634              }, this.trigger("data", i), a += s;
66635            }
66636          }
66637
66638          t = o.length - a, o = 0 < t ? o.subarray(a) : new Uint8Array();
66639        }, this.reset = function () {
66640          o = new Uint8Array(), this.trigger("reset");
66641        }, this.endTimeline = function () {
66642          o = new Uint8Array(), this.trigger("endedtimeline");
66643        };
66644      }).prototype = new H();
66645
66646      function ot(e, t) {
66647        var i;
66648        if (e.length !== t.length) return !1;
66649
66650        for (i = 0; i < e.length; i++) {
66651          if (e[i] !== t[i]) return !1;
66652        }
66653
66654        return !0;
66655      }
66656
66657      function ut(e, t, i, n, r, s) {
66658        return {
66659          start: {
66660            dts: e,
66661            pts: e + (i - t)
66662          },
66663          end: {
66664            dts: e + (n - t),
66665            pts: e + (r - i)
66666          },
66667          prependedContentDuration: s,
66668          baseMediaDecodeTime: e
66669        };
66670      }
66671
66672      var _lt,
66673          _ct,
66674          _ht,
66675          _dt,
66676          pt = _it,
66677          ft = nt.H264Stream,
66678          mt = rt,
66679          gt = le,
66680          vt = ["audioobjecttype", "channelcount", "samplerate", "samplingfrequencyindex", "samplesize"],
66681          yt = ["width", "height", "profileIdc", "levelIdc", "profileCompatibility", "sarRatio"];
66682
66683      (_ct = function ct(s, a) {
66684        var o = [],
66685            u = 0,
66686            l = 0,
66687            c = 0,
66688            h = 1 / 0;
66689        a = a || {}, _ct.prototype.init.call(this), this.push = function (t) {
66690          be(s, t), s && vt.forEach(function (e) {
66691            s[e] = t[e];
66692          }), o.push(t);
66693        }, this.setEarliestDts = function (e) {
66694          l = e - s.timelineStartInfo.baseMediaDecodeTime;
66695        }, this.setVideoBaseMediaDecodeTime = function (e) {
66696          h = e;
66697        }, this.setAudioAppendStart = function (e) {
66698          c = e;
66699        }, this.flush = function () {
66700          var e, t, i, n, r;
66701          0 !== o.length && (e = fe(o, s, l), s.baseMediaDecodeTime = _e(s, a.keepOriginalTimestamps), pe(s, e, c, h), s.samples = me(e), i = Q(ge(e)), o = [], t = J(u, [s]), n = new Uint8Array(t.byteLength + i.byteLength), u++, n.set(t), n.set(i, t.byteLength), ye(s), r = Math.ceil(1024 * gt / s.samplerate), e.length && this.trigger("timingInfo", {
66702            start: e[0].pts,
66703            end: e[0].pts + e.length * r
66704          }), this.trigger("data", {
66705            track: s,
66706            boxes: n
66707          })), this.trigger("done", "AudioSegmentStream");
66708        }, this.reset = function () {
66709          ye(s), o = [], this.trigger("reset");
66710        };
66711      }).prototype = new H(), (_lt = function lt(c, h) {
66712        var t,
66713            i,
66714            d = 0,
66715            p = [],
66716            f = [];
66717        h = h || {}, _lt.prototype.init.call(this), delete c.minPTS, this.gopCache_ = [], this.push = function (e) {
66718          be(c, e), "seq_parameter_set_rbsp" !== e.nalUnitType || t || (t = e.config, c.sps = [e.data], yt.forEach(function (e) {
66719            c[e] = t[e];
66720          }, this)), "pic_parameter_set_rbsp" !== e.nalUnitType || i || (i = e.data, c.pps = [e.data]), p.push(e);
66721        }, this.flush = function () {
66722          for (var e, t, i, n, r, s, a, o, u = 0; p.length && "access_unit_delimiter_rbsp" !== p[0].nalUnitType;) {
66723            p.shift();
66724          }
66725
66726          if (0 === p.length) return this.resetStream_(), void this.trigger("done", "VideoSegmentStream");
66727
66728          if (e = ee(p), (i = te(e))[0][0].keyFrame || ((t = this.getGopForFusion_(p[0], c)) ? (u = t.duration, i.unshift(t), i.byteLength += t.byteLength, i.nalCount += t.nalCount, i.pts = t.pts, i.dts = t.dts, i.duration += t.duration) : i = ie(i)), f.length) {
66729            var l;
66730            if (!(l = h.alignGopsAtEnd ? this.alignGopsAtEnd_(i) : this.alignGopsAtStart_(i))) return this.gopCache_.unshift({
66731              gop: i.pop(),
66732              pps: c.pps,
66733              sps: c.sps
66734            }), this.gopCache_.length = Math.min(6, this.gopCache_.length), p = [], this.resetStream_(), void this.trigger("done", "VideoSegmentStream");
66735            ye(c), i = l;
66736          }
66737
66738          be(c, i), c.samples = ne(i), r = Q(re(i)), c.baseMediaDecodeTime = _e(c, h.keepOriginalTimestamps), this.trigger("processedGopsInfo", i.map(function (e) {
66739            return {
66740              pts: e.pts,
66741              dts: e.dts,
66742              byteLength: e.byteLength
66743            };
66744          })), a = i[0], o = i[i.length - 1], this.trigger("segmentTimingInfo", ut(c.baseMediaDecodeTime, a.dts, a.pts, o.dts + o.duration, o.pts + o.duration, u)), this.trigger("timingInfo", {
66745            start: i[0].pts,
66746            end: i[i.length - 1].pts + i[i.length - 1].duration
66747          }), this.gopCache_.unshift({
66748            gop: i.pop(),
66749            pps: c.pps,
66750            sps: c.sps
66751          }), this.gopCache_.length = Math.min(6, this.gopCache_.length), p = [], this.trigger("baseMediaDecodeTime", c.baseMediaDecodeTime), this.trigger("timelineStartInfo", c.timelineStartInfo), n = J(d, [c]), s = new Uint8Array(n.byteLength + r.byteLength), d++, s.set(n), s.set(r, n.byteLength), this.trigger("data", {
66752            track: c,
66753            boxes: s
66754          }), this.resetStream_(), this.trigger("done", "VideoSegmentStream");
66755        }, this.reset = function () {
66756          this.resetStream_(), p = [], this.gopCache_.length = 0, f.length = 0, this.trigger("reset");
66757        }, this.resetStream_ = function () {
66758          ye(c), i = t = void 0;
66759        }, this.getGopForFusion_ = function (e) {
66760          var t,
66761              i,
66762              n,
66763              r,
66764              s,
66765              a = 1 / 0;
66766
66767          for (s = 0; s < this.gopCache_.length; s++) {
66768            n = (r = this.gopCache_[s]).gop, c.pps && ot(c.pps[0], r.pps[0]) && c.sps && ot(c.sps[0], r.sps[0]) && (n.dts < c.timelineStartInfo.dts || -1e4 <= (t = e.dts - n.dts - n.duration) && t <= 45e3 && (!i || t < a) && (i = r, a = t));
66769          }
66770
66771          return i ? i.gop : null;
66772        }, this.alignGopsAtStart_ = function (e) {
66773          var t, i, n, r, s, a, o, u;
66774
66775          for (s = e.byteLength, a = e.nalCount, o = e.duration, t = i = 0; t < f.length && i < e.length && (n = f[t], r = e[i], n.pts !== r.pts);) {
66776            r.pts > n.pts ? t++ : (i++, s -= r.byteLength, a -= r.nalCount, o -= r.duration);
66777          }
66778
66779          return 0 === i ? e : i === e.length ? null : ((u = e.slice(i)).byteLength = s, u.duration = o, u.nalCount = a, u.pts = u[0].pts, u.dts = u[0].dts, u);
66780        }, this.alignGopsAtEnd_ = function (e) {
66781          var t, i, n, r, s, a, o;
66782
66783          for (t = f.length - 1, i = e.length - 1, s = null, a = !1; 0 <= t && 0 <= i;) {
66784            if (n = f[t], r = e[i], n.pts === r.pts) {
66785              a = !0;
66786              break;
66787            }
66788
66789            n.pts > r.pts ? t-- : (t === f.length - 1 && (s = i), i--);
66790          }
66791
66792          if (!a && null === s) return null;
66793          if (0 === (o = a ? i : s)) return e;
66794          var u = e.slice(o),
66795              l = u.reduce(function (e, t) {
66796            return e.byteLength += t.byteLength, e.duration += t.duration, e.nalCount += t.nalCount, e;
66797          }, {
66798            byteLength: 0,
66799            duration: 0,
66800            nalCount: 0
66801          });
66802          return u.byteLength = l.byteLength, u.duration = l.duration, u.nalCount = l.nalCount, u.pts = u[0].pts, u.dts = u[0].dts, u;
66803        }, this.alignGopsWith = function (e) {
66804          f = e;
66805        };
66806      }).prototype = new H(), (_dt = function dt(e, t) {
66807        this.numberOfTracks = 0, this.metadataStream = t, "undefined" != typeof (e = e || {}).remux ? this.remuxTracks = !!e.remux : this.remuxTracks = !0, "boolean" == typeof e.keepOriginalTimestamps ? this.keepOriginalTimestamps = e.keepOriginalTimestamps : this.keepOriginalTimestamps = !1, this.pendingTracks = [], this.videoTrack = null, this.pendingBoxes = [], this.pendingCaptions = [], this.pendingMetadata = [], this.pendingBytes = 0, this.emittedTracks = 0, _dt.prototype.init.call(this), this.push = function (e) {
66808          return e.text ? this.pendingCaptions.push(e) : e.frames ? this.pendingMetadata.push(e) : (this.pendingTracks.push(e.track), this.pendingBytes += e.boxes.byteLength, "video" === e.track.type && (this.videoTrack = e.track, this.pendingBoxes.push(e.boxes)), void ("audio" === e.track.type && (this.audioTrack = e.track, this.pendingBoxes.unshift(e.boxes))));
66809        };
66810      }).prototype = new H(), _dt.prototype.flush = function (e) {
66811        var t,
66812            i,
66813            n,
66814            r,
66815            s = 0,
66816            a = {
66817          captions: [],
66818          captionStreams: {},
66819          metadata: [],
66820          info: {}
66821        },
66822            o = 0;
66823
66824        if (this.pendingTracks.length < this.numberOfTracks) {
66825          if ("VideoSegmentStream" !== e && "AudioSegmentStream" !== e) return;
66826          if (this.remuxTracks) return;
66827          if (0 === this.pendingTracks.length) return this.emittedTracks++, void (this.emittedTracks >= this.numberOfTracks && (this.trigger("done"), this.emittedTracks = 0));
66828        }
66829
66830        if (this.videoTrack ? (o = this.videoTrack.timelineStartInfo.pts, yt.forEach(function (e) {
66831          a.info[e] = this.videoTrack[e];
66832        }, this)) : this.audioTrack && (o = this.audioTrack.timelineStartInfo.pts, vt.forEach(function (e) {
66833          a.info[e] = this.audioTrack[e];
66834        }, this)), this.videoTrack || this.audioTrack) {
66835          for (1 === this.pendingTracks.length ? a.type = this.pendingTracks[0].type : a.type = "combined", this.emittedTracks += this.pendingTracks.length, n = Z(this.pendingTracks), a.initSegment = new Uint8Array(n.byteLength), a.initSegment.set(n), a.data = new Uint8Array(this.pendingBytes), r = 0; r < this.pendingBoxes.length; r++) {
66836            a.data.set(this.pendingBoxes[r], s), s += this.pendingBoxes[r].byteLength;
66837          }
66838
66839          for (r = 0; r < this.pendingCaptions.length; r++) {
66840            (t = this.pendingCaptions[r]).startTime = de(t.startPts, o, this.keepOriginalTimestamps), t.endTime = de(t.endPts, o, this.keepOriginalTimestamps), a.captionStreams[t.stream] = !0, a.captions.push(t);
66841          }
66842
66843          for (r = 0; r < this.pendingMetadata.length; r++) {
66844            (i = this.pendingMetadata[r]).cueTime = de(i.pts, o, this.keepOriginalTimestamps), a.metadata.push(i);
66845          }
66846
66847          for (a.metadata.dispatchType = this.metadataStream.dispatchType, this.pendingTracks.length = 0, this.videoTrack = null, this.pendingBoxes.length = 0, this.pendingCaptions.length = 0, this.pendingBytes = 0, this.pendingMetadata.length = 0, this.trigger("data", a), r = 0; r < a.captions.length; r++) {
66848            t = a.captions[r], this.trigger("caption", t);
66849          }
66850
66851          for (r = 0; r < a.metadata.length; r++) {
66852            i = a.metadata[r], this.trigger("id3Frame", i);
66853          }
66854        }
66855
66856        this.emittedTracks >= this.numberOfTracks && (this.trigger("done"), this.emittedTracks = 0);
66857      }, _dt.prototype.setRemux = function (e) {
66858        this.remuxTracks = e;
66859      }, (_ht = function ht(n) {
66860        var r,
66861            s,
66862            a = this,
66863            i = !0;
66864        _ht.prototype.init.call(this), n = n || {}, this.baseMediaDecodeTime = n.baseMediaDecodeTime || 0, this.transmuxPipeline_ = {}, this.setupAacPipeline = function () {
66865          var t = {};
66866          (this.transmuxPipeline_ = t).type = "aac", t.metadataStream = new Ke.MetadataStream(), t.aacStream = new pt(), t.audioTimestampRolloverStream = new Ke.TimestampRolloverStream("audio"), t.timedMetadataTimestampRolloverStream = new Ke.TimestampRolloverStream("timed-metadata"), t.adtsStream = new et(), t.coalesceStream = new _dt(n, t.metadataStream), t.headOfPipeline = t.aacStream, t.aacStream.pipe(t.audioTimestampRolloverStream).pipe(t.adtsStream), t.aacStream.pipe(t.timedMetadataTimestampRolloverStream).pipe(t.metadataStream).pipe(t.coalesceStream), t.metadataStream.on("timestamp", function (e) {
66867            t.aacStream.setTimestamp(e.timeStamp);
66868          }), t.aacStream.on("data", function (e) {
66869            "timed-metadata" !== e.type || t.audioSegmentStream || (s = s || {
66870              timelineStartInfo: {
66871                baseMediaDecodeTime: a.baseMediaDecodeTime
66872              },
66873              codec: "adts",
66874              type: "audio"
66875            }, t.coalesceStream.numberOfTracks++, t.audioSegmentStream = new _ct(s, n), t.audioSegmentStream.on("timingInfo", a.trigger.bind(a, "audioTimingInfo")), t.adtsStream.pipe(t.audioSegmentStream).pipe(t.coalesceStream)), a.trigger("trackinfo", {
66876              hasAudio: !!s,
66877              hasVideo: !!r
66878            });
66879          }), t.coalesceStream.on("data", this.trigger.bind(this, "data")), t.coalesceStream.on("done", this.trigger.bind(this, "done"));
66880        }, this.setupTsPipeline = function () {
66881          var i = {};
66882          (this.transmuxPipeline_ = i).type = "ts", i.metadataStream = new Ke.MetadataStream(), i.packetStream = new Ke.TransportPacketStream(), i.parseStream = new Ke.TransportParseStream(), i.elementaryStream = new Ke.ElementaryStream(), i.timestampRolloverStream = new Ke.TimestampRolloverStream(), i.adtsStream = new et(), i.h264Stream = new ft(), i.captionStream = new Ke.CaptionStream(), i.coalesceStream = new _dt(n, i.metadataStream), i.headOfPipeline = i.packetStream, i.packetStream.pipe(i.parseStream).pipe(i.elementaryStream).pipe(i.timestampRolloverStream), i.timestampRolloverStream.pipe(i.h264Stream), i.timestampRolloverStream.pipe(i.adtsStream), i.timestampRolloverStream.pipe(i.metadataStream).pipe(i.coalesceStream), i.h264Stream.pipe(i.captionStream).pipe(i.coalesceStream), i.elementaryStream.on("data", function (e) {
66883            var t;
66884
66885            if ("metadata" === e.type) {
66886              for (t = e.tracks.length; t--;) {
66887                r || "video" !== e.tracks[t].type ? s || "audio" !== e.tracks[t].type || ((s = e.tracks[t]).timelineStartInfo.baseMediaDecodeTime = a.baseMediaDecodeTime) : (r = e.tracks[t]).timelineStartInfo.baseMediaDecodeTime = a.baseMediaDecodeTime;
66888              }
66889
66890              r && !i.videoSegmentStream && (i.coalesceStream.numberOfTracks++, i.videoSegmentStream = new _lt(r, n), i.videoSegmentStream.on("timelineStartInfo", function (e) {
66891                s && (s.timelineStartInfo = e, i.audioSegmentStream.setEarliestDts(e.dts));
66892              }), i.videoSegmentStream.on("processedGopsInfo", a.trigger.bind(a, "gopInfo")), i.videoSegmentStream.on("segmentTimingInfo", a.trigger.bind(a, "videoSegmentTimingInfo")), i.videoSegmentStream.on("baseMediaDecodeTime", function (e) {
66893                s && i.audioSegmentStream.setVideoBaseMediaDecodeTime(e);
66894              }), i.videoSegmentStream.on("timingInfo", a.trigger.bind(a, "videoTimingInfo")), i.h264Stream.pipe(i.videoSegmentStream).pipe(i.coalesceStream)), s && !i.audioSegmentStream && (i.coalesceStream.numberOfTracks++, i.audioSegmentStream = new _ct(s, n), i.audioSegmentStream.on("timingInfo", a.trigger.bind(a, "audioTimingInfo")), i.adtsStream.pipe(i.audioSegmentStream).pipe(i.coalesceStream)), a.trigger("trackinfo", {
66895                hasAudio: !!s,
66896                hasVideo: !!r
66897              });
66898            }
66899          }), i.coalesceStream.on("data", this.trigger.bind(this, "data")), i.coalesceStream.on("id3Frame", function (e) {
66900            e.dispatchType = i.metadataStream.dispatchType, a.trigger("id3Frame", e);
66901          }), i.coalesceStream.on("caption", this.trigger.bind(this, "caption")), i.coalesceStream.on("done", this.trigger.bind(this, "done"));
66902        }, this.setBaseMediaDecodeTime = function (e) {
66903          var t = this.transmuxPipeline_;
66904          n.keepOriginalTimestamps || (this.baseMediaDecodeTime = e), s && (s.timelineStartInfo.dts = void 0, s.timelineStartInfo.pts = void 0, ye(s), n.keepOriginalTimestamps || (s.timelineStartInfo.baseMediaDecodeTime = e), t.audioTimestampRolloverStream && t.audioTimestampRolloverStream.discontinuity()), r && (t.videoSegmentStream && (t.videoSegmentStream.gopCache_ = []), r.timelineStartInfo.dts = void 0, r.timelineStartInfo.pts = void 0, ye(r), t.captionStream.reset(), n.keepOriginalTimestamps || (r.timelineStartInfo.baseMediaDecodeTime = e)), t.timestampRolloverStream && t.timestampRolloverStream.discontinuity();
66905        }, this.setAudioAppendStart = function (e) {
66906          s && this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(e);
66907        }, this.setRemux = function (e) {
66908          var t = this.transmuxPipeline_;
66909          n.remux = e, t && t.coalesceStream && t.coalesceStream.setRemux(e);
66910        }, this.alignGopsWith = function (e) {
66911          r && this.transmuxPipeline_.videoSegmentStream && this.transmuxPipeline_.videoSegmentStream.alignGopsWith(e);
66912        }, this.push = function (e) {
66913          if (i) {
66914            var t = mt(e);
66915            t && "aac" !== this.transmuxPipeline_.type ? this.setupAacPipeline() : t || "ts" === this.transmuxPipeline_.type || this.setupTsPipeline(), i = !1;
66916          }
66917
66918          this.transmuxPipeline_.headOfPipeline.push(e);
66919        }, this.flush = function () {
66920          i = !0, this.transmuxPipeline_.headOfPipeline.flush();
66921        }, this.endTimeline = function () {
66922          this.transmuxPipeline_.headOfPipeline.endTimeline();
66923        }, this.reset = function () {
66924          this.transmuxPipeline_.headOfPipeline && this.transmuxPipeline_.headOfPipeline.reset();
66925        }, this.resetCaptions = function () {
66926          this.transmuxPipeline_.captionStream && this.transmuxPipeline_.captionStream.reset();
66927        };
66928      }).prototype = new H();
66929      var _t = {
66930        Transmuxer: _ht,
66931        VideoSegmentStream: _lt,
66932        AudioSegmentStream: _ct,
66933        AUDIO_PROPERTIES: vt,
66934        VIDEO_PROPERTIES: yt,
66935        generateVideoSegmentTimingInfo: ut
66936      };
66937
66938      function bt(e, t) {
66939        for (var i = 0; i < t.length; i++) {
66940          var n = t[i];
66941          n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
66942        }
66943      }
66944
66945      var Tt = (function (e, t, i) {
66946        return t && bt(e.prototype, t), i && bt(e, i), e;
66947      }(St, [{
66948        key: "init",
66949        value: function value() {
66950          this.transmuxer && this.transmuxer.dispose(), this.transmuxer = new _t.Transmuxer(this.options), function (n, e) {
66951            e.on("data", function (e) {
66952              var t = e.initSegment;
66953              e.initSegment = {
66954                data: t.buffer,
66955                byteOffset: t.byteOffset,
66956                byteLength: t.byteLength
66957              };
66958              var i = e.data;
66959              e.data = i.buffer, n.postMessage({
66960                action: "data",
66961                segment: e,
66962                byteOffset: i.byteOffset,
66963                byteLength: i.byteLength
66964              }, [e.data]);
66965            }), e.captionStream && e.captionStream.on("data", function (e) {
66966              n.postMessage({
66967                action: "caption",
66968                data: e
66969              });
66970            }), e.on("done", function (e) {
66971              n.postMessage({
66972                action: "done"
66973              });
66974            }), e.on("gopInfo", function (e) {
66975              n.postMessage({
66976                action: "gopInfo",
66977                gopInfo: e
66978              });
66979            }), e.on("videoSegmentTimingInfo", function (e) {
66980              n.postMessage({
66981                action: "videoSegmentTimingInfo",
66982                videoSegmentTimingInfo: e
66983              });
66984            });
66985          }(this.self, this.transmuxer);
66986        }
66987      }, {
66988        key: "push",
66989        value: function value(e) {
66990          var t = new Uint8Array(e.data, e.byteOffset, e.byteLength);
66991          this.transmuxer.push(t);
66992        }
66993      }, {
66994        key: "reset",
66995        value: function value() {
66996          this.init();
66997        }
66998      }, {
66999        key: "setTimestampOffset",
67000        value: function value(e) {
67001          var t = e.timestampOffset || 0;
67002          this.transmuxer.setBaseMediaDecodeTime(Math.round(9e4 * t));
67003        }
67004      }, {
67005        key: "setAudioAppendStart",
67006        value: function value(e) {
67007          this.transmuxer.setAudioAppendStart(Math.ceil(9e4 * e.appendStart));
67008        }
67009      }, {
67010        key: "flush",
67011        value: function value(e) {
67012          this.transmuxer.flush();
67013        }
67014      }, {
67015        key: "resetCaptions",
67016        value: function value() {
67017          this.transmuxer.resetCaptions();
67018        }
67019      }, {
67020        key: "alignGopsWith",
67021        value: function value(e) {
67022          this.transmuxer.alignGopsWith(e.gopsToAlignWith.slice());
67023        }
67024      }]), St);
67025
67026      function St(e, t) {
67027        !function (e, t) {
67028          if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
67029        }(this, St), this.options = t || {}, this.self = e, this.init();
67030      }
67031
67032      new function (t) {
67033        t.onmessage = function (e) {
67034          "init" === e.data.action && e.data.options ? this.messageHandlers = new Tt(t, e.data.options) : (this.messageHandlers || (this.messageHandlers = new Tt(t)), e.data && e.data.action && "init" !== e.data.action && this.messageHandlers[e.data.action] && this.messageHandlers[e.data.action](e.data));
67035        };
67036      }(kt);
67037    }();
67038  }),
67039      Cc = {
67040    videoCodec: "avc1",
67041    videoObjectTypeIndicator: ".4d400d",
67042    audioProfile: "2"
67043  },
67044      wc = (ll(Ec, as.EventTarget), ol(Ec, [{
67045    key: "data_",
67046    value: function value(e) {
67047      var t = e.data.segment;
67048      t.data = new Uint8Array(t.data, e.data.byteOffset, e.data.byteLength), t.initSegment = new Uint8Array(t.initSegment.data, t.initSegment.byteOffset, t.initSegment.byteLength), function (e, t, i) {
67049        var n = t.player_;
67050        if (i.captions && i.captions.length) for (var r in e.inbandTextTracks_ || (e.inbandTextTracks_ = {}), i.captionStreams) {
67051          if (!e.inbandTextTracks_[r]) {
67052            n.tech_.trigger({
67053              type: "usage",
67054              name: "hls-608"
67055            });
67056            var s = n.textTracks().getTrackById(r);
67057            e.inbandTextTracks_[r] = s || n.addRemoteTextTrack({
67058              kind: "captions",
67059              id: r,
67060              label: r
67061            }, !1).track;
67062          }
67063        }
67064        i.metadata && i.metadata.length && !e.metadataTrack_ && (e.metadataTrack_ = n.addRemoteTextTrack({
67065          kind: "metadata",
67066          label: "Timed Metadata"
67067        }, !1).track, e.metadataTrack_.inBandMetadataTrackDispatchType = i.metadata.dispatchType);
67068      }(this, this.mediaSource_, t), this.pendingBuffers_.push(t);
67069    }
67070  }, {
67071    key: "done_",
67072    value: function value(e) {
67073      "closed" !== this.mediaSource_.readyState ? this.processPendingSegments_() : this.pendingBuffers_.length = 0;
67074    }
67075  }, {
67076    key: "videoSegmentTimingInfo_",
67077    value: function value(e) {
67078      var t = {
67079        start: {
67080          decode: e.start.dts / 9e4,
67081          presentation: e.start.pts / 9e4
67082        },
67083        end: {
67084          decode: e.end.dts / 9e4,
67085          presentation: e.end.pts / 9e4
67086        },
67087        baseMediaDecodeTime: e.baseMediaDecodeTime / 9e4
67088      };
67089      e.prependedContentDuration && (t.prependedContentDuration = e.prependedContentDuration / 9e4), this.trigger({
67090        type: "videoSegmentTimingInfo",
67091        videoSegmentTimingInfo: t
67092      });
67093    }
67094  }, {
67095    key: "createRealSourceBuffers_",
67096    value: function value() {
67097      var n = this,
67098          r = ["audio", "video"];
67099      r.forEach(function (t) {
67100        if (n[t + "Codec_"] && !n[t + "Buffer_"]) {
67101          var i = null;
67102          if (n.mediaSource_[t + "Buffer_"]) (i = n.mediaSource_[t + "Buffer_"]).updating = !1;else {
67103            var e = t + '/mp4;codecs="' + n[t + "Codec_"] + '"';
67104            i = function (e, t) {
67105              var i = e.addSourceBuffer(t),
67106                  n = Object.create(null);
67107
67108              function r(t) {
67109                "function" == typeof i[t] ? n[t] = function () {
67110                  return i[t].apply(i, arguments);
67111                } : "undefined" == typeof n[t] && Object.defineProperty(n, t, {
67112                  get: function get() {
67113                    return i[t];
67114                  },
67115                  set: function set(e) {
67116                    return i[t] = e;
67117                  }
67118                });
67119              }
67120
67121              for (var s in n.updating = !1, n.realBuffer_ = i) {
67122                r(s);
67123              }
67124
67125              return n;
67126            }(n.mediaSource_.nativeMediaSource_, e), n.mediaSource_[t + "Buffer_"] = i;
67127          }
67128          n[t + "Buffer_"] = i, ["update", "updatestart", "updateend"].forEach(function (e) {
67129            i.addEventListener(e, function () {
67130              if ("audio" !== t || !n.audioDisabled_) return "updateend" === e && (n[t + "Buffer_"].updating = !1), r.every(function (e) {
67131                return !("audio" !== e || !n.audioDisabled_) || t === e || !n[e + "Buffer_"] || !n[e + "Buffer_"].updating;
67132              }) ? n.trigger(e) : void 0;
67133            });
67134          });
67135        }
67136      });
67137    }
67138  }, {
67139    key: "appendBuffer",
67140    value: function value(e) {
67141      if (this.bufferUpdating_ = !0, this.audioBuffer_ && this.audioBuffer_.buffered.length) {
67142        var t = this.audioBuffer_.buffered;
67143        this.transmuxer_.postMessage({
67144          action: "setAudioAppendStart",
67145          appendStart: t.end(t.length - 1)
67146        });
67147      }
67148
67149      this.videoBuffer_ && this.transmuxer_.postMessage({
67150        action: "alignGopsWith",
67151        gopsToAlignWith: function (e, t, i) {
67152          if ("undefined" == typeof t || null === t || !e.length) return [];
67153          var n = Math.ceil(9e4 * (t - i + 3)),
67154              r = void 0;
67155
67156          for (r = 0; r < e.length && !(e[r].pts > n); r++) {
67157            ;
67158          }
67159
67160          return e.slice(r);
67161        }(this.gopBuffer_, this.mediaSource_.player_ ? this.mediaSource_.player_.currentTime() : null, this.timeMapping_)
67162      }), this.transmuxer_.postMessage({
67163        action: "push",
67164        data: e.buffer,
67165        byteOffset: e.byteOffset,
67166        byteLength: e.byteLength
67167      }, [e.buffer]), this.transmuxer_.postMessage({
67168        action: "flush"
67169      });
67170    }
67171  }, {
67172    key: "appendGopInfo_",
67173    value: function value(e) {
67174      this.gopBuffer_ = function (e, t, i) {
67175        if (!t.length) return e;
67176        if (i) return t.slice();
67177
67178        for (var n = t[0].pts, r = 0; r < e.length && !(e[r].pts >= n); r++) {
67179          ;
67180        }
67181
67182        return e.slice(0, r).concat(t);
67183      }(this.gopBuffer_, e.data.gopInfo, this.safeAppend_);
67184    }
67185  }, {
67186    key: "remove",
67187    value: function value(e, t) {
67188      if (this.videoBuffer_ && (this.videoBuffer_.updating = !0, this.videoBuffer_.remove(e, t), this.gopBuffer_ = function (e, t, i, n) {
67189        for (var r = Math.ceil(9e4 * (t - n)), s = Math.ceil(9e4 * (i - n)), a = e.slice(), o = e.length; o-- && !(e[o].pts <= s);) {
67190          ;
67191        }
67192
67193        if (-1 === o) return a;
67194
67195        for (var u = o + 1; u-- && !(e[u].pts <= r);) {
67196          ;
67197        }
67198
67199        return u = Math.max(u, 0), a.splice(u, o - u + 1), a;
67200      }(this.gopBuffer_, e, t, this.timeMapping_)), !this.audioDisabled_ && this.audioBuffer_ && (this.audioBuffer_.updating = !0, this.audioBuffer_.remove(e, t)), Yl(e, t, this.metadataTrack_), this.inbandTextTracks_) for (var i in this.inbandTextTracks_) {
67201        Yl(e, t, this.inbandTextTracks_[i]);
67202      }
67203    }
67204  }, {
67205    key: "processPendingSegments_",
67206    value: function value() {
67207      var e = {
67208        video: {
67209          segments: [],
67210          bytes: 0
67211        },
67212        audio: {
67213          segments: [],
67214          bytes: 0
67215        },
67216        captions: [],
67217        metadata: []
67218      };
67219      if (!this.pendingBuffers_.length) return this.trigger("updateend"), void (this.bufferUpdating_ = !1);
67220      e = this.pendingBuffers_.reduce(function (e, t) {
67221        var i = t.type,
67222            n = t.data,
67223            r = t.initSegment;
67224        return e[i].segments.push(n), e[i].bytes += n.byteLength, e[i].initSegment = r, t.captions && (e.captions = e.captions.concat(t.captions)), t.info && (e[i].info = t.info), t.metadata && (e.metadata = e.metadata.concat(t.metadata)), e;
67225      }, e), this.videoBuffer_ || this.audioBuffer_ || (0 === e.video.bytes && (this.videoCodec_ = null), 0 === e.audio.bytes && (this.audioCodec_ = null), this.createRealSourceBuffers_()), e.audio.info && this.mediaSource_.trigger({
67226        type: "audioinfo",
67227        info: e.audio.info
67228      }), e.video.info && this.mediaSource_.trigger({
67229        type: "videoinfo",
67230        info: e.video.info
67231      }), this.appendAudioInitSegment_ && (!this.audioDisabled_ && this.audioBuffer_ && (e.audio.segments.unshift(e.audio.initSegment), e.audio.bytes += e.audio.initSegment.byteLength), this.appendAudioInitSegment_ = !1);
67232      var t = !1;
67233      this.videoBuffer_ && e.video.bytes ? (e.video.segments.unshift(e.video.initSegment), e.video.bytes += e.video.initSegment.byteLength, this.concatAndAppendSegments_(e.video, this.videoBuffer_)) : !this.videoBuffer_ || !this.audioDisabled_ && this.audioBuffer_ || (t = !0), Ql(this, e.captions, e.metadata), !this.audioDisabled_ && this.audioBuffer_ && this.concatAndAppendSegments_(e.audio, this.audioBuffer_), this.pendingBuffers_.length = 0, t && this.trigger("updateend"), this.bufferUpdating_ = !1;
67234    }
67235  }, {
67236    key: "concatAndAppendSegments_",
67237    value: function value(e, t) {
67238      var i = 0,
67239          n = void 0;
67240
67241      if (e.bytes) {
67242        n = new Uint8Array(e.bytes), e.segments.forEach(function (e) {
67243          n.set(e, i), i += e.byteLength;
67244        });
67245
67246        try {
67247          t.updating = !0, t.appendBuffer(n);
67248        } catch (e) {
67249          this.mediaSource_.player_ && this.mediaSource_.player_.error({
67250            code: -3,
67251            type: "APPEND_BUFFER_ERR",
67252            message: e.message,
67253            originalError: e
67254          });
67255        }
67256      }
67257    }
67258  }, {
67259    key: "abort",
67260    value: function value() {
67261      this.videoBuffer_ && this.videoBuffer_.abort(), !this.audioDisabled_ && this.audioBuffer_ && this.audioBuffer_.abort(), this.transmuxer_ && this.transmuxer_.postMessage({
67262        action: "reset"
67263      }), this.pendingBuffers_.length = 0, this.bufferUpdating_ = !1;
67264    }
67265  }, {
67266    key: "dispose",
67267    value: function value() {
67268      this.transmuxer_ && this.transmuxer_.terminate(), this.trigger("dispose"), this.off();
67269    }
67270  }]), Ec);
67271
67272  function Ec(e, t) {
67273    al(this, Ec);
67274    var i = cl(this, (Ec.__proto__ || Object.getPrototypeOf(Ec)).call(this, as.EventTarget));
67275    i.timestampOffset_ = 0, i.pendingBuffers_ = [], i.bufferUpdating_ = !1, i.mediaSource_ = e, i.codecs_ = t, i.audioCodec_ = null, i.videoCodec_ = null, i.audioDisabled_ = !1, i.appendAudioInitSegment_ = !0, i.gopBuffer_ = [], i.timeMapping_ = 0, i.safeAppend_ = 11 <= as.browser.IE_VERSION;
67276    var n = {
67277      remux: !1,
67278      alignGopsAtEnd: i.safeAppend_
67279    };
67280    return i.codecs_.forEach(function (e) {
67281      Tc(e) ? i.audioCodec_ = e : Sc(e) && (i.videoCodec_ = e);
67282    }), i.transmuxer_ = new kc(), i.transmuxer_.postMessage({
67283      action: "init",
67284      options: n
67285    }), i.transmuxer_.onmessage = function (e) {
67286      return "data" === e.data.action ? i.data_(e) : "done" === e.data.action ? i.done_(e) : "gopInfo" === e.data.action ? i.appendGopInfo_(e) : "videoSegmentTimingInfo" === e.data.action ? i.videoSegmentTimingInfo_(e.data.videoSegmentTimingInfo) : void 0;
67287    }, Object.defineProperty(i, "timestampOffset", {
67288      get: function get() {
67289        return this.timestampOffset_;
67290      },
67291      set: function set(e) {
67292        "number" == typeof e && 0 <= e && (this.timestampOffset_ = e, this.appendAudioInitSegment_ = !0, this.gopBuffer_.length = 0, this.timeMapping_ = 0, this.transmuxer_.postMessage({
67293          action: "setTimestampOffset",
67294          timestampOffset: e
67295        }));
67296      }
67297    }), Object.defineProperty(i, "appendWindowStart", {
67298      get: function get() {
67299        return (this.videoBuffer_ || this.audioBuffer_).appendWindowStart;
67300      },
67301      set: function set(e) {
67302        this.videoBuffer_ && (this.videoBuffer_.appendWindowStart = e), this.audioBuffer_ && (this.audioBuffer_.appendWindowStart = e);
67303      }
67304    }), Object.defineProperty(i, "updating", {
67305      get: function get() {
67306        return !!(this.bufferUpdating_ || !this.audioDisabled_ && this.audioBuffer_ && this.audioBuffer_.updating || this.videoBuffer_ && this.videoBuffer_.updating);
67307      }
67308    }), Object.defineProperty(i, "buffered", {
67309      get: function get() {
67310        return function (e, t, i) {
67311          var n = null,
67312              r = null,
67313              s = 0,
67314              a = [],
67315              o = [];
67316          if (!e && !t) return as.createTimeRange();
67317          if (!e) return t.buffered;
67318          if (!t) return e.buffered;
67319          if (i) return e.buffered;
67320          if (0 === e.buffered.length && 0 === t.buffered.length) return as.createTimeRange();
67321
67322          for (var u = e.buffered, l = t.buffered, c = u.length; c--;) {
67323            a.push({
67324              time: u.start(c),
67325              type: "start"
67326            }), a.push({
67327              time: u.end(c),
67328              type: "end"
67329            });
67330          }
67331
67332          for (c = l.length; c--;) {
67333            a.push({
67334              time: l.start(c),
67335              type: "start"
67336            }), a.push({
67337              time: l.end(c),
67338              type: "end"
67339            });
67340          }
67341
67342          for (a.sort(function (e, t) {
67343            return e.time - t.time;
67344          }), c = 0; c < a.length; c++) {
67345            "start" === a[c].type ? 2 === ++s && (n = a[c].time) : "end" === a[c].type && 1 === --s && (r = a[c].time), null !== n && null !== r && (o.push([n, r]), r = n = null);
67346          }
67347
67348          return as.createTimeRanges(o);
67349        }(this.videoBuffer_, this.audioBuffer_, this.audioDisabled_);
67350      }
67351    }), i;
67352  }
67353
67354  var xc = (ll(Ac, as.EventTarget), ol(Ac, [{
67355    key: "addSeekableRange_",
67356    value: function value(e, t) {
67357      var i = void 0;
67358      if (this.duration !== 1 / 0) throw (i = new Error("MediaSource.addSeekableRange() can only be invoked when the duration is Infinity")).name = "InvalidStateError", i.code = 11, i;
67359      (t > this.nativeMediaSource_.duration || isNaN(this.nativeMediaSource_.duration)) && (this.nativeMediaSource_.duration = t);
67360    }
67361  }, {
67362    key: "addSourceBuffer",
67363    value: function value(e) {
67364      var t = void 0,
67365          i = bc(e);
67366
67367      if (/^(video|audio)\/mp2t$/i.test(i.type)) {
67368        var n = [];
67369        i.parameters && i.parameters.codecs && (n = i.parameters.codecs.split(","), n = (n = gc(n)).filter(function (e) {
67370          return Tc(e) || Sc(e);
67371        })), 0 === n.length && (n = ["avc1.4d400d", "mp4a.40.2"]), t = new wc(this, n), 0 !== this.sourceBuffers.length && (this.sourceBuffers[0].createRealSourceBuffers_(), t.createRealSourceBuffers_(), this.sourceBuffers[0].audioDisabled_ = !0);
67372      } else t = this.nativeMediaSource_.addSourceBuffer(e);
67373
67374      return this.sourceBuffers.push(t), t;
67375    }
67376  }, {
67377    key: "dispose",
67378    value: function value() {
67379      this.trigger("dispose"), this.off(), this.sourceBuffers.forEach(function (e) {
67380        e.dispose && e.dispose();
67381      }), this.sourceBuffers.length = 0;
67382    }
67383  }]), Ac);
67384
67385  function Ac() {
67386    al(this, Ac);
67387    var s = cl(this, (Ac.__proto__ || Object.getPrototypeOf(Ac)).call(this)),
67388        e = void 0;
67389
67390    for (e in s.nativeMediaSource_ = new y.MediaSource(), s.nativeMediaSource_) {
67391      e in Ac.prototype || "function" != typeof s.nativeMediaSource_[e] || (s[e] = s.nativeMediaSource_[e].bind(s.nativeMediaSource_));
67392    }
67393
67394    return s.duration_ = NaN, Object.defineProperty(s, "duration", {
67395      get: function get() {
67396        return this.duration_ === 1 / 0 ? this.duration_ : this.nativeMediaSource_.duration;
67397      },
67398      set: function set(e) {
67399        (this.duration_ = e) === 1 / 0 || (this.nativeMediaSource_.duration = e);
67400      }
67401    }), Object.defineProperty(s, "seekable", {
67402      get: function get() {
67403        return this.duration_ === 1 / 0 ? as.createTimeRanges([[0, this.nativeMediaSource_.duration]]) : this.nativeMediaSource_.seekable;
67404      }
67405    }), Object.defineProperty(s, "readyState", {
67406      get: function get() {
67407        return this.nativeMediaSource_.readyState;
67408      }
67409    }), Object.defineProperty(s, "activeSourceBuffers", {
67410      get: function get() {
67411        return this.activeSourceBuffers_;
67412      }
67413    }), s.sourceBuffers = [], s.activeSourceBuffers_ = [], s.updateActiveSourceBuffers_ = function () {
67414      if (s.activeSourceBuffers_.length = 0, 1 === s.sourceBuffers.length) {
67415        var e = s.sourceBuffers[0];
67416        return e.appendAudioInitSegment_ = !0, e.audioDisabled_ = !e.audioCodec_, void s.activeSourceBuffers_.push(e);
67417      }
67418
67419      for (var i = !1, n = !0, t = 0; t < s.player_.audioTracks().length; t++) {
67420        var r = s.player_.audioTracks()[t];
67421
67422        if (r.enabled && "main" !== r.kind) {
67423          n = !(i = !0);
67424          break;
67425        }
67426      }
67427
67428      s.sourceBuffers.forEach(function (e, t) {
67429        if (e.appendAudioInitSegment_ = !0, e.videoCodec_ && e.audioCodec_) e.audioDisabled_ = i;else if (e.videoCodec_ && !e.audioCodec_) e.audioDisabled_ = !0, n = !1;else if (!e.videoCodec_ && e.audioCodec_ && (e.audioDisabled_ = t ? n : !n, e.audioDisabled_)) return;
67430        s.activeSourceBuffers_.push(e);
67431      });
67432    }, s.onPlayerMediachange_ = function () {
67433      s.sourceBuffers.forEach(function (e) {
67434        e.appendAudioInitSegment_ = !0;
67435      });
67436    }, s.onHlsReset_ = function () {
67437      s.sourceBuffers.forEach(function (e) {
67438        e.transmuxer_ && e.transmuxer_.postMessage({
67439          action: "resetCaptions"
67440        });
67441      });
67442    }, s.onHlsSegmentTimeMapping_ = function (t) {
67443      s.sourceBuffers.forEach(function (e) {
67444        return e.timeMapping_ = t.mapping;
67445      });
67446    }, ["sourceopen", "sourceclose", "sourceended"].forEach(function (e) {
67447      this.nativeMediaSource_.addEventListener(e, this.trigger.bind(this));
67448    }, s), s.on("sourceopen", function (e) {
67449      var t = h.querySelector('[src="' + s.url_ + '"]');
67450      t && (s.player_ = as(t.parentNode), s.player_ && (s.player_.tech_.on("hls-reset", s.onHlsReset_), s.player_.tech_.on("hls-segment-time-mapping", s.onHlsSegmentTimeMapping_), s.player_.audioTracks && s.player_.audioTracks() && (s.player_.audioTracks().on("change", s.updateActiveSourceBuffers_), s.player_.audioTracks().on("addtrack", s.updateActiveSourceBuffers_), s.player_.audioTracks().on("removetrack", s.updateActiveSourceBuffers_)), s.player_.on("mediachange", s.onPlayerMediachange_)));
67451    }), s.on("sourceended", function (e) {
67452      for (var t = $l(s.duration), i = 0; i < s.sourceBuffers.length; i++) {
67453        var n = s.sourceBuffers[i],
67454            r = n.metadataTrack_ && n.metadataTrack_.cues;
67455        r && r.length && (r[r.length - 1].endTime = t);
67456      }
67457    }), s.on("sourceclose", function (e) {
67458      this.sourceBuffers.forEach(function (e) {
67459        e.transmuxer_ && e.transmuxer_.terminate();
67460      }), this.sourceBuffers.length = 0, this.player_ && (this.player_.audioTracks && this.player_.audioTracks() && (this.player_.audioTracks().off("change", this.updateActiveSourceBuffers_), this.player_.audioTracks().off("addtrack", this.updateActiveSourceBuffers_), this.player_.audioTracks().off("removetrack", this.updateActiveSourceBuffers_)), this.player_.el_ && this.player_.off("mediachange", this.onPlayerMediachange_), this.player_.tech_ && this.player_.tech_.el_ && (this.player_.tech_.off("hls-reset", this.onHlsReset_), this.player_.tech_.off("hls-segment-time-mapping", this.onHlsSegmentTimeMapping_)));
67461    }), s;
67462  }
67463
67464  var Ic = 0;
67465  as.mediaSources = {};
67466
67467  function Pc(e, t) {
67468    var i = as.mediaSources[e];
67469    if (!i) throw new Error("Media Source not found (Video.js)");
67470    i.trigger({
67471      type: "sourceopen",
67472      swfId: t
67473    });
67474  }
67475
67476  function Lc() {
67477    return !!y.MediaSource && !!y.MediaSource.isTypeSupported && y.MediaSource.isTypeSupported('video/mp4;codecs="avc1.4d400d,mp4a.40.2"');
67478  }
67479
67480  function Oc() {
67481    if (this.MediaSource = {
67482      open: Pc,
67483      supportsNativeMediaSources: Lc
67484    }, Lc()) return new xc();
67485    throw new Error("Cannot use create a virtual MediaSource for this video");
67486  }
67487
67488  Oc.open = Pc, Oc.supportsNativeMediaSources = Lc;
67489  var Dc = {
67490    createObjectURL: function createObjectURL(e) {
67491      var t = void 0;
67492      return e instanceof xc ? (t = y.URL.createObjectURL(e.nativeMediaSource_), e.url_ = t) : e instanceof xc ? (t = "blob:vjs-media-source/" + Ic, Ic++, as.mediaSources[t] = e, t) : (t = y.URL.createObjectURL(e), e.url_ = t);
67493    }
67494  };
67495  as.MediaSource = Oc, as.URL = Dc;
67496
67497  function Nc(e, t) {
67498    for (var a = void 0, o = Bc(e, {
67499      duration: t.duration,
67500      minimumUpdatePeriod: t.minimumUpdatePeriod
67501    }), i = 0; i < t.playlists.length; i++) {
67502      var n = dl(o, t.playlists[i]);
67503      n ? o = n : a = !0;
67504    }
67505
67506    return hl(t, function (e, t, i, n) {
67507      if (e.playlists && e.playlists.length) {
67508        var r = e.playlists[0].id,
67509            s = dl(o, e.playlists[0]);
67510        s && ((o = s).mediaGroups[t][i][n].playlists[0] = o.playlists[r], a = !1);
67511      }
67512    }), a ? null : o;
67513  }
67514
67515  function Rc(e) {
67516    var t = e.byterange.offset + e.byterange.length - 1;
67517    return e.uri + "-" + e.byterange.offset + "-" + t;
67518  }
67519
67520  function Uc(e, t) {
67521    var i,
67522        n,
67523        r = {};
67524
67525    for (var s in e) {
67526      var a = e[s].sidx;
67527
67528      if (a) {
67529        var o = Rc(a);
67530        if (!t[o]) break;
67531        var u = t[o].sidxInfo;
67532        i = u, n = a, (Boolean(!i.map && !n.map) || Boolean(i.map && n.map && i.map.byterange.offset === n.map.byterange.offset && i.map.byterange.length === n.map.byterange.length)) && i.uri === n.uri && i.byterange.offset === n.byterange.offset && i.byterange.length === n.byterange.length && (r[o] = t[o]);
67533      }
67534    }
67535
67536    return r;
67537  }
67538
67539  function Mc(e, t, i, n, r) {
67540    var s = {
67541      uri: sl(n.handleManifestRedirects, e.resolvedUri),
67542      byterange: e.byterange,
67543      playlist: t
67544    };
67545    return i(as.mergeOptions(s, {
67546      responseType: "arraybuffer",
67547      headers: Rl(s)
67548    }), r);
67549  }
67550
67551  var Bc = as.mergeOptions,
67552      jc = (ll(Fc, as.EventTarget), ol(Fc, [{
67553    key: "setupChildLoader",
67554    value: function value(e, t) {
67555      this.masterPlaylistLoader_ = e, this.childPlaylist_ = t;
67556    }
67557  }, {
67558    key: "dispose",
67559    value: function value() {
67560      this.trigger("dispose"), this.stopRequest(), this.loadedPlaylists_ = {}, y.clearTimeout(this.minimumUpdatePeriodTimeout_), y.clearTimeout(this.mediaRequest_), y.clearTimeout(this.mediaUpdateTimeout), this.off();
67561    }
67562  }, {
67563    key: "hasPendingRequest",
67564    value: function value() {
67565      return this.request || this.mediaRequest_;
67566    }
67567  }, {
67568    key: "stopRequest",
67569    value: function value() {
67570      if (this.request) {
67571        var e = this.request;
67572        this.request = null, e.onreadystatechange = null, e.abort();
67573      }
67574    }
67575  }, {
67576    key: "sidxRequestFinished_",
67577    value: function value(r, s, a, o) {
67578      var u = this;
67579      return function (e, t) {
67580        if (u.request) {
67581          if (u.request = null, e) return u.error = {
67582            status: t.status,
67583            message: "DASH playlist request error at URL: " + r.uri,
67584            response: t.response,
67585            code: 2
67586          }, a && (u.state = a), u.trigger("error"), o(s, null);
67587          var i = new Uint8Array(t.response),
67588              n = $o.parseSidx(i.subarray(8));
67589          return o(s, n);
67590        }
67591      };
67592    }
67593  }, {
67594    key: "media",
67595    value: function value(i) {
67596      var n = this;
67597      if (!i) return this.media_;
67598      if ("HAVE_NOTHING" === this.state) throw new Error("Cannot switch media playlist from " + this.state);
67599      var r = this.state;
67600
67601      if ("string" == typeof i) {
67602        if (!this.master.playlists[i]) throw new Error("Unknown playlist URI: " + i);
67603        i = this.master.playlists[i];
67604      }
67605
67606      var e = !this.media_ || i.id !== this.media_.id;
67607      if (e && this.loadedPlaylists_[i.id] && this.loadedPlaylists_[i.id].endList) return this.state = "HAVE_METADATA", this.media_ = i, void (e && (this.trigger("mediachanging"), this.trigger("mediachange")));
67608      if (e) if (this.media_ && this.trigger("mediachanging"), i.sidx) {
67609        var t = void 0,
67610            s = void 0;
67611        s = this.masterPlaylistLoader_ ? (t = this.masterPlaylistLoader_.master, this.masterPlaylistLoader_.sidxMapping_) : (t = this.master, this.sidxMapping_);
67612        var a = Rc(i.sidx);
67613        s[a] = {
67614          sidxInfo: i.sidx
67615        }, this.request = Mc(i.sidx, i, this.hls_.xhr, {
67616          handleManifestRedirects: this.handleManifestRedirects
67617        }, this.sidxRequestFinished_(i, t, r, function (e, t) {
67618          if (!e || !t) throw new Error("failed to request sidx");
67619          s[a].sidx = t, n.haveMetadata({
67620            startingState: r,
67621            playlist: e.playlists[i.id]
67622          });
67623        }));
67624      } else this.mediaRequest_ = y.setTimeout(this.haveMetadata.bind(this, {
67625        startingState: r,
67626        playlist: i
67627      }), 0);
67628    }
67629  }, {
67630    key: "haveMetadata",
67631    value: function value(e) {
67632      var t = e.startingState,
67633          i = e.playlist;
67634      this.state = "HAVE_METADATA", this.loadedPlaylists_[i.id] = i, this.mediaRequest_ = null, this.refreshMedia_(i.id), "HAVE_MASTER" === t ? this.trigger("loadedmetadata") : this.trigger("mediachange");
67635    }
67636  }, {
67637    key: "pause",
67638    value: function value() {
67639      this.stopRequest(), y.clearTimeout(this.mediaUpdateTimeout), y.clearTimeout(this.minimumUpdatePeriodTimeout_), "HAVE_NOTHING" === this.state && (this.started = !1);
67640    }
67641  }, {
67642    key: "load",
67643    value: function value(e) {
67644      var t = this;
67645      y.clearTimeout(this.mediaUpdateTimeout), y.clearTimeout(this.minimumUpdatePeriodTimeout_);
67646      var i = this.media();
67647
67648      if (e) {
67649        var n = i ? i.targetDuration / 2 * 1e3 : 5e3;
67650        this.mediaUpdateTimeout = y.setTimeout(function () {
67651          return t.load();
67652        }, n);
67653      } else this.started ? i && !i.endList ? this.trigger("mediaupdatetimeout") : this.trigger("loadedplaylist") : this.start();
67654    }
67655  }, {
67656    key: "parseMasterXml",
67657    value: function value() {
67658      var a = To(this.masterXml_, {
67659        manifestUri: this.srcUrl,
67660        clientOffset: this.clientOffset_,
67661        sidxMapping: this.sidxMapping_
67662      });
67663      a.uri = this.srcUrl;
67664
67665      for (var e = 0; e < a.playlists.length; e++) {
67666        var t = "placeholder-uri-" + e;
67667        a.playlists[e].uri = t;
67668      }
67669
67670      return hl(a, function (e, t, i, n) {
67671        if (e.playlists && e.playlists.length) {
67672          var r = "placeholder-uri-" + t + "-" + i + "-" + n,
67673              s = pl(0, r);
67674          e.playlists[0].uri = r, e.playlists[0].id = s, a.playlists[s] = e.playlists[0], a.playlists[r] = e.playlists[0];
67675        }
67676      }), fl(a), ml(a), a;
67677    }
67678  }, {
67679    key: "start",
67680    value: function value() {
67681      var i = this;
67682      this.started = !0, this.masterPlaylistLoader_ ? this.mediaRequest_ = y.setTimeout(this.haveMaster_.bind(this), 0) : this.request = this.hls_.xhr({
67683        uri: this.srcUrl,
67684        withCredentials: this.withCredentials
67685      }, function (e, t) {
67686        if (i.request) {
67687          if (i.request = null, e) return i.error = {
67688            status: t.status,
67689            message: "DASH playlist request error at URL: " + i.srcUrl,
67690            responseText: t.responseText,
67691            code: 2
67692          }, "HAVE_NOTHING" === i.state && (i.started = !1), i.trigger("error");
67693          i.masterXml_ = t.responseText, t.responseHeaders && t.responseHeaders.date ? i.masterLoaded_ = Date.parse(t.responseHeaders.date) : i.masterLoaded_ = Date.now(), i.srcUrl = sl(i.handleManifestRedirects, i.srcUrl, t), i.syncClientServerClock_(i.onClientServerClockSync_.bind(i));
67694        }
67695      });
67696    }
67697  }, {
67698    key: "syncClientServerClock_",
67699    value: function value(n) {
67700      var r = this,
67701          s = So(this.masterXml_);
67702      return null === s ? (this.clientOffset_ = this.masterLoaded_ - Date.now(), n()) : "DIRECT" === s.method ? (this.clientOffset_ = s.value - Date.now(), n()) : void (this.request = this.hls_.xhr({
67703        uri: rl(this.srcUrl, s.value),
67704        method: s.method,
67705        withCredentials: this.withCredentials
67706      }, function (e, t) {
67707        if (r.request) {
67708          if (e) return r.clientOffset_ = r.masterLoaded_ - Date.now(), n();
67709          var i = void 0;
67710          i = "HEAD" === s.method ? t.responseHeaders && t.responseHeaders.date ? Date.parse(t.responseHeaders.date) : r.masterLoaded_ : Date.parse(t.responseText), r.clientOffset_ = i - Date.now(), n();
67711        }
67712      }));
67713    }
67714  }, {
67715    key: "haveMaster_",
67716    value: function value() {
67717      this.state = "HAVE_MASTER", this.mediaRequest_ = null, this.masterPlaylistLoader_ ? this.media_ || this.media(this.childPlaylist_) : (this.master = this.parseMasterXml(), this.trigger("loadedplaylist"));
67718    }
67719  }, {
67720    key: "onClientServerClockSync_",
67721    value: function value() {
67722      var e = this;
67723      this.haveMaster_(), this.hasPendingRequest() || this.media_ || this.media(this.master.playlists[0]), this.master && this.master.minimumUpdatePeriod && (this.minimumUpdatePeriodTimeout_ = y.setTimeout(function () {
67724        e.trigger("minimumUpdatePeriod");
67725      }, this.master.minimumUpdatePeriod));
67726    }
67727  }, {
67728    key: "refreshXml_",
67729    value: function value() {
67730      var o = this;
67731      this.request = this.hls_.xhr({
67732        uri: this.srcUrl,
67733        withCredentials: this.withCredentials
67734      }, function (e, t) {
67735        if (o.request) {
67736          if (o.request = null, e) return o.error = {
67737            status: t.status,
67738            message: "DASH playlist request error at URL: " + o.srcUrl,
67739            responseText: t.responseText,
67740            code: 2
67741          }, "HAVE_NOTHING" === o.state && (o.started = !1), o.trigger("error");
67742          o.masterXml_ = t.responseText, o.sidxMapping_ = function (e, t, i, s) {
67743            var n = To(e, {
67744              manifestUri: t,
67745              clientOffset: i
67746            }),
67747                a = Uc(n.playlists, s);
67748            return hl(n, function (e, t, i, n) {
67749              if (e.playlists && e.playlists.length) {
67750                var r = e.playlists;
67751                a = Bc(a, Uc(r, s));
67752              }
67753            }), a;
67754          }(o.masterXml_, o.srcUrl, o.clientOffset_, o.sidxMapping_);
67755          var i = o.parseMasterXml(),
67756              n = Nc(o.master, i),
67757              r = o.media().sidx;
67758          if (n) if (r) {
67759            var s = Rc(r);
67760
67761            if (!o.sidxMapping_[s]) {
67762              var a = o.media();
67763              o.request = Mc(a.sidx, a, o.hls_.xhr, {
67764                handleManifestRedirects: o.handleManifestRedirects
67765              }, o.sidxRequestFinished_(a, i, o.state, function (e, t) {
67766                if (!e || !t) throw new Error("failed to request sidx on minimumUpdatePeriod");
67767                o.sidxMapping_[s].sidx = t, o.minimumUpdatePeriodTimeout_ = y.setTimeout(function () {
67768                  o.trigger("minimumUpdatePeriod");
67769                }, o.master.minimumUpdatePeriod), o.refreshMedia_(o.media().id);
67770              }));
67771            }
67772          } else o.master = n;
67773          o.minimumUpdatePeriodTimeout_ = y.setTimeout(function () {
67774            o.trigger("minimumUpdatePeriod");
67775          }, o.master.minimumUpdatePeriod);
67776        }
67777      });
67778    }
67779  }, {
67780    key: "refreshMedia_",
67781    value: function value(e) {
67782      var t = this;
67783      if (!e) throw new Error("refreshMedia_ must take a media id");
67784      var i = void 0,
67785          n = void 0;
67786      n = this.masterPlaylistLoader_ ? (i = this.masterPlaylistLoader_.master, this.masterPlaylistLoader_.parseMasterXml()) : (i = this.master, this.parseMasterXml());
67787      var r = Nc(i, n);
67788      r ? (this.masterPlaylistLoader_ ? this.masterPlaylistLoader_.master = r : this.master = r, this.media_ = r.playlists[e]) : (this.media_ = n.playlists[e], this.trigger("playlistunchanged")), this.media().endList || (this.mediaUpdateTimeout = y.setTimeout(function () {
67789        t.trigger("mediaupdatetimeout");
67790      }, gl(this.media(), !!r))), this.trigger("loadedplaylist");
67791    }
67792  }]), Fc);
67793
67794  function Fc(e, t) {
67795    var i = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {},
67796        n = arguments[3];
67797    al(this, Fc);
67798    var r = cl(this, (Fc.__proto__ || Object.getPrototypeOf(Fc)).call(this)),
67799        s = i.withCredentials,
67800        a = void 0 !== s && s,
67801        o = i.handleManifestRedirects,
67802        u = void 0 !== o && o;
67803    if (r.hls_ = t, r.withCredentials = a, r.handleManifestRedirects = u, !e) throw new Error("A non-empty playlist URL or playlist is required");
67804    return r.on("minimumUpdatePeriod", function () {
67805      r.refreshXml_();
67806    }), r.on("mediaupdatetimeout", function () {
67807      r.refreshMedia_(r.media().id);
67808    }), r.state = "HAVE_NOTHING", r.loadedPlaylists_ = {}, "string" == typeof e ? (r.srcUrl = e, r.sidxMapping_ = {}, cl(r)) : (r.setupChildLoader(n, e), r);
67809  }
67810
67811  function Hc(e) {
67812    return as.log.debug ? as.log.debug.bind(as, "VHS:", e + " >") : function () {};
67813  }
67814
67815  function Vc() {}
67816
67817  var qc = (ol(Wc, [{
67818    key: "createSourceBuffer_",
67819    value: function value(e, t) {
67820      var i = this;
67821      this.sourceBuffer_ = this.mediaSource.addSourceBuffer(e), this.logger_("created SourceBuffer"), t && (t.trigger("sourcebufferadded"), this.mediaSource.sourceBuffers.length < 2) ? t.on("sourcebufferadded", function () {
67822        i.start_();
67823      }) : this.start_();
67824    }
67825  }, {
67826    key: "start_",
67827    value: function value() {
67828      var t = this;
67829      this.started_ = !0, this.onUpdateendCallback_ = function () {
67830        var e = t.pendingCallback_;
67831        t.pendingCallback_ = null, t.sourceBuffer_.removing = !1, t.logger_("buffered [" + Xl(t.buffered()) + "]"), e && e(), t.runCallback_();
67832      }, this.sourceBuffer_.addEventListener("updateend", this.onUpdateendCallback_), this.runCallback_();
67833    }
67834  }, {
67835    key: "abort",
67836    value: function value(e) {
67837      var t = this;
67838      this.processedAppend_ && this.queueCallback_(function () {
67839        t.sourceBuffer_.abort();
67840      }, e);
67841    }
67842  }, {
67843    key: "appendBuffer",
67844    value: function value(e, t) {
67845      var i = this;
67846      this.processedAppend_ = !0, this.queueCallback_(function () {
67847        e.videoSegmentTimingInfoCallback && i.sourceBuffer_.addEventListener("videoSegmentTimingInfo", e.videoSegmentTimingInfoCallback), i.sourceBuffer_.appendBuffer(e.bytes);
67848      }, function () {
67849        e.videoSegmentTimingInfoCallback && i.sourceBuffer_.removeEventListener("videoSegmentTimingInfo", e.videoSegmentTimingInfoCallback), t();
67850      });
67851    }
67852  }, {
67853    key: "buffered",
67854    value: function value() {
67855      return this.sourceBuffer_ ? this.sourceBuffer_.buffered : as.createTimeRanges();
67856    }
67857  }, {
67858    key: "remove",
67859    value: function value(e, t, i) {
67860      var n = this,
67861          r = 2 < arguments.length && void 0 !== i ? i : Vc;
67862      this.processedAppend_ && this.queueCallback_(function () {
67863        n.logger_("remove [" + e + " => " + t + "]"), n.sourceBuffer_.removing = !0, n.sourceBuffer_.remove(e, t);
67864      }, r);
67865    }
67866  }, {
67867    key: "updating",
67868    value: function value() {
67869      return !this.sourceBuffer_ || this.sourceBuffer_.updating || !!this.pendingCallback_ && this.pendingCallback_ !== Vc;
67870    }
67871  }, {
67872    key: "timestampOffset",
67873    value: function value(e) {
67874      var t = this;
67875      return "undefined" != typeof e && (this.queueCallback_(function () {
67876        t.sourceBuffer_.timestampOffset = e, t.runCallback_();
67877      }), this.timestampOffset_ = e), this.timestampOffset_;
67878    }
67879  }, {
67880    key: "queueCallback_",
67881    value: function value(e, t) {
67882      this.callbacks_.push([e.bind(this), t]), this.runCallback_();
67883    }
67884  }, {
67885    key: "runCallback_",
67886    value: function value() {
67887      var e = void 0;
67888      !this.updating() && this.callbacks_.length && this.started_ && (e = this.callbacks_.shift(), this.pendingCallback_ = e[1], e[0]());
67889    }
67890  }, {
67891    key: "dispose",
67892    value: function value() {
67893      function e() {
67894        t.sourceBuffer_ && "open" === t.mediaSource.readyState && t.sourceBuffer_.abort(), t.sourceBuffer_.removeEventListener("updateend", e);
67895      }
67896
67897      var t = this;
67898      this.sourceBuffer_.removeEventListener("updateend", this.onUpdateendCallback_), this.sourceBuffer_.removing ? this.sourceBuffer_.addEventListener("updateend", e) : e();
67899    }
67900  }]), Wc);
67901
67902  function Wc(e, t, i, n) {
67903    al(this, Wc), this.callbacks_ = [], this.pendingCallback_ = null, this.timestampOffset_ = 0, this.mediaSource = e, this.processedAppend_ = !1, this.type_ = i, this.mimeType_ = t, this.logger_ = Hc("SourceUpdater[" + i + "][" + t + "]"), "closed" === e.readyState ? e.addEventListener("sourceopen", this.createSourceBuffer_.bind(this, t, n)) : this.createSourceBuffer_(t, n);
67904  }
67905
67906  function zc(e) {
67907    e.forEach(function (e) {
67908      e.abort();
67909    });
67910  }
67911
67912  function Gc(e, t) {
67913    return t.timedout ? {
67914      status: t.status,
67915      message: "HLS request timed-out at URL: " + t.uri,
67916      code: ih,
67917      xhr: t
67918    } : t.aborted ? {
67919      status: t.status,
67920      message: "HLS request aborted at URL: " + t.uri,
67921      code: nh,
67922      xhr: t
67923    } : e ? {
67924      status: t.status,
67925      message: "HLS request errored at URL: " + t.uri,
67926      code: th,
67927      xhr: t
67928    } : null;
67929  }
67930
67931  function Xc(i, n, r) {
67932    var s = 0,
67933        a = !1;
67934    return function (e, t) {
67935      if (!a) return e ? (a = !0, zc(i), r(e, t)) : (s += 1) === i.length ? (t.endOfAllRequests = Date.now(), t.encryptedBytes ? function (n, r, s) {
67936        n.addEventListener("message", function e(t) {
67937          if (t.data.source === r.requestId) {
67938            n.removeEventListener("message", e);
67939            var i = t.data.decrypted;
67940            return r.bytes = new Uint8Array(i.bytes, i.byteOffset, i.byteLength), s(null, r);
67941          }
67942        });
67943        var e = void 0;
67944        e = r.key.bytes.slice ? r.key.bytes.slice() : new Uint32Array(Array.prototype.slice.call(r.key.bytes)), n.postMessage(Bl({
67945          source: r.requestId,
67946          encrypted: r.encryptedBytes,
67947          key: e,
67948          iv: r.key.iv
67949        }), [r.encryptedBytes.buffer, e.buffer]);
67950      }(n, t, r) : r(null, t)) : void 0;
67951    };
67952  }
67953
67954  function Kc(t, i) {
67955    return function (e) {
67956      return t.stats = as.mergeOptions(t.stats, function (e) {
67957        var t = e.target,
67958            i = {
67959          bandwidth: 1 / 0,
67960          bytesReceived: 0,
67961          roundTripTime: Date.now() - t.requestTime || 0
67962        };
67963        return i.bytesReceived = e.loaded, i.bandwidth = Math.floor(i.bytesReceived / i.roundTripTime * 8 * 1e3), i;
67964      }(e)), !t.stats.firstBytesReceivedAt && t.stats.bytesReceived && (t.stats.firstBytesReceivedAt = Date.now()), i(e, t);
67965    };
67966  }
67967
67968  function Yc(e, t, i, n, r, s, a) {
67969    var o = [],
67970        u = Xc(o, i, a);
67971
67972    if (r.key && !r.key.bytes) {
67973      var l = e(as.mergeOptions(t, {
67974        uri: r.key.resolvedUri,
67975        responseType: "arraybuffer"
67976      }), function (s, a) {
67977        return function (e, t) {
67978          var i = t.response,
67979              n = Gc(e, t);
67980          if (n) return a(n, s);
67981          if (16 !== i.byteLength) return a({
67982            status: t.status,
67983            message: "Invalid HLS key at URL: " + t.uri,
67984            code: th,
67985            xhr: t
67986          }, s);
67987          var r = new DataView(i);
67988          return s.key.bytes = new Uint32Array([r.getUint32(0), r.getUint32(4), r.getUint32(8), r.getUint32(12)]), a(null, s);
67989        };
67990      }(r, u));
67991      o.push(l);
67992    }
67993
67994    if (r.map && !r.map.bytes) {
67995      var c = e(as.mergeOptions(t, {
67996        uri: r.map.resolvedUri,
67997        responseType: "arraybuffer",
67998        headers: Rl(r.map)
67999      }), function (r, s, a) {
68000        return function (e, t) {
68001          var i = t.response,
68002              n = Gc(e, t);
68003          return n ? a(n, r) : 0 === i.byteLength ? a({
68004            status: t.status,
68005            message: "Empty HLS segment content at URL: " + t.uri,
68006            code: th,
68007            xhr: t
68008          }, r) : (r.map.bytes = new Uint8Array(t.response), s && !s.isInitialized() && s.init(), r.map.timescales = eu.timescale(r.map.bytes), r.map.videoTrackIds = eu.videoTrackIds(r.map.bytes), a(null, r));
68009        };
68010      }(r, n, u));
68011      o.push(c);
68012    }
68013
68014    var h = e(as.mergeOptions(t, {
68015      uri: r.resolvedUri,
68016      responseType: "arraybuffer",
68017      headers: Rl(r)
68018    }), function (s, a, o) {
68019      return function (e, t) {
68020        var i = t.response,
68021            n = Gc(e, t),
68022            r = void 0;
68023        return n ? o(n, s) : 0 === i.byteLength ? o({
68024          status: t.status,
68025          message: "Empty HLS segment content at URL: " + t.uri,
68026          code: th,
68027          xhr: t
68028        }, s) : (s.stats = function (e) {
68029          return {
68030            bandwidth: e.bandwidth,
68031            bytesReceived: e.bytesReceived || 0,
68032            roundTripTime: e.roundTripTime || 0
68033          };
68034        }(t), s.key ? s.encryptedBytes = new Uint8Array(t.response) : s.bytes = new Uint8Array(t.response), a && s.map && s.map.bytes && (a.isInitialized() || a.init(), (r = a.parse(s.bytes, s.map.videoTrackIds, s.map.timescales)) && r.captions && (s.captionStreams = r.captionStreams, s.fmp4Captions = r.captions)), o(null, s));
68035      };
68036    }(r, n, u));
68037    return h.addEventListener("progress", Kc(r, s)), o.push(h), function () {
68038      return zc(o);
68039    };
68040  }
68041
68042  function $c(e, t) {
68043    var i;
68044    return e && (i = y.getComputedStyle(e)) ? i[t] : "";
68045  }
68046
68047  function Qc(e, n) {
68048    var r = e.slice();
68049    e.sort(function (e, t) {
68050      var i = n(e, t);
68051      return 0 === i ? r.indexOf(e) - r.indexOf(t) : i;
68052    });
68053  }
68054
68055  function Jc(e, t) {
68056    var i = void 0,
68057        n = void 0;
68058    return e.attributes.BANDWIDTH && (i = e.attributes.BANDWIDTH), i = i || y.Number.MAX_VALUE, t.attributes.BANDWIDTH && (n = t.attributes.BANDWIDTH), i - (n = n || y.Number.MAX_VALUE);
68059  }
68060
68061  function Zc(e) {
68062    return "number" == typeof e && isFinite(e);
68063  }
68064
68065  var eh = {
68066    GOAL_BUFFER_LENGTH: 30,
68067    MAX_GOAL_BUFFER_LENGTH: 60,
68068    GOAL_BUFFER_LENGTH_RATE: 1,
68069    INITIAL_BANDWIDTH: 4194304,
68070    BANDWIDTH_VARIANCE: 1.2,
68071    BUFFER_LOW_WATER_LINE: 0,
68072    MAX_BUFFER_LOW_WATER_LINE: 30,
68073    BUFFER_LOW_WATER_LINE_RATE: 1
68074  },
68075      th = 2,
68076      ih = -101,
68077      nh = -102,
68078      rh = (ll(sh, as.EventTarget), ol(sh, [{
68079    key: "resetStats_",
68080    value: function value() {
68081      this.mediaBytesTransferred = 0, this.mediaRequests = 0, this.mediaRequestsAborted = 0, this.mediaRequestsTimedout = 0, this.mediaRequestsErrored = 0, this.mediaTransferDuration = 0, this.mediaSecondsLoaded = 0;
68082    }
68083  }, {
68084    key: "dispose",
68085    value: function value() {
68086      this.trigger("dispose"), this.state = "DISPOSED", this.pause(), this.abort_(), this.sourceUpdater_ && this.sourceUpdater_.dispose(), this.resetStats_(), this.captionParser_ && this.captionParser_.reset(), this.checkBufferTimeout_ && y.clearTimeout(this.checkBufferTimeout_), this.syncController_ && this.triggerSyncInfoUpdate_ && this.syncController_.off("syncinfoupdate", this.triggerSyncInfoUpdate_), this.off();
68087    }
68088  }, {
68089    key: "abort",
68090    value: function value() {
68091      "WAITING" === this.state ? (this.abort_(), this.state = "READY", this.paused() || this.monitorBuffer_()) : this.pendingSegment_ && (this.pendingSegment_ = null);
68092    }
68093  }, {
68094    key: "abort_",
68095    value: function value() {
68096      this.pendingSegment_ && this.pendingSegment_.abortRequests(), this.pendingSegment_ = null;
68097    }
68098  }, {
68099    key: "error",
68100    value: function value(e) {
68101      return "undefined" != typeof e && (this.error_ = e), this.pendingSegment_ = null, this.error_;
68102    }
68103  }, {
68104    key: "endOfStream",
68105    value: function value() {
68106      this.ended_ = !0, this.pause(), this.trigger("ended");
68107    }
68108  }, {
68109    key: "buffered_",
68110    value: function value() {
68111      return this.sourceUpdater_ ? this.sourceUpdater_.buffered() : as.createTimeRanges();
68112    }
68113  }, {
68114    key: "initSegment",
68115    value: function value(e, t) {
68116      var i = 1 < arguments.length && void 0 !== t && t;
68117      if (!e) return null;
68118      var n = jl(e),
68119          r = this.initSegments_[n];
68120      return i && !r && e.bytes && (this.initSegments_[n] = r = {
68121        resolvedUri: e.resolvedUri,
68122        byterange: e.byterange,
68123        bytes: e.bytes,
68124        timescales: e.timescales,
68125        videoTrackIds: e.videoTrackIds
68126      }), r || e;
68127    }
68128  }, {
68129    key: "segmentKey",
68130    value: function value(e, t) {
68131      var i = 1 < arguments.length && void 0 !== t && t;
68132      if (!e) return null;
68133      var n = Fl(e),
68134          r = this.keyCache_[n];
68135      this.cacheEncryptionKeys_ && i && !r && e.bytes && (this.keyCache_[n] = r = {
68136        resolvedUri: e.resolvedUri,
68137        bytes: e.bytes
68138      });
68139      var s = {
68140        resolvedUri: (r || e).resolvedUri
68141      };
68142      return r && (s.bytes = r.bytes), s;
68143    }
68144  }, {
68145    key: "couldBeginLoading_",
68146    value: function value() {
68147      return this.playlist_ && (this.sourceUpdater_ || this.mimeType_ && "INIT" === this.state) && !this.paused();
68148    }
68149  }, {
68150    key: "load",
68151    value: function value() {
68152      if (this.monitorBuffer_(), this.playlist_) {
68153        if (this.syncController_.setDateTimeMapping(this.playlist_), "INIT" === this.state && this.couldBeginLoading_()) return this.init_();
68154        !this.couldBeginLoading_() || "READY" !== this.state && "INIT" !== this.state || (this.state = "READY");
68155      }
68156    }
68157  }, {
68158    key: "init_",
68159    value: function value() {
68160      return this.state = "READY", this.sourceUpdater_ = new qc(this.mediaSource_, this.mimeType_, this.loaderType_, this.sourceBufferEmitter_), this.resetEverything(), this.monitorBuffer_();
68161    }
68162  }, {
68163    key: "playlist",
68164    value: function value(e, t) {
68165      var i = 1 < arguments.length && void 0 !== t ? t : {};
68166
68167      if (e) {
68168        var n = this.playlist_,
68169            r = this.pendingSegment_;
68170        this.playlist_ = e, this.xhrOptions_ = i, "INIT" === this.state && (e.syncInfo = {
68171          mediaSequence: e.mediaSequence,
68172          time: 0
68173        });
68174        var s = null;
68175        if (n && (n.id ? s = n.id : n.uri && (s = n.uri)), this.logger_("playlist update [" + s + " => " + (e.id || e.uri) + "]"), this.trigger("syncinfoupdate"), "INIT" === this.state && this.couldBeginLoading_()) return this.init_();
68176
68177        if (n && n.uri === e.uri) {
68178          var a = e.mediaSequence - n.mediaSequence;
68179          this.logger_("live window shift [" + a + "]"), null !== this.mediaIndex && (this.mediaIndex -= a), r && (r.mediaIndex -= a, 0 <= r.mediaIndex && (r.segment = e.segments[r.mediaIndex])), this.syncController_.saveExpiredSegmentInfo(n, e);
68180        } else null !== this.mediaIndex && this.resyncLoader();
68181      }
68182    }
68183  }, {
68184    key: "pause",
68185    value: function value() {
68186      this.checkBufferTimeout_ && (y.clearTimeout(this.checkBufferTimeout_), this.checkBufferTimeout_ = null);
68187    }
68188  }, {
68189    key: "paused",
68190    value: function value() {
68191      return null === this.checkBufferTimeout_;
68192    }
68193  }, {
68194    key: "mimeType",
68195    value: function value(e, t) {
68196      this.mimeType_ || (this.mimeType_ = e, this.sourceBufferEmitter_ = t, "INIT" === this.state && this.couldBeginLoading_() && this.init_());
68197    }
68198  }, {
68199    key: "resetEverything",
68200    value: function value(e) {
68201      this.ended_ = !1, this.resetLoader(), this.remove(0, 1 / 0, e), this.captionParser_ && this.captionParser_.clearAllCaptions(), this.trigger("reseteverything");
68202    }
68203  }, {
68204    key: "resetLoader",
68205    value: function value() {
68206      this.fetchAtBuffer_ = !1, this.resyncLoader();
68207    }
68208  }, {
68209    key: "resyncLoader",
68210    value: function value() {
68211      this.mediaIndex = null, this.syncPoint_ = null, this.abort();
68212    }
68213  }, {
68214    key: "remove",
68215    value: function value(e, t, i) {
68216      if (t === 1 / 0 && (t = this.duration_()), this.sourceUpdater_ && this.sourceUpdater_.remove(e, t, i), Yl(e, t, this.segmentMetadataTrack_), this.inbandTextTracks_) for (var n in this.inbandTextTracks_) {
68217        Yl(e, t, this.inbandTextTracks_[n]);
68218      }
68219    }
68220  }, {
68221    key: "monitorBuffer_",
68222    value: function value() {
68223      this.checkBufferTimeout_ && y.clearTimeout(this.checkBufferTimeout_), this.checkBufferTimeout_ = y.setTimeout(this.monitorBufferTick_.bind(this), 1);
68224    }
68225  }, {
68226    key: "monitorBufferTick_",
68227    value: function value() {
68228      "READY" === this.state && this.fillBuffer_(), this.checkBufferTimeout_ && y.clearTimeout(this.checkBufferTimeout_), this.checkBufferTimeout_ = y.setTimeout(this.monitorBufferTick_.bind(this), 500);
68229    }
68230  }, {
68231    key: "fillBuffer_",
68232    value: function value() {
68233      if (!this.sourceUpdater_.updating()) {
68234        this.syncPoint_ || (this.syncPoint_ = this.syncController_.getSyncPoint(this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_()));
68235        var e = this.checkBuffer_(this.buffered_(), this.playlist_, this.mediaIndex, this.hasPlayed_(), this.currentTime_(), this.syncPoint_);
68236        e && (this.isEndOfStream_(e.mediaIndex) ? this.endOfStream() : e.mediaIndex === this.playlist_.segments.length - 1 && "ended" === this.mediaSource_.readyState && !this.seeking_() || (e.timeline !== this.currentTimeline_ && (this.syncController_.reset(), e.timestampOffset = e.startOfSegment, this.captionParser_ && this.captionParser_.clearAllCaptions()), this.loadSegment_(e)));
68237      }
68238    }
68239  }, {
68240    key: "isEndOfStream_",
68241    value: function value(e, t) {
68242      return function (e, t, i) {
68243        if (!e || !t) return !1;
68244        var n = i === e.segments.length;
68245        return e.endList && "open" === t.readyState && n;
68246      }(1 < arguments.length && void 0 !== t ? t : this.playlist_, this.mediaSource_, e) && !this.sourceUpdater_.updating();
68247    }
68248  }, {
68249    key: "checkBuffer_",
68250    value: function value(e, t, i, n, r, s) {
68251      var a = 0,
68252          o = void 0;
68253      e.length && (a = e.end(e.length - 1));
68254      var u = Math.max(0, a - r);
68255      if (!t.segments.length) return null;
68256      if (u >= this.goalBufferLength_()) return null;
68257      if (!n && 1 <= u) return null;
68258      if (null === s) return i = this.getSyncSegmentCandidate_(t), this.generateSegmentInfo_(t, i, null, !0);
68259      if (null !== i) return t.segments[i], o = a, this.generateSegmentInfo_(t, i + 1, o, !1);
68260
68261      if (this.fetchAtBuffer_) {
68262        var l = tc.getMediaInfoForTime(t, a, s.segmentIndex, s.time);
68263        i = l.mediaIndex, o = l.startTime;
68264      } else {
68265        var c = tc.getMediaInfoForTime(t, r, s.segmentIndex, s.time);
68266        i = c.mediaIndex, o = c.startTime;
68267      }
68268
68269      return this.generateSegmentInfo_(t, i, o, !1);
68270    }
68271  }, {
68272    key: "getSyncSegmentCandidate_",
68273    value: function value(e) {
68274      var t = this;
68275      if (-1 === this.currentTimeline_) return 0;
68276      var i = e.segments.map(function (e, t) {
68277        return {
68278          timeline: e.timeline,
68279          segmentIndex: t
68280        };
68281      }).filter(function (e) {
68282        return e.timeline === t.currentTimeline_;
68283      });
68284      return i.length ? i[Math.min(i.length - 1, 1)].segmentIndex : Math.max(e.segments.length - 1, 0);
68285    }
68286  }, {
68287    key: "generateSegmentInfo_",
68288    value: function value(e, t, i, n) {
68289      if (t < 0 || t >= e.segments.length) return null;
68290      var r = e.segments[t];
68291      return {
68292        requestId: "segment-loader-" + Math.random(),
68293        uri: r.resolvedUri,
68294        mediaIndex: t,
68295        isSyncRequest: n,
68296        startOfSegment: i,
68297        playlist: e,
68298        bytes: null,
68299        encryptedBytes: null,
68300        timestampOffset: null,
68301        timeline: r.timeline,
68302        duration: r.duration,
68303        segment: r
68304      };
68305    }
68306  }, {
68307    key: "abortRequestEarly_",
68308    value: function value(e) {
68309      if (this.hls_.tech_.paused() || !this.xhrOptions_.timeout || !this.playlist_.attributes.BANDWIDTH) return !1;
68310      if (Date.now() - (e.firstBytesReceivedAt || Date.now()) < 1e3) return !1;
68311
68312      var t = this.currentTime_(),
68313          i = e.bandwidth,
68314          n = this.pendingSegment_.duration,
68315          r = tc.estimateSegmentRequestTime(n, i, this.playlist_, e.bytesReceived),
68316          s = function (e, t, i) {
68317        var n = 2 < arguments.length && void 0 !== i ? i : 1;
68318        return ((e.length ? e.end(e.length - 1) : 0) - t) / n;
68319      }(this.buffered_(), t, this.hls_.tech_.playbackRate()) - 1;
68320
68321      if (r <= s) return !1;
68322
68323      var a = function (e) {
68324        var t = e.master,
68325            i = e.currentTime,
68326            n = e.bandwidth,
68327            r = e.duration,
68328            s = e.segmentDuration,
68329            a = e.timeUntilRebuffer,
68330            o = e.currentTimeline,
68331            u = e.syncController,
68332            l = t.playlists.filter(function (e) {
68333          return !tc.isIncompatible(e);
68334        }),
68335            c = l.filter(tc.isEnabled);
68336        c.length || (c = l.filter(function (e) {
68337          return !tc.isDisabled(e);
68338        }));
68339        var h = c.filter(tc.hasAttribute.bind(null, "BANDWIDTH")).map(function (e) {
68340          var t = u.getSyncPoint(e, r, o, i) ? 1 : 2;
68341          return {
68342            playlist: e,
68343            rebufferingImpact: tc.estimateSegmentRequestTime(s, n, e) * t - a
68344          };
68345        }),
68346            d = h.filter(function (e) {
68347          return e.rebufferingImpact <= 0;
68348        });
68349        return Qc(d, function (e, t) {
68350          return Jc(t.playlist, e.playlist);
68351        }), d.length ? d[0] : (Qc(h, function (e, t) {
68352          return e.rebufferingImpact - t.rebufferingImpact;
68353        }), h[0] || null);
68354      }({
68355        master: this.hls_.playlists.master,
68356        currentTime: t,
68357        bandwidth: i,
68358        duration: this.duration_(),
68359        segmentDuration: n,
68360        timeUntilRebuffer: s,
68361        currentTimeline: this.currentTimeline_,
68362        syncController: this.syncController_
68363      });
68364
68365      if (a) {
68366        var o = r - s - a.rebufferingImpact,
68367            u = .5;
68368        return s <= 1 / 30 && (u = 1), !(!a.playlist || a.playlist.uri === this.playlist_.uri || o < u) && (this.bandwidth = a.playlist.attributes.BANDWIDTH * eh.BANDWIDTH_VARIANCE + 1, this.abort(), this.trigger("earlyabort"), !0);
68369      }
68370    }
68371  }, {
68372    key: "handleProgress_",
68373    value: function value(e, t) {
68374      this.pendingSegment_ && t.requestId === this.pendingSegment_.requestId && !this.abortRequestEarly_(t.stats) && this.trigger("progress");
68375    }
68376  }, {
68377    key: "loadSegment_",
68378    value: function value(e) {
68379      this.state = "WAITING", this.pendingSegment_ = e, this.trimBackBuffer_(e), e.abortRequests = Yc(this.hls_.xhr, this.xhrOptions_, this.decrypter_, this.captionParser_, this.createSimplifiedSegmentObj_(e), this.handleProgress_.bind(this), this.segmentRequestFinished_.bind(this));
68380    }
68381  }, {
68382    key: "trimBackBuffer_",
68383    value: function value(e) {
68384      var t = function (e, t, i) {
68385        var n = t - 30;
68386        e.length && (n = Math.max(n, e.start(0)));
68387        var r = t - i;
68388        return Math.min(r, n);
68389      }(this.seekable_(), this.currentTime_(), this.playlist_.targetDuration || 10);
68390
68391      0 < t && this.remove(0, t);
68392    }
68393  }, {
68394    key: "createSimplifiedSegmentObj_",
68395    value: function value(e) {
68396      var t = e.segment,
68397          i = {
68398        resolvedUri: t.resolvedUri,
68399        byterange: t.byterange,
68400        requestId: e.requestId
68401      };
68402
68403      if (t.key) {
68404        var n = t.key.iv || new Uint32Array([0, 0, 0, e.mediaIndex + e.playlist.mediaSequence]);
68405        i.key = this.segmentKey(t.key), i.key.iv = n;
68406      }
68407
68408      return t.map && (i.map = this.initSegment(t.map)), i;
68409    }
68410  }, {
68411    key: "segmentRequestFinished_",
68412    value: function value(e, t) {
68413      if (this.mediaRequests += 1, t.stats && (this.mediaBytesTransferred += t.stats.bytesReceived, this.mediaTransferDuration += t.stats.roundTripTime), this.pendingSegment_) {
68414        if (t.requestId === this.pendingSegment_.requestId) {
68415          if (e) return this.pendingSegment_ = null, this.state = "READY", e.code === nh ? void (this.mediaRequestsAborted += 1) : (this.pause(), e.code === ih ? (this.mediaRequestsTimedout += 1, this.bandwidth = 1, this.roundTrip = NaN, void this.trigger("bandwidthupdate")) : (this.mediaRequestsErrored += 1, this.error(e), void this.trigger("error")));
68416          this.bandwidth = t.stats.bandwidth, this.roundTrip = t.stats.roundTripTime, t.map && (t.map = this.initSegment(t.map, !0)), t.key && this.segmentKey(t.key, !0), this.processSegmentResponse_(t);
68417        }
68418      } else this.mediaRequestsAborted += 1;
68419    }
68420  }, {
68421    key: "processSegmentResponse_",
68422    value: function value(e) {
68423      var t = this.pendingSegment_;
68424      t.bytes = e.bytes, e.map && (t.segment.map.bytes = e.map.bytes), t.endOfAllRequests = e.endOfAllRequests, e.fmp4Captions && (function (e, t, i) {
68425        for (var n in i) {
68426          if (!e[n]) {
68427            t.trigger({
68428              type: "usage",
68429              name: "hls-608"
68430            });
68431            var r = t.textTracks().getTrackById(n);
68432            e[n] = r || t.addRemoteTextTrack({
68433              kind: "captions",
68434              id: n,
68435              label: n
68436            }, !1).track;
68437          }
68438        }
68439      }(this.inbandTextTracks_, this.hls_.tech_, e.captionStreams), function (e) {
68440        var r = e.inbandTextTracks,
68441            t = e.captionArray,
68442            s = e.timestampOffset;
68443
68444        if (t) {
68445          var a = window.WebKitDataCue || window.VTTCue;
68446          t.forEach(function (e) {
68447            var t = e.stream,
68448                i = e.startTime,
68449                n = e.endTime;
68450            r[t] && (i += s, n += s, r[t].addCue(new a(i, n, e.text)));
68451          });
68452        }
68453      }({
68454        inbandTextTracks: this.inbandTextTracks_,
68455        captionArray: e.fmp4Captions,
68456        timestampOffset: 0
68457      }), this.captionParser_ && this.captionParser_.clearParsedCaptions()), this.handleSegment_();
68458    }
68459  }, {
68460    key: "handleSegment_",
68461    value: function value() {
68462      var e = this;
68463
68464      if (this.pendingSegment_) {
68465        var t = this.pendingSegment_,
68466            i = t.segment,
68467            n = this.syncController_.probeSegmentInfo(t);
68468        "undefined" == typeof this.startingMedia_ && n && (n.containsAudio || n.containsVideo) && (this.startingMedia_ = {
68469          containsAudio: n.containsAudio,
68470          containsVideo: n.containsVideo
68471        });
68472
68473        var r = function (e, t, i) {
68474          return "main" === e && t && i ? i.containsAudio || i.containsVideo ? t.containsVideo && !i.containsVideo ? "Only audio found in segment when we expected video. We can't switch to audio only from a stream that had video. To get rid of this message, please add codec information to the manifest." : !t.containsVideo && i.containsVideo ? "Video found in segment when we expected only audio. We can't switch to a stream with video from an audio only stream. To get rid of this message, please add codec information to the manifest." : null : "Neither audio nor video found in segment." : null;
68475        }(this.loaderType_, this.startingMedia_, n);
68476
68477        if (r) return this.error({
68478          message: r,
68479          blacklistDuration: 1 / 0
68480        }), void this.trigger("error");
68481        if (t.isSyncRequest) return this.trigger("syncinfoupdate"), this.pendingSegment_ = null, void (this.state = "READY");
68482
68483        if (null !== t.timestampOffset && t.timestampOffset !== this.sourceUpdater_.timestampOffset()) {
68484          if (n && n.segmentTimestampInfo) {
68485            var s = n.segmentTimestampInfo[0].ptsTime,
68486                a = n.segmentTimestampInfo[0].dtsTime;
68487            t.timestampOffset -= s - a;
68488          }
68489
68490          this.sourceUpdater_.timestampOffset(t.timestampOffset), this.trigger("timestampoffset");
68491        }
68492
68493        var o = this.syncController_.mappingForTimeline(t.timeline);
68494
68495        if (null !== o && this.trigger({
68496          type: "segmenttimemapping",
68497          mapping: o
68498        }), this.state = "APPENDING", i.map) {
68499          var u = jl(i.map);
68500
68501          if (!this.activeInitSegmentId_ || this.activeInitSegmentId_ !== u) {
68502            var l = this.initSegment(i.map);
68503            this.sourceUpdater_.appendBuffer({
68504              bytes: l.bytes
68505            }, function () {
68506              e.activeInitSegmentId_ = u;
68507            });
68508          }
68509        }
68510
68511        t.byteLength = t.bytes.byteLength, "number" == typeof i.start && "number" == typeof i.end ? this.mediaSecondsLoaded += i.end - i.start : this.mediaSecondsLoaded += i.duration, this.logger_(function (e) {
68512          var t = e.segment,
68513              i = t.start,
68514              n = t.end,
68515              r = e.playlist,
68516              s = r.mediaSequence,
68517              a = r.id,
68518              o = r.segments,
68519              u = void 0 === o ? [] : o,
68520              l = e.mediaIndex,
68521              c = e.timeline;
68522          return ["appending [" + l + "] of [" + s + ", " + (s + u.length) + "] from playlist [" + a + "]", "[" + i + " => " + n + "] in timeline [" + c + "]"].join(" ");
68523        }(t)), this.sourceUpdater_.appendBuffer({
68524          bytes: t.bytes,
68525          videoSegmentTimingInfoCallback: this.handleVideoSegmentTimingInfo_.bind(this, t.requestId)
68526        }, this.handleUpdateEnd_.bind(this));
68527      } else this.state = "READY";
68528    }
68529  }, {
68530    key: "handleVideoSegmentTimingInfo_",
68531    value: function value(e, t) {
68532      if (this.pendingSegment_ && e === this.pendingSegment_.requestId) {
68533        var i = this.pendingSegment_.segment;
68534        i.videoTimingInfo || (i.videoTimingInfo = {}), i.videoTimingInfo.transmuxerPrependedSeconds = t.videoSegmentTimingInfo.prependedContentDuration || 0, i.videoTimingInfo.transmuxedPresentationStart = t.videoSegmentTimingInfo.start.presentation, i.videoTimingInfo.transmuxedPresentationEnd = t.videoSegmentTimingInfo.end.presentation, i.videoTimingInfo.baseMediaDecodeTime = t.videoSegmentTimingInfo.baseMediaDecodeTime;
68535      }
68536    }
68537  }, {
68538    key: "handleUpdateEnd_",
68539    value: function value() {
68540      if (!this.pendingSegment_) return this.state = "READY", void (this.paused() || this.monitorBuffer_());
68541      var e = this.pendingSegment_,
68542          t = e.segment,
68543          i = null !== this.mediaIndex;
68544      this.pendingSegment_ = null, this.recordThroughput_(e), this.addSegmentMetadataCue_(e), this.state = "READY", this.mediaIndex = e.mediaIndex, this.fetchAtBuffer_ = !0, this.currentTimeline_ = e.timeline, this.trigger("syncinfoupdate"), t.end && this.currentTime_() - t.end > 3 * e.playlist.targetDuration ? this.resetEverything() : (i && this.trigger("bandwidthupdate"), this.trigger("progress"), this.isEndOfStream_(e.mediaIndex + 1, e.playlist) && this.endOfStream(), this.paused() || this.monitorBuffer_());
68545    }
68546  }, {
68547    key: "recordThroughput_",
68548    value: function value(e) {
68549      var t = this.throughput.rate,
68550          i = Date.now() - e.endOfAllRequests + 1,
68551          n = Math.floor(e.byteLength / i * 8 * 1e3);
68552      this.throughput.rate += (n - t) / ++this.throughput.count;
68553    }
68554  }, {
68555    key: "addSegmentMetadataCue_",
68556    value: function value(e) {
68557      if (this.segmentMetadataTrack_) {
68558        var t = e.segment,
68559            i = t.start,
68560            n = t.end;
68561
68562        if (Zc(i) && Zc(n)) {
68563          Yl(i, n, this.segmentMetadataTrack_);
68564          var r = y.WebKitDataCue || y.VTTCue,
68565              s = {
68566            custom: t.custom,
68567            dateTimeObject: t.dateTimeObject,
68568            dateTimeString: t.dateTimeString,
68569            bandwidth: e.playlist.attributes.BANDWIDTH,
68570            resolution: e.playlist.attributes.RESOLUTION,
68571            codecs: e.playlist.attributes.CODECS,
68572            byteLength: e.byteLength,
68573            uri: e.uri,
68574            timeline: e.timeline,
68575            playlist: e.playlist.id,
68576            start: i,
68577            end: n
68578          },
68579              a = new r(i, n, JSON.stringify(s));
68580          a.value = s, this.segmentMetadataTrack_.addCue(a);
68581        }
68582      }
68583    }
68584  }]), sh);
68585
68586  function sh(e) {
68587    al(this, sh);
68588    var t = cl(this, (sh.__proto__ || Object.getPrototypeOf(sh)).call(this));
68589    if (!e) throw new TypeError("Initialization settings are required");
68590    if ("function" != typeof e.currentTime) throw new TypeError("No currentTime getter specified");
68591    if (!e.mediaSource) throw new TypeError("No MediaSource specified");
68592    return t.bandwidth = e.bandwidth, t.throughput = {
68593      rate: 0,
68594      count: 0
68595    }, t.roundTrip = NaN, t.resetStats_(), t.mediaIndex = null, t.hasPlayed_ = e.hasPlayed, t.currentTime_ = e.currentTime, t.seekable_ = e.seekable, t.seeking_ = e.seeking, t.duration_ = e.duration, t.mediaSource_ = e.mediaSource, t.hls_ = e.hls, t.loaderType_ = e.loaderType, t.startingMedia_ = void 0, t.segmentMetadataTrack_ = e.segmentMetadataTrack, t.goalBufferLength_ = e.goalBufferLength, t.sourceType_ = e.sourceType, t.inbandTextTracks_ = e.inbandTextTracks, t.state_ = "INIT", t.checkBufferTimeout_ = null, t.error_ = void 0, t.currentTimeline_ = -1, t.pendingSegment_ = null, t.mimeType_ = null, t.sourceUpdater_ = null, t.xhrOptions_ = null, t.activeInitSegmentId_ = null, t.initSegments_ = {}, t.cacheEncryptionKeys_ = e.cacheEncryptionKeys, t.keyCache_ = {}, "main" === t.loaderType_ ? t.captionParser_ = new yu() : t.captionParser_ = null, t.decrypter_ = e.decrypter, t.syncController_ = e.syncController, t.syncPoint_ = {
68596      segmentIndex: 0,
68597      time: 0
68598    }, t.triggerSyncInfoUpdate_ = function () {
68599      return t.trigger("syncinfoupdate");
68600    }, t.syncController_.on("syncinfoupdate", t.triggerSyncInfoUpdate_), t.mediaSource_.addEventListener("sourceopen", function () {
68601      return t.ended_ = !1;
68602    }), t.fetchAtBuffer_ = !1, t.logger_ = Hc("SegmentLoader[" + t.loaderType_ + "]"), Object.defineProperty(t, "state", {
68603      get: function get() {
68604        return this.state_;
68605      },
68606      set: function set(e) {
68607        e !== this.state_ && (this.logger_(this.state_ + " -> " + e), this.state_ = e);
68608      }
68609    }), t;
68610  }
68611
68612  function ah(e) {
68613    return decodeURIComponent(escape(String.fromCharCode.apply(null, e)));
68614  }
68615
68616  var oh = new Uint8Array("\n\n".split("").map(function (e) {
68617    return e.charCodeAt(0);
68618  })),
68619      uh = (ll(lh, rh), ol(lh, [{
68620    key: "buffered_",
68621    value: function value() {
68622      if (!this.subtitlesTrack_ || !this.subtitlesTrack_.cues.length) return as.createTimeRanges();
68623      var e = this.subtitlesTrack_.cues,
68624          t = e[0].startTime,
68625          i = e[e.length - 1].startTime;
68626      return as.createTimeRanges([[t, i]]);
68627    }
68628  }, {
68629    key: "initSegment",
68630    value: function value(e, t) {
68631      var i = 1 < arguments.length && void 0 !== t && t;
68632      if (!e) return null;
68633      var n = jl(e),
68634          r = this.initSegments_[n];
68635
68636      if (i && !r && e.bytes) {
68637        var s = oh.byteLength + e.bytes.byteLength,
68638            a = new Uint8Array(s);
68639        a.set(e.bytes), a.set(oh, e.bytes.byteLength), this.initSegments_[n] = r = {
68640          resolvedUri: e.resolvedUri,
68641          byterange: e.byterange,
68642          bytes: a
68643        };
68644      }
68645
68646      return r || e;
68647    }
68648  }, {
68649    key: "couldBeginLoading_",
68650    value: function value() {
68651      return this.playlist_ && this.subtitlesTrack_ && !this.paused();
68652    }
68653  }, {
68654    key: "init_",
68655    value: function value() {
68656      return this.state = "READY", this.resetEverything(), this.monitorBuffer_();
68657    }
68658  }, {
68659    key: "track",
68660    value: function value(e) {
68661      return "undefined" == typeof e || (this.subtitlesTrack_ = e, "INIT" === this.state && this.couldBeginLoading_() && this.init_()), this.subtitlesTrack_;
68662    }
68663  }, {
68664    key: "remove",
68665    value: function value(e, t) {
68666      Yl(e, t, this.subtitlesTrack_);
68667    }
68668  }, {
68669    key: "fillBuffer_",
68670    value: function value() {
68671      var e = this;
68672      this.syncPoint_ || (this.syncPoint_ = this.syncController_.getSyncPoint(this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_()));
68673      var t = this.checkBuffer_(this.buffered_(), this.playlist_, this.mediaIndex, this.hasPlayed_(), this.currentTime_(), this.syncPoint_);
68674
68675      if (t = this.skipEmptySegments_(t)) {
68676        if (null === this.syncController_.timestampOffsetForTimeline(t.timeline)) return this.syncController_.one("timestampoffset", function () {
68677          e.state = "READY", e.paused() || e.monitorBuffer_();
68678        }), void (this.state = "WAITING_ON_TIMELINE");
68679        this.loadSegment_(t);
68680      }
68681    }
68682  }, {
68683    key: "skipEmptySegments_",
68684    value: function value(e) {
68685      for (; e && e.segment.empty;) {
68686        e = this.generateSegmentInfo_(e.playlist, e.mediaIndex + 1, e.startOfSegment + e.duration, e.isSyncRequest);
68687      }
68688
68689      return e;
68690    }
68691  }, {
68692    key: "handleSegment_",
68693    value: function value() {
68694      var t = this;
68695
68696      if (this.pendingSegment_ && this.subtitlesTrack_) {
68697        this.state = "APPENDING";
68698        var e = this.pendingSegment_,
68699            i = e.segment;
68700
68701        if ("function" != typeof y.WebVTT && this.subtitlesTrack_ && this.subtitlesTrack_.tech_) {
68702          var n = void 0,
68703              r = function r() {
68704            t.subtitlesTrack_.tech_.off("vttjsloaded", n), t.error({
68705              message: "Error loading vtt.js"
68706            }), t.state = "READY", t.pause(), t.trigger("error");
68707          };
68708
68709          return n = function n() {
68710            t.subtitlesTrack_.tech_.off("vttjserror", r), t.handleSegment_();
68711          }, this.state = "WAITING_ON_VTTJS", this.subtitlesTrack_.tech_.one("vttjsloaded", n), void this.subtitlesTrack_.tech_.one("vttjserror", r);
68712        }
68713
68714        i.requested = !0;
68715
68716        try {
68717          this.parseVTTCues_(e);
68718        } catch (e) {
68719          return this.error({
68720            message: e.message
68721          }), this.state = "READY", this.pause(), this.trigger("error");
68722        }
68723
68724        if (this.updateTimeMapping_(e, this.syncController_.timelines[e.timeline], this.playlist_), e.isSyncRequest) return this.trigger("syncinfoupdate"), this.pendingSegment_ = null, void (this.state = "READY");
68725        e.byteLength = e.bytes.byteLength, this.mediaSecondsLoaded += i.duration, e.cues.length && this.remove(e.cues[0].endTime, e.cues[e.cues.length - 1].endTime), e.cues.forEach(function (e) {
68726          t.subtitlesTrack_.addCue(t.featuresNativeTextTracks_ ? new y.VTTCue(e.startTime, e.endTime, e.text) : e);
68727        }), this.handleUpdateEnd_();
68728      } else this.state = "READY";
68729    }
68730  }, {
68731    key: "parseVTTCues_",
68732    value: function value(t) {
68733      var e = void 0,
68734          i = !1;
68735      "function" == typeof y.TextDecoder ? e = new y.TextDecoder("utf8") : (e = y.WebVTT.StringDecoder(), i = !0);
68736      var n = new y.WebVTT.Parser(y, y.vttjs, e);
68737
68738      if (t.cues = [], t.timestampmap = {
68739        MPEGTS: 0,
68740        LOCAL: 0
68741      }, n.oncue = t.cues.push.bind(t.cues), n.ontimestampmap = function (e) {
68742        return t.timestampmap = e;
68743      }, n.onparsingerror = function (e) {
68744        as.log.warn("Error encountered when parsing cues: " + e.message);
68745      }, t.segment.map) {
68746        var r = t.segment.map.bytes;
68747        i && (r = ah(r)), n.parse(r);
68748      }
68749
68750      var s = t.bytes;
68751      i && (s = ah(s)), n.parse(s), n.flush();
68752    }
68753  }, {
68754    key: "updateTimeMapping_",
68755    value: function value(e, t, i) {
68756      var n = e.segment;
68757      if (t) if (e.cues.length) {
68758        var r = e.timestampmap,
68759            s = r.MPEGTS / 9e4 - r.LOCAL + t.mapping;
68760
68761        if (e.cues.forEach(function (e) {
68762          e.startTime += s, e.endTime += s;
68763        }), !i.syncInfo) {
68764          var a = e.cues[0].startTime,
68765              o = e.cues[e.cues.length - 1].startTime;
68766          i.syncInfo = {
68767            mediaSequence: i.mediaSequence + e.mediaIndex,
68768            time: Math.min(a, o - n.duration)
68769          };
68770        }
68771      } else n.empty = !0;
68772    }
68773  }]), lh);
68774
68775  function lh(e) {
68776    var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : {};
68777    al(this, lh);
68778    var i = cl(this, (lh.__proto__ || Object.getPrototypeOf(lh)).call(this, e, t));
68779    return i.mediaSource_ = null, i.subtitlesTrack_ = null, i.featuresNativeTextTracks_ = e.featuresNativeTextTracks, i;
68780  }
68781
68782  function ch(e, t) {
68783    for (var i = e.cues, n = 0; n < i.length; n++) {
68784      var r = i[n];
68785      if (t >= r.adStartTime && t <= r.adEndTime) return r;
68786    }
68787
68788    return null;
68789  }
68790
68791  var hh = Vu,
68792      dh = [{
68793    name: "VOD",
68794    run: function run(e, t, i, n, r) {
68795      if (i === 1 / 0) return null;
68796      return {
68797        time: 0,
68798        segmentIndex: 0
68799      };
68800    }
68801  }, {
68802    name: "ProgramDateTime",
68803    run: function run(e, t, i, n, r) {
68804      if (!e.datetimeToDisplayTime) return null;
68805      var s = t.segments || [],
68806          a = null,
68807          o = null;
68808      r = r || 0;
68809
68810      for (var u = 0; u < s.length; u++) {
68811        var l = s[u];
68812
68813        if (l.dateTimeObject) {
68814          var c = l.dateTimeObject.getTime() / 1e3 + e.datetimeToDisplayTime,
68815              h = Math.abs(r - c);
68816          if (null !== o && (0 === h || o < h)) break;
68817          o = h, a = {
68818            time: c,
68819            segmentIndex: u
68820          };
68821        }
68822      }
68823
68824      return a;
68825    }
68826  }, {
68827    name: "Segment",
68828    run: function run(e, t, i, n, r) {
68829      var s = t.segments || [],
68830          a = null,
68831          o = null;
68832      r = r || 0;
68833
68834      for (var u = 0; u < s.length; u++) {
68835        var l = s[u];
68836
68837        if (l.timeline === n && "undefined" != typeof l.start) {
68838          var c = Math.abs(r - l.start);
68839          if (null !== o && o < c) break;
68840          (!a || null === o || c <= o) && (o = c, a = {
68841            time: l.start,
68842            segmentIndex: u
68843          });
68844        }
68845      }
68846
68847      return a;
68848    }
68849  }, {
68850    name: "Discontinuity",
68851    run: function run(e, t, i, n, r) {
68852      var s = null;
68853      if (r = r || 0, t.discontinuityStarts && t.discontinuityStarts.length) for (var a = null, o = 0; o < t.discontinuityStarts.length; o++) {
68854        var u = t.discontinuityStarts[o],
68855            l = t.discontinuitySequence + o + 1,
68856            c = e.discontinuities[l];
68857
68858        if (c) {
68859          var h = Math.abs(r - c.time);
68860          if (null !== a && a < h) break;
68861          (!s || null === a || h <= a) && (a = h, s = {
68862            time: c.time,
68863            segmentIndex: u
68864          });
68865        }
68866      }
68867      return s;
68868    }
68869  }, {
68870    name: "Playlist",
68871    run: function run(e, t, i, n, r) {
68872      return t.syncInfo ? {
68873        time: t.syncInfo.time,
68874        segmentIndex: t.syncInfo.mediaSequence - t.mediaSequence
68875      } : null;
68876    }
68877  }],
68878      ph = (ll(fh, as.EventTarget), ol(fh, [{
68879    key: "getSyncPoint",
68880    value: function value(e, t, i, n) {
68881      var r = this.runStrategies_(e, t, i, n);
68882      return r.length ? this.selectSyncPoint_(r, {
68883        key: "time",
68884        value: n
68885      }) : null;
68886    }
68887  }, {
68888    key: "getExpiredTime",
68889    value: function value(e, t) {
68890      if (!e || !e.segments) return null;
68891      var i = this.runStrategies_(e, t, e.discontinuitySequence, 0);
68892      if (!i.length) return null;
68893      var n = this.selectSyncPoint_(i, {
68894        key: "segmentIndex",
68895        value: 0
68896      });
68897      return 0 < n.segmentIndex && (n.time *= -1), Math.abs(n.time + Cl(e, n.segmentIndex, 0));
68898    }
68899  }, {
68900    key: "runStrategies_",
68901    value: function value(e, t, i, n) {
68902      for (var r = [], s = 0; s < dh.length; s++) {
68903        var a = dh[s],
68904            o = a.run(this, e, t, i, n);
68905        o && (o.strategy = a.name, r.push({
68906          strategy: a.name,
68907          syncPoint: o
68908        }));
68909      }
68910
68911      return r;
68912    }
68913  }, {
68914    key: "selectSyncPoint_",
68915    value: function value(e, t) {
68916      for (var i = e[0].syncPoint, n = Math.abs(e[0].syncPoint[t.key] - t.value), r = e[0].strategy, s = 1; s < e.length; s++) {
68917        var a = Math.abs(e[s].syncPoint[t.key] - t.value);
68918        a < n && (n = a, i = e[s].syncPoint, r = e[s].strategy);
68919      }
68920
68921      return this.logger_("syncPoint for [" + t.key + ": " + t.value + "] chosen with strategy [" + r + "]: [time:" + i.time + ", segmentIndex:" + i.segmentIndex + "]"), i;
68922    }
68923  }, {
68924    key: "saveExpiredSegmentInfo",
68925    value: function value(e, t) {
68926      for (var i = t.mediaSequence - e.mediaSequence - 1; 0 <= i; i--) {
68927        var n = e.segments[i];
68928
68929        if (n && "undefined" != typeof n.start) {
68930          t.syncInfo = {
68931            mediaSequence: e.mediaSequence + i,
68932            time: n.start
68933          }, this.logger_("playlist refresh sync: [time:" + t.syncInfo.time + ", mediaSequence: " + t.syncInfo.mediaSequence + "]"), this.trigger("syncinfoupdate");
68934          break;
68935        }
68936      }
68937    }
68938  }, {
68939    key: "setDateTimeMapping",
68940    value: function value(e) {
68941      if (!this.datetimeToDisplayTime && e.segments && e.segments.length && e.segments[0].dateTimeObject) {
68942        var t = e.segments[0].dateTimeObject.getTime() / 1e3;
68943        this.datetimeToDisplayTime = -t;
68944      }
68945    }
68946  }, {
68947    key: "reset",
68948    value: function value() {
68949      this.inspectCache_ = void 0;
68950    }
68951  }, {
68952    key: "probeSegmentInfo",
68953    value: function value(e) {
68954      var t = e.segment,
68955          i = e.playlist,
68956          n = void 0;
68957      return (n = t.map ? this.probeMp4Segment_(e) : this.probeTsSegment_(e)) && this.calculateSegmentTimeMapping_(e, n) && (this.saveDiscontinuitySyncInfo_(e), i.syncInfo || (i.syncInfo = {
68958        mediaSequence: i.mediaSequence + e.mediaIndex,
68959        time: t.start
68960      })), n;
68961    }
68962  }, {
68963    key: "probeMp4Segment_",
68964    value: function value(e) {
68965      var t = e.segment,
68966          i = eu.timescale(t.map.bytes),
68967          n = eu.compositionStartTime(i, e.bytes);
68968      return null !== e.timestampOffset && (e.timestampOffset -= n), {
68969        start: n,
68970        end: n + t.duration
68971      };
68972    }
68973  }, {
68974    key: "probeTsSegment_",
68975    value: function value(e) {
68976      var t = hh(e.bytes, this.inspectCache_),
68977          i = void 0,
68978          n = void 0,
68979          r = void 0;
68980      return t ? (t.video && 2 === t.video.length ? (this.inspectCache_ = t.video[1].dts, i = t.video[0].dtsTime, n = t.video[1].dtsTime, r = t.video) : t.audio && 2 === t.audio.length && (this.inspectCache_ = t.audio[1].dts, i = t.audio[0].dtsTime, n = t.audio[1].dtsTime, r = t.audio), {
68981        segmentTimestampInfo: r,
68982        start: i,
68983        end: n,
68984        containsVideo: t.video && 2 === t.video.length,
68985        containsAudio: t.audio && 2 === t.audio.length
68986      }) : null;
68987    }
68988  }, {
68989    key: "timestampOffsetForTimeline",
68990    value: function value(e) {
68991      return "undefined" == typeof this.timelines[e] ? null : this.timelines[e].time;
68992    }
68993  }, {
68994    key: "mappingForTimeline",
68995    value: function value(e) {
68996      return "undefined" == typeof this.timelines[e] ? null : this.timelines[e].mapping;
68997    }
68998  }, {
68999    key: "calculateSegmentTimeMapping_",
69000    value: function value(e, t) {
69001      var i = e.segment,
69002          n = this.timelines[e.timeline];
69003      if (null !== e.timestampOffset) n = {
69004        time: e.startOfSegment,
69005        mapping: e.startOfSegment - t.start
69006      }, this.timelines[e.timeline] = n, this.trigger("timestampoffset"), this.logger_("time mapping for timeline " + e.timeline + ": [time: " + n.time + "] [mapping: " + n.mapping + "]"), i.start = e.startOfSegment, i.end = t.end + n.mapping;else {
69007        if (!n) return !1;
69008        i.start = t.start + n.mapping, i.end = t.end + n.mapping;
69009      }
69010      return !0;
69011    }
69012  }, {
69013    key: "saveDiscontinuitySyncInfo_",
69014    value: function value(e) {
69015      var t = e.playlist,
69016          i = e.segment;
69017      if (i.discontinuity) this.discontinuities[i.timeline] = {
69018        time: i.start,
69019        accuracy: 0
69020      };else if (t.discontinuityStarts && t.discontinuityStarts.length) for (var n = 0; n < t.discontinuityStarts.length; n++) {
69021        var r = t.discontinuityStarts[n],
69022            s = t.discontinuitySequence + n + 1,
69023            a = r - e.mediaIndex,
69024            o = Math.abs(a);
69025
69026        if (!this.discontinuities[s] || this.discontinuities[s].accuracy > o) {
69027          var u = void 0;
69028          u = a < 0 ? i.start - Cl(t, e.mediaIndex, r) : i.end + Cl(t, e.mediaIndex + 1, r), this.discontinuities[s] = {
69029            time: u,
69030            accuracy: o
69031          };
69032        }
69033      }
69034    }
69035  }, {
69036    key: "dispose",
69037    value: function value() {
69038      this.trigger("dispose"), this.off();
69039    }
69040  }]), fh);
69041
69042  function fh() {
69043    al(this, fh);
69044    var e = cl(this, (fh.__proto__ || Object.getPrototypeOf(fh)).call(this));
69045    return e.inspectCache_ = void 0, e.timelines = [], e.discontinuities = [], e.datetimeToDisplayTime = null, e.logger_ = Hc("SyncController"), e;
69046  }
69047
69048  function mh(e, t) {
69049    e.abort(), e.pause(), t && t.activePlaylistLoader && (t.activePlaylistLoader.pause(), t.activePlaylistLoader = null);
69050  }
69051
69052  function gh(e, t) {
69053    (t.activePlaylistLoader = e).load();
69054  }
69055
69056  function vh(t) {
69057    ["AUDIO", "SUBTITLES", "CLOSED-CAPTIONS"].forEach(function (e) {
69058      Th[e](e, t);
69059    });
69060    var i = t.mediaTypes,
69061        e = t.masterPlaylistLoader,
69062        n = t.tech,
69063        r = t.hls;
69064    ["AUDIO", "SUBTITLES"].forEach(function (e) {
69065      i[e].activeGroup = function (s, a) {
69066        return function (t) {
69067          var e = a.masterPlaylistLoader,
69068              i = a.mediaTypes[s].groups,
69069              n = e.media();
69070          if (!n) return null;
69071          var r = null;
69072          return n.attributes[s] && (r = i[n.attributes[s]]), r = r || i.main, "undefined" == typeof t ? r : null === t ? null : r.filter(function (e) {
69073            return e.id === t.id;
69074          })[0] || null;
69075        };
69076      }(e, t), i[e].activeTrack = Sh[e](e, t), i[e].onGroupChanged = function (o, u) {
69077        return function () {
69078          var e = u.segmentLoaders,
69079              t = e[o],
69080              i = e.main,
69081              n = u.mediaTypes[o],
69082              r = n.activeTrack(),
69083              s = n.activeGroup(r),
69084              a = n.activePlaylistLoader;
69085          mh(t, n), s && (s.playlistLoader ? (t.resyncLoader(), gh(s.playlistLoader, n)) : a && i.resetEverything());
69086        };
69087      }(e, t), i[e].onTrackChanged = function (o, u) {
69088        return function () {
69089          var e = u.segmentLoaders,
69090              t = e[o],
69091              i = e.main,
69092              n = u.mediaTypes[o],
69093              r = n.activeTrack(),
69094              s = n.activeGroup(r),
69095              a = n.activePlaylistLoader;
69096          mh(t, n), s && (s.playlistLoader ? (a !== s.playlistLoader && (t.track && t.track(r), t.resetEverything()), gh(s.playlistLoader, n)) : i.resetEverything());
69097        };
69098      }(e, t);
69099    });
69100    var s = i.AUDIO.activeGroup(),
69101        a = (s.filter(function (e) {
69102      return e["default"];
69103    })[0] || s[0]).id;
69104
69105    function o() {
69106      i.AUDIO.onTrackChanged(), n.trigger({
69107        type: "usage",
69108        name: "hls-audio-change"
69109      });
69110    }
69111
69112    for (var u in i.AUDIO.tracks[a].enabled = !0, i.AUDIO.onTrackChanged(), e.on("mediachange", function () {
69113      ["AUDIO", "SUBTITLES"].forEach(function (e) {
69114        return i[e].onGroupChanged();
69115      });
69116    }), n.audioTracks().addEventListener("change", o), n.remoteTextTracks().addEventListener("change", i.SUBTITLES.onTrackChanged), r.on("dispose", function () {
69117      n.audioTracks().removeEventListener("change", o), n.remoteTextTracks().removeEventListener("change", i.SUBTITLES.onTrackChanged);
69118    }), n.clearTracks("audio"), i.AUDIO.tracks) {
69119      n.audioTracks().addTrack(i.AUDIO.tracks[u]);
69120    }
69121  }
69122
69123  var yh = new hc("./decrypter-worker.worker.js", function (e, t) {
69124    var i,
69125        c,
69126        g,
69127        n,
69128        r,
69129        u,
69130        a,
69131        s = this;
69132    i = function i(e, t, _i3) {
69133      return t && o(e.prototype, t), _i3 && o(e, _i3), e;
69134    }, c = null, d.prototype.decrypt = function (e, t, i, n, r, s) {
69135      var a = this._key[1],
69136          o = e ^ a[0],
69137          u = n ^ a[1],
69138          l = i ^ a[2],
69139          c = t ^ a[3],
69140          h = void 0,
69141          d = void 0,
69142          p = void 0,
69143          f = a.length / 4 - 2,
69144          m = void 0,
69145          g = 4,
69146          v = this._tables[1],
69147          y = v[0],
69148          _ = v[1],
69149          b = v[2],
69150          T = v[3],
69151          S = v[4];
69152
69153      for (m = 0; m < f; m++) {
69154        h = y[o >>> 24] ^ _[u >> 16 & 255] ^ b[l >> 8 & 255] ^ T[255 & c] ^ a[g], d = y[u >>> 24] ^ _[l >> 16 & 255] ^ b[c >> 8 & 255] ^ T[255 & o] ^ a[g + 1], p = y[l >>> 24] ^ _[c >> 16 & 255] ^ b[o >> 8 & 255] ^ T[255 & u] ^ a[g + 2], c = y[c >>> 24] ^ _[o >> 16 & 255] ^ b[u >> 8 & 255] ^ T[255 & l] ^ a[g + 3], g += 4, o = h, u = d, l = p;
69155      }
69156
69157      for (m = 0; m < 4; m++) {
69158        r[(3 & -m) + s] = S[o >>> 24] << 24 ^ S[u >> 16 & 255] << 16 ^ S[l >> 8 & 255] << 8 ^ S[255 & c] ^ a[g++], h = o, o = u, u = l, l = c, c = h;
69159      }
69160    }, g = d, l.prototype.on = function (e, t) {
69161      this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t);
69162    }, l.prototype.off = function (e, t) {
69163      if (!this.listeners[e]) return !1;
69164      var i = this.listeners[e].indexOf(t);
69165      return this.listeners[e].splice(i, 1), -1 < i;
69166    }, l.prototype.trigger = function (e, t) {
69167      var i = this.listeners[e];
69168      if (i) if (2 === arguments.length) for (var n = i.length, r = 0; r < n; ++r) {
69169        i[r].call(this, t);
69170      } else for (var s = Array.prototype.slice.call(arguments, 1), a = i.length, o = 0; o < a; ++o) {
69171        i[o].apply(this, s);
69172      }
69173    }, l.prototype.dispose = function () {
69174      this.listeners = {};
69175    }, l.prototype.pipe = function (t) {
69176      this.on("data", function (e) {
69177        t.push(e);
69178      });
69179    }, function (e, t) {
69180      if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function, not " + _typeof(t));
69181      e.prototype = Object.create(t && t.prototype, {
69182        constructor: {
69183          value: e,
69184          enumerable: !1,
69185          writable: !0,
69186          configurable: !0
69187        }
69188      }), t && (Object.setPrototypeOf ? Object.setPrototypeOf(e, t) : e.__proto__ = t);
69189    }(p, r = n = l), p.prototype.processJob_ = function () {
69190      this.jobs.shift()(), this.jobs.length ? this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay) : this.timeout_ = null;
69191    }, p.prototype.push = function (e) {
69192      this.jobs.push(e), this.timeout_ || (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay));
69193    }, u = p, f.prototype.decryptChunk_ = function (t, i, n, r) {
69194      return function () {
69195        var e = function (e, t, i) {
69196          var n = new Int32Array(e.buffer, e.byteOffset, e.byteLength >> 2),
69197              r = new g(Array.prototype.slice.call(t)),
69198              s = new Uint8Array(e.byteLength),
69199              a = new Int32Array(s.buffer),
69200              o = void 0,
69201              u = void 0,
69202              l = void 0,
69203              c = void 0,
69204              h = void 0,
69205              d = void 0,
69206              p = void 0,
69207              f = void 0,
69208              m = void 0;
69209
69210          for (o = i[0], u = i[1], l = i[2], c = i[3], m = 0; m < n.length; m += 4) {
69211            h = v(n[m]), d = v(n[m + 1]), p = v(n[m + 2]), f = v(n[m + 3]), r.decrypt(h, d, p, f, a, m), a[m] = v(a[m] ^ o), a[m + 1] = v(a[m + 1] ^ u), a[m + 2] = v(a[m + 2] ^ l), a[m + 3] = v(a[m + 3] ^ c), o = h, u = d, l = p, c = f;
69212          }
69213
69214          return s;
69215        }(t, i, n);
69216
69217        r.set(e, t.byteOffset);
69218      };
69219    }, i(f, null, [{
69220      key: "STEP",
69221      get: function get() {
69222        return 32e3;
69223      }
69224    }]), a = f, new function (s) {
69225      s.onmessage = function (e) {
69226        var i = e.data,
69227            t = new Uint8Array(i.encrypted.bytes, i.encrypted.byteOffset, i.encrypted.byteLength),
69228            n = new Uint32Array(i.key.bytes, i.key.byteOffset, i.key.byteLength / 4),
69229            r = new Uint32Array(i.iv.bytes, i.iv.byteOffset, i.iv.byteLength / 4);
69230        new a(t, n, r, function (e, t) {
69231          s.postMessage(function (i) {
69232            var n = {};
69233            return Object.keys(i).forEach(function (e) {
69234              var t = i[e];
69235              ArrayBuffer.isView(t) ? n[e] = {
69236                bytes: t.buffer,
69237                byteOffset: t.byteOffset,
69238                byteLength: t.byteLength
69239              } : n[e] = t;
69240            }), n;
69241          }({
69242            source: i.source,
69243            decrypted: t
69244          }), [t.buffer]);
69245        });
69246      };
69247    }(s);
69248
69249    function h(e, t) {
69250      if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
69251    }
69252
69253    function o(e, t) {
69254      for (var i = 0; i < t.length; i++) {
69255        var n = t[i];
69256        n.enumerable = n.enumerable || !1, n.configurable = !0, "value" in n && (n.writable = !0), Object.defineProperty(e, n.key, n);
69257      }
69258    }
69259
69260    function d(e) {
69261      h(this, d), c = c || function () {
69262        var e = [[[], [], [], [], []], [[], [], [], [], []]],
69263            t = e[0],
69264            i = e[1],
69265            n = t[4],
69266            r = i[4],
69267            s = void 0,
69268            a = void 0,
69269            o = void 0,
69270            u = [],
69271            l = [],
69272            c = void 0,
69273            h = void 0,
69274            d = void 0,
69275            p = void 0,
69276            f = void 0;
69277
69278        for (s = 0; s < 256; s++) {
69279          l[(u[s] = s << 1 ^ 283 * (s >> 7)) ^ s] = s;
69280        }
69281
69282        for (a = o = 0; !n[a]; a ^= c || 1, o = l[o] || 1) {
69283          for (d = (d = o ^ o << 1 ^ o << 2 ^ o << 3 ^ o << 4) >> 8 ^ 255 & d ^ 99, f = 16843009 * u[h = u[c = u[r[n[a] = d] = a]]] ^ 65537 * h ^ 257 * c ^ 16843008 * a, p = 257 * u[d] ^ 16843008 * d, s = 0; s < 4; s++) {
69284            t[s][a] = p = p << 24 ^ p >>> 8, i[s][d] = f = f << 24 ^ f >>> 8;
69285          }
69286        }
69287
69288        for (s = 0; s < 5; s++) {
69289          t[s] = t[s].slice(0), i[s] = i[s].slice(0);
69290        }
69291
69292        return e;
69293      }(), this._tables = [[c[0][0].slice(), c[0][1].slice(), c[0][2].slice(), c[0][3].slice(), c[0][4].slice()], [c[1][0].slice(), c[1][1].slice(), c[1][2].slice(), c[1][3].slice(), c[1][4].slice()]];
69294      var t = void 0,
69295          i = void 0,
69296          n = void 0,
69297          r = void 0,
69298          s = void 0,
69299          a = this._tables[0][4],
69300          o = this._tables[1],
69301          u = e.length,
69302          l = 1;
69303      if (4 !== u && 6 !== u && 8 !== u) throw new Error("Invalid aes key size");
69304
69305      for (r = e.slice(0), s = [], this._key = [r, s], t = u; t < 4 * u + 28; t++) {
69306        n = r[t - 1], (t % u == 0 || 8 === u && t % u == 4) && (n = a[n >>> 24] << 24 ^ a[n >> 16 & 255] << 16 ^ a[n >> 8 & 255] << 8 ^ a[255 & n], t % u == 0 && (n = n << 8 ^ n >>> 24 ^ l << 24, l = l << 1 ^ 283 * (l >> 7))), r[t] = r[t - u] ^ n;
69307      }
69308
69309      for (i = 0; t; i++, t--) {
69310        n = r[3 & i ? t : t - 4], s[i] = t <= 4 || i < 4 ? n : o[0][a[n >>> 24]] ^ o[1][a[n >> 16 & 255]] ^ o[2][a[n >> 8 & 255]] ^ o[3][a[255 & n]];
69311      }
69312    }
69313
69314    function l() {
69315      h(this, l), this.listeners = {};
69316    }
69317
69318    function p() {
69319      h(this, p);
69320
69321      var e = function (e, t) {
69322        if (!e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
69323        return !t || "object" != _typeof(t) && "function" != typeof t ? e : t;
69324      }(this, r.call(this, n));
69325
69326      return e.jobs = [], e.delay = 1, e.timeout_ = null, e;
69327    }
69328
69329    function v(e) {
69330      return e << 24 | (65280 & e) << 8 | (16711680 & e) >> 8 | e >>> 24;
69331    }
69332
69333    function f(e, t, i, n) {
69334      h(this, f);
69335      var r = f.STEP,
69336          s = new Int32Array(e.buffer),
69337          a = new Uint8Array(e.byteLength),
69338          o = 0;
69339
69340      for (this.asyncStream_ = new u(), this.asyncStream_.push(this.decryptChunk_(s.subarray(o, o + r), t, i, a)), o = r; o < s.length; o += r) {
69341        i = new Uint32Array([v(s[o - 4]), v(s[o - 3]), v(s[o - 2]), v(s[o - 1])]), this.asyncStream_.push(this.decryptChunk_(s.subarray(o, o + r), t, i, a));
69342      }
69343
69344      this.asyncStream_.push(function () {
69345        n(null, function (e) {
69346          return e.subarray(0, e.byteLength - e[e.byteLength - 1]);
69347        }(a));
69348      });
69349    }
69350  }),
69351      _h = {
69352    AUDIO: function AUDIO(u, l) {
69353      return function () {
69354        var e = l.segmentLoaders[u],
69355            t = l.mediaTypes[u],
69356            i = l.blacklistCurrentPlaylist;
69357        mh(e, t);
69358        var n = t.activeTrack(),
69359            r = t.activeGroup(),
69360            s = (r.filter(function (e) {
69361          return e["default"];
69362        })[0] || r[0]).id,
69363            a = t.tracks[s];
69364
69365        if (n !== a) {
69366          for (var o in as.log.warn("Problem encountered loading the alternate audio track.Switching back to default."), t.tracks) {
69367            t.tracks[o].enabled = t.tracks[o] === a;
69368          }
69369
69370          t.onTrackChanged();
69371        } else i({
69372          message: "Problem encountered loading the default audio track."
69373        });
69374      };
69375    },
69376    SUBTITLES: function SUBTITLES(n, r) {
69377      return function () {
69378        var e = r.segmentLoaders[n],
69379            t = r.mediaTypes[n];
69380        as.log.warn("Problem encountered loading the subtitle track.Disabling subtitle track."), mh(e, t);
69381        var i = t.activeTrack();
69382        i && (i.mode = "disabled"), t.onTrackChanged();
69383      };
69384    }
69385  },
69386      bh = {
69387    AUDIO: function AUDIO(e, t, i) {
69388      if (t) {
69389        var n = i.tech,
69390            r = i.requestOptions,
69391            s = i.segmentLoaders[e];
69392        t.on("loadedmetadata", function () {
69393          var e = t.media();
69394          s.playlist(e, r), (!n.paused() || e.endList && "none" !== n.preload()) && s.load();
69395        }), t.on("loadedplaylist", function () {
69396          s.playlist(t.media(), r), n.paused() || s.load();
69397        }), t.on("error", _h[e](e, i));
69398      }
69399    },
69400    SUBTITLES: function SUBTITLES(e, t, i) {
69401      var n = i.tech,
69402          r = i.requestOptions,
69403          s = i.segmentLoaders[e],
69404          a = i.mediaTypes[e];
69405      t.on("loadedmetadata", function () {
69406        var e = t.media();
69407        s.playlist(e, r), s.track(a.activeTrack()), (!n.paused() || e.endList && "none" !== n.preload()) && s.load();
69408      }), t.on("loadedplaylist", function () {
69409        s.playlist(t.media(), r), n.paused() || s.load();
69410      }), t.on("error", _h[e](e, i));
69411    }
69412  },
69413      Th = {
69414    AUDIO: function AUDIO(e, t) {
69415      var i,
69416          n,
69417          r = t.hls,
69418          s = t.sourceType,
69419          a = t.segmentLoaders[e],
69420          o = t.requestOptions,
69421          u = t.master.mediaGroups,
69422          l = t.mediaTypes[e],
69423          c = l.groups,
69424          h = l.tracks,
69425          d = t.masterPlaylistLoader;
69426
69427      for (var p in u[e] && 0 !== Object.keys(u[e]).length || (u[e] = {
69428        main: {
69429          "default": {
69430            "default": !0
69431          }
69432        }
69433      }), u[e]) {
69434        for (var f in c[p] || (c[p] = []), u[e][p]) {
69435          var m = u[e][p][f],
69436              g = void 0;
69437
69438          if (g = m.resolvedUri ? new bl(m.resolvedUri, r, o) : m.playlists && "dash" === s ? new jc(m.playlists[0], r, o, d) : null, m = as.mergeOptions({
69439            id: f,
69440            playlistLoader: g
69441          }, m), bh[e](e, m.playlistLoader, t), c[p].push(m), "undefined" == typeof h[f]) {
69442            var v = new as.AudioTrack({
69443              id: f,
69444              kind: (i = m, n = void 0, n = i["default"] ? "main" : "alternative", i.characteristics && 0 <= i.characteristics.indexOf("public.accessibility.describes-video") && (n = "main-desc"), n),
69445              enabled: !1,
69446              language: m.language,
69447              "default": m["default"],
69448              label: f
69449            });
69450            h[f] = v;
69451          }
69452        }
69453      }
69454
69455      a.on("error", _h[e](e, t));
69456    },
69457    SUBTITLES: function SUBTITLES(e, t) {
69458      var i = t.tech,
69459          n = t.hls,
69460          r = t.sourceType,
69461          s = t.segmentLoaders[e],
69462          a = t.requestOptions,
69463          o = t.master.mediaGroups,
69464          u = t.mediaTypes[e],
69465          l = u.groups,
69466          c = u.tracks,
69467          h = t.masterPlaylistLoader;
69468
69469      for (var d in o[e]) {
69470        for (var p in l[d] || (l[d] = []), o[e][d]) {
69471          if (!o[e][d][p].forced) {
69472            var f = o[e][d][p],
69473                m = void 0;
69474
69475            if ("hls" === r ? m = new bl(f.resolvedUri, n, a) : "dash" === r && (m = new jc(f.playlists[0], n, a, h)), f = as.mergeOptions({
69476              id: p,
69477              playlistLoader: m
69478            }, f), bh[e](e, f.playlistLoader, t), l[d].push(f), "undefined" == typeof c[p]) {
69479              var g = i.addRemoteTextTrack({
69480                id: p,
69481                kind: "subtitles",
69482                "default": f["default"] && f.autoselect,
69483                language: f.language,
69484                label: p
69485              }, !1).track;
69486              c[p] = g;
69487            }
69488          }
69489        }
69490      }
69491
69492      s.on("error", _h[e](e, t));
69493    },
69494    "CLOSED-CAPTIONS": function CLOSEDCAPTIONS(e, t) {
69495      var i = t.tech,
69496          n = t.master.mediaGroups,
69497          r = t.mediaTypes[e],
69498          s = r.groups,
69499          a = r.tracks;
69500
69501      for (var o in n[e]) {
69502        for (var u in s[o] || (s[o] = []), n[e][o]) {
69503          var l = n[e][o][u];
69504
69505          if (l.instreamId.match(/CC\d/) && (s[o].push(as.mergeOptions({
69506            id: u
69507          }, l)), "undefined" == typeof a[u])) {
69508            var c = i.addRemoteTextTrack({
69509              id: l.instreamId,
69510              kind: "captions",
69511              "default": l["default"] && l.autoselect,
69512              language: l.language,
69513              label: u
69514            }, !1).track;
69515            a[u] = c;
69516          }
69517        }
69518      }
69519    }
69520  },
69521      Sh = {
69522    AUDIO: function AUDIO(i, n) {
69523      return function () {
69524        var e = n.mediaTypes[i].tracks;
69525
69526        for (var t in e) {
69527          if (e[t].enabled) return e[t];
69528        }
69529
69530        return null;
69531      };
69532    },
69533    SUBTITLES: function SUBTITLES(i, n) {
69534      return function () {
69535        var e = n.mediaTypes[i].tracks;
69536
69537        for (var t in e) {
69538          if ("showing" === e[t].mode || "hidden" === e[t].mode) return e[t];
69539        }
69540
69541        return null;
69542      };
69543    }
69544  },
69545      kh = void 0,
69546      Ch = ["mediaRequests", "mediaRequestsAborted", "mediaRequestsTimedout", "mediaRequestsErrored", "mediaTransferDuration", "mediaBytesTransferred"],
69547      wh = (ll(Eh, as.EventTarget), ol(Eh, [{
69548    key: "setupMasterPlaylistLoaderListeners_",
69549    value: function value() {
69550      var n = this;
69551      this.masterPlaylistLoader_.on("loadedmetadata", function () {
69552        var e = n.masterPlaylistLoader_.media(),
69553            t = 1.5 * e.targetDuration * 1e3;
69554        Dl(n.masterPlaylistLoader_.master, n.masterPlaylistLoader_.media()) ? n.requestOptions_.timeout = 0 : n.requestOptions_.timeout = t, e.endList && "none" !== n.tech_.preload() && (n.mainSegmentLoader_.playlist(e, n.requestOptions_), n.mainSegmentLoader_.load()), vh({
69555          sourceType: n.sourceType_,
69556          segmentLoaders: {
69557            AUDIO: n.audioSegmentLoader_,
69558            SUBTITLES: n.subtitleSegmentLoader_,
69559            main: n.mainSegmentLoader_
69560          },
69561          tech: n.tech_,
69562          requestOptions: n.requestOptions_,
69563          masterPlaylistLoader: n.masterPlaylistLoader_,
69564          hls: n.hls_,
69565          master: n.master(),
69566          mediaTypes: n.mediaTypes_,
69567          blacklistCurrentPlaylist: n.blacklistCurrentPlaylist.bind(n)
69568        }), n.triggerPresenceUsage_(n.master(), e);
69569
69570        try {
69571          n.setupSourceBuffers_();
69572        } catch (e) {
69573          return as.log.warn("Failed to create SourceBuffers", e), n.mediaSource.endOfStream("decode");
69574        }
69575
69576        n.setupFirstPlay(), !n.mediaTypes_.AUDIO.activePlaylistLoader || n.mediaTypes_.AUDIO.activePlaylistLoader.media() ? n.trigger("selectedinitialmedia") : n.mediaTypes_.AUDIO.activePlaylistLoader.one("loadedmetadata", function () {
69577          n.trigger("selectedinitialmedia");
69578        });
69579      }), this.masterPlaylistLoader_.on("loadedplaylist", function () {
69580        var e = n.masterPlaylistLoader_.media();
69581
69582        if (!e) {
69583          n.excludeUnsupportedVariants_();
69584          var t = void 0;
69585          return n.enableLowInitialPlaylist && (t = n.selectInitialPlaylist()), t = t || n.selectPlaylist(), n.initialMedia_ = t, void n.masterPlaylistLoader_.media(n.initialMedia_);
69586        }
69587
69588        if (n.useCueTags_ && n.updateAdCues_(e), n.mainSegmentLoader_.playlist(e, n.requestOptions_), n.updateDuration(), n.tech_.paused() || (n.mainSegmentLoader_.load(), n.audioSegmentLoader_ && n.audioSegmentLoader_.load()), !e.endList) {
69589          var i = function i() {
69590            var e = n.seekable();
69591            0 !== e.length && n.mediaSource.addSeekableRange_(e.start(0), e.end(0));
69592          };
69593
69594          n.duration() !== 1 / 0 ? n.tech_.one("durationchange", function e() {
69595            n.duration() === 1 / 0 ? i() : n.tech_.one("durationchange", e);
69596          }) : i();
69597        }
69598      }), this.masterPlaylistLoader_.on("error", function () {
69599        n.blacklistCurrentPlaylist(n.masterPlaylistLoader_.error);
69600      }), this.masterPlaylistLoader_.on("mediachanging", function () {
69601        n.mainSegmentLoader_.abort(), n.mainSegmentLoader_.pause();
69602      }), this.masterPlaylistLoader_.on("mediachange", function () {
69603        var e = n.masterPlaylistLoader_.media(),
69604            t = 1.5 * e.targetDuration * 1e3;
69605        Dl(n.masterPlaylistLoader_.master, n.masterPlaylistLoader_.media()) ? n.requestOptions_.timeout = 0 : n.requestOptions_.timeout = t, n.mainSegmentLoader_.playlist(e, n.requestOptions_), n.mainSegmentLoader_.load(), n.tech_.trigger({
69606          type: "mediachange",
69607          bubbles: !0
69608        });
69609      }), this.masterPlaylistLoader_.on("playlistunchanged", function () {
69610        var e = n.masterPlaylistLoader_.media();
69611        n.stuckAtPlaylistEnd_(e) && (n.blacklistCurrentPlaylist({
69612          message: "Playlist no longer updating."
69613        }), n.tech_.trigger("playliststuck"));
69614      }), this.masterPlaylistLoader_.on("renditiondisabled", function () {
69615        n.tech_.trigger({
69616          type: "usage",
69617          name: "hls-rendition-disabled"
69618        });
69619      }), this.masterPlaylistLoader_.on("renditionenabled", function () {
69620        n.tech_.trigger({
69621          type: "usage",
69622          name: "hls-rendition-enabled"
69623        });
69624      });
69625    }
69626  }, {
69627    key: "triggerPresenceUsage_",
69628    value: function value(e, t) {
69629      var i = e.mediaGroups || {},
69630          n = !0,
69631          r = Object.keys(i.AUDIO);
69632
69633      for (var s in i.AUDIO) {
69634        for (var a in i.AUDIO[s]) {
69635          i.AUDIO[s][a].uri || (n = !1);
69636        }
69637      }
69638
69639      n && this.tech_.trigger({
69640        type: "usage",
69641        name: "hls-demuxed"
69642      }), Object.keys(i.SUBTITLES).length && this.tech_.trigger({
69643        type: "usage",
69644        name: "hls-webvtt"
69645      }), kh.Playlist.isAes(t) && this.tech_.trigger({
69646        type: "usage",
69647        name: "hls-aes"
69648      }), kh.Playlist.isFmp4(t) && this.tech_.trigger({
69649        type: "usage",
69650        name: "hls-fmp4"
69651      }), r.length && 1 < Object.keys(i.AUDIO[r[0]]).length && this.tech_.trigger({
69652        type: "usage",
69653        name: "hls-alternate-audio"
69654      }), this.useCueTags_ && this.tech_.trigger({
69655        type: "usage",
69656        name: "hls-playlist-cue-tags"
69657      });
69658    }
69659  }, {
69660    key: "setupSegmentLoaderListeners_",
69661    value: function value() {
69662      var n = this;
69663      this.mainSegmentLoader_.on("bandwidthupdate", function () {
69664        var e = n.selectPlaylist(),
69665            t = n.masterPlaylistLoader_.media(),
69666            i = n.tech_.buffered();
69667        !function (e) {
69668          var t = e.currentPlaylist,
69669              i = e.nextPlaylist,
69670              n = e.forwardBuffer,
69671              r = e.bufferLowWaterLine,
69672              s = e.duration;
69673          return e.log, i ? !t.endList || s < eh.MAX_BUFFER_LOW_WATER_LINE || i.attributes.BANDWIDTH < t.attributes.BANDWIDTH || r <= n : (as.log.warn("We received no playlist to switch to. Please check your stream."), !1);
69674        }({
69675          currentPlaylist: t,
69676          nextPlaylist: e,
69677          forwardBuffer: i.length ? i.end(i.length - 1) - n.tech_.currentTime() : 0,
69678          bufferLowWaterLine: n.bufferLowWaterLine(),
69679          duration: n.duration(),
69680          log: n.logger_
69681        }) || n.masterPlaylistLoader_.media(e), n.tech_.trigger("bandwidthupdate");
69682      }), this.mainSegmentLoader_.on("progress", function () {
69683        n.trigger("progress");
69684      }), this.mainSegmentLoader_.on("error", function () {
69685        n.blacklistCurrentPlaylist(n.mainSegmentLoader_.error());
69686      }), this.mainSegmentLoader_.on("syncinfoupdate", function () {
69687        n.onSyncInfoUpdate_();
69688      }), this.mainSegmentLoader_.on("timestampoffset", function () {
69689        n.tech_.trigger({
69690          type: "usage",
69691          name: "hls-timestamp-offset"
69692        });
69693      }), this.audioSegmentLoader_.on("syncinfoupdate", function () {
69694        n.onSyncInfoUpdate_();
69695      }), this.mainSegmentLoader_.on("ended", function () {
69696        n.onEndOfStream();
69697      }), this.mainSegmentLoader_.on("earlyabort", function () {
69698        n.blacklistCurrentPlaylist({
69699          message: "Aborted early because there isn't enough bandwidth to complete the request without rebuffering."
69700        }, 120);
69701      }), this.mainSegmentLoader_.on("reseteverything", function () {
69702        n.tech_.trigger("hls-reset");
69703      }), this.mainSegmentLoader_.on("segmenttimemapping", function (e) {
69704        n.tech_.trigger({
69705          type: "hls-segment-time-mapping",
69706          mapping: e.mapping
69707        });
69708      }), this.audioSegmentLoader_.on("ended", function () {
69709        n.onEndOfStream();
69710      });
69711    }
69712  }, {
69713    key: "mediaSecondsLoaded_",
69714    value: function value() {
69715      return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded + this.mainSegmentLoader_.mediaSecondsLoaded);
69716    }
69717  }, {
69718    key: "load",
69719    value: function value() {
69720      this.mainSegmentLoader_.load(), this.mediaTypes_.AUDIO.activePlaylistLoader && this.audioSegmentLoader_.load(), this.mediaTypes_.SUBTITLES.activePlaylistLoader && this.subtitleSegmentLoader_.load();
69721    }
69722  }, {
69723    key: "smoothQualityChange_",
69724    value: function value() {
69725      var e = this.selectPlaylist();
69726      e !== this.masterPlaylistLoader_.media() && (this.masterPlaylistLoader_.media(e), this.mainSegmentLoader_.resetLoader());
69727    }
69728  }, {
69729    key: "fastQualityChange_",
69730    value: function value() {
69731      var e = this,
69732          t = this.selectPlaylist();
69733      t !== this.masterPlaylistLoader_.media() && (this.masterPlaylistLoader_.media(t), this.mainSegmentLoader_.resetEverything(function () {
69734        as.browser.IE_VERSION || as.browser.IS_EDGE ? e.tech_.setCurrentTime(e.tech_.currentTime() + .04) : e.tech_.setCurrentTime(e.tech_.currentTime());
69735      }));
69736    }
69737  }, {
69738    key: "play",
69739    value: function value() {
69740      if (!this.setupFirstPlay()) {
69741        this.tech_.ended() && this.tech_.setCurrentTime(0), this.hasPlayed_ && this.load();
69742        var e = this.tech_.seekable();
69743        return this.tech_.duration() === 1 / 0 && this.tech_.currentTime() < e.start(0) ? this.tech_.setCurrentTime(e.end(e.length - 1)) : void 0;
69744      }
69745    }
69746  }, {
69747    key: "setupFirstPlay",
69748    value: function value() {
69749      var e = this,
69750          t = this.masterPlaylistLoader_.media();
69751      if (!t || this.tech_.paused() || this.hasPlayed_) return !1;
69752
69753      if (!t.endList) {
69754        var i = this.seekable();
69755        if (!i.length) return !1;
69756        if (as.browser.IE_VERSION && 0 === this.tech_.readyState()) return this.tech_.one("loadedmetadata", function () {
69757          e.trigger("firstplay"), e.tech_.setCurrentTime(i.end(0)), e.hasPlayed_ = !0;
69758        }), !1;
69759        this.trigger("firstplay"), this.tech_.setCurrentTime(i.end(0));
69760      }
69761
69762      return this.hasPlayed_ = !0, this.load(), !0;
69763    }
69764  }, {
69765    key: "handleSourceOpen_",
69766    value: function value() {
69767      try {
69768        this.setupSourceBuffers_();
69769      } catch (e) {
69770        return as.log.warn("Failed to create Source Buffers", e), this.mediaSource.endOfStream("decode");
69771      }
69772
69773      if (this.tech_.autoplay()) {
69774        var e = this.tech_.play();
69775        "undefined" != typeof e && "function" == typeof e.then && e.then(null, function (e) {});
69776      }
69777
69778      this.trigger("sourceopen");
69779    }
69780  }, {
69781    key: "onEndOfStream",
69782    value: function value() {
69783      var e = this.mainSegmentLoader_.ended_;
69784
69785      if (this.mediaTypes_.AUDIO.activePlaylistLoader && (e = !this.mainSegmentLoader_.startingMedia_ || this.mainSegmentLoader_.startingMedia_.containsVideo ? e && this.audioSegmentLoader_.ended_ : this.audioSegmentLoader_.ended_), e) {
69786        this.logger_("calling mediaSource.endOfStream()");
69787
69788        try {
69789          this.mediaSource.endOfStream();
69790        } catch (e) {
69791          as.log.warn("Failed to call media source endOfStream", e);
69792        }
69793      }
69794    }
69795  }, {
69796    key: "stuckAtPlaylistEnd_",
69797    value: function value(e) {
69798      if (!this.seekable().length) return !1;
69799      var t = this.syncController_.getExpiredTime(e, this.mediaSource.duration);
69800      if (null === t) return !1;
69801      var i = kh.Playlist.playlistEnd(e, t),
69802          n = this.tech_.currentTime(),
69803          r = this.tech_.buffered();
69804      if (!r.length) return i - n <= .1;
69805      var s = r.end(r.length - 1);
69806      return s - n <= .1 && i - s <= .1;
69807    }
69808  }, {
69809    key: "blacklistCurrentPlaylist",
69810    value: function value(e, t) {
69811      var i,
69812          n = 0 < arguments.length && void 0 !== e ? e : {},
69813          r = t,
69814          s = void 0;
69815
69816      if (s = n.playlist || this.masterPlaylistLoader_.media(), r = r || n.blacklistDuration || this.blacklistDuration, !s) {
69817        this.error = n;
69818
69819        try {
69820          return this.mediaSource.endOfStream("network");
69821        } catch (e) {
69822          return this.trigger("error");
69823        }
69824      }
69825
69826      var a = 1 === this.masterPlaylistLoader_.master.playlists.filter(Ll).length,
69827          o = this.masterPlaylistLoader_.master.playlists;
69828      return 1 === o.length ? (as.log.warn("Problem encountered with the current HLS playlist. Trying again since it is the only playlist."), this.tech_.trigger("retryplaylist"), this.masterPlaylistLoader_.load(a)) : (a && (as.log.warn("Removing all playlists from the blacklist because the last rendition is about to be blacklisted."), o.forEach(function (e) {
69829        e.excludeUntil !== 1 / 0 && delete e.excludeUntil;
69830      }), this.tech_.trigger("retryplaylist")), s.excludeUntil = Date.now() + 1e3 * r, this.tech_.trigger("blacklistplaylist"), this.tech_.trigger({
69831        type: "usage",
69832        name: "hls-rendition-blacklisted"
69833      }), i = this.selectPlaylist(), as.log.warn("Problem encountered with the current HLS playlist." + (n.message ? " " + n.message : "") + " Switching to another playlist."), this.masterPlaylistLoader_.media(i, a));
69834    }
69835  }, {
69836    key: "pauseLoading",
69837    value: function value() {
69838      this.mainSegmentLoader_.pause(), this.mediaTypes_.AUDIO.activePlaylistLoader && this.audioSegmentLoader_.pause(), this.mediaTypes_.SUBTITLES.activePlaylistLoader && this.subtitleSegmentLoader_.pause();
69839    }
69840  }, {
69841    key: "setCurrentTime",
69842    value: function value(e) {
69843      var t = zl(this.tech_.buffered(), e);
69844      return this.masterPlaylistLoader_ && this.masterPlaylistLoader_.media() && this.masterPlaylistLoader_.media().segments ? t && t.length ? e : (this.mainSegmentLoader_.resetEverything(), this.mainSegmentLoader_.abort(), this.mediaTypes_.AUDIO.activePlaylistLoader && (this.audioSegmentLoader_.resetEverything(), this.audioSegmentLoader_.abort()), this.mediaTypes_.SUBTITLES.activePlaylistLoader && (this.subtitleSegmentLoader_.resetEverything(), this.subtitleSegmentLoader_.abort()), void this.load()) : 0;
69845    }
69846  }, {
69847    key: "duration",
69848    value: function value() {
69849      return this.masterPlaylistLoader_ ? this.mediaSource ? this.mediaSource.duration : kh.Playlist.duration(this.masterPlaylistLoader_.media()) : 0;
69850    }
69851  }, {
69852    key: "seekable",
69853    value: function value() {
69854      return this.seekable_;
69855    }
69856  }, {
69857    key: "onSyncInfoUpdate_",
69858    value: function value() {
69859      var e = void 0;
69860
69861      if (this.masterPlaylistLoader_) {
69862        var t = this.masterPlaylistLoader_.media();
69863
69864        if (t) {
69865          var i = this.syncController_.getExpiredTime(t, this.mediaSource.duration);
69866
69867          if (null !== i) {
69868            var n = this.masterPlaylistLoader_.master.suggestedPresentationDelay,
69869                r = kh.Playlist.seekable(t, i, n);
69870
69871            if (0 !== r.length) {
69872              if (this.mediaTypes_.AUDIO.activePlaylistLoader) {
69873                if (t = this.mediaTypes_.AUDIO.activePlaylistLoader.media(), null === (i = this.syncController_.getExpiredTime(t, this.mediaSource.duration))) return;
69874                if (0 === (e = kh.Playlist.seekable(t, i, n)).length) return;
69875              }
69876
69877              var s = void 0,
69878                  a = void 0;
69879              this.seekable_ && this.seekable_.length && (s = this.seekable_.end(0), a = this.seekable_.start(0)), e ? e.start(0) > r.end(0) || r.start(0) > e.end(0) ? this.seekable_ = r : this.seekable_ = as.createTimeRanges([[e.start(0) > r.start(0) ? e.start(0) : r.start(0), e.end(0) < r.end(0) ? e.end(0) : r.end(0)]]) : this.seekable_ = r, this.seekable_ && this.seekable_.length && this.seekable_.end(0) === s && this.seekable_.start(0) === a || (this.logger_("seekable updated [" + Xl(this.seekable_) + "]"), this.tech_.trigger("seekablechanged"));
69880            }
69881          }
69882        }
69883      }
69884    }
69885  }, {
69886    key: "updateDuration",
69887    value: function value() {
69888      function e() {
69889        t.logger_("Setting duration from " + t.mediaSource.duration + " => " + n);
69890
69891        try {
69892          t.mediaSource.duration = n;
69893        } catch (e) {
69894          as.log.warn("Failed to set media source duration", e);
69895        }
69896
69897        t.tech_.trigger("durationchange"), t.mediaSource.removeEventListener("sourceopen", e);
69898      }
69899
69900      var t = this,
69901          i = this.mediaSource.duration,
69902          n = kh.Playlist.duration(this.masterPlaylistLoader_.media()),
69903          r = this.tech_.buffered();
69904      0 < r.length && (n = Math.max(n, r.end(r.length - 1))), i !== n && ("open" !== this.mediaSource.readyState ? this.mediaSource.addEventListener("sourceopen", e) : e());
69905    }
69906  }, {
69907    key: "dispose",
69908    value: function value() {
69909      var n = this;
69910      this.trigger("dispose"), this.decrypter_ && this.decrypter_.terminate(), this.masterPlaylistLoader_.dispose(), this.mainSegmentLoader_.dispose(), ["AUDIO", "SUBTITLES"].forEach(function (e) {
69911        var t = n.mediaTypes_[e].groups;
69912
69913        for (var i in t) {
69914          t[i].forEach(function (e) {
69915            e.playlistLoader && e.playlistLoader.dispose();
69916          });
69917        }
69918      }), this.audioSegmentLoader_.dispose(), this.subtitleSegmentLoader_.dispose(), this.off(), this.mediaSource.dispose && this.mediaSource.dispose();
69919    }
69920  }, {
69921    key: "master",
69922    value: function value() {
69923      return this.masterPlaylistLoader_.master;
69924    }
69925  }, {
69926    key: "media",
69927    value: function value() {
69928      return this.masterPlaylistLoader_.media() || this.initialMedia_;
69929    }
69930  }, {
69931    key: "setupSourceBuffers_",
69932    value: function value() {
69933      var e,
69934          t = this.masterPlaylistLoader_.media();
69935
69936      if (t && "open" === this.mediaSource.readyState) {
69937        if ((e = _c(this.masterPlaylistLoader_.master, t)).length < 1) return this.error = "No compatible SourceBuffer configuration for the variant stream:" + t.resolvedUri, this.mediaSource.endOfStream("decode");
69938        this.configureLoaderMimeTypes_(e), this.excludeIncompatibleVariants_(t);
69939      }
69940    }
69941  }, {
69942    key: "configureLoaderMimeTypes_",
69943    value: function value(e) {
69944      var t = 1 < e.length && -1 === e[0].indexOf(",") && e[0] !== e[1] ? new as.EventTarget() : null;
69945      this.mainSegmentLoader_.mimeType(e[0], t), e[1] && this.audioSegmentLoader_.mimeType(e[1], t);
69946    }
69947  }, {
69948    key: "excludeUnsupportedVariants_",
69949    value: function value() {
69950      this.master().playlists.forEach(function (e) {
69951        e.attributes.CODECS && y.MediaSource && y.MediaSource.isTypeSupported && !y.MediaSource.isTypeSupported('video/mp4; codecs="' + function (e) {
69952          return e.replace(/avc1\.(\d+)\.(\d+)/i, function (e) {
69953            return gc([e])[0];
69954          });
69955        }(e.attributes.CODECS) + '"') && (e.excludeUntil = 1 / 0);
69956      });
69957    }
69958  }, {
69959    key: "excludeIncompatibleVariants_",
69960    value: function value(e) {
69961      var i = 2,
69962          n = null,
69963          t = void 0;
69964      e.attributes.CODECS && (t = vc(e.attributes.CODECS), n = t.videoCodec, i = t.codecCount), this.master().playlists.forEach(function (e) {
69965        var t = {
69966          codecCount: 2,
69967          videoCodec: null
69968        };
69969        e.attributes.CODECS && (t = vc(e.attributes.CODECS)), t.codecCount !== i && (e.excludeUntil = 1 / 0), t.videoCodec !== n && (e.excludeUntil = 1 / 0);
69970      });
69971    }
69972  }, {
69973    key: "updateAdCues_",
69974    value: function value(e) {
69975      var t = 0,
69976          i = this.seekable();
69977      i.length && (t = i.start(0)), function (e, t, i) {
69978        var n = 2 < arguments.length && void 0 !== i ? i : 0;
69979        if (e.segments) for (var r = n, s = void 0, a = 0; a < e.segments.length; a++) {
69980          var o = e.segments[a];
69981
69982          if (s = s || ch(t, r + o.duration / 2)) {
69983            if ("cueIn" in o) {
69984              s.endTime = r, s.adEndTime = r, r += o.duration, s = null;
69985              continue;
69986            }
69987
69988            if (r < s.endTime) {
69989              r += o.duration;
69990              continue;
69991            }
69992
69993            s.endTime += o.duration;
69994          } else if ("cueOut" in o && ((s = new y.VTTCue(r, r + o.duration, o.cueOut)).adStartTime = r, s.adEndTime = r + parseFloat(o.cueOut), t.addCue(s)), "cueOutCont" in o) {
69995            var u,
69996                l,
69997                c = o.cueOutCont.split("/").map(parseFloat),
69998                h = vl(c, 2);
69999            u = h[0], l = h[1], (s = new y.VTTCue(r, r + o.duration, "")).adStartTime = r - u, s.adEndTime = s.adStartTime + l, t.addCue(s);
70000          }
70001
70002          r += o.duration;
70003        }
70004      }(e, this.cueTagsTrack_, t);
70005    }
70006  }, {
70007    key: "goalBufferLength",
70008    value: function value() {
70009      var e = this.tech_.currentTime(),
70010          t = eh.GOAL_BUFFER_LENGTH,
70011          i = eh.GOAL_BUFFER_LENGTH_RATE,
70012          n = Math.max(t, eh.MAX_GOAL_BUFFER_LENGTH);
70013      return Math.min(t + e * i, n);
70014    }
70015  }, {
70016    key: "bufferLowWaterLine",
70017    value: function value() {
70018      var e = this.tech_.currentTime(),
70019          t = eh.BUFFER_LOW_WATER_LINE,
70020          i = eh.BUFFER_LOW_WATER_LINE_RATE,
70021          n = Math.max(t, eh.MAX_BUFFER_LOW_WATER_LINE);
70022      return Math.min(t + e * i, n);
70023    }
70024  }]), Eh);
70025
70026  function Eh(e) {
70027    al(this, Eh);
70028    var t = cl(this, (Eh.__proto__ || Object.getPrototypeOf(Eh)).call(this)),
70029        i = e.url,
70030        n = e.handleManifestRedirects,
70031        r = e.withCredentials,
70032        s = e.tech,
70033        a = e.bandwidth,
70034        o = e.externHls,
70035        u = e.useCueTags,
70036        l = e.blacklistDuration,
70037        c = e.enableLowInitialPlaylist,
70038        h = e.cacheEncryptionKeys,
70039        d = e.sourceType;
70040    if (!i) throw new Error("A non-empty playlist URL is required");
70041    kh = o, t.withCredentials = r, t.tech_ = s, t.hls_ = s.hls, t.sourceType_ = d, t.useCueTags_ = u, t.blacklistDuration = l, t.enableLowInitialPlaylist = c, t.useCueTags_ && (t.cueTagsTrack_ = t.tech_.addTextTrack("metadata", "ad-cues"), t.cueTagsTrack_.inBandMetadataTrackDispatchType = ""), t.requestOptions_ = {
70042      withCredentials: r,
70043      handleManifestRedirects: n,
70044      timeout: null
70045    }, t.mediaTypes_ = function () {
70046      var t = {};
70047      return ["AUDIO", "SUBTITLES", "CLOSED-CAPTIONS"].forEach(function (e) {
70048        t[e] = {
70049          groups: {},
70050          tracks: {},
70051          activePlaylistLoader: null,
70052          activeGroup: Vc,
70053          activeTrack: Vc,
70054          onGroupChanged: Vc,
70055          onTrackChanged: Vc
70056        };
70057      }), t;
70058    }(), t.mediaSource = new as.MediaSource(), t.mediaSource.addEventListener("sourceopen", t.handleSourceOpen_.bind(t)), t.seekable_ = as.createTimeRanges(), t.hasPlayed_ = !1, t.syncController_ = new ph(e), t.segmentMetadataTrack_ = s.addRemoteTextTrack({
70059      kind: "metadata",
70060      label: "segment-metadata"
70061    }, !1).track, t.decrypter_ = new yh(), t.inbandTextTracks_ = {};
70062    var p = {
70063      hls: t.hls_,
70064      mediaSource: t.mediaSource,
70065      currentTime: t.tech_.currentTime.bind(t.tech_),
70066      seekable: function seekable() {
70067        return t.seekable();
70068      },
70069      seeking: function seeking() {
70070        return t.tech_.seeking();
70071      },
70072      duration: function duration() {
70073        return t.mediaSource.duration;
70074      },
70075      hasPlayed: function hasPlayed() {
70076        return t.hasPlayed_;
70077      },
70078      goalBufferLength: function goalBufferLength() {
70079        return t.goalBufferLength();
70080      },
70081      bandwidth: a,
70082      syncController: t.syncController_,
70083      decrypter: t.decrypter_,
70084      sourceType: t.sourceType_,
70085      inbandTextTracks: t.inbandTextTracks_,
70086      cacheEncryptionKeys: h
70087    };
70088    return t.masterPlaylistLoader_ = "dash" === t.sourceType_ ? new jc(i, t.hls_, t.requestOptions_) : new bl(i, t.hls_, t.requestOptions_), t.setupMasterPlaylistLoaderListeners_(), t.mainSegmentLoader_ = new rh(as.mergeOptions(p, {
70089      segmentMetadataTrack: t.segmentMetadataTrack_,
70090      loaderType: "main"
70091    }), e), t.audioSegmentLoader_ = new rh(as.mergeOptions(p, {
70092      loaderType: "audio"
70093    }), e), t.subtitleSegmentLoader_ = new uh(as.mergeOptions(p, {
70094      loaderType: "vtt",
70095      featuresNativeTextTracks: t.tech_.featuresNativeTextTracks
70096    }), e), t.setupSegmentLoaderListeners_(), Ch.forEach(function (e) {
70097      t[e + "_"] = function (e) {
70098        return this.audioSegmentLoader_[e] + this.mainSegmentLoader_[e];
70099      }.bind(t, e);
70100    }), t.logger_ = Hc("MPC"), t.masterPlaylistLoader_.load(), t;
70101  }
70102
70103  function xh(e, t, i) {
70104    al(this, xh);
70105    var n = e.masterPlaylistController_,
70106        r = n[(e.options_.smoothQualityChange ? "smooth" : "fast") + "QualityChange_"].bind(n);
70107
70108    if (t.attributes.RESOLUTION) {
70109      var s = t.attributes.RESOLUTION;
70110      this.width = s.width, this.height = s.height;
70111    }
70112
70113    this.bandwidth = t.attributes.BANDWIDTH, this.id = i, this.enabled = function (r, s, a) {
70114      return function (e) {
70115        var t = r.master.playlists[s],
70116            i = Pl(t),
70117            n = Ll(t);
70118        return "undefined" == typeof e ? n : (e ? delete t.disabled : t.disabled = !0, e === n || i || (a(), e ? r.trigger("renditionenabled") : r.trigger("renditiondisabled")), e);
70119      };
70120    }(e.playlists, t.id, r);
70121  }
70122
70123  var Ah = ["seeking", "seeked", "pause", "playing", "error"],
70124      Ih = (ol(Ph, [{
70125    key: "monitorCurrentTime_",
70126    value: function value() {
70127      this.checkCurrentTime_(), this.checkCurrentTimeTimeout_ && y.clearTimeout(this.checkCurrentTimeTimeout_), this.checkCurrentTimeTimeout_ = y.setTimeout(this.monitorCurrentTime_.bind(this), 250);
70128    }
70129  }, {
70130    key: "checkCurrentTime_",
70131    value: function value() {
70132      if (this.tech_.seeking() && this.fixesBadSeeks_()) return this.consecutiveUpdates = 0, void (this.lastRecordedTime = this.tech_.currentTime());
70133
70134      if (!this.tech_.paused() && !this.tech_.seeking()) {
70135        var e = this.tech_.currentTime(),
70136            t = this.tech_.buffered();
70137        if (this.lastRecordedTime === e && (!t.length || e + .1 >= t.end(t.length - 1))) return this.techWaiting_();
70138        5 <= this.consecutiveUpdates && e === this.lastRecordedTime ? (this.consecutiveUpdates++, this.waiting_()) : e === this.lastRecordedTime ? this.consecutiveUpdates++ : (this.consecutiveUpdates = 0, this.lastRecordedTime = e);
70139      }
70140    }
70141  }, {
70142    key: "cancelTimer_",
70143    value: function value() {
70144      this.consecutiveUpdates = 0, this.timer_ && (this.logger_("cancelTimer_"), clearTimeout(this.timer_)), this.timer_ = null;
70145    }
70146  }, {
70147    key: "fixesBadSeeks_",
70148    value: function value() {
70149      if (!this.tech_.seeking()) return !1;
70150      var e = this.seekable(),
70151          t = this.tech_.currentTime(),
70152          i = void 0;
70153      return this.afterSeekableWindow_(e, t, this.media(), this.allowSeeksWithinUnsafeLiveWindow) && (i = e.end(e.length - 1)), this.beforeSeekableWindow_(e, t) && (i = e.start(0) + .1), "undefined" != typeof i && (this.logger_("Trying to seek outside of seekable at time " + t + " with seekable range " + Xl(e) + ". Seeking to " + i + "."), this.tech_.setCurrentTime(i), !0);
70154    }
70155  }, {
70156    key: "waiting_",
70157    value: function value() {
70158      if (!this.techWaiting_()) {
70159        var e = this.tech_.currentTime(),
70160            t = this.tech_.buffered(),
70161            i = zl(t, e);
70162        return i.length && e + 3 <= i.end(0) ? (this.cancelTimer_(), this.tech_.setCurrentTime(e), this.logger_("Stopped at " + e + " while inside a buffered region [" + i.start(0) + " -> " + i.end(0) + "]. Attempting to resume playback by seeking to the current time."), void this.tech_.trigger({
70163          type: "usage",
70164          name: "hls-unknown-waiting"
70165        })) : void 0;
70166      }
70167    }
70168  }, {
70169    key: "techWaiting_",
70170    value: function value() {
70171      var e = this.seekable(),
70172          t = this.tech_.currentTime();
70173      if (this.tech_.seeking() && this.fixesBadSeeks_()) return !0;
70174      if (this.tech_.seeking() || null !== this.timer_) return !0;
70175
70176      if (this.beforeSeekableWindow_(e, t)) {
70177        var i = e.end(e.length - 1);
70178        return this.logger_("Fell out of live window at time " + t + ". Seeking to live point (seekable end) " + i), this.cancelTimer_(), this.tech_.setCurrentTime(i), this.tech_.trigger({
70179          type: "usage",
70180          name: "hls-live-resync"
70181        }), !0;
70182      }
70183
70184      var n = this.tech_.buffered(),
70185          r = Gl(n, t);
70186      if (this.videoUnderflow_(r, n, t)) return this.cancelTimer_(), this.tech_.setCurrentTime(t), this.tech_.trigger({
70187        type: "usage",
70188        name: "hls-video-underflow"
70189      }), !0;
70190
70191      if (0 < r.length) {
70192        var s = r.start(0) - t;
70193        return this.logger_("Stopped at " + t + ", setting timer for " + s + ", seeking to " + r.start(0)), this.timer_ = setTimeout(this.skipTheGap_.bind(this), 1e3 * s, t), !0;
70194      }
70195
70196      return !1;
70197    }
70198  }, {
70199    key: "afterSeekableWindow_",
70200    value: function value(e, t, i, n) {
70201      var r = 3 < arguments.length && void 0 !== n && n;
70202      if (!e.length) return !1;
70203      var s = e.end(e.length - 1) + .1;
70204      return !i.endList && r && (s = e.end(e.length - 1) + 3 * i.targetDuration), s < t;
70205    }
70206  }, {
70207    key: "beforeSeekableWindow_",
70208    value: function value(e, t) {
70209      return !!(e.length && 0 < e.start(0) && t < e.start(0) - .1);
70210    }
70211  }, {
70212    key: "videoUnderflow_",
70213    value: function value(e, t, i) {
70214      if (0 === e.length) {
70215        var n = this.gapFromVideoUnderflow_(t, i);
70216        if (n) return this.logger_("Encountered a gap in video from " + n.start + " to " + n.end + ". Seeking to current time " + i), !0;
70217      }
70218
70219      return !1;
70220    }
70221  }, {
70222    key: "skipTheGap_",
70223    value: function value(e) {
70224      var t = this.tech_.buffered(),
70225          i = this.tech_.currentTime(),
70226          n = Gl(t, i);
70227      this.cancelTimer_(), 0 !== n.length && i === e && (this.logger_("skipTheGap_:", "currentTime:", i, "scheduled currentTime:", e, "nextRange start:", n.start(0)), this.tech_.setCurrentTime(n.start(0) + 1 / 30), this.tech_.trigger({
70228        type: "usage",
70229        name: "hls-gap-skip"
70230      }));
70231    }
70232  }, {
70233    key: "gapFromVideoUnderflow_",
70234    value: function value(e, t) {
70235      for (var i = function (e) {
70236        if (e.length < 2) return as.createTimeRanges();
70237
70238        for (var t = [], i = 1; i < e.length; i++) {
70239          var n = e.end(i - 1),
70240              r = e.start(i);
70241          t.push([n, r]);
70242        }
70243
70244        return as.createTimeRanges(t);
70245      }(e), n = 0; n < i.length; n++) {
70246        var r = i.start(n),
70247            s = i.end(n);
70248        if (t - r < 4 && 2 < t - r) return {
70249          start: r,
70250          end: s
70251        };
70252      }
70253
70254      return null;
70255    }
70256  }]), Ph);
70257
70258  function Ph(e) {
70259    var t = this;
70260    al(this, Ph), this.tech_ = e.tech, this.seekable = e.seekable, this.allowSeeksWithinUnsafeLiveWindow = e.allowSeeksWithinUnsafeLiveWindow, this.media = e.media, this.consecutiveUpdates = 0, this.lastRecordedTime = null, this.timer_ = null, this.checkCurrentTimeTimeout_ = null, this.logger_ = Hc("PlaybackWatcher"), this.logger_("initialize");
70261
70262    function i() {
70263      return t.monitorCurrentTime_();
70264    }
70265
70266    function n() {
70267      return t.techWaiting_();
70268    }
70269
70270    function r() {
70271      return t.cancelTimer_();
70272    }
70273
70274    function s() {
70275      return t.fixesBadSeeks_();
70276    }
70277
70278    this.tech_.on("seekablechanged", s), this.tech_.on("waiting", n), this.tech_.on(Ah, r), this.tech_.on("canplay", i), this.dispose = function () {
70279      t.logger_("dispose"), t.tech_.off("seekablechanged", s), t.tech_.off("waiting", n), t.tech_.off(Ah, r), t.tech_.off("canplay", i), t.checkCurrentTimeTimeout_ && y.clearTimeout(t.checkCurrentTimeTimeout_), t.cancelTimer_();
70280    };
70281  }
70282
70283  function Lh(e) {
70284    !function t(i, e) {
70285      var n = 0,
70286          r = 0,
70287          s = as.mergeOptions(Oh, e);
70288      i.ready(function () {
70289        i.trigger({
70290          type: "usage",
70291          name: "hls-error-reload-initialized"
70292        });
70293      });
70294
70295      function a() {
70296        r && i.currentTime(r);
70297      }
70298
70299      function o(e) {
70300        null != e && (r = i.duration() !== 1 / 0 && i.currentTime() || 0, i.one("loadedmetadata", a), i.src(e), i.trigger({
70301          type: "usage",
70302          name: "hls-error-reload"
70303        }), i.play());
70304      }
70305
70306      function u() {
70307        if (Date.now() - n < 1e3 * s.errorInterval) i.trigger({
70308          type: "usage",
70309          name: "hls-error-reload-canceled"
70310        });else {
70311          if (s.getSource && "function" == typeof s.getSource) return n = Date.now(), s.getSource.call(i, o);
70312          as.log.error("ERROR: reloadSourceOnError - The option getSource must be a function!");
70313        }
70314      }
70315
70316      function l() {
70317        i.off("loadedmetadata", a), i.off("error", u), i.off("dispose", l);
70318      }
70319
70320      i.on("error", u), i.on("dispose", l), i.reloadSourceOnError = function (e) {
70321        l(), t(i, e);
70322      };
70323    }(this, e);
70324  }
70325
70326  var Oh = {
70327    errorInterval: 30,
70328    getSource: function getSource(e) {
70329      return e(this.tech({
70330        IWillNotUseThisInPlugins: !0
70331      }).currentSource_);
70332    }
70333  },
70334      Dh = {
70335    PlaylistLoader: bl,
70336    Playlist: tc,
70337    Decrypter: il,
70338    AsyncStream: Ju,
70339    decrypt: tl,
70340    utils: rc,
70341    STANDARD_PLAYLIST_SELECTOR: function STANDARD_PLAYLIST_SELECTOR() {
70342      var e = this.useDevicePixelRatio && y.devicePixelRatio || 1;
70343      return function (e, t, i, n, r) {
70344        var s = e.playlists.map(function (e) {
70345          var t, i;
70346          return t = e.attributes.RESOLUTION && e.attributes.RESOLUTION.width, i = e.attributes.RESOLUTION && e.attributes.RESOLUTION.height, {
70347            bandwidth: e.attributes.BANDWIDTH || y.Number.MAX_VALUE,
70348            width: t,
70349            height: i,
70350            playlist: e
70351          };
70352        });
70353        Qc(s, function (e, t) {
70354          return e.bandwidth - t.bandwidth;
70355        });
70356        var a = (s = s.filter(function (e) {
70357          return !tc.isIncompatible(e.playlist);
70358        })).filter(function (e) {
70359          return tc.isEnabled(e.playlist);
70360        });
70361        a.length || (a = s.filter(function (e) {
70362          return !tc.isDisabled(e.playlist);
70363        }));
70364        var o = a.filter(function (e) {
70365          return e.bandwidth * eh.BANDWIDTH_VARIANCE < t;
70366        }),
70367            u = o[o.length - 1],
70368            l = o.filter(function (e) {
70369          return e.bandwidth === u.bandwidth;
70370        })[0];
70371
70372        if (!1 === r) {
70373          var c = l || a[0] || s[0];
70374          return c ? c.playlist : null;
70375        }
70376
70377        var h = o.filter(function (e) {
70378          return e.width && e.height;
70379        });
70380        Qc(h, function (e, t) {
70381          return e.width - t.width;
70382        });
70383        var d = h.filter(function (e) {
70384          return e.width === i && e.height === n;
70385        });
70386        u = d[d.length - 1];
70387        var p = d.filter(function (e) {
70388          return e.bandwidth === u.bandwidth;
70389        })[0],
70390            f = void 0,
70391            m = void 0,
70392            g = void 0;
70393        p || (m = (f = h.filter(function (e) {
70394          return e.width > i || e.height > n;
70395        })).filter(function (e) {
70396          return e.width === f[0].width && e.height === f[0].height;
70397        }), u = m[m.length - 1], g = m.filter(function (e) {
70398          return e.bandwidth === u.bandwidth;
70399        })[0]);
70400        var v = g || p || l || a[0] || s[0];
70401        return v ? v.playlist : null;
70402      }(this.playlists.master, this.systemBandwidth, parseInt($c(this.tech_.el(), "width"), 10) * e, parseInt($c(this.tech_.el(), "height"), 10) * e, this.limitRenditionByPlayerDimensions);
70403    },
70404    INITIAL_PLAYLIST_SELECTOR: function INITIAL_PLAYLIST_SELECTOR() {
70405      var e = this.playlists.master.playlists.filter(tc.isEnabled);
70406      return Qc(e, function (e, t) {
70407        return Jc(e, t);
70408      }), e.filter(function (e) {
70409        return vc(e.attributes.CODECS).videoCodec;
70410      })[0] || null;
70411    },
70412    comparePlaylistBandwidth: Jc,
70413    comparePlaylistResolution: function comparePlaylistResolution(e, t) {
70414      var i = void 0,
70415          n = void 0;
70416      return e.attributes.RESOLUTION && e.attributes.RESOLUTION.width && (i = e.attributes.RESOLUTION.width), i = i || y.Number.MAX_VALUE, t.attributes.RESOLUTION && t.attributes.RESOLUTION.width && (n = t.attributes.RESOLUTION.width), i === (n = n || y.Number.MAX_VALUE) && e.attributes.BANDWIDTH && t.attributes.BANDWIDTH ? e.attributes.BANDWIDTH - t.attributes.BANDWIDTH : i - n;
70417    },
70418    xhr: Nl()
70419  };
70420  ["GOAL_BUFFER_LENGTH", "MAX_GOAL_BUFFER_LENGTH", "GOAL_BUFFER_LENGTH_RATE", "BUFFER_LOW_WATER_LINE", "MAX_BUFFER_LOW_WATER_LINE", "BUFFER_LOW_WATER_LINE_RATE", "BANDWIDTH_VARIANCE"].forEach(function (t) {
70421    Object.defineProperty(Dh, t, {
70422      get: function get() {
70423        return as.log.warn("using Hls." + t + " is UNSAFE be sure you know what you are doing"), eh[t];
70424      },
70425      set: function set(e) {
70426        as.log.warn("using Hls." + t + " is UNSAFE be sure you know what you are doing"), "number" != typeof e || e < 0 ? as.log.warn("value of Hls." + t + " must be greater than or equal to 0") : eh[t] = e;
70427      }
70428    });
70429  });
70430
70431  function Nh(e) {
70432    return /^(audio|video|application)\/(x-|vnd\.apple\.)?mpegurl/i.test(e) ? "hls" : /^application\/dash\+xml/i.test(e) ? "dash" : null;
70433  }
70434
70435  function Rh(e, t) {
70436    for (var i = t.media(), n = -1, r = 0; r < e.length; r++) {
70437      if (e[r].id === i.id) {
70438        n = r;
70439        break;
70440      }
70441    }
70442
70443    e.selectedIndex_ = n, e.trigger({
70444      selectedIndex: n,
70445      type: "change"
70446    });
70447  }
70448
70449  var Uh = "videojs-vhs";
70450
70451  Dh.canPlaySource = function () {
70452    return as.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.");
70453  };
70454
70455  function Mh(e) {
70456    var t = e.masterPlaylistController_.mainSegmentLoader_,
70457        i = e.masterPlaylistController_.audioSegmentLoader_,
70458        n = as.players[e.tech_.options_.playerId];
70459
70460    if (n.eme) {
70461      var r = function (e, t, i) {
70462        if (!e) return e;
70463        var n = void 0,
70464            r = void 0;
70465        if (i.mimeType_) n = t.mimeType_, r = i.mimeType_;else {
70466          var s = bc(t.mimeType_),
70467              a = s.parameters.codecs.split(","),
70468              o = void 0,
70469              u = void 0;
70470          a.forEach(function (e) {
70471            e = e.trim(), Tc(e) ? o = e : Sc(e) && (u = e);
70472          }), n = s.type + '; codecs="' + u + '"', r = s.type.replace("video", "audio") + '; codecs="' + o + '"';
70473        }
70474        var l = {},
70475            c = t.playlist_;
70476
70477        for (var h in e) {
70478          l[h] = {
70479            audioContentType: r,
70480            videoContentType: n
70481          }, c.contentProtection && c.contentProtection[h] && c.contentProtection[h].pssh && (l[h].pssh = c.contentProtection[h].pssh), "string" == typeof e[h] && (l[h].url = e[h]);
70482        }
70483
70484        return as.mergeOptions(e, l);
70485      }(e.source_.keySystems, t, i);
70486
70487      r && (n.currentSource().keySystems = r, 11 !== as.browser.IE_VERSION && n.eme.initializeMediaKeys && n.eme.initializeMediaKeys());
70488    }
70489  }
70490
70491  function Bh() {
70492    if (!window.localStorage) return null;
70493    var e = window.localStorage.getItem(Uh);
70494    if (!e) return null;
70495
70496    try {
70497      return JSON.parse(e);
70498    } catch (e) {
70499      return null;
70500    }
70501  }
70502
70503  Dh.supportsNativeHls = function () {
70504    var t = h.createElement("video");
70505    if (!as.getTech("Html5").isSupported()) return !1;
70506    return ["application/vnd.apple.mpegurl", "audio/mpegurl", "audio/x-mpegurl", "application/x-mpegurl", "video/x-mpegurl", "video/mpegurl", "application/mpegurl"].some(function (e) {
70507      return /maybe|probably/i.test(t.canPlayType(e));
70508    });
70509  }(), Dh.supportsNativeDash = !!as.getTech("Html5").isSupported() && /maybe|probably/i.test(h.createElement("video").canPlayType("application/dash+xml")), Dh.supportsTypeNatively = function (e) {
70510    return "hls" === e ? Dh.supportsNativeHls : "dash" === e && Dh.supportsNativeDash;
70511  }, Dh.isSupported = function () {
70512    return as.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.");
70513  };
70514  var jh = as.getComponent("Component"),
70515      Fh = (ll(Hh, jh), ol(Hh, [{
70516    key: "setOptions_",
70517    value: function value() {
70518      var t = this;
70519
70520      if (this.options_.withCredentials = this.options_.withCredentials || !1, this.options_.handleManifestRedirects = this.options_.handleManifestRedirects || !1, this.options_.limitRenditionByPlayerDimensions = !1 !== this.options_.limitRenditionByPlayerDimensions, this.options_.useDevicePixelRatio = this.options_.useDevicePixelRatio || !1, this.options_.smoothQualityChange = this.options_.smoothQualityChange || !1, this.options_.useBandwidthFromLocalStorage = "undefined" != typeof this.source_.useBandwidthFromLocalStorage ? this.source_.useBandwidthFromLocalStorage : this.options_.useBandwidthFromLocalStorage || !1, this.options_.customTagParsers = this.options_.customTagParsers || [], this.options_.customTagMappers = this.options_.customTagMappers || [], this.options_.cacheEncryptionKeys = this.options_.cacheEncryptionKeys || !1, "number" != typeof this.options_.blacklistDuration && (this.options_.blacklistDuration = 300), "number" != typeof this.options_.bandwidth && this.options_.useBandwidthFromLocalStorage) {
70521        var e = Bh();
70522        e && e.bandwidth && (this.options_.bandwidth = e.bandwidth, this.tech_.trigger({
70523          type: "usage",
70524          name: "hls-bandwidth-from-local-storage"
70525        })), e && e.throughput && (this.options_.throughput = e.throughput, this.tech_.trigger({
70526          type: "usage",
70527          name: "hls-throughput-from-local-storage"
70528        }));
70529      }
70530
70531      "number" != typeof this.options_.bandwidth && (this.options_.bandwidth = eh.INITIAL_BANDWIDTH), this.options_.enableLowInitialPlaylist = this.options_.enableLowInitialPlaylist && this.options_.bandwidth === eh.INITIAL_BANDWIDTH, ["withCredentials", "useDevicePixelRatio", "limitRenditionByPlayerDimensions", "bandwidth", "smoothQualityChange", "customTagParsers", "customTagMappers", "handleManifestRedirects", "cacheEncryptionKeys"].forEach(function (e) {
70532        "undefined" != typeof t.source_[e] && (t.options_[e] = t.source_[e]);
70533      }), this.limitRenditionByPlayerDimensions = this.options_.limitRenditionByPlayerDimensions, this.useDevicePixelRatio = this.options_.useDevicePixelRatio;
70534    }
70535  }, {
70536    key: "src",
70537    value: function value(e, t) {
70538      var i = this;
70539      e && (this.setOptions_(), this.options_.url = this.source_.src, this.options_.tech = this.tech_, this.options_.externHls = Dh, this.options_.sourceType = Nh(t), this.options_.seekTo = function (e) {
70540        i.tech_.setCurrentTime(e);
70541      }, this.masterPlaylistController_ = new wh(this.options_), this.playbackWatcher_ = new Ih(as.mergeOptions(this.options_, {
70542        seekable: function seekable() {
70543          return i.seekable();
70544        },
70545        media: function media() {
70546          return i.masterPlaylistController_.media();
70547        }
70548      })), this.masterPlaylistController_.on("error", function () {
70549        as.players[i.tech_.options_.playerId].error(i.masterPlaylistController_.error);
70550      }), this.masterPlaylistController_.selectPlaylist = this.selectPlaylist ? this.selectPlaylist.bind(this) : Dh.STANDARD_PLAYLIST_SELECTOR.bind(this), this.masterPlaylistController_.selectInitialPlaylist = Dh.INITIAL_PLAYLIST_SELECTOR.bind(this), this.playlists = this.masterPlaylistController_.masterPlaylistLoader_, this.mediaSource = this.masterPlaylistController_.mediaSource, Object.defineProperties(this, {
70551        selectPlaylist: {
70552          get: function get() {
70553            return this.masterPlaylistController_.selectPlaylist;
70554          },
70555          set: function set(e) {
70556            this.masterPlaylistController_.selectPlaylist = e.bind(this);
70557          }
70558        },
70559        throughput: {
70560          get: function get() {
70561            return this.masterPlaylistController_.mainSegmentLoader_.throughput.rate;
70562          },
70563          set: function set(e) {
70564            this.masterPlaylistController_.mainSegmentLoader_.throughput.rate = e, this.masterPlaylistController_.mainSegmentLoader_.throughput.count = 1;
70565          }
70566        },
70567        bandwidth: {
70568          get: function get() {
70569            return this.masterPlaylistController_.mainSegmentLoader_.bandwidth;
70570          },
70571          set: function set(e) {
70572            this.masterPlaylistController_.mainSegmentLoader_.bandwidth = e, this.masterPlaylistController_.mainSegmentLoader_.throughput = {
70573              rate: 0,
70574              count: 0
70575            };
70576          }
70577        },
70578        systemBandwidth: {
70579          get: function get() {
70580            var e = 1 / (this.bandwidth || 1),
70581                t = void 0;
70582            return t = 0 < this.throughput ? 1 / this.throughput : 0, Math.floor(1 / (e + t));
70583          },
70584          set: function set() {
70585            as.log.error('The "systemBandwidth" property is read-only');
70586          }
70587        }
70588      }), this.options_.bandwidth && (this.bandwidth = this.options_.bandwidth), this.options_.throughput && (this.throughput = this.options_.throughput), Object.defineProperties(this.stats, {
70589        bandwidth: {
70590          get: function get() {
70591            return i.bandwidth || 0;
70592          },
70593          enumerable: !0
70594        },
70595        mediaRequests: {
70596          get: function get() {
70597            return i.masterPlaylistController_.mediaRequests_() || 0;
70598          },
70599          enumerable: !0
70600        },
70601        mediaRequestsAborted: {
70602          get: function get() {
70603            return i.masterPlaylistController_.mediaRequestsAborted_() || 0;
70604          },
70605          enumerable: !0
70606        },
70607        mediaRequestsTimedout: {
70608          get: function get() {
70609            return i.masterPlaylistController_.mediaRequestsTimedout_() || 0;
70610          },
70611          enumerable: !0
70612        },
70613        mediaRequestsErrored: {
70614          get: function get() {
70615            return i.masterPlaylistController_.mediaRequestsErrored_() || 0;
70616          },
70617          enumerable: !0
70618        },
70619        mediaTransferDuration: {
70620          get: function get() {
70621            return i.masterPlaylistController_.mediaTransferDuration_() || 0;
70622          },
70623          enumerable: !0
70624        },
70625        mediaBytesTransferred: {
70626          get: function get() {
70627            return i.masterPlaylistController_.mediaBytesTransferred_() || 0;
70628          },
70629          enumerable: !0
70630        },
70631        mediaSecondsLoaded: {
70632          get: function get() {
70633            return i.masterPlaylistController_.mediaSecondsLoaded_() || 0;
70634          },
70635          enumerable: !0
70636        },
70637        buffered: {
70638          get: function get() {
70639            return Kl(i.tech_.buffered());
70640          },
70641          enumerable: !0
70642        },
70643        currentTime: {
70644          get: function get() {
70645            return i.tech_.currentTime();
70646          },
70647          enumerable: !0
70648        },
70649        currentSource: {
70650          get: function get() {
70651            return i.tech_.currentSource_;
70652          },
70653          enumerable: !0
70654        },
70655        currentTech: {
70656          get: function get() {
70657            return i.tech_.name_;
70658          },
70659          enumerable: !0
70660        },
70661        duration: {
70662          get: function get() {
70663            return i.tech_.duration();
70664          },
70665          enumerable: !0
70666        },
70667        master: {
70668          get: function get() {
70669            return i.playlists.master;
70670          },
70671          enumerable: !0
70672        },
70673        playerDimensions: {
70674          get: function get() {
70675            return i.tech_.currentDimensions();
70676          },
70677          enumerable: !0
70678        },
70679        seekable: {
70680          get: function get() {
70681            return Kl(i.tech_.seekable());
70682          },
70683          enumerable: !0
70684        },
70685        timestamp: {
70686          get: function get() {
70687            return Date.now();
70688          },
70689          enumerable: !0
70690        },
70691        videoPlaybackQuality: {
70692          get: function get() {
70693            return i.tech_.getVideoPlaybackQuality();
70694          },
70695          enumerable: !0
70696        }
70697      }), this.tech_.one("canplay", this.masterPlaylistController_.setupFirstPlay.bind(this.masterPlaylistController_)), this.tech_.on("bandwidthupdate", function () {
70698        i.options_.useBandwidthFromLocalStorage && function (e) {
70699          if (window.localStorage) {
70700            var t = Bh();
70701            t = t ? as.mergeOptions(t, e) : e;
70702
70703            try {
70704              window.localStorage.setItem(Uh, JSON.stringify(t));
70705            } catch (e) {
70706              return;
70707            }
70708          }
70709        }({
70710          bandwidth: i.bandwidth,
70711          throughput: Math.round(i.throughput)
70712        });
70713      }), this.masterPlaylistController_.on("selectedinitialmedia", function () {
70714        !function (i) {
70715          var e = i.playlists;
70716
70717          i.representations = function () {
70718            return e && e.master && e.master.playlists ? e.master.playlists.filter(function (e) {
70719              return !Pl(e);
70720            }).map(function (e, t) {
70721              return new xh(i, e, e.id);
70722            }) : [];
70723          };
70724        }(i), Mh(i);
70725      }), this.on(this.masterPlaylistController_, "progress", function () {
70726        this.tech_.trigger("progress");
70727      }), this.on(this.masterPlaylistController_, "firstplay", function () {
70728        this.ignoreNextSeekingEvent_ = !0;
70729      }), this.setupQualityLevels_(), this.tech_.el() && this.tech_.src(as.URL.createObjectURL(this.masterPlaylistController_.mediaSource)));
70730    }
70731  }, {
70732    key: "setupQualityLevels_",
70733    value: function value() {
70734      var e = this,
70735          t = as.players[this.tech_.options_.playerId];
70736      t && t.qualityLevels && !this.qualityLevels_ && (this.qualityLevels_ = t.qualityLevels(), this.masterPlaylistController_.on("selectedinitialmedia", function () {
70737        !function (t, e) {
70738          e.representations().forEach(function (e) {
70739            t.addQualityLevel(e);
70740          }), Rh(t, e.playlists);
70741        }(e.qualityLevels_, e);
70742      }), this.playlists.on("mediachange", function () {
70743        Rh(e.qualityLevels_, e.playlists);
70744      }));
70745    }
70746  }, {
70747    key: "play",
70748    value: function value() {
70749      this.masterPlaylistController_.play();
70750    }
70751  }, {
70752    key: "setCurrentTime",
70753    value: function value(e) {
70754      this.masterPlaylistController_.setCurrentTime(e);
70755    }
70756  }, {
70757    key: "duration",
70758    value: function value() {
70759      return this.masterPlaylistController_.duration();
70760    }
70761  }, {
70762    key: "seekable",
70763    value: function value() {
70764      return this.masterPlaylistController_.seekable();
70765    }
70766  }, {
70767    key: "dispose",
70768    value: function value() {
70769      this.playbackWatcher_ && this.playbackWatcher_.dispose(), this.masterPlaylistController_ && this.masterPlaylistController_.dispose(), this.qualityLevels_ && this.qualityLevels_.dispose(), this.player_ && (delete this.player_.vhs, delete this.player_.dash, delete this.player_.hls), this.tech_ && this.tech_.hls && delete this.tech_.hls, function e(t, i, n) {
70770        null === t && (t = Function.prototype);
70771        var r = Object.getOwnPropertyDescriptor(t, i);
70772
70773        if (void 0 === r) {
70774          var s = Object.getPrototypeOf(t);
70775          return null === s ? void 0 : e(s, i, n);
70776        }
70777
70778        if ("value" in r) return r.value;
70779        var a = r.get;
70780        return void 0 !== a ? a.call(n) : void 0;
70781      }(Hh.prototype.__proto__ || Object.getPrototypeOf(Hh.prototype), "dispose", this).call(this);
70782    }
70783  }, {
70784    key: "convertToProgramTime",
70785    value: function value(e, t) {
70786      return Vl({
70787        playlist: this.masterPlaylistController_.media(),
70788        time: e,
70789        callback: t
70790      });
70791    }
70792  }, {
70793    key: "seekToProgramTime",
70794    value: function value(e, t, i, n) {
70795      var r = !(2 < arguments.length && void 0 !== i) || i,
70796          s = 3 < arguments.length && void 0 !== n ? n : 2;
70797      return ql({
70798        programTime: e,
70799        playlist: this.masterPlaylistController_.media(),
70800        retryCount: s,
70801        pauseAfterSeek: r,
70802        seekTo: this.options_.seekTo,
70803        tech: this.options_.tech,
70804        callback: t
70805      });
70806    }
70807  }]), Hh);
70808
70809  function Hh(e, t, i) {
70810    al(this, Hh);
70811    var n = cl(this, (Hh.__proto__ || Object.getPrototypeOf(Hh)).call(this, t, i.hls));
70812
70813    if (t.options_ && t.options_.playerId) {
70814      var r = as(t.options_.playerId);
70815      r.hasOwnProperty("hls") || Object.defineProperty(r, "hls", {
70816        get: function get() {
70817          return as.log.warn("player.hls is deprecated. Use player.tech().hls instead."), t.trigger({
70818            type: "usage",
70819            name: "hls-player-access"
70820          }), n;
70821        },
70822        configurable: !0
70823      }), r.vhs = n, (r.dash = n).player_ = r;
70824    }
70825
70826    if (n.tech_ = t, n.source_ = e, n.stats = {}, n.ignoreNextSeekingEvent_ = !1, n.setOptions_(), n.options_.overrideNative && t.overrideNativeAudioTracks && t.overrideNativeVideoTracks) t.overrideNativeAudioTracks(!0), t.overrideNativeVideoTracks(!0);else if (n.options_.overrideNative && (t.featuresNativeVideoTracks || t.featuresNativeAudioTracks)) throw new Error("Overriding native HLS requires emulated tracks. See https://git.io/vMpjB");
70827    return n.on(h, ["fullscreenchange", "webkitfullscreenchange", "mozfullscreenchange", "MSFullscreenChange"], function (e) {
70828      var t = h.fullscreenElement || h.webkitFullscreenElement || h.mozFullScreenElement || h.msFullscreenElement;
70829      t && t.contains(n.tech_.el()) && n.masterPlaylistController_.smoothQualityChange_();
70830    }), n.on(n.tech_, "seeking", function () {
70831      this.ignoreNextSeekingEvent_ ? this.ignoreNextSeekingEvent_ = !1 : this.setCurrentTime(this.tech_.currentTime());
70832    }), n.on(n.tech_, "error", function () {
70833      this.masterPlaylistController_ && this.masterPlaylistController_.pauseLoading();
70834    }), n.on(n.tech_, "play", n.play), n;
70835  }
70836
70837  var Vh = {
70838    name: "videojs-http-streaming",
70839    VERSION: "1.13.2",
70840    canHandleSource: function canHandleSource(e, t) {
70841      var i = as.mergeOptions(as.options, 1 < arguments.length && void 0 !== t ? t : {});
70842      return Vh.canPlayType(e.type, i);
70843    },
70844    handleSource: function handleSource(e, t, i) {
70845      var n = as.mergeOptions(as.options, 2 < arguments.length && void 0 !== i ? i : {});
70846      return t.hls = new Fh(e, t, n), t.hls.xhr = Nl(), t.hls.src(e.src, e.type), t.hls;
70847    },
70848    canPlayType: function canPlayType(e, t) {
70849      var i = as.mergeOptions(as.options, 1 < arguments.length && void 0 !== t ? t : {}).hls.overrideNative,
70850          n = Nh(e);
70851      return n && (!Dh.supportsTypeNatively(n) || i) ? "maybe" : "";
70852    }
70853  };
70854  return "undefined" != typeof as.MediaSource && "undefined" != typeof as.URL || (as.MediaSource = Oc, as.URL = Dc), Oc.supportsNativeMediaSources() && as.getTech("Html5").registerSourceHandler(Vh, 0), as.HlsHandler = Fh, as.HlsSourceHandler = Vh, as.Hls = Dh, as.use || as.registerComponent("Hls", Dh), as.options.hls = as.options.hls || {}, as.registerPlugin ? as.registerPlugin("reloadSourceOnError", Lh) : as.plugin("reloadSourceOnError", Lh), as;
70855});
70856/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../sfra-webpack-builder/node_modules/node-libs-browser/node_modules/buffer/index.js */ "./node_modules/node-libs-browser/node_modules/buffer/index.js").Buffer))
70857
70858/***/ }),
70859
70860/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/cart.js":
70861/*!*****************************************************************************************************!*\
70862  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/cart.js ***!
70863  \*****************************************************************************************************/
70864/*! no static exports found */
70865/***/ (function(module, exports, __webpack_require__) {
70866
70867"use strict";
70868
70869
70870var core = __webpack_require__(/*! core/cart */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/cart.js");
70871
70872var siteIntegrations = __webpack_require__(/*! ./integrations/siteIntegrationsUtils */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js");
70873
70874var toggleObject = siteIntegrations.getIntegrationSettings();
70875
70876if (toggleObject.subproEnabled) {
70877  core.baseFiles.subproSubscriptionOptions = __webpack_require__(/*! ./integrations/subpro/subscriptionOptions */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/subpro/subscriptionOptions.js");
70878}
70879
70880if (toggleObject.bopisCartridgeEnabled) {
70881  core.baseFiles.instore = __webpack_require__(/*! ./integrations/bopis/cart/instore */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/cart/instore.js");
70882}
70883
70884if (toggleObject.cybersourceCartridgeEnabled || toggleObject.adyenCartridgeEnabled) {
70885  core.baseFiles.applepay = __webpack_require__(/*! ./integrations/applepay */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/applepay.js");
70886}
70887
70888if (toggleObject.cybersourceCartridgeEnabled) {
70889  core.baseFiles.cybersourceMinicart = __webpack_require__(/*! ./integrations/cybersource/components/miniCart */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/cybersource/components/miniCart.js");
70890  core.baseFiles.cybersourcePaypal = __webpack_require__(/*! ./integrations/cybersource/paypal */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/cybersource/paypal.js");
70891} //Standalone paypal does not have a toggle
70892
70893
70894core.baseFiles.paypalUtils = __webpack_require__(/*! ./integrations/paypal */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/paypal.js");
70895module.exports = core;
70896
70897/***/ }),
70898
70899/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/applepay.js":
70900/*!**********************************************************************************************************************!*\
70901  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/applepay.js ***!
70902  \**********************************************************************************************************************/
70903/*! no static exports found */
70904/***/ (function(module, exports, __webpack_require__) {
70905
70906"use strict";
70907
70908
70909function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
70910
70911function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
70912
70913function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
70914
70915module.exports = {
70916  methods: {
70917    afterApplePayTagReplacement: function afterApplePayTagReplacement(data) {
70918      var checkoutPaymentTab = $('.nav-item.applepay-tab-wrapper');
70919
70920      if (checkoutPaymentTab.length === 1) {
70921        checkoutPaymentTab.removeAttr('hidden');
70922      }
70923
70924      var container;
70925
70926      if (data && data.target) {
70927        container = $(data.target).find('.js-paymentmethodwarning-msgcontainer');
70928      } else {
70929        container = $('#applepay-content .js-paymentmethodwarning-msgcontainer');
70930      }
70931
70932      if (container) {
70933        container.attr('data-iframepresent', true);
70934        container.data('iframepresent', true);
70935        $('body').trigger('PaymentMethodObserver:iframePresent');
70936      }
70937    }
70938  },
70939  updateAddToCart: function updateAddToCart() {
70940    $('body').on('product:updateAddToCart', function (e, response) {
70941      var $productContainer = response.$productContainer;
70942      var appleButton = $productContainer.find('button.dw-apple-pay-button');
70943
70944      if (appleButton && appleButton.length) {
70945        $('body').trigger('PaymentMethodObserver:Show', {
70946          name: 'available',
70947          show: !response.product.readyToOrder || !response.product.available
70948        });
70949        appleButton.attr('sku', response.product.id);
70950      }
70951    });
70952  },
70953  detectIsApplePayTagReplacement: function detectIsApplePayTagReplacement() {
70954    //can handle running before or after replacement by internal demandware applepay script
70955    var applePayTag = $('isapplepay');
70956
70957    if (applePayTag.length === 0) {
70958      module.exports.methods.afterApplePayTagReplacement();
70959    } else {
70960      $('body').on('PaymentMethodObserver:AddNode', function (e, data) {
70961        if (data && data.addNode && data.addNode.classList) {
70962          var _iterator = _createForOfIteratorHelper(data.addNode.classList),
70963              _step;
70964
70965          try {
70966            for (_iterator.s(); !(_step = _iterator.n()).done;) {
70967              var className = _step.value;
70968
70969              if (className === 'dw-apple-pay-button') {
70970                module.exports.methods.afterApplePayTagReplacement(data);
70971                data.observer.disconnect();
70972                return;
70973              }
70974            }
70975          } catch (err) {
70976            _iterator.e(err);
70977          } finally {
70978            _iterator.f();
70979          }
70980        }
70981      });
70982    }
70983  }
70984};
70985
70986/***/ }),
70987
70988/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/cart/instore.js":
70989/*!********************************************************************************************************************************!*\
70990  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/cart/instore.js ***!
70991  \********************************************************************************************************************************/
70992/*! no static exports found */
70993/***/ (function(module, exports, __webpack_require__) {
70994
70995"use strict";
70996
70997
70998function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
70999
71000function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
71001
71002function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
71003
71004function updateEditModalStoreAttribute($modal, storeId) {
71005  var $updateCartUrl = $modal.find('.update-cart-url');
71006
71007  if ($updateCartUrl.length > 0) {
71008    $updateCartUrl.attr('data-store-id', storeId || null);
71009  }
71010}
71011
71012function getUrlParam(name) {
71013  var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);
71014
71015  if (results == null) {
71016    return null;
71017  } else {
71018    return decodeURI(results[1]) || 0;
71019  }
71020}
71021
71022function onCartUpdate() {
71023  $('body').on('cart:update', function (e, data, uuid) {
71024    var hasInstorePickup = false;
71025    var basket = data.basket || data.cartModel || data;
71026
71027    if (basket && basket.numItems) {
71028      var _iterator = _createForOfIteratorHelper(basket.items),
71029          _step;
71030
71031      try {
71032        for (_iterator.s(); !(_step = _iterator.n()).done;) {
71033          var item = _step.value;
71034          hasInstorePickup = hasInstorePickup || item.fromStoreId;
71035        }
71036      } catch (err) {
71037        _iterator.e(err);
71038      } finally {
71039        _iterator.f();
71040      }
71041    }
71042
71043    $('body').trigger('PaymentMethodObserver:Show', {
71044      name: 'bopis',
71045      show: hasInstorePickup ? true : false
71046    });
71047  });
71048}
71049
71050module.exports = {
71051  watchForEditModalLaunch: function watchForEditModalLaunch() {
71052    $('body').on('quickview:ready', function (event, modal) {
71053      var $modal = $(modal);
71054      var isEditModal = $modal.find('.cart-and-ipay').length > 0;
71055      var storeId = $modal.find('.store-details[data-store-id]').data('store-id');
71056
71057      if (isEditModal && storeId) {
71058        updateEditModalStoreAttribute($modal, storeId);
71059      }
71060    });
71061  },
71062  watchForStoreChange: function watchForStoreChange() {
71063    $('body').on('store:selected', function (event, data) {
71064      updateEditModalStoreAttribute($('#quickViewModal.show'), data.storeID);
71065    });
71066    $(document).on('store:afterRemoveStoreSelection', function (event, data) {
71067      updateEditModalStoreAttribute($('#quickViewModal.show'), null);
71068    });
71069  },
71070  editModalAutoLaunch: function editModalAutoLaunch() {
71071    var lineItemUUID = getUrlParam('editUUID');
71072
71073    if (lineItemUUID) {
71074      $('.product-edit .edit[data-uuid="' + lineItemUUID + '"]').trigger('click');
71075    }
71076  },
71077  onCartUpdate: onCartUpdate
71078};
71079
71080/***/ }),
71081
71082/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/product/detail.js":
71083/*!**********************************************************************************************************************************!*\
71084  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/product/detail.js ***!
71085  \**********************************************************************************************************************************/
71086/*! no static exports found */
71087/***/ (function(module, exports, __webpack_require__) {
71088
71089"use strict";
71090
71091
71092var base = __webpack_require__(/*! core/product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js");
71093/**
71094 * Update availability on change event on quantity selector and on store:afterRemoveStoreSelection event.
71095 * If store has been selected, exit function otherwise proceed to update attributes.
71096 * @param {Object} element DOM Element.
71097 */
71098
71099
71100function updateAvailability(element) {
71101  var searchPID = $(element).closest('.product-detail').attr('data-pid');
71102  var selectorPrefix = '.product-detail[data-pid="' + searchPID + '"]';
71103
71104  if ($(selectorPrefix + ' .selected-store-with-inventory').is(':visible')) {
71105    return;
71106  }
71107
71108  var $productContainer = $(element).closest('.product-detail');
71109
71110  if (!$productContainer.length) {
71111    $productContainer = $(element).closest('.modal-content').find('.product-quickview');
71112  }
71113
71114  if ($('.bundle-items', $productContainer).length === 0) {
71115    base.methods.attributeSelect($(element).find('option:selected').data('url'), $(element).find('option:selected').data('htmlUrl'), $productContainer);
71116  }
71117}
71118/**
71119 * Registering on change event on quantity selector and on store:afterRemoveStoreSelection event.
71120 */
71121
71122
71123function availability() {
71124  $(document).on('change', '.quantity-select', function (e) {
71125    e.preventDefault();
71126    updateAvailability($(this));
71127  });
71128  $(document).on('store:afterRemoveStoreSelection', function (e, element) {
71129    e.preventDefault();
71130    updateAvailability(element);
71131  });
71132}
71133
71134module.exports = {
71135  availability: availability
71136};
71137
71138/***/ }),
71139
71140/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/product/pdpInstoreInventory.js":
71141/*!***********************************************************************************************************************************************!*\
71142  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/product/pdpInstoreInventory.js ***!
71143  \***********************************************************************************************************************************************/
71144/*! no static exports found */
71145/***/ (function(module, exports, __webpack_require__) {
71146
71147"use strict";
71148
71149
71150var storeLocator = __webpack_require__(/*! core/storeLocator/storeLocator */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/storeLocator/storeLocator.js");
71151
71152var base = __webpack_require__(/*! core/product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js");
71153/**
71154 * Restores Quantity Selector to its original state.
71155 * @param {HTMLElement} $quantitySelect - The Quantity Select Element
71156 */
71157
71158
71159function restoreQuantityOptions($quantitySelect) {
71160  var originalHTML = $quantitySelect.data('originalHTML');
71161
71162  if (originalHTML) {
71163    $quantitySelect.html(originalHTML);
71164  }
71165}
71166/**
71167 * Sets the data attribute of Quantity Selector to save its original state.
71168 * @param {HTMLElement} $quantitySelect - The Quantity Select Element
71169 */
71170
71171
71172function setOriginalQuantitySelect($quantitySelect) {
71173  if (!$quantitySelect.data('originalHTML')) {
71174    $quantitySelect.data('originalHTML', $quantitySelect.html());
71175  } // If it's already there, don't re-set it
71176
71177}
71178/**
71179 * Updates the Quantity Selector based on the In Store Quantity.
71180 * @param {string} $quantitySelector - Quantity Selector
71181 * @param {number} productAtsValue - Inventory in the selected store
71182 */
71183
71184
71185function updateQOptions($quantitySelector, productAtsValue) {
71186  var selectedQuantity = $quantitySelector.val();
71187  module.exports.methods.restoreQuantityOptions($quantitySelector);
71188  $quantitySelector.find('option').each(function (index, option) {
71189    if (index >= productAtsValue) {
71190      $(option).remove();
71191    }
71192  });
71193  $quantitySelector.find('option[value="' + selectedQuantity + '"]').attr('selected', 'selected'); // update qty stepper if enabled
71194
71195  var $qtyStepper = $quantitySelector.closest('.quantity').find('.quantity-stepper');
71196
71197  if ($qtyStepper.length) {
71198    $qtyStepper.attr('data-max', productAtsValue);
71199    base.enableQuantitySteppers($qtyStepper.closest('.quantity'));
71200  }
71201}
71202/**
71203 * Generates the modal window on the first call.
71204 */
71205
71206
71207function getModalHtmlElement() {
71208  if ($('#inStoreInventoryModal').length !== 0) {
71209    $('#inStoreInventoryModal').remove();
71210  }
71211
71212  var htmlString = '<!-- Modal -->' + '<div class="modal " id="inStoreInventoryModal" role="dialog">' + '<div class="modal-dialog modal-lg in-store-inventory-dialog">' + '<!-- Modal content-->' + '<div class="modal-content">' + '<div class="modal-header justify-content-end">' + '    <button type="button" class="close pull-right" data-dismiss="modal" title="' + $('.btn-get-in-store-inventory').data('modal-close-text') + '">' // eslint-disable-line
71213  + '        <span aria-hidden="true">&times;</span>' + '    </button>' + '</div>' + '<div class="modal-body"></div>' + '</div>' + '</div>' + '</div>';
71214  $('body').append(htmlString);
71215  $('#inStoreInventoryModal').modal('show');
71216}
71217/**
71218 * Replaces the content in the modal window with find stores components and
71219 * the result store list.
71220 * @param {string} pid - The product ID to search for
71221 * @param {number} quantity - Number of products to search inventory for
71222 * @param {number} selectedPostalCode - The postal code to search for inventory
71223 * @param {number} selectedRadius - The radius to search for inventory
71224 */
71225
71226
71227function fillModalElement(pid, quantity, selectedPostalCode, selectedRadius) {
71228  var requestData = {};
71229
71230  if (pid && quantity) {
71231    requestData.products = pid + ':' + quantity;
71232  }
71233
71234  ;
71235
71236  if (selectedRadius) {
71237    requestData.radius = selectedRadius;
71238  }
71239
71240  if (selectedPostalCode) {
71241    requestData.postalCode = selectedPostalCode;
71242  }
71243
71244  $('#inStoreInventoryModal').spinner().start();
71245  $.ajax({
71246    url: $('.btn-get-in-store-inventory').data('action-url'),
71247    data: requestData,
71248    method: 'GET',
71249    success: function success(response) {
71250      $('#inStoreInventoryModal .modal-body').empty();
71251      $('#inStoreInventoryModal .modal-body').html(response.storesResultsHtml);
71252      $('.btn-storelocator-search').attr('data-search-pid', pid);
71253
71254      if (selectedRadius) {
71255        $('#radius').val(selectedRadius);
71256      }
71257
71258      if (selectedPostalCode) {
71259        $('#store-postal-code').val(selectedPostalCode);
71260      }
71261
71262      $('#inStoreInventoryModal').modal('show');
71263      $('#inStoreInventoryModal').spinner().stop();
71264    },
71265    error: function error() {
71266      $('#inStoreInventoryModal').spinner().stop();
71267    }
71268  });
71269}
71270/**
71271 * Remove the selected store.
71272 * @param {HTMLElement} $container - the target html element
71273 */
71274
71275
71276function deselectStore($container) {
71277  var storeElement = $($container).find('.selected-store-with-inventory');
71278  $(storeElement).find('.card-body').empty();
71279  $(storeElement).closest('.row').addClass('d-none');
71280  $($container).find('.btn-get-in-store-inventory').closest('.row').removeClass('d-none');
71281  $($container).find('.quantity-select').removeData('originalHTML');
71282}
71283/**
71284 * Update quantity options. Only display quantity options that are available for the store.
71285 * @param {sring} searchPID - The product ID of the selected product.
71286 * @param {number} storeId - The store ID selected for in store pickup.
71287 */
71288
71289
71290function updateQuantityOptions(searchPID, storeId) {
71291  if (!searchPID) {
71292    return false;
71293  }
71294
71295  var selectorPrefix = '.product-detail[data-pid="' + searchPID + '"]';
71296  var $productIdSelector = $(selectorPrefix).find('.product-id').first();
71297  var $quantitySelector = $(selectorPrefix).closest('.modal').length ? $(selectorPrefix).closest('.modal').find('.modal-footer .quantity-select') : $(selectorPrefix).find('.quantity-select');
71298  setOriginalQuantitySelect($quantitySelector);
71299  var requestData = {
71300    pid: $productIdSelector.text(),
71301    quantitySelected: $quantitySelector.val(),
71302    storeId: storeId
71303  };
71304  $.ajax({
71305    url: $('.btn-get-in-store-inventory').data('ats-action-url'),
71306    data: requestData,
71307    method: 'GET',
71308    success: function success(response) {
71309      // Update Quantity dropdown, Remove quantity greater than inventory
71310      var productAtsValue = response.atsValue;
71311      var availabilityValue = '';
71312      var $productContainer = $('.product-detail[data-pid="' + searchPID + '"]');
71313
71314      if (!response.product.readyToOrder) {
71315        availabilityValue = '<li><div>' + response.resources.info_selectforstock + '</div></li>';
71316      } else {
71317        response.product.messages.forEach(function (message) {
71318          availabilityValue += '<li><div>' + message + '</div></li>';
71319        });
71320      }
71321
71322      $productContainer.trigger('product:updateAvailability', {
71323        product: response.product,
71324        $productContainer: $productContainer,
71325        message: availabilityValue,
71326        resources: response.resources
71327      });
71328      $('button.add-to-cart, button.add-to-cart-global, button.update-cart-product-global').trigger('product:updateAddToCart', {
71329        product: response.product,
71330        $productContainer: $productContainer
71331      });
71332      module.exports.methods.updateQOptions($quantitySelector, productAtsValue);
71333    }
71334  });
71335}
71336
71337function getQuantitySelect($target) {
71338  var $quantitySelect;
71339
71340  if ($target.closest('#quickViewModal').length) {
71341    $quantitySelect = $target.closest('#quickViewModal').find('.modal-footer .quantity-select');
71342  } else {
71343    $quantitySelect = $target.closest('.product-detail').find('.quantity-select');
71344  }
71345
71346  return $quantitySelect;
71347}
71348
71349module.exports = {
71350  updateSelectStore: function updateSelectStore() {
71351    $('body').on('product:updateAddToCart', function (e, response) {
71352      $('.btn-get-in-store-inventory', response.$productContainer).attr('disabled', !response.product.readyToOrder || !response.product.available || !response.product.availableForInStorePickup);
71353    });
71354  },
71355  updateSelectedStoreOnAttributeChange: function updateSelectedStoreOnAttributeChange() {
71356    $('body').on('product:afterAttributeSelect', function (e, response) {
71357      var storeId = $(response.container).find('.selected-store-with-inventory [data-store-id]').data('store-id');
71358      response.container.attr('data-pid', response.data.product.id);
71359
71360      if (storeId) {
71361        module.exports.methods.updateQuantityOptions(response.data.product.id, storeId);
71362      } else {
71363        module.exports.methods.deselectStore(response.container); // update qty stepper if enabled
71364
71365        var $qtyStepper = $(response.container).closest('.modal').length ? response.container.closest('.modal').find('.modal-footer .quantity-stepper') : response.container.find('.quantity-stepper');
71366
71367        if ($qtyStepper.length) {
71368          var qtyMax = $qtyStepper.closest('.quantity').find('[class*="quantity-select"] option').length;
71369          $qtyStepper.attr('data-max', qtyMax);
71370          base.enableQuantitySteppers($qtyStepper.closest('.quantity'));
71371        }
71372      }
71373    });
71374  },
71375  updateAddToCartFormData: function updateAddToCartFormData() {
71376    $('body').on('updateAddToCartFormData', function (e, form) {
71377      if (form.pidsObj) {
71378        var pidsObj = JSON.parse(form.pidsObj);
71379        pidsObj.forEach(function (product) {
71380          var storeElement = $('.product-detail[data-pid="' + product.pid + '"]').find('.store-name');
71381          product.storeId = $(storeElement).length // eslint-disable-line no-param-reassign
71382          ? $(storeElement).attr('data-store-id') : null;
71383        });
71384        form.pidsObj = JSON.stringify(pidsObj); // eslint-disable-line no-param-reassign
71385      }
71386
71387      var storeElement = $('.product-detail[data-pid="' + form.pid + '"]');
71388
71389      if ($(storeElement).length) {
71390        form.storeId = $(storeElement).find('.store-name') // eslint-disable-line
71391        .attr('data-store-id');
71392      }
71393    });
71394  },
71395  showInStoreInventory: function showInStoreInventory() {
71396    $('body').on('click', '.btn-get-in-store-inventory', function (event) {
71397      var $target = $(event.target);
71398      var pid = $target.closest('.product-detail').attr('data-pid');
71399      var $quantitySelect = module.exports.methods.getQuantitySelect($target);
71400      var quantity = $quantitySelect.val();
71401      module.exports.methods.getModalHtmlElement();
71402      module.exports.methods.fillModalElement(pid, quantity);
71403      event.stopPropagation();
71404    });
71405  },
71406  removeStoreSelection: function removeStoreSelection() {
71407    $('body').on('click', '#remove-store-selection', function (event) {
71408      var $target = $(event.target);
71409      var $quantitySelect = module.exports.methods.getQuantitySelect($target);
71410      module.exports.methods.deselectStore($target.closest('.product-detail'));
71411      $(document).trigger('store:afterRemoveStoreSelection', $quantitySelect);
71412    });
71413  },
71414  selectStoreWithInventory: function selectStoreWithInventory() {
71415    $('body').on('store:selected', function (e, data) {
71416      var searchPID = data.scope.find('.btn-storelocator-search').attr('data-search-pid');
71417
71418      if (searchPID) {
71419        var $storeElement = $('.product-detail[data-pid="' + searchPID + '"]');
71420        $storeElement.find('.selected-store-with-inventory .card-body').empty();
71421        $storeElement.find('.selected-store-with-inventory .card-body').append(data.storeDetailsHtml);
71422        $storeElement.find('.store-name').attr('data-store-id', data.storeID);
71423        $storeElement.find('.selected-store-with-inventory').closest('.row').removeClass('d-none');
71424        var $changeStoreButton = $storeElement.find('.change-store');
71425        $changeStoreButton.data('postal', data.searchPostalCode);
71426        $changeStoreButton.data('radius', data.searchRadius);
71427        $storeElement.find('.btn-get-in-store-inventory').closest('.row').addClass('d-none');
71428        module.exports.methods.updateQuantityOptions(searchPID, data.storeID);
71429        data.scope.closest('.modal').modal('hide');
71430        data.scope.closest('.modal').remove();
71431      }
71432    });
71433  },
71434  changeStore: function changeStore() {
71435    $('body').on('click', '.change-store', function (event) {
71436      var $target = $(event.target);
71437      var pid = $target.closest('.product-detail').attr('data-pid');
71438      var $quantitySelect = module.exports.methods.getQuantitySelect($target);
71439      var quantity = $quantitySelect.val();
71440      module.exports.methods.getModalHtmlElement();
71441      module.exports.methods.fillModalElement(pid, quantity, $target.data('postal'), $target.data('radius'));
71442    });
71443  },
71444  methods: {
71445    restoreQuantityOptions: restoreQuantityOptions,
71446    setOriginalQuantitySelect: setOriginalQuantitySelect,
71447    updateQOptions: updateQOptions,
71448    getModalHtmlElement: getModalHtmlElement,
71449    fillModalElement: fillModalElement,
71450    deselectStore: deselectStore,
71451    updateQuantityOptions: updateQuantityOptions,
71452    getQuantitySelect: getQuantitySelect
71453  }
71454};
71455
71456/***/ }),
71457
71458/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/commercepayments/components/payment.js":
71459/*!*************************************************************************************************************************************************!*\
71460  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/commercepayments/components/payment.js ***!
71461  \*************************************************************************************************************************************************/
71462/*! no static exports found */
71463/***/ (function(module, exports, __webpack_require__) {
71464
71465"use strict";
71466
71467
71468function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
71469
71470function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
71471
71472function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
71473
71474var recaptcha = __webpack_require__(/*! core/components/recaptcha */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/components/recaptcha.js");
71475/**
71476 * Returns the expected number of express checkout buttons that may be rendered for the given component.
71477 * @param {Object} component - the SFPP component
71478 * @returns {integer} expected number of buttons
71479 */
71480
71481
71482function getExpectedExpressCheckoutButtonsCount(component) {
71483  var renderedTypes = component.getRenderedTypes();
71484  var count = 0;
71485
71486  if (renderedTypes.indexOf('applepay') !== -1 || renderedTypes.indexOf('paymentrequest') !== -1) {
71487    count++;
71488  }
71489
71490  if (renderedTypes.indexOf('paypalexpress') !== -1) {
71491    count++;
71492  }
71493
71494  return count;
71495}
71496/**
71497 * Register payment request buttons on the page that have not yet been registered.
71498 */
71499
71500
71501function registerPaymentRequestButtons() {
71502  if (window.sfpp) {
71503    sfpp.ready(function () {
71504      // eslint-disable-line
71505      $('.salesforce-paymentrequest-element').each(function () {
71506        var element = $(this);
71507
71508        if (element.hasClass('salesforce-paymentrequest-element-registered')) {
71509          // Only register each button once
71510          return;
71511        }
71512
71513        element.addClass('salesforce-paymentrequest-element-registered');
71514        var errorElement = $('.' + element.data('errorsclass'));
71515        var paymentrequest = sfpp.get(element.data('paymentrequestid')); // eslint-disable-line
71516        // Update current payment request with initial data
71517
71518        var abPaymentrequestoptions = element.data('abPaymentrequestoptions');
71519
71520        if (abPaymentrequestoptions) {
71521          paymentrequest.updatePaymentRequest(abPaymentrequestoptions);
71522        }
71523
71524        var paypalMessage = element.closest('.checkout-buttons').find('.salesforce-paypal-messaging');
71525        /**
71526         * Shows/hides PayPal messages component based on rendered payment method types.
71527         */
71528
71529        function updatePayPalMessageVisibility() {
71530          paypalMessage.toggleClass('salesforce-paypal-messaging-hidden', paymentrequest.getRenderedTypes().indexOf('paypalexpress') === -1);
71531        }
71532
71533        var expectedExpressCheckoutButtons = getExpectedExpressCheckoutButtonsCount(paymentrequest);
71534        var renderedExpressCheckoutButtons;
71535        /**
71536         * Shows express checkout button skeletons.
71537         */
71538
71539        function showExpressCheckoutButtonSkeletons() {
71540          element.addClass('salesforce-paymentrequest-element-loading');
71541          element.prepend('<div class="salesforce-paymentrequest-element-skeletons"></div>');
71542
71543          for (var i = 0; i < expectedExpressCheckoutButtons; i++) {
71544            element.children('.salesforce-paymentrequest-element-skeletons').append('<div class="salesforce-paymentrequest-element-skeleton"><button type="button" class="btn" disabled></button></div>');
71545          }
71546
71547          renderedExpressCheckoutButtons = 0;
71548        }
71549        /**
71550         * Removes express checkout button skeletons.
71551         */
71552
71553
71554        function removeExpressCheckoutButtonSkeletons() {
71555          element.children('.salesforce-paymentrequest-element-skeletons').remove();
71556          element.removeClass('salesforce-paymentrequest-element-loading');
71557        } // Show PayPal messages component after initial render
71558
71559
71560        setTimeout(updatePayPalMessageVisibility); // Don't Show express checkout buttons skeletons while initially loading
71561        // showExpressCheckoutButtonSkeletons();
71562
71563        paymentrequest.on('render', function () {
71564          // Show express checkout buttons skeletons after refreshing
71565          expectedExpressCheckoutButtons = getExpectedExpressCheckoutButtonsCount(paymentrequest);
71566          showExpressCheckoutButtonSkeletons(); // Show/hide PayPal messages component after refreshing
71567
71568          updatePayPalMessageVisibility();
71569        });
71570        /**
71571         * Called each time an express checkout button is shown.
71572         */
71573
71574        function expressCheckoutButtonShown() {
71575          renderedExpressCheckoutButtons++;
71576
71577          if (renderedExpressCheckoutButtons >= expectedExpressCheckoutButtons) {
71578            removeExpressCheckoutButtonSkeletons();
71579          } // Show/hide PayPal messages component after refreshing
71580
71581
71582          updatePayPalMessageVisibility();
71583        }
71584
71585        paymentrequest.on('paypal.init', expressCheckoutButtonShown);
71586        paymentrequest.on('paymentrequest.init', expressCheckoutButtonShown); // Update error message on change
71587
71588        paymentrequest.on('change', function (event) {
71589          if (event.error) {
71590            // Inform the customer that there is an error.
71591            errorElement.empty().text(event.error.message);
71592          } else {
71593            // Clear out error message
71594            errorElement.empty();
71595          }
71596        });
71597        $('body').on('cart:beforeUpdate cart:beforeShippingMethodSelected checkout:beforeShippingMethodSelected promotion:beforeUpdate checkout:beforeGiftCertificateUpdate', function () {
71598          element.attr('disabled', true);
71599        });
71600        $('body').on('cart:update cart:shippingMethodSelected checkout:shippingMethodSelected promotion:success promotion:error checkout:giftCertificateUpdate', function (e, data) {
71601          if ('paymentRequestOptions' in data && data.paymentRequestOptions) {
71602            paymentrequest.updatePaymentRequest(data.paymentRequestOptions);
71603            var enabled = data.paymentRequestOptions.total.amount > 0;
71604            element.attr('disabled', !enabled);
71605            paypalMessage.find('div[data-pp-message]').attr('data-pp-amount', data.paypalAmount);
71606          }
71607        });
71608        $('body').on('checkout:billingCountrySelected', function (e, data) {
71609          // Update payment billing details and refresh when country changed
71610          paymentrequest.updateBillingDetails(data.billingDetails);
71611          paymentrequest.refresh();
71612        });
71613        paymentrequest.on('payment', function (e) {
71614          recaptcha.check(e, {
71615            url: element.data('placeorder'),
71616            method: 'POST',
71617            success: function success(data) {
71618              if (data.error) {
71619                // Inform the customer that there is an error.
71620                errorElement.empty().text(data.errorMessage);
71621              } else {
71622                // Show the order confirmation page
71623                var redirect = $('<form>').appendTo(document.body).attr({
71624                  method: 'POST',
71625                  action: data.continueUrl
71626                });
71627                $('<input>').appendTo(redirect).attr({
71628                  name: 'orderID',
71629                  value: data.orderID
71630                });
71631                $('<input>').appendTo(redirect).attr({
71632                  name: 'orderToken',
71633                  value: data.orderToken
71634                });
71635                redirect.submit();
71636              }
71637            },
71638            error: function error(err) {
71639              // Inform the customer that there is an error.
71640              errorElement.empty().text(err.message);
71641            }
71642          });
71643        });
71644        paymentrequest.on('paypal.approve', function () {
71645          $.ajax({
71646            url: element.data('paypalapprove'),
71647            type: 'post',
71648            data: '',
71649            success: function success(data) {
71650              window.location.href = data.redirectUrl;
71651            },
71652            error: function error(err) {
71653              if (err.responseJSON && err.responseJSON.redirectUrl) {
71654                window.location.href = err.responseJSON.redirectUrl;
71655              } else {
71656                // Inform the customer that there is an error.
71657                errorElement.empty().text(err.responseJSON.message);
71658              }
71659            }
71660          });
71661        });
71662      });
71663    });
71664  }
71665}
71666
71667function onPaymentRequestButtonRegister() {
71668  $('body').on('paymentrequestbutton:register', function () {
71669    module.exports.methods.registerPaymentRequestButtons();
71670  });
71671}
71672
71673function onTrackBuyNowiframe() {
71674  $('body').on('PaymentMethodObserver:AddNode', function (e, data) {
71675    if (data && data.addNode && data.addNode.classList) {
71676      var _iterator = _createForOfIteratorHelper(data.addNode.classList),
71677          _step;
71678
71679      try {
71680        for (_iterator.s(); !(_step = _iterator.n()).done;) {
71681          var className = _step.value;
71682
71683          if (className === 'StripeElement') {
71684            var container = $(data.target).find('.js-paymentmethodwarning-msgcontainer');
71685
71686            if (container.length) {
71687              container.attr('data-iframepresent', true);
71688              container.data('iframepresent', true);
71689              $('body').trigger('PaymentMethodObserver:iframePresent');
71690              data.observer.disconnect();
71691            }
71692
71693            return;
71694          }
71695        }
71696      } catch (err) {
71697        _iterator.e(err);
71698      } finally {
71699        _iterator.f();
71700      }
71701    }
71702  });
71703}
71704
71705function onTrackCreditCardiframe() {
71706  $('body').on('PaymentMethodObserver:AddNode', function (e, data) {
71707    if (data && data.addNode && data.addNode.classList) {
71708      var _iterator2 = _createForOfIteratorHelper(data.addNode.classList),
71709          _step2;
71710
71711      try {
71712        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
71713          var className = _step2.value;
71714
71715          if (className === 'sfpp-payment-method-card') {
71716            var container = $(data.target).find('.js-paymentmethodwarning-msgcontainer');
71717
71718            if (container.length) {
71719              container.attr('data-iframepresent', true);
71720              container.data('iframepresent', true);
71721              $('body').trigger('PaymentMethodObserver:iframePresent');
71722              data.observer.disconnect();
71723            }
71724
71725            return;
71726          }
71727        }
71728      } catch (err) {
71729        _iterator2.e(err);
71730      } finally {
71731        _iterator2.f();
71732      }
71733    }
71734  });
71735}
71736
71737module.exports = {
71738  methods: {
71739    registerPaymentRequestButtons: registerPaymentRequestButtons
71740  },
71741  onTrackBuyNowiframe: onTrackBuyNowiframe,
71742  onTrackCreditCardiframe: onTrackCreditCardiframe,
71743  onPaymentRequestButtonRegister: onPaymentRequestButtonRegister
71744};
71745
71746/***/ }),
71747
71748/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/cybersource/components/miniCart.js":
71749/*!*********************************************************************************************************************************************!*\
71750  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/cybersource/components/miniCart.js ***!
71751  \*********************************************************************************************************************************************/
71752/*! no static exports found */
71753/***/ (function(module, exports, __webpack_require__) {
71754
71755"use strict";
71756
71757
71758module.exports = {
71759  // AB doesn't want extra buttons on minicart, but enabling this code will allow that
71760  // onCybersourceMiniCartLoaded: function () {
71761  //     $('body').on('minicart:loaded', (event, minicart) => {
71762  //         var isPaypalEnabled = !!($('#paypal_enabled').length > 0 && document.getElementById('paypal_enabled').value == 'true');
71763  //         var isGooglePayEnabled = !!($('#isGooglePayEnabled').length > 0 && $('#isGooglePayEnabled').val() == 'true');
71764  //         if (isPaypalEnabled) {
71765  //             paypalhelper.paypalMini();
71766  //         }
71767  //         if (isGooglePayEnabled) {
71768  //             onGooglePayLoaded();
71769  //         }
71770  //     });
71771  // },
71772  onCybersourceMiniCartMouseLeaveFocusOut: function onCybersourceMiniCartMouseLeaveFocusOut() {
71773    $('body').on('minicart:mouseleave_focusout', function (event, minicart) {
71774      if (!($(document).find('.paypal-checkout-sandbox').length > 0)) {
71775        $('.minicart .popover').empty();
71776        $('.minicart .popover').removeClass('show');
71777      }
71778    });
71779  }
71780};
71781
71782/***/ }),
71783
71784/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/cybersource/paypal.js":
71785/*!********************************************************************************************************************************!*\
71786  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/cybersource/paypal.js ***!
71787  \********************************************************************************************************************************/
71788/*! no static exports found */
71789/***/ (function(module, exports, __webpack_require__) {
71790
71791"use strict";
71792 //This file is intended for use with the standalone paypal plugin
71793
71794function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
71795
71796function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
71797
71798function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
71799
71800module.exports = {
71801  methods: {
71802    afterPayPalIframe: function afterPayPalIframe(data) {
71803      var container;
71804
71805      if (data && data.target) {
71806        container = $(data.target).find('.js-paymentmethodwarning-msgcontainer');
71807      } else {
71808        container = $('.js-paypal-checkout.js-paymentmethodwarning-msgcontainer');
71809      }
71810
71811      if (container) {
71812        container.attr('data-iframepresent', true);
71813        container.data('iframepresent', true);
71814        $('body').trigger('PaymentMethodObserver:iframePresent');
71815      }
71816    }
71817  },
71818  detectPayPalIframe: function detectPayPalIframe() {
71819    //can handle running before or after replacement by paypal blob
71820    var paypalIframe = $('.paypal-buttons-context-iframe');
71821
71822    if (paypalIframe.length === 1) {
71823      module.exports.methods.afterPayPalIframe();
71824    } else {
71825      $('body').on('PaymentMethodObserver:AddNode', function (e, data) {
71826        if (data && data.addNode && data.addNode.classList) {
71827          var _iterator = _createForOfIteratorHelper(data.addNode.classList),
71828              _step;
71829
71830          try {
71831            for (_iterator.s(); !(_step = _iterator.n()).done;) {
71832              var className = _step.value;
71833
71834              if (className === 'paypal-buttons-context-iframe') {
71835                module.exports.methods.afterPayPalIframe(data);
71836                data.observer.disconnect();
71837                return;
71838              }
71839            }
71840          } catch (err) {
71841            _iterator.e(err);
71842          } finally {
71843            _iterator.f();
71844          }
71845        }
71846      });
71847    }
71848  }
71849};
71850
71851/***/ }),
71852
71853/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/klaviyo/identify.js":
71854/*!******************************************************************************************************************************!*\
71855  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/klaviyo/identify.js ***!
71856  \******************************************************************************************************************************/
71857/*! no static exports found */
71858/***/ (function(module, exports, __webpack_require__) {
71859
71860"use strict";
71861
71862/**
71863 * appends params to a url
71864 * @param {string} data - data returned from the server's ajax call
71865 * @param {Object} button - button that was clicked for email sign-up
71866 */
71867
71868function displayMessage(success, msg) {
71869  var status = success ? 'alert-success' : 'alert-danger';
71870
71871  if ($('.email-signup-message').length === 0) {
71872    $('body').append('<div class="email-signup-message"></div>');
71873  }
71874
71875  if (!msg && $('#fallback-fail-msg')) {
71876    var msg = $('#fallback-fail-msg').val();
71877  }
71878
71879  $('.email-signup-message').append('<div class="email-signup-alert text-center alert ' + status + '">' + msg + '</div>');
71880  setTimeout(function () {
71881    $('.email-signup-message').remove();
71882  }, 3000);
71883}
71884
71885module.exports = {
71886  klaviyoPush: function klaviyoPush() {
71887    $('body').on('login:register:success footer:signup:success subscribe:success klaviyoSubscribe:success klaviyoUpdateSubscription:success', function (e, data) {
71888      if (data._learnq) {
71889        // klaviyo integration — identifies user
71890        _learnq.push(['identify', data._learnq]);
71891      }
71892    });
71893  },
71894
71895  /**
71896   * Enables user to opt in/opt out of klaviyo email subscriptions in account dashboard
71897   */
71898  klaviyoUpdateSubscription: function klaviyoUpdateSubscription() {
71899    $('body').on('change', '.account-page .klaviyo-form .klaviyo-subscription', function (e) {
71900      //
71901      // Submit the Klaviyo Subscribe Form
71902      //
71903      var form = $('[name="klaviyoSubscribe"]');
71904      var subscribe = form.find('#klaviyo-subscription-checkbox');
71905      var csrf_token = form.find('[name="csrf_token"]').val();
71906      var email = subscribe.val();
71907      var isChecked = subscribe.is(':checked'); // CLIENT MOD: Prevent unchecking this box from unsubscribing users (users must unsubscrbe through the email)
71908
71909      if (!isChecked) {
71910        return;
71911      }
71912
71913      var data = {
71914        email: email,
71915        marketingOptIn: isChecked ? true : false,
71916        unsubscribe: isChecked ? false : true,
71917        csrf_token: csrf_token
71918      };
71919      var queryString = encodeURIComponent(Object.keys(data).map(function (key) {
71920        return key + '=' + data[key];
71921      }).join('&'));
71922
71923      if (email != null) {
71924        $.ajax({
71925          url: form.attr('action') + '?' + queryString,
71926          type: 'post',
71927          data: queryString,
71928          contentType: "application/json",
71929          dataType: "json",
71930          success: function success(data) {
71931            // push the checkbox data
71932            $('body').trigger('klaviyoUpdateSubscription:success', data);
71933            displayMessage(data.success, data.msg);
71934          }
71935        });
71936      }
71937    });
71938  }
71939};
71940
71941/***/ }),
71942
71943/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/marketingCloud/account/marketing.js":
71944/*!**********************************************************************************************************************************************!*\
71945  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/marketingCloud/account/marketing.js ***!
71946  \**********************************************************************************************************************************************/
71947/*! no static exports found */
71948/***/ (function(module, exports, __webpack_require__) {
71949
71950"use strict";
71951
71952/**
71953 * appends params to a url
71954 * @param {string} data - data returned from the server's ajax call
71955 * @param {Object} button - button that was clicked for email subscription
71956 */
71957
71958function displayMessage(success, msg) {
71959  var status = success ? 'alert-success' : 'alert-danger';
71960
71961  if ($('.email-signup-message').length === 0) {
71962    $('body').append('<div class="email-signup-message"></div>');
71963  }
71964
71965  if (!msg && $('#fallback-fail-msg')) {
71966    var msg = $('#fallback-fail-msg').data('msg');
71967  }
71968
71969  $('.email-signup-message').append('<div class="email-signup-alert text-center alert ' + status + '">' + msg + '</div>');
71970  setTimeout(function () {
71971    $('.email-signup-message').remove();
71972  }, 3000);
71973}
71974
71975module.exports = {
71976  /**
71977   * Enables user to opt in/opt out of Marketing Cloud email subscriptions in account dashboard
71978   */
71979  marketingCloudUpdateSubscription: function marketingCloudUpdateSubscription() {
71980    $('body').on('change', '.account-page .mc-form .email-subscription', function (e) {
71981      var checkbox = $(this);
71982      checkbox.attr('disabled', true);
71983      var form = checkbox.closest('form');
71984      var url = form.data('action');
71985
71986      if (!url) {
71987        checkbox.removeAttr('disabled');
71988        return;
71989      }
71990
71991      var subscriberEmail = checkbox.data('subscriber-email');
71992      var encodedEmail = encodeURIComponent(subscriberEmail); // Handle email with plus signs
71993      //action: (String Constants) Active|Bounced|Held|Unsubscribed|Deleted
71994
71995      var urlParams = {
71996        partnerKey: null,
71997        objectID: null,
71998        csrf_token: form.find('[name="csrf_token"]').val(),
71999        action: checkbox.is(':checked') ? 'Active' : 'Unsubscribed',
72000        listID: checkbox.data('id'),
72001        listName: checkbox.data('listName'),
72002        email: encodedEmail
72003      };
72004      var queryString = Object.keys(urlParams).map(function (key) {
72005        return key + '=' + urlParams[key];
72006      }).join('&');
72007      $.ajax({
72008        url: url + '?' + queryString,
72009        type: 'post',
72010        contentType: "application/json",
72011        dataType: "json",
72012        data: queryString,
72013        success: function success(data) {
72014          displayMessage(data.success, data.msg);
72015          checkbox.removeAttr('disabled');
72016
72017          if (data.error) {
72018            checkbox.prop('checked', false);
72019          } else {
72020            $('body').trigger('marketingCloudUpdateSubscription:success', data);
72021          }
72022        }
72023      });
72024    });
72025  },
72026  marketingCloudUnsubscribeAll: function marketingCloudUnsubscribeAll() {
72027    $('body').on('change', '.account-page #opt_out_all', function (e) {
72028      if ($(this).is(':checked')) {
72029        $('.account-page .mc-form .email-subscription').each(function () {
72030          var checkbox = $(this);
72031
72032          if (checkbox.is(':checked')) {
72033            checkbox.prop('checked', false).change();
72034          }
72035        });
72036      }
72037    });
72038  },
72039  handleUpdateEmailButton: function handleUpdateEmailButton() {
72040    $('body').on('keyup change', '.account-page .mc-email-input', function (e) {
72041      $('.account-page .mc-update-email-button').removeClass('d-none');
72042    });
72043  }
72044};
72045
72046/***/ }),
72047
72048/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/paypal.js":
72049/*!********************************************************************************************************************!*\
72050  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/paypal.js ***!
72051  \********************************************************************************************************************/
72052/*! no static exports found */
72053/***/ (function(module, exports, __webpack_require__) {
72054
72055"use strict";
72056 //This file is intended for use with the standalone paypal plugin
72057
72058function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
72059
72060function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
72061
72062function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
72063
72064module.exports = {
72065  methods: {
72066    afterPayPalIframe: function afterPayPalIframe(data) {
72067      var container;
72068
72069      if (data && data.target) {
72070        container = $(data.target).find('.js-paymentmethodwarning-msgcontainer');
72071      } else {
72072        container = $('.js-paypal-checkout.js-paymentmethodwarning-msgcontainer');
72073      }
72074
72075      if (container) {
72076        container.attr('data-iframepresent', true);
72077        container.data('iframepresent', true);
72078        $('body').trigger('PaymentMethodObserver:iframePresent');
72079      }
72080    }
72081  },
72082  detectPayPalIframe: function detectPayPalIframe() {
72083    //can handle running before or after replacement by paypal blob
72084    var paypalIframe = $('.paypal-buttons-context-iframe');
72085
72086    if (paypalIframe.length === 1) {
72087      module.exports.methods.afterPayPalIframe();
72088    } else {
72089      $('body').on('PaymentMethodObserver:AddNode', function (e, data) {
72090        if (data && data.addNode && data.addNode.classList) {
72091          var _iterator = _createForOfIteratorHelper(data.addNode.classList),
72092              _step;
72093
72094          try {
72095            for (_iterator.s(); !(_step = _iterator.n()).done;) {
72096              var className = _step.value;
72097
72098              if (className === 'paypal-buttons-context-iframe') {
72099                module.exports.methods.afterPayPalIframe(data);
72100                data.observer.disconnect();
72101                return;
72102              }
72103            }
72104          } catch (err) {
72105            _iterator.e(err);
72106          } finally {
72107            _iterator.f();
72108          }
72109        }
72110      });
72111    }
72112  }
72113};
72114
72115/***/ }),
72116
72117/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js":
72118/*!***********************************************************************************************************************************!*\
72119  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js ***!
72120  \***********************************************************************************************************************************/
72121/*! no static exports found */
72122/***/ (function(module, exports, __webpack_require__) {
72123
72124"use strict";
72125
72126/*
72127 * Just have a simple pass through so we can use the site preference integration toggles
72128 * in rvw_integrations_core as well as rvw_autobahn_core
72129 */
72130
72131var core = __webpack_require__(/*! core/integrations/siteIntegrationsUtils */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js");
72132
72133module.exports = core;
72134
72135/***/ }),
72136
72137/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/subpro/subscriptionOptions.js":
72138/*!****************************************************************************************************************************************!*\
72139  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/subpro/subscriptionOptions.js ***!
72140  \****************************************************************************************************************************************/
72141/*! no static exports found */
72142/***/ (function(module, exports, __webpack_require__) {
72143
72144"use strict";
72145
72146/**
72147 * Toggle the dropdown list of delivery intervals
72148 * @param {Event} event The event data
72149 * @param {string} $deliveryInterval The delivery interval element
72150 */
72151
72152function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
72153
72154function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
72155
72156function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
72157
72158function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
72159
72160function toggleDeliveryIntervalDropdown(event, $deliveryInterval) {
72161  var hideDropdown = $(event.currentTarget).val() !== 'regular';
72162  $deliveryInterval.attr('hidden', hideDropdown);
72163}
72164/**
72165 * Serialize the URL parameters
72166 * @param {Object} obj URL object
72167 * @param {string} prefix Prefix
72168 * @return {string} The serialized parameters
72169 */
72170
72171
72172function serializeURLParams(obj, prefix) {
72173  var str = [];
72174  var p;
72175
72176  for (p in obj) {
72177    if (obj.hasOwnProperty(p)) {
72178      var k = prefix ? prefix + '[' + p + ']' : p;
72179      var v = obj[p];
72180      str.push(v !== null && _typeof(v) === 'object' ? serialize(v, k) : encodeURIComponent(k) + '=' + encodeURIComponent(v));
72181    }
72182  }
72183
72184  return str.join('&');
72185}
72186/**
72187 * @param {DOMElement} context DOM context to use
72188 */
72189
72190
72191function showMinimumFrequencyWarning(context) {
72192  $(context).siblings('.error').empty();
72193  var enteredVal = parseInt($(context).val());
72194  var minAllowed = parseInt($(context).attr('min'));
72195
72196  if (enteredVal < minAllowed) {
72197    var plural = enteredVal !== 1;
72198    $(context).siblings('.error').append('<p>You have selected to receive this product every ' + enteredVal + ' day' + (plural ? 's' : '') + '. If this is not correct, please update your Auto-Ship frequency.</p>');
72199  }
72200}
72201
72202var subscriptionOptions = {
72203  cartInit: function cartInit() {
72204    if (!$('body').find('.subpro-options.cart').length) {
72205      return;
72206    }
72207
72208    $('.subpro-options.cart input[name^=subproSubscriptionOptionMode]').off('change').on('change', function (event) {
72209      $(event.currentTarget).parents('.card').spinner().start();
72210      toggleDeliveryIntervalDropdown(event, $('.subpro-options.cart .delivery-interval-group'));
72211      $('body').trigger('cartOptionsUpdate', {
72212        event: event,
72213        page: 'cart'
72214      }); // page is reloaded upon success in AJAX ajaxUpdateOptions
72215    });
72216    $('.subpro-options.cart #delivery-interval').off('change').on('change', function (event) {
72217      $(event.currentTarget).parents('.card').spinner().start();
72218      $('body').trigger('cartOptionsUpdate', {
72219        event: event,
72220        page: 'cart'
72221      }); // page is reloaded upon success in AJAX ajaxUpdateOptions
72222    });
72223    $('.subpro-options.cart #delivery-periods').off('change').on('change', function (event) {
72224      showMinimumFrequencyWarning(this);
72225      $('body').trigger('cartOptionsUpdate', {
72226        event: event,
72227        page: 'cart'
72228      });
72229    });
72230    showMinimumFrequencyWarning($('.subpro-options.cart #delivery-periods'));
72231    var hasScheduledDelivery = false;
72232    var regularDeliveries = $('input[id="regular-delivery"]');
72233
72234    if (regularDeliveries && regularDeliveries.length) {
72235      var _iterator = _createForOfIteratorHelper(regularDeliveries),
72236          _step;
72237
72238      try {
72239        for (_iterator.s(); !(_step = _iterator.n()).done;) {
72240          var regularDelivery = _step.value;
72241          hasScheduledDelivery = hasScheduledDelivery || regularDelivery.checked;
72242        }
72243      } catch (err) {
72244        _iterator.e(err);
72245      } finally {
72246        _iterator.f();
72247      }
72248    }
72249
72250    $('body').trigger('PaymentMethodObserver:Show', {
72251      name: 'subpro',
72252      show: hasScheduledDelivery
72253    });
72254  },
72255  variantInit: function variantInit() {
72256    if (!$('body').find('.subpro-options.pdp').length) {
72257      return;
72258    }
72259
72260    var options = $('.subpro-options.pdp input[name^=subproSubscriptionOptionMode]:checked');
72261
72262    for (var i = 0; i < options.length; i++) {
72263      if (options[i].checked) {
72264        $('body').trigger('PaymentMethodObserver:Show', {
72265          name: 'subpro',
72266          show: options[i].value !== 'onetime'
72267        });
72268      }
72269
72270      var option = $(options[i]);
72271      option.parent().parent().find('.delivery-interval-group').attr('hidden', option.val() !== 'regular');
72272    }
72273
72274    $('.subpro-options.pdp input[name^=subproSubscriptionOptionMode]').off('change').on('change', function (event) {
72275      toggleDeliveryIntervalDropdown(event, $(event.currentTarget).parent().parent().find('.delivery-interval-group'));
72276      $('body').trigger('pdpOptionsUpdate', {
72277        event: event,
72278        page: 'pdp'
72279      });
72280    });
72281    $('.subpro-options.pdp #delivery-interval').off('change').on('change', function (event) {
72282      $('body').trigger('pdpOptionsUpdate', {
72283        event: event,
72284        page: 'pdp'
72285      });
72286    });
72287    $('.subpro-options.pdp #delivery-periods').off('change').on('change', function (event) {
72288      showMinimumFrequencyWarning(this);
72289      $('body').trigger('pdpOptionsUpdate', {
72290        event: event,
72291        page: 'pdp'
72292      });
72293    });
72294  },
72295  getOptionsState: function getOptionsState(target, page) {
72296    var parent;
72297    var pliUUID;
72298
72299    if (page !== 'pdp' && page !== 'cart') {
72300      return;
72301    }
72302
72303    parent = target.closest('.subpro-options.' + page);
72304
72305    if (page === 'pdp') {
72306      pliUUID = parent.siblings('input[name=subproSubscriptionProductId]').val();
72307    } else {
72308      pliUUID = parent.closest('.product-info').find('button.remove-product').data('pid');
72309    }
72310
72311    return {
72312      pliUUID: pliUUID,
72313      subscriptionMode: parent.find('input[name^=subproSubscriptionOptionMode]:checked').val(),
72314      deliveryInteval: parent.find('#delivery-interval').val(),
72315      deliveryNumPeriods: parent.find('#delivery-periods').val(),
72316      discount: parent.siblings('input[name=subproSubscriptionDiscount]').val(),
72317      isDiscountPercentage: parent.siblings('input[name=subproSubscriptionIsDiscountPercentage]').val()
72318    };
72319  },
72320  handleAddToCartSubOptions: function handleAddToCartSubOptions() {
72321    $(document).on('updateAddToCartFormData', function (e, data) {
72322      var subOptions = subscriptionOptions.getOptionsState($(document).find('div.subpro-options.pdp'), 'pdp');
72323      data.pliUUID = subOptions.pliUUID;
72324      data.subscriptionMode = subOptions.subscriptionMode;
72325      data.deliveryInteval = subOptions.deliveryInteval;
72326      data.deliveryNumPeriods = subOptions.deliveryNumPeriods;
72327      data.discount = subOptions.discount;
72328      data.isDiscountPercentage = subOptions.isDiscountPercentage;
72329    });
72330  },
72331  ajaxUpdateOptions: function ajaxUpdateOptions() {
72332    $('body').on('product:afterAttributeSelect', function (e, response) {
72333      $('input[name=subproSubscriptionProductId]').val(response.data.product.id);
72334    });
72335    $(document).on('pdpOptionsUpdate cartOptionsUpdate', function (e, p) {
72336      _ajaxUpdateOptions($(p.event.currentTarget), p.page); // eslint-disable-line
72337
72338    });
72339    $(document).on('product:afterAddToCart', function (e, data) {
72340      _ajaxUpdateOptions($(document).find('div.subpro-options.pdp'), 'pdp'); // eslint-disable-line
72341
72342    });
72343  }
72344};
72345/**
72346 * Update subscription options via AJAX when they are changed
72347 * @param {string} target DOM target we can use for getting the option state
72348 * @param {string} page The current page (pdp or cart)
72349 */
72350
72351function _ajaxUpdateOptions(target, page) {
72352  var data = subscriptionOptions.getOptionsState(target, page);
72353
72354  if (page === 'pdp' || data && data.subscriptionMode && data.subscriptionMode !== 'onetime') {
72355    // Run on pdp always and on cart page when subscription is changing to something other than onetime to prevent user quickly clicking applepay button while ajax is in transit
72356    $('body').trigger('PaymentMethodObserver:Show', {
72357      name: 'subpro',
72358      show: data && data.subscriptionMode && data.subscriptionMode !== 'onetime'
72359    });
72360  }
72361
72362  var queryString = serializeURLParams(data);
72363  $.ajax({
72364    type: 'POST',
72365    cache: false,
72366    contentType: 'application/json',
72367    url: $('input[name=subproSubscriptionOptionsUrl]').val() + '?' + queryString,
72368    success: function success() {
72369      if (page == 'cart') {
72370        window.location.reload(true);
72371      }
72372    }
72373  });
72374}
72375
72376module.exports = subscriptionOptions;
72377
72378/***/ }),
72379
vendor: 4,119 bytes, lines 72380-72447
72380/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/main.js":
72381/*!*****************************************************************************************************!*\
72382  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/main.js ***!
72383  \*****************************************************************************************************/
72384/*! no static exports found */
72385/***/ (function(module, exports, __webpack_require__) {
72386
72387function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
72388
72389function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
72390
72391function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
72392
72393var core = __webpack_require__(/*! core/main */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/main.js"); //paymentMethodMutationObserver, onPaymentMethodObserverShow, and onPaymentMethodObserverIframePresent must be before all the integrations that rely on them below to prevent race conditions
72394
72395
72396core.baseFiles.paymentMethodMutationObserver = function paymentMethodMutationObserver() {
72397  var targets = $('.js-paymentmethod-mutationobserver');
72398
72399  if (targets && targets.length) {
72400    var _iterator = _createForOfIteratorHelper(targets),
72401        _step;
72402
72403    try {
72404      var _loop = function _loop() {
72405        var target = _step.value;
72406        config = {
72407          subtree: true,
72408          childList: true
72409        };
72410        mutationObserver = new MutationObserver(function (mutationList, observer) {
72411          var _iterator2 = _createForOfIteratorHelper(mutationList),
72412              _step2;
72413
72414          try {
72415            for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
72416              var mutationRecord = _step2.value;
72417
72418              if (mutationRecord.addedNodes) {
72419                var _iterator3 = _createForOfIteratorHelper(mutationRecord.addedNodes),
72420                    _step3;
72421
72422                try {
72423                  for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
72424                    var addNode = _step3.value;
72425                    $('body').trigger('PaymentMethodObserver:AddNode', {
72426                      addNode: addNode,
72427                      target: target,
72428                      observer: observer
72429                    });
72430                  }
72431                } catch (err) {
72432                  _iterator3.e(err);
72433                } finally {
72434                  _iterator3.f();
72435                }
72436              }
72437            }
72438          } catch (err) {
72439            _iterator2.e(err);
72440          } finally {
72441            _iterator2.f();
72442          }
72443        });
72444        mutationObserver.observe(target, config);
72445      };
72446
72447      for (_iterator.s();
72447 !(_step = _iterator.n()).done;) {
72448        var config;
72449        var mutationObserver;
72450
72451        _loop();
72452      }
72453    } catch (err) {
72454      _iterator.e(err);
72455    } finally {
72456      _iterator.f();
72457    }
72458  }
72459};
72460
72461core.baseFiles.onPaymentMethodObserverShow = function onPaymentMethodObserverShow() {
72462  $('body').on('PaymentMethodObserver:Show', function (e, data) {
72463    var targets = $('.js-paymentmethodwarning-msgcontainer');
72464
72465    if (targets && targets.length) {
72466      var _iterator4 = _createForOfIteratorHelper(targets),
72467          _step4;
72468
72469      try {
72470        for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
72471          var target = _step4.value;
72472          target = $(target);
72473
72474          if (data && data.name) {
72475            target.data(data.name + '_show', data.show);
72476            target.attr('data-' + data.name + '_show', data.show);
72477          }
72478
72479          if (target.data('iframepresent') === true) {
72480            var dataNames = [];
72481            var attrs = target.data();
72482
72483            for (var _i = 0, _Object$keys = Object.keys(attrs); _i < _Object$keys.length; _i++) {
72484              var attr = _Object$keys[_i];
72485              var splits = attr.split('_');
72486
72487              if (splits.length === 2) {
72488                if (attrs[attr] === true && splits[1] === 'show') {
72489                  dataNames.push(splits[0]);
72490                }
72491              }
72492            }
72493
72494            var newMsg = '';
72495            var disable = false;
72496
72497            for (var _i2 = 0, _dataNames = dataNames; _i2 < _dataNames.length; _i2++) {
72498              var dataName = _dataNames[_i2];
72499
72500              if (target.data(dataName + '_disable') === true) {
72501                disable = true;
72502                newMsg = '<p>' + target.data(dataName + '_msg') + '</p>';
72503                break;
72504              }
72505
72506              if (target.data(dataName + '_msg')) {
72507                newMsg += '<p>' + target.data(dataName + '_msg') + '</p>';
72508              }
72509            }
72510
72511            if (newMsg.length) {
72512              target.removeClass('d-none');
72513            } else {
72514              target.addClass('d-none');
72515            }
72516
72517            if (disable) {
72518              target.siblings('.js-paymentmethodwarning-affectedcontainer').attr('disabled', true);
72519            } else {
72520              target.siblings('.js-paymentmethodwarning-affectedcontainer').removeAttr('disabled');
72521            }
72522
72523            target.html(newMsg);
72524          }
72525        }
72526      } catch (err) {
72527        _iterator4.e(err);
72528      } finally {
72529        _iterator4.f();
72530      }
72531    }
72532  });
72533};
72534
72535core.baseFiles.onPaymentMethodObserverIframePresent = function onPaymentMethodObserverIframePresent() {
72536  $('body').on('PaymentMethodObserver:iframePresent', function () {
72537    $('body').trigger('PaymentMethodObserver:Show');
72538  });
72539};
72540
72541core.baseFiles.base = __webpack_require__(/*! ./product/base */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/product/base.js");
72542core.baseFiles.cart = __webpack_require__(/*! ./cart */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/cart.js");
72543
72544var siteIntegrations = __webpack_require__(/*! ./integrations/siteIntegrationsUtils */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js");
72545
72546var toggleObject = siteIntegrations.getIntegrationSettings();
72547
72548if (toggleObject.bopisCartridgeEnabled) {
72549  // adding to main.js to make accessible for quickview
72550  core.baseFiles.pdpInstoreInventory = __webpack_require__(/*! ./integrations/bopis/product/pdpInstoreInventory */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/product/pdpInstoreInventory.js");
72551}
72552
72553if (toggleObject.sfcommercepaymentsCartridgeEnabled) {
72554  core.baseFiles.sfcppayment = __webpack_require__(/*! ./integrations/commercepayments/components/payment */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/commercepayments/components/payment.js");
72555}
72556
72557if (toggleObject.klaviyo_enabled) {
72558  core.baseFiles.klaviyo = __webpack_require__(/*! ./integrations/klaviyo/identify */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/klaviyo/identify.js");
72559}
72560
72561if (toggleObject.MarketingCloudForNewsletterEnabled) {
72562  core.baseFiles.marketing = __webpack_require__(/*! ./integrations/marketingCloud/account/marketing */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/marketingCloud/account/marketing.js");
72563}
72564
72565module.exports = core;
72566
72567/***/ }),
72568
72569/***/ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/product/base.js":
72570/*!*************************************************************************************************************!*\
72571  !*** ../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/product/base.js ***!
72572  \*************************************************************************************************************/
72573/*! no static exports found */
72574/***/ (function(module, exports, __webpack_require__) {
72575
72576"use strict";
72577 // Grab the base in autobahn_core
72578
72579var baseCore = __webpack_require__(/*! core/product/base */ "../rvw_autobahn_core/cartridges/rvw_autobahn_core/cartridge/client/default/js/product/base.js"); // grab the stuff from bopis
72580
72581
72582var detailBopis = __webpack_require__(/*! ../integrations/bopis/product/detail */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/bopis/product/detail.js"); // grab the site pref integration object
72583
72584
72585var siteIntegrations = __webpack_require__(/*! ../integrations/siteIntegrationsUtils */ "../rvw_integrations_core/cartridges/rvw_integrations_core/cartridge/client/default/js/integrations/siteIntegrationsUtils.js");
72586
72587var toggleObject = siteIntegrations.getIntegrationSettings();
72588var exportDetails = {};
72589
72590if (toggleObject.bopisCartridgeEnabled) {
72591  exportDetails = $.extend({}, baseCore, {
72592    availability: detailBopis.availability
72593  });
72594} else {
72595  // we aren't modifying baseCore
72596  exportDetails = baseCore;
72597}
72598
72599module.exports = exportDetails;
72600
72601/***/ }),
72602
72603/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/clientSideValidation.js":
72604/*!******************************************************************************************************************************************!*\
72605  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/clientSideValidation.js ***!
72606  \******************************************************************************************************************************************/
72607/*! no static exports found */
72608/***/ (function(module, exports, __webpack_require__) {
72609
72610"use strict";
72611
72612/**
72613 * Validate whole form. Requires `this` to be set to form object
72614 * @param {jQuery.event} event - Event to be canceled if form is invalid.
72615 * @returns {boolean} - Flag to indicate if form is valid
72616 */
72617
72618function _validateForm(event) {
72619  var valid = true;
72620
72621  if (this.checkValidity && !this.checkValidity()) {
72622    // safari
72623    valid = false;
72624
72625    if (event) {
72626      event.preventDefault();
72627      event.stopPropagation();
72628      event.stopImmediatePropagation();
72629    }
72630
72631    $(this).find('input, select').each(function () {
72632      if (!this.validity.valid) {
72633        $(this).trigger('invalid', this.validity);
72634      }
72635    });
72636  }
72637
72638  return valid;
72639}
72640/**
72641 * Remove all validation. Should be called every time before revalidating form
72642 * @param {element} form - Form to be cleared
72643 * @returns {void}
72644 */
72645
72646
72647function clearForm(form) {
72648  $(form).find('.form-control.is-invalid').removeClass('is-invalid');
72649}
72650
72651module.exports = {
72652  invalid: function invalid() {
72653    $('form input, form select').on('invalid', function (e) {
72654      e.preventDefault();
72655      this.setCustomValidity('');
72656
72657      if (!this.validity.valid) {
72658        var validationMessage = this.validationMessage;
72659        $(this).addClass('is-invalid');
72660
72661        if (this.validity.patternMismatch && $(this).data('pattern-mismatch')) {
72662          validationMessage = $(this).data('pattern-mismatch');
72663        }
72664
72665        if ((this.validity.rangeOverflow || this.validity.rangeUnderflow) && $(this).data('range-error')) {
72666          validationMessage = $(this).data('range-error');
72667        }
72668
72669        if ((this.validity.tooLong || this.validity.tooShort) && $(this).data('range-error')) {
72670          validationMessage = $(this).data('range-error');
72671        }
72672
72673        if (this.validity.valueMissing && $(this).data('missing-error')) {
72674          validationMessage = $(this).data('missing-error');
72675        }
72676
72677        $(this).parents('.form-group').find('.invalid-feedback').text(validationMessage);
72678      }
72679    });
72680  },
72681  submit: function submit() {
72682    $('form').on('submit', function (e) {
72683      return _validateForm.call(this, e);
72684    });
72685  },
72686  buttonClick: function buttonClick() {
72687    $('form button[type="submit"], form input[type="submit"]').on('click', function () {
72688      // clear all errors when trying to submit the form
72689      clearForm($(this).parents('form'));
72690    });
72691  },
72692  functions: {
72693    validateForm: function validateForm(form, event) {
72694      _validateForm.call($(form), event || null);
72695    },
72696    clearForm: clearForm
72697  }
72698};
72699
72700/***/ }),
72701
72702/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/cookie.js":
72703/*!****************************************************************************************************************************!*\
72704  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/cookie.js ***!
72705  \****************************************************************************************************************************/
72706/*! no static exports found */
72707/***/ (function(module, exports, __webpack_require__) {
72708
72709"use strict";
72710
72711/**
72712 * Get cookie value by cookie name from browser
72713 * @param {string} cookieName - name of the cookie
72714 * @returns {string} cookie value of the found cookie name
72715 */
72716
72717function getCookie(cookieName) {
72718  var name = cookieName + '=';
72719  var decodedCookie = decodeURIComponent(document.cookie);
72720  var cookieArray = decodedCookie.split(';');
72721
72722  for (var i = 0; i < cookieArray.length; i++) {
72723    var cookieItem = cookieArray[i];
72724
72725    while (cookieItem.charAt(0) === ' ') {
72726      cookieItem = cookieItem.substring(1);
72727    }
72728
72729    if (cookieItem.indexOf(name) === 0) {
72730      return cookieItem.substring(name.length, cookieItem.length);
72731    }
72732  }
72733
72734  return '';
72735}
72736
72737module.exports = function () {
72738  if ($('.valid-cookie-warning').length > 0) {
72739    var previousSessionID = window.localStorage.getItem('previousSid');
72740    var currentSessionID = getCookie('sid');
72741
72742    if (!previousSessionID && currentSessionID) {
72743      // When a user first time visit the home page,
72744      // set the previousSessionID to currentSessionID
72745      // and Show the cookie alert
72746      previousSessionID = currentSessionID;
72747      window.localStorage.setItem('previousSid', previousSessionID);
72748      $('.cookie-warning-messaging').show();
72749    } else if (previousSessionID && previousSessionID === currentSessionID) {
72750      // Hide the cookie alert if user is in the same session
72751      $('.cookie-warning-messaging').hide();
72752    } else {
72753      // Clear the previousSessionID from localStorage
72754      // when user session is changed or expired
72755      window.localStorage.removeItem('previousSid');
72756    }
72757  }
72758};
72759
72760/***/ }),
72761
72762/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/countrySelector.js":
72763/*!*************************************************************************************************************************************!*\
72764  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/countrySelector.js ***!
72765  \*************************************************************************************************************************************/
72766/*! no static exports found */
72767/***/ (function(module, exports, __webpack_require__) {
72768
72769"use strict";
72770
72771
72772var keyboardAccessibility = __webpack_require__(/*! ./keyboardAccessibility */ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/keyboardAccessibility.js");
72773
72774module.exports = function () {
72775  $('.country-selector a').click(function (e) {
72776    e.preventDefault();
72777    var action = $('.page').data('action');
72778    var localeCode = $(this).data('locale');
72779    var localeCurrencyCode = $(this).data('currencycode');
72780    var queryString = $('.page').data('querystring');
72781    var url = $('.country-selector').data('url');
72782    $.ajax({
72783      url: url,
72784      type: 'get',
72785      dataType: 'json',
72786      data: {
72787        code: localeCode,
72788        queryString: queryString,
72789        CurrencyCode: localeCurrencyCode,
72790        action: action
72791      },
72792      success: function success(response) {
72793        $.spinner().stop();
72794
72795        if (response && response.redirectUrl) {
72796          window.location.href = response.redirectUrl;
72797        }
72798      },
72799      error: function error() {
72800        $.spinner().stop();
72801      }
72802    });
72803  });
72804  keyboardAccessibility('.navbar-header .country-selector', {
72805    40: function _($countryOptions) {
72806      // down
72807      if ($(this).is(':focus')) {
72808        $countryOptions.first().focus();
72809      } else {
72810        $(':focus').next().focus();
72811      }
72812    },
72813    38: function _($countryOptions) {
72814      // up
72815      if ($countryOptions.first().is(':focus') || $(this).is(':focus')) {
72816        $(this).focus();
72817        $(this).removeClass('show');
72818      } else {
72819        $(':focus').prev().focus();
72820      }
72821    },
72822    27: function _() {
72823      // escape
72824      $(this).focus();
72825      $(this).removeClass('show').children('.dropdown-menu').removeClass('show');
72826    },
72827    9: function _() {
72828      // tab
72829      $(this).removeClass('show').children('.dropdown-menu').removeClass('show');
72830    }
72831  }, function () {
72832    if (!$(this).hasClass('show')) {
72833      $(this).addClass('show');
72834    }
72835
72836    return $(this).find('.dropdown-country-selector').children('a');
72837  });
72838  $('.navbar-header .country-selector').on('focusin', function () {
72839    $(this).addClass('show').children('.dropdown-menu').addClass('show');
72840  });
72841};
72842
72843/***/ }),
72844
72845/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/errorNotification.js":
72846/*!***************************************************************************************************************************************!*\
72847  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/errorNotification.js ***!
72848  \***************************************************************************************************************************************/
72849/*! no static exports found */
72850/***/ (function(module, exports, __webpack_require__) {
72851
72852"use strict";
72853
72854
72855module.exports = function (element, message) {
72856  var errorHtml = '<div class="alert alert-danger alert-dismissible ' + 'fade show" role="alert">' + '<button type="button" class="close" data-dismiss="alert" aria-label="Close">' + '<span aria-hidden="true">&times;</span>' + '</button>' + message + '</div>';
72857  $(element).append(errorHtml);
72858};
72859
72860/***/ }),
72861
72862/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js":
72863/*!***************************************************************************************************************************!*\
72864  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/focus.js ***!
72865  \***************************************************************************************************************************/
72866/*! no static exports found */
72867/***/ (function(module, exports, __webpack_require__) {
72868
72869"use strict";
72870
72871
72872module.exports = {
72873  setTabNextFocus: function setTabNextFocus(focusParams) {
72874    var KEYCODE_TAB = 9;
72875    var isTabPressed = focusParams.event.key === 'Tab' || focusParams.event.keyCode === KEYCODE_TAB;
72876
72877    if (!isTabPressed) {
72878      return;
72879    }
72880
72881    var firstFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.firstElementSelector);
72882    var lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.lastElementSelector);
72883
72884    if ($(focusParams.containerSelector + ' ' + focusParams.lastElementSelector).is(':disabled')) {
72885      lastFocusableEl = $(focusParams.containerSelector + ' ' + focusParams.nextToLastElementSelector);
72886
72887      if ($('.product-quickview.product-set').length > 0) {
72888        var linkElements = $(focusParams.containerSelector + ' a#fa-link.share-icons');
72889        lastFocusableEl = linkElements[linkElements.length - 1];
72890      }
72891    }
72892
72893    if (focusParams.event.shiftKey)
72894      /* shift + tab */
72895      {
72896        if ($(':focus').is(firstFocusableEl)) {
72897          lastFocusableEl.focus();
72898          focusParams.event.preventDefault();
72899        }
72900      } else
72901      /* tab */
72902      {
72903        if ($(':focus').is(lastFocusableEl)) {
72904          // eslint-disable-line
72905          firstFocusableEl.focus();
72906          focusParams.event.preventDefault();
72907        }
72908      }
72909  }
72910};
72911
72912/***/ }),
72913
72914/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js":
72915/*!************************************************************************************************************************************!*\
72916  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/formValidation.js ***!
72917  \************************************************************************************************************************************/
72918/*! no static exports found */
72919/***/ (function(module, exports, __webpack_require__) {
72920
72921"use strict";
72922
72923/**
72924 * Remove all validation. Should be called every time before revalidating form
72925 * @param {element} form - Form to be cleared
72926 * @returns {void}
72927 */
72928
72929function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
72930
72931function clearFormErrors(form) {
72932  $(form).find('.form-control.is-invalid').removeClass('is-invalid');
72933}
72934
72935module.exports = function (formElement, payload) {
72936  // clear form validation first
72937  clearFormErrors(formElement);
72938  $('.alert', formElement).remove();
72939
72940  if (_typeof(payload) === 'object' && payload.fields) {
72941    Object.keys(payload.fields).forEach(function (key) {
72942      if (payload.fields[key]) {
72943        var feedbackElement = $(formElement).find('[name="' + key + '"]').parent().children('.invalid-feedback');
72944
72945        if (feedbackElement.length > 0) {
72946          if (Array.isArray(payload[key])) {
72947            feedbackElement.html(payload.fields[key].join('<br/>'));
72948          } else {
72949            feedbackElement.html(payload.fields[key]);
72950          }
72951
72952          feedbackElement.siblings('.form-control').addClass('is-invalid');
72953        }
72954      }
72955    });
72956  }
72957
72958  if (payload && payload.error) {
72959    var form = $(formElement).prop('tagName') === 'FORM' ? $(formElement) : $(formElement).parents('form');
72960    form.prepend('<div class="alert alert-danger" role="alert">' + payload.error.join('<br/>') + '</div>');
72961  }
72962};
72963
72964/***/ }),
72965
72966/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/keyboardAccessibility.js":
72967/*!*******************************************************************************************************************************************!*\
72968  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/keyboardAccessibility.js ***!
72969  \*******************************************************************************************************************************************/
72970/*! no static exports found */
72971/***/ (function(module, exports, __webpack_require__) {
72972
72973"use strict";
72974
72975
72976module.exports = function (selector, keyFunctions, preFunction) {
72977  $(selector).on('keydown', function (e) {
72978    var key = e.which;
72979    var supportedKeyCodes = [37, 38, 39, 40, 27];
72980
72981    if (supportedKeyCodes.indexOf(key) >= 0) {
72982      e.preventDefault();
72983    }
72984
72985    var returnedScope = preFunction.call(this);
72986
72987    if (keyFunctions[key]) {
72988      keyFunctions[key].call(this, returnedScope);
72989    }
72990  });
72991};
72992
72993/***/ }),
72994
72995/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/spinner.js":
72996/*!*****************************************************************************************************************************!*\
72997  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/components/spinner.js ***!
72998  \*****************************************************************************************************************************/
72999/*! no static exports found */
73000/***/ (function(module, exports, __webpack_require__) {
73001
73002"use strict";
73003
73004/**
73005 * Show a spinner inside a given element
73006 * @param {element} $target - Element to block by the veil and spinner.
73007 *                            Pass body to block the whole page.
73008 */
73009
73010function addSpinner($target) {
73011  var $veil = $('<div class="veil"><div class="underlay"></div></div>');
73012  $veil.append('<div class="spinner"><div class="dot1"></div><div class="dot2"></div></div>');
73013
73014  if ($target.get(0).tagName === 'IMG') {
73015    $target.after($veil);
73016    $veil.css({
73017      width: $target.width(),
73018      height: $target.height()
73019    });
73020
73021    if ($target.parent().css('position') === 'static') {
73022      $target.parent().css('position', 'relative');
73023    }
73024  } else {
73025    $target.append($veil);
73026
73027    if ($target.css('position') === 'static') {
73028      $target.parent().css('position', 'relative');
73029      $target.parent().addClass('veiled');
73030    }
73031
73032    if ($target.get(0).tagName === 'BODY') {
73033      $veil.find('.spinner').css('position', 'fixed');
73034    }
73035  }
73036
73037  $veil.click(function (e) {
73038    e.stopPropagation();
73039  });
73040}
73041/**
73042 * Remove existing spinner
73043 * @param  {element} $veil - jQuery pointer to the veil element
73044 */
73045
73046
73047function removeSpinner($veil) {
73048  if ($veil.parent().hasClass('veiled')) {
73049    $veil.parent().css('position', '');
73050    $veil.parent().removeClass('veiled');
73051  }
73052
73053  $veil.off('click');
73054  $veil.remove();
73055} // element level spinner:
73056
73057
73058$.fn.spinner = function () {
73059  var $element = $(this);
73060
73061  var Fn = function Fn() {
73062    this.start = function () {
73063      if ($element.length) {
73064        addSpinner($element);
73065      }
73066    };
73067
73068    this.stop = function () {
73069      if ($element.length) {
73070        var $veil = $('.veil');
73071        removeSpinner($veil);
73072      }
73073    };
73074  };
73075
73076  return new Fn();
73077}; // page-level spinner:
73078
73079
73080$.spinner = function () {
73081  var Fn = function Fn() {
73082    this.start = function () {
73083      addSpinner($('body'));
73084    };
73085
73086    this.stop = function () {
73087      removeSpinner($('.veil'));
73088    };
73089  };
73090
73091  return new Fn();
73092};
73093
73094/***/ }),
73095
73096/***/ "../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js":
73097/*!***************************************************************************************************************!*\
73098  !*** ../storefront-reference-architecture/cartridges/app_storefront_base/cartridge/client/default/js/util.js ***!
73099  \***************************************************************************************************************/
73100/*! no static exports found */
73101/***/ (function(module, exports, __webpack_require__) {
73102
73103"use strict";
73104
73105
73106function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
73107
73108module.exports = function (include) {
73109  if (typeof include === 'function') {
73110    include.call(this);
73111  } else if (_typeof(include) === 'object') {
73112    Object.keys(include).forEach(function (key) {
73113      if (typeof include[key] === 'function') {
73114        include[key].call(include);
73115      }
73116    });
73117  }
73118};
73119
73120/***/ }),
73121
vendor: 4,207 bytes, lines 73122-73251
73122/***/ "../storefront-reference-architecture/node_modules/base64-js/index.js":
73123/*!****************************************************************************!*\
73124  !*** ../storefront-reference-architecture/node_modules/base64-js/index.js ***!
73125  \****************************************************************************/
73126/*! no static exports found */
73127/***/ (function(module, exports, __webpack_require__) {
73128
73129"use strict";
73130
73131
73132exports.byteLength = byteLength;
73133exports.toByteArray = toByteArray;
73134exports.fromByteArray = fromByteArray;
73135var lookup = [];
73136var revLookup = [];
73137var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
73138var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
73139
73140for (var i = 0, len = code.length; i < len; ++i) {
73141  lookup[i] = code[i];
73142  revLookup[code.charCodeAt(i)] = i;
73143} // Support decoding URL-safe base64 strings, as Node.js does.
73144// See: https://en.wikipedia.org/wiki/Base64#URL_applications
73145
73146
73147revLookup['-'.charCodeAt(0)] = 62;
73148revLookup['_'.charCodeAt(0)] = 63;
73149
73150function getLens(b64) {
73151  var len = b64.length;
73152
73153  if (len % 4 > 0) {
73154    throw new Error('Invalid string. Length must be a multiple of 4');
73155  } // Trim off extra bytes after placeholder bytes are found
73156  // See: https://github.com/beatgammit/base64-js/issues/42
73157
73158
73159  var validLen = b64.indexOf('=');
73160  if (validLen === -1) validLen = len;
73161  var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;
73162  return [validLen, placeHoldersLen];
73163} // base64 is 4/3 + up to two characters of the original data
73164
73165
73166function byteLength(b64) {
73167  var lens = getLens(b64);
73168  var validLen = lens[0];
73169  var placeHoldersLen = lens[1];
73170  return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
73171}
73172
73173function _byteLength(b64, validLen, placeHoldersLen) {
73174  return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
73175}
73176
73177function toByteArray(b64) {
73178  var tmp;
73179  var lens = getLens(b64);
73180  var validLen = lens[0];
73181  var placeHoldersLen = lens[1];
73182  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
73183  var curByte = 0; // if there are placeholders, only get up to the last complete 4 chars
73184
73185  var len = placeHoldersLen > 0 ? validLen - 4 : validLen;
73186  var i;
73187
73188  for (i = 0; i < len; i += 4) {
73189    tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];
73190    arr[curByte++] = tmp >> 16 & 0xFF;
73191    arr[curByte++] = tmp >> 8 & 0xFF;
73192    arr[curByte++] = tmp & 0xFF;
73193  }
73194
73195  if (placeHoldersLen === 2) {
73196    tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;
73197    arr[curByte++] = tmp & 0xFF;
73198  }
73199
73200  if (placeHoldersLen === 1) {
73201    tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;
73202    arr[curByte++] = tmp >> 8 & 0xFF;
73203    arr[curByte++] = tmp & 0xFF;
73204  }
73205
73206  return arr;
73207}
73208
73209function tripletToBase64(num) {
73210  return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];
73211}
73212
73213function encodeChunk(uint8, start, end) {
73214  var tmp;
73215  var output = [];
73216
73217  for (var i = start; i < end; i += 3) {
73218    tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);
73219    output.push(tripletToBase64(tmp));
73220  }
73221
73222  return output.join('');
73223}
73224
73225function fromByteArray(uint8) {
73226  var tmp;
73227  var len = uint8.length;
73228  var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
73229
73230  var parts = [];
73231  var maxChunkLength = 16383; // must be multiple of 3
73232  // go through the array every three bytes, we'll deal with trailing stuff later
73233
73234  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
73235    parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));
73236  } // pad the end with zeros, but make sure to not forget the extra bytes
73237
73238
73239  if (extraBytes === 1) {
73240    tmp = uint8[len - 1];
73241    parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');
73242  } else if (extraBytes === 2) {
73243    tmp = (uint8[len - 2] << 8) + uint8[len - 1];
73244    parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');
73245  }
73246
73247  return parts.join('');
73248}
73249
73250/***/ }),
73251
vendor: 6,953 bytes, lines 73252-73451
73252/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/alert.js":
73253/*!***********************************************************************************!*\
73254  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/alert.js ***!
73255  \***********************************************************************************/
73256/*! exports provided: default */
73257/***/ (function(module, __webpack_exports__, __webpack_require__) {
73258
73259"use strict";
73260__webpack_require__.r(__webpack_exports__);
73261/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
73262/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
73263/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
73264function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
73265
73266function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
73267
73268function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
73269
73270/**
73271 * --------------------------------------------------------------------------
73272 * Bootstrap (v4.3.1): alert.js
73273 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
73274 * --------------------------------------------------------------------------
73275 */
73276
73277
73278/**
73279 * ------------------------------------------------------------------------
73280 * Constants
73281 * ------------------------------------------------------------------------
73282 */
73283
73284var NAME = 'alert';
73285var VERSION = '4.3.1';
73286var DATA_KEY = 'bs.alert';
73287var EVENT_KEY = ".".concat(DATA_KEY);
73288var DATA_API_KEY = '.data-api';
73289var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME];
73290var Selector = {
73291  DISMISS: '[data-dismiss="alert"]'
73292};
73293var Event = {
73294  CLOSE: "close".concat(EVENT_KEY),
73295  CLOSED: "closed".concat(EVENT_KEY),
73296  CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY)
73297};
73298var ClassName = {
73299  ALERT: 'alert',
73300  FADE: 'fade',
73301  SHOW: 'show'
73302};
73303/**
73304 * ------------------------------------------------------------------------
73305 * Class Definition
73306 * ------------------------------------------------------------------------
73307 */
73308
73309var Alert = /*#__PURE__*/function () {
73310  function Alert(element) {
73311    _classCallCheck(this, Alert);
73312
73313    this._element = element;
73314  } // Getters
73315
73316
73317  _createClass(Alert, [{
73318    key: "close",
73319    value: // Public
73320    function close(element) {
73321      var rootElement = this._element;
73322
73323      if (element) {
73324        rootElement = this._getRootElement(element);
73325      }
73326
73327      var customEvent = this._triggerCloseEvent(rootElement);
73328
73329      if (customEvent.isDefaultPrevented()) {
73330        return;
73331      }
73332
73333      this._removeElement(rootElement);
73334    }
73335  }, {
73336    key: "dispose",
73337    value: function dispose() {
73338      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY);
73339      this._element = null;
73340    } // Private
73341
73342  }, {
73343    key: "_getRootElement",
73344    value: function _getRootElement(element) {
73345      var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(element);
73346      var parent = false;
73347
73348      if (selector) {
73349        parent = document.querySelector(selector);
73350      }
73351
73352      if (!parent) {
73353        parent = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).closest(".".concat(ClassName.ALERT))[0];
73354      }
73355
73356      return parent;
73357    }
73358  }, {
73359    key: "_triggerCloseEvent",
73360    value: function _triggerCloseEvent(element) {
73361      var closeEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.CLOSE);
73362      jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).trigger(closeEvent);
73363      return closeEvent;
73364    }
73365  }, {
73366    key: "_removeElement",
73367    value: function _removeElement(element) {
73368      var _this = this;
73369
73370      jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).removeClass(ClassName.SHOW);
73371
73372      if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).hasClass(ClassName.FADE)) {
73373        this._destroyElement(element);
73374
73375        return;
73376      }
73377
73378      var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(element);
73379      jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, function (event) {
73380        return _this._destroyElement(element, event);
73381      }).emulateTransitionEnd(transitionDuration);
73382    }
73383  }, {
73384    key: "_destroyElement",
73385    value: function _destroyElement(element) {
73386      jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).detach().trigger(Event.CLOSED).remove();
73387    } // Static
73388
73389  }], [{
73390    key: "VERSION",
73391    get: function get() {
73392      return VERSION;
73393    }
73394  }, {
73395    key: "_jQueryInterface",
73396    value: function _jQueryInterface(config) {
73397      return this.each(function () {
73398        var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
73399        var data = $element.data(DATA_KEY);
73400
73401        if (!data) {
73402          data = new Alert(this);
73403          $element.data(DATA_KEY, data);
73404        }
73405
73406        if (config === 'close') {
73407          data[config](this);
73408        }
73409      });
73410    }
73411  }, {
73412    key: "_handleDismiss",
73413    value: function _handleDismiss(alertInstance) {
73414      return function (event) {
73415        if (event) {
73416          event.preventDefault();
73417        }
73418
73419        alertInstance.close(this);
73420      };
73421    }
73422  }]);
73423
73424  return Alert;
73425}();
73426/**
73427 * ------------------------------------------------------------------------
73428 * Data Api implementation
73429 * ------------------------------------------------------------------------
73430 */
73431
73432
73433jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
73434/**
73435 * ------------------------------------------------------------------------
73436 * jQuery
73437 * ------------------------------------------------------------------------
73438 */
73439
73440jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Alert._jQueryInterface;
73441jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Alert;
73442
73443jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () {
73444  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
73445  return Alert._jQueryInterface;
73446};
73447
73448/* harmony default export */ __webpack_exports__["default"] = (Alert);
73449
73450/***/ }),
73451
vendor: 23,943 bytes, lines 73452-74105
73452/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/carousel.js":
73453/*!**************************************************************************************!*\
73454  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/carousel.js ***!
73455  \**************************************************************************************/
73456/*! exports provided: default */
73457/***/ (function(module, __webpack_exports__, __webpack_require__) {
73458
73459"use strict";
73460__webpack_require__.r(__webpack_exports__);
73461/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
73462/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
73463/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
73464function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
73465
73466function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
73467
73468function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
73469
73470function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
73471
73472function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
73473
73474function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
73475
73476function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
73477
73478/**
73479 * --------------------------------------------------------------------------
73480 * Bootstrap (v4.3.1): carousel.js
73481 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
73482 * --------------------------------------------------------------------------
73483 */
73484
73485
73486/**
73487 * ------------------------------------------------------------------------
73488 * Constants
73489 * ------------------------------------------------------------------------
73490 */
73491
73492var NAME = 'carousel';
73493var VERSION = '4.3.1';
73494var DATA_KEY = 'bs.carousel';
73495var EVENT_KEY = ".".concat(DATA_KEY);
73496var DATA_API_KEY = '.data-api';
73497var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME];
73498var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
73499
73500var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key
73501
73502var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
73503
73504var SWIPE_THRESHOLD = 40;
73505var Default = {
73506  interval: 5000,
73507  keyboard: true,
73508  slide: false,
73509  pause: 'hover',
73510  wrap: true,
73511  touch: true
73512};
73513var DefaultType = {
73514  interval: '(number|boolean)',
73515  keyboard: 'boolean',
73516  slide: '(boolean|string)',
73517  pause: '(string|boolean)',
73518  wrap: 'boolean',
73519  touch: 'boolean'
73520};
73521var Direction = {
73522  NEXT: 'next',
73523  PREV: 'prev',
73524  LEFT: 'left',
73525  RIGHT: 'right'
73526};
73527var Event = {
73528  SLIDE: "slide".concat(EVENT_KEY),
73529  SLID: "slid".concat(EVENT_KEY),
73530  KEYDOWN: "keydown".concat(EVENT_KEY),
73531  MOUSEENTER: "mouseenter".concat(EVENT_KEY),
73532  MOUSELEAVE: "mouseleave".concat(EVENT_KEY),
73533  TOUCHSTART: "touchstart".concat(EVENT_KEY),
73534  TOUCHMOVE: "touchmove".concat(EVENT_KEY),
73535  TOUCHEND: "touchend".concat(EVENT_KEY),
73536  POINTERDOWN: "pointerdown".concat(EVENT_KEY),
73537  POINTERUP: "pointerup".concat(EVENT_KEY),
73538  DRAG_START: "dragstart".concat(EVENT_KEY),
73539  LOAD_DATA_API: "load".concat(EVENT_KEY).concat(DATA_API_KEY),
73540  CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY)
73541};
73542var ClassName = {
73543  CAROUSEL: 'carousel',
73544  ACTIVE: 'active',
73545  SLIDE: 'slide',
73546  RIGHT: 'carousel-item-right',
73547  LEFT: 'carousel-item-left',
73548  NEXT: 'carousel-item-next',
73549  PREV: 'carousel-item-prev',
73550  ITEM: 'carousel-item',
73551  POINTER_EVENT: 'pointer-event'
73552};
73553var Selector = {
73554  ACTIVE: '.active',
73555  ACTIVE_ITEM: '.active.carousel-item',
73556  ITEM: '.carousel-item',
73557  ITEM_IMG: '.carousel-item img',
73558  NEXT_PREV: '.carousel-item-next, .carousel-item-prev',
73559  INDICATORS: '.carousel-indicators',
73560  DATA_SLIDE: '[data-slide], [data-slide-to]',
73561  DATA_RIDE: '[data-ride="carousel"]'
73562};
73563var PointerType = {
73564  TOUCH: 'touch',
73565  PEN: 'pen'
73566};
73567/**
73568 * ------------------------------------------------------------------------
73569 * Class Definition
73570 * ------------------------------------------------------------------------
73571 */
73572
73573var Carousel = /*#__PURE__*/function () {
73574  function Carousel(element, config) {
73575    _classCallCheck(this, Carousel);
73576
73577    this._items = null;
73578    this._interval = null;
73579    this._activeElement = null;
73580    this._isPaused = false;
73581    this._isSliding = false;
73582    this.touchTimeout = null;
73583    this.touchStartX = 0;
73584    this.touchDeltaX = 0;
73585    this._config = this._getConfig(config);
73586    this._element = element;
73587    this._indicatorsElement = this._element.querySelector(Selector.INDICATORS);
73588    this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;
73589    this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
73590
73591    this._addEventListeners();
73592  } // Getters
73593
73594
73595  _createClass(Carousel, [{
73596    key: "next",
73597    value: // Public
73598    function next() {
73599      if (!this._isSliding) {
73600        this._slide(Direction.NEXT);
73601      }
73602    }
73603  }, {
73604    key: "nextWhenVisible",
73605    value: function nextWhenVisible() {
73606      // Don't call next when the page isn't visible
73607      // or the carousel or its parent isn't visible
73608      if (!document.hidden && jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).is(':visible') && jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).css('visibility') !== 'hidden') {
73609        this.next();
73610      }
73611    }
73612  }, {
73613    key: "prev",
73614    value: function prev() {
73615      if (!this._isSliding) {
73616        this._slide(Direction.PREV);
73617      }
73618    }
73619  }, {
73620    key: "pause",
73621    value: function pause(event) {
73622      if (!event) {
73623        this._isPaused = true;
73624      }
73625
73626      if (this._element.querySelector(Selector.NEXT_PREV)) {
73627        _util__WEBPACK_IMPORTED_MODULE_1__["default"].triggerTransitionEnd(this._element);
73628        this.cycle(true);
73629      }
73630
73631      clearInterval(this._interval);
73632      this._interval = null;
73633    }
73634  }, {
73635    key: "cycle",
73636    value: function cycle(event) {
73637      if (!event) {
73638        this._isPaused = false;
73639      }
73640
73641      if (this._interval) {
73642        clearInterval(this._interval);
73643        this._interval = null;
73644      }
73645
73646      if (this._config.interval && !this._isPaused) {
73647        this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
73648      }
73649    }
73650  }, {
73651    key: "to",
73652    value: function to(index) {
73653      var _this = this;
73654
73655      this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM);
73656
73657      var activeIndex = this._getItemIndex(this._activeElement);
73658
73659      if (index > this._items.length - 1 || index < 0) {
73660        return;
73661      }
73662
73663      if (this._isSliding) {
73664        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(Event.SLID, function () {
73665          return _this.to(index);
73666        });
73667        return;
73668      }
73669
73670      if (activeIndex === index) {
73671        this.pause();
73672        this.cycle();
73673        return;
73674      }
73675
73676      var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
73677
73678      this._slide(direction, this._items[index]);
73679    }
73680  }, {
73681    key: "dispose",
73682    value: function dispose() {
73683      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(EVENT_KEY);
73684      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY);
73685      this._items = null;
73686      this._config = null;
73687      this._element = null;
73688      this._interval = null;
73689      this._isPaused = null;
73690      this._isSliding = null;
73691      this._activeElement = null;
73692      this._indicatorsElement = null;
73693    } // Private
73694
73695  }, {
73696    key: "_getConfig",
73697    value: function _getConfig(config) {
73698      config = _objectSpread(_objectSpread({}, Default), config);
73699      _util__WEBPACK_IMPORTED_MODULE_1__["default"].typeCheckConfig(NAME, config, DefaultType);
73700      return config;
73701    }
73702  }, {
73703    key: "_handleSwipe",
73704    value: function _handleSwipe() {
73705      var absDeltax = Math.abs(this.touchDeltaX);
73706
73707      if (absDeltax <= SWIPE_THRESHOLD) {
73708        return;
73709      }
73710
73711      var direction = absDeltax / this.touchDeltaX; // swipe left
73712
73713      if (direction > 0) {
73714        this.prev();
73715      } // swipe right
73716
73717
73718      if (direction < 0) {
73719        this.next();
73720      }
73721    }
73722  }, {
73723    key: "_addEventListeners",
73724    value: function _addEventListeners() {
73725      var _this2 = this;
73726
73727      if (this._config.keyboard) {
73728        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.KEYDOWN, function (event) {
73729          return _this2._keydown(event);
73730        });
73731      }
73732
73733      if (this._config.pause === 'hover') {
73734        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.MOUSEENTER, function (event) {
73735          return _this2.pause(event);
73736        }).on(Event.MOUSELEAVE, function (event) {
73737          return _this2.cycle(event);
73738        });
73739      }
73740
73741      if (this._config.touch) {
73742        this._addTouchEventListeners();
73743      }
73744    }
73745  }, {
73746    key: "_addTouchEventListeners",
73747    value: function _addTouchEventListeners() {
73748      var _this3 = this;
73749
73750      if (!this._touchSupported) {
73751        return;
73752      }
73753
73754      var start = function start(event) {
73755        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
73756          _this3.touchStartX = event.originalEvent.clientX;
73757        } else if (!_this3._pointerEvent) {
73758          _this3.touchStartX = event.originalEvent.touches[0].clientX;
73759        }
73760      };
73761
73762      var move = function move(event) {
73763        // ensure swiping with one touch and not pinching
73764        if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {
73765          _this3.touchDeltaX = 0;
73766        } else {
73767          _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;
73768        }
73769      };
73770
73771      var end = function end(event) {
73772        if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
73773          _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
73774        }
73775
73776        _this3._handleSwipe();
73777
73778        if (_this3._config.pause === 'hover') {
73779          // If it's a touch-enabled device, mouseenter/leave are fired as
73780          // part of the mouse compatibility events on first tap - the carousel
73781          // would stop cycling until user tapped out of it;
73782          // here, we listen for touchend, explicitly pause the carousel
73783          // (as if it's the second time we tap on it, mouseenter compat event
73784          // is NOT fired) and after a timeout (to allow for mouse compatibility
73785          // events to fire) we explicitly restart cycling
73786          _this3.pause();
73787
73788          if (_this3.touchTimeout) {
73789            clearTimeout(_this3.touchTimeout);
73790          }
73791
73792          _this3.touchTimeout = setTimeout(function (event) {
73793            return _this3.cycle(event);
73794          }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
73795        }
73796      };
73797
73798      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, function (e) {
73799        return e.preventDefault();
73800      });
73801
73802      if (this._pointerEvent) {
73803        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.POINTERDOWN, function (event) {
73804          return start(event);
73805        });
73806        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.POINTERUP, function (event) {
73807          return end(event);
73808        });
73809
73810        this._element.classList.add(ClassName.POINTER_EVENT);
73811      } else {
73812        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.TOUCHSTART, function (event) {
73813          return start(event);
73814        });
73815        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.TOUCHMOVE, function (event) {
73816          return move(event);
73817        });
73818        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.TOUCHEND, function (event) {
73819          return end(event);
73820        });
73821      }
73822    }
73823  }, {
73824    key: "_keydown",
73825    value: function _keydown(event) {
73826      if (/input|textarea/i.test(event.target.tagName)) {
73827        return;
73828      }
73829
73830      switch (event.which) {
73831        case ARROW_LEFT_KEYCODE:
73832          event.preventDefault();
73833          this.prev();
73834          break;
73835
73836        case ARROW_RIGHT_KEYCODE:
73837          event.preventDefault();
73838          this.next();
73839          break;
73840
73841        default:
73842      }
73843    }
73844  }, {
73845    key: "_getItemIndex",
73846    value: function _getItemIndex(element) {
73847      this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM)) : [];
73848      return this._items.indexOf(element);
73849    }
73850  }, {
73851    key: "_getItemByDirection",
73852    value: function _getItemByDirection(direction, activeElement) {
73853      var isNextDirection = direction === Direction.NEXT;
73854      var isPrevDirection = direction === Direction.PREV;
73855
73856      var activeIndex = this._getItemIndex(activeElement);
73857
73858      var lastItemIndex = this._items.length - 1;
73859      var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
73860
73861      if (isGoingToWrap && !this._config.wrap) {
73862        return activeElement;
73863      }
73864
73865      var delta = direction === Direction.PREV ? -1 : 1;
73866      var itemIndex = (activeIndex + delta) % this._items.length;
73867      return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
73868    }
73869  }, {
73870    key: "_triggerSlideEvent",
73871    value: function _triggerSlideEvent(relatedTarget, eventDirectionName) {
73872      var targetIndex = this._getItemIndex(relatedTarget);
73873
73874      var fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM));
73875
73876      var slideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SLIDE, {
73877        relatedTarget: relatedTarget,
73878        direction: eventDirectionName,
73879        from: fromIndex,
73880        to: targetIndex
73881      });
73882      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(slideEvent);
73883      return slideEvent;
73884    }
73885  }, {
73886    key: "_setActiveIndicatorElement",
73887    value: function _setActiveIndicatorElement(element) {
73888      if (this._indicatorsElement) {
73889        var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE));
73890        jquery__WEBPACK_IMPORTED_MODULE_0___default()(indicators).removeClass(ClassName.ACTIVE);
73891
73892        var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
73893
73894        if (nextIndicator) {
73895          jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextIndicator).addClass(ClassName.ACTIVE);
73896        }
73897      }
73898    }
73899  }, {
73900    key: "_slide",
73901    value: function _slide(direction, element) {
73902      var _this4 = this;
73903
73904      var activeElement = this._element.querySelector(Selector.ACTIVE_ITEM);
73905
73906      var activeElementIndex = this._getItemIndex(activeElement);
73907
73908      var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
73909
73910      var nextElementIndex = this._getItemIndex(nextElement);
73911
73912      var isCycling = Boolean(this._interval);
73913      var directionalClassName;
73914      var orderClassName;
73915      var eventDirectionName;
73916
73917      if (direction === Direction.NEXT) {
73918        directionalClassName = ClassName.LEFT;
73919        orderClassName = ClassName.NEXT;
73920        eventDirectionName = Direction.LEFT;
73921      } else {
73922        directionalClassName = ClassName.RIGHT;
73923        orderClassName = ClassName.PREV;
73924        eventDirectionName = Direction.RIGHT;
73925      }
73926
73927      if (nextElement && jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).hasClass(ClassName.ACTIVE)) {
73928        this._isSliding = false;
73929        return;
73930      }
73931
73932      var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
73933
73934      if (slideEvent.isDefaultPrevented()) {
73935        return;
73936      }
73937
73938      if (!activeElement || !nextElement) {
73939        // Some weirdness is happening, so we bail
73940        return;
73941      }
73942
73943      this._isSliding = true;
73944
73945      if (isCycling) {
73946        this.pause();
73947      }
73948
73949      this._setActiveIndicatorElement(nextElement);
73950
73951      var slidEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SLID, {
73952        relatedTarget: nextElement,
73953        direction: eventDirectionName,
73954        from: activeElementIndex,
73955        to: nextElementIndex
73956      });
73957
73958      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.SLIDE)) {
73959        jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).addClass(orderClassName);
73960        _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(nextElement);
73961        jquery__WEBPACK_IMPORTED_MODULE_0___default()(activeElement).addClass(directionalClassName);
73962        jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).addClass(directionalClassName);
73963        var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);
73964
73965        if (nextElementInterval) {
73966          this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
73967          this._config.interval = nextElementInterval;
73968        } else {
73969          this._config.interval = this._config.defaultInterval || this._config.interval;
73970        }
73971
73972        var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(activeElement);
73973        jquery__WEBPACK_IMPORTED_MODULE_0___default()(activeElement).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, function () {
73974          jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).removeClass("".concat(directionalClassName, " ").concat(orderClassName)).addClass(ClassName.ACTIVE);
73975          jquery__WEBPACK_IMPORTED_MODULE_0___default()(activeElement).removeClass("".concat(ClassName.ACTIVE, " ").concat(orderClassName, " ").concat(directionalClassName));
73976          _this4._isSliding = false;
73977          setTimeout(function () {
73978            return jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this4._element).trigger(slidEvent);
73979          }, 0);
73980        }).emulateTransitionEnd(transitionDuration);
73981      } else {
73982        jquery__WEBPACK_IMPORTED_MODULE_0___default()(activeElement).removeClass(ClassName.ACTIVE);
73983        jquery__WEBPACK_IMPORTED_MODULE_0___default()(nextElement).addClass(ClassName.ACTIVE);
73984        this._isSliding = false;
73985        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(slidEvent);
73986      }
73987
73988      if (isCycling) {
73989        this.cycle();
73990      }
73991    } // Static
73992
73993  }], [{
73994    key: "VERSION",
73995    get: function get() {
73996      return VERSION;
73997    }
73998  }, {
73999    key: "Default",
74000    get: function get() {
74001      return Default;
74002    }
74003  }, {
74004    key: "_jQueryInterface",
74005    value: function _jQueryInterface(config) {
74006      return this.each(function () {
74007        var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY);
74008
74009        var _config = _objectSpread(_objectSpread({}, Default), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data());
74010
74011        if (_typeof(config) === 'object') {
74012          _config = _objectSpread(_objectSpread({}, _config), config);
74013        }
74014
74015        var action = typeof config === 'string' ? config : _config.slide;
74016
74017        if (!data) {
74018          data = new Carousel(this, _config);
74019          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data);
74020        }
74021
74022        if (typeof config === 'number') {
74023          data.to(config);
74024        } else if (typeof action === 'string') {
74025          if (typeof data[action] === 'undefined') {
74026            throw new TypeError("No method named \"".concat(action, "\""));
74027          }
74028
74029          data[action]();
74030        } else if (_config.interval && _config.ride) {
74031          data.pause();
74032          data.cycle();
74033        }
74034      });
74035    }
74036  }, {
74037    key: "_dataApiClickHandler",
74038    value: function _dataApiClickHandler(event) {
74039      var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this);
74040
74041      if (!selector) {
74042        return;
74043      }
74044
74045      var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(selector)[0];
74046
74047      if (!target || !jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).hasClass(ClassName.CAROUSEL)) {
74048        return;
74049      }
74050
74051      var config = _objectSpread(_objectSpread({}, jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).data()), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data());
74052
74053      var slideIndex = this.getAttribute('data-slide-to');
74054
74055      if (slideIndex) {
74056        config.interval = false;
74057      }
74058
74059      Carousel._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target), config);
74060
74061      if (slideIndex) {
74062        jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).data(DATA_KEY).to(slideIndex);
74063      }
74064
74065      event.preventDefault();
74066    }
74067  }]);
74068
74069  return Carousel;
74070}();
74071/**
74072 * ------------------------------------------------------------------------
74073 * Data Api implementation
74074 * ------------------------------------------------------------------------
74075 */
74076
74077
74078jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
74079jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on(Event.LOAD_DATA_API, function () {
74080  var carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE));
74081
74082  for (var i = 0, len = carousels.length; i < len; i++) {
74083    var $carousel = jquery__WEBPACK_IMPORTED_MODULE_0___default()(carousels[i]);
74084
74085    Carousel._jQueryInterface.call($carousel, $carousel.data());
74086  }
74087});
74088/**
74089 * ------------------------------------------------------------------------
74090 * jQuery
74091 * ------------------------------------------------------------------------
74092 */
74093
74094jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Carousel._jQueryInterface;
74095jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Carousel;
74096
74097jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () {
74098  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
74099  return Carousel._jQueryInterface;
74100};
74101
74102/* harmony default export */ __webpack_exports__["default"] = (Carousel);
74103
74104/***/ }),
74105
vendor: 16,474 bytes, lines 74106-74511
74106/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/collapse.js":
74107/*!**************************************************************************************!*\
74108  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/collapse.js ***!
74109  \**************************************************************************************/
74110/*! exports provided: default */
74111/***/ (function(module, __webpack_exports__, __webpack_require__) {
74112
74113"use strict";
74114__webpack_require__.r(__webpack_exports__);
74115/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
74116/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
74117/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
74118function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
74119
74120function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
74121
74122function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
74123
74124function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
74125
74126function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
74127
74128function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
74129
74130function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
74131
74132/**
74133 * --------------------------------------------------------------------------
74134 * Bootstrap (v4.3.1): collapse.js
74135 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
74136 * --------------------------------------------------------------------------
74137 */
74138
74139
74140/**
74141 * ------------------------------------------------------------------------
74142 * Constants
74143 * ------------------------------------------------------------------------
74144 */
74145
74146var NAME = 'collapse';
74147var VERSION = '4.3.1';
74148var DATA_KEY = 'bs.collapse';
74149var EVENT_KEY = ".".concat(DATA_KEY);
74150var DATA_API_KEY = '.data-api';
74151var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME];
74152var Default = {
74153  toggle: true,
74154  parent: ''
74155};
74156var DefaultType = {
74157  toggle: 'boolean',
74158  parent: '(string|element)'
74159};
74160var Event = {
74161  SHOW: "show".concat(EVENT_KEY),
74162  SHOWN: "shown".concat(EVENT_KEY),
74163  HIDE: "hide".concat(EVENT_KEY),
74164  HIDDEN: "hidden".concat(EVENT_KEY),
74165  CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY)
74166};
74167var ClassName = {
74168  SHOW: 'show',
74169  COLLAPSE: 'collapse',
74170  COLLAPSING: 'collapsing',
74171  COLLAPSED: 'collapsed'
74172};
74173var Dimension = {
74174  WIDTH: 'width',
74175  HEIGHT: 'height'
74176};
74177var Selector = {
74178  ACTIVES: '.show, .collapsing',
74179  DATA_TOGGLE: '[data-toggle="collapse"]'
74180};
74181/**
74182 * ------------------------------------------------------------------------
74183 * Class Definition
74184 * ------------------------------------------------------------------------
74185 */
74186
74187var Collapse = /*#__PURE__*/function () {
74188  function Collapse(element, config) {
74189    _classCallCheck(this, Collapse);
74190
74191    this._isTransitioning = false;
74192    this._element = element;
74193    this._config = this._getConfig(config);
74194    this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#".concat(element.id, "\"],") + "[data-toggle=\"collapse\"][data-target=\"#".concat(element.id, "\"]")));
74195    var toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
74196
74197    for (var i = 0, len = toggleList.length; i < len; i++) {
74198      var elem = toggleList[i];
74199      var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(elem);
74200      var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {
74201        return foundElem === element;
74202      });
74203
74204      if (selector !== null && filterElement.length > 0) {
74205        this._selector = selector;
74206
74207        this._triggerArray.push(elem);
74208      }
74209    }
74210
74211    this._parent = this._config.parent ? this._getParent() : null;
74212
74213    if (!this._config.parent) {
74214      this._addAriaAndCollapsedClass(this._element, this._triggerArray);
74215    }
74216
74217    if (this._config.toggle) {
74218      this.toggle();
74219    }
74220  } // Getters
74221
74222
74223  _createClass(Collapse, [{
74224    key: "toggle",
74225    value: // Public
74226    function toggle() {
74227      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.SHOW)) {
74228        this.hide();
74229      } else {
74230        this.show();
74231      }
74232    }
74233  }, {
74234    key: "show",
74235    value: function show() {
74236      var _this = this;
74237
74238      if (this._isTransitioning || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.SHOW)) {
74239        return;
74240      }
74241
74242      var actives;
74243      var activesData;
74244
74245      if (this._parent) {
74246        actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES)).filter(function (elem) {
74247          if (typeof _this._config.parent === 'string') {
74248            return elem.getAttribute('data-parent') === _this._config.parent;
74249          }
74250
74251          return elem.classList.contains(ClassName.COLLAPSE);
74252        });
74253
74254        if (actives.length === 0) {
74255          actives = null;
74256        }
74257      }
74258
74259      if (actives) {
74260        activesData = jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).not(this._selector).data(DATA_KEY);
74261
74262        if (activesData && activesData._isTransitioning) {
74263          return;
74264        }
74265      }
74266
74267      var startEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOW);
74268      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(startEvent);
74269
74270      if (startEvent.isDefaultPrevented()) {
74271        return;
74272      }
74273
74274      if (actives) {
74275        Collapse._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).not(this._selector), 'hide');
74276
74277        if (!activesData) {
74278          jquery__WEBPACK_IMPORTED_MODULE_0___default()(actives).data(DATA_KEY, null);
74279        }
74280      }
74281
74282      var dimension = this._getDimension();
74283
74284      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
74285      this._element.style[dimension] = 0;
74286
74287      if (this._triggerArray.length) {
74288        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
74289      }
74290
74291      this.setTransitioning(true);
74292
74293      var complete = function complete() {
74294        jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
74295        _this._element.style[dimension] = '';
74296
74297        _this.setTransitioning(false);
74298
74299        jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this._element).trigger(Event.SHOWN);
74300      };
74301
74302      var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
74303      var scrollSize = "scroll".concat(capitalizedDimension);
74304      var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._element);
74305      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
74306      this._element.style[dimension] = "".concat(this._element[scrollSize], "px");
74307    }
74308  }, {
74309    key: "hide",
74310    value: function hide() {
74311      var _this2 = this;
74312
74313      if (this._isTransitioning || !jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.SHOW)) {
74314        return;
74315      }
74316
74317      var startEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.HIDE);
74318      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(startEvent);
74319
74320      if (startEvent.isDefaultPrevented()) {
74321        return;
74322      }
74323
74324      var dimension = this._getDimension();
74325
74326      this._element.style[dimension] = "".concat(this._element.getBoundingClientRect()[dimension], "px");
74327      _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(this._element);
74328      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
74329      var triggerArrayLength = this._triggerArray.length;
74330
74331      if (triggerArrayLength > 0) {
74332        for (var i = 0; i < triggerArrayLength; i++) {
74333          var trigger = this._triggerArray[i];
74334          var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(trigger);
74335
74336          if (selector !== null) {
74337            var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()([].slice.call(document.querySelectorAll(selector)));
74338
74339            if (!$elem.hasClass(ClassName.SHOW)) {
74340              jquery__WEBPACK_IMPORTED_MODULE_0___default()(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
74341            }
74342          }
74343        }
74344      }
74345
74346      this.setTransitioning(true);
74347
74348      var complete = function complete() {
74349        _this2.setTransitioning(false);
74350
74351        jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
74352      };
74353
74354      this._element.style[dimension] = '';
74355      var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._element);
74356      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
74357    }
74358  }, {
74359    key: "setTransitioning",
74360    value: function setTransitioning(isTransitioning) {
74361      this._isTransitioning = isTransitioning;
74362    }
74363  }, {
74364    key: "dispose",
74365    value: function dispose() {
74366      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY);
74367      this._config = null;
74368      this._parent = null;
74369      this._element = null;
74370      this._triggerArray = null;
74371      this._isTransitioning = null;
74372    } // Private
74373
74374  }, {
74375    key: "_getConfig",
74376    value: function _getConfig(config) {
74377      config = _objectSpread(_objectSpread({}, Default), config);
74378      config.toggle = Boolean(config.toggle); // Coerce string values
74379
74380      _util__WEBPACK_IMPORTED_MODULE_1__["default"].typeCheckConfig(NAME, config, DefaultType);
74381      return config;
74382    }
74383  }, {
74384    key: "_getDimension",
74385    value: function _getDimension() {
74386      var hasWidth = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(Dimension.WIDTH);
74387      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
74388    }
74389  }, {
74390    key: "_getParent",
74391    value: function _getParent() {
74392      var _this3 = this;
74393
74394      var parent;
74395
74396      if (_util__WEBPACK_IMPORTED_MODULE_1__["default"].isElement(this._config.parent)) {
74397        parent = this._config.parent; // It's a jQuery object
74398
74399        if (typeof this._config.parent.jquery !== 'undefined') {
74400          parent = this._config.parent[0];
74401        }
74402      } else {
74403        parent = document.querySelector(this._config.parent);
74404      }
74405
74406      var selector = "[data-toggle=\"collapse\"][data-parent=\"".concat(this._config.parent, "\"]");
74407      var children = [].slice.call(parent.querySelectorAll(selector));
74408      jquery__WEBPACK_IMPORTED_MODULE_0___default()(children).each(function (i, element) {
74409        _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
74410      });
74411      return parent;
74412    }
74413  }, {
74414    key: "_addAriaAndCollapsedClass",
74415    value: function _addAriaAndCollapsedClass(element, triggerArray) {
74416      var isOpen = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).hasClass(ClassName.SHOW);
74417
74418      if (triggerArray.length) {
74419        jquery__WEBPACK_IMPORTED_MODULE_0___default()(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
74420      }
74421    } // Static
74422
74423  }], [{
74424    key: "VERSION",
74425    get: function get() {
74426      return VERSION;
74427    }
74428  }, {
74429    key: "Default",
74430    get: function get() {
74431      return Default;
74432    }
74433  }, {
74434    key: "_getTargetFromElement",
74435    value: function _getTargetFromElement(element) {
74436      var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(element);
74437      return selector ? document.querySelector(selector) : null;
74438    }
74439  }, {
74440    key: "_jQueryInterface",
74441    value: function _jQueryInterface(config) {
74442      return this.each(function () {
74443        var $this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
74444        var data = $this.data(DATA_KEY);
74445
74446        var _config = _objectSpread(_objectSpread(_objectSpread({}, Default), $this.data()), _typeof(config) === 'object' && config ? config : {});
74447
74448        if (!data && _config.toggle && /show|hide/.test(config)) {
74449          _config.toggle = false;
74450        }
74451
74452        if (!data) {
74453          data = new Collapse(this, _config);
74454          $this.data(DATA_KEY, data);
74455        }
74456
74457        if (typeof config === 'string') {
74458          if (typeof data[config] === 'undefined') {
74459            throw new TypeError("No method named \"".concat(config, "\""));
74460          }
74461
74462          data[config]();
74463        }
74464      });
74465    }
74466  }]);
74467
74468  return Collapse;
74469}();
74470/**
74471 * ------------------------------------------------------------------------
74472 * Data Api implementation
74473 * ------------------------------------------------------------------------
74474 */
74475
74476
74477jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
74478  // preventDefault only for <a> elements (which change the URL) not inside the collapsible element
74479  if (event.currentTarget.tagName === 'A') {
74480    event.preventDefault();
74481  }
74482
74483  var $trigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
74484  var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this);
74485  var selectors = [].slice.call(document.querySelectorAll(selector));
74486  jquery__WEBPACK_IMPORTED_MODULE_0___default()(selectors).each(function () {
74487    var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
74488    var data = $target.data(DATA_KEY);
74489    var config = data ? 'toggle' : $trigger.data();
74490
74491    Collapse._jQueryInterface.call($target, config);
74492  });
74493});
74494/**
74495 * ------------------------------------------------------------------------
74496 * jQuery
74497 * ------------------------------------------------------------------------
74498 */
74499
74500jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Collapse._jQueryInterface;
74501jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Collapse;
74502
74503jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () {
74504  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
74505  return Collapse._jQueryInterface;
74506};
74507
74508/* harmony default export */ __webpack_exports__["default"] = (Collapse);
74509
74510/***/ }),
74511
vendor: 22,308 bytes, lines 74512-75089
74512/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/dropdown.js":
74513/*!**************************************************************************************!*\
74514  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/dropdown.js ***!
74515  \**************************************************************************************/
74516/*! exports provided: default */
74517/***/ (function(module, __webpack_exports__, __webpack_require__) {
74518
74519"use strict";
74520__webpack_require__.r(__webpack_exports__);
74521/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
74522/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
74523/* harmony import */ var popper_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! popper.js */ "../rvw_autobahn_core/node_modules/popper.js/dist/esm/popper.js");
74524/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
74525function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
74526
74527function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
74528
74529function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
74530
74531function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
74532
74533function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
74534
74535function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
74536
74537function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
74538
74539/**
74540 * --------------------------------------------------------------------------
74541 * Bootstrap (v4.3.1): dropdown.js
74542 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
74543 * --------------------------------------------------------------------------
74544 */
74545
74546
74547
74548/**
74549 * ------------------------------------------------------------------------
74550 * Constants
74551 * ------------------------------------------------------------------------
74552 */
74553
74554var NAME = 'dropdown';
74555var VERSION = '4.3.1';
74556var DATA_KEY = 'bs.dropdown';
74557var EVENT_KEY = ".".concat(DATA_KEY);
74558var DATA_API_KEY = '.data-api';
74559var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME];
74560var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
74561
74562var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
74563
74564var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key
74565
74566var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
74567
74568var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key
74569
74570var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
74571
74572var REGEXP_KEYDOWN = new RegExp("".concat(ARROW_UP_KEYCODE, "|").concat(ARROW_DOWN_KEYCODE, "|").concat(ESCAPE_KEYCODE));
74573var Event = {
74574  HIDE: "hide".concat(EVENT_KEY),
74575  HIDDEN: "hidden".concat(EVENT_KEY),
74576  SHOW: "show".concat(EVENT_KEY),
74577  SHOWN: "shown".concat(EVENT_KEY),
74578  CLICK: "click".concat(EVENT_KEY),
74579  CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY),
74580  KEYDOWN_DATA_API: "keydown".concat(EVENT_KEY).concat(DATA_API_KEY),
74581  KEYUP_DATA_API: "keyup".concat(EVENT_KEY).concat(DATA_API_KEY)
74582};
74583var ClassName = {
74584  DISABLED: 'disabled',
74585  SHOW: 'show',
74586  DROPUP: 'dropup',
74587  DROPRIGHT: 'dropright',
74588  DROPLEFT: 'dropleft',
74589  MENURIGHT: 'dropdown-menu-right',
74590  MENULEFT: 'dropdown-menu-left',
74591  POSITION_STATIC: 'position-static'
74592};
74593var Selector = {
74594  DATA_TOGGLE: '[data-toggle="dropdown"]',
74595  FORM_CHILD: '.dropdown form',
74596  MENU: '.dropdown-menu',
74597  NAVBAR_NAV: '.navbar-nav',
74598  VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'
74599};
74600var AttachmentMap = {
74601  TOP: 'top-start',
74602  TOPEND: 'top-end',
74603  BOTTOM: 'bottom-start',
74604  BOTTOMEND: 'bottom-end',
74605  RIGHT: 'right-start',
74606  RIGHTEND: 'right-end',
74607  LEFT: 'left-start',
74608  LEFTEND: 'left-end'
74609};
74610var Default = {
74611  offset: 0,
74612  flip: true,
74613  boundary: 'scrollParent',
74614  reference: 'toggle',
74615  display: 'dynamic'
74616};
74617var DefaultType = {
74618  offset: '(number|string|function)',
74619  flip: 'boolean',
74620  boundary: '(string|element)',
74621  reference: '(string|element)',
74622  display: 'string'
74623};
74624/**
74625 * ------------------------------------------------------------------------
74626 * Class Definition
74627 * ------------------------------------------------------------------------
74628 */
74629
74630var Dropdown = /*#__PURE__*/function () {
74631  function Dropdown(element, config) {
74632    _classCallCheck(this, Dropdown);
74633
74634    this._element = element;
74635    this._popper = null;
74636    this._config = this._getConfig(config);
74637    this._menu = this._getMenuElement();
74638    this._inNavbar = this._detectNavbar();
74639
74640    this._addEventListeners();
74641  } // Getters
74642
74643
74644  _createClass(Dropdown, [{
74645    key: "toggle",
74646    value: // Public
74647    function toggle() {
74648      if (this._element.disabled || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.DISABLED)) {
74649        return;
74650      }
74651
74652      var parent = Dropdown._getParentFromElement(this._element);
74653
74654      var isActive = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(ClassName.SHOW);
74655
74656      Dropdown._clearMenus();
74657
74658      if (isActive) {
74659        return;
74660      }
74661
74662      var relatedTarget = {
74663        relatedTarget: this._element
74664      };
74665      var showEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOW, relatedTarget);
74666      jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).trigger(showEvent);
74667
74668      if (showEvent.isDefaultPrevented()) {
74669        return;
74670      } // Disable totally Popper.js for Dropdown in Navbar
74671
74672
74673      if (!this._inNavbar) {
74674        /**
74675         * Check for Popper dependency
74676         * Popper - https://popper.js.org
74677         */
74678        if (typeof popper_js__WEBPACK_IMPORTED_MODULE_1__["default"] === 'undefined') {
74679          throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)');
74680        }
74681
74682        var referenceElement = this._element;
74683
74684        if (this._config.reference === 'parent') {
74685          referenceElement = parent;
74686        } else if (_util__WEBPACK_IMPORTED_MODULE_2__["default"].isElement(this._config.reference)) {
74687          referenceElement = this._config.reference; // Check if it's jQuery element
74688
74689          if (typeof this._config.reference.jquery !== 'undefined') {
74690            referenceElement = this._config.reference[0];
74691          }
74692        } // If boundary is not `scrollParent`, then set position to `static`
74693        // to allow the menu to "escape" the scroll parent's boundaries
74694        // https://github.com/twbs/bootstrap/issues/24251
74695
74696
74697        if (this._config.boundary !== 'scrollParent') {
74698          jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).addClass(ClassName.POSITION_STATIC);
74699        }
74700
74701        this._popper = new popper_js__WEBPACK_IMPORTED_MODULE_1__["default"](referenceElement, this._menu, this._getPopperConfig());
74702      } // If this is a touch-enabled device we add extra
74703      // empty mouseover listeners to the body's immediate children;
74704      // only needed because of broken event delegation on iOS
74705      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
74706
74707
74708      if ('ontouchstart' in document.documentElement && jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).closest(Selector.NAVBAR_NAV).length === 0) {
74709        jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).children().on('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_0___default.a.noop);
74710      }
74711
74712      this._element.focus();
74713
74714      this._element.setAttribute('aria-expanded', true);
74715
74716      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).toggleClass(ClassName.SHOW);
74717      jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).toggleClass(ClassName.SHOW).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOWN, relatedTarget));
74718    }
74719  }, {
74720    key: "show",
74721    value: function show() {
74722      if (this._element.disabled || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.DISABLED) || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(ClassName.SHOW)) {
74723        return;
74724      }
74725
74726      var relatedTarget = {
74727        relatedTarget: this._element
74728      };
74729      var showEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOW, relatedTarget);
74730
74731      var parent = Dropdown._getParentFromElement(this._element);
74732
74733      jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).trigger(showEvent);
74734
74735      if (showEvent.isDefaultPrevented()) {
74736        return;
74737      }
74738
74739      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).toggleClass(ClassName.SHOW);
74740      jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).toggleClass(ClassName.SHOW).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOWN, relatedTarget));
74741    }
74742  }, {
74743    key: "hide",
74744    value: function hide() {
74745      if (this._element.disabled || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.DISABLED) || !jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(ClassName.SHOW)) {
74746        return;
74747      }
74748
74749      var relatedTarget = {
74750        relatedTarget: this._element
74751      };
74752      var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.HIDE, relatedTarget);
74753
74754      var parent = Dropdown._getParentFromElement(this._element);
74755
74756      jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).trigger(hideEvent);
74757
74758      if (hideEvent.isDefaultPrevented()) {
74759        return;
74760      }
74761
74762      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).toggleClass(ClassName.SHOW);
74763      jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).toggleClass(ClassName.SHOW).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.HIDDEN, relatedTarget));
74764    }
74765  }, {
74766    key: "dispose",
74767    value: function dispose() {
74768      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY);
74769      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(EVENT_KEY);
74770      this._element = null;
74771      this._menu = null;
74772
74773      if (this._popper !== null) {
74774        this._popper.destroy();
74775
74776        this._popper = null;
74777      }
74778    }
74779  }, {
74780    key: "update",
74781    value: function update() {
74782      this._inNavbar = this._detectNavbar();
74783
74784      if (this._popper !== null) {
74785        this._popper.scheduleUpdate();
74786      }
74787    } // Private
74788
74789  }, {
74790    key: "_addEventListeners",
74791    value: function _addEventListeners() {
74792      var _this = this;
74793
74794      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.CLICK, function (event) {
74795        event.preventDefault();
74796        event.stopPropagation();
74797
74798        _this.toggle();
74799      });
74800    }
74801  }, {
74802    key: "_getConfig",
74803    value: function _getConfig(config) {
74804      config = _objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).data()), config);
74805      _util__WEBPACK_IMPORTED_MODULE_2__["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
74806      return config;
74807    }
74808  }, {
74809    key: "_getMenuElement",
74810    value: function _getMenuElement() {
74811      if (!this._menu) {
74812        var parent = Dropdown._getParentFromElement(this._element);
74813
74814        if (parent) {
74815          this._menu = parent.querySelector(Selector.MENU);
74816        }
74817      }
74818
74819      return this._menu;
74820    }
74821  }, {
74822    key: "_getPlacement",
74823    value: function _getPlacement() {
74824      var $parentDropdown = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element.parentNode);
74825      var placement = AttachmentMap.BOTTOM; // Handle dropup
74826
74827      if ($parentDropdown.hasClass(ClassName.DROPUP)) {
74828        placement = AttachmentMap.TOP;
74829
74830        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(ClassName.MENURIGHT)) {
74831          placement = AttachmentMap.TOPEND;
74832        }
74833      } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {
74834        placement = AttachmentMap.RIGHT;
74835      } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {
74836        placement = AttachmentMap.LEFT;
74837      } else if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._menu).hasClass(ClassName.MENURIGHT)) {
74838        placement = AttachmentMap.BOTTOMEND;
74839      }
74840
74841      return placement;
74842    }
74843  }, {
74844    key: "_detectNavbar",
74845    value: function _detectNavbar() {
74846      return jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).closest('.navbar').length > 0;
74847    }
74848  }, {
74849    key: "_getOffset",
74850    value: function _getOffset() {
74851      var _this2 = this;
74852
74853      var offset = {};
74854
74855      if (typeof this._config.offset === 'function') {
74856        offset.fn = function (data) {
74857          data.offsets = _objectSpread(_objectSpread({}, data.offsets), _this2._config.offset(data.offsets, _this2._element) || {});
74858          return data;
74859        };
74860      } else {
74861        offset.offset = this._config.offset;
74862      }
74863
74864      return offset;
74865    }
74866  }, {
74867    key: "_getPopperConfig",
74868    value: function _getPopperConfig() {
74869      var popperConfig = {
74870        placement: this._getPlacement(),
74871        modifiers: {
74872          offset: this._getOffset(),
74873          flip: {
74874            enabled: this._config.flip
74875          },
74876          preventOverflow: {
74877            boundariesElement: this._config.boundary
74878          }
74879        }
74880      }; // Disable Popper.js if we have a static display
74881
74882      if (this._config.display === 'static') {
74883        popperConfig.modifiers.applyStyle = {
74884          enabled: false
74885        };
74886      }
74887
74888      return popperConfig;
74889    } // Static
74890
74891  }], [{
74892    key: "VERSION",
74893    get: function get() {
74894      return VERSION;
74895    }
74896  }, {
74897    key: "Default",
74898    get: function get() {
74899      return Default;
74900    }
74901  }, {
74902    key: "DefaultType",
74903    get: function get() {
74904      return DefaultType;
74905    }
74906  }, {
74907    key: "_jQueryInterface",
74908    value: function _jQueryInterface(config) {
74909      return this.each(function () {
74910        var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY);
74911
74912        var _config = _typeof(config) === 'object' ? config : null;
74913
74914        if (!data) {
74915          data = new Dropdown(this, _config);
74916          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data);
74917        }
74918
74919        if (typeof config === 'string') {
74920          if (typeof data[config] === 'undefined') {
74921            throw new TypeError("No method named \"".concat(config, "\""));
74922          }
74923
74924          data[config]();
74925        }
74926      });
74927    }
74928  }, {
74929    key: "_clearMenus",
74930    value: function _clearMenus(event) {
74931      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
74932        return;
74933      }
74934
74935      var toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE));
74936
74937      for (var i = 0, len = toggles.length; i < len; i++) {
74938        var parent = Dropdown._getParentFromElement(toggles[i]);
74939
74940        var context = jquery__WEBPACK_IMPORTED_MODULE_0___default()(toggles[i]).data(DATA_KEY);
74941        var relatedTarget = {
74942          relatedTarget: toggles[i]
74943        };
74944
74945        if (event && event.type === 'click') {
74946          relatedTarget.clickEvent = event;
74947        }
74948
74949        if (!context) {
74950          continue;
74951        }
74952
74953        var dropdownMenu = context._menu;
74954
74955        if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).hasClass(ClassName.SHOW)) {
74956          continue;
74957        }
74958
74959        if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(parent, event.target)) {
74960          continue;
74961        }
74962
74963        var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.HIDE, relatedTarget);
74964        jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).trigger(hideEvent);
74965
74966        if (hideEvent.isDefaultPrevented()) {
74967          continue;
74968        } // If this is a touch-enabled device we remove the extra
74969        // empty mouseover listeners we added for iOS support
74970
74971
74972        if ('ontouchstart' in document.documentElement) {
74973          jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).children().off('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_0___default.a.noop);
74974        }
74975
74976        toggles[i].setAttribute('aria-expanded', 'false');
74977        jquery__WEBPACK_IMPORTED_MODULE_0___default()(dropdownMenu).removeClass(ClassName.SHOW);
74978        jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).removeClass(ClassName.SHOW).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.HIDDEN, relatedTarget));
74979      }
74980    }
74981  }, {
74982    key: "_getParentFromElement",
74983    value: function _getParentFromElement(element) {
74984      var parent;
74985      var selector = _util__WEBPACK_IMPORTED_MODULE_2__["default"].getSelectorFromElement(element);
74986
74987      if (selector) {
74988        parent = document.querySelector(selector);
74989      }
74990
74991      return parent || element.parentNode;
74992    } // eslint-disable-next-line complexity
74993
74994  }, {
74995    key: "_dataApiKeydownHandler",
74996    value: function _dataApiKeydownHandler(event) {
74997      // If not input/textarea:
74998      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command
74999      // If input/textarea:
75000      //  - If space key => not a dropdown command
75001      //  - If key is other than escape
75002      //    - If key is not up or down => not a dropdown command
75003      //    - If trigger inside the menu => not a dropdown command
75004      if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
75005        return;
75006      }
75007
75008      event.preventDefault();
75009      event.stopPropagation();
75010
75011      if (this.disabled || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).hasClass(ClassName.DISABLED)) {
75012        return;
75013      }
75014
75015      var parent = Dropdown._getParentFromElement(this);
75016
75017      var isActive = jquery__WEBPACK_IMPORTED_MODULE_0___default()(parent).hasClass(ClassName.SHOW);
75018
75019      if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {
75020        if (event.which === ESCAPE_KEYCODE) {
75021          var toggle = parent.querySelector(Selector.DATA_TOGGLE);
75022          jquery__WEBPACK_IMPORTED_MODULE_0___default()(toggle).trigger('focus');
75023        }
75024
75025        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('click');
75026        return;
75027      }
75028
75029      var items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS));
75030
75031      if (items.length === 0) {
75032        return;
75033      }
75034
75035      var index = items.indexOf(event.target);
75036
75037      if (event.which === ARROW_UP_KEYCODE && index > 0) {
75038        // Up
75039        index--;
75040      }
75041
75042      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
75043        // Down
75044        index++;
75045      }
75046
75047      if (index < 0) {
75048        index = 0;
75049      }
75050
75051      items[index].focus();
75052    }
75053  }]);
75054
75055  return Dropdown;
75056}();
75057/**
75058 * ------------------------------------------------------------------------
75059 * Data Api implementation
75060 * ------------------------------------------------------------------------
75061 */
75062
75063
75064jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on("".concat(Event.CLICK_DATA_API, " ").concat(Event.KEYUP_DATA_API), Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
75065  event.preventDefault();
75066  event.stopPropagation();
75067
75068  Dropdown._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle');
75069}).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
75070  e.stopPropagation();
75071});
75072/**
75073 * ------------------------------------------------------------------------
75074 * jQuery
75075 * ------------------------------------------------------------------------
75076 */
75077
75078jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Dropdown._jQueryInterface;
75079jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Dropdown;
75080
75081jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () {
75082  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
75083  return Dropdown._jQueryInterface;
75084};
75085
75086/* harmony default export */ __webpack_exports__["default"] = (Dropdown);
75087
75088/***/ }),
75089
vendor: 25,193 bytes, lines 75090-75726
75090/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/modal.js":
75091/*!***********************************************************************************!*\
75092  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/modal.js ***!
75093  \***********************************************************************************/
75094/*! exports provided: default */
75095/***/ (function(module, __webpack_exports__, __webpack_require__) {
75096
75097"use strict";
75098__webpack_require__.r(__webpack_exports__);
75099/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
75100/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
75101/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
75102function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
75103
75104function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
75105
75106function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
75107
75108function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
75109
75110function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
75111
75112function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
75113
75114function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
75115
75116/**
75117 * --------------------------------------------------------------------------
75118 * Bootstrap (v4.3.1): modal.js
75119 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
75120 * --------------------------------------------------------------------------
75121 */
75122
75123
75124/**
75125 * ------------------------------------------------------------------------
75126 * Constants
75127 * ------------------------------------------------------------------------
75128 */
75129
75130var NAME = 'modal';
75131var VERSION = '4.3.1';
75132var DATA_KEY = 'bs.modal';
75133var EVENT_KEY = ".".concat(DATA_KEY);
75134var DATA_API_KEY = '.data-api';
75135var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME];
75136var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
75137
75138var Default = {
75139  backdrop: true,
75140  keyboard: true,
75141  focus: true,
75142  show: true
75143};
75144var DefaultType = {
75145  backdrop: '(boolean|string)',
75146  keyboard: 'boolean',
75147  focus: 'boolean',
75148  show: 'boolean'
75149};
75150var Event = {
75151  HIDE: "hide".concat(EVENT_KEY),
75152  HIDDEN: "hidden".concat(EVENT_KEY),
75153  SHOW: "show".concat(EVENT_KEY),
75154  SHOWN: "shown".concat(EVENT_KEY),
75155  FOCUSIN: "focusin".concat(EVENT_KEY),
75156  RESIZE: "resize".concat(EVENT_KEY),
75157  CLICK_DISMISS: "click.dismiss".concat(EVENT_KEY),
75158  KEYDOWN_DISMISS: "keydown.dismiss".concat(EVENT_KEY),
75159  MOUSEUP_DISMISS: "mouseup.dismiss".concat(EVENT_KEY),
75160  MOUSEDOWN_DISMISS: "mousedown.dismiss".concat(EVENT_KEY),
75161  CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY)
75162};
75163var ClassName = {
75164  SCROLLABLE: 'modal-dialog-scrollable',
75165  SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
75166  BACKDROP: 'modal-backdrop',
75167  OPEN: 'modal-open',
75168  FADE: 'fade',
75169  SHOW: 'show'
75170};
75171var Selector = {
75172  DIALOG: '.modal-dialog',
75173  MODAL_BODY: '.modal-body',
75174  DATA_TOGGLE: '[data-toggle="modal"]',
75175  DATA_DISMISS: '[data-dismiss="modal"]',
75176  FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
75177  STICKY_CONTENT: '.sticky-top'
75178};
75179/**
75180 * ------------------------------------------------------------------------
75181 * Class Definition
75182 * ------------------------------------------------------------------------
75183 */
75184
75185var Modal = /*#__PURE__*/function () {
75186  function Modal(element, config) {
75187    _classCallCheck(this, Modal);
75188
75189    this._config = this._getConfig(config);
75190    this._element = element;
75191    this._dialog = element.querySelector(Selector.DIALOG);
75192    this._backdrop = null;
75193    this._isShown = false;
75194    this._isBodyOverflowing = false;
75195    this._ignoreBackdropClick = false;
75196    this._isTransitioning = false;
75197    this._scrollbarWidth = 0;
75198  } // Getters
75199
75200
75201  _createClass(Modal, [{
75202    key: "toggle",
75203    value: // Public
75204    function toggle(relatedTarget) {
75205      return this._isShown ? this.hide() : this.show(relatedTarget);
75206    }
75207  }, {
75208    key: "show",
75209    value: function show(relatedTarget) {
75210      var _this = this;
75211
75212      if (this._isShown || this._isTransitioning) {
75213        return;
75214      }
75215
75216      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.FADE)) {
75217        this._isTransitioning = true;
75218      }
75219
75220      var showEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOW, {
75221        relatedTarget: relatedTarget
75222      });
75223      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(showEvent);
75224
75225      if (this._isShown || showEvent.isDefaultPrevented()) {
75226        return;
75227      }
75228
75229      this._isShown = true;
75230
75231      this._checkScrollbar();
75232
75233      this._setScrollbar();
75234
75235      this._adjustDialog();
75236
75237      this._setEscapeEvent();
75238
75239      this._setResizeEvent();
75240
75241      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
75242        return _this.hide(event);
75243      });
75244      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
75245        jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
75246          if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).is(_this._element)) {
75247            _this._ignoreBackdropClick = true;
75248          }
75249        });
75250      });
75251
75252      this._showBackdrop(function () {
75253        return _this._showElement(relatedTarget);
75254      });
75255    }
75256  }, {
75257    key: "hide",
75258    value: function hide(event) {
75259      var _this2 = this;
75260
75261      if (event) {
75262        event.preventDefault();
75263      }
75264
75265      if (!this._isShown || this._isTransitioning) {
75266        return;
75267      }
75268
75269      var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.HIDE);
75270      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(hideEvent);
75271
75272      if (!this._isShown || hideEvent.isDefaultPrevented()) {
75273        return;
75274      }
75275
75276      this._isShown = false;
75277      var transition = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.FADE);
75278
75279      if (transition) {
75280        this._isTransitioning = true;
75281      }
75282
75283      this._setEscapeEvent();
75284
75285      this._setResizeEvent();
75286
75287      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).off(Event.FOCUSIN);
75288      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).removeClass(ClassName.SHOW);
75289      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(Event.CLICK_DISMISS);
75290      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._dialog).off(Event.MOUSEDOWN_DISMISS);
75291
75292      if (transition) {
75293        var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._element);
75294        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, function (event) {
75295          return _this2._hideModal(event);
75296        }).emulateTransitionEnd(transitionDuration);
75297      } else {
75298        this._hideModal();
75299      }
75300    }
75301  }, {
75302    key: "dispose",
75303    value: function dispose() {
75304      [window, this._element, this._dialog].forEach(function (htmlElement) {
75305        return jquery__WEBPACK_IMPORTED_MODULE_0___default()(htmlElement).off(EVENT_KEY);
75306      });
75307      /**
75308       * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
75309       * Do not move `document` in `htmlElements` array
75310       * It will remove `Event.CLICK_DATA_API` event that should remain
75311       */
75312
75313      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).off(Event.FOCUSIN);
75314      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY);
75315      this._config = null;
75316      this._element = null;
75317      this._dialog = null;
75318      this._backdrop = null;
75319      this._isShown = null;
75320      this._isBodyOverflowing = null;
75321      this._ignoreBackdropClick = null;
75322      this._isTransitioning = null;
75323      this._scrollbarWidth = null;
75324    }
75325  }, {
75326    key: "handleUpdate",
75327    value: function handleUpdate() {
75328      this._adjustDialog();
75329    } // Private
75330
75331  }, {
75332    key: "_getConfig",
75333    value: function _getConfig(config) {
75334      config = _objectSpread(_objectSpread({}, Default), config);
75335      _util__WEBPACK_IMPORTED_MODULE_1__["default"].typeCheckConfig(NAME, config, DefaultType);
75336      return config;
75337    }
75338  }, {
75339    key: "_showElement",
75340    value: function _showElement(relatedTarget) {
75341      var _this3 = this;
75342
75343      var transition = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.FADE);
75344
75345      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
75346        // Don't move modal's DOM position
75347        document.body.appendChild(this._element);
75348      }
75349
75350      this._element.style.display = 'block';
75351
75352      this._element.removeAttribute('aria-hidden');
75353
75354      this._element.setAttribute('aria-modal', true);
75355
75356      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._dialog).hasClass(ClassName.SCROLLABLE)) {
75357        this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0;
75358      } else {
75359        this._element.scrollTop = 0;
75360      }
75361
75362      if (transition) {
75363        _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(this._element);
75364      }
75365
75366      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).addClass(ClassName.SHOW);
75367
75368      if (this._config.focus) {
75369        this._enforceFocus();
75370      }
75371
75372      var shownEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOWN, {
75373        relatedTarget: relatedTarget
75374      });
75375
75376      var transitionComplete = function transitionComplete() {
75377        if (_this3._config.focus) {
75378          _this3._element.focus();
75379        }
75380
75381        _this3._isTransitioning = false;
75382        jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this3._element).trigger(shownEvent);
75383      };
75384
75385      if (transition) {
75386        var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._dialog);
75387        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._dialog).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
75388      } else {
75389        transitionComplete();
75390      }
75391    }
75392  }, {
75393    key: "_enforceFocus",
75394    value: function _enforceFocus() {
75395      var _this4 = this;
75396
75397      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).off(Event.FOCUSIN) // Guard against infinite focus loop
75398      .on(Event.FOCUSIN, function (event) {
75399        if (document !== event.target && _this4._element !== event.target && jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this4._element).has(event.target).length === 0) {
75400          _this4._element.focus();
75401        }
75402      });
75403    }
75404  }, {
75405    key: "_setEscapeEvent",
75406    value: function _setEscapeEvent() {
75407      var _this5 = this;
75408
75409      if (this._isShown && this._config.keyboard) {
75410        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
75411          if (event.which === ESCAPE_KEYCODE) {
75412            event.preventDefault();
75413
75414            _this5.hide();
75415          }
75416        });
75417      } else if (!this._isShown) {
75418        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).off(Event.KEYDOWN_DISMISS);
75419      }
75420    }
75421  }, {
75422    key: "_setResizeEvent",
75423    value: function _setResizeEvent() {
75424      var _this6 = this;
75425
75426      if (this._isShown) {
75427        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on(Event.RESIZE, function (event) {
75428          return _this6.handleUpdate(event);
75429        });
75430      } else {
75431        jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(Event.RESIZE);
75432      }
75433    }
75434  }, {
75435    key: "_hideModal",
75436    value: function _hideModal() {
75437      var _this7 = this;
75438
75439      this._element.style.display = 'none';
75440
75441      this._element.setAttribute('aria-hidden', true);
75442
75443      this._element.removeAttribute('aria-modal');
75444
75445      this._isTransitioning = false;
75446
75447      this._showBackdrop(function () {
75448        jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).removeClass(ClassName.OPEN);
75449
75450        _this7._resetAdjustments();
75451
75452        _this7._resetScrollbar();
75453
75454        jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this7._element).trigger(Event.HIDDEN);
75455      });
75456    }
75457  }, {
75458    key: "_removeBackdrop",
75459    value: function _removeBackdrop() {
75460      if (this._backdrop) {
75461        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).remove();
75462        this._backdrop = null;
75463      }
75464    }
75465  }, {
75466    key: "_showBackdrop",
75467    value: function _showBackdrop(callback) {
75468      var _this8 = this;
75469
75470      var animate = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
75471
75472      if (this._isShown && this._config.backdrop) {
75473        this._backdrop = document.createElement('div');
75474        this._backdrop.className = ClassName.BACKDROP;
75475
75476        if (animate) {
75477          this._backdrop.classList.add(animate);
75478        }
75479
75480        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).appendTo(document.body);
75481        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).on(Event.CLICK_DISMISS, function (event) {
75482          if (_this8._ignoreBackdropClick) {
75483            _this8._ignoreBackdropClick = false;
75484            return;
75485          }
75486
75487          if (event.target !== event.currentTarget) {
75488            return;
75489          }
75490
75491          if (_this8._config.backdrop === 'static') {
75492            _this8._element.focus();
75493          } else {
75494            _this8.hide();
75495          }
75496        });
75497
75498        if (animate) {
75499          _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(this._backdrop);
75500        }
75501
75502        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).addClass(ClassName.SHOW);
75503
75504        if (!callback) {
75505          return;
75506        }
75507
75508        if (!animate) {
75509          callback();
75510          return;
75511        }
75512
75513        var backdropTransitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._backdrop);
75514        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
75515      } else if (!this._isShown && this._backdrop) {
75516        jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).removeClass(ClassName.SHOW);
75517
75518        var callbackRemove = function callbackRemove() {
75519          _this8._removeBackdrop();
75520
75521          if (callback) {
75522            callback();
75523          }
75524        };
75525
75526        if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.FADE)) {
75527          var _backdropTransitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(this._backdrop);
75528
75529          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._backdrop).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
75530        } else {
75531          callbackRemove();
75532        }
75533      } else if (callback) {
75534        callback();
75535      }
75536    } // ----------------------------------------------------------------------
75537    // the following methods are used to handle overflowing modals
75538    // todo (fat): these should probably be refactored out of modal.js
75539    // ----------------------------------------------------------------------
75540
75541  }, {
75542    key: "_adjustDialog",
75543    value: function _adjustDialog() {
75544      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
75545
75546      if (!this._isBodyOverflowing && isModalOverflowing) {
75547        this._element.style.paddingLeft = "".concat(this._scrollbarWidth, "px");
75548      }
75549
75550      if (this._isBodyOverflowing && !isModalOverflowing) {
75551        this._element.style.paddingRight = "".concat(this._scrollbarWidth, "px");
75552      }
75553    }
75554  }, {
75555    key: "_resetAdjustments",
75556    value: function _resetAdjustments() {
75557      this._element.style.paddingLeft = '';
75558      this._element.style.paddingRight = '';
75559    }
75560  }, {
75561    key: "_checkScrollbar",
75562    value: function _checkScrollbar() {
75563      var rect = document.body.getBoundingClientRect();
75564      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
75565      this._scrollbarWidth = this._getScrollbarWidth();
75566    }
75567  }, {
75568    key: "_setScrollbar",
75569    value: function _setScrollbar() {
75570      var _this9 = this;
75571
75572      if (this._isBodyOverflowing) {
75573        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
75574        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
75575        var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
75576        var stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT)); // Adjust fixed content padding
75577
75578        jquery__WEBPACK_IMPORTED_MODULE_0___default()(fixedContent).each(function (index, element) {
75579          var actualPadding = element.style.paddingRight;
75580          var calculatedPadding = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('padding-right');
75581          jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('padding-right', actualPadding).css('padding-right', "".concat(parseFloat(calculatedPadding) + _this9._scrollbarWidth, "px"));
75582        }); // Adjust sticky content margin
75583
75584        jquery__WEBPACK_IMPORTED_MODULE_0___default()(stickyContent).each(function (index, element) {
75585          var actualMargin = element.style.marginRight;
75586          var calculatedMargin = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('margin-right');
75587          jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('margin-right', actualMargin).css('margin-right', "".concat(parseFloat(calculatedMargin) - _this9._scrollbarWidth, "px"));
75588        }); // Adjust body padding
75589
75590        var actualPadding = document.body.style.paddingRight;
75591        var calculatedPadding = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).css('padding-right');
75592        jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).data('padding-right', actualPadding).css('padding-right', "".concat(parseFloat(calculatedPadding) + this._scrollbarWidth, "px"));
75593      }
75594
75595      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).addClass(ClassName.OPEN);
75596    }
75597  }, {
75598    key: "_resetScrollbar",
75599    value: function _resetScrollbar() {
75600      // Restore fixed content padding
75601      var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
75602      jquery__WEBPACK_IMPORTED_MODULE_0___default()(fixedContent).each(function (index, element) {
75603        var padding = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('padding-right');
75604        jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).removeData('padding-right');
75605        element.style.paddingRight = padding ? padding : '';
75606      }); // Restore sticky content
75607
75608      var elements = [].slice.call(document.querySelectorAll("".concat(Selector.STICKY_CONTENT)));
75609      jquery__WEBPACK_IMPORTED_MODULE_0___default()(elements).each(function (index, element) {
75610        var margin = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).data('margin-right');
75611
75612        if (typeof margin !== 'undefined') {
75613          jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('margin-right', margin).removeData('margin-right');
75614        }
75615      }); // Restore body padding
75616
75617      var padding = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).data('padding-right');
75618      jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).removeData('padding-right');
75619      document.body.style.paddingRight = padding ? padding : '';
75620    }
75621  }, {
75622    key: "_getScrollbarWidth",
75623    value: function _getScrollbarWidth() {
75624      // thx d.walsh
75625      var scrollDiv = document.createElement('div');
75626      scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
75627      document.body.appendChild(scrollDiv);
75628      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
75629      document.body.removeChild(scrollDiv);
75630      return scrollbarWidth;
75631    } // Static
75632
75633  }], [{
75634    key: "VERSION",
75635    get: function get() {
75636      return VERSION;
75637    }
75638  }, {
75639    key: "Default",
75640    get: function get() {
75641      return Default;
75642    }
75643  }, {
75644    key: "_jQueryInterface",
75645    value: function _jQueryInterface(config, relatedTarget) {
75646      return this.each(function () {
75647        var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY);
75648
75649        var _config = _objectSpread(_objectSpread(_objectSpread({}, Default), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data()), _typeof(config) === 'object' && config ? config : {});
75650
75651        if (!data) {
75652          data = new Modal(this, _config);
75653          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data);
75654        }
75655
75656        if (typeof config === 'string') {
75657          if (typeof data[config] === 'undefined') {
75658            throw new TypeError("No method named \"".concat(config, "\""));
75659          }
75660
75661          data[config](relatedTarget);
75662        } else if (_config.show) {
75663          data.show(relatedTarget);
75664        }
75665      });
75666    }
75667  }]);
75668
75669  return Modal;
75670}();
75671/**
75672 * ------------------------------------------------------------------------
75673 * Data Api implementation
75674 * ------------------------------------------------------------------------
75675 */
75676
75677
75678jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
75679  var _this10 = this;
75680
75681  var target;
75682  var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this);
75683
75684  if (selector) {
75685    target = document.querySelector(selector);
75686  }
75687
75688  var config = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).data(DATA_KEY) ? 'toggle' : _objectSpread(_objectSpread({}, jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).data()), jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data());
75689
75690  if (this.tagName === 'A' || this.tagName === 'AREA') {
75691    event.preventDefault();
75692  }
75693
75694  var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(target).one(Event.SHOW, function (showEvent) {
75695    if (showEvent.isDefaultPrevented()) {
75696      // Only register focus restorer if modal will actually get shown
75697      return;
75698    }
75699
75700    $target.one(Event.HIDDEN, function () {
75701      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this10).is(':visible')) {
75702        _this10.focus();
75703      }
75704    });
75705  });
75706
75707  Modal._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target), config, this);
75708});
75709/**
75710 * ------------------------------------------------------------------------
75711 * jQuery
75712 * ------------------------------------------------------------------------
75713 */
75714
75715jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Modal._jQueryInterface;
75716jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Modal;
75717
75718jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () {
75719  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
75720  return Modal._jQueryInterface;
75721};
75722
75723/* harmony default export */ __webpack_exports__["default"] = (Modal);
75724
75725/***/ }),
75726
vendor: 10,972 bytes, lines 75727-75971
75727/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/popover.js":
75728/*!*************************************************************************************!*\
75729  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/popover.js ***!
75730  \*************************************************************************************/
75731/*! exports provided: default */
75732/***/ (function(module, __webpack_exports__, __webpack_require__) {
75733
75734"use strict";
75735__webpack_require__.r(__webpack_exports__);
75736/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
75737/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
75738/* harmony import */ var _tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./tooltip */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/tooltip.js");
75739function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
75740
75741function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
75742
75743function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
75744
75745function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
75746
75747function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
75748
75749function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
75750
75751function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
75752
75753function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
75754
75755function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
75756
75757function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
75758
75759function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
75760
75761function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
75762
75763function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
75764
75765function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
75766
75767/**
75768 * --------------------------------------------------------------------------
75769 * Bootstrap (v4.3.1): popover.js
75770 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
75771 * --------------------------------------------------------------------------
75772 */
75773
75774
75775/**
75776 * ------------------------------------------------------------------------
75777 * Constants
75778 * ------------------------------------------------------------------------
75779 */
75780
75781var NAME = 'popover';
75782var VERSION = '4.3.1';
75783var DATA_KEY = 'bs.popover';
75784var EVENT_KEY = ".".concat(DATA_KEY);
75785var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME];
75786var CLASS_PREFIX = 'bs-popover';
75787var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)".concat(CLASS_PREFIX, "\\S+"), 'g');
75788
75789var Default = _objectSpread(_objectSpread({}, _tooltip__WEBPACK_IMPORTED_MODULE_1__["default"].Default), {}, {
75790  placement: 'right',
75791  trigger: 'click',
75792  content: '',
75793  template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
75794});
75795
75796var DefaultType = _objectSpread(_objectSpread({}, _tooltip__WEBPACK_IMPORTED_MODULE_1__["default"].DefaultType), {}, {
75797  content: '(string|element|function)'
75798});
75799
75800var ClassName = {
75801  FADE: 'fade',
75802  SHOW: 'show'
75803};
75804var Selector = {
75805  TITLE: '.popover-header',
75806  CONTENT: '.popover-body'
75807};
75808var Event = {
75809  HIDE: "hide".concat(EVENT_KEY),
75810  HIDDEN: "hidden".concat(EVENT_KEY),
75811  SHOW: "show".concat(EVENT_KEY),
75812  SHOWN: "shown".concat(EVENT_KEY),
75813  INSERTED: "inserted".concat(EVENT_KEY),
75814  CLICK: "click".concat(EVENT_KEY),
75815  FOCUSIN: "focusin".concat(EVENT_KEY),
75816  FOCUSOUT: "focusout".concat(EVENT_KEY),
75817  MOUSEENTER: "mouseenter".concat(EVENT_KEY),
75818  MOUSELEAVE: "mouseleave".concat(EVENT_KEY)
75819};
75820/**
75821 * ------------------------------------------------------------------------
75822 * Class Definition
75823 * ------------------------------------------------------------------------
75824 */
75825
75826var Popover = /*#__PURE__*/function (_Tooltip) {
75827  _inherits(Popover, _Tooltip);
75828
75829  var _super = _createSuper(Popover);
75830
75831  function Popover() {
75832    _classCallCheck(this, Popover);
75833
75834    return _super.apply(this, arguments);
75835  }
75836
75837  _createClass(Popover, [{
75838    key: "isWithContent",
75839    value: // Overrides
75840    function isWithContent() {
75841      return this.getTitle() || this._getContent();
75842    }
75843  }, {
75844    key: "addAttachmentClass",
75845    value: function addAttachmentClass(attachment) {
75846      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.getTipElement()).addClass("".concat(CLASS_PREFIX, "-").concat(attachment));
75847    }
75848  }, {
75849    key: "getTipElement",
75850    value: function getTipElement() {
75851      this.tip = this.tip || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.config.template)[0];
75852      return this.tip;
75853    }
75854  }, {
75855    key: "setContent",
75856    value: function setContent() {
75857      var $tip = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.getTipElement()); // We use append for html objects to maintain js events
75858
75859      this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
75860
75861      var content = this._getContent();
75862
75863      if (typeof content === 'function') {
75864        content = content.call(this.element);
75865      }
75866
75867      this.setElementContent($tip.find(Selector.CONTENT), content);
75868      $tip.removeClass("".concat(ClassName.FADE, " ").concat(ClassName.SHOW));
75869    } // Private
75870
75871  }, {
75872    key: "_getContent",
75873    value: function _getContent() {
75874      return this.element.getAttribute('data-content') || this.config.content;
75875    }
75876  }, {
75877    key: "_cleanTipClass",
75878    value: function _cleanTipClass() {
75879      var $tip = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.getTipElement());
75880      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
75881
75882      if (tabClass !== null && tabClass.length > 0) {
75883        $tip.removeClass(tabClass.join(''));
75884      }
75885    } // Static
75886
75887  }], [{
75888    key: "VERSION",
75889    get: // Getters
75890    function get() {
75891      return VERSION;
75892    }
75893  }, {
75894    key: "Default",
75895    get: function get() {
75896      return Default;
75897    }
75898  }, {
75899    key: "NAME",
75900    get: function get() {
75901      return NAME;
75902    }
75903  }, {
75904    key: "DATA_KEY",
75905    get: function get() {
75906      return DATA_KEY;
75907    }
75908  }, {
75909    key: "Event",
75910    get: function get() {
75911      return Event;
75912    }
75913  }, {
75914    key: "EVENT_KEY",
75915    get: function get() {
75916      return EVENT_KEY;
75917    }
75918  }, {
75919    key: "DefaultType",
75920    get: function get() {
75921      return DefaultType;
75922    }
75923  }, {
75924    key: "_jQueryInterface",
75925    value: function _jQueryInterface(config) {
75926      return this.each(function () {
75927        var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY);
75928
75929        var _config = _typeof(config) === 'object' ? config : null;
75930
75931        if (!data && /dispose|hide/.test(config)) {
75932          return;
75933        }
75934
75935        if (!data) {
75936          data = new Popover(this, _config);
75937          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data);
75938        }
75939
75940        if (typeof config === 'string') {
75941          if (typeof data[config] === 'undefined') {
75942            throw new TypeError("No method named \"".concat(config, "\""));
75943          }
75944
75945          data[config]();
75946        }
75947      });
75948    }
75949  }]);
75950
75951  return Popover;
75952}(_tooltip__WEBPACK_IMPORTED_MODULE_1__["default"]);
75953/**
75954 * ------------------------------------------------------------------------
75955 * jQuery
75956 * ------------------------------------------------------------------------
75957 */
75958
75959
75960jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Popover._jQueryInterface;
75961jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Popover;
75962
75963jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () {
75964  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
75965  return Popover._jQueryInterface;
75966};
75967
75968/* harmony default export */ __webpack_exports__["default"] = (Popover);
75969
75970/***/ }),
75971
vendor: 13,835 bytes, lines 75972-76323
75972/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/scrollspy.js":
75973/*!***************************************************************************************!*\
75974  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/scrollspy.js ***!
75975  \***************************************************************************************/
75976/*! exports provided: default */
75977/***/ (function(module, __webpack_exports__, __webpack_require__) {
75978
75979"use strict";
75980__webpack_require__.r(__webpack_exports__);
75981/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
75982/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
75983/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
75984function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
75985
75986function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
75987
75988function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
75989
75990function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
75991
75992function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
75993
75994function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
75995
75996function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
75997
75998/**
75999 * --------------------------------------------------------------------------
76000 * Bootstrap (v4.3.1): scrollspy.js
76001 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
76002 * --------------------------------------------------------------------------
76003 */
76004
76005
76006/**
76007 * ------------------------------------------------------------------------
76008 * Constants
76009 * ------------------------------------------------------------------------
76010 */
76011
76012var NAME = 'scrollspy';
76013var VERSION = '4.3.1';
76014var DATA_KEY = 'bs.scrollspy';
76015var EVENT_KEY = ".".concat(DATA_KEY);
76016var DATA_API_KEY = '.data-api';
76017var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME];
76018var Default = {
76019  offset: 10,
76020  method: 'auto',
76021  target: ''
76022};
76023var DefaultType = {
76024  offset: 'number',
76025  method: 'string',
76026  target: '(string|element)'
76027};
76028var Event = {
76029  ACTIVATE: "activate".concat(EVENT_KEY),
76030  SCROLL: "scroll".concat(EVENT_KEY),
76031  LOAD_DATA_API: "load".concat(EVENT_KEY).concat(DATA_API_KEY)
76032};
76033var ClassName = {
76034  DROPDOWN_ITEM: 'dropdown-item',
76035  DROPDOWN_MENU: 'dropdown-menu',
76036  ACTIVE: 'active'
76037};
76038var Selector = {
76039  DATA_SPY: '[data-spy="scroll"]',
76040  ACTIVE: '.active',
76041  NAV_LIST_GROUP: '.nav, .list-group',
76042  NAV_LINKS: '.nav-link',
76043  NAV_ITEMS: '.nav-item',
76044  LIST_ITEMS: '.list-group-item',
76045  DROPDOWN: '.dropdown',
76046  DROPDOWN_ITEMS: '.dropdown-item',
76047  DROPDOWN_TOGGLE: '.dropdown-toggle'
76048};
76049var OffsetMethod = {
76050  OFFSET: 'offset',
76051  POSITION: 'position'
76052};
76053/**
76054 * ------------------------------------------------------------------------
76055 * Class Definition
76056 * ------------------------------------------------------------------------
76057 */
76058
76059var ScrollSpy = /*#__PURE__*/function () {
76060  function ScrollSpy(element, config) {
76061    var _this = this;
76062
76063    _classCallCheck(this, ScrollSpy);
76064
76065    this._element = element;
76066    this._scrollElement = element.tagName === 'BODY' ? window : element;
76067    this._config = this._getConfig(config);
76068    this._selector = "".concat(this._config.target, " ").concat(Selector.NAV_LINKS, ",") + "".concat(this._config.target, " ").concat(Selector.LIST_ITEMS, ",") + "".concat(this._config.target, " ").concat(Selector.DROPDOWN_ITEMS);
76069    this._offsets = [];
76070    this._targets = [];
76071    this._activeTarget = null;
76072    this._scrollHeight = 0;
76073    jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._scrollElement).on(Event.SCROLL, function (event) {
76074      return _this._process(event);
76075    });
76076    this.refresh();
76077
76078    this._process();
76079  } // Getters
76080
76081
76082  _createClass(ScrollSpy, [{
76083    key: "refresh",
76084    value: // Public
76085    function refresh() {
76086      var _this2 = this;
76087
76088      var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;
76089      var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
76090      var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
76091      this._offsets = [];
76092      this._targets = [];
76093      this._scrollHeight = this._getScrollHeight();
76094      var targets = [].slice.call(document.querySelectorAll(this._selector));
76095      targets.map(function (element) {
76096        var target;
76097        var targetSelector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(element);
76098
76099        if (targetSelector) {
76100          target = document.querySelector(targetSelector);
76101        }
76102
76103        if (target) {
76104          var targetBCR = target.getBoundingClientRect();
76105
76106          if (targetBCR.width || targetBCR.height) {
76107            // TODO (fat): remove sketch reliance on jQuery position/offset
76108            return [jquery__WEBPACK_IMPORTED_MODULE_0___default()(target)[offsetMethod]().top + offsetBase, targetSelector];
76109          }
76110        }
76111
76112        return null;
76113      }).filter(function (item) {
76114        return item;
76115      }).sort(function (a, b) {
76116        return a[0] - b[0];
76117      }).forEach(function (item) {
76118        _this2._offsets.push(item[0]);
76119
76120        _this2._targets.push(item[1]);
76121      });
76122    }
76123  }, {
76124    key: "dispose",
76125    value: function dispose() {
76126      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY);
76127      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._scrollElement).off(EVENT_KEY);
76128      this._element = null;
76129      this._scrollElement = null;
76130      this._config = null;
76131      this._selector = null;
76132      this._offsets = null;
76133      this._targets = null;
76134      this._activeTarget = null;
76135      this._scrollHeight = null;
76136    } // Private
76137
76138  }, {
76139    key: "_getConfig",
76140    value: function _getConfig(config) {
76141      config = _objectSpread(_objectSpread({}, Default), _typeof(config) === 'object' && config ? config : {});
76142
76143      if (typeof config.target !== 'string') {
76144        var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(config.target).attr('id');
76145
76146        if (!id) {
76147          id = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getUID(NAME);
76148          jquery__WEBPACK_IMPORTED_MODULE_0___default()(config.target).attr('id', id);
76149        }
76150
76151        config.target = "#".concat(id);
76152      }
76153
76154      _util__WEBPACK_IMPORTED_MODULE_1__["default"].typeCheckConfig(NAME, config, DefaultType);
76155      return config;
76156    }
76157  }, {
76158    key: "_getScrollTop",
76159    value: function _getScrollTop() {
76160      return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
76161    }
76162  }, {
76163    key: "_getScrollHeight",
76164    value: function _getScrollHeight() {
76165      return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
76166    }
76167  }, {
76168    key: "_getOffsetHeight",
76169    value: function _getOffsetHeight() {
76170      return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
76171    }
76172  }, {
76173    key: "_process",
76174    value: function _process() {
76175      var scrollTop = this._getScrollTop() + this._config.offset;
76176
76177      var scrollHeight = this._getScrollHeight();
76178
76179      var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
76180
76181      if (this._scrollHeight !== scrollHeight) {
76182        this.refresh();
76183      }
76184
76185      if (scrollTop >= maxScroll) {
76186        var target = this._targets[this._targets.length - 1];
76187
76188        if (this._activeTarget !== target) {
76189          this._activate(target);
76190        }
76191
76192        return;
76193      }
76194
76195      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
76196        this._activeTarget = null;
76197
76198        this._clear();
76199
76200        return;
76201      }
76202
76203      var offsetLength = this._offsets.length;
76204
76205      for (var i = offsetLength; i--;) {
76206        var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);
76207
76208        if (isActiveTarget) {
76209          this._activate(this._targets[i]);
76210        }
76211      }
76212    }
76213  }, {
76214    key: "_activate",
76215    value: function _activate(target) {
76216      this._activeTarget = target;
76217
76218      this._clear();
76219
76220      var queries = this._selector.split(',').map(function (selector) {
76221        return "".concat(selector, "[data-target=\"").concat(target, "\"],").concat(selector, "[href=\"").concat(target, "\"]");
76222      });
76223
76224      var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()([].slice.call(document.querySelectorAll(queries.join(','))));
76225
76226      if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
76227        $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
76228        $link.addClass(ClassName.ACTIVE);
76229      } else {
76230        // Set triggered link as active
76231        $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active
76232        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
76233
76234        $link.parents(Selector.NAV_LIST_GROUP).prev("".concat(Selector.NAV_LINKS, ", ").concat(Selector.LIST_ITEMS)).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
76235
76236        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
76237      }
76238
76239      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._scrollElement).trigger(Event.ACTIVATE, {
76240        relatedTarget: target
76241      });
76242    }
76243  }, {
76244    key: "_clear",
76245    value: function _clear() {
76246      [].slice.call(document.querySelectorAll(this._selector)).filter(function (node) {
76247        return node.classList.contains(ClassName.ACTIVE);
76248      }).forEach(function (node) {
76249        return node.classList.remove(ClassName.ACTIVE);
76250      });
76251    } // Static
76252
76253  }], [{
76254    key: "VERSION",
76255    get: function get() {
76256      return VERSION;
76257    }
76258  }, {
76259    key: "Default",
76260    get: function get() {
76261      return Default;
76262    }
76263  }, {
76264    key: "_jQueryInterface",
76265    value: function _jQueryInterface(config) {
76266      return this.each(function () {
76267        var data = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY);
76268
76269        var _config = _typeof(config) === 'object' && config;
76270
76271        if (!data) {
76272          data = new ScrollSpy(this, _config);
76273          jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data(DATA_KEY, data);
76274        }
76275
76276        if (typeof config === 'string') {
76277          if (typeof data[config] === 'undefined') {
76278            throw new TypeError("No method named \"".concat(config, "\""));
76279          }
76280
76281          data[config]();
76282        }
76283      });
76284    }
76285  }]);
76286
76287  return ScrollSpy;
76288}();
76289/**
76290 * ------------------------------------------------------------------------
76291 * Data Api implementation
76292 * ------------------------------------------------------------------------
76293 */
76294
76295
76296jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on(Event.LOAD_DATA_API, function () {
76297  var scrollSpys = [].slice.call(document.querySelectorAll(Selector.DATA_SPY));
76298  var scrollSpysLength = scrollSpys.length;
76299
76300  for (var i = scrollSpysLength; i--;) {
76301    var $spy = jquery__WEBPACK_IMPORTED_MODULE_0___default()(scrollSpys[i]);
76302
76303    ScrollSpy._jQueryInterface.call($spy, $spy.data());
76304  }
76305});
76306/**
76307 * ------------------------------------------------------------------------
76308 * jQuery
76309 * ------------------------------------------------------------------------
76310 */
76311
76312jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = ScrollSpy._jQueryInterface;
76313jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = ScrollSpy;
76314
76315jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () {
76316  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
76317  return ScrollSpy._jQueryInterface;
76318};
76319
76320/* harmony default export */ __webpack_exports__["default"] = (ScrollSpy);
76321
76322/***/ }),
76323
vendor: 10,376 bytes, lines 76324-76590
76324/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/tab.js":
76325/*!*********************************************************************************!*\
76326  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/tab.js ***!
76327  \*********************************************************************************/
76328/*! exports provided: default */
76329/***/ (function(module, __webpack_exports__, __webpack_require__) {
76330
76331"use strict";
76332__webpack_require__.r(__webpack_exports__);
76333/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
76334/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
76335/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
76336function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
76337
76338function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
76339
76340function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
76341
76342/**
76343 * --------------------------------------------------------------------------
76344 * Bootstrap (v4.3.1): tab.js
76345 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
76346 * --------------------------------------------------------------------------
76347 */
76348
76349
76350/**
76351 * ------------------------------------------------------------------------
76352 * Constants
76353 * ------------------------------------------------------------------------
76354 */
76355
76356var NAME = 'tab';
76357var VERSION = '4.3.1';
76358var DATA_KEY = 'bs.tab';
76359var EVENT_KEY = ".".concat(DATA_KEY);
76360var DATA_API_KEY = '.data-api';
76361var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME];
76362var Event = {
76363  HIDE: "hide".concat(EVENT_KEY),
76364  HIDDEN: "hidden".concat(EVENT_KEY),
76365  SHOW: "show".concat(EVENT_KEY),
76366  SHOWN: "shown".concat(EVENT_KEY),
76367  CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY)
76368};
76369var ClassName = {
76370  DROPDOWN_MENU: 'dropdown-menu',
76371  ACTIVE: 'active',
76372  DISABLED: 'disabled',
76373  FADE: 'fade',
76374  SHOW: 'show'
76375};
76376var Selector = {
76377  DROPDOWN: '.dropdown',
76378  NAV_LIST_GROUP: '.nav, .list-group',
76379  ACTIVE: '.active',
76380  ACTIVE_UL: '> li > .active',
76381  DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
76382  DROPDOWN_TOGGLE: '.dropdown-toggle',
76383  DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
76384};
76385/**
76386 * ------------------------------------------------------------------------
76387 * Class Definition
76388 * ------------------------------------------------------------------------
76389 */
76390
76391var Tab = /*#__PURE__*/function () {
76392  function Tab(element) {
76393    _classCallCheck(this, Tab);
76394
76395    this._element = element;
76396  } // Getters
76397
76398
76399  _createClass(Tab, [{
76400    key: "show",
76401    value: // Public
76402    function show() {
76403      var _this = this;
76404
76405      if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.ACTIVE) || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).hasClass(ClassName.DISABLED)) {
76406        return;
76407      }
76408
76409      var target;
76410      var previous;
76411      var listElement = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).closest(Selector.NAV_LIST_GROUP)[0];
76412      var selector = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getSelectorFromElement(this._element);
76413
76414      if (listElement) {
76415        var itemSelector = listElement.nodeName === 'UL' || listElement.nodeName === 'OL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
76416        previous = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.makeArray(jquery__WEBPACK_IMPORTED_MODULE_0___default()(listElement).find(itemSelector));
76417        previous = previous[previous.length - 1];
76418      }
76419
76420      var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.HIDE, {
76421        relatedTarget: this._element
76422      });
76423      var showEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOW, {
76424        relatedTarget: previous
76425      });
76426
76427      if (previous) {
76428        jquery__WEBPACK_IMPORTED_MODULE_0___default()(previous).trigger(hideEvent);
76429      }
76430
76431      jquery__WEBPACK_IMPORTED_MODULE_0___default()(this._element).trigger(showEvent);
76432
76433      if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
76434        return;
76435      }
76436
76437      if (selector) {
76438        target = document.querySelector(selector);
76439      }
76440
76441      this._activate(this._element, listElement);
76442
76443      var complete = function complete() {
76444        var hiddenEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.HIDDEN, {
76445          relatedTarget: _this._element
76446        });
76447        var shownEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event(Event.SHOWN, {
76448          relatedTarget: previous
76449        });
76450        jquery__WEBPACK_IMPORTED_MODULE_0___default()(previous).trigger(hiddenEvent);
76451        jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this._element).trigger(shownEvent);
76452      };
76453
76454      if (target) {
76455        this._activate(target, target.parentNode, complete);
76456      } else {
76457        complete();
76458      }
76459    }
76460  }, {
76461    key: "dispose",
76462    value: function dispose() {
76463      jquery__WEBPACK_IMPORTED_MODULE_0___default.a.removeData(this._element, DATA_KEY);
76464      this._element = null;
76465    } // Private
76466
76467  }, {
76468    key: "_activate",
76469    value: function _activate(element, container, callback) {
76470      var _this2 = this;
76471
76472      var activeElements = container && (container.nodeName === 'UL' || container.nodeName === 'OL') ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(container).find(Selector.ACTIVE_UL) : jquery__WEBPACK_IMPORTED_MODULE_0___default()(container).children(Selector.ACTIVE);
76473      var active = activeElements[0];
76474      var isTransitioning = callback && active && jquery__WEBPACK_IMPORTED_MODULE_0___default()(active).hasClass(ClassName.FADE);
76475
76476      var complete = function complete() {
76477        return _this2._transitionComplete(element, active, callback);
76478      };
76479
76480      if (active && isTransitioning) {
76481        var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_1__["default"].getTransitionDurationFromElement(active);
76482        jquery__WEBPACK_IMPORTED_MODULE_0___default()(active).removeClass(ClassName.SHOW).one(_util__WEBPACK_IMPORTED_MODULE_1__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
76483      } else {
76484        complete();
76485      }
76486    }
76487  }, {
76488    key: "_transitionComplete",
76489    value: function _transitionComplete(element, active, callback) {
76490      if (active) {
76491        jquery__WEBPACK_IMPORTED_MODULE_0___default()(active).removeClass(ClassName.ACTIVE);
76492        var dropdownChild = jquery__WEBPACK_IMPORTED_MODULE_0___default()(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
76493
76494        if (dropdownChild) {
76495          jquery__WEBPACK_IMPORTED_MODULE_0___default()(dropdownChild).removeClass(ClassName.ACTIVE);
76496        }
76497
76498        if (active.getAttribute('role') === 'tab') {
76499          active.setAttribute('aria-selected', false);
76500        }
76501      }
76502
76503      jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).addClass(ClassName.ACTIVE);
76504
76505      if (element.getAttribute('role') === 'tab') {
76506        element.setAttribute('aria-selected', true);
76507      }
76508
76509      _util__WEBPACK_IMPORTED_MODULE_1__["default"].reflow(element);
76510
76511      if (element.classList.contains(ClassName.FADE)) {
76512        element.classList.add(ClassName.SHOW);
76513      }
76514
76515      if (element.parentNode && jquery__WEBPACK_IMPORTED_MODULE_0___default()(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
76516        var dropdownElement = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).closest(Selector.DROPDOWN)[0];
76517
76518        if (dropdownElement) {
76519          var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(Selector.DROPDOWN_TOGGLE));
76520          jquery__WEBPACK_IMPORTED_MODULE_0___default()(dropdownToggleList).addClass(ClassName.ACTIVE);
76521        }
76522
76523        element.setAttribute('aria-expanded', true);
76524      }
76525
76526      if (callback) {
76527        callback();
76528      }
76529    } // Static
76530
76531  }], [{
76532    key: "VERSION",
76533    get: function get() {
76534      return VERSION;
76535    }
76536  }, {
76537    key: "_jQueryInterface",
76538    value: function _jQueryInterface(config) {
76539      return this.each(function () {
76540        var $this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this);
76541        var data = $this.data(DATA_KEY);
76542
76543        if (!data) {
76544          data = new Tab(this);
76545          $this.data(DATA_KEY, data);
76546        }
76547
76548        if (typeof config === 'string') {
76549          if (typeof data[config] === 'undefined') {
76550            throw new TypeError("No method named \"".concat(config, "\""));
76551          }
76552
76553          data[config]();
76554        }
76555      });
76556    }
76557  }]);
76558
76559  return Tab;
76560}();
76561/**
76562 * ------------------------------------------------------------------------
76563 * Data Api implementation
76564 * ------------------------------------------------------------------------
76565 */
76566
76567
76568jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
76569  event.preventDefault();
76570
76571  Tab._jQueryInterface.call(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'show');
76572});
76573/**
76574 * ------------------------------------------------------------------------
76575 * jQuery
76576 * ------------------------------------------------------------------------
76577 */
76578
76579jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = Tab._jQueryInterface;
76580jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].Constructor = Tab;
76581
76582jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME].noConflict = function () {
76583  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
76584  return Tab._jQueryInterface;
76585};
76586
76587/* harmony default export */ __webpack_exports__["default"] = (Tab);
76588
76589/***/ }),
76590
vendor: 4,322 bytes, lines 76591-76724
76591/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/tools/sanitizer.js":
76592/*!*********************************************************************************************!*\
76593  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/tools/sanitizer.js ***!
76594  \*********************************************************************************************/
76595/*! exports provided: DefaultWhitelist, sanitizeHtml */
76596/***/ (function(module, __webpack_exports__, __webpack_require__) {
76597
76598"use strict";
76599__webpack_require__.r(__webpack_exports__);
76600/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DefaultWhitelist", function() { return DefaultWhitelist; });
76601/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sanitizeHtml", function() { return sanitizeHtml; });
76602/**
76603 * --------------------------------------------------------------------------
76604 * Bootstrap (v4.3.1): tools/sanitizer.js
76605 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
76606 * --------------------------------------------------------------------------
76607 */
76608var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];
76609var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
76610var DefaultWhitelist = {
76611  // Global attributes allowed on any supplied element below.
76612  '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
76613  a: ['target', 'href', 'title', 'rel'],
76614  area: [],
76615  b: [],
76616  br: [],
76617  col: [],
76618  code: [],
76619  div: [],
76620  em: [],
76621  hr: [],
76622  h1: [],
76623  h2: [],
76624  h3: [],
76625  h4: [],
76626  h5: [],
76627  h6: [],
76628  i: [],
76629  img: ['src', 'alt', 'title', 'width', 'height'],
76630  li: [],
76631  ol: [],
76632  p: [],
76633  pre: [],
76634  s: [],
76635  small: [],
76636  span: [],
76637  sub: [],
76638  sup: [],
76639  strong: [],
76640  u: [],
76641  ul: []
76642};
76643/**
76644 * A pattern that recognizes a commonly useful subset of URLs that are safe.
76645 *
76646 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
76647 */
76648
76649var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;
76650/**
76651 * A pattern that matches safe data URLs. Only matches image, video and audio types.
76652 *
76653 * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts
76654 */
76655
76656var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;
76657
76658function allowedAttribute(attr, allowedAttributeList) {
76659  var attrName = attr.nodeName.toLowerCase();
76660
76661  if (allowedAttributeList.indexOf(attrName) !== -1) {
76662    if (uriAttrs.indexOf(attrName) !== -1) {
76663      return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));
76664    }
76665
76666    return true;
76667  }
76668
76669  var regExp = allowedAttributeList.filter(function (attrRegex) {
76670    return attrRegex instanceof RegExp;
76671  }); // Check if a regular expression validates the attribute.
76672
76673  for (var i = 0, l = regExp.length; i < l; i++) {
76674    if (attrName.match(regExp[i])) {
76675      return true;
76676    }
76677  }
76678
76679  return false;
76680}
76681
76682function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
76683  if (unsafeHtml.length === 0) {
76684    return unsafeHtml;
76685  }
76686
76687  if (sanitizeFn && typeof sanitizeFn === 'function') {
76688    return sanitizeFn(unsafeHtml);
76689  }
76690
76691  var domParser = new window.DOMParser();
76692  var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');
76693  var whitelistKeys = Object.keys(whiteList);
76694  var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));
76695
76696  var _loop = function _loop(i, len) {
76697    var el = elements[i];
76698    var elName = el.nodeName.toLowerCase();
76699
76700    if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
76701      el.parentNode.removeChild(el);
76702      return "continue";
76703    }
76704
76705    var attributeList = [].slice.call(el.attributes);
76706    var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);
76707    attributeList.forEach(function (attr) {
76708      if (!allowedAttribute(attr, whitelistedAttributes)) {
76709        el.removeAttribute(attr.nodeName);
76710      }
76711    });
76712  };
76713
76714  for (var i = 0, len = elements.length; i < len; i++) {
76715    var _ret = _loop(i, len);
76716
76717    if (_ret === "continue") continue;
76718  }
76719
76720  return createdDocument.body.innerHTML;
76721}
76722
76723/***/ }),
76724
vendor: 27,603 bytes, lines 76725-77508
76725/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/tooltip.js":
76726/*!*************************************************************************************!*\
76727  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/tooltip.js ***!
76728  \*************************************************************************************/
76729/*! exports provided: default */
76730/***/ (function(module, __webpack_exports__, __webpack_require__) {
76731
76732"use strict";
76733__webpack_require__.r(__webpack_exports__);
76734/* harmony import */ var _tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./tools/sanitizer */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/tools/sanitizer.js");
76735/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
76736/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__);
76737/* harmony import */ var popper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! popper.js */ "../rvw_autobahn_core/node_modules/popper.js/dist/esm/popper.js");
76738/* harmony import */ var _util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util */ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js");
76739function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
76740
76741function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
76742
76743function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
76744
76745function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
76746
76747function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
76748
76749function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
76750
76751function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
76752
76753/**
76754 * --------------------------------------------------------------------------
76755 * Bootstrap (v4.3.1): tooltip.js
76756 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
76757 * --------------------------------------------------------------------------
76758 */
76759
76760
76761
76762
76763/**
76764 * ------------------------------------------------------------------------
76765 * Constants
76766 * ------------------------------------------------------------------------
76767 */
76768
76769var NAME = 'tooltip';
76770var VERSION = '4.3.1';
76771var DATA_KEY = 'bs.tooltip';
76772var EVENT_KEY = ".".concat(DATA_KEY);
76773var JQUERY_NO_CONFLICT = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME];
76774var CLASS_PREFIX = 'bs-tooltip';
76775var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)".concat(CLASS_PREFIX, "\\S+"), 'g');
76776var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];
76777var DefaultType = {
76778  animation: 'boolean',
76779  template: 'string',
76780  title: '(string|element|function)',
76781  trigger: 'string',
76782  delay: '(number|object)',
76783  html: 'boolean',
76784  selector: '(string|boolean)',
76785  placement: '(string|function)',
76786  offset: '(number|string|function)',
76787  container: '(string|element|boolean)',
76788  fallbackPlacement: '(string|array)',
76789  boundary: '(string|element)',
76790  sanitize: 'boolean',
76791  sanitizeFn: '(null|function)',
76792  whiteList: 'object'
76793};
76794var AttachmentMap = {
76795  AUTO: 'auto',
76796  TOP: 'top',
76797  RIGHT: 'right',
76798  BOTTOM: 'bottom',
76799  LEFT: 'left'
76800};
76801var Default = {
76802  animation: true,
76803  template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>',
76804  trigger: 'hover focus',
76805  title: '',
76806  delay: 0,
76807  html: false,
76808  selector: false,
76809  placement: 'top',
76810  offset: 0,
76811  container: false,
76812  fallbackPlacement: 'flip',
76813  boundary: 'scrollParent',
76814  sanitize: true,
76815  sanitizeFn: null,
76816  whiteList: _tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["DefaultWhitelist"]
76817};
76818var HoverState = {
76819  SHOW: 'show',
76820  OUT: 'out'
76821};
76822var Event = {
76823  HIDE: "hide".concat(EVENT_KEY),
76824  HIDDEN: "hidden".concat(EVENT_KEY),
76825  SHOW: "show".concat(EVENT_KEY),
76826  SHOWN: "shown".concat(EVENT_KEY),
76827  INSERTED: "inserted".concat(EVENT_KEY),
76828  CLICK: "click".concat(EVENT_KEY),
76829  FOCUSIN: "focusin".concat(EVENT_KEY),
76830  FOCUSOUT: "focusout".concat(EVENT_KEY),
76831  MOUSEENTER: "mouseenter".concat(EVENT_KEY),
76832  MOUSELEAVE: "mouseleave".concat(EVENT_KEY)
76833};
76834var ClassName = {
76835  FADE: 'fade',
76836  SHOW: 'show'
76837};
76838var Selector = {
76839  TOOLTIP: '.tooltip',
76840  TOOLTIP_INNER: '.tooltip-inner',
76841  ARROW: '.arrow'
76842};
76843var Trigger = {
76844  HOVER: 'hover',
76845  FOCUS: 'focus',
76846  CLICK: 'click',
76847  MANUAL: 'manual'
76848};
76849/**
76850 * ------------------------------------------------------------------------
76851 * Class Definition
76852 * ------------------------------------------------------------------------
76853 */
76854
76855var Tooltip = /*#__PURE__*/function () {
76856  function Tooltip(element, config) {
76857    _classCallCheck(this, Tooltip);
76858
76859    /**
76860     * Check for Popper dependency
76861     * Popper - https://popper.js.org
76862     */
76863    if (typeof popper_js__WEBPACK_IMPORTED_MODULE_2__["default"] === 'undefined') {
76864      throw new TypeError('Bootstrap\'s tooltips require Popper.js (https://popper.js.org/)');
76865    } // private
76866
76867
76868    this._isEnabled = true;
76869    this._timeout = 0;
76870    this._hoverState = '';
76871    this._activeTrigger = {};
76872    this._popper = null; // Protected
76873
76874    this.element = element;
76875    this.config = this._getConfig(config);
76876    this.tip = null;
76877
76878    this._setListeners();
76879  } // Getters
76880
76881
76882  _createClass(Tooltip, [{
76883    key: "enable",
76884    value: // Public
76885    function enable() {
76886      this._isEnabled = true;
76887    }
76888  }, {
76889    key: "disable",
76890    value: function disable() {
76891      this._isEnabled = false;
76892    }
76893  }, {
76894    key: "toggleEnabled",
76895    value: function toggleEnabled() {
76896      this._isEnabled = !this._isEnabled;
76897    }
76898  }, {
76899    key: "toggle",
76900    value: function toggle(event) {
76901      if (!this._isEnabled) {
76902        return;
76903      }
76904
76905      if (event) {
76906        var dataKey = this.constructor.DATA_KEY;
76907        var context = jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey);
76908
76909        if (!context) {
76910          context = new this.constructor(event.currentTarget, this._getDelegateConfig());
76911          jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context);
76912        }
76913
76914        context._activeTrigger.click = !context._activeTrigger.click;
76915
76916        if (context._isWithActiveTrigger()) {
76917          context._enter(null, context);
76918        } else {
76919          context._leave(null, context);
76920        }
76921      } else {
76922        if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement()).hasClass(ClassName.SHOW)) {
76923          this._leave(null, this);
76924
76925          return;
76926        }
76927
76928        this._enter(null, this);
76929      }
76930    }
76931  }, {
76932    key: "dispose",
76933    value: function dispose() {
76934      clearTimeout(this._timeout);
76935      jquery__WEBPACK_IMPORTED_MODULE_1___default.a.removeData(this.element, this.constructor.DATA_KEY);
76936      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).off(this.constructor.EVENT_KEY);
76937      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).closest('.modal').off('hide.bs.modal');
76938
76939      if (this.tip) {
76940        jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).remove();
76941      }
76942
76943      this._isEnabled = null;
76944      this._timeout = null;
76945      this._hoverState = null;
76946      this._activeTrigger = null;
76947
76948      if (this._popper !== null) {
76949        this._popper.destroy();
76950      }
76951
76952      this._popper = null;
76953      this.element = null;
76954      this.config = null;
76955      this.tip = null;
76956    }
76957  }, {
76958    key: "show",
76959    value: function show() {
76960      var _this = this;
76961
76962      if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).css('display') === 'none') {
76963        throw new Error('Please use show on visible elements');
76964      }
76965
76966      var showEvent = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.Event(this.constructor.Event.SHOW);
76967
76968      if (this.isWithContent() && this._isEnabled) {
76969        jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(showEvent);
76970        var shadowRoot = _util__WEBPACK_IMPORTED_MODULE_3__["default"].findShadowRoot(this.element);
76971        var isInTheDom = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
76972
76973        if (showEvent.isDefaultPrevented() || !isInTheDom) {
76974          return;
76975        }
76976
76977        var tip = this.getTipElement();
76978        var tipId = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getUID(this.constructor.NAME);
76979        tip.setAttribute('id', tipId);
76980        this.element.setAttribute('aria-describedby', tipId);
76981        this.setContent();
76982
76983        if (this.config.animation) {
76984          jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).addClass(ClassName.FADE);
76985        }
76986
76987        var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;
76988
76989        var attachment = this._getAttachment(placement);
76990
76991        this.addAttachmentClass(attachment);
76992
76993        var container = this._getContainer();
76994
76995        jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).data(this.constructor.DATA_KEY, this);
76996
76997        if (!jquery__WEBPACK_IMPORTED_MODULE_1___default.a.contains(this.element.ownerDocument.documentElement, this.tip)) {
76998          jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).appendTo(container);
76999        }
77000
77001        jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(this.constructor.Event.INSERTED);
77002        this._popper = new popper_js__WEBPACK_IMPORTED_MODULE_2__["default"](this.element, tip, {
77003          placement: attachment,
77004          modifiers: {
77005            offset: this._getOffset(),
77006            flip: {
77007              behavior: this.config.fallbackPlacement
77008            },
77009            arrow: {
77010              element: Selector.ARROW
77011            },
77012            preventOverflow: {
77013              boundariesElement: this.config.boundary
77014            }
77015          },
77016          onCreate: function onCreate(data) {
77017            if (data.originalPlacement !== data.placement) {
77018              _this._handlePopperPlacementChange(data);
77019            }
77020          },
77021          onUpdate: function onUpdate(data) {
77022            return _this._handlePopperPlacementChange(data);
77023          }
77024        });
77025        jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra
77026        // empty mouseover listeners to the body's immediate children;
77027        // only needed because of broken event delegation on iOS
77028        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html
77029
77030        if ('ontouchstart' in document.documentElement) {
77031          jquery__WEBPACK_IMPORTED_MODULE_1___default()(document.body).children().on('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_1___default.a.noop);
77032        }
77033
77034        var complete = function complete() {
77035          if (_this.config.animation) {
77036            _this._fixTransition();
77037          }
77038
77039          var prevHoverState = _this._hoverState;
77040          _this._hoverState = null;
77041          jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this.element).trigger(_this.constructor.Event.SHOWN);
77042
77043          if (prevHoverState === HoverState.OUT) {
77044            _this._leave(null, _this);
77045          }
77046        };
77047
77048        if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).hasClass(ClassName.FADE)) {
77049          var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getTransitionDurationFromElement(this.tip);
77050          jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).one(_util__WEBPACK_IMPORTED_MODULE_3__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
77051        } else {
77052          complete();
77053        }
77054      }
77055    }
77056  }, {
77057    key: "hide",
77058    value: function hide(callback) {
77059      var _this2 = this;
77060
77061      var tip = this.getTipElement();
77062      var hideEvent = jquery__WEBPACK_IMPORTED_MODULE_1___default.a.Event(this.constructor.Event.HIDE);
77063
77064      var complete = function complete() {
77065        if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {
77066          tip.parentNode.removeChild(tip);
77067        }
77068
77069        _this2._cleanTipClass();
77070
77071        _this2.element.removeAttribute('aria-describedby');
77072
77073        jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this2.element).trigger(_this2.constructor.Event.HIDDEN);
77074
77075        if (_this2._popper !== null) {
77076          _this2._popper.destroy();
77077        }
77078
77079        if (callback) {
77080          callback();
77081        }
77082      };
77083
77084      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).trigger(hideEvent);
77085
77086      if (hideEvent.isDefaultPrevented()) {
77087        return;
77088      }
77089
77090      jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra
77091      // empty mouseover listeners we added for iOS support
77092
77093      if ('ontouchstart' in document.documentElement) {
77094        jquery__WEBPACK_IMPORTED_MODULE_1___default()(document.body).children().off('mouseover', null, jquery__WEBPACK_IMPORTED_MODULE_1___default.a.noop);
77095      }
77096
77097      this._activeTrigger[Trigger.CLICK] = false;
77098      this._activeTrigger[Trigger.FOCUS] = false;
77099      this._activeTrigger[Trigger.HOVER] = false;
77100
77101      if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.tip).hasClass(ClassName.FADE)) {
77102        var transitionDuration = _util__WEBPACK_IMPORTED_MODULE_3__["default"].getTransitionDurationFromElement(tip);
77103        jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).one(_util__WEBPACK_IMPORTED_MODULE_3__["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
77104      } else {
77105        complete();
77106      }
77107
77108      this._hoverState = '';
77109    }
77110  }, {
77111    key: "update",
77112    value: function update() {
77113      if (this._popper !== null) {
77114        this._popper.scheduleUpdate();
77115      }
77116    } // Protected
77117
77118  }, {
77119    key: "isWithContent",
77120    value: function isWithContent() {
77121      return Boolean(this.getTitle());
77122    }
77123  }, {
77124    key: "addAttachmentClass",
77125    value: function addAttachmentClass(attachment) {
77126      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement()).addClass("".concat(CLASS_PREFIX, "-").concat(attachment));
77127    }
77128  }, {
77129    key: "getTipElement",
77130    value: function getTipElement() {
77131      this.tip = this.tip || jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.config.template)[0];
77132      return this.tip;
77133    }
77134  }, {
77135    key: "setContent",
77136    value: function setContent() {
77137      var tip = this.getTipElement();
77138      this.setElementContent(jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip.querySelectorAll(Selector.TOOLTIP_INNER)), this.getTitle());
77139      jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass("".concat(ClassName.FADE, " ").concat(ClassName.SHOW));
77140    }
77141  }, {
77142    key: "setElementContent",
77143    value: function setElementContent($element, content) {
77144      if (_typeof(content) === 'object' && (content.nodeType || content.jquery)) {
77145        // Content is a DOM node or a jQuery
77146        if (this.config.html) {
77147          if (!jquery__WEBPACK_IMPORTED_MODULE_1___default()(content).parent().is($element)) {
77148            $element.empty().append(content);
77149          }
77150        } else {
77151          $element.text(jquery__WEBPACK_IMPORTED_MODULE_1___default()(content).text());
77152        }
77153
77154        return;
77155      }
77156
77157      if (this.config.html) {
77158        if (this.config.sanitize) {
77159          content = Object(_tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["sanitizeHtml"])(content, this.config.whiteList, this.config.sanitizeFn);
77160        }
77161
77162        $element.html(content);
77163      } else {
77164        $element.text(content);
77165      }
77166    }
77167  }, {
77168    key: "getTitle",
77169    value: function getTitle() {
77170      var title = this.element.getAttribute('data-original-title');
77171
77172      if (!title) {
77173        title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;
77174      }
77175
77176      return title;
77177    } // Private
77178
77179  }, {
77180    key: "_getOffset",
77181    value: function _getOffset() {
77182      var _this3 = this;
77183
77184      var offset = {};
77185
77186      if (typeof this.config.offset === 'function') {
77187        offset.fn = function (data) {
77188          data.offsets = _objectSpread(_objectSpread({}, data.offsets), _this3.config.offset(data.offsets, _this3.element) || {});
77189          return data;
77190        };
77191      } else {
77192        offset.offset = this.config.offset;
77193      }
77194
77195      return offset;
77196    }
77197  }, {
77198    key: "_getContainer",
77199    value: function _getContainer() {
77200      if (this.config.container === false) {
77201        return document.body;
77202      }
77203
77204      if (_util__WEBPACK_IMPORTED_MODULE_3__["default"].isElement(this.config.container)) {
77205        return jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.config.container);
77206      }
77207
77208      return jquery__WEBPACK_IMPORTED_MODULE_1___default()(document).find(this.config.container);
77209    }
77210  }, {
77211    key: "_getAttachment",
77212    value: function _getAttachment(placement) {
77213      return AttachmentMap[placement.toUpperCase()];
77214    }
77215  }, {
77216    key: "_setListeners",
77217    value: function _setListeners() {
77218      var _this4 = this;
77219
77220      var triggers = this.config.trigger.split(' ');
77221      triggers.forEach(function (trigger) {
77222        if (trigger === 'click') {
77223          jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this4.element).on(_this4.constructor.Event.CLICK, _this4.config.selector, function (event) {
77224            return _this4.toggle(event);
77225          });
77226        } else if (trigger !== Trigger.MANUAL) {
77227          var eventIn = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSEENTER : _this4.constructor.Event.FOCUSIN;
77228          var eventOut = trigger === Trigger.HOVER ? _this4.constructor.Event.MOUSELEAVE : _this4.constructor.Event.FOCUSOUT;
77229          jquery__WEBPACK_IMPORTED_MODULE_1___default()(_this4.element).on(eventIn, _this4.config.selector, function (event) {
77230            return _this4._enter(event);
77231          }).on(eventOut, _this4.config.selector, function (event) {
77232            return _this4._leave(event);
77233          });
77234        }
77235      });
77236      jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).closest('.modal').on('hide.bs.modal', function () {
77237        if (_this4.element) {
77238          _this4.hide();
77239        }
77240      });
77241
77242      if (this.config.selector) {
77243        this.config = _objectSpread(_objectSpread({}, this.config), {}, {
77244          trigger: 'manual',
77245          selector: ''
77246        });
77247      } else {
77248        this._fixTitle();
77249      }
77250    }
77251  }, {
77252    key: "_fixTitle",
77253    value: function _fixTitle() {
77254      var titleType = _typeof(this.element.getAttribute('data-original-title'));
77255
77256      if (this.element.getAttribute('title') || titleType !== 'string') {
77257        this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');
77258        this.element.setAttribute('title', '');
77259      }
77260    }
77261  }, {
77262    key: "_enter",
77263    value: function _enter(event, context) {
77264      var dataKey = this.constructor.DATA_KEY;
77265      context = context || jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey);
77266
77267      if (!context) {
77268        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
77269        jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context);
77270      }
77271
77272      if (event) {
77273        context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;
77274      }
77275
77276      if (jquery__WEBPACK_IMPORTED_MODULE_1___default()(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) {
77277        context._hoverState = HoverState.SHOW;
77278        return;
77279      }
77280
77281      clearTimeout(context._timeout);
77282      context._hoverState = HoverState.SHOW;
77283
77284      if (!context.config.delay || !context.config.delay.show) {
77285        context.show();
77286        return;
77287      }
77288
77289      context._timeout = setTimeout(function () {
77290        if (context._hoverState === HoverState.SHOW) {
77291          context.show();
77292        }
77293      }, context.config.delay.show);
77294    }
77295  }, {
77296    key: "_leave",
77297    value: function _leave(event, context) {
77298      var dataKey = this.constructor.DATA_KEY;
77299      context = context || jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey);
77300
77301      if (!context) {
77302        context = new this.constructor(event.currentTarget, this._getDelegateConfig());
77303        jquery__WEBPACK_IMPORTED_MODULE_1___default()(event.currentTarget).data(dataKey, context);
77304      }
77305
77306      if (event) {
77307        context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;
77308      }
77309
77310      if (context._isWithActiveTrigger()) {
77311        return;
77312      }
77313
77314      clearTimeout(context._timeout);
77315      context._hoverState = HoverState.OUT;
77316
77317      if (!context.config.delay || !context.config.delay.hide) {
77318        context.hide();
77319        return;
77320      }
77321
77322      context._timeout = setTimeout(function () {
77323        if (context._hoverState === HoverState.OUT) {
77324          context.hide();
77325        }
77326      }, context.config.delay.hide);
77327    }
77328  }, {
77329    key: "_isWithActiveTrigger",
77330    value: function _isWithActiveTrigger() {
77331      for (var trigger in this._activeTrigger) {
77332        if (this._activeTrigger[trigger]) {
77333          return true;
77334        }
77335      }
77336
77337      return false;
77338    }
77339  }, {
77340    key: "_getConfig",
77341    value: function _getConfig(config) {
77342      var dataAttributes = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.element).data();
77343      Object.keys(dataAttributes).forEach(function (dataAttr) {
77344        if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
77345          delete dataAttributes[dataAttr];
77346        }
77347      });
77348      config = _objectSpread(_objectSpread(_objectSpread({}, this.constructor.Default), dataAttributes), _typeof(config) === 'object' && config ? config : {});
77349
77350      if (typeof config.delay === 'number') {
77351        config.delay = {
77352          show: config.delay,
77353          hide: config.delay
77354        };
77355      }
77356
77357      if (typeof config.title === 'number') {
77358        config.title = config.title.toString();
77359      }
77360
77361      if (typeof config.content === 'number') {
77362        config.content = config.content.toString();
77363      }
77364
77365      _util__WEBPACK_IMPORTED_MODULE_3__["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
77366
77367      if (config.sanitize) {
77368        config.template = Object(_tools_sanitizer__WEBPACK_IMPORTED_MODULE_0__["sanitizeHtml"])(config.template, config.whiteList, config.sanitizeFn);
77369      }
77370
77371      return config;
77372    }
77373  }, {
77374    key: "_getDelegateConfig",
77375    value: function _getDelegateConfig() {
77376      var config = {};
77377
77378      if (this.config) {
77379        for (var key in this.config) {
77380          if (this.constructor.Default[key] !== this.config[key]) {
77381            config[key] = this.config[key];
77382          }
77383        }
77384      }
77385
77386      return config;
77387    }
77388  }, {
77389    key: "_cleanTipClass",
77390    value: function _cleanTipClass() {
77391      var $tip = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this.getTipElement());
77392      var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
77393
77394      if (tabClass !== null && tabClass.length) {
77395        $tip.removeClass(tabClass.join(''));
77396      }
77397    }
77398  }, {
77399    key: "_handlePopperPlacementChange",
77400    value: function _handlePopperPlacementChange(popperData) {
77401      var popperInstance = popperData.instance;
77402      this.tip = popperInstance.popper;
77403
77404      this._cleanTipClass();
77405
77406      this.addAttachmentClass(this._getAttachment(popperData.placement));
77407    }
77408  }, {
77409    key: "_fixTransition",
77410    value: function _fixTransition() {
77411      var tip = this.getTipElement();
77412      var initConfigAnimation = this.config.animation;
77413
77414      if (tip.getAttribute('x-placement') !== null) {
77415        return;
77416      }
77417
77418      jquery__WEBPACK_IMPORTED_MODULE_1___default()(tip).removeClass(ClassName.FADE);
77419      this.config.animation = false;
77420      this.hide();
77421      this.show();
77422      this.config.animation = initConfigAnimation;
77423    } // Static
77424
77425  }], [{
77426    key: "VERSION",
77427    get: function get() {
77428      return VERSION;
77429    }
77430  }, {
77431    key: "Default",
77432    get: function get() {
77433      return Default;
77434    }
77435  }, {
77436    key: "NAME",
77437    get: function get() {
77438      return NAME;
77439    }
77440  }, {
77441    key: "DATA_KEY",
77442    get: function get() {
77443      return DATA_KEY;
77444    }
77445  }, {
77446    key: "Event",
77447    get: function get() {
77448      return Event;
77449    }
77450  }, {
77451    key: "EVENT_KEY",
77452    get: function get() {
77453      return EVENT_KEY;
77454    }
77455  }, {
77456    key: "DefaultType",
77457    get: function get() {
77458      return DefaultType;
77459    }
77460  }, {
77461    key: "_jQueryInterface",
77462    value: function _jQueryInterface(config) {
77463      return this.each(function () {
77464        var data = jquery__WEBPACK_IMPORTED_MODULE_1___default()(this).data(DATA_KEY);
77465
77466        var _config = _typeof(config) === 'object' && config;
77467
77468        if (!data && /dispose|hide/.test(config)) {
77469          return;
77470        }
77471
77472        if (!data) {
77473          data = new Tooltip(this, _config);
77474          jquery__WEBPACK_IMPORTED_MODULE_1___default()(this).data(DATA_KEY, data);
77475        }
77476
77477        if (typeof config === 'string') {
77478          if (typeof data[config] === 'undefined') {
77479            throw new TypeError("No method named \"".concat(config, "\""));
77480          }
77481
77482          data[config]();
77483        }
77484      });
77485    }
77486  }]);
77487
77488  return Tooltip;
77489}();
77490/**
77491 * ------------------------------------------------------------------------
77492 * jQuery
77493 * ------------------------------------------------------------------------
77494 */
77495
77496
77497jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME] = Tooltip._jQueryInterface;
77498jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME].Constructor = Tooltip;
77499
77500jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME].noConflict = function () {
77501  jquery__WEBPACK_IMPORTED_MODULE_1___default.a.fn[NAME] = JQUERY_NO_CONFLICT;
77502  return Tooltip._jQueryInterface;
77503};
77504
77505/* harmony default export */ __webpack_exports__["default"] = (Tooltip);
77506
77507/***/ }),
77508
vendor: 6,144 bytes, lines 77509-77678
77509/***/ "../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js":
77510/*!**********************************************************************************!*\
77511  !*** ../storefront-reference-architecture/node_modules/bootstrap/js/src/util.js ***!
77512  \**********************************************************************************/
77513/*! exports provided: default */
77514/***/ (function(module, __webpack_exports__, __webpack_require__) {
77515
77516"use strict";
77517__webpack_require__.r(__webpack_exports__);
77518/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "../rvw_autobahn_core/node_modules/jquery/dist/jquery.js");
77519/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);
77520/**
77521 * --------------------------------------------------------------------------
77522 * Bootstrap (v4.3.1): util.js
77523 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
77524 * --------------------------------------------------------------------------
77525 */
77526
77527/**
77528 * ------------------------------------------------------------------------
77529 * Private TransitionEnd Helpers
77530 * ------------------------------------------------------------------------
77531 */
77532
77533var TRANSITION_END = 'transitionend';
77534var MAX_UID = 1000000;
77535var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
77536
77537function toType(obj) {
77538  return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
77539}
77540
77541function getSpecialTransitionEndEvent() {
77542  return {
77543    bindType: TRANSITION_END,
77544    delegateType: TRANSITION_END,
77545    handle: function handle(event) {
77546      if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).is(this)) {
77547        return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
77548      }
77549
77550      return undefined; // eslint-disable-line no-undefined
77551    }
77552  };
77553}
77554
77555function transitionEndEmulator(duration) {
77556  var _this = this;
77557
77558  var called = false;
77559  jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).one(Util.TRANSITION_END, function () {
77560    called = true;
77561  });
77562  setTimeout(function () {
77563    if (!called) {
77564      Util.triggerTransitionEnd(_this);
77565    }
77566  }, duration);
77567  return this;
77568}
77569
77570function setTransitionEndSupport() {
77571  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.fn.emulateTransitionEnd = transitionEndEmulator;
77572  jquery__WEBPACK_IMPORTED_MODULE_0___default.a.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
77573}
77574/**
77575 * --------------------------------------------------------------------------
77576 * Public Util Api
77577 * --------------------------------------------------------------------------
77578 */
77579
77580
77581var Util = {
77582  TRANSITION_END: 'bsTransitionEnd',
77583  getUID: function getUID(prefix) {
77584    do {
77585      // eslint-disable-next-line no-bitwise
77586      prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
77587    } while (document.getElementById(prefix));
77588
77589    return prefix;
77590  },
77591  getSelectorFromElement: function getSelectorFromElement(element) {
77592    var selector = element.getAttribute('data-target');
77593
77594    if (!selector || selector === '#') {
77595      var hrefAttr = element.getAttribute('href');
77596      selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';
77597    }
77598
77599    try {
77600      return document.querySelector(selector) ? selector : null;
77601    } catch (err) {
77602      return null;
77603    }
77604  },
77605  getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
77606    if (!element) {
77607      return 0;
77608    } // Get transition-duration of the element
77609
77610
77611    var transitionDuration = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('transition-duration');
77612    var transitionDelay = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).css('transition-delay');
77613    var floatTransitionDuration = parseFloat(transitionDuration);
77614    var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found
77615
77616    if (!floatTransitionDuration && !floatTransitionDelay) {
77617      return 0;
77618    } // If multiple durations are defined, take the first
77619
77620
77621    transitionDuration = transitionDuration.split(',')[0];
77622    transitionDelay = transitionDelay.split(',')[0];
77623    return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
77624  },
77625  reflow: function reflow(element) {
77626    return element.offsetHeight;
77627  },
77628  triggerTransitionEnd: function triggerTransitionEnd(element) {
77629    jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).trigger(TRANSITION_END);
77630  },
77631  // TODO: Remove in v5
77632  supportsTransitionEnd: function supportsTransitionEnd() {
77633    return Boolean(TRANSITION_END);
77634  },
77635  isElement: function isElement(obj) {
77636    return (obj[0] || obj).nodeType;
77637  },
77638  typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
77639    for (var property in configTypes) {
77640      if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
77641        var expectedTypes = configTypes[property];
77642        var value = config[property];
77643        var valueType = value && Util.isElement(value) ? 'element' : toType(value);
77644
77645        if (!new RegExp(expectedTypes).test(valueType)) {
77646          throw new Error("".concat(componentName.toUpperCase(), ": ") + "Option \"".concat(property, "\" provided type \"").concat(valueType, "\" ") + "but expected type \"".concat(expectedTypes, "\"."));
77647        }
77648      }
77649    }
77650  },
77651  findShadowRoot: function findShadowRoot(element) {
77652    if (!document.documentElement.attachShadow) {
77653      return null;
77654    } // Can find the shadow root otherwise it'll return the document
77655
77656
77657    if (typeof element.getRootNode === 'function') {
77658      var root = element.getRootNode();
77659      return root instanceof ShadowRoot ? root : null;
77660    }
77661
77662    if (element instanceof ShadowRoot) {
77663      return element;
77664    } // when we don't find a shadow root
77665
77666
77667    if (!element.parentNode) {
77668      return null;
77669    }
77670
77671    return Util.findShadowRoot(element.parentNode);
77672  }
77673};
77674setTransitionEndSupport();
77675/* harmony default export */ __webpack_exports__["default"] = (Util);
77676
77677/***/ }),
77678
vendor: 2,567 bytes, lines 77679-77777
77679/***/ "../storefront-reference-architecture/node_modules/ieee754/index.js":
77680/*!**************************************************************************!*\
77681  !*** ../storefront-reference-architecture/node_modules/ieee754/index.js ***!
77682  \**************************************************************************/
77683/*! no static exports found */
77684/***/ (function(module, exports) {
77685
77686/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
77687exports.read = function (buffer, offset, isLE, mLen, nBytes) {
77688  var e, m;
77689  var eLen = nBytes * 8 - mLen - 1;
77690  var eMax = (1 << eLen) - 1;
77691  var eBias = eMax >> 1;
77692  var nBits = -7;
77693  var i = isLE ? nBytes - 1 : 0;
77694  var d = isLE ? -1 : 1;
77695  var s = buffer[offset + i];
77696  i += d;
77697  e = s & (1 << -nBits) - 1;
77698  s >>= -nBits;
77699  nBits += eLen;
77700
77701  for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
77702
77703  m = e & (1 << -nBits) - 1;
77704  e >>= -nBits;
77705  nBits += mLen;
77706
77707  for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
77708
77709  if (e === 0) {
77710    e = 1 - eBias;
77711  } else if (e === eMax) {
77712    return m ? NaN : (s ? -1 : 1) * Infinity;
77713  } else {
77714    m = m + Math.pow(2, mLen);
77715    e = e - eBias;
77716  }
77717
77718  return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
77719};
77720
77721exports.write = function (buffer, value, offset, isLE, mLen, nBytes) {
77722  var e, m, c;
77723  var eLen = nBytes * 8 - mLen - 1;
77724  var eMax = (1 << eLen) - 1;
77725  var eBias = eMax >> 1;
77726  var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
77727  var i = isLE ? 0 : nBytes - 1;
77728  var d = isLE ? 1 : -1;
77729  var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
77730  value = Math.abs(value);
77731
77732  if (isNaN(value) || value === Infinity) {
77733    m = isNaN(value) ? 1 : 0;
77734    e = eMax;
77735  } else {
77736    e = Math.floor(Math.log(value) / Math.LN2);
77737
77738    if (value * (c = Math.pow(2, -e)) < 1) {
77739      e--;
77740      c *= 2;
77741    }
77742
77743    if (e + eBias >= 1) {
77744      value += rt / c;
77745    } else {
77746      value += rt * Math.pow(2, 1 - eBias);
77747    }
77748
77749    if (value * c >= 2) {
77750      e++;
77751      c /= 2;
77752    }
77753
77754    if (e + eBias >= eMax) {
77755      m = 0;
77756      e = eMax;
77757    } else if (e + eBias >= 1) {
77758      m = (value * c - 1) * Math.pow(2, mLen);
77759      e = e + eBias;
77760    } else {
77761      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
77762      e = 0;
77763    }
77764  }
77765
77766  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
77767
77768  e = e << mLen | m;
77769  eLen += mLen;
77770
77771  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
77772
77773  buffer[offset + i - d] |= s * 128;
77774};
77775
77776/***/ }),
77777
vendor: 526 bytes, lines 77778-77792
77778/***/ "../storefront-reference-architecture/node_modules/isarray/index.js":
77779/*!**************************************************************************!*\
77780  !*** ../storefront-reference-architecture/node_modules/isarray/index.js ***!
77781  \**************************************************************************/
77782/*! no static exports found */
77783/***/ (function(module, exports) {
77784
77785var toString = {}.toString;
77786
77787module.exports = Array.isArray || function (arr) {
77788  return toString.call(arr) == '[object Array]';
77789};
77790
77791/***/ }),
77792
vendor: 624 bytes, lines 77793-77808
77793/***/ "../storefront-reference-architecture/node_modules/lodash/_Symbol.js":
77794/*!***************************************************************************!*\
77795  !*** ../storefront-reference-architecture/node_modules/lodash/_Symbol.js ***!
77796  \***************************************************************************/
77797/*! no static exports found */
77798/***/ (function(module, exports, __webpack_require__) {
77799
77800var root = __webpack_require__(/*! ./_root */ "../storefront-reference-architecture/node_modules/lodash/_root.js");
77801/** Built-in value references. */
77802
77803
77804var _Symbol = root.Symbol;
77805module.exports = _Symbol;
77806
77807/***/ }),
77808
vendor: 1,494 bytes, lines 77809-77846
77809/***/ "../storefront-reference-architecture/node_modules/lodash/_baseGetTag.js":
77810/*!*******************************************************************************!*\
77811  !*** ../storefront-reference-architecture/node_modules/lodash/_baseGetTag.js ***!
77812  \*******************************************************************************/
77813/*! no static exports found */
77814/***/ (function(module, exports, __webpack_require__) {
77815
77816var _Symbol = __webpack_require__(/*! ./_Symbol */ "../storefront-reference-architecture/node_modules/lodash/_Symbol.js"),
77817    getRawTag = __webpack_require__(/*! ./_getRawTag */ "../storefront-reference-architecture/node_modules/lodash/_getRawTag.js"),
77818    objectToString = __webpack_require__(/*! ./_objectToString */ "../storefront-reference-architecture/node_modules/lodash/_objectToString.js");
77819/** `Object#toString` result references. */
77820
77821
77822var nullTag = '[object Null]',
77823    undefinedTag = '[object Undefined]';
77824/** Built-in value references. */
77825
77826var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
77827/**
77828 * The base implementation of `getTag` without fallbacks for buggy environments.
77829 *
77830 * @private
77831 * @param {*} value The value to query.
77832 * @returns {string} Returns the `toStringTag`.
77833 */
77834
77835function baseGetTag(value) {
77836  if (value == null) {
77837    return value === undefined ? undefinedTag : nullTag;
77838  }
77839
77840  return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value);
77841}
77842
77843module.exports = baseGetTag;
77844
77845/***/ }),
77846
vendor: 960 bytes, lines 77847-77874
77847/***/ "../storefront-reference-architecture/node_modules/lodash/_baseTrim.js":
77848/*!*****************************************************************************!*\
77849  !*** ../storefront-reference-architecture/node_modules/lodash/_baseTrim.js ***!
77850  \*****************************************************************************/
77851/*! no static exports found */
77852/***/ (function(module, exports, __webpack_require__) {
77853
77854var trimmedEndIndex = __webpack_require__(/*! ./_trimmedEndIndex */ "../storefront-reference-architecture/node_modules/lodash/_trimmedEndIndex.js");
77855/** Used to match leading whitespace. */
77856
77857
77858var reTrimStart = /^\s+/;
77859/**
77860 * The base implementation of `_.trim`.
77861 *
77862 * @private
77863 * @param {string} string The string to trim.
77864 * @returns {string} Returns the trimmed string.
77865 */
77866
77867function baseTrim(string) {
77868  return string ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '') : string;
77869}
77870
77871module.exports = baseTrim;
77872
77873/***/ }),
77874
vendor: 1,267 bytes, lines 77875-77890
77875/***/ "../storefront-reference-architecture/node_modules/lodash/_freeGlobal.js":
77876/*!*******************************************************************************!*\
77877  !*** ../storefront-reference-architecture/node_modules/lodash/_freeGlobal.js ***!
77878  \*******************************************************************************/
77879/*! no static exports found */
77880/***/ (function(module, exports, __webpack_require__) {
77881
77882/* WEBPACK VAR INJECTION */(function(global) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
77883
77884/** Detect free variable `global` from Node.js. */
77885var freeGlobal = (typeof global === "undefined" ? "undefined" : _typeof(global)) == 'object' && global && global.Object === Object && global;
77886module.exports = freeGlobal;
77887/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../sfra-webpack-builder/node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
77888
77889/***/ }),
77890
vendor: 1,663 bytes, lines 77891-77949
77891/***/ "../storefront-reference-architecture/node_modules/lodash/_getRawTag.js":
77892/*!******************************************************************************!*\
77893  !*** ../storefront-reference-architecture/node_modules/lodash/_getRawTag.js ***!
77894  \******************************************************************************/
77895/*! no static exports found */
77896/***/ (function(module, exports, __webpack_require__) {
77897
77898var _Symbol = __webpack_require__(/*! ./_Symbol */ "../storefront-reference-architecture/node_modules/lodash/_Symbol.js");
77899/** Used for built-in method references. */
77900
77901
77902var objectProto = Object.prototype;
77903/** Used to check objects for own properties. */
77904
77905var hasOwnProperty = objectProto.hasOwnProperty;
77906/**
77907 * Used to resolve the
77908 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
77909 * of values.
77910 */
77911
77912var nativeObjectToString = objectProto.toString;
77913/** Built-in value references. */
77914
77915var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
77916/**
77917 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
77918 *
77919 * @private
77920 * @param {*} value The value to query.
77921 * @returns {string} Returns the raw `toStringTag`.
77922 */
77923
77924function getRawTag(value) {
77925  var isOwn = hasOwnProperty.call(value, symToStringTag),
77926      tag = value[symToStringTag];
77927
77928  try {
77929    value[symToStringTag] = undefined;
77930    var unmasked = true;
77931  } catch (e) {}
77932
77933  var result = nativeObjectToString.call(value);
77934
77935  if (unmasked) {
77936    if (isOwn) {
77937      value[symToStringTag] = tag;
77938    } else {
77939      delete value[symToStringTag];
77940    }
77941  }
77942
77943  return result;
77944}
77945
77946module.exports = getRawTag;
77947
77948/***/ }),
77949
vendor: 995 bytes, lines 77950-77981
77950/***/ "../storefront-reference-architecture/node_modules/lodash/_objectToString.js":
77951/*!***********************************************************************************!*\
77952  !*** ../storefront-reference-architecture/node_modules/lodash/_objectToString.js ***!
77953  \***********************************************************************************/
77954/*! no static exports found */
77955/***/ (function(module, exports) {
77956
77957/** Used for built-in method references. */
77958var objectProto = Object.prototype;
77959/**
77960 * Used to resolve the
77961 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
77962 * of values.
77963 */
77964
77965var nativeObjectToString = objectProto.toString;
77966/**
77967 * Converts `value` to a string using `Object.prototype.toString`.
77968 *
77969 * @private
77970 * @param {*} value The value to convert.
77971 * @returns {string} Returns the converted string.
77972 */
77973
77974function objectToString(value) {
77975  return nativeObjectToString.call(value);
77976}
77977
77978module.exports = objectToString;
77979
77980/***/ }),
77981
vendor: 1,230 bytes, lines 77982-78002
77982/***/ "../storefront-reference-architecture/node_modules/lodash/_root.js":
77983/*!*************************************************************************!*\
77984  !*** ../storefront-reference-architecture/node_modules/lodash/_root.js ***!
77985  \*************************************************************************/
77986/*! no static exports found */
77987/***/ (function(module, exports, __webpack_require__) {
77988
77989function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
77990
77991var freeGlobal = __webpack_require__(/*! ./_freeGlobal */ "../storefront-reference-architecture/node_modules/lodash/_freeGlobal.js");
77992/** Detect free variable `self`. */
77993
77994
77995var freeSelf = (typeof self === "undefined" ? "undefined" : _typeof(self)) == 'object' && self && self.Object === Object && self;
77996/** Used as a reference to the global object. */
77997
77998var root = freeGlobal || freeSelf || Function('return this')();
77999module.exports = root;
78000
78001/***/ }),
78002
vendor: 950 bytes, lines 78003-78032
78003/***/ "../storefront-reference-architecture/node_modules/lodash/_trimmedEndIndex.js":
78004/*!************************************************************************************!*\
78005  !*** ../storefront-reference-architecture/node_modules/lodash/_trimmedEndIndex.js ***!
78006  \************************************************************************************/
78007/*! no static exports found */
78008/***/ (function(module, exports) {
78009
78010/** Used to match a single whitespace character. */
78011var reWhitespace = /\s/;
78012/**
78013 * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace
78014 * character of `string`.
78015 *
78016 * @private
78017 * @param {string} string The string to inspect.
78018 * @returns {number} Returns the index of the last non-whitespace character.
78019 */
78020
78021function trimmedEndIndex(string) {
78022  var index = string.length;
78023
78024  while (index-- && reWhitespace.test(string.charAt(index))) {}
78025
78026  return index;
78027}
78028
78029module.exports = trimmedEndIndex;
78030
78031/***/ }),
78032
vendor: 6,747 bytes, lines 78033-78236
78033/***/ "../storefront-reference-architecture/node_modules/lodash/debounce.js":
78034/*!****************************************************************************!*\
78035  !*** ../storefront-reference-architecture/node_modules/lodash/debounce.js ***!
78036  \****************************************************************************/
78037/*! no static exports found */
78038/***/ (function(module, exports, __webpack_require__) {
78039
78040var isObject = __webpack_require__(/*! ./isObject */ "../storefront-reference-architecture/node_modules/lodash/isObject.js"),
78041    now = __webpack_require__(/*! ./now */ "../storefront-reference-architecture/node_modules/lodash/now.js"),
78042    toNumber = __webpack_require__(/*! ./toNumber */ "../storefront-reference-architecture/node_modules/lodash/toNumber.js");
78043/** Error message constants. */
78044
78045
78046var FUNC_ERROR_TEXT = 'Expected a function';
78047/* Built-in method references for those with the same name as other `lodash` methods. */
78048
78049var nativeMax = Math.max,
78050    nativeMin = Math.min;
78051/**
78052 * Creates a debounced function that delays invoking `func` until after `wait`
78053 * milliseconds have elapsed since the last time the debounced function was
78054 * invoked. The debounced function comes with a `cancel` method to cancel
78055 * delayed `func` invocations and a `flush` method to immediately invoke them.
78056 * Provide `options` to indicate whether `func` should be invoked on the
78057 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
78058 * with the last arguments provided to the debounced function. Subsequent
78059 * calls to the debounced function return the result of the last `func`
78060 * invocation.
78061 *
78062 * **Note:** If `leading` and `trailing` options are `true`, `func` is
78063 * invoked on the trailing edge of the timeout only if the debounced function
78064 * is invoked more than once during the `wait` timeout.
78065 *
78066 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
78067 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
78068 *
78069 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
78070 * for details over the differences between `_.debounce` and `_.throttle`.
78071 *
78072 * @static
78073 * @memberOf _
78074 * @since 0.1.0
78075 * @category Function
78076 * @param {Function} func The function to debounce.
78077 * @param {number} [wait=0] The number of milliseconds to delay.
78078 * @param {Object} [options={}] The options object.
78079 * @param {boolean} [options.leading=false]
78080 *  Specify invoking on the leading edge of the timeout.
78081 * @param {number} [options.maxWait]
78082 *  The maximum time `func` is allowed to be delayed before it's invoked.
78083 * @param {boolean} [options.trailing=true]
78084 *  Specify invoking on the trailing edge of the timeout.
78085 * @returns {Function} Returns the new debounced function.
78086 * @example
78087 *
78088 * // Avoid costly calculations while the window size is in flux.
78089 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
78090 *
78091 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
78092 * jQuery(element).on('click', _.debounce(sendMail, 300, {
78093 *   'leading': true,
78094 *   'trailing': false
78095 * }));
78096 *
78097 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
78098 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
78099 * var source = new EventSource('/stream');
78100 * jQuery(source).on('message', debounced);
78101 *
78102 * // Cancel the trailing debounced invocation.
78103 * jQuery(window).on('popstate', debounced.cancel);
78104 */
78105
78106function debounce(func, wait, options) {
78107  var lastArgs,
78108      lastThis,
78109      maxWait,
78110      result,
78111      timerId,
78112      lastCallTime,
78113      lastInvokeTime = 0,
78114      leading = false,
78115      maxing = false,
78116      trailing = true;
78117
78118  if (typeof func != 'function') {
78119    throw new TypeError(FUNC_ERROR_TEXT);
78120  }
78121
78122  wait = toNumber(wait) || 0;
78123
78124  if (isObject(options)) {
78125    leading = !!options.leading;
78126    maxing = 'maxWait' in options;
78127    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
78128    trailing = 'trailing' in options ? !!options.trailing : trailing;
78129  }
78130
78131  function invokeFunc(time) {
78132    var args = lastArgs,
78133        thisArg = lastThis;
78134    lastArgs = lastThis = undefined;
78135    lastInvokeTime = time;
78136    result = func.apply(thisArg, args);
78137    return result;
78138  }
78139
78140  function leadingEdge(time) {
78141    // Reset any `maxWait` timer.
78142    lastInvokeTime = time; // Start the timer for the trailing edge.
78143
78144    timerId = setTimeout(timerExpired, wait); // Invoke the leading edge.
78145
78146    return leading ? invokeFunc(time) : result;
78147  }
78148
78149  function remainingWait(time) {
78150    var timeSinceLastCall = time - lastCallTime,
78151        timeSinceLastInvoke = time - lastInvokeTime,
78152        timeWaiting = wait - timeSinceLastCall;
78153    return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
78154  }
78155
78156  function shouldInvoke(time) {
78157    var timeSinceLastCall = time - lastCallTime,
78158        timeSinceLastInvoke = time - lastInvokeTime; // Either this is the first call, activity has stopped and we're at the
78159    // trailing edge, the system time has gone backwards and we're treating
78160    // it as the trailing edge, or we've hit the `maxWait` limit.
78161
78162    return lastCallTime === undefined || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
78163  }
78164
78165  function timerExpired() {
78166    var time = now();
78167
78168    if (shouldInvoke(time)) {
78169      return trailingEdge(time);
78170    } // Restart the timer.
78171
78172
78173    timerId = setTimeout(timerExpired, remainingWait(time));
78174  }
78175
78176  function trailingEdge(time) {
78177    timerId = undefined; // Only invoke if we have `lastArgs` which means `func` has been
78178    // debounced at least once.
78179
78180    if (trailing && lastArgs) {
78181      return invokeFunc(time);
78182    }
78183
78184    lastArgs = lastThis = undefined;
78185    return result;
78186  }
78187
78188  function cancel() {
78189    if (timerId !== undefined) {
78190      clearTimeout(timerId);
78191    }
78192
78193    lastInvokeTime = 0;
78194    lastArgs = lastCallTime = lastThis = timerId = undefined;
78195  }
78196
78197  function flush() {
78198    return timerId === undefined ? result : trailingEdge(now());
78199  }
78200
78201  function debounced() {
78202    var time = now(),
78203        isInvoking = shouldInvoke(time);
78204    lastArgs = arguments;
78205    lastThis = this;
78206    lastCallTime = time;
78207
78208    if (isInvoking) {
78209      if (timerId === undefined) {
78210        return leadingEdge(lastCallTime);
78211      }
78212
78213      if (maxing) {
78214        // Handle invocations in a tight loop.
78215        clearTimeout(timerId);
78216        timerId = setTimeout(timerExpired, wait);
78217        return invokeFunc(lastCallTime);
78218      }
78219    }
78220
78221    if (timerId === undefined) {
78222      timerId = setTimeout(timerExpired, wait);
78223    }
78224
78225    return result;
78226  }
78227
78228  debounced.cancel = cancel;
78229  debounced.flush = flush;
78230  return debounced;
78231}
78232
78233module.exports = debounce;
78234
78235/***/ }),
78236
vendor: 1,518 bytes, lines 78237-78280
78237/***/ "../storefront-reference-architecture/node_modules/lodash/isObject.js":
78238/*!****************************************************************************!*\
78239  !*** ../storefront-reference-architecture/node_modules/lodash/isObject.js ***!
78240  \****************************************************************************/
78241/*! no static exports found */
78242/***/ (function(module, exports) {
78243
78244function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
78245
78246/**
78247 * Checks if `value` is the
78248 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
78249 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
78250 *
78251 * @static
78252 * @memberOf _
78253 * @since 0.1.0
78254 * @category Lang
78255 * @param {*} value The value to check.
78256 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
78257 * @example
78258 *
78259 * _.isObject({});
78260 * // => true
78261 *
78262 * _.isObject([1, 2, 3]);
78263 * // => true
78264 *
78265 * _.isObject(_.noop);
78266 * // => true
78267 *
78268 * _.isObject(null);
78269 * // => false
78270 */
78271function isObject(value) {
78272  var type = _typeof(value);
78273
78274  return value != null && (type == 'object' || type == 'function');
78275}
78276
78277module.exports = isObject;
78278
78279/***/ }),
78280
vendor: 1,414 bytes, lines 78281-78321
78281/***/ "../storefront-reference-architecture/node_modules/lodash/isObjectLike.js":
78282/*!********************************************************************************!*\
78283  !*** ../storefront-reference-architecture/node_modules/lodash/isObjectLike.js ***!
78284  \********************************************************************************/
78285/*! no static exports found */
78286/***/ (function(module, exports) {
78287
78288function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
78289
78290/**
78291 * Checks if `value` is object-like. A value is object-like if it's not `null`
78292 * and has a `typeof` result of "object".
78293 *
78294 * @static
78295 * @memberOf _
78296 * @since 4.0.0
78297 * @category Lang
78298 * @param {*} value The value to check.
78299 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
78300 * @example
78301 *
78302 * _.isObjectLike({});
78303 * // => true
78304 *
78305 * _.isObjectLike([1, 2, 3]);
78306 * // => true
78307 *
78308 * _.isObjectLike(_.noop);
78309 * // => false
78310 *
78311 * _.isObjectLike(null);
78312 * // => false
78313 */
78314function isObjectLike(value) {
78315  return value != null && _typeof(value) == 'object';
78316}
78317
78318module.exports = isObjectLike;
78319
78320/***/ }),
78321
vendor: 1,665 bytes, lines 78322-78362
78322/***/ "../storefront-reference-architecture/node_modules/lodash/isSymbol.js":
78323/*!****************************************************************************!*\
78324  !*** ../storefront-reference-architecture/node_modules/lodash/isSymbol.js ***!
78325  \****************************************************************************/
78326/*! no static exports found */
78327/***/ (function(module, exports, __webpack_require__) {
78328
78329function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
78330
78331var baseGetTag = __webpack_require__(/*! ./_baseGetTag */ "../storefront-reference-architecture/node_modules/lodash/_baseGetTag.js"),
78332    isObjectLike = __webpack_require__(/*! ./isObjectLike */ "../storefront-reference-architecture/node_modules/lodash/isObjectLike.js");
78333/** `Object#toString` result references. */
78334
78335
78336var symbolTag = '[object Symbol]';
78337/**
78338 * Checks if `value` is classified as a `Symbol` primitive or object.
78339 *
78340 * @static
78341 * @memberOf _
78342 * @since 4.0.0
78343 * @category Lang
78344 * @param {*} value The value to check.
78345 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
78346 * @example
78347 *
78348 * _.isSymbol(Symbol.iterator);
78349 * // => true
78350 *
78351 * _.isSymbol('abc');
78352 * // => false
78353 */
78354
78355function isSymbol(value) {
78356  return _typeof(value) == 'symbol' || isObjectLike(value) && baseGetTag(value) == symbolTag;
78357}
78358
78359module.exports = isSymbol;
78360
78361/***/ }),
78362
vendor: 1,013 bytes, lines 78363-78396
78363/***/ "../storefront-reference-architecture/node_modules/lodash/now.js":
78364/*!***********************************************************************!*\
78365  !*** ../storefront-reference-architecture/node_modules/lodash/now.js ***!
78366  \***********************************************************************/
78367/*! no static exports found */
78368/***/ (function(module, exports, __webpack_require__) {
78369
78370var root = __webpack_require__(/*! ./_root */ "../storefront-reference-architecture/node_modules/lodash/_root.js");
78371/**
78372 * Gets the timestamp of the number of milliseconds that have elapsed since
78373 * the Unix epoch (1 January 1970 00:00:00 UTC).
78374 *
78375 * @static
78376 * @memberOf _
78377 * @since 2.4.0
78378 * @category Date
78379 * @returns {number} Returns the timestamp.
78380 * @example
78381 *
78382 * _.defer(function(stamp) {
78383 *   console.log(_.now() - stamp);
78384 * }, _.now());
78385 * // => Logs the number of milliseconds it took for the deferred invocation.
78386 */
78387
78388
78389var now = function now() {
78390  return root.Date.now();
78391};
78392
78393module.exports = now;
78394
78395/***/ }),
78396
vendor: 2,198 bytes, lines 78397-78473
78397/***/ "../storefront-reference-architecture/node_modules/lodash/toNumber.js":
78398/*!****************************************************************************!*\
78399  !*** ../storefront-reference-architecture/node_modules/lodash/toNumber.js ***!
78400  \****************************************************************************/
78401/*! no static exports found */
78402/***/ (function(module, exports, __webpack_require__) {
78403
78404var baseTrim = __webpack_require__(/*! ./_baseTrim */ "../storefront-reference-architecture/node_modules/lodash/_baseTrim.js"),
78405    isObject = __webpack_require__(/*! ./isObject */ "../storefront-reference-architecture/node_modules/lodash/isObject.js"),
78406    isSymbol = __webpack_require__(/*! ./isSymbol */ "../storefront-reference-architecture/node_modules/lodash/isSymbol.js");
78407/** Used as references for various `Number` constants. */
78408
78409
78410var NAN = 0 / 0;
78411/** Used to detect bad signed hexadecimal string values. */
78412
78413var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
78414/** Used to detect binary string values. */
78415
78416var reIsBinary = /^0b[01]+$/i;
78417/** Used to detect octal string values. */
78418
78419var reIsOctal = /^0o[0-7]+$/i;
78420/** Built-in method references without a dependency on `root`. */
78421
78422var freeParseInt = parseInt;
78423/**
78424 * Converts `value` to a number.
78425 *
78426 * @static
78427 * @memberOf _
78428 * @since 4.0.0
78429 * @category Lang
78430 * @param {*} value The value to process.
78431 * @returns {number} Returns the number.
78432 * @example
78433 *
78434 * _.toNumber(3.2);
78435 * // => 3.2
78436 *
78437 * _.toNumber(Number.MIN_VALUE);
78438 * // => 5e-324
78439 *
78440 * _.toNumber(Infinity);
78441 * // => Infinity
78442 *
78443 * _.toNumber('3.2');
78444 * // => 3.2
78445 */
78446
78447function toNumber(value) {
78448  if (typeof value == 'number') {
78449    return value;
78450  }
78451
78452  if (isSymbol(value)) {
78453    return NAN;
78454  }
78455
78456  if (isObject(value)) {
78457    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
78458    value = isObject(other) ? other + '' : other;
78459  }
78460
78461  if (typeof value != 'string') {
78462    return value === 0 ? value : +value;
78463  }
78464
78465  value = baseTrim(value);
78466  var isBinary = reIsBinary.test(value);
78467  return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
78468}
78469
78470module.exports = toNumber;
78471
78472/***/ }),
78473
vendor: 49,678 bytes, lines 78474-80338
78474/***/ "./node_modules/node-libs-browser/node_modules/buffer/index.js":
78475/*!*********************************************************************!*\
78476  !*** ./node_modules/node-libs-browser/node_modules/buffer/index.js ***!
78477  \*********************************************************************/
78478/*! no static exports found */
78479/***/ (function(module, exports, __webpack_require__) {
78480
78481"use strict";
78482/* WEBPACK VAR INJECTION */(function(global) {/*!
78483 * The buffer module from node.js, for the browser.
78484 *
78485 * @author   Feross Aboukhadijeh <http://feross.org>
78486 * @license  MIT
78487 */
78488
78489/* eslint-disable no-proto */
78490
78491
78492var base64 = __webpack_require__(/*! base64-js */ "../storefront-reference-architecture/node_modules/base64-js/index.js");
78493
78494var ieee754 = __webpack_require__(/*! ieee754 */ "../storefront-reference-architecture/node_modules/ieee754/index.js");
78495
78496var isArray = __webpack_require__(/*! isarray */ "../storefront-reference-architecture/node_modules/isarray/index.js");
78497
78498exports.Buffer = Buffer;
78499exports.SlowBuffer = SlowBuffer;
78500exports.INSPECT_MAX_BYTES = 50;
78501/**
78502 * If `Buffer.TYPED_ARRAY_SUPPORT`:
78503 *   === true    Use Uint8Array implementation (fastest)
78504 *   === false   Use Object implementation (most compatible, even IE6)
78505 *
78506 * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
78507 * Opera 11.6+, iOS 4.2+.
78508 *
78509 * Due to various browser bugs, sometimes the Object implementation will be used even
78510 * when the browser supports typed arrays.
78511 *
78512 * Note:
78513 *
78514 *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
78515 *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
78516 *
78517 *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
78518 *
78519 *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
78520 *     incorrect length in some situations.
78521
78522 * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
78523 * get the Object implementation, which is slower but behaves correctly.
78524 */
78525
78526Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined ? global.TYPED_ARRAY_SUPPORT : typedArraySupport();
78527/*
78528 * Export kMaxLength after typed array support is determined.
78529 */
78530
78531exports.kMaxLength = kMaxLength();
78532
78533function typedArraySupport() {
78534  try {
78535    var arr = new Uint8Array(1);
78536    arr.__proto__ = {
78537      __proto__: Uint8Array.prototype,
78538      foo: function foo() {
78539        return 42;
78540      }
78541    };
78542    return arr.foo() === 42 && // typed array instances can be augmented
78543    typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
78544    arr.subarray(1, 1).byteLength === 0; // ie10 has broken `subarray`
78545  } catch (e) {
78546    return false;
78547  }
78548}
78549
78550function kMaxLength() {
78551  return Buffer.TYPED_ARRAY_SUPPORT ? 0x7fffffff : 0x3fffffff;
78552}
78553
78554function createBuffer(that, length) {
78555  if (kMaxLength() < length) {
78556    throw new RangeError('Invalid typed array length');
78557  }
78558
78559  if (Buffer.TYPED_ARRAY_SUPPORT) {
78560    // Return an augmented `Uint8Array` instance, for best performance
78561    that = new Uint8Array(length);
78562    that.__proto__ = Buffer.prototype;
78563  } else {
78564    // Fallback: Return an object instance of the Buffer class
78565    if (that === null) {
78566      that = new Buffer(length);
78567    }
78568
78569    that.length = length;
78570  }
78571
78572  return that;
78573}
78574/**
78575 * The Buffer constructor returns instances of `Uint8Array` that have their
78576 * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
78577 * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
78578 * and the `Uint8Array` methods. Square bracket notation works as expected -- it
78579 * returns a single octet.
78580 *
78581 * The `Uint8Array` prototype remains unmodified.
78582 */
78583
78584
78585function Buffer(arg, encodingOrOffset, length) {
78586  if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) {
78587    return new Buffer(arg, encodingOrOffset, length);
78588  } // Common case.
78589
78590
78591  if (typeof arg === 'number') {
78592    if (typeof encodingOrOffset === 'string') {
78593      throw new Error('If encoding is specified then the first argument must be a string');
78594    }
78595
78596    return allocUnsafe(this, arg);
78597  }
78598
78599  return from(this, arg, encodingOrOffset, length);
78600}
78601
78602Buffer.poolSize = 8192; // not used by this implementation
78603// TODO: Legacy, not needed anymore. Remove in next major version.
78604
78605Buffer._augment = function (arr) {
78606  arr.__proto__ = Buffer.prototype;
78607  return arr;
78608};
78609
78610function from(that, value, encodingOrOffset, length) {
78611  if (typeof value === 'number') {
78612    throw new TypeError('"value" argument must not be a number');
78613  }
78614
78615  if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
78616    return fromArrayBuffer(that, value, encodingOrOffset, length);
78617  }
78618
78619  if (typeof value === 'string') {
78620    return fromString(that, value, encodingOrOffset);
78621  }
78622
78623  return fromObject(that, value);
78624}
78625/**
78626 * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
78627 * if value is a number.
78628 * Buffer.from(str[, encoding])
78629 * Buffer.from(array)
78630 * Buffer.from(buffer)
78631 * Buffer.from(arrayBuffer[, byteOffset[, length]])
78632 **/
78633
78634
78635Buffer.from = function (value, encodingOrOffset, length) {
78636  return from(null, value, encodingOrOffset, length);
78637};
78638
78639if (Buffer.TYPED_ARRAY_SUPPORT) {
78640  Buffer.prototype.__proto__ = Uint8Array.prototype;
78641  Buffer.__proto__ = Uint8Array;
78642
78643  if (typeof Symbol !== 'undefined' && Symbol.species && Buffer[Symbol.species] === Buffer) {
78644    // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97
78645    Object.defineProperty(Buffer, Symbol.species, {
78646      value: null,
78647      configurable: true
78648    });
78649  }
78650}
78651
78652function assertSize(size) {
78653  if (typeof size !== 'number') {
78654    throw new TypeError('"size" argument must be a number');
78655  } else if (size < 0) {
78656    throw new RangeError('"size" argument must not be negative');
78657  }
78658}
78659
78660function alloc(that, size, fill, encoding) {
78661  assertSize(size);
78662
78663  if (size <= 0) {
78664    return createBuffer(that, size);
78665  }
78666
78667  if (fill !== undefined) {
78668    // Only pay attention to encoding if it's a string. This
78669    // prevents accidentally sending in a number that would
78670    // be interpretted as a start offset.
78671    return typeof encoding === 'string' ? createBuffer(that, size).fill(fill, encoding) : createBuffer(that, size).fill(fill);
78672  }
78673
78674  return createBuffer(that, size);
78675}
78676/**
78677 * Creates a new filled Buffer instance.
78678 * alloc(size[, fill[, encoding]])
78679 **/
78680
78681
78682Buffer.alloc = function (size, fill, encoding) {
78683  return alloc(null, size, fill, encoding);
78684};
78685
78686function allocUnsafe(that, size) {
78687  assertSize(size);
78688  that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
78689
78690  if (!Buffer.TYPED_ARRAY_SUPPORT) {
78691    for (var i = 0; i < size; ++i) {
78692      that[i] = 0;
78693    }
78694  }
78695
78696  return that;
78697}
78698/**
78699 * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
78700 * */
78701
78702
78703Buffer.allocUnsafe = function (size) {
78704  return allocUnsafe(null, size);
78705};
78706/**
78707 * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
78708 */
78709
78710
78711Buffer.allocUnsafeSlow = function (size) {
78712  return allocUnsafe(null, size);
78713};
78714
78715function fromString(that, string, encoding) {
78716  if (typeof encoding !== 'string' || encoding === '') {
78717    encoding = 'utf8';
78718  }
78719
78720  if (!Buffer.isEncoding(encoding)) {
78721    throw new TypeError('"encoding" must be a valid string encoding');
78722  }
78723
78724  var length = byteLength(string, encoding) | 0;
78725  that = createBuffer(that, length);
78726  var actual = that.write(string, encoding);
78727
78728  if (actual !== length) {
78729    // Writing a hex string, for example, that contains invalid characters will
78730    // cause everything after the first invalid character to be ignored. (e.g.
78731    // 'abxxcd' will be treated as 'ab')
78732    that = that.slice(0, actual);
78733  }
78734
78735  return that;
78736}
78737
78738function fromArrayLike(that, array) {
78739  var length = array.length < 0 ? 0 : checked(array.length) | 0;
78740  that = createBuffer(that, length);
78741
78742  for (var i = 0; i < length; i += 1) {
78743    that[i] = array[i] & 255;
78744  }
78745
78746  return that;
78747}
78748
78749function fromArrayBuffer(that, array, byteOffset, length) {
78750  array.byteLength; // this throws if `array` is not a valid ArrayBuffer
78751
78752  if (byteOffset < 0 || array.byteLength < byteOffset) {
78753    throw new RangeError('\'offset\' is out of bounds');
78754  }
78755
78756  if (array.byteLength < byteOffset + (length || 0)) {
78757    throw new RangeError('\'length\' is out of bounds');
78758  }
78759
78760  if (byteOffset === undefined && length === undefined) {
78761    array = new Uint8Array(array);
78762  } else if (length === undefined) {
78763    array = new Uint8Array(array, byteOffset);
78764  } else {
78765    array = new Uint8Array(array, byteOffset, length);
78766  }
78767
78768  if (Buffer.TYPED_ARRAY_SUPPORT) {
78769    // Return an augmented `Uint8Array` instance, for best performance
78770    that = array;
78771    that.__proto__ = Buffer.prototype;
78772  } else {
78773    // Fallback: Return an object instance of the Buffer class
78774    that = fromArrayLike(that, array);
78775  }
78776
78777  return that;
78778}
78779
78780function fromObject(that, obj) {
78781  if (Buffer.isBuffer(obj)) {
78782    var len = checked(obj.length) | 0;
78783    that = createBuffer(that, len);
78784
78785    if (that.length === 0) {
78786      return that;
78787    }
78788
78789    obj.copy(that, 0, 0, len);
78790    return that;
78791  }
78792
78793  if (obj) {
78794    if (typeof ArrayBuffer !== 'undefined' && obj.buffer instanceof ArrayBuffer || 'length' in obj) {
78795      if (typeof obj.length !== 'number' || isnan(obj.length)) {
78796        return createBuffer(that, 0);
78797      }
78798
78799      return fromArrayLike(that, obj);
78800    }
78801
78802    if (obj.type === 'Buffer' && isArray(obj.data)) {
78803      return fromArrayLike(that, obj.data);
78804    }
78805  }
78806
78807  throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.');
78808}
78809
78810function checked(length) {
78811  // Note: cannot use `length < kMaxLength()` here because that fails when
78812  // length is NaN (which is otherwise coerced to zero.)
78813  if (length >= kMaxLength()) {
78814    throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength().toString(16) + ' bytes');
78815  }
78816
78817  return length | 0;
78818}
78819
78820function SlowBuffer(length) {
78821  if (+length != length) {
78822    // eslint-disable-line eqeqeq
78823    length = 0;
78824  }
78825
78826  return Buffer.alloc(+length);
78827}
78828
78829Buffer.isBuffer = function isBuffer(b) {
78830  return !!(b != null && b._isBuffer);
78831};
78832
78833Buffer.compare = function compare(a, b) {
78834  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
78835    throw new TypeError('Arguments must be Buffers');
78836  }
78837
78838  if (a === b) return 0;
78839  var x = a.length;
78840  var y = b.length;
78841
78842  for (var i = 0, len = Math.min(x, y); i < len; ++i) {
78843    if (a[i] !== b[i]) {
78844      x = a[i];
78845      y = b[i];
78846      break;
78847    }
78848  }
78849
78850  if (x < y) return -1;
78851  if (y < x) return 1;
78852  return 0;
78853};
78854
78855Buffer.isEncoding = function isEncoding(encoding) {
78856  switch (String(encoding).toLowerCase()) {
78857    case 'hex':
78858    case 'utf8':
78859    case 'utf-8':
78860    case 'ascii':
78861    case 'latin1':
78862    case 'binary':
78863    case 'base64':
78864    case 'ucs2':
78865    case 'ucs-2':
78866    case 'utf16le':
78867    case 'utf-16le':
78868      return true;
78869
78870    default:
78871      return false;
78872  }
78873};
78874
78875Buffer.concat = function concat(list, length) {
78876  if (!isArray(list)) {
78877    throw new TypeError('"list" argument must be an Array of Buffers');
78878  }
78879
78880  if (list.length === 0) {
78881    return Buffer.alloc(0);
78882  }
78883
78884  var i;
78885
78886  if (length === undefined) {
78887    length = 0;
78888
78889    for (i = 0; i < list.length; ++i) {
78890      length += list[i].length;
78891    }
78892  }
78893
78894  var buffer = Buffer.allocUnsafe(length);
78895  var pos = 0;
78896
78897  for (i = 0; i < list.length; ++i) {
78898    var buf = list[i];
78899
78900    if (!Buffer.isBuffer(buf)) {
78901      throw new TypeError('"list" argument must be an Array of Buffers');
78902    }
78903
78904    buf.copy(buffer, pos);
78905    pos += buf.length;
78906  }
78907
78908  return buffer;
78909};
78910
78911function byteLength(string, encoding) {
78912  if (Buffer.isBuffer(string)) {
78913    return string.length;
78914  }
78915
78916  if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
78917    return string.byteLength;
78918  }
78919
78920  if (typeof string !== 'string') {
78921    string = '' + string;
78922  }
78923
78924  var len = string.length;
78925  if (len === 0) return 0; // Use a for loop to avoid recursion
78926
78927  var loweredCase = false;
78928
78929  for (;;) {
78930    switch (encoding) {
78931      case 'ascii':
78932      case 'latin1':
78933      case 'binary':
78934        return len;
78935
78936      case 'utf8':
78937      case 'utf-8':
78938      case undefined:
78939        return utf8ToBytes(string).length;
78940
78941      case 'ucs2':
78942      case 'ucs-2':
78943      case 'utf16le':
78944      case 'utf-16le':
78945        return len * 2;
78946
78947      case 'hex':
78948        return len >>> 1;
78949
78950      case 'base64':
78951        return base64ToBytes(string).length;
78952
78953      default:
78954        if (loweredCase) return utf8ToBytes(string).length; // assume utf8
78955
78956        encoding = ('' + encoding).toLowerCase();
78957        loweredCase = true;
78958    }
78959  }
78960}
78961
78962Buffer.byteLength = byteLength;
78963
78964function slowToString(encoding, start, end) {
78965  var loweredCase = false; // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
78966  // property of a typed array.
78967  // This behaves neither like String nor Uint8Array in that we set start/end
78968  // to their upper/lower bounds if the value passed is out of range.
78969  // undefined is handled specially as per ECMA-262 6th Edition,
78970  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
78971
78972  if (start === undefined || start < 0) {
78973    start = 0;
78974  } // Return early if start > this.length. Done here to prevent potential uint32
78975  // coercion fail below.
78976
78977
78978  if (start > this.length) {
78979    return '';
78980  }
78981
78982  if (end === undefined || end > this.length) {
78983    end = this.length;
78984  }
78985
78986  if (end <= 0) {
78987    return '';
78988  } // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
78989
78990
78991  end >>>= 0;
78992  start >>>= 0;
78993
78994  if (end <= start) {
78995    return '';
78996  }
78997
78998  if (!encoding) encoding = 'utf8';
78999
79000  while (true) {
79001    switch (encoding) {
79002      case 'hex':
79003        return hexSlice(this, start, end);
79004
79005      case 'utf8':
79006      case 'utf-8':
79007        return utf8Slice(this, start, end);
79008
79009      case 'ascii':
79010        return asciiSlice(this, start, end);
79011
79012      case 'latin1':
79013      case 'binary':
79014        return latin1Slice(this, start, end);
79015
79016      case 'base64':
79017        return base64Slice(this, start, end);
79018
79019      case 'ucs2':
79020      case 'ucs-2':
79021      case 'utf16le':
79022      case 'utf-16le':
79023        return utf16leSlice(this, start, end);
79024
79025      default:
79026        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
79027        encoding = (encoding + '').toLowerCase();
79028        loweredCase = true;
79029    }
79030  }
79031} // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
79032// Buffer instances.
79033
79034
79035Buffer.prototype._isBuffer = true;
79036
79037function swap(b, n, m) {
79038  var i = b[n];
79039  b[n] = b[m];
79040  b[m] = i;
79041}
79042
79043Buffer.prototype.swap16 = function swap16() {
79044  var len = this.length;
79045
79046  if (len % 2 !== 0) {
79047    throw new RangeError('Buffer size must be a multiple of 16-bits');
79048  }
79049
79050  for (var i = 0; i < len; i += 2) {
79051    swap(this, i, i + 1);
79052  }
79053
79054  return this;
79055};
79056
79057Buffer.prototype.swap32 = function swap32() {
79058  var len = this.length;
79059
79060  if (len % 4 !== 0) {
79061    throw new RangeError('Buffer size must be a multiple of 32-bits');
79062  }
79063
79064  for (var i = 0; i < len; i += 4) {
79065    swap(this, i, i + 3);
79066    swap(this, i + 1, i + 2);
79067  }
79068
79069  return this;
79070};
79071
79072Buffer.prototype.swap64 = function swap64() {
79073  var len = this.length;
79074
79075  if (len % 8 !== 0) {
79076    throw new RangeError('Buffer size must be a multiple of 64-bits');
79077  }
79078
79079  for (var i = 0; i < len; i += 8) {
79080    swap(this, i, i + 7);
79081    swap(this, i + 1, i + 6);
79082    swap(this, i + 2, i + 5);
79083    swap(this, i + 3, i + 4);
79084  }
79085
79086  return this;
79087};
79088
79089Buffer.prototype.toString = function toString() {
79090  var length = this.length | 0;
79091  if (length === 0) return '';
79092  if (arguments.length === 0) return utf8Slice(this, 0, length);
79093  return slowToString.apply(this, arguments);
79094};
79095
79096Buffer.prototype.equals = function equals(b) {
79097  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');
79098  if (this === b) return true;
79099  return Buffer.compare(this, b) === 0;
79100};
79101
79102Buffer.prototype.inspect = function inspect() {
79103  var str = '';
79104  var max = exports.INSPECT_MAX_BYTES;
79105
79106  if (this.length > 0) {
79107    str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
79108    if (this.length > max) str += ' ... ';
79109  }
79110
79111  return '<Buffer ' + str + '>';
79112};
79113
79114Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
79115  if (!Buffer.isBuffer(target)) {
79116    throw new TypeError('Argument must be a Buffer');
79117  }
79118
79119  if (start === undefined) {
79120    start = 0;
79121  }
79122
79123  if (end === undefined) {
79124    end = target ? target.length : 0;
79125  }
79126
79127  if (thisStart === undefined) {
79128    thisStart = 0;
79129  }
79130
79131  if (thisEnd === undefined) {
79132    thisEnd = this.length;
79133  }
79134
79135  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
79136    throw new RangeError('out of range index');
79137  }
79138
79139  if (thisStart >= thisEnd && start >= end) {
79140    return 0;
79141  }
79142
79143  if (thisStart >= thisEnd) {
79144    return -1;
79145  }
79146
79147  if (start >= end) {
79148    return 1;
79149  }
79150
79151  start >>>= 0;
79152  end >>>= 0;
79153  thisStart >>>= 0;
79154  thisEnd >>>= 0;
79155  if (this === target) return 0;
79156  var x = thisEnd - thisStart;
79157  var y = end - start;
79158  var len = Math.min(x, y);
79159  var thisCopy = this.slice(thisStart, thisEnd);
79160  var targetCopy = target.slice(start, end);
79161
79162  for (var i = 0; i < len; ++i) {
79163    if (thisCopy[i] !== targetCopy[i]) {
79164      x = thisCopy[i];
79165      y = targetCopy[i];
79166      break;
79167    }
79168  }
79169
79170  if (x < y) return -1;
79171  if (y < x) return 1;
79172  return 0;
79173}; // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
79174// OR the last index of `val` in `buffer` at offset <= `byteOffset`.
79175//
79176// Arguments:
79177// - buffer - a Buffer to search
79178// - val - a string, Buffer, or number
79179// - byteOffset - an index into `buffer`; will be clamped to an int32
79180// - encoding - an optional encoding, relevant is val is a string
79181// - dir - true for indexOf, false for lastIndexOf
79182
79183
79184function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
79185  // Empty buffer means no match
79186  if (buffer.length === 0) return -1; // Normalize byteOffset
79187
79188  if (typeof byteOffset === 'string') {
79189    encoding = byteOffset;
79190    byteOffset = 0;
79191  } else if (byteOffset > 0x7fffffff) {
79192    byteOffset = 0x7fffffff;
79193  } else if (byteOffset < -0x80000000) {
79194    byteOffset = -0x80000000;
79195  }
79196
79197  byteOffset = +byteOffset; // Coerce to Number.
79198
79199  if (isNaN(byteOffset)) {
79200    // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
79201    byteOffset = dir ? 0 : buffer.length - 1;
79202  } // Normalize byteOffset: negative offsets start from the end of the buffer
79203
79204
79205  if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
79206
79207  if (byteOffset >= buffer.length) {
79208    if (dir) return -1;else byteOffset = buffer.length - 1;
79209  } else if (byteOffset < 0) {
79210    if (dir) byteOffset = 0;else return -1;
79211  } // Normalize val
79212
79213
79214  if (typeof val === 'string') {
79215    val = Buffer.from(val, encoding);
79216  } // Finally, search either indexOf (if dir is true) or lastIndexOf
79217
79218
79219  if (Buffer.isBuffer(val)) {
79220    // Special case: looking for empty string/buffer always fails
79221    if (val.length === 0) {
79222      return -1;
79223    }
79224
79225    return arrayIndexOf(buffer, val, byteOffset, encoding, dir);
79226  } else if (typeof val === 'number') {
79227    val = val & 0xFF; // Search for a byte value [0-255]
79228
79229    if (Buffer.TYPED_ARRAY_SUPPORT && typeof Uint8Array.prototype.indexOf === 'function') {
79230      if (dir) {
79231        return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
79232      } else {
79233        return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
79234      }
79235    }
79236
79237    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);
79238  }
79239
79240  throw new TypeError('val must be string, number or Buffer');
79241}
79242
79243function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
79244  var indexSize = 1;
79245  var arrLength = arr.length;
79246  var valLength = val.length;
79247
79248  if (encoding !== undefined) {
79249    encoding = String(encoding).toLowerCase();
79250
79251    if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {
79252      if (arr.length < 2 || val.length < 2) {
79253        return -1;
79254      }
79255
79256      indexSize = 2;
79257      arrLength /= 2;
79258      valLength /= 2;
79259      byteOffset /= 2;
79260    }
79261  }
79262
79263  function read(buf, i) {
79264    if (indexSize === 1) {
79265      return buf[i];
79266    } else {
79267      return buf.readUInt16BE(i * indexSize);
79268    }
79269  }
79270
79271  var i;
79272
79273  if (dir) {
79274    var foundIndex = -1;
79275
79276    for (i = byteOffset; i < arrLength; i++) {
79277      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
79278        if (foundIndex === -1) foundIndex = i;
79279        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;
79280      } else {
79281        if (foundIndex !== -1) i -= i - foundIndex;
79282        foundIndex = -1;
79283      }
79284    }
79285  } else {
79286    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
79287
79288    for (i = byteOffset; i >= 0; i--) {
79289      var found = true;
79290
79291      for (var j = 0; j < valLength; j++) {
79292        if (read(arr, i + j) !== read(val, j)) {
79293          found = false;
79294          break;
79295        }
79296      }
79297
79298      if (found) return i;
79299    }
79300  }
79301
79302  return -1;
79303}
79304
79305Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
79306  return this.indexOf(val, byteOffset, encoding) !== -1;
79307};
79308
79309Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
79310  return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
79311};
79312
79313Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
79314  return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
79315};
79316
79317function hexWrite(buf, string, offset, length) {
79318  offset = Number(offset) || 0;
79319  var remaining = buf.length - offset;
79320
79321  if (!length) {
79322    length = remaining;
79323  } else {
79324    length = Number(length);
79325
79326    if (length > remaining) {
79327      length = remaining;
79328    }
79329  } // must be an even number of digits
79330
79331
79332  var strLen = string.length;
79333  if (strLen % 2 !== 0) throw new TypeError('Invalid hex string');
79334
79335  if (length > strLen / 2) {
79336    length = strLen / 2;
79337  }
79338
79339  for (var i = 0; i < length; ++i) {
79340    var parsed = parseInt(string.substr(i * 2, 2), 16);
79341    if (isNaN(parsed)) return i;
79342    buf[offset + i] = parsed;
79343  }
79344
79345  return i;
79346}
79347
79348function utf8Write(buf, string, offset, length) {
79349  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
79350}
79351
79352function asciiWrite(buf, string, offset, length) {
79353  return blitBuffer(asciiToBytes(string), buf, offset, length);
79354}
79355
79356function latin1Write(buf, string, offset, length) {
79357  return asciiWrite(buf, string, offset, length);
79358}
79359
79360function base64Write(buf, string, offset, length) {
79361  return blitBuffer(base64ToBytes(string), buf, offset, length);
79362}
79363
79364function ucs2Write(buf, string, offset, length) {
79365  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
79366}
79367
79368Buffer.prototype.write = function write(string, offset, length, encoding) {
79369  // Buffer#write(string)
79370  if (offset === undefined) {
79371    encoding = 'utf8';
79372    length = this.length;
79373    offset = 0; // Buffer#write(string, encoding)
79374  } else if (length === undefined && typeof offset === 'string') {
79375    encoding = offset;
79376    length = this.length;
79377    offset = 0; // Buffer#write(string, offset[, length][, encoding])
79378  } else if (isFinite(offset)) {
79379    offset = offset | 0;
79380
79381    if (isFinite(length)) {
79382      length = length | 0;
79383      if (encoding === undefined) encoding = 'utf8';
79384    } else {
79385      encoding = length;
79386      length = undefined;
79387    } // legacy write(string, encoding, offset, length) - remove in v0.13
79388
79389  } else {
79390    throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');
79391  }
79392
79393  var remaining = this.length - offset;
79394  if (length === undefined || length > remaining) length = remaining;
79395
79396  if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
79397    throw new RangeError('Attempt to write outside buffer bounds');
79398  }
79399
79400  if (!encoding) encoding = 'utf8';
79401  var loweredCase = false;
79402
79403  for (;;) {
79404    switch (encoding) {
79405      case 'hex':
79406        return hexWrite(this, string, offset, length);
79407
79408      case 'utf8':
79409      case 'utf-8':
79410        return utf8Write(this, string, offset, length);
79411
79412      case 'ascii':
79413        return asciiWrite(this, string, offset, length);
79414
79415      case 'latin1':
79416      case 'binary':
79417        return latin1Write(this, string, offset, length);
79418
79419      case 'base64':
79420        // Warning: maxLength not taken into account in base64Write
79421        return base64Write(this, string, offset, length);
79422
79423      case 'ucs2':
79424      case 'ucs-2':
79425      case 'utf16le':
79426      case 'utf-16le':
79427        return ucs2Write(this, string, offset, length);
79428
79429      default:
79430        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
79431        encoding = ('' + encoding).toLowerCase();
79432        loweredCase = true;
79433    }
79434  }
79435};
79436
79437Buffer.prototype.toJSON = function toJSON() {
79438  return {
79439    type: 'Buffer',
79440    data: Array.prototype.slice.call(this._arr || this, 0)
79441  };
79442};
79443
79444function base64Slice(buf, start, end) {
79445  if (start === 0 && end === buf.length) {
79446    return base64.fromByteArray(buf);
79447  } else {
79448    return base64.fromByteArray(buf.slice(start, end));
79449  }
79450}
79451
79452function utf8Slice(buf, start, end) {
79453  end = Math.min(buf.length, end);
79454  var res = [];
79455  var i = start;
79456
79457  while (i < end) {
79458    var firstByte = buf[i];
79459    var codePoint = null;
79460    var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;
79461
79462    if (i + bytesPerSequence <= end) {
79463      var secondByte, thirdByte, fourthByte, tempCodePoint;
79464
79465      switch (bytesPerSequence) {
79466        case 1:
79467          if (firstByte < 0x80) {
79468            codePoint = firstByte;
79469          }
79470
79471          break;
79472
79473        case 2:
79474          secondByte = buf[i + 1];
79475
79476          if ((secondByte & 0xC0) === 0x80) {
79477            tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;
79478
79479            if (tempCodePoint > 0x7F) {
79480              codePoint = tempCodePoint;
79481            }
79482          }
79483
79484          break;
79485
79486        case 3:
79487          secondByte = buf[i + 1];
79488          thirdByte = buf[i + 2];
79489
79490          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
79491            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;
79492
79493            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
79494              codePoint = tempCodePoint;
79495            }
79496          }
79497
79498          break;
79499
79500        case 4:
79501          secondByte = buf[i + 1];
79502          thirdByte = buf[i + 2];
79503          fourthByte = buf[i + 3];
79504
79505          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
79506            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;
79507
79508            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
79509              codePoint = tempCodePoint;
79510            }
79511          }
79512
79513      }
79514    }
79515
79516    if (codePoint === null) {
79517      // we did not generate a valid codePoint so insert a
79518      // replacement char (U+FFFD) and advance only 1 byte
79519      codePoint = 0xFFFD;
79520      bytesPerSequence = 1;
79521    } else if (codePoint > 0xFFFF) {
79522      // encode to utf16 (surrogate pair dance)
79523      codePoint -= 0x10000;
79524      res.push(codePoint >>> 10 & 0x3FF | 0xD800);
79525      codePoint = 0xDC00 | codePoint & 0x3FF;
79526    }
79527
79528    res.push(codePoint);
79529    i += bytesPerSequence;
79530  }
79531
79532  return decodeCodePointsArray(res);
79533} // Based on http://stackoverflow.com/a/22747272/680742, the browser with
79534// the lowest limit is Chrome, with 0x10000 args.
79535// We go 1 magnitude less, for safety
79536
79537
79538var MAX_ARGUMENTS_LENGTH = 0x1000;
79539
79540function decodeCodePointsArray(codePoints) {
79541  var len = codePoints.length;
79542
79543  if (len <= MAX_ARGUMENTS_LENGTH) {
79544    return String.fromCharCode.apply(String, codePoints); // avoid extra slice()
79545  } // Decode in chunks to avoid "call stack size exceeded".
79546
79547
79548  var res = '';
79549  var i = 0;
79550
79551  while (i < len) {
79552    res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));
79553  }
79554
79555  return res;
79556}
79557
79558function asciiSlice(buf, start, end) {
79559  var ret = '';
79560  end = Math.min(buf.length, end);
79561
79562  for (var i = start; i < end; ++i) {
79563    ret += String.fromCharCode(buf[i] & 0x7F);
79564  }
79565
79566  return ret;
79567}
79568
79569function latin1Slice(buf, start, end) {
79570  var ret = '';
79571  end = Math.min(buf.length, end);
79572
79573  for (var i = start; i < end; ++i) {
79574    ret += String.fromCharCode(buf[i]);
79575  }
79576
79577  return ret;
79578}
79579
79580function hexSlice(buf, start, end) {
79581  var len = buf.length;
79582  if (!start || start < 0) start = 0;
79583  if (!end || end < 0 || end > len) end = len;
79584  var out = '';
79585
79586  for (var i = start; i < end; ++i) {
79587    out += toHex(buf[i]);
79588  }
79589
79590  return out;
79591}
79592
79593function utf16leSlice(buf, start, end) {
79594  var bytes = buf.slice(start, end);
79595  var res = '';
79596
79597  for (var i = 0; i < bytes.length; i += 2) {
79598    res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
79599  }
79600
79601  return res;
79602}
79603
79604Buffer.prototype.slice = function slice(start, end) {
79605  var len = this.length;
79606  start = ~~start;
79607  end = end === undefined ? len : ~~end;
79608
79609  if (start < 0) {
79610    start += len;
79611    if (start < 0) start = 0;
79612  } else if (start > len) {
79613    start = len;
79614  }
79615
79616  if (end < 0) {
79617    end += len;
79618    if (end < 0) end = 0;
79619  } else if (end > len) {
79620    end = len;
79621  }
79622
79623  if (end < start) end = start;
79624  var newBuf;
79625
79626  if (Buffer.TYPED_ARRAY_SUPPORT) {
79627    newBuf = this.subarray(start, end);
79628    newBuf.__proto__ = Buffer.prototype;
79629  } else {
79630    var sliceLen = end - start;
79631    newBuf = new Buffer(sliceLen, undefined);
79632
79633    for (var i = 0; i < sliceLen; ++i) {
79634      newBuf[i] = this[i + start];
79635    }
79636  }
79637
79638  return newBuf;
79639};
79640/*
79641 * Need to make sure that buffer isn't trying to write out of bounds.
79642 */
79643
79644
79645function checkOffset(offset, ext, length) {
79646  if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');
79647  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');
79648}
79649
79650Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {
79651  offset = offset | 0;
79652  byteLength = byteLength | 0;
79653  if (!noAssert) checkOffset(offset, byteLength, this.length);
79654  var val = this[offset];
79655  var mul = 1;
79656  var i = 0;
79657
79658  while (++i < byteLength && (mul *= 0x100)) {
79659    val += this[offset + i] * mul;
79660  }
79661
79662  return val;
79663};
79664
79665Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {
79666  offset = offset | 0;
79667  byteLength = byteLength | 0;
79668
79669  if (!noAssert) {
79670    checkOffset(offset, byteLength, this.length);
79671  }
79672
79673  var val = this[offset + --byteLength];
79674  var mul = 1;
79675
79676  while (byteLength > 0 && (mul *= 0x100)) {
79677    val += this[offset + --byteLength] * mul;
79678  }
79679
79680  return val;
79681};
79682
79683Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {
79684  if (!noAssert) checkOffset(offset, 1, this.length);
79685  return this[offset];
79686};
79687
79688Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
79689  if (!noAssert) checkOffset(offset, 2, this.length);
79690  return this[offset] | this[offset + 1] << 8;
79691};
79692
79693Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
79694  if (!noAssert) checkOffset(offset, 2, this.length);
79695  return this[offset] << 8 | this[offset + 1];
79696};
79697
79698Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
79699  if (!noAssert) checkOffset(offset, 4, this.length);
79700  return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;
79701};
79702
79703Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
79704  if (!noAssert) checkOffset(offset, 4, this.length);
79705  return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
79706};
79707
79708Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {
79709  offset = offset | 0;
79710  byteLength = byteLength | 0;
79711  if (!noAssert) checkOffset(offset, byteLength, this.length);
79712  var val = this[offset];
79713  var mul = 1;
79714  var i = 0;
79715
79716  while (++i < byteLength && (mul *= 0x100)) {
79717    val += this[offset + i] * mul;
79718  }
79719
79720  mul *= 0x80;
79721  if (val >= mul) val -= Math.pow(2, 8 * byteLength);
79722  return val;
79723};
79724
79725Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {
79726  offset = offset | 0;
79727  byteLength = byteLength | 0;
79728  if (!noAssert) checkOffset(offset, byteLength, this.length);
79729  var i = byteLength;
79730  var mul = 1;
79731  var val = this[offset + --i];
79732
79733  while (i > 0 && (mul *= 0x100)) {
79734    val += this[offset + --i] * mul;
79735  }
79736
79737  mul *= 0x80;
79738  if (val >= mul) val -= Math.pow(2, 8 * byteLength);
79739  return val;
79740};
79741
79742Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {
79743  if (!noAssert) checkOffset(offset, 1, this.length);
79744  if (!(this[offset] & 0x80)) return this[offset];
79745  return (0xff - this[offset] + 1) * -1;
79746};
79747
79748Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
79749  if (!noAssert) checkOffset(offset, 2, this.length);
79750  var val = this[offset] | this[offset + 1] << 8;
79751  return val & 0x8000 ? val | 0xFFFF0000 : val;
79752};
79753
79754Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
79755  if (!noAssert) checkOffset(offset, 2, this.length);
79756  var val = this[offset + 1] | this[offset] << 8;
79757  return val & 0x8000 ? val | 0xFFFF0000 : val;
79758};
79759
79760Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
79761  if (!noAssert) checkOffset(offset, 4, this.length);
79762  return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
79763};
79764
79765Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
79766  if (!noAssert) checkOffset(offset, 4, this.length);
79767  return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
79768};
79769
79770Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
79771  if (!noAssert) checkOffset(offset, 4, this.length);
79772  return ieee754.read(this, offset, true, 23, 4);
79773};
79774
79775Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
79776  if (!noAssert) checkOffset(offset, 4, this.length);
79777  return ieee754.read(this, offset, false, 23, 4);
79778};
79779
79780Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
79781  if (!noAssert) checkOffset(offset, 8, this.length);
79782  return ieee754.read(this, offset, true, 52, 8);
79783};
79784
79785Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
79786  if (!noAssert) checkOffset(offset, 8, this.length);
79787  return ieee754.read(this, offset, false, 52, 8);
79788};
79789
79790function checkInt(buf, value, offset, ext, max, min) {
79791  if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance');
79792  if (value > max || value < min) throw new RangeError('"value" argument is out of bounds');
79793  if (offset + ext > buf.length) throw new RangeError('Index out of range');
79794}
79795
79796Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {
79797  value = +value;
79798  offset = offset | 0;
79799  byteLength = byteLength | 0;
79800
79801  if (!noAssert) {
79802    var maxBytes = Math.pow(2, 8 * byteLength) - 1;
79803    checkInt(this, value, offset, byteLength, maxBytes, 0);
79804  }
79805
79806  var mul = 1;
79807  var i = 0;
79808  this[offset] = value & 0xFF;
79809
79810  while (++i < byteLength && (mul *= 0x100)) {
79811    this[offset + i] = value / mul & 0xFF;
79812  }
79813
79814  return offset + byteLength;
79815};
79816
79817Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {
79818  value = +value;
79819  offset = offset | 0;
79820  byteLength = byteLength | 0;
79821
79822  if (!noAssert) {
79823    var maxBytes = Math.pow(2, 8 * byteLength) - 1;
79824    checkInt(this, value, offset, byteLength, maxBytes, 0);
79825  }
79826
79827  var i = byteLength - 1;
79828  var mul = 1;
79829  this[offset + i] = value & 0xFF;
79830
79831  while (--i >= 0 && (mul *= 0x100)) {
79832    this[offset + i] = value / mul & 0xFF;
79833  }
79834
79835  return offset + byteLength;
79836};
79837
79838Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
79839  value = +value;
79840  offset = offset | 0;
79841  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
79842  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
79843  this[offset] = value & 0xff;
79844  return offset + 1;
79845};
79846
79847function objectWriteUInt16(buf, value, offset, littleEndian) {
79848  if (value < 0) value = 0xffff + value + 1;
79849
79850  for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
79851    buf[offset + i] = (value & 0xff << 8 * (littleEndian ? i : 1 - i)) >>> (littleEndian ? i : 1 - i) * 8;
79852  }
79853}
79854
79855Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
79856  value = +value;
79857  offset = offset | 0;
79858  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
79859
79860  if (Buffer.TYPED_ARRAY_SUPPORT) {
79861    this[offset] = value & 0xff;
79862    this[offset + 1] = value >>> 8;
79863  } else {
79864    objectWriteUInt16(this, value, offset, true);
79865  }
79866
79867  return offset + 2;
79868};
79869
79870Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
79871  value = +value;
79872  offset = offset | 0;
79873  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
79874
79875  if (Buffer.TYPED_ARRAY_SUPPORT) {
79876    this[offset] = value >>> 8;
79877    this[offset + 1] = value & 0xff;
79878  } else {
79879    objectWriteUInt16(this, value, offset, false);
79880  }
79881
79882  return offset + 2;
79883};
79884
79885function objectWriteUInt32(buf, value, offset, littleEndian) {
79886  if (value < 0) value = 0xffffffff + value + 1;
79887
79888  for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
79889    buf[offset + i] = value >>> (littleEndian ? i : 3 - i) * 8 & 0xff;
79890  }
79891}
79892
79893Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
79894  value = +value;
79895  offset = offset | 0;
79896  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
79897
79898  if (Buffer.TYPED_ARRAY_SUPPORT) {
79899    this[offset + 3] = value >>> 24;
79900    this[offset + 2] = value >>> 16;
79901    this[offset + 1] = value >>> 8;
79902    this[offset] = value & 0xff;
79903  } else {
79904    objectWriteUInt32(this, value, offset, true);
79905  }
79906
79907  return offset + 4;
79908};
79909
79910Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
79911  value = +value;
79912  offset = offset | 0;
79913  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
79914
79915  if (Buffer.TYPED_ARRAY_SUPPORT) {
79916    this[offset] = value >>> 24;
79917    this[offset + 1] = value >>> 16;
79918    this[offset + 2] = value >>> 8;
79919    this[offset + 3] = value & 0xff;
79920  } else {
79921    objectWriteUInt32(this, value, offset, false);
79922  }
79923
79924  return offset + 4;
79925};
79926
79927Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {
79928  value = +value;
79929  offset = offset | 0;
79930
79931  if (!noAssert) {
79932    var limit = Math.pow(2, 8 * byteLength - 1);
79933    checkInt(this, value, offset, byteLength, limit - 1, -limit);
79934  }
79935
79936  var i = 0;
79937  var mul = 1;
79938  var sub = 0;
79939  this[offset] = value & 0xFF;
79940
79941  while (++i < byteLength && (mul *= 0x100)) {
79942    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
79943      sub = 1;
79944    }
79945
79946    this[offset + i] = (value / mul >> 0) - sub & 0xFF;
79947  }
79948
79949  return offset + byteLength;
79950};
79951
79952Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {
79953  value = +value;
79954  offset = offset | 0;
79955
79956  if (!noAssert) {
79957    var limit = Math.pow(2, 8 * byteLength - 1);
79958    checkInt(this, value, offset, byteLength, limit - 1, -limit);
79959  }
79960
79961  var i = byteLength - 1;
79962  var mul = 1;
79963  var sub = 0;
79964  this[offset + i] = value & 0xFF;
79965
79966  while (--i >= 0 && (mul *= 0x100)) {
79967    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
79968      sub = 1;
79969    }
79970
79971    this[offset + i] = (value / mul >> 0) - sub & 0xFF;
79972  }
79973
79974  return offset + byteLength;
79975};
79976
79977Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
79978  value = +value;
79979  offset = offset | 0;
79980  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
79981  if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
79982  if (value < 0) value = 0xff + value + 1;
79983  this[offset] = value & 0xff;
79984  return offset + 1;
79985};
79986
79987Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
79988  value = +value;
79989  offset = offset | 0;
79990  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
79991
79992  if (Buffer.TYPED_ARRAY_SUPPORT) {
79993    this[offset] = value & 0xff;
79994    this[offset + 1] = value >>> 8;
79995  } else {
79996    objectWriteUInt16(this, value, offset, true);
79997  }
79998
79999  return offset + 2;
80000};
80001
80002Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
80003  value = +value;
80004  offset = offset | 0;
80005  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
80006
80007  if (Buffer.TYPED_ARRAY_SUPPORT) {
80008    this[offset] = value >>> 8;
80009    this[offset + 1] = value & 0xff;
80010  } else {
80011    objectWriteUInt16(this, value, offset, false);
80012  }
80013
80014  return offset + 2;
80015};
80016
80017Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
80018  value = +value;
80019  offset = offset | 0;
80020  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
80021
80022  if (Buffer.TYPED_ARRAY_SUPPORT) {
80023    this[offset] = value & 0xff;
80024    this[offset + 1] = value >>> 8;
80025    this[offset + 2] = value >>> 16;
80026    this[offset + 3] = value >>> 24;
80027  } else {
80028    objectWriteUInt32(this, value, offset, true);
80029  }
80030
80031  return offset + 4;
80032};
80033
80034Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
80035  value = +value;
80036  offset = offset | 0;
80037  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
80038  if (value < 0) value = 0xffffffff + value + 1;
80039
80040  if (Buffer.TYPED_ARRAY_SUPPORT) {
80041    this[offset] = value >>> 24;
80042    this[offset + 1] = value >>> 16;
80043    this[offset + 2] = value >>> 8;
80044    this[offset + 3] = value & 0xff;
80045  } else {
80046    objectWriteUInt32(this, value, offset, false);
80047  }
80048
80049  return offset + 4;
80050};
80051
80052function checkIEEE754(buf, value, offset, ext, max, min) {
80053  if (offset + ext > buf.length) throw new RangeError('Index out of range');
80054  if (offset < 0) throw new RangeError('Index out of range');
80055}
80056
80057function writeFloat(buf, value, offset, littleEndian, noAssert) {
80058  if (!noAssert) {
80059    checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38);
80060  }
80061
80062  ieee754.write(buf, value, offset, littleEndian, 23, 4);
80063  return offset + 4;
80064}
80065
80066Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
80067  return writeFloat(this, value, offset, true, noAssert);
80068};
80069
80070Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
80071  return writeFloat(this, value, offset, false, noAssert);
80072};
80073
80074function writeDouble(buf, value, offset, littleEndian, noAssert) {
80075  if (!noAssert) {
80076    checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308);
80077  }
80078
80079  ieee754.write(buf, value, offset, littleEndian, 52, 8);
80080  return offset + 8;
80081}
80082
80083Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
80084  return writeDouble(this, value, offset, true, noAssert);
80085};
80086
80087Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
80088  return writeDouble(this, value, offset, false, noAssert);
80089}; // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
80090
80091
80092Buffer.prototype.copy = function copy(target, targetStart, start, end) {
80093  if (!start) start = 0;
80094  if (!end && end !== 0) end = this.length;
80095  if (targetStart >= target.length) targetStart = target.length;
80096  if (!targetStart) targetStart = 0;
80097  if (end > 0 && end < start) end = start; // Copy 0 bytes; we're done
80098
80099  if (end === start) return 0;
80100  if (target.length === 0 || this.length === 0) return 0; // Fatal error conditions
80101
80102  if (targetStart < 0) {
80103    throw new RangeError('targetStart out of bounds');
80104  }
80105
80106  if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds');
80107  if (end < 0) throw new RangeError('sourceEnd out of bounds'); // Are we oob?
80108
80109  if (end > this.length) end = this.length;
80110
80111  if (target.length - targetStart < end - start) {
80112    end = target.length - targetStart + start;
80113  }
80114
80115  var len = end - start;
80116  var i;
80117
80118  if (this === target && start < targetStart && targetStart < end) {
80119    // descending copy from end
80120    for (i = len - 1; i >= 0; --i) {
80121      target[i + targetStart] = this[i + start];
80122    }
80123  } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
80124    // ascending copy from start
80125    for (i = 0; i < len; ++i) {
80126      target[i + targetStart] = this[i + start];
80127    }
80128  } else {
80129    Uint8Array.prototype.set.call(target, this.subarray(start, start + len), targetStart);
80130  }
80131
80132  return len;
80133}; // Usage:
80134//    buffer.fill(number[, offset[, end]])
80135//    buffer.fill(buffer[, offset[, end]])
80136//    buffer.fill(string[, offset[, end]][, encoding])
80137
80138
80139Buffer.prototype.fill = function fill(val, start, end, encoding) {
80140  // Handle string cases:
80141  if (typeof val === 'string') {
80142    if (typeof start === 'string') {
80143      encoding = start;
80144      start = 0;
80145      end = this.length;
80146    } else if (typeof end === 'string') {
80147      encoding = end;
80148      end = this.length;
80149    }
80150
80151    if (val.length === 1) {
80152      var code = val.charCodeAt(0);
80153
80154      if (code < 256) {
80155        val = code;
80156      }
80157    }
80158
80159    if (encoding !== undefined && typeof encoding !== 'string') {
80160      throw new TypeError('encoding must be a string');
80161    }
80162
80163    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
80164      throw new TypeError('Unknown encoding: ' + encoding);
80165    }
80166  } else if (typeof val === 'number') {
80167    val = val & 255;
80168  } // Invalid ranges are not set to a default, so can range check early.
80169
80170
80171  if (start < 0 || this.length < start || this.length < end) {
80172    throw new RangeError('Out of range index');
80173  }
80174
80175  if (end <= start) {
80176    return this;
80177  }
80178
80179  start = start >>> 0;
80180  end = end === undefined ? this.length : end >>> 0;
80181  if (!val) val = 0;
80182  var i;
80183
80184  if (typeof val === 'number') {
80185    for (i = start; i < end; ++i) {
80186      this[i] = val;
80187    }
80188  } else {
80189    var bytes = Buffer.isBuffer(val) ? val : utf8ToBytes(new Buffer(val, encoding).toString());
80190    var len = bytes.length;
80191
80192    for (i = 0; i < end - start; ++i) {
80193      this[i + start] = bytes[i % len];
80194    }
80195  }
80196
80197  return this;
80198}; // HELPER FUNCTIONS
80199// ================
80200
80201
80202var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
80203
80204function base64clean(str) {
80205  // Node strips out invalid characters like \n and \t from the string, base64-js does not
80206  str = stringtrim(str).replace(INVALID_BASE64_RE, ''); // Node converts strings with length < 2 to ''
80207
80208  if (str.length < 2) return ''; // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
80209
80210  while (str.length % 4 !== 0) {
80211    str = str + '=';
80212  }
80213
80214  return str;
80215}
80216
80217function stringtrim(str) {
80218  if (str.trim) return str.trim();
80219  return str.replace(/^\s+|\s+$/g, '');
80220}
80221
80222function toHex(n) {
80223  if (n < 16) return '0' + n.toString(16);
80224  return n.toString(16);
80225}
80226
80227function utf8ToBytes(string, units) {
80228  units = units || Infinity;
80229  var codePoint;
80230  var length = string.length;
80231  var leadSurrogate = null;
80232  var bytes = [];
80233
80234  for (var i = 0; i < length; ++i) {
80235    codePoint = string.charCodeAt(i); // is surrogate component
80236
80237    if (codePoint > 0xD7FF && codePoint < 0xE000) {
80238      // last char was a lead
80239      if (!leadSurrogate) {
80240        // no lead yet
80241        if (codePoint > 0xDBFF) {
80242          // unexpected trail
80243          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
80244          continue;
80245        } else if (i + 1 === length) {
80246          // unpaired lead
80247          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
80248          continue;
80249        } // valid lead
80250
80251
80252        leadSurrogate = codePoint;
80253        continue;
80254      } // 2 leads in a row
80255
80256
80257      if (codePoint < 0xDC00) {
80258        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
80259        leadSurrogate = codePoint;
80260        continue;
80261      } // valid surrogate pair
80262
80263
80264      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
80265    } else if (leadSurrogate) {
80266      // valid bmp char, but last char was a lead
80267      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
80268    }
80269
80270    leadSurrogate = null; // encode utf8
80271
80272    if (codePoint < 0x80) {
80273      if ((units -= 1) < 0) break;
80274      bytes.push(codePoint);
80275    } else if (codePoint < 0x800) {
80276      if ((units -= 2) < 0) break;
80277      bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);
80278    } else if (codePoint < 0x10000) {
80279      if ((units -= 3) < 0) break;
80280      bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
80281    } else if (codePoint < 0x110000) {
80282      if ((units -= 4) < 0) break;
80283      bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
80284    } else {
80285      throw new Error('Invalid code point');
80286    }
80287  }
80288
80289  return bytes;
80290}
80291
80292function asciiToBytes(str) {
80293  var byteArray = [];
80294
80295  for (var i = 0; i < str.length; ++i) {
80296    // Node's code seems to be doing this and not & 0x7F..
80297    byteArray.push(str.charCodeAt(i) & 0xFF);
80298  }
80299
80300  return byteArray;
80301}
80302
80303function utf16leToBytes(str, units) {
80304  var c, hi, lo;
80305  var byteArray = [];
80306
80307  for (var i = 0; i < str.length; ++i) {
80308    if ((units -= 2) < 0) break;
80309    c = str.charCodeAt(i);
80310    hi = c >> 8;
80311    lo = c % 256;
80312    byteArray.push(lo);
80313    byteArray.push(hi);
80314  }
80315
80316  return byteArray;
80317}
80318
80319function base64ToBytes(str) {
80320  return base64.toByteArray(base64clean(str));
80321}
80322
80323function blitBuffer(src, dst, offset, length) {
80324  for (var i = 0; i < length; ++i) {
80325    if (i + offset >= dst.length || i >= src.length) break;
80326    dst[i + offset] = src[i];
80327  }
80328
80329  return i;
80330}
80331
80332function isnan(val) {
80333  return val !== val; // eslint-disable-line no-self-compare
80334}
80335/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")))
80336
80337/***/ }),
80338
vendor: 1,157 bytes, lines 80339-80368
80339/***/ "./node_modules/webpack/buildin/global.js":
80340/*!***********************************!*\
80341  !*** (webpack)/buildin/global.js ***!
80342  \***********************************/
80343/*! no static exports found */
80344/***/ (function(module, exports) {
80345
80346function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
80347
80348var g; // This works in non-strict mode
80349
80350g = function () {
80351  return this;
80352}();
80353
80354try {
80355  // This works if eval is allowed (see CSP)
80356  g = g || new Function("return this")();
80357} catch (e) {
80358  // This works if the window reference is available
80359  if ((typeof window === "undefined" ? "undefined" : _typeof(window)) === "object") g = window;
80360} // g can still be undefined, but nothing to do about it...
80361// We return undefined, instead of nothing here, so it's
80362// easier to handle this case. if(!global) { ...}
80363
80364
80365module.exports = g;
80366
80367/***/ }),
80368
vendor: 801 bytes, lines 80369-80401
80369/***/ "./node_modules/webpack/buildin/module.js":
80370/*!***********************************!*\
80371  !*** (webpack)/buildin/module.js ***!
80372  \***********************************/
80373/*! no static exports found */
80374/***/ (function(module, exports) {
80375
80376module.exports = function (module) {
80377  if (!module.webpackPolyfill) {
80378    module.deprecate = function () {};
80379
80380    module.paths = []; // module.parent = undefined by default
80381
80382    if (!module.children) module.children = [];
80383    Object.defineProperty(module, "loaded", {
80384      enumerable: true,
80385      get: function get() {
80386        return module.l;
80387      }
80388    });
80389    Object.defineProperty(module, "id", {
80390      enumerable: true,
80391      get: function get() {
80392        return module.i;
80393      }
80394    });
80395    module.webpackPolyfill = 1;
80396  }
80397
80398  return module;
80399};
80400
80401/***/ })
80401,
80402
80403/***/ 4:
80404/*!******************************!*\
80405  !*** min-document (ignored) ***!
80406  \******************************/
80407/*! no static exports found */
80408/***/ (function(module, exports) {
80409
80410/* (ignored) */
80411
80412/***/ })
80413
80414/******/ });
80415//# sourceMappingURL=main.js.map

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.