PageSourceSearch

https://www.paqtx.com/wp-content/themes/paq/dist/js/general.js?ver=1779629114

js paqtx.com collected 2026-10-06 18:12:34 UTC 489,682 bytes, 15,935 lines download raw bytes

1/******/ (function() { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
vendor: 813 bytes, lines 4-25
4/***/ "./node_modules/core-js/internals/a-callable.js":
5/*!******************************************************!*\
6  !*** ./node_modules/core-js/internals/a-callable.js ***!
7  \******************************************************/
8/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
9
10"use strict";
11
12var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
13var tryToString = __webpack_require__(/*! ../internals/try-to-string */ "./node_modules/core-js/internals/try-to-string.js");
14
15var $TypeError = TypeError;
16
17// `Assert: IsCallable(argument) is true`
18module.exports = function (argument) {
19  if (isCallable(argument)) return argument;
20  throw new $TypeError(tryToString(argument) + ' is not a function');
21};
22
23
24/***/ }),
25
vendor: 1,246 bytes, lines 26-57
26/***/ "./node_modules/core-js/internals/add-to-unscopables.js":
27/*!**************************************************************!*\
28  !*** ./node_modules/core-js/internals/add-to-unscopables.js ***!
29  \**************************************************************/
30/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
31
32"use strict";
33
34var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
35var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
36var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f);
37
38var UNSCOPABLES = wellKnownSymbol('unscopables');
39var ArrayPrototype = Array.prototype;
40
41// Array.prototype[@@unscopables]
42// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
43if (ArrayPrototype[UNSCOPABLES] === undefined) {
44  defineProperty(ArrayPrototype, UNSCOPABLES, {
45    configurable: true,
46    value: create(null)
47  });
48}
49
50// add a key to Array.prototype[@@unscopables]
51module.exports = function (key) {
52  ArrayPrototype[UNSCOPABLES][key] = true;
53};
54
55
56/***/ }),
57
vendor: 717 bytes, lines 58-76
58/***/ "./node_modules/core-js/internals/advance-string-index.js":
59/*!****************************************************************!*\
60  !*** ./node_modules/core-js/internals/advance-string-index.js ***!
61  \****************************************************************/
62/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
63
64"use strict";
65
66var charAt = (__webpack_require__(/*! ../internals/string-multibyte */ "./node_modules/core-js/internals/string-multibyte.js").charAt);
67
68// `AdvanceStringIndex` abstract operation
69// https://tc39.es/ecma262/#sec-advancestringindex
70module.exports = function (S, index, unicode) {
71  return index + (unicode ? charAt(S, index).length : 1);
72};
73
74
75/***/ }),
76
vendor: 688 bytes, lines 77-98
77/***/ "./node_modules/core-js/internals/an-object.js":
78/*!*****************************************************!*\
79  !*** ./node_modules/core-js/internals/an-object.js ***!
80  \*****************************************************/
81/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
82
83"use strict";
84
85var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
86
87var $String = String;
88var $TypeError = TypeError;
89
90// `Assert: Type(argument) is Object`
91module.exports = function (argument) {
92  if (isObject(argument)) return argument;
93  throw new $TypeError($String(argument) + ' is not an object');
94};
95
96
97/***/ }),
98
vendor: 1,052 bytes, lines 99-121
99/***/ "./node_modules/core-js/internals/array-for-each.js":
100/*!**********************************************************!*\
101  !*** ./node_modules/core-js/internals/array-for-each.js ***!
102  \**********************************************************/
103/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
104
105"use strict";
106
107var $forEach = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").forEach);
108var arrayMethodIsStrict = __webpack_require__(/*! ../internals/array-method-is-strict */ "./node_modules/core-js/internals/array-method-is-strict.js");
109
110var STRICT_METHOD = arrayMethodIsStrict('forEach');
111
112// `Array.prototype.forEach` method implementation
113// https://tc39.es/ecma262/#sec-array.prototype.foreach
114module.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {
115  return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
116// eslint-disable-next-line es/no-array-prototype-foreach -- safe
117} : [].forEach;
118
119
120/***/ }),
121
vendor: 1,943 bytes, lines 122-166
122/***/ "./node_modules/core-js/internals/array-includes.js":
123/*!**********************************************************!*\
124  !*** ./node_modules/core-js/internals/array-includes.js ***!
125  \**********************************************************/
126/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
127
128"use strict";
129
130var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
131var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
132var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js");
133
134// `Array.prototype.{ indexOf, includes }` methods implementation
135var createMethod = function (IS_INCLUDES) {
136  return function ($this, el, fromIndex) {
137    var O = toIndexedObject($this);
138    var length = lengthOfArrayLike(O);
139    if (length === 0) return !IS_INCLUDES && -1;
140    var index = toAbsoluteIndex(fromIndex, length);
141    var value;
142    // Array#includes uses SameValueZero equality algorithm
143    // eslint-disable-next-line no-self-compare -- NaN check
144    if (IS_INCLUDES && el !== el) while (length > index) {
145      value = O[index++];
146      // eslint-disable-next-line no-self-compare -- NaN check
147      if (value !== value) return true;
148    // Array#indexOf ignores holes, Array#includes - not
149    } else for (;length > index; index++) {
150      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
151    } return !IS_INCLUDES && -1;
152  };
153};
154
155module.exports = {
156  // `Array.prototype.includes` method
157  // https://tc39.es/ecma262/#sec-array.prototype.includes
158  includes: createMethod(true),
159  // `Array.prototype.indexOf` method
160  // https://tc39.es/ecma262/#sec-array.prototype.indexof
161  indexOf: createMethod(false)
162};
163
164
165/***/ }),
166
vendor: 3,714 bytes, lines 167-251
167/***/ "./node_modules/core-js/internals/array-iteration.js":
168/*!***********************************************************!*\
169  !*** ./node_modules/core-js/internals/array-iteration.js ***!
170  \***********************************************************/
171/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
172
173"use strict";
174
175var bind = __webpack_require__(/*! ../internals/function-bind-context */ "./node_modules/core-js/internals/function-bind-context.js");
176var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
177var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
178var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
179var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js");
180var arraySpeciesCreate = __webpack_require__(/*! ../internals/array-species-create */ "./node_modules/core-js/internals/array-species-create.js");
181
182var push = uncurryThis([].push);
183
184// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation
185var createMethod = function (TYPE) {
186  var IS_MAP = TYPE === 1;
187  var IS_FILTER = TYPE === 2;
188  var IS_SOME = TYPE === 3;
189  var IS_EVERY = TYPE === 4;
190  var IS_FIND_INDEX = TYPE === 6;
191  var IS_FILTER_REJECT = TYPE === 7;
192  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;
193  return function ($this, callbackfn, that, specificCreate) {
194    var O = toObject($this);
195    var self = IndexedObject(O);
196    var length = lengthOfArrayLike(self);
197    var boundFunction = bind(callbackfn, that);
198    var index = 0;
199    var create = specificCreate || arraySpeciesCreate;
200    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;
201    var value, result;
202    for (;length > index; index++) if (NO_HOLES || index in self) {
203      value = self[index];
204      result = boundFunction(value, index, O);
205      if (TYPE) {
206        if (IS_MAP) target[index] = result; // map
207        else if (result) switch (TYPE) {
208          case 3: return true;              // some
209          case 5: return value;             // find
210          case 6: return index;             // findIndex
211          case 2: push(target, value);      // filter
212        } else switch (TYPE) {
213          case 4: return false;             // every
214          case 7: push(target, value);      // filterReject
215        }
216      }
217    }
218    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
219  };
220};
221
222module.exports = {
223  // `Array.prototype.forEach` method
224  // https://tc39.es/ecma262/#sec-array.prototype.foreach
225  forEach: createMethod(0),
226  // `Array.prototype.map` method
227  // https://tc39.es/ecma262/#sec-array.prototype.map
228  map: createMethod(1),
229  // `Array.prototype.filter` method
230  // https://tc39.es/ecma262/#sec-array.prototype.filter
231  filter: createMethod(2),
232  // `Array.prototype.some` method
233  // https://tc39.es/ecma262/#sec-array.prototype.some
234  some: createMethod(3),
235  // `Array.prototype.every` method
236  // https://tc39.es/ecma262/#sec-array.prototype.every
237  every: createMethod(4),
238  // `Array.prototype.find` method
239  // https://tc39.es/ecma262/#sec-array.prototype.find
240  find: createMethod(5),
241  // `Array.prototype.findIndex` method
242  // https://tc39.es/ecma262/#sec-array.prototype.findIndex
243  findIndex: createMethod(6),
244  // `Array.prototype.filterReject` method
245  // https://github.com/tc39/proposal-array-filtering
246  filterReject: createMethod(7)
247};
248
249
250/***/ }),
251
vendor: 1,315 bytes, lines 252-282
252/***/ "./node_modules/core-js/internals/array-method-has-species-support.js":
253/*!****************************************************************************!*\
254  !*** ./node_modules/core-js/internals/array-method-has-species-support.js ***!
255  \****************************************************************************/
256/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
257
258"use strict";
259
260var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
261var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
262var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js");
263
264var SPECIES = wellKnownSymbol('species');
265
266module.exports = function (METHOD_NAME) {
267  // We can't use this feature detection in V8 since it causes
268  // deoptimization and serious performance degradation
269  // https://github.com/zloirock/core-js/issues/677
270  return V8_VERSION >= 51 || !fails(function () {
271    var array = [];
272    var constructor = array.constructor = {};
273    constructor[SPECIES] = function () {
274      return { foo: 1 };
275    };
276    return array[METHOD_NAME](Boolean).foo !== 1;
277  });
278};
279
280
281/***/ }),
282
vendor: 761 bytes, lines 283-303
283/***/ "./node_modules/core-js/internals/array-method-is-strict.js":
284/*!******************************************************************!*\
285  !*** ./node_modules/core-js/internals/array-method-is-strict.js ***!
286  \******************************************************************/
287/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
288
289"use strict";
290
291var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
292
293module.exports = function (METHOD_NAME, argument) {
294  var method = [][METHOD_NAME];
295  return !!method && fails(function () {
296    // eslint-disable-next-line no-useless-call -- required for testing
297    method.call(null, argument || function () { return 1; }, 1);
298  });
299};
300
301
302/***/ }),
303
vendor: 524 bytes, lines 304-318
304/***/ "./node_modules/core-js/internals/array-slice.js":
305/*!*******************************************************!*\
306  !*** ./node_modules/core-js/internals/array-slice.js ***!
307  \*******************************************************/
308/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
309
310"use strict";
311
312var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
313
314module.exports = uncurryThis([].slice);
315
316
317/***/ }),
318
vendor: 1,428 bytes, lines 319-352
319/***/ "./node_modules/core-js/internals/array-species-constructor.js":
320/*!*********************************************************************!*\
321  !*** ./node_modules/core-js/internals/array-species-constructor.js ***!
322  \*********************************************************************/
323/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
324
325"use strict";
326
327var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js");
328var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js");
329var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
330var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
331
332var SPECIES = wellKnownSymbol('species');
333var $Array = Array;
334
335// a part of `ArraySpeciesCreate` abstract operation
336// https://tc39.es/ecma262/#sec-arrayspeciescreate
337module.exports = function (originalArray) {
338  var C;
339  if (isArray(originalArray)) {
340    C = originalArray.constructor;
341    // cross-realm fallback
342    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
343    else if (isObject(C)) {
344      C = C[SPECIES];
345      if (C === null) C = undefined;
346    }
347  } return C === undefined ? $Array : C;
348};
349
350
351/***/ }),
352
vendor: 771 bytes, lines 353-371
353/***/ "./node_modules/core-js/internals/array-species-create.js":
354/*!****************************************************************!*\
355  !*** ./node_modules/core-js/internals/array-species-create.js ***!
356  \****************************************************************/
357/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
358
359"use strict";
360
361var arraySpeciesConstructor = __webpack_require__(/*! ../internals/array-species-constructor */ "./node_modules/core-js/internals/array-species-constructor.js");
362
363// `ArraySpeciesCreate` abstract operation
364// https://tc39.es/ecma262/#sec-arrayspeciescreate
365module.exports = function (originalArray, length) {
366  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
367};
368
369
370/***/ }),
371
vendor: 646 bytes, lines 372-391
372/***/ "./node_modules/core-js/internals/classof-raw.js":
373/*!*******************************************************!*\
374  !*** ./node_modules/core-js/internals/classof-raw.js ***!
375  \*******************************************************/
376/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
377
378"use strict";
379
380var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
381
382var toString = uncurryThis({}.toString);
383var stringSlice = uncurryThis(''.slice);
384
385module.exports = function (it) {
386  return stringSlice(toString(it), 8, -1);
387};
388
389
390/***/ }),
391
vendor: 1,689 bytes, lines 392-432
392/***/ "./node_modules/core-js/internals/classof.js":
393/*!***************************************************!*\
394  !*** ./node_modules/core-js/internals/classof.js ***!
395  \***************************************************/
396/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
397
398"use strict";
399
400var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js");
401var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
402var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
403var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
404
405var TO_STRING_TAG = wellKnownSymbol('toStringTag');
406var $Object = Object;
407
408// ES3 wrong here
409var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';
410
411// fallback for IE11 Script Access Denied error
412var tryGet = function (it, key) {
413  try {
414    return it[key];
415  } catch (error) { /* empty */ }
416};
417
418// getting tag from ES6+ `Object.prototype.toString`
419module.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
420  var O, tag, result;
421  return it === undefined ? 'Undefined' : it === null ? 'Null'
422    // @@toStringTag case
423    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag
424    // builtinTag case
425    : CORRECT_ARGUMENTS ? classofRaw(O)
426    // ES3 arguments fallback
427    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;
428};
429
430
431/***/ }),
432
vendor: 1,414 bytes, lines 433-460
433/***/ "./node_modules/core-js/internals/copy-constructor-properties.js":
434/*!***********************************************************************!*\
435  !*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
436  \***********************************************************************/
437/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
438
439"use strict";
440
441var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
442var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js");
443var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
444var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
445
446module.exports = function (target, source, exceptions) {
447  var keys = ownKeys(source);
448  var defineProperty = definePropertyModule.f;
449  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
450  for (var i = 0; i < keys.length; i++) {
451    var key = keys[i];
452    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {
453      defineProperty(target, key, getOwnPropertyDescriptor(source, key));
454    }
455  }
456};
457
458
459/***/ }),
460
vendor: 828 bytes, lines 461-487
461/***/ "./node_modules/core-js/internals/correct-is-regexp-logic.js":
462/*!*******************************************************************!*\
463  !*** ./node_modules/core-js/internals/correct-is-regexp-logic.js ***!
464  \*******************************************************************/
465/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
466
467"use strict";
468
469var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
470
471var MATCH = wellKnownSymbol('match');
472
473module.exports = function (METHOD_NAME) {
474  var regexp = /./;
475  try {
476    '/./'[METHOD_NAME](regexp);
477  } catch (error1) {
478    try {
479      regexp[MATCH] = false;
480      return '/./'[METHOD_NAME](regexp);
481    } catch (error2) { /* empty */ }
482  } return false;
483};
484
485
486/***/ }),
487
vendor: 1,082 bytes, lines 488-509
488/***/ "./node_modules/core-js/internals/create-non-enumerable-property.js":
489/*!**************************************************************************!*\
490  !*** ./node_modules/core-js/internals/create-non-enumerable-property.js ***!
491  \**************************************************************************/
492/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
493
494"use strict";
495
496var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
497var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
498var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
499
500module.exports = DESCRIPTORS ? function (object, key, value) {
501  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
502} : function (object, key, value) {
503  object[key] = value;
504  return object;
505};
506
507
508/***/ }),
509
vendor: 527 bytes, lines 510-529
510/***/ "./node_modules/core-js/internals/create-property-descriptor.js":
511/*!**********************************************************************!*\
512  !*** ./node_modules/core-js/internals/create-property-descriptor.js ***!
513  \**********************************************************************/
514/***/ (function(module) {
515
516"use strict";
517
518module.exports = function (bitmap, value) {
519  return {
520    enumerable: !(bitmap & 1),
521    configurable: !(bitmap & 2),
522    writable: !(bitmap & 4),
523    value: value
524  };
525};
526
527
528/***/ }),
529
vendor: 970 bytes, lines 530-549
530/***/ "./node_modules/core-js/internals/create-property.js":
531/*!***********************************************************!*\
532  !*** ./node_modules/core-js/internals/create-property.js ***!
533  \***********************************************************/
534/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
535
536"use strict";
537
538var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
539var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
540var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
541
542module.exports = function (object, key, value) {
543  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));
544  else object[key] = value;
545};
546
547
548/***/ }),
549
vendor: 1,614 bytes, lines 550-588
550/***/ "./node_modules/core-js/internals/define-built-in.js":
551/*!***********************************************************!*\
552  !*** ./node_modules/core-js/internals/define-built-in.js ***!
553  \***********************************************************/
554/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
555
556"use strict";
557
558var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
559var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
560var makeBuiltIn = __webpack_require__(/*! ../internals/make-built-in */ "./node_modules/core-js/internals/make-built-in.js");
561var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
562
563module.exports = function (O, key, value, options) {
564  if (!options) options = {};
565  var simple = options.enumerable;
566  var name = options.name !== undefined ? options.name : key;
567  if (isCallable(value)) makeBuiltIn(value, name, options);
568  if (options.global) {
569    if (simple) O[key] = value;
570    else defineGlobalProperty(key, value);
571  } else {
572    try {
573      if (!options.unsafe) delete O[key];
574      else if (O[key]) simple = true;
575    } catch (error) { /* empty */ }
576    if (simple) O[key] = value;
577    else definePropertyModule.f(O, key, {
578      value: value,
579      enumerable: false,
580      configurable: !options.nonConfigurable,
581      writable: !options.nonWritable
582    });
583  } return O;
584};
585
586
587/***/ }),
588
vendor: 826 bytes, lines 589-612
589/***/ "./node_modules/core-js/internals/define-global-property.js":
590/*!******************************************************************!*\
591  !*** ./node_modules/core-js/internals/define-global-property.js ***!
592  \******************************************************************/
593/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
594
595"use strict";
596
597var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
598
599// eslint-disable-next-line es/no-object-defineproperty -- safe
600var defineProperty = Object.defineProperty;
601
602module.exports = function (key, value) {
603  try {
604    defineProperty(globalThis, key, { value: value, configurable: true, writable: true });
605  } catch (error) {
606    globalThis[key] = value;
607  } return value;
608};
609
610
611/***/ }),
612
vendor: 711 bytes, lines 613-631
613/***/ "./node_modules/core-js/internals/descriptors.js":
614/*!*******************************************************!*\
615  !*** ./node_modules/core-js/internals/descriptors.js ***!
616  \*******************************************************/
617/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
618
619"use strict";
620
621var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
622
623// Detect IE8's incomplete defineProperty implementation
624module.exports = !fails(function () {
625  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
626  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;
627});
628
629
630/***/ }),
631
vendor: 874 bytes, lines 632-653
632/***/ "./node_modules/core-js/internals/document-create-element.js":
633/*!*******************************************************************!*\
634  !*** ./node_modules/core-js/internals/document-create-element.js ***!
635  \*******************************************************************/
636/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
637
638"use strict";
639
640var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
641var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
642
643var document = globalThis.document;
644// typeof document.createElement is 'object' in old IE
645var EXISTS = isObject(document) && isObject(document.createElement);
646
647module.exports = function (it) {
648  return EXISTS ? document.createElement(it) : {};
649};
650
651
652/***/ }),
653
vendor: 1,055 bytes, lines 654-700
654/***/ "./node_modules/core-js/internals/dom-iterables.js":
655/*!*********************************************************!*\
656  !*** ./node_modules/core-js/internals/dom-iterables.js ***!
657  \*********************************************************/
658/***/ (function(module) {
659
660"use strict";
661
662// iterable DOM collections
663// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
664module.exports = {
665  CSSRuleList: 0,
666  CSSStyleDeclaration: 0,
667  CSSValueList: 0,
668  ClientRectList: 0,
669  DOMRectList: 0,
670  DOMStringList: 0,
671  DOMTokenList: 1,
672  DataTransferItemList: 0,
673  FileList: 0,
674  HTMLAllCollection: 0,
675  HTMLCollection: 0,
676  HTMLFormElement: 0,
677  HTMLSelectElement: 0,
678  MediaList: 0,
679  MimeTypeArray: 0,
680  NamedNodeMap: 0,
681  NodeList: 1,
682  PaintRequestList: 0,
683  Plugin: 0,
684  PluginArray: 0,
685  SVGLengthList: 0,
686  SVGNumberList: 0,
687  SVGPathSegList: 0,
688  SVGPointList: 0,
689  SVGStringList: 0,
690  SVGTransformList: 0,
691  SourceBufferList: 0,
692  StyleSheetList: 0,
693  TextTrackCueList: 0,
694  TextTrackList: 0,
695  TouchList: 0
696};
697
698
699/***/ }),
700
vendor: 895 bytes, lines 701-719
701/***/ "./node_modules/core-js/internals/dom-token-list-prototype.js":
702/*!********************************************************************!*\
703  !*** ./node_modules/core-js/internals/dom-token-list-prototype.js ***!
704  \********************************************************************/
705/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
706
707"use strict";
708
709// in old WebKit versions, `element.classList` is not an instance of global `DOMTokenList`
710var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
711
712var classList = documentCreateElement('span').classList;
713var DOMTokenListPrototype = classList && classList.constructor && classList.constructor.prototype;
714
715module.exports = DOMTokenListPrototype === Object.prototype ? undefined : DOMTokenListPrototype;
716
717
718/***/ }),
719
vendor: 480 bytes, lines 720-741
720/***/ "./node_modules/core-js/internals/enum-bug-keys.js":
721/*!*********************************************************!*\
722  !*** ./node_modules/core-js/internals/enum-bug-keys.js ***!
723  \*********************************************************/
724/***/ (function(module) {
725
726"use strict";
727
728// IE8- don't enum bug keys
729module.exports = [
730  'constructor',
731  'hasOwnProperty',
732  'isPrototypeOf',
733  'propertyIsEnumerable',
734  'toLocaleString',
735  'toString',
736  'valueOf'
737];
738
739
740/***/ }),
741
vendor: 649 bytes, lines 742-759
742/***/ "./node_modules/core-js/internals/environment-user-agent.js":
743/*!******************************************************************!*\
744  !*** ./node_modules/core-js/internals/environment-user-agent.js ***!
745  \******************************************************************/
746/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
747
748"use strict";
749
750var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
751
752var navigator = globalThis.navigator;
753var userAgent = navigator && navigator.userAgent;
754
755module.exports = userAgent ? String(userAgent) : '';
756
757
758/***/ }),
759
vendor: 1,402 bytes, lines 760-798
760/***/ "./node_modules/core-js/internals/environment-v8-version.js":
761/*!******************************************************************!*\
762  !*** ./node_modules/core-js/internals/environment-v8-version.js ***!
763  \******************************************************************/
764/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
765
766"use strict";
767
768var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
769var userAgent = __webpack_require__(/*! ../internals/environment-user-agent */ "./node_modules/core-js/internals/environment-user-agent.js");
770
771var process = globalThis.process;
772var Deno = globalThis.Deno;
773var versions = process && process.versions || Deno && Deno.version;
774var v8 = versions && versions.v8;
775var match, version;
776
777if (v8) {
778  match = v8.split('.');
779  // in old Chrome, versions of V8 isn't V8 = Chrome / 10
780  // but their correct versions are not interesting for us
781  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);
782}
783
784// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
785// so check `userAgent` even if `.v8` exists, but 0
786if (!version && userAgent) {
787  match = userAgent.match(/Edge\/(\d+)/);
788  if (!match || match[1] >= 74) {
789    match = userAgent.match(/Chrome\/(\d+)/);
790    if (match) version = +match[1];
791  }
792}
793
794module.exports = version;
795
796
797/***/ }),
798
vendor: 3,567 bytes, lines 799-864
799/***/ "./node_modules/core-js/internals/export.js":
800/*!**************************************************!*\
801  !*** ./node_modules/core-js/internals/export.js ***!
802  \**************************************************/
803/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
804
805"use strict";
806
807var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
808var getOwnPropertyDescriptor = (__webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f);
809var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
810var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js");
811var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
812var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js");
813var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js");
814
815/*
816  options.target         - name of the target object
817  options.global         - target is the global object
818  options.stat           - export as static methods of target
819  options.proto          - export as prototype methods of target
820  options.real           - real prototype method for the `pure` version
821  options.forced         - export even if the native feature is available
822  options.bind           - bind methods to the target, required for the `pure` version
823  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version
824  options.unsafe         - use the simple assignment of property instead of delete + defineProperty
825  options.sham           - add a flag to not completely full polyfills
826  options.enumerable     - export as enumerable property
827  options.dontCallGetSet - prevent calling a getter on target
828  options.name           - the .name of the function if it does not match the key
829*/
830module.exports = function (options, source) {
831  var TARGET = options.target;
832  var GLOBAL = options.global;
833  var STATIC = options.stat;
834  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
835  if (GLOBAL) {
836    target = globalThis;
837  } else if (STATIC) {
838    target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});
839  } else {
840    target = globalThis[TARGET] && globalThis[TARGET].prototype;
841  }
842  if (target) for (key in source) {
843    sourceProperty = source[key];
844    if (options.dontCallGetSet) {
845      descriptor = getOwnPropertyDescriptor(target, key);
846      targetProperty = descriptor && descriptor.value;
847    } else targetProperty = target[key];
848    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
849    // contained in target
850    if (!FORCED && targetProperty !== undefined) {
851      if (typeof sourceProperty == typeof targetProperty) continue;
852      copyConstructorProperties(sourceProperty, targetProperty);
853    }
854    // add a flag to not completely full polyfills
855    if (options.sham || (targetProperty && targetProperty.sham)) {
856      createNonEnumerableProperty(sourceProperty, 'sham', true);
857    }
858    defineBuiltIn(target, key, sourceProperty, options);
859  }
860};
861
862
863/***/ }),
864
vendor: 378 bytes, lines 865-883
865/***/ "./node_modules/core-js/internals/fails.js":
866/*!*************************************************!*\
867  !*** ./node_modules/core-js/internals/fails.js ***!
868  \*************************************************/
869/***/ (function(module) {
870
871"use strict";
872
873module.exports = function (exec) {
874  try {
875    return !!exec();
876  } catch (error) {
877    return true;
878  }
879};
880
881
882/***/ }),
883
vendor: 3,603 bytes, lines 884-970
884/***/ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js":
885/*!******************************************************************************!*\
886  !*** ./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js ***!
887  \******************************************************************************/
888/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
889
890"use strict";
891
892// TODO: Remove from `core-js@4` since it's moved to entry points
893__webpack_require__(/*! ../modules/es.regexp.exec */ "./node_modules/core-js/modules/es.regexp.exec.js");
894var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
895var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js");
896var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
897var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
898var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
899var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
900
901var SPECIES = wellKnownSymbol('species');
902var RegExpPrototype = RegExp.prototype;
903
904module.exports = function (KEY, exec, FORCED, SHAM) {
905  var SYMBOL = wellKnownSymbol(KEY);
906
907  var DELEGATES_TO_SYMBOL = !fails(function () {
908    // String methods call symbol-named RegExp methods
909    var O = {};
910    O[SYMBOL] = function () { return 7; };
911    return ''[KEY](O) !== 7;
912  });
913
914  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
915    // Symbol-named RegExp methods call .exec
916    var execCalled = false;
917    var re = /a/;
918
919    if (KEY === 'split') {
920      // We can't use real regex here since it causes deoptimization
921      // and serious performance degradation in V8
922      // https://github.com/zloirock/core-js/issues/306
923      re = {};
924      // RegExp[@@split] doesn't call the regex's exec method, but first creates
925      // a new one. We need to return the patched regex when creating the new one.
926      re.constructor = {};
927      re.constructor[SPECIES] = function () { return re; };
928      re.flags = '';
929      re[SYMBOL] = /./[SYMBOL];
930    }
931
932    re.exec = function () {
933      execCalled = true;
934      return null;
935    };
936
937    re[SYMBOL]('');
938    return !execCalled;
939  });
940
941  if (
942    !DELEGATES_TO_SYMBOL ||
943    !DELEGATES_TO_EXEC ||
944    FORCED
945  ) {
946    var nativeRegExpMethod = /./[SYMBOL];
947    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
948      var $exec = regexp.exec;
949      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {
950        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
951          // The native String method already delegates to @@method (this
952          // polyfilled function), leasing to infinite recursion.
953          // We avoid it by directly calling the native @@method method.
954          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };
955        }
956        return { done: true, value: call(nativeMethod, str, regexp, arg2) };
957      }
958      return { done: false };
959    });
960
961    defineBuiltIn(String.prototype, KEY, methods[0]);
962    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);
963  }
964
965  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);
966};
967
968
969/***/ }),
970
vendor: 847 bytes, lines 971-992
971/***/ "./node_modules/core-js/internals/function-apply.js":
972/*!**********************************************************!*\
973  !*** ./node_modules/core-js/internals/function-apply.js ***!
974  \**********************************************************/
975/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
976
977"use strict";
978
979var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
980
981var FunctionPrototype = Function.prototype;
982var apply = FunctionPrototype.apply;
983var call = FunctionPrototype.call;
984
985// eslint-disable-next-line es/no-function-prototype-bind, es/no-reflect -- safe
986module.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {
987  return call.apply(apply, arguments);
988});
989
990
991/***/ }),
992
vendor: 1,071 bytes, lines 993-1017
993/***/ "./node_modules/core-js/internals/function-bind-context.js":
994/*!*****************************************************************!*\
995  !*** ./node_modules/core-js/internals/function-bind-context.js ***!
996  \*****************************************************************/
997/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
998
999"use strict";
1000
1001var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this-clause */ "./node_modules/core-js/internals/function-uncurry-this-clause.js");
1002var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js");
1003var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
1004
1005var bind = uncurryThis(uncurryThis.bind);
1006
1007// optional / simple context binding
1008module.exports = function (fn, that) {
1009  aCallable(fn);
1010  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {
1011    return fn.apply(that, arguments);
1012  };
1013};
1014
1015
1016/***/ }),
1017
vendor: 775 bytes, lines 1018-1037
1018/***/ "./node_modules/core-js/internals/function-bind-native.js":
1019/*!****************************************************************!*\
1020  !*** ./node_modules/core-js/internals/function-bind-native.js ***!
1021  \****************************************************************/
1022/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1023
1024"use strict";
1025
1026var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
1027
1028module.exports = !fails(function () {
1029  // eslint-disable-next-line es/no-function-prototype-bind -- safe
1030  var test = (function () { /* empty */ }).bind();
1031  // eslint-disable-next-line no-prototype-builtins -- safe
1032  return typeof test != 'function' || test.hasOwnProperty('prototype');
1033});
1034
1035
1036/***/ }),
1037
vendor: 696 bytes, lines 1038-1056
1038/***/ "./node_modules/core-js/internals/function-call.js":
1039/*!*********************************************************!*\
1040  !*** ./node_modules/core-js/internals/function-call.js ***!
1041  \*********************************************************/
1042/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1043
1044"use strict";
1045
1046var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
1047
1048var call = Function.prototype.call;
1049// eslint-disable-next-line es/no-function-prototype-bind -- safe
1050module.exports = NATIVE_BIND ? call.bind(call) : function () {
1051  return call.apply(call, arguments);
1052};
1053
1054
1055/***/ }),
1056
vendor: 1,199 bytes, lines 1057-1085
1057/***/ "./node_modules/core-js/internals/function-name.js":
1058/*!*********************************************************!*\
1059  !*** ./node_modules/core-js/internals/function-name.js ***!
1060  \*********************************************************/
1061/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1062
1063"use strict";
1064
1065var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
1066var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
1067
1068var FunctionPrototype = Function.prototype;
1069// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
1070var getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;
1071
1072var EXISTS = hasOwn(FunctionPrototype, 'name');
1073// additional protection from minified / mangled / dropped function names
1074var PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';
1075var CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));
1076
1077module.exports = {
1078  EXISTS: EXISTS,
1079  PROPER: PROPER,
1080  CONFIGURABLE: CONFIGURABLE
1081};
1082
1083
1084/***/ }),
1085
vendor: 898 bytes, lines 1086-1106
1086/***/ "./node_modules/core-js/internals/function-uncurry-this-clause.js":
1087/*!************************************************************************!*\
1088  !*** ./node_modules/core-js/internals/function-uncurry-this-clause.js ***!
1089  \************************************************************************/
1090/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1091
1092"use strict";
1093
1094var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
1095var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
1096
1097module.exports = function (fn) {
1098  // Nashorn bug:
1099  //   https://github.com/zloirock/core-js/issues/1128
1100  //   https://github.com/zloirock/core-js/issues/1130
1101  if (classofRaw(fn) === 'Function') return uncurryThis(fn);
1102};
1103
1104
1105/***/ }),
1106
vendor: 888 bytes, lines 1107-1130
1107/***/ "./node_modules/core-js/internals/function-uncurry-this.js":
1108/*!*****************************************************************!*\
1109  !*** ./node_modules/core-js/internals/function-uncurry-this.js ***!
1110  \*****************************************************************/
1111/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1112
1113"use strict";
1114
1115var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js");
1116
1117var FunctionPrototype = Function.prototype;
1118var call = FunctionPrototype.call;
1119// eslint-disable-next-line es/no-function-prototype-bind -- safe
1120var uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);
1121
1122module.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {
1123  return function () {
1124    return call.apply(fn, arguments);
1125  };
1126};
1127
1128
1129/***/ }),
1130
vendor: 858 bytes, lines 1131-1152
1131/***/ "./node_modules/core-js/internals/get-built-in.js":
1132/*!********************************************************!*\
1133  !*** ./node_modules/core-js/internals/get-built-in.js ***!
1134  \********************************************************/
1135/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1136
1137"use strict";
1138
1139var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
1140var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
1141
1142var aFunction = function (argument) {
1143  return isCallable(argument) ? argument : undefined;
1144};
1145
1146module.exports = function (namespace, method) {
1147  return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];
1148};
1149
1150
1151/***/ }),
1152
vendor: 799 bytes, lines 1153-1173
1153/***/ "./node_modules/core-js/internals/get-method.js":
1154/*!******************************************************!*\
1155  !*** ./node_modules/core-js/internals/get-method.js ***!
1156  \******************************************************/
1157/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1158
1159"use strict";
1160
1161var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js");
1162var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
1163
1164// `GetMethod` abstract operation
1165// https://tc39.es/ecma262/#sec-getmethod
1166module.exports = function (V, P) {
1167  var func = V[P];
1168  return isNullOrUndefined(func) ? undefined : aCallable(func);
1169};
1170
1171
1172/***/ }),
1173
vendor: 2,126 bytes, lines 1174-1230
1174/***/ "./node_modules/core-js/internals/get-substitution.js":
1175/*!************************************************************!*\
1176  !*** ./node_modules/core-js/internals/get-substitution.js ***!
1177  \************************************************************/
1178/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1179
1180"use strict";
1181
1182var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
1183var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
1184
1185var floor = Math.floor;
1186var charAt = uncurryThis(''.charAt);
1187var replace = uncurryThis(''.replace);
1188var stringSlice = uncurryThis(''.slice);
1189// eslint-disable-next-line redos/no-vulnerable -- safe
1190var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
1191var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;
1192
1193// `GetSubstitution` abstract operation
1194// https://tc39.es/ecma262/#sec-getsubstitution
1195module.exports = function (matched, str, position, captures, namedCaptures, replacement) {
1196  var tailPos = position + matched.length;
1197  var m = captures.length;
1198  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
1199  if (namedCaptures !== undefined) {
1200    namedCaptures = toObject(namedCaptures);
1201    symbols = SUBSTITUTION_SYMBOLS;
1202  }
1203  return replace(replacement, symbols, function (match, ch) {
1204    var capture;
1205    switch (charAt(ch, 0)) {
1206      case '$': return '$';
1207      case '&': return matched;
1208      case '`': return stringSlice(str, 0, position);
1209      case "'": return stringSlice(str, tailPos);
1210      case '<':
1211        capture = namedCaptures[stringSlice(ch, 1, -1)];
1212        break;
1213      default: // \d\d?
1214        var n = +ch;
1215        if (n === 0) return match;
1216        if (n > m) {
1217          var f = floor(n / 10);
1218          if (f === 0) return match;
1219          if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);
1220          return match;
1221        }
1222        capture = captures[n - 1];
1223    }
1224    return capture === undefined ? '' : capture;
1225  });
1226};
1227
1228
1229/***/ }),
1230
vendor: 1,006 bytes, lines 1231-1257
1231/***/ "./node_modules/core-js/internals/global-this.js":
1232/*!*******************************************************!*\
1233  !*** ./node_modules/core-js/internals/global-this.js ***!
1234  \*******************************************************/
1235/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1236
1237"use strict";
1238
1239var check = function (it) {
1240  return it && it.Math === Math && it;
1241};
1242
1243// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
1244module.exports =
1245  // eslint-disable-next-line es/no-global-this -- safe
1246  check(typeof globalThis == 'object' && globalThis) ||
1247  check(typeof window == 'object' && window) ||
1248  // eslint-disable-next-line no-restricted-globals -- safe
1249  check(typeof self == 'object' && self) ||
1250  check(typeof __webpack_require__.g == 'object' && __webpack_require__.g) ||
1251  check(typeof this == 'object' && this) ||
1252  // eslint-disable-next-line no-new-func -- fallback
1253  (function () { return this; })() || Function('return this')();
1254
1255
1256/***/ }),
1257
vendor: 923 bytes, lines 1258-1280
1258/***/ "./node_modules/core-js/internals/has-own-property.js":
1259/*!************************************************************!*\
1260  !*** ./node_modules/core-js/internals/has-own-property.js ***!
1261  \************************************************************/
1262/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1263
1264"use strict";
1265
1266var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
1267var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
1268
1269var hasOwnProperty = uncurryThis({}.hasOwnProperty);
1270
1271// `HasOwnProperty` abstract operation
1272// https://tc39.es/ecma262/#sec-hasownproperty
1273// eslint-disable-next-line es/no-object-hasown -- safe
1274module.exports = Object.hasOwn || function hasOwn(it, key) {
1275  return hasOwnProperty(toObject(it), key);
1276};
1277
1278
1279/***/ }),
1280
vendor: 315 bytes, lines 1281-1293
1281/***/ "./node_modules/core-js/internals/hidden-keys.js":
1282/*!*******************************************************!*\
1283  !*** ./node_modules/core-js/internals/hidden-keys.js ***!
1284  \*******************************************************/
1285/***/ (function(module) {
1286
1287"use strict";
1288
1289module.exports = {};
1290
1291
1292/***/ }),
1293
vendor: 497 bytes, lines 1294-1308
1294/***/ "./node_modules/core-js/internals/html.js":
1295/*!************************************************!*\
1296  !*** ./node_modules/core-js/internals/html.js ***!
1297  \************************************************/
1298/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1299
1300"use strict";
1301
1302var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
1303
1304module.exports = getBuiltIn('document', 'documentElement');
1305
1306
1307/***/ }),
1308
vendor: 1,023 bytes, lines 1309-1331
1309/***/ "./node_modules/core-js/internals/ie8-dom-define.js":
1310/*!**********************************************************!*\
1311  !*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
1312  \**********************************************************/
1313/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1314
1315"use strict";
1316
1317var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
1318var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
1319var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
1320
1321// Thanks to IE8 for its funny defineProperty
1322module.exports = !DESCRIPTORS && !fails(function () {
1323  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
1324  return Object.defineProperty(createElement('div'), 'a', {
1325    get: function () { return 7; }
1326  }).a !== 7;
1327});
1328
1329
1330/***/ }),
1331
vendor: 1,168 bytes, lines 1332-1358
1332/***/ "./node_modules/core-js/internals/indexed-object.js":
1333/*!**********************************************************!*\
1334  !*** ./node_modules/core-js/internals/indexed-object.js ***!
1335  \**********************************************************/
1336/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1337
1338"use strict";
1339
1340var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
1341var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
1342var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
1343
1344var $Object = Object;
1345var split = uncurryThis(''.split);
1346
1347// fallback for non-array-like ES3 and non-enumerable old V8 strings
1348module.exports = fails(function () {
1349  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
1350  // eslint-disable-next-line no-prototype-builtins -- safe
1351  return !$Object('z').propertyIsEnumerable(0);
1352}) ? function (it) {
1353  return classof(it) === 'String' ? split(it, '') : $Object(it);
1354} : $Object;
1355
1356
1357/***/ }),
1358
vendor: 1,030 bytes, lines 1359-1384
1359/***/ "./node_modules/core-js/internals/inspect-source.js":
1360/*!**********************************************************!*\
1361  !*** ./node_modules/core-js/internals/inspect-source.js ***!
1362  \**********************************************************/
1363/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1364
1365"use strict";
1366
1367var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
1368var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
1369var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
1370
1371var functionToString = uncurryThis(Function.toString);
1372
1373// this helper broken in `[email protected]`, so we can't use `shared` helper
1374if (!isCallable(store.inspectSource)) {
1375  store.inspectSource = function (it) {
1376    return functionToString(it);
1377  };
1378}
1379
1380module.exports = store.inspectSource;
1381
1382
1383/***/ }),
1384
vendor: 3,016 bytes, lines 1385-1466
1385/***/ "./node_modules/core-js/internals/internal-state.js":
1386/*!**********************************************************!*\
1387  !*** ./node_modules/core-js/internals/internal-state.js ***!
1388  \**********************************************************/
1389/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1390
1391"use strict";
1392
1393var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/weak-map-basic-detection */ "./node_modules/core-js/internals/weak-map-basic-detection.js");
1394var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
1395var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
1396var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
1397var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
1398var shared = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
1399var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
1400var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
1401
1402var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
1403var TypeError = globalThis.TypeError;
1404var WeakMap = globalThis.WeakMap;
1405var set, get, has;
1406
1407var enforce = function (it) {
1408  return has(it) ? get(it) : set(it, {});
1409};
1410
1411var getterFor = function (TYPE) {
1412  return function (it) {
1413    var state;
1414    if (!isObject(it) || (state = get(it)).type !== TYPE) {
1415      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');
1416    } return state;
1417  };
1418};
1419
1420if (NATIVE_WEAK_MAP || shared.state) {
1421  var store = shared.state || (shared.state = new WeakMap());
1422  /* eslint-disable no-self-assign -- prototype methods protection */
1423  store.get = store.get;
1424  store.has = store.has;
1425  store.set = store.set;
1426  /* eslint-enable no-self-assign -- prototype methods protection */
1427  set = function (it, metadata) {
1428    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
1429    metadata.facade = it;
1430    store.set(it, metadata);
1431    return metadata;
1432  };
1433  get = function (it) {
1434    return store.get(it) || {};
1435  };
1436  has = function (it) {
1437    return store.has(it);
1438  };
1439} else {
1440  var STATE = sharedKey('state');
1441  hiddenKeys[STATE] = true;
1442  set = function (it, metadata) {
1443    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
1444    metadata.facade = it;
1445    createNonEnumerableProperty(it, STATE, metadata);
1446    return metadata;
1447  };
1448  get = function (it) {
1449    return hasOwn(it, STATE) ? it[STATE] : {};
1450  };
1451  has = function (it) {
1452    return hasOwn(it, STATE);
1453  };
1454}
1455
1456module.exports = {
1457  set: set,
1458  get: get,
1459  has: has,
1460  enforce: enforce,
1461  getterFor: getterFor
1462};
1463
1464
1465/***/ }),
1466
vendor: 682 bytes, lines 1467-1486
1467/***/ "./node_modules/core-js/internals/is-array.js":
1468/*!****************************************************!*\
1469  !*** ./node_modules/core-js/internals/is-array.js ***!
1470  \****************************************************/
1471/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1472
1473"use strict";
1474
1475var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
1476
1477// `IsArray` abstract operation
1478// https://tc39.es/ecma262/#sec-isarray
1479// eslint-disable-next-line es/no-array-isarray -- safe
1480module.exports = Array.isArray || function isArray(argument) {
1481  return classof(argument) === 'Array';
1482};
1483
1484
1485/***/ }),
1486
vendor: 813 bytes, lines 1487-1509
1487/***/ "./node_modules/core-js/internals/is-callable.js":
1488/*!*******************************************************!*\
1489  !*** ./node_modules/core-js/internals/is-callable.js ***!
1490  \*******************************************************/
1491/***/ (function(module) {
1492
1493"use strict";
1494
1495// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot
1496var documentAll = typeof document == 'object' && document.all;
1497
1498// `IsCallable` abstract operation
1499// https://tc39.es/ecma262/#sec-iscallable
1500// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing
1501module.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {
1502  return typeof argument == 'function' || argument === documentAll;
1503} : function (argument) {
1504  return typeof argument == 'function';
1505};
1506
1507
1508/***/ }),
1509
vendor: 2,541 bytes, lines 1510-1572
1510/***/ "./node_modules/core-js/internals/is-constructor.js":
1511/*!**********************************************************!*\
1512  !*** ./node_modules/core-js/internals/is-constructor.js ***!
1513  \**********************************************************/
1514/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1515
1516"use strict";
1517
1518var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
1519var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
1520var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
1521var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
1522var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
1523var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js");
1524
1525var noop = function () { /* empty */ };
1526var construct = getBuiltIn('Reflect', 'construct');
1527var constructorRegExp = /^\s*(?:class|function)\b/;
1528var exec = uncurryThis(constructorRegExp.exec);
1529var INCORRECT_TO_STRING = !constructorRegExp.test(noop);
1530
1531var isConstructorModern = function isConstructor(argument) {
1532  if (!isCallable(argument)) return false;
1533  try {
1534    construct(noop, [], argument);
1535    return true;
1536  } catch (error) {
1537    return false;
1538  }
1539};
1540
1541var isConstructorLegacy = function isConstructor(argument) {
1542  if (!isCallable(argument)) return false;
1543  switch (classof(argument)) {
1544    case 'AsyncFunction':
1545    case 'GeneratorFunction':
1546    case 'AsyncGeneratorFunction': return false;
1547  }
1548  try {
1549    // we can't check .prototype since constructors produced by .bind haven't it
1550    // `Function#toString` throws on some built-it function in some legacy engines
1551    // (for example, `DOMQuad` and similar in FF41-)
1552    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));
1553  } catch (error) {
1554    return true;
1555  }
1556};
1557
1558isConstructorLegacy.sham = true;
1559
1560// `IsConstructor` abstract operation
1561// https://tc39.es/ecma262/#sec-isconstructor
1562module.exports = !construct || fails(function () {
1563  var called;
1564  return isConstructorModern(isConstructorModern.call)
1565    || !isConstructorModern(Object)
1566    || !isConstructorModern(function () { called = true; })
1567    || called;
1568}) ? isConstructorLegacy : isConstructorModern;
1569
1570
1571/***/ }),
1572
vendor: 1,081 bytes, lines 1573-1606
1573/***/ "./node_modules/core-js/internals/is-forced.js":
1574/*!*****************************************************!*\
1575  !*** ./node_modules/core-js/internals/is-forced.js ***!
1576  \*****************************************************/
1577/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1578
1579"use strict";
1580
1581var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
1582var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
1583
1584var replacement = /#|\.prototype\./;
1585
1586var isForced = function (feature, detection) {
1587  var value = data[normalize(feature)];
1588  return value === POLYFILL ? true
1589    : value === NATIVE ? false
1590    : isCallable(detection) ? fails(detection)
1591    : !!detection;
1592};
1593
1594var normalize = isForced.normalize = function (string) {
1595  return String(string).replace(replacement, '.').toLowerCase();
1596};
1597
1598var data = isForced.data = {};
1599var NATIVE = isForced.NATIVE = 'N';
1600var POLYFILL = isForced.POLYFILL = 'P';
1601
1602module.exports = isForced;
1603
1604
1605/***/ }),
1606
vendor: 539 bytes, lines 1607-1623
1607/***/ "./node_modules/core-js/internals/is-null-or-undefined.js":
1608/*!****************************************************************!*\
1609  !*** ./node_modules/core-js/internals/is-null-or-undefined.js ***!
1610  \****************************************************************/
1611/***/ (function(module) {
1612
1613"use strict";
1614
1615// we can't use just `it == null` since of `document.all` special case
1616// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec
1617module.exports = function (it) {
1618  return it === null || it === undefined;
1619};
1620
1621
1622/***/ }),
1623
vendor: 554 bytes, lines 1624-1640
1624/***/ "./node_modules/core-js/internals/is-object.js":
1625/*!*****************************************************!*\
1626  !*** ./node_modules/core-js/internals/is-object.js ***!
1627  \*****************************************************/
1628/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1629
1630"use strict";
1631
1632var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
1633
1634module.exports = function (it) {
1635  return typeof it == 'object' ? it !== null : isCallable(it);
1636};
1637
1638
1639/***/ }),
1640
vendor: 302 bytes, lines 1641-1653
1641/***/ "./node_modules/core-js/internals/is-pure.js":
1642/*!***************************************************!*\
1643  !*** ./node_modules/core-js/internals/is-pure.js ***!
1644  \***************************************************/
1645/***/ (function(module) {
1646
1647"use strict";
1648
1649module.exports = false;
1650
1651
1652/***/ }),
1653
vendor: 975 bytes, lines 1654-1677
1654/***/ "./node_modules/core-js/internals/is-regexp.js":
1655/*!*****************************************************!*\
1656  !*** ./node_modules/core-js/internals/is-regexp.js ***!
1657  \*****************************************************/
1658/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1659
1660"use strict";
1661
1662var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
1663var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
1664var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
1665
1666var MATCH = wellKnownSymbol('match');
1667
1668// `IsRegExp` abstract operation
1669// https://tc39.es/ecma262/#sec-isregexp
1670module.exports = function (it) {
1671  var isRegExp;
1672  return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classof(it) === 'RegExp');
1673};
1674
1675
1676/***/ }),
1677
vendor: 1,112 bytes, lines 1678-1702
1678/***/ "./node_modules/core-js/internals/is-symbol.js":
1679/*!*****************************************************!*\
1680  !*** ./node_modules/core-js/internals/is-symbol.js ***!
1681  \*****************************************************/
1682/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1683
1684"use strict";
1685
1686var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
1687var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
1688var isPrototypeOf = __webpack_require__(/*! ../internals/object-is-prototype-of */ "./node_modules/core-js/internals/object-is-prototype-of.js");
1689var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js");
1690
1691var $Object = Object;
1692
1693module.exports = USE_SYMBOL_AS_UID ? function (it) {
1694  return typeof it == 'symbol';
1695} : function (it) {
1696  var $Symbol = getBuiltIn('Symbol');
1697  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));
1698};
1699
1700
1701/***/ }),
1702
vendor: 653 bytes, lines 1703-1721
1703/***/ "./node_modules/core-js/internals/length-of-array-like.js":
1704/*!****************************************************************!*\
1705  !*** ./node_modules/core-js/internals/length-of-array-like.js ***!
1706  \****************************************************************/
1707/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1708
1709"use strict";
1710
1711var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
1712
1713// `LengthOfArrayLike` abstract operation
1714// https://tc39.es/ecma262/#sec-lengthofarraylike
1715module.exports = function (obj) {
1716  return toLength(obj.length);
1717};
1718
1719
1720/***/ }),
1721
vendor: 3,500 bytes, lines 1722-1787
1722/***/ "./node_modules/core-js/internals/make-built-in.js":
1723/*!*********************************************************!*\
1724  !*** ./node_modules/core-js/internals/make-built-in.js ***!
1725  \*********************************************************/
1726/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1727
1728"use strict";
1729
1730var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
1731var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
1732var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
1733var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
1734var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
1735var CONFIGURABLE_FUNCTION_NAME = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").CONFIGURABLE);
1736var inspectSource = __webpack_require__(/*! ../internals/inspect-source */ "./node_modules/core-js/internals/inspect-source.js");
1737var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
1738
1739var enforceInternalState = InternalStateModule.enforce;
1740var getInternalState = InternalStateModule.get;
1741var $String = String;
1742// eslint-disable-next-line es/no-object-defineproperty -- safe
1743var defineProperty = Object.defineProperty;
1744var stringSlice = uncurryThis(''.slice);
1745var replace = uncurryThis(''.replace);
1746var join = uncurryThis([].join);
1747
1748var CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {
1749  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;
1750});
1751
1752var TEMPLATE = String(String).split('String');
1753
1754var makeBuiltIn = module.exports = function (value, name, options) {
1755  if (stringSlice($String(name), 0, 7) === 'Symbol(') {
1756    name = '[' + replace($String(name), /^Symbol\(([^)]*)\).*$/, '$1') + ']';
1757  }
1758  if (options && options.getter) name = 'get ' + name;
1759  if (options && options.setter) name = 'set ' + name;
1760  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {
1761    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });
1762    else value.name = name;
1763  }
1764  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {
1765    defineProperty(value, 'length', { value: options.arity });
1766  }
1767  try {
1768    if (options && hasOwn(options, 'constructor') && options.constructor) {
1769      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });
1770    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable
1771    } else if (value.prototype) value.prototype = undefined;
1772  } catch (error) { /* empty */ }
1773  var state = enforceInternalState(value);
1774  if (!hasOwn(state, 'source')) {
1775    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');
1776  } return value;
1777};
1778
1779// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
1780// eslint-disable-next-line no-extend-native -- required
1781Function.prototype.toString = makeBuiltIn(function toString() {
1782  return isCallable(this) && getInternalState(this).source || inspectSource(this);
1783}, 'toString');
1784
1785
1786/***/ }),
1787
vendor: 560 bytes, lines 1788-1809
1788/***/ "./node_modules/core-js/internals/math-trunc.js":
1789/*!******************************************************!*\
1790  !*** ./node_modules/core-js/internals/math-trunc.js ***!
1791  \******************************************************/
1792/***/ (function(module) {
1793
1794"use strict";
1795
1796var ceil = Math.ceil;
1797var floor = Math.floor;
1798
1799// `Math.trunc` method
1800// https://tc39.es/ecma262/#sec-math.trunc
1801// eslint-disable-next-line es/no-math-trunc -- safe
1802module.exports = Math.trunc || function trunc(x) {
1803  var n = +x;
1804  return (n > 0 ? floor : ceil)(n);
1805};
1806
1807
1808/***/ }),
1809
vendor: 638 bytes, lines 1810-1830
1810/***/ "./node_modules/core-js/internals/not-a-regexp.js":
1811/*!********************************************************!*\
1812  !*** ./node_modules/core-js/internals/not-a-regexp.js ***!
1813  \********************************************************/
1814/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1815
1816"use strict";
1817
1818var isRegExp = __webpack_require__(/*! ../internals/is-regexp */ "./node_modules/core-js/internals/is-regexp.js");
1819
1820var $TypeError = TypeError;
1821
1822module.exports = function (it) {
1823  if (isRegExp(it)) {
1824    throw new $TypeError("The method doesn't accept regular expressions");
1825  } return it;
1826};
1827
1828
1829/***/ }),
1830
vendor: 3,958 bytes, lines 1831-1926
1831/***/ "./node_modules/core-js/internals/object-create.js":
1832/*!*********************************************************!*\
1833  !*** ./node_modules/core-js/internals/object-create.js ***!
1834  \*********************************************************/
1835/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
1836
1837"use strict";
1838
1839/* global ActiveXObject -- old IE, WSH */
1840var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
1841var definePropertiesModule = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
1842var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
1843var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
1844var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
1845var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
1846var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
1847
1848var GT = '>';
1849var LT = '<';
1850var PROTOTYPE = 'prototype';
1851var SCRIPT = 'script';
1852var IE_PROTO = sharedKey('IE_PROTO');
1853
1854var EmptyConstructor = function () { /* empty */ };
1855
1856var scriptTag = function (content) {
1857  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
1858};
1859
1860// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
1861var NullProtoObjectViaActiveX = function (activeXDocument) {
1862  activeXDocument.write(scriptTag(''));
1863  activeXDocument.close();
1864  var temp = activeXDocument.parentWindow.Object;
1865  // eslint-disable-next-line no-useless-assignment -- avoid memory leak
1866  activeXDocument = null;
1867  return temp;
1868};
1869
1870// Create object with fake `null` prototype: use iframe Object with cleared prototype
1871var NullProtoObjectViaIFrame = function () {
1872  // Thrash, waste and sodomy: IE GC bug
1873  var iframe = documentCreateElement('iframe');
1874  var JS = 'java' + SCRIPT + ':';
1875  var iframeDocument;
1876  iframe.style.display = 'none';
1877  html.appendChild(iframe);
1878  // https://github.com/zloirock/core-js/issues/475
1879  iframe.src = String(JS);
1880  iframeDocument = iframe.contentWindow.document;
1881  iframeDocument.open();
1882  iframeDocument.write(scriptTag('document.F=Object'));
1883  iframeDocument.close();
1884  return iframeDocument.F;
1885};
1886
1887// Check for document.domain and active x support
1888// No need to use active x approach when document.domain is not set
1889// see https://github.com/es-shims/es5-shim/issues/150
1890// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
1891// avoid IE GC bug
1892var activeXDocument;
1893var NullProtoObject = function () {
1894  try {
1895    activeXDocument = new ActiveXObject('htmlfile');
1896  } catch (error) { /* ignore */ }
1897  NullProtoObject = typeof document != 'undefined'
1898    ? document.domain && activeXDocument
1899      ? NullProtoObjectViaActiveX(activeXDocument) // old IE
1900      : NullProtoObjectViaIFrame()
1901    : NullProtoObjectViaActiveX(activeXDocument); // WSH
1902  var length = enumBugKeys.length;
1903  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
1904  return NullProtoObject();
1905};
1906
1907hiddenKeys[IE_PROTO] = true;
1908
1909// `Object.create` method
1910// https://tc39.es/ecma262/#sec-object.create
1911// eslint-disable-next-line es/no-object-create -- safe
1912module.exports = Object.create || function create(O, Properties) {
1913  var result;
1914  if (O !== null) {
1915    EmptyConstructor[PROTOTYPE] = anObject(O);
1916    result = new EmptyConstructor();
1917    EmptyConstructor[PROTOTYPE] = null;
1918    // add "__proto__" for Object.getPrototypeOf polyfill
1919    result[IE_PROTO] = O;
1920  } else result = NullProtoObject();
1921  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
1922};
1923
1924
1925/***/ }),
1926
vendor: 1,733 bytes, lines 1927-1958
1927/***/ "./node_modules/core-js/internals/object-define-properties.js":
1928/*!********************************************************************!*\
1929  !*** ./node_modules/core-js/internals/object-define-properties.js ***!
1930  \********************************************************************/
1931/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1932
1933"use strict";
1934
1935var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
1936var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js");
1937var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
1938var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
1939var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
1940var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");
1941
1942// `Object.defineProperties` method
1943// https://tc39.es/ecma262/#sec-object.defineproperties
1944// eslint-disable-next-line es/no-object-defineproperties -- safe
1945exports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {
1946  anObject(O);
1947  var props = toIndexedObject(Properties);
1948  var keys = objectKeys(Properties);
1949  var length = keys.length;
1950  var index = 0;
1951  var key;
1952  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);
1953  return O;
1954};
1955
1956
1957/***/ }),
1958
vendor: 2,618 bytes, lines 1959-2013
1959/***/ "./node_modules/core-js/internals/object-define-property.js":
1960/*!******************************************************************!*\
1961  !*** ./node_modules/core-js/internals/object-define-property.js ***!
1962  \******************************************************************/
1963/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
1964
1965"use strict";
1966
1967var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
1968var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
1969var V8_PROTOTYPE_DEFINE_BUG = __webpack_require__(/*! ../internals/v8-prototype-define-bug */ "./node_modules/core-js/internals/v8-prototype-define-bug.js");
1970var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
1971var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js");
1972
1973var $TypeError = TypeError;
1974// eslint-disable-next-line es/no-object-defineproperty -- safe
1975var $defineProperty = Object.defineProperty;
1976// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
1977var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
1978var ENUMERABLE = 'enumerable';
1979var CONFIGURABLE = 'configurable';
1980var WRITABLE = 'writable';
1981
1982// `Object.defineProperty` method
1983// https://tc39.es/ecma262/#sec-object.defineproperty
1984exports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {
1985  anObject(O);
1986  P = toPropertyKey(P);
1987  anObject(Attributes);
1988  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {
1989    var current = $getOwnPropertyDescriptor(O, P);
1990    if (current && current[WRITABLE]) {
1991      O[P] = Attributes.value;
1992      Attributes = {
1993        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],
1994        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],
1995        writable: false
1996      };
1997    }
1998  } return $defineProperty(O, P, Attributes);
1999} : $defineProperty : function defineProperty(O, P, Attributes) {
2000  anObject(O);
2001  P = toPropertyKey(P);
2002  anObject(Attributes);
2003  if (IE8_DOM_DEFINE) try {
2004    return $defineProperty(O, P, Attributes);
2005  } catch (error) { /* empty */ }
2006  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');
2007  if ('value' in Attributes) O[P] = Attributes.value;
2008  return O;
2009};
2010
2011
2012/***/ }),
2013
vendor: 2,146 bytes, lines 2014-2047
2014/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js":
2015/*!******************************************************************************!*\
2016  !*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!
2017  \******************************************************************************/
2018/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2019
2020"use strict";
2021
2022var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
2023var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
2024var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js");
2025var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
2026var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
2027var toPropertyKey = __webpack_require__(/*! ../internals/to-property-key */ "./node_modules/core-js/internals/to-property-key.js");
2028var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
2029var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
2030
2031// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
2032var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
2033
2034// `Object.getOwnPropertyDescriptor` method
2035// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
2036exports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
2037  O = toIndexedObject(O);
2038  P = toPropertyKey(P);
2039  if (IE8_DOM_DEFINE) try {
2040    return $getOwnPropertyDescriptor(O, P);
2041  } catch (error) { /* empty */ }
2042  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);
2043};
2044
2045
2046/***/ }),
2047
vendor: 1,038 bytes, lines 2048-2070
2048/***/ "./node_modules/core-js/internals/object-get-own-property-names.js":
2049/*!*************************************************************************!*\
2050  !*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!
2051  \*************************************************************************/
2052/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
2053
2054"use strict";
2055
2056var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
2057var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
2058
2059var hiddenKeys = enumBugKeys.concat('length', 'prototype');
2060
2061// `Object.getOwnPropertyNames` method
2062// https://tc39.es/ecma262/#sec-object.getownpropertynames
2063// eslint-disable-next-line es/no-object-getownpropertynames -- safe
2064exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
2065  return internalObjectKeys(O, hiddenKeys);
2066};
2067
2068
2069/***/ }),
2070
vendor: 513 bytes, lines 2071-2084
2071/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js":
2072/*!***************************************************************************!*\
2073  !*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!
2074  \***************************************************************************/
2075/***/ (function(__unused_webpack_module, exports) {
2076
2077"use strict";
2078
2079// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
2080exports.f = Object.getOwnPropertySymbols;
2081
2082
2083/***/ }),
2084
vendor: 576 bytes, lines 2085-2099
2085/***/ "./node_modules/core-js/internals/object-is-prototype-of.js":
2086/*!******************************************************************!*\
2087  !*** ./node_modules/core-js/internals/object-is-prototype-of.js ***!
2088  \******************************************************************/
2089/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2090
2091"use strict";
2092
2093var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
2094
2095module.exports = uncurryThis({}.isPrototypeOf);
2096
2097
2098/***/ }),
2099
vendor: 1,446 bytes, lines 2100-2131
2100/***/ "./node_modules/core-js/internals/object-keys-internal.js":
2101/*!****************************************************************!*\
2102  !*** ./node_modules/core-js/internals/object-keys-internal.js ***!
2103  \****************************************************************/
2104/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2105
2106"use strict";
2107
2108var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
2109var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
2110var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
2111var indexOf = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").indexOf);
2112var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
2113
2114var push = uncurryThis([].push);
2115
2116module.exports = function (object, names) {
2117  var O = toIndexedObject(object);
2118  var i = 0;
2119  var result = [];
2120  var key;
2121  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);
2122  // Don't enum bug & hidden keys
2123  while (names.length > i) if (hasOwn(O, key = names[i++])) {
2124    ~indexOf(result, key) || push(result, key);
2125  }
2126  return result;
2127};
2128
2129
2130/***/ }),
2131
vendor: 836 bytes, lines 2132-2152
2132/***/ "./node_modules/core-js/internals/object-keys.js":
2133/*!*******************************************************!*\
2134  !*** ./node_modules/core-js/internals/object-keys.js ***!
2135  \*******************************************************/
2136/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2137
2138"use strict";
2139
2140var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
2141var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
2142
2143// `Object.keys` method
2144// https://tc39.es/ecma262/#sec-object.keys
2145// eslint-disable-next-line es/no-object-keys -- safe
2146module.exports = Object.keys || function keys(O) {
2147  return internalObjectKeys(O, enumBugKeys);
2148};
2149
2150
2151/***/ }),
2152
vendor: 1,020 bytes, lines 2153-2177
2153/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js":
2154/*!*************************************************************************!*\
2155  !*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!
2156  \*************************************************************************/
2157/***/ (function(__unused_webpack_module, exports) {
2158
2159"use strict";
2160
2161var $propertyIsEnumerable = {}.propertyIsEnumerable;
2162// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
2163var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
2164
2165// Nashorn ~ JDK8 bug
2166var NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);
2167
2168// `Object.prototype.propertyIsEnumerable` method implementation
2169// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
2170exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
2171  var descriptor = getOwnPropertyDescriptor(this, V);
2172  return !!descriptor && descriptor.enumerable;
2173} : $propertyIsEnumerable;
2174
2175
2176/***/ }),
2177
vendor: 858 bytes, lines 2178-2197
2178/***/ "./node_modules/core-js/internals/object-to-string.js":
2179/*!************************************************************!*\
2180  !*** ./node_modules/core-js/internals/object-to-string.js ***!
2181  \************************************************************/
2182/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2183
2184"use strict";
2185
2186var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js");
2187var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
2188
2189// `Object.prototype.toString` method implementation
2190// https://tc39.es/ecma262/#sec-object.prototype.tostring
2191module.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {
2192  return '[object ' + classof(this) + ']';
2193};
2194
2195
2196/***/ }),
2197
vendor: 1,291 bytes, lines 2198-2224
2198/***/ "./node_modules/core-js/internals/ordinary-to-primitive.js":
2199/*!*****************************************************************!*\
2200  !*** ./node_modules/core-js/internals/ordinary-to-primitive.js ***!
2201  \*****************************************************************/
2202/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2203
2204"use strict";
2205
2206var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
2207var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
2208var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
2209
2210var $TypeError = TypeError;
2211
2212// `OrdinaryToPrimitive` abstract operation
2213// https://tc39.es/ecma262/#sec-ordinarytoprimitive
2214module.exports = function (input, pref) {
2215  var fn, val;
2216  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
2217  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;
2218  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;
2219  throw new $TypeError("Can't convert object to primitive value");
2220};
2221
2222
2223/***/ }),
2224
vendor: 1,431 bytes, lines 2225-2250
2225/***/ "./node_modules/core-js/internals/own-keys.js":
2226/*!****************************************************!*\
2227  !*** ./node_modules/core-js/internals/own-keys.js ***!
2228  \****************************************************/
2229/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2230
2231"use strict";
2232
2233var getBuiltIn = __webpack_require__(/*! ../internals/get-built-in */ "./node_modules/core-js/internals/get-built-in.js");
2234var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
2235var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js");
2236var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js");
2237var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
2238
2239var concat = uncurryThis([].concat);
2240
2241// all object keys, includes non-enumerable and symbols
2242module.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
2243  var keys = getOwnPropertyNamesModule.f(anObject(it));
2244  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
2245  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;
2246};
2247
2248
2249/***/ }),
2250
vendor: 1,398 bytes, lines 2251-2282
2251/***/ "./node_modules/core-js/internals/regexp-exec-abstract.js":
2252/*!****************************************************************!*\
2253  !*** ./node_modules/core-js/internals/regexp-exec-abstract.js ***!
2254  \****************************************************************/
2255/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2256
2257"use strict";
2258
2259var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
2260var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
2261var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
2262var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
2263var regexpExec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
2264
2265var $TypeError = TypeError;
2266
2267// `RegExpExec` abstract operation
2268// https://tc39.es/ecma262/#sec-regexpexec
2269module.exports = function (R, S) {
2270  var exec = R.exec;
2271  if (isCallable(exec)) {
2272    var result = call(exec, R, S);
2273    if (result !== null) anObject(result);
2274    return result;
2275  }
2276  if (classof(R) === 'RegExp') return call(regexpExec, R, S);
2277  throw new $TypeError('RegExp#exec called on incompatible receiver');
2278};
2279
2280
2281/***/ }),
2282
vendor: 5,081 bytes, lines 2283-2410
2283/***/ "./node_modules/core-js/internals/regexp-exec.js":
2284/*!*******************************************************!*\
2285  !*** ./node_modules/core-js/internals/regexp-exec.js ***!
2286  \*******************************************************/
2287/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2288
2289"use strict";
2290
2291/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
2292/* eslint-disable regexp/no-useless-quantifier -- testing */
2293var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
2294var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
2295var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
2296var regexpFlags = __webpack_require__(/*! ../internals/regexp-flags */ "./node_modules/core-js/internals/regexp-flags.js");
2297var stickyHelpers = __webpack_require__(/*! ../internals/regexp-sticky-helpers */ "./node_modules/core-js/internals/regexp-sticky-helpers.js");
2298var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
2299var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
2300var getInternalState = (__webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js").get);
2301var UNSUPPORTED_DOT_ALL = __webpack_require__(/*! ../internals/regexp-unsupported-dot-all */ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js");
2302var UNSUPPORTED_NCG = __webpack_require__(/*! ../internals/regexp-unsupported-ncg */ "./node_modules/core-js/internals/regexp-unsupported-ncg.js");
2303
2304var nativeReplace = shared('native-string-replace', String.prototype.replace);
2305var nativeExec = RegExp.prototype.exec;
2306var patchedExec = nativeExec;
2307var charAt = uncurryThis(''.charAt);
2308var indexOf = uncurryThis(''.indexOf);
2309var replace = uncurryThis(''.replace);
2310var stringSlice = uncurryThis(''.slice);
2311
2312var UPDATES_LAST_INDEX_WRONG = (function () {
2313  var re1 = /a/;
2314  var re2 = /b*/g;
2315  call(nativeExec, re1, 'a');
2316  call(nativeExec, re2, 'a');
2317  return re1.lastIndex !== 0 || re2.lastIndex !== 0;
2318})();
2319
2320var UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;
2321
2322// nonparticipating capturing group, copied from es5-shim's String#split patch.
2323var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;
2324
2325var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;
2326
2327if (PATCH) {
2328  patchedExec = function exec(string) {
2329    var re = this;
2330    var state = getInternalState(re);
2331    var str = toString(string);
2332    var raw = state.raw;
2333    var result, reCopy, lastIndex, match, i, object, group;
2334
2335    if (raw) {
2336      raw.lastIndex = re.lastIndex;
2337      result = call(patchedExec, raw, str);
2338      re.lastIndex = raw.lastIndex;
2339      return result;
2340    }
2341
2342    var groups = state.groups;
2343    var sticky = UNSUPPORTED_Y && re.sticky;
2344    var flags = call(regexpFlags, re);
2345    var source = re.source;
2346    var charsAdded = 0;
2347    var strCopy = str;
2348
2349    if (sticky) {
2350      flags = replace(flags, 'y', '');
2351      if (indexOf(flags, 'g') === -1) {
2352        flags += 'g';
2353      }
2354
2355      strCopy = stringSlice(str, re.lastIndex);
2356      // Support anchored sticky behavior.
2357      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\n')) {
2358        source = '(?: ' + source + ')';
2359        strCopy = ' ' + strCopy;
2360        charsAdded++;
2361      }
2362      // ^(? + rx + ) is needed, in combination with some str slicing, to
2363      // simulate the 'y' flag.
2364      reCopy = new RegExp('^(?:' + source + ')', flags);
2365    }
2366
2367    if (NPCG_INCLUDED) {
2368      reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
2369    }
2370    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;
2371
2372    match = call(nativeExec, sticky ? reCopy : re, strCopy);
2373
2374    if (sticky) {
2375      if (match) {
2376        match.input = stringSlice(match.input, charsAdded);
2377        match[0] = stringSlice(match[0], charsAdded);
2378        match.index = re.lastIndex;
2379        re.lastIndex += match[0].length;
2380      } else re.lastIndex = 0;
2381    } else if (UPDATES_LAST_INDEX_WRONG && match) {
2382      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
2383    }
2384    if (NPCG_INCLUDED && match && match.length > 1) {
2385      // Fix browsers whose `exec` methods don't consistently return `undefined`
2386      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/
2387      call(nativeReplace, match[0], reCopy, function () {
2388        for (i = 1; i < arguments.length - 2; i++) {
2389          if (arguments[i] === undefined) match[i] = undefined;
2390        }
2391      });
2392    }
2393
2394    if (match && groups) {
2395      match.groups = object = create(null);
2396      for (i = 0; i < groups.length; i++) {
2397        group = groups[i];
2398        object[group[0]] = match[group[1]];
2399      }
2400    }
2401
2402    return match;
2403  };
2404}
2405
2406module.exports = patchedExec;
2407
2408
2409/***/ }),
2410
vendor: 958 bytes, lines 2411-2439
2411/***/ "./node_modules/core-js/internals/regexp-flags.js":
2412/*!********************************************************!*\
2413  !*** ./node_modules/core-js/internals/regexp-flags.js ***!
2414  \********************************************************/
2415/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2416
2417"use strict";
2418
2419var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
2420
2421// `RegExp.prototype.flags` getter implementation
2422// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
2423module.exports = function () {
2424  var that = anObject(this);
2425  var result = '';
2426  if (that.hasIndices) result += 'd';
2427  if (that.global) result += 'g';
2428  if (that.ignoreCase) result += 'i';
2429  if (that.multiline) result += 'm';
2430  if (that.dotAll) result += 's';
2431  if (that.unicode) result += 'u';
2432  if (that.unicodeSets) result += 'v';
2433  if (that.sticky) result += 'y';
2434  return result;
2435};
2436
2437
2438/***/ }),
2439
vendor: 1,356 bytes, lines 2440-2481
2440/***/ "./node_modules/core-js/internals/regexp-sticky-helpers.js":
2441/*!*****************************************************************!*\
2442  !*** ./node_modules/core-js/internals/regexp-sticky-helpers.js ***!
2443  \*****************************************************************/
2444/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2445
2446"use strict";
2447
2448var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
2449var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
2450
2451// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
2452var $RegExp = globalThis.RegExp;
2453
2454var UNSUPPORTED_Y = fails(function () {
2455  var re = $RegExp('a', 'y');
2456  re.lastIndex = 2;
2457  return re.exec('abcd') !== null;
2458});
2459
2460// UC Browser bug
2461// https://github.com/zloirock/core-js/issues/1008
2462var MISSED_STICKY = UNSUPPORTED_Y || fails(function () {
2463  return !$RegExp('a', 'y').sticky;
2464});
2465
2466var BROKEN_CARET = UNSUPPORTED_Y || fails(function () {
2467  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
2468  var re = $RegExp('^r', 'gy');
2469  re.lastIndex = 2;
2470  return re.exec('str') !== null;
2471});
2472
2473module.exports = {
2474  BROKEN_CARET: BROKEN_CARET,
2475  MISSED_STICKY: MISSED_STICKY,
2476  UNSUPPORTED_Y: UNSUPPORTED_Y
2477};
2478
2479
2480/***/ }),
2481
vendor: 891 bytes, lines 2482-2503
2482/***/ "./node_modules/core-js/internals/regexp-unsupported-dot-all.js":
2483/*!**********************************************************************!*\
2484  !*** ./node_modules/core-js/internals/regexp-unsupported-dot-all.js ***!
2485  \**********************************************************************/
2486/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2487
2488"use strict";
2489
2490var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
2491var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
2492
2493// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
2494var $RegExp = globalThis.RegExp;
2495
2496module.exports = fails(function () {
2497  var re = $RegExp('.', 's');
2498  return !(re.dotAll && re.test('\n') && re.flags === 's');
2499});
2500
2501
2502/***/ }),
2503
vendor: 914 bytes, lines 2504-2526
2504/***/ "./node_modules/core-js/internals/regexp-unsupported-ncg.js":
2505/*!******************************************************************!*\
2506  !*** ./node_modules/core-js/internals/regexp-unsupported-ncg.js ***!
2507  \******************************************************************/
2508/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2509
2510"use strict";
2511
2512var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
2513var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
2514
2515// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
2516var $RegExp = globalThis.RegExp;
2517
2518module.exports = fails(function () {
2519  var re = $RegExp('(?<a>b)', 'g');
2520  return re.exec('b').groups.a !== 'b' ||
2521    'b'.replace(re, '$<a>c') !== 'bc';
2522});
2523
2524
2525/***/ }),
2526
vendor: 801 bytes, lines 2527-2548
2527/***/ "./node_modules/core-js/internals/require-object-coercible.js":
2528/*!********************************************************************!*\
2529  !*** ./node_modules/core-js/internals/require-object-coercible.js ***!
2530  \********************************************************************/
2531/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2532
2533"use strict";
2534
2535var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
2536
2537var $TypeError = TypeError;
2538
2539// `RequireObjectCoercible` abstract operation
2540// https://tc39.es/ecma262/#sec-requireobjectcoercible
2541module.exports = function (it) {
2542  if (isNullOrUndefined(it)) throw new $TypeError("Can't call method on " + it);
2543  return it;
2544};
2545
2546
2547/***/ }),
2548
vendor: 654 bytes, lines 2549-2568
2549/***/ "./node_modules/core-js/internals/shared-key.js":
2550/*!******************************************************!*\
2551  !*** ./node_modules/core-js/internals/shared-key.js ***!
2552  \******************************************************/
2553/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2554
2555"use strict";
2556
2557var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
2558var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
2559
2560var keys = shared('keys');
2561
2562module.exports = function (key) {
2563  return keys[key] || (keys[key] = uid(key));
2564};
2565
2566
2567/***/ }),
2568
vendor: 1,140 bytes, lines 2569-2594
2569/***/ "./node_modules/core-js/internals/shared-store.js":
2570/*!********************************************************!*\
2571  !*** ./node_modules/core-js/internals/shared-store.js ***!
2572  \********************************************************/
2573/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2574
2575"use strict";
2576
2577var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
2578var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
2579var defineGlobalProperty = __webpack_require__(/*! ../internals/define-global-property */ "./node_modules/core-js/internals/define-global-property.js");
2580
2581var SHARED = '__core-js_shared__';
2582var store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});
2583
2584(store.versions || (store.versions = [])).push({
2585  version: '3.41.0',
2586  mode: IS_PURE ? 'pure' : 'global',
2587  copyright: '© 2014-2025 Denis Pushkarev (zloirock.ru)',
2588  license: 'https://github.com/zloirock/core-js/blob/v3.41.0/LICENSE',
2589  source: 'https://github.com/zloirock/core-js'
2590});
2591
2592
2593/***/ }),
2594
vendor: 535 bytes, lines 2595-2611
2595/***/ "./node_modules/core-js/internals/shared.js":
2596/*!**************************************************!*\
2597  !*** ./node_modules/core-js/internals/shared.js ***!
2598  \**************************************************/
2599/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2600
2601"use strict";
2602
2603var store = __webpack_require__(/*! ../internals/shared-store */ "./node_modules/core-js/internals/shared-store.js");
2604
2605module.exports = function (key, value) {
2606  return store[key] || (store[key] = value || {});
2607};
2608
2609
2610/***/ }),
2611
vendor: 2,062 bytes, lines 2612-2659
2612/***/ "./node_modules/core-js/internals/string-multibyte.js":
2613/*!************************************************************!*\
2614  !*** ./node_modules/core-js/internals/string-multibyte.js ***!
2615  \************************************************************/
2616/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2617
2618"use strict";
2619
2620var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
2621var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
2622var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
2623var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
2624
2625var charAt = uncurryThis(''.charAt);
2626var charCodeAt = uncurryThis(''.charCodeAt);
2627var stringSlice = uncurryThis(''.slice);
2628
2629var createMethod = function (CONVERT_TO_STRING) {
2630  return function ($this, pos) {
2631    var S = toString(requireObjectCoercible($this));
2632    var position = toIntegerOrInfinity(pos);
2633    var size = S.length;
2634    var first, second;
2635    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
2636    first = charCodeAt(S, position);
2637    return first < 0xD800 || first > 0xDBFF || position + 1 === size
2638      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF
2639        ? CONVERT_TO_STRING
2640          ? charAt(S, position)
2641          : first
2642        : CONVERT_TO_STRING
2643          ? stringSlice(S, position, position + 2)
2644          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
2645  };
2646};
2647
2648module.exports = {
2649  // `String.prototype.codePointAt` method
2650  // https://tc39.es/ecma262/#sec-string.prototype.codepointat
2651  codeAt: createMethod(false),
2652  // `String.prototype.at` method
2653  // https://github.com/mathiasbynens/String.prototype.at
2654  charAt: createMethod(true)
2655};
2656
2657
2658/***/ }),
2659
vendor: 1,558 bytes, lines 2660-2689
2660/***/ "./node_modules/core-js/internals/symbol-constructor-detection.js":
2661/*!************************************************************************!*\
2662  !*** ./node_modules/core-js/internals/symbol-constructor-detection.js ***!
2663  \************************************************************************/
2664/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2665
2666"use strict";
2667
2668/* eslint-disable es/no-symbol -- required for testing */
2669var V8_VERSION = __webpack_require__(/*! ../internals/environment-v8-version */ "./node_modules/core-js/internals/environment-v8-version.js");
2670var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
2671var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
2672
2673var $String = globalThis.String;
2674
2675// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
2676module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
2677  var symbol = Symbol('symbol detection');
2678  // Chrome 38 Symbol has incorrect toString conversion
2679  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
2680  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,
2681  // of course, fail.
2682  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||
2683    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
2684    !Symbol.sham && V8_VERSION && V8_VERSION < 41;
2685});
2686
2687
2688/***/ }),
2689
vendor: 914 bytes, lines 2690-2713
2690/***/ "./node_modules/core-js/internals/to-absolute-index.js":
2691/*!*************************************************************!*\
2692  !*** ./node_modules/core-js/internals/to-absolute-index.js ***!
2693  \*************************************************************/
2694/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2695
2696"use strict";
2697
2698var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
2699
2700var max = Math.max;
2701var min = Math.min;
2702
2703// Helper for a popular repeating case of the spec:
2704// Let integer be ? ToInteger(index).
2705// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
2706module.exports = function (index, length) {
2707  var integer = toIntegerOrInfinity(index);
2708  return integer < 0 ? max(integer + length, 0) : min(integer, length);
2709};
2710
2711
2712/***/ }),
2713
vendor: 800 bytes, lines 2714-2732
2714/***/ "./node_modules/core-js/internals/to-indexed-object.js":
2715/*!*************************************************************!*\
2716  !*** ./node_modules/core-js/internals/to-indexed-object.js ***!
2717  \*************************************************************/
2718/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2719
2720"use strict";
2721
2722// toObject with fallback for non-array-like ES3 strings
2723var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
2724var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
2725
2726module.exports = function (it) {
2727  return IndexedObject(requireObjectCoercible(it));
2728};
2729
2730
2731/***/ }),
2732
vendor: 787 bytes, lines 2733-2753
2733/***/ "./node_modules/core-js/internals/to-integer-or-infinity.js":
2734/*!******************************************************************!*\
2735  !*** ./node_modules/core-js/internals/to-integer-or-infinity.js ***!
2736  \******************************************************************/
2737/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2738
2739"use strict";
2740
2741var trunc = __webpack_require__(/*! ../internals/math-trunc */ "./node_modules/core-js/internals/math-trunc.js");
2742
2743// `ToIntegerOrInfinity` abstract operation
2744// https://tc39.es/ecma262/#sec-tointegerorinfinity
2745module.exports = function (argument) {
2746  var number = +argument;
2747  // eslint-disable-next-line no-self-compare -- NaN check
2748  return number !== number || number === 0 ? 0 : trunc(number);
2749};
2750
2751
2752/***/ }),
2753
vendor: 752 bytes, lines 2754-2775
2754/***/ "./node_modules/core-js/internals/to-length.js":
2755/*!*****************************************************!*\
2756  !*** ./node_modules/core-js/internals/to-length.js ***!
2757  \*****************************************************/
2758/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2759
2760"use strict";
2761
2762var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
2763
2764var min = Math.min;
2765
2766// `ToLength` abstract operation
2767// https://tc39.es/ecma262/#sec-tolength
2768module.exports = function (argument) {
2769  var len = toIntegerOrInfinity(argument);
2770  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
2771};
2772
2773
2774/***/ }),
2775
vendor: 684 bytes, lines 2776-2796
2776/***/ "./node_modules/core-js/internals/to-object.js":
2777/*!*****************************************************!*\
2778  !*** ./node_modules/core-js/internals/to-object.js ***!
2779  \*****************************************************/
2780/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2781
2782"use strict";
2783
2784var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
2785
2786var $Object = Object;
2787
2788// `ToObject` abstract operation
2789// https://tc39.es/ecma262/#sec-toobject
2790module.exports = function (argument) {
2791  return $Object(requireObjectCoercible(argument));
2792};
2793
2794
2795/***/ }),
2796
vendor: 1,765 bytes, lines 2797-2833
2797/***/ "./node_modules/core-js/internals/to-primitive.js":
2798/*!********************************************************!*\
2799  !*** ./node_modules/core-js/internals/to-primitive.js ***!
2800  \********************************************************/
2801/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2802
2803"use strict";
2804
2805var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
2806var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
2807var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js");
2808var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
2809var ordinaryToPrimitive = __webpack_require__(/*! ../internals/ordinary-to-primitive */ "./node_modules/core-js/internals/ordinary-to-primitive.js");
2810var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
2811
2812var $TypeError = TypeError;
2813var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');
2814
2815// `ToPrimitive` abstract operation
2816// https://tc39.es/ecma262/#sec-toprimitive
2817module.exports = function (input, pref) {
2818  if (!isObject(input) || isSymbol(input)) return input;
2819  var exoticToPrim = getMethod(input, TO_PRIMITIVE);
2820  var result;
2821  if (exoticToPrim) {
2822    if (pref === undefined) pref = 'default';
2823    result = call(exoticToPrim, input, pref);
2824    if (!isObject(result) || isSymbol(result)) return result;
2825    throw new $TypeError("Can't convert object to primitive value");
2826  }
2827  if (pref === undefined) pref = 'number';
2828  return ordinaryToPrimitive(input, pref);
2829};
2830
2831
2832/***/ }),
2833
vendor: 809 bytes, lines 2834-2854
2834/***/ "./node_modules/core-js/internals/to-property-key.js":
2835/*!***********************************************************!*\
2836  !*** ./node_modules/core-js/internals/to-property-key.js ***!
2837  \***********************************************************/
2838/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2839
2840"use strict";
2841
2842var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
2843var isSymbol = __webpack_require__(/*! ../internals/is-symbol */ "./node_modules/core-js/internals/is-symbol.js");
2844
2845// `ToPropertyKey` abstract operation
2846// https://tc39.es/ecma262/#sec-topropertykey
2847module.exports = function (argument) {
2848  var key = toPrimitive(argument, 'string');
2849  return isSymbol(key) ? key : key + '';
2850};
2851
2852
2853/***/ }),
2854
vendor: 664 bytes, lines 2855-2874
2855/***/ "./node_modules/core-js/internals/to-string-tag-support.js":
2856/*!*****************************************************************!*\
2857  !*** ./node_modules/core-js/internals/to-string-tag-support.js ***!
2858  \*****************************************************************/
2859/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2860
2861"use strict";
2862
2863var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
2864
2865var TO_STRING_TAG = wellKnownSymbol('toStringTag');
2866var test = {};
2867
2868test[TO_STRING_TAG] = 'z';
2869
2870module.exports = String(test) === '[object z]';
2871
2872
2873/***/ }),
2874
vendor: 641 bytes, lines 2875-2894
2875/***/ "./node_modules/core-js/internals/to-string.js":
2876/*!*****************************************************!*\
2877  !*** ./node_modules/core-js/internals/to-string.js ***!
2878  \*****************************************************/
2879/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2880
2881"use strict";
2882
2883var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
2884
2885var $String = String;
2886
2887module.exports = function (argument) {
2888  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');
2889  return $String(argument);
2890};
2891
2892
2893/***/ }),
2894
vendor: 450 bytes, lines 2895-2915
2895/***/ "./node_modules/core-js/internals/try-to-string.js":
2896/*!*********************************************************!*\
2897  !*** ./node_modules/core-js/internals/try-to-string.js ***!
2898  \*********************************************************/
2899/***/ (function(module) {
2900
2901"use strict";
2902
2903var $String = String;
2904
2905module.exports = function (argument) {
2906  try {
2907    return $String(argument);
2908  } catch (error) {
2909    return 'Object';
2910  }
2911};
2912
2913
2914/***/ }),
2915
vendor: 664 bytes, lines 2916-2936
2916/***/ "./node_modules/core-js/internals/uid.js":
2917/*!***********************************************!*\
2918  !*** ./node_modules/core-js/internals/uid.js ***!
2919  \***********************************************/
2920/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2921
2922"use strict";
2923
2924var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
2925
2926var id = 0;
2927var postfix = Math.random();
2928var toString = uncurryThis(1.0.toString);
2929
2930module.exports = function (key) {
2931  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);
2932};
2933
2934
2935/***/ }),
2936
vendor: 672 bytes, lines 2937-2954
2937/***/ "./node_modules/core-js/internals/use-symbol-as-uid.js":
2938/*!*************************************************************!*\
2939  !*** ./node_modules/core-js/internals/use-symbol-as-uid.js ***!
2940  \*************************************************************/
2941/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2942
2943"use strict";
2944
2945/* eslint-disable es/no-symbol -- required for testing */
2946var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js");
2947
2948module.exports = NATIVE_SYMBOL &&
2949  !Symbol.sham &&
2950  typeof Symbol.iterator == 'symbol';
2951
2952
2953/***/ }),
2954
vendor: 962 bytes, lines 2955-2978
2955/***/ "./node_modules/core-js/internals/v8-prototype-define-bug.js":
2956/*!*******************************************************************!*\
2957  !*** ./node_modules/core-js/internals/v8-prototype-define-bug.js ***!
2958  \*******************************************************************/
2959/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2960
2961"use strict";
2962
2963var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
2964var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
2965
2966// V8 ~ Chrome 36-
2967// https://bugs.chromium.org/p/v8/issues/detail?id=3334
2968module.exports = DESCRIPTORS && fails(function () {
2969  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
2970  return Object.defineProperty(function () { /* empty */ }, 'prototype', {
2971    value: 42,
2972    writable: false
2973  }).prototype !== 42;
2974});
2975
2976
2977/***/ }),
2978
vendor: 748 bytes, lines 2979-2996
2979/***/ "./node_modules/core-js/internals/weak-map-basic-detection.js":
2980/*!********************************************************************!*\
2981  !*** ./node_modules/core-js/internals/weak-map-basic-detection.js ***!
2982  \********************************************************************/
2983/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
2984
2985"use strict";
2986
2987var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
2988var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
2989
2990var WeakMap = globalThis.WeakMap;
2991
2992module.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));
2993
2994
2995/***/ }),
2996
vendor: 1,572 bytes, lines 2997-3026
2997/***/ "./node_modules/core-js/internals/well-known-symbol.js":
2998/*!*************************************************************!*\
2999  !*** ./node_modules/core-js/internals/well-known-symbol.js ***!
3000  \*************************************************************/
3001/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
3002
3003"use strict";
3004
3005var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
3006var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
3007var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js");
3008var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
3009var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/symbol-constructor-detection */ "./node_modules/core-js/internals/symbol-constructor-detection.js");
3010var USE_SYMBOL_AS_UID = __webpack_require__(/*! ../internals/use-symbol-as-uid */ "./node_modules/core-js/internals/use-symbol-as-uid.js");
3011
3012var Symbol = globalThis.Symbol;
3013var WellKnownSymbolsStore = shared('wks');
3014var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;
3015
3016module.exports = function (name) {
3017  if (!hasOwn(WellKnownSymbolsStore, name)) {
3018    WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)
3019      ? Symbol[name]
3020      : createWellKnownSymbol('Symbol.' + name);
3021  } return WellKnownSymbolsStore[name];
3022};
3023
3024
3025/***/ }),
3026
vendor: 1,324 bytes, lines 3027-3059
3027/***/ "./node_modules/core-js/modules/es.array.find.js":
3028/*!*******************************************************!*\
3029  !*** ./node_modules/core-js/modules/es.array.find.js ***!
3030  \*******************************************************/
3031/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3032
3033"use strict";
3034
3035var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
3036var $find = (__webpack_require__(/*! ../internals/array-iteration */ "./node_modules/core-js/internals/array-iteration.js").find);
3037var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js");
3038
3039var FIND = 'find';
3040var SKIPS_HOLES = true;
3041
3042// Shouldn't skip holes
3043// eslint-disable-next-line es/no-array-prototype-find -- testing
3044if (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });
3045
3046// `Array.prototype.find` method
3047// https://tc39.es/ecma262/#sec-array.prototype.find
3048$({ target: 'Array', proto: true, forced: SKIPS_HOLES }, {
3049  find: function find(callbackfn /* , that = undefined */) {
3050    return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
3051  }
3052});
3053
3054// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
3055addToUnscopables(FIND);
3056
3057
3058/***/ }),
3059
vendor: 1,423 bytes, lines 3060-3092
3060/***/ "./node_modules/core-js/modules/es.array.includes.js":
3061/*!***********************************************************!*\
3062  !*** ./node_modules/core-js/modules/es.array.includes.js ***!
3063  \***********************************************************/
3064/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3065
3066"use strict";
3067
3068var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
3069var $includes = (__webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js").includes);
3070var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
3071var addToUnscopables = __webpack_require__(/*! ../internals/add-to-unscopables */ "./node_modules/core-js/internals/add-to-unscopables.js");
3072
3073// FF99+ bug
3074var BROKEN_ON_SPARSE = fails(function () {
3075  // eslint-disable-next-line es/no-array-prototype-includes -- detection
3076  return !Array(1).includes();
3077});
3078
3079// `Array.prototype.includes` method
3080// https://tc39.es/ecma262/#sec-array.prototype.includes
3081$({ target: 'Array', proto: true, forced: BROKEN_ON_SPARSE }, {
3082  includes: function includes(el /* , fromIndex = 0 */) {
3083    return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
3084  }
3085});
3086
3087// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
3088addToUnscopables('includes');
3089
3090
3091/***/ }),
3092
vendor: 3,238 bytes, lines 3093-3152
3093/***/ "./node_modules/core-js/modules/es.array.slice.js":
3094/*!********************************************************!*\
3095  !*** ./node_modules/core-js/modules/es.array.slice.js ***!
3096  \********************************************************/
3097/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3098
3099"use strict";
3100
3101var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
3102var isArray = __webpack_require__(/*! ../internals/is-array */ "./node_modules/core-js/internals/is-array.js");
3103var isConstructor = __webpack_require__(/*! ../internals/is-constructor */ "./node_modules/core-js/internals/is-constructor.js");
3104var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
3105var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
3106var lengthOfArrayLike = __webpack_require__(/*! ../internals/length-of-array-like */ "./node_modules/core-js/internals/length-of-array-like.js");
3107var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
3108var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js");
3109var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
3110var arrayMethodHasSpeciesSupport = __webpack_require__(/*! ../internals/array-method-has-species-support */ "./node_modules/core-js/internals/array-method-has-species-support.js");
3111var nativeSlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js");
3112
3113var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');
3114
3115var SPECIES = wellKnownSymbol('species');
3116var $Array = Array;
3117var max = Math.max;
3118
3119// `Array.prototype.slice` method
3120// https://tc39.es/ecma262/#sec-array.prototype.slice
3121// fallback for not array-like ES3 strings and DOM objects
3122$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
3123  slice: function slice(start, end) {
3124    var O = toIndexedObject(this);
3125    var length = lengthOfArrayLike(O);
3126    var k = toAbsoluteIndex(start, length);
3127    var fin = toAbsoluteIndex(end === undefined ? length : end, length);
3128    // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible
3129    var Constructor, result, n;
3130    if (isArray(O)) {
3131      Constructor = O.constructor;
3132      // cross-realm fallback
3133      if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {
3134        Constructor = undefined;
3135      } else if (isObject(Constructor)) {
3136        Constructor = Constructor[SPECIES];
3137        if (Constructor === null) Constructor = undefined;
3138      }
3139      if (Constructor === $Array || Constructor === undefined) {
3140        return nativeSlice(O, k, fin);
3141      }
3142    }
3143    result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));
3144    for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);
3145    result.length = n;
3146    return result;
3147  }
3148});
3149
3150
3151/***/ }),
3152
vendor: 999 bytes, lines 3153-3173
3153/***/ "./node_modules/core-js/modules/es.object.to-string.js":
3154/*!*************************************************************!*\
3155  !*** ./node_modules/core-js/modules/es.object.to-string.js ***!
3156  \*************************************************************/
3157/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3158
3159"use strict";
3160
3161var TO_STRING_TAG_SUPPORT = __webpack_require__(/*! ../internals/to-string-tag-support */ "./node_modules/core-js/internals/to-string-tag-support.js");
3162var defineBuiltIn = __webpack_require__(/*! ../internals/define-built-in */ "./node_modules/core-js/internals/define-built-in.js");
3163var toString = __webpack_require__(/*! ../internals/object-to-string */ "./node_modules/core-js/internals/object-to-string.js");
3164
3165// `Object.prototype.toString` method
3166// https://tc39.es/ecma262/#sec-object.prototype.tostring
3167if (!TO_STRING_TAG_SUPPORT) {
3168  defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });
3169}
3170
3171
3172/***/ }),
3173
vendor: 751 bytes, lines 3174-3193
3174/***/ "./node_modules/core-js/modules/es.regexp.exec.js":
3175/*!********************************************************!*\
3176  !*** ./node_modules/core-js/modules/es.regexp.exec.js ***!
3177  \********************************************************/
3178/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3179
3180"use strict";
3181
3182var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
3183var exec = __webpack_require__(/*! ../internals/regexp-exec */ "./node_modules/core-js/internals/regexp-exec.js");
3184
3185// `RegExp.prototype.exec` method
3186// https://tc39.es/ecma262/#sec-regexp.prototype.exec
3187$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
3188  exec: exec
3189});
3190
3191
3192/***/ }),
3193
vendor: 1,652 bytes, lines 3194-3225
3194/***/ "./node_modules/core-js/modules/es.string.includes.js":
3195/*!************************************************************!*\
3196  !*** ./node_modules/core-js/modules/es.string.includes.js ***!
3197  \************************************************************/
3198/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3199
3200"use strict";
3201
3202var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
3203var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
3204var notARegExp = __webpack_require__(/*! ../internals/not-a-regexp */ "./node_modules/core-js/internals/not-a-regexp.js");
3205var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
3206var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
3207var correctIsRegExpLogic = __webpack_require__(/*! ../internals/correct-is-regexp-logic */ "./node_modules/core-js/internals/correct-is-regexp-logic.js");
3208
3209var stringIndexOf = uncurryThis(''.indexOf);
3210
3211// `String.prototype.includes` method
3212// https://tc39.es/ecma262/#sec-string.prototype.includes
3213$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {
3214  includes: function includes(searchString /* , position = 0 */) {
3215    return !!~stringIndexOf(
3216      toString(requireObjectCoercible(this)),
3217      toString(notARegExp(searchString)),
3218      arguments.length > 1 ? arguments[1] : undefined
3219    );
3220  }
3221});
3222
3223
3224/***/ }),
3225
vendor: 7,253 bytes, lines 3226-3378
3226/***/ "./node_modules/core-js/modules/es.string.replace.js":
3227/*!***********************************************************!*\
3228  !*** ./node_modules/core-js/modules/es.string.replace.js ***!
3229  \***********************************************************/
3230/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3231
3232"use strict";
3233
3234var apply = __webpack_require__(/*! ../internals/function-apply */ "./node_modules/core-js/internals/function-apply.js");
3235var call = __webpack_require__(/*! ../internals/function-call */ "./node_modules/core-js/internals/function-call.js");
3236var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js");
3237var fixRegExpWellKnownSymbolLogic = __webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ "./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js");
3238var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
3239var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
3240var isCallable = __webpack_require__(/*! ../internals/is-callable */ "./node_modules/core-js/internals/is-callable.js");
3241var isNullOrUndefined = __webpack_require__(/*! ../internals/is-null-or-undefined */ "./node_modules/core-js/internals/is-null-or-undefined.js");
3242var toIntegerOrInfinity = __webpack_require__(/*! ../internals/to-integer-or-infinity */ "./node_modules/core-js/internals/to-integer-or-infinity.js");
3243var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
3244var toString = __webpack_require__(/*! ../internals/to-string */ "./node_modules/core-js/internals/to-string.js");
3245var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
3246var advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ "./node_modules/core-js/internals/advance-string-index.js");
3247var getMethod = __webpack_require__(/*! ../internals/get-method */ "./node_modules/core-js/internals/get-method.js");
3248var getSubstitution = __webpack_require__(/*! ../internals/get-substitution */ "./node_modules/core-js/internals/get-substitution.js");
3249var regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ "./node_modules/core-js/internals/regexp-exec-abstract.js");
3250var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
3251
3252var REPLACE = wellKnownSymbol('replace');
3253var max = Math.max;
3254var min = Math.min;
3255var concat = uncurryThis([].concat);
3256var push = uncurryThis([].push);
3257var stringIndexOf = uncurryThis(''.indexOf);
3258var stringSlice = uncurryThis(''.slice);
3259
3260var maybeToString = function (it) {
3261  return it === undefined ? it : String(it);
3262};
3263
3264// IE <= 11 replaces $0 with the whole match, as if it was $&
3265// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
3266var REPLACE_KEEPS_$0 = (function () {
3267  // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
3268  return 'a'.replace(/./, '$0') === '$0';
3269})();
3270
3271// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
3272var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
3273  if (/./[REPLACE]) {
3274    return /./[REPLACE]('a', '$0') === '';
3275  }
3276  return false;
3277})();
3278
3279var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
3280  var re = /./;
3281  re.exec = function () {
3282    var result = [];
3283    result.groups = { a: '7' };
3284    return result;
3285  };
3286  // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive
3287  return ''.replace(re, '$<a>') !== '7';
3288});
3289
3290// @@replace logic
3291fixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {
3292  var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';
3293
3294  return [
3295    // `String.prototype.replace` method
3296    // https://tc39.es/ecma262/#sec-string.prototype.replace
3297    function replace(searchValue, replaceValue) {
3298      var O = requireObjectCoercible(this);
3299      var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);
3300      return replacer
3301        ? call(replacer, searchValue, O, replaceValue)
3302        : call(nativeReplace, toString(O), searchValue, replaceValue);
3303    },
3304    // `RegExp.prototype[@@replace]` method
3305    // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
3306    function (string, replaceValue) {
3307      var rx = anObject(this);
3308      var S = toString(string);
3309
3310      if (
3311        typeof replaceValue == 'string' &&
3312        stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&
3313        stringIndexOf(replaceValue, '$<') === -1
3314      ) {
3315        var res = maybeCallNative(nativeReplace, rx, S, replaceValue);
3316        if (res.done) return res.value;
3317      }
3318
3319      var functionalReplace = isCallable(replaceValue);
3320      if (!functionalReplace) replaceValue = toString(replaceValue);
3321
3322      var global = rx.global;
3323      var fullUnicode;
3324      if (global) {
3325        fullUnicode = rx.unicode;
3326        rx.lastIndex = 0;
3327      }
3328
3329      var results = [];
3330      var result;
3331      while (true) {
3332        result = regExpExec(rx, S);
3333        if (result === null) break;
3334
3335        push(results, result);
3336        if (!global) break;
3337
3338        var matchStr = toString(result[0]);
3339        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
3340      }
3341
3342      var accumulatedResult = '';
3343      var nextSourcePosition = 0;
3344      for (var i = 0; i < results.length; i++) {
3345        result = results[i];
3346
3347        var matched = toString(result[0]);
3348        var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);
3349        var captures = [];
3350        var replacement;
3351        // NOTE: This is equivalent to
3352        //   captures = result.slice(1).map(maybeToString)
3353        // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
3354        // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
3355        // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
3356        for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));
3357        var namedCaptures = result.groups;
3358        if (functionalReplace) {
3359          var replacerArgs = concat([matched], captures, position, S);
3360          if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);
3361          replacement = toString(apply(replaceValue, undefined, replacerArgs));
3362        } else {
3363          replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
3364        }
3365        if (position >= nextSourcePosition) {
3366          accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;
3367          nextSourcePosition = position + matched.length;
3368        }
3369      }
3370
3371      return accumulatedResult + stringSlice(S, nextSourcePosition);
3372    }
3373  ];
3374}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);
3375
3376
3377/***/ }),
3378
vendor: 1,694 bytes, lines 3379-3412
3379/***/ "./node_modules/core-js/modules/web.dom-collections.for-each.js":
3380/*!**********************************************************************!*\
3381  !*** ./node_modules/core-js/modules/web.dom-collections.for-each.js ***!
3382  \**********************************************************************/
3383/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
3384
3385"use strict";
3386
3387var globalThis = __webpack_require__(/*! ../internals/global-this */ "./node_modules/core-js/internals/global-this.js");
3388var DOMIterables = __webpack_require__(/*! ../internals/dom-iterables */ "./node_modules/core-js/internals/dom-iterables.js");
3389var DOMTokenListPrototype = __webpack_require__(/*! ../internals/dom-token-list-prototype */ "./node_modules/core-js/internals/dom-token-list-prototype.js");
3390var forEach = __webpack_require__(/*! ../internals/array-for-each */ "./node_modules/core-js/internals/array-for-each.js");
3391var createNonEnumerableProperty = __webpack_require__(/*! ../internals/create-non-enumerable-property */ "./node_modules/core-js/internals/create-non-enumerable-property.js");
3392
3393var handlePrototype = function (CollectionPrototype) {
3394  // some Chrome versions have non-configurable methods on DOMTokenList
3395  if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {
3396    createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);
3397  } catch (error) {
3398    CollectionPrototype.forEach = forEach;
3399  }
3400};
3401
3402for (var COLLECTION_NAME in DOMIterables) {
3403  if (DOMIterables[COLLECTION_NAME]) {
3404    handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype);
3405  }
3406}
3407
3408handlePrototype(DOMTokenListPrototype);
3409
3410
3411/***/ }),
3412
vendor: 14,097 bytes, lines 3413-3884
3413/***/ "./node_modules/headroom.js/dist/headroom.js":
3414/*!***************************************************!*\
3415  !*** ./node_modules/headroom.js/dist/headroom.js ***!
3416  \***************************************************/
3417/***/ (function(module, exports) {
3418
3419var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
3420 * headroom.js v0.9.4 - Give your page some headroom. Hide your header until you need it
3421 * Copyright (c) 2017 Nick Williams - http://wicky.nillia.ms/headroom.js
3422 * License: MIT
3423 */
3424
3425(function(root, factory) {
3426  'use strict';
3427
3428  if (true) {
3429    // AMD. Register as an anonymous module.
3430    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3431		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3432		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3433		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
3434  }
3435  else {}
3436}(this, function() {
3437  'use strict';
3438
3439  /* exported features */
3440  
3441  var features = {
3442    bind : !!(function(){}.bind),
3443    classList : 'classList' in document.documentElement,
3444    rAF : !!(window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame)
3445  };
3446  window.requestAnimationFrame = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame;
3447  
3448  /**
3449   * Handles debouncing of events via requestAnimationFrame
3450   * @see http://www.html5rocks.com/en/tutorials/speed/animations/
3451   * @param {Function} callback The callback to handle whichever event
3452   */
3453  function Debouncer (callback) {
3454    this.callback = callback;
3455    this.ticking = false;
3456  }
3457  Debouncer.prototype = {
3458    constructor : Debouncer,
3459  
3460    /**
3461     * dispatches the event to the supplied callback
3462     * @private
3463     */
3464    update : function() {
3465      this.callback && this.callback();
3466      this.ticking = false;
3467    },
3468  
3469    /**
3470     * ensures events don't get stacked
3471     * @private
3472     */
3473    requestTick : function() {
3474      if(!this.ticking) {
3475        requestAnimationFrame(this.rafCallback || (this.rafCallback = this.update.bind(this)));
3476        this.ticking = true;
3477      }
3478    },
3479  
3480    /**
3481     * Attach this as the event listeners
3482     */
3483    handleEvent : function() {
3484      this.requestTick();
3485    }
3486  };
3487  /**
3488   * Check if object is part of the DOM
3489   * @constructor
3490   * @param {Object} obj element to check
3491   */
3492  function isDOMElement(obj) {
3493    return obj && typeof window !== 'undefined' && (obj === window || obj.nodeType);
3494  }
3495  
3496  /**
3497   * Helper function for extending objects
3498   */
3499  function extend (object /*, objectN ... */) {
3500    if(arguments.length <= 0) {
3501      throw new Error('Missing arguments in extend function');
3502    }
3503  
3504    var result = object || {},
3505        key,
3506        i;
3507  
3508    for (i = 1; i < arguments.length; i++) {
3509      var replacement = arguments[i] || {};
3510  
3511      for (key in replacement) {
3512        // Recurse into object except if the object is a DOM element
3513        if(typeof result[key] === 'object' && ! isDOMElement(result[key])) {
3514          result[key] = extend(result[key], replacement[key]);
3515        }
3516        else {
3517          result[key] = result[key] || replacement[key];
3518        }
3519      }
3520    }
3521  
3522    return result;
3523  }
3524  
3525  /**
3526   * Helper function for normalizing tolerance option to object format
3527   */
3528  function normalizeTolerance (t) {
3529    return t === Object(t) ? t : { down : t, up : t };
3530  }
3531  
3532  /**
3533   * UI enhancement for fixed headers.
3534   * Hides header when scrolling down
3535   * Shows header when scrolling up
3536   * @constructor
3537   * @param {DOMElement} elem the header element
3538   * @param {Object} options options for the widget
3539   */
3540  function Headroom (elem, options) {
3541    options = extend(options, Headroom.options);
3542  
3543    this.lastKnownScrollY = 0;
3544    this.elem             = elem;
3545    this.tolerance        = normalizeTolerance(options.tolerance);
3546    this.classes          = options.classes;
3547    this.offset           = options.offset;
3548    this.scroller         = options.scroller;
3549    this.initialised      = false;
3550    this.onPin            = options.onPin;
3551    this.onUnpin          = options.onUnpin;
3552    this.onTop            = options.onTop;
3553    this.onNotTop         = options.onNotTop;
3554    this.onBottom         = options.onBottom;
3555    this.onNotBottom      = options.onNotBottom;
3556  }
3557  Headroom.prototype = {
3558    constructor : Headroom,
3559  
3560    /**
3561     * Initialises the widget
3562     */
3563    init : function() {
3564      if(!Headroom.cutsTheMustard) {
3565        return;
3566      }
3567  
3568      this.debouncer = new Debouncer(this.update.bind(this));
3569      this.elem.classList.add(this.classes.initial);
3570  
3571      // defer event registration to handle browser
3572      // potentially restoring previous scroll position
3573      setTimeout(this.attachEvent.bind(this), 100);
3574  
3575      return this;
3576    },
3577  
3578    /**
3579     * Unattaches events and removes any classes that were added
3580     */
3581    destroy : function() {
3582      var classes = this.classes;
3583  
3584      this.initialised = false;
3585  
3586      for (var key in classes) {
3587        if(classes.hasOwnProperty(key)) {
3588          this.elem.classList.remove(classes[key]);
3589        }
3590      }
3591  
3592      this.scroller.removeEventListener('scroll', this.debouncer, false);
3593    },
3594  
3595    /**
3596     * Attaches the scroll event
3597     * @private
3598     */
3599    attachEvent : function() {
3600      if(!this.initialised){
3601        this.lastKnownScrollY = this.getScrollY();
3602        this.initialised = true;
3603        this.scroller.addEventListener('scroll', this.debouncer, false);
3604  
3605        this.debouncer.handleEvent();
3606      }
3607    },
3608  
3609    /**
3610     * Unpins the header if it's currently pinned
3611     */
3612    unpin : function() {
3613      var classList = this.elem.classList,
3614        classes = this.classes;
3615  
3616      if(classList.contains(classes.pinned) || !classList.contains(classes.unpinned)) {
3617        classList.add(classes.unpinned);
3618        classList.remove(classes.pinned);
3619        this.onUnpin && this.onUnpin.call(this);
3620      }
3621    },
3622  
3623    /**
3624     * Pins the header if it's currently unpinned
3625     */
3626    pin : function() {
3627      var classList = this.elem.classList,
3628        classes = this.classes;
3629  
3630      if(classList.contains(classes.unpinned)) {
3631        classList.remove(classes.unpinned);
3632        classList.add(classes.pinned);
3633        this.onPin && this.onPin.call(this);
3634      }
3635    },
3636  
3637    /**
3638     * Handles the top states
3639     */
3640    top : function() {
3641      var classList = this.elem.classList,
3642        classes = this.classes;
3643  
3644      if(!classList.contains(classes.top)) {
3645        classList.add(classes.top);
3646        classList.remove(classes.notTop);
3647        this.onTop && this.onTop.call(this);
3648      }
3649    },
3650  
3651    /**
3652     * Handles the not top state
3653     */
3654    notTop : function() {
3655      var classList = this.elem.classList,
3656        classes = this.classes;
3657  
3658      if(!classList.contains(classes.notTop)) {
3659        classList.add(classes.notTop);
3660        classList.remove(classes.top);
3661        this.onNotTop && this.onNotTop.call(this);
3662      }
3663    },
3664  
3665    bottom : function() {
3666      var classList = this.elem.classList,
3667        classes = this.classes;
3668  
3669      if(!classList.contains(classes.bottom)) {
3670        classList.add(classes.bottom);
3671        classList.remove(classes.notBottom);
3672        this.onBottom && this.onBottom.call(this);
3673      }
3674    },
3675  
3676    /**
3677     * Handles the not top state
3678     */
3679    notBottom : function() {
3680      var classList = this.elem.classList,
3681        classes = this.classes;
3682  
3683      if(!classList.contains(classes.notBottom)) {
3684        classList.add(classes.notBottom);
3685        classList.remove(classes.bottom);
3686        this.onNotBottom && this.onNotBottom.call(this);
3687      }
3688    },
3689  
3690    /**
3691     * Gets the Y scroll position
3692     * @see https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY
3693     * @return {Number} pixels the page has scrolled along the Y-axis
3694     */
3695    getScrollY : function() {
3696      return (this.scroller.pageYOffset !== undefined)
3697        ? this.scroller.pageYOffset
3698        : (this.scroller.scrollTop !== undefined)
3699          ? this.scroller.scrollTop
3700          : (document.documentElement || document.body.parentNode || document.body).scrollTop;
3701    },
3702  
3703    /**
3704     * Gets the height of the viewport
3705     * @see http://andylangton.co.uk/blog/development/get-viewport-size-width-and-height-javascript
3706     * @return {int} the height of the viewport in pixels
3707     */
3708    getViewportHeight : function () {
3709      return window.innerHeight
3710        || document.documentElement.clientHeight
3711        || document.body.clientHeight;
3712    },
3713  
3714    /**
3715     * Gets the physical height of the DOM element
3716     * @param  {Object}  elm the element to calculate the physical height of which
3717     * @return {int}     the physical height of the element in pixels
3718     */
3719    getElementPhysicalHeight : function (elm) {
3720      return Math.max(
3721        elm.offsetHeight,
3722        elm.clientHeight
3723      );
3724    },
3725  
3726    /**
3727     * Gets the physical height of the scroller element
3728     * @return {int} the physical height of the scroller element in pixels
3729     */
3730    getScrollerPhysicalHeight : function () {
3731      return (this.scroller === window || this.scroller === document.body)
3732        ? this.getViewportHeight()
3733        : this.getElementPhysicalHeight(this.scroller);
3734    },
3735  
3736    /**
3737     * Gets the height of the document
3738     * @see http://james.padolsey.com/javascript/get-document-height-cross-browser/
3739     * @return {int} the height of the document in pixels
3740     */
3741    getDocumentHeight : function () {
3742      var body = document.body,
3743        documentElement = document.documentElement;
3744  
3745      return Math.max(
3746        body.scrollHeight, documentElement.scrollHeight,
3747        body.offsetHeight, documentElement.offsetHeight,
3748        body.clientHeight, documentElement.clientHeight
3749      );
3750    },
3751  
3752    /**
3753     * Gets the height of the DOM element
3754     * @param  {Object}  elm the element to calculate the height of which
3755     * @return {int}     the height of the element in pixels
3756     */
3757    getElementHeight : function (elm) {
3758      return Math.max(
3759        elm.scrollHeight,
3760        elm.offsetHeight,
3761        elm.clientHeight
3762      );
3763    },
3764  
3765    /**
3766     * Gets the height of the scroller element
3767     * @return {int} the height of the scroller element in pixels
3768     */
3769    getScrollerHeight : function () {
3770      return (this.scroller === window || this.scroller === document.body)
3771        ? this.getDocumentHeight()
3772        : this.getElementHeight(this.scroller);
3773    },
3774  
3775    /**
3776     * determines if the scroll position is outside of document boundaries
3777     * @param  {int}  currentScrollY the current y scroll position
3778     * @return {bool} true if out of bounds, false otherwise
3779     */
3780    isOutOfBounds : function (currentScrollY) {
3781      var pastTop  = currentScrollY < 0,
3782        pastBottom = currentScrollY + this.getScrollerPhysicalHeight() > this.getScrollerHeight();
3783  
3784      return pastTop || pastBottom;
3785    },
3786  
3787    /**
3788     * determines if the tolerance has been exceeded
3789     * @param  {int} currentScrollY the current scroll y position
3790     * @return {bool} true if tolerance exceeded, false otherwise
3791     */
3792    toleranceExceeded : function (currentScrollY, direction) {
3793      return Math.abs(currentScrollY-this.lastKnownScrollY) >= this.tolerance[direction];
3794    },
3795  
3796    /**
3797     * determine if it is appropriate to unpin
3798     * @param  {int} currentScrollY the current y scroll position
3799     * @param  {bool} toleranceExceeded has the tolerance been exceeded?
3800     * @return {bool} true if should unpin, false otherwise
3801     */
3802    shouldUnpin : function (currentScrollY, toleranceExceeded) {
3803      var scrollingDown = currentScrollY > this.lastKnownScrollY,
3804        pastOffset = currentScrollY >= this.offset;
3805  
3806      return scrollingDown && pastOffset && toleranceExceeded;
3807    },
3808  
3809    /**
3810     * determine if it is appropriate to pin
3811     * @param  {int} currentScrollY the current y scroll position
3812     * @param  {bool} toleranceExceeded has the tolerance been exceeded?
3813     * @return {bool} true if should pin, false otherwise
3814     */
3815    shouldPin : function (currentScrollY, toleranceExceeded) {
3816      var scrollingUp  = currentScrollY < this.lastKnownScrollY,
3817        pastOffset = currentScrollY <= this.offset;
3818  
3819      return (scrollingUp && toleranceExceeded) || pastOffset;
3820    },
3821  
3822    /**
3823     * Handles updating the state of the widget
3824     */
3825    update : function() {
3826      var currentScrollY  = this.getScrollY(),
3827        scrollDirection = currentScrollY > this.lastKnownScrollY ? 'down' : 'up',
3828        toleranceExceeded = this.toleranceExceeded(currentScrollY, scrollDirection);
3829  
3830      if(this.isOutOfBounds(currentScrollY)) { // Ignore bouncy scrolling in OSX
3831        return;
3832      }
3833  
3834      if (currentScrollY <= this.offset ) {
3835        this.top();
3836      } else {
3837        this.notTop();
3838      }
3839  
3840      if(currentScrollY + this.getViewportHeight() >= this.getScrollerHeight()) {
3841        this.bottom();
3842      }
3843      else {
3844        this.notBottom();
3845      }
3846  
3847      if(this.shouldUnpin(currentScrollY, toleranceExceeded)) {
3848        this.unpin();
3849      }
3850      else if(this.shouldPin(currentScrollY, toleranceExceeded)) {
3851        this.pin();
3852      }
3853  
3854      this.lastKnownScrollY = currentScrollY;
3855    }
3856  };
3857  /**
3858   * Default options
3859   * @type {Object}
3860   */
3861  Headroom.options = {
3862    tolerance : {
3863      up : 0,
3864      down : 0
3865    },
3866    offset : 0,
3867    scroller: window,
3868    classes : {
3869      pinned : 'headroom--pinned',
3870      unpinned : 'headroom--unpinned',
3871      top : 'headroom--top',
3872      notTop : 'headroom--not-top',
3873      bottom : 'headroom--bottom',
3874      notBottom : 'headroom--not-bottom',
3875      initial : 'headroom'
3876    }
3877  };
3878  Headroom.cutsTheMustard = typeof features !== 'undefined' && features.rAF && features.bind && features.classList;
3879
3880  return Headroom;
3881}));
3882
3883/***/ }),
3884
vendor: 5,508 bytes, lines 3885-4033
3885/***/ "./node_modules/jquery-inview/jquery.inview.js":
3886/*!*****************************************************!*\
3887  !*** ./node_modules/jquery-inview/jquery.inview.js ***!
3888  \*****************************************************/
3889/***/ (function(module, exports, __webpack_require__) {
3890
3891var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
3892 * author Christopher Blum
3893 *    - based on the idea of Remy Sharp, http://remysharp.com/2009/01/26/element-in-view-event-plugin/
3894 *    - forked from http://github.com/zuk/jquery.inview/
3895 */
3896(function (factory) {
3897  if (true) {
3898    // AMD
3899    !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js")], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
3900		__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
3901		(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
3902		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
3903  } else {}
3904}(function ($) {
3905
3906  var inviewObjects = [], viewportSize, viewportOffset,
3907      d = document, w = window, documentElement = d.documentElement, timer;
3908
3909  $.event.special.inview = {
3910    add: function(data) {
3911      inviewObjects.push({ data: data, $element: $(this), element: this });
3912      // Use setInterval in order to also make sure this captures elements within
3913      // "overflow:scroll" elements or elements that appeared in the dom tree due to
3914      // dom manipulation and reflow
3915      // old: $(window).scroll(checkInView);
3916      //
3917      // By the way, iOS (iPad, iPhone, ...) seems to not execute, or at least delays
3918      // intervals while the user scrolls. Therefore the inview event might fire a bit late there
3919      //
3920      // Don't waste cycles with an interval until we get at least one element that
3921      // has bound to the inview event.
3922      if (!timer && inviewObjects.length) {
3923         timer = setInterval(checkInView, 250);
3924      }
3925    },
3926
3927    remove: function(data) {
3928      for (var i=0; i<inviewObjects.length; i++) {
3929        var inviewObject = inviewObjects[i];
3930        if (inviewObject.element === this && inviewObject.data.guid === data.guid) {
3931          inviewObjects.splice(i, 1);
3932          break;
3933        }
3934      }
3935
3936      // Clear interval when we no longer have any elements listening
3937      if (!inviewObjects.length) {
3938         clearInterval(timer);
3939         timer = null;
3940      }
3941    }
3942  };
3943
3944  function getViewportSize() {
3945    var mode, domObject, size = { height: w.innerHeight, width: w.innerWidth };
3946
3947    // if this is correct then return it. iPad has compat Mode, so will
3948    // go into check clientHeight/clientWidth (which has the wrong value).
3949    if (!size.height) {
3950      mode = d.compatMode;
3951      if (mode || !$.support.boxModel) { // IE, Gecko
3952        domObject = mode === 'CSS1Compat' ?
3953          documentElement : // Standards
3954          d.body; // Quirks
3955        size = {
3956          height: domObject.clientHeight,
3957          width:  domObject.clientWidth
3958        };
3959      }
3960    }
3961
3962    return size;
3963  }
3964
3965  function getViewportOffset() {
3966    return {
3967      top:  w.pageYOffset || documentElement.scrollTop   || d.body.scrollTop,
3968      left: w.pageXOffset || documentElement.scrollLeft  || d.body.scrollLeft
3969    };
3970  }
3971
3972  function checkInView() {
3973    if (!inviewObjects.length) {
3974      return;
3975    }
3976
3977    var i = 0, $elements = $.map(inviewObjects, function(inviewObject) {
3978      var selector  = inviewObject.data.selector,
3979          $element  = inviewObject.$element;
3980      return selector ? $element.find(selector) : $element;
3981    });
3982
3983    viewportSize   = viewportSize   || getViewportSize();
3984    viewportOffset = viewportOffset || getViewportOffset();
3985
3986    for (; i<inviewObjects.length; i++) {
3987      // Ignore elements that are not in the DOM tree
3988      if (!$.contains(documentElement, $elements[i][0])) {
3989        continue;
3990      }
3991
3992      var $element      = $($elements[i]),
3993          elementSize   = { height: $element[0].offsetHeight, width: $element[0].offsetWidth },
3994          elementOffset = $element.offset(),
3995          inView        = $element.data('inview');
3996
3997      // Don't ask me why because I haven't figured out yet:
3998      // viewportOffset and viewportSize are sometimes suddenly null in Firefox 5.
3999      // Even though it sounds weird:
4000      // It seems that the execution of this function is interferred by the onresize/onscroll event
4001      // where viewportOffset and viewportSize are unset
4002      if (!viewportOffset || !viewportSize) {
4003        return;
4004      }
4005
4006      if (elementOffset.top + elementSize.height > viewportOffset.top &&
4007          elementOffset.top < viewportOffset.top + viewportSize.height &&
4008          elementOffset.left + elementSize.width > viewportOffset.left &&
4009          elementOffset.left < viewportOffset.left + viewportSize.width) {
4010        if (!inView) {
4011          $element.data('inview', true).trigger('inview', [true]);
4012        }
4013      } else if (inView) {
4014        $element.data('inview', false).trigger('inview', [false]);
4015      }
4016    }
4017  }
4018
4019  $(w).bind("scroll resize scrollstop", function() {
4020    viewportSize = viewportOffset = null;
4021  });
4022
4023  // IE < 9 scrolls to focused elements without firing the "scroll" event
4024  if (!documentElement.addEventListener && documentElement.attachEvent) {
4025    documentElement.attachEvent("onfocusin", function() {
4026      viewportOffset = null;
4027    });
4028  }
4029}));
4030
4031
4032/***/ }),
4033
vendor: 285,755 bytes, lines 4034-14760
4034/***/ "./node_modules/jquery/dist/jquery.js":
4035/*!********************************************!*\
4036  !*** ./node_modules/jquery/dist/jquery.js ***!
4037  \********************************************/
4038/***/ (function(module, exports) {
4039
4040var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
4041 * jQuery JavaScript Library v3.7.1
4042 * https://jquery.com/
4043 *
4044 * Copyright OpenJS Foundation and other contributors
4045 * Released under the MIT license
4046 * https://jquery.org/license
4047 *
4048 * Date: 2023-08-28T13:37Z
4049 */
4050( function( global, factory ) {
4051
4052	"use strict";
4053
4054	if (  true && typeof module.exports === "object" ) {
4055
4056		// For CommonJS and CommonJS-like environments where a proper `window`
4057		// is present, execute the factory and get jQuery.
4058		// For environments that do not have a `window` with a `document`
4059		// (such as Node.js), expose a factory as module.exports.
4060		// This accentuates the need for the creation of a real `window`.
4061		// e.g. var jQuery = require("jquery")(window);
4062		// See ticket trac-14549 for more info.
4063		module.exports = global.document ?
4064			factory( global, true ) :
4065			function( w ) {
4066				if ( !w.document ) {
4067					throw new Error( "jQuery requires a window with a document" );
4068				}
4069				return factory( w );
4070			};
4071	} else {
4072		factory( global );
4073	}
4074
4075// Pass this if window is not defined yet
4076} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
4077
4078// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
4079// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
4080// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
4081// enough that all such attempts are guarded in a try block.
4082"use strict";
4083
4084var arr = [];
4085
4086var getProto = Object.getPrototypeOf;
4087
4088var slice = arr.slice;
4089
4090var flat = arr.flat ? function( array ) {
4091	return arr.flat.call( array );
4092} : function( array ) {
4093	return arr.concat.apply( [], array );
4094};
4095
4096
4097var push = arr.push;
4098
4099var indexOf = arr.indexOf;
4100
4101var class2type = {};
4102
4103var toString = class2type.toString;
4104
4105var hasOwn = class2type.hasOwnProperty;
4106
4107var fnToString = hasOwn.toString;
4108
4109var ObjectFunctionString = fnToString.call( Object );
4110
4111var support = {};
4112
4113var isFunction = function isFunction( obj ) {
4114
4115		// Support: Chrome <=57, Firefox <=52
4116		// In some browsers, typeof returns "function" for HTML <object> elements
4117		// (i.e., `typeof document.createElement( "object" ) === "function"`).
4118		// We don't want to classify *any* DOM node as a function.
4119		// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5
4120		// Plus for old WebKit, typeof returns "function" for HTML collections
4121		// (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756)
4122		return typeof obj === "function" && typeof obj.nodeType !== "number" &&
4123			typeof obj.item !== "function";
4124	};
4125
4126
4127var isWindow = function isWindow( obj ) {
4128		return obj != null && obj === obj.window;
4129	};
4130
4131
4132var document = window.document;
4133
4134
4135
4136	var preservedScriptAttributes = {
4137		type: true,
4138		src: true,
4139		nonce: true,
4140		noModule: true
4141	};
4142
4143	function DOMEval( code, node, doc ) {
4144		doc = doc || document;
4145
4146		var i, val,
4147			script = doc.createElement( "script" );
4148
4149		script.text = code;
4150		if ( node ) {
4151			for ( i in preservedScriptAttributes ) {
4152
4153				// Support: Firefox 64+, Edge 18+
4154				// Some browsers don't support the "nonce" property on scripts.
4155				// On the other hand, just using `getAttribute` is not enough as
4156				// the `nonce` attribute is reset to an empty string whenever it
4157				// becomes browsing-context connected.
4158				// See https://github.com/whatwg/html/issues/2369
4159				// See https://html.spec.whatwg.org/#nonce-attributes
4160				// The `node.getAttribute` check was added for the sake of
4161				// `jQuery.globalEval` so that it can fake a nonce-containing node
4162				// via an object.
4163				val = node[ i ] || node.getAttribute && node.getAttribute( i );
4164				if ( val ) {
4165					script.setAttribute( i, val );
4166				}
4167			}
4168		}
4169		doc.head.appendChild( script ).parentNode.removeChild( script );
4170	}
4171
4172
4173function toType( obj ) {
4174	if ( obj == null ) {
4175		return obj + "";
4176	}
4177
4178	// Support: Android <=2.3 only (functionish RegExp)
4179	return typeof obj === "object" || typeof obj === "function" ?
4180		class2type[ toString.call( obj ) ] || "object" :
4181		typeof obj;
4182}
4183/* global Symbol */
4184// Defining this global in .eslintrc.json would create a danger of using the global
4185// unguarded in another place, it seems safer to define global only for this module
4186
4187
4188
4189var version = "3.7.1",
4190
4191	rhtmlSuffix = /HTML$/i,
4192
4193	// Define a local copy of jQuery
4194	jQuery = function( selector, context ) {
4195
4196		// The jQuery object is actually just the init constructor 'enhanced'
4197		// Need init if jQuery is called (just allow error to be thrown if not included)
4198		return new jQuery.fn.init( selector, context );
4199	};
4200
4201jQuery.fn = jQuery.prototype = {
4202
4203	// The current version of jQuery being used
4204	jquery: version,
4205
4206	constructor: jQuery,
4207
4208	// The default length of a jQuery object is 0
4209	length: 0,
4210
4211	toArray: function() {
4212		return slice.call( this );
4213	},
4214
4215	// Get the Nth element in the matched element set OR
4216	// Get the whole matched element set as a clean array
4217	get: function( num ) {
4218
4219		// Return all the elements in a clean array
4220		if ( num == null ) {
4221			return slice.call( this );
4222		}
4223
4224		// Return just the one element from the set
4225		return num < 0 ? this[ num + this.length ] : this[ num ];
4226	},
4227
4228	// Take an array of elements and push it onto the stack
4229	// (returning the new matched element set)
4230	pushStack: function( elems ) {
4231
4232		// Build a new jQuery matched element set
4233		var ret = jQuery.merge( this.constructor(), elems );
4234
4235		// Add the old object onto the stack (as a reference)
4236		ret.prevObject = this;
4237
4238		// Return the newly-formed element set
4239		return ret;
4240	},
4241
4242	// Execute a callback for every element in the matched set.
4243	each: function( callback ) {
4244		return jQuery.each( this, callback );
4245	},
4246
4247	map: function( callback ) {
4248		return this.pushStack( jQuery.map( this, function( elem, i ) {
4249			return callback.call( elem, i, elem );
4250		} ) );
4251	},
4252
4253	slice: function() {
4254		return this.pushStack( slice.apply( this, arguments ) );
4255	},
4256
4257	first: function() {
4258		return this.eq( 0 );
4259	},
4260
4261	last: function() {
4262		return this.eq( -1 );
4263	},
4264
4265	even: function() {
4266		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
4267			return ( i + 1 ) % 2;
4268		} ) );
4269	},
4270
4271	odd: function() {
4272		return this.pushStack( jQuery.grep( this, function( _elem, i ) {
4273			return i % 2;
4274		} ) );
4275	},
4276
4277	eq: function( i ) {
4278		var len = this.length,
4279			j = +i + ( i < 0 ? len : 0 );
4280		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
4281	},
4282
4283	end: function() {
4284		return this.prevObject || this.constructor();
4285	},
4286
4287	// For internal use only.
4288	// Behaves like an Array's method, not like a jQuery method.
4289	push: push,
4290	sort: arr.sort,
4291	splice: arr.splice
4292};
4293
4294jQuery.extend = jQuery.fn.extend = function() {
4295	var options, name, src, copy, copyIsArray, clone,
4296		target = arguments[ 0 ] || {},
4297		i = 1,
4298		length = arguments.length,
4299		deep = false;
4300
4301	// Handle a deep copy situation
4302	if ( typeof target === "boolean" ) {
4303		deep = target;
4304
4305		// Skip the boolean and the target
4306		target = arguments[ i ] || {};
4307		i++;
4308	}
4309
4310	// Handle case when target is a string or something (possible in deep copy)
4311	if ( typeof target !== "object" && !isFunction( target ) ) {
4312		target = {};
4313	}
4314
4315	// Extend jQuery itself if only one argument is passed
4316	if ( i === length ) {
4317		target = this;
4318		i--;
4319	}
4320
4321	for ( ; i < length; i++ ) {
4322
4323		// Only deal with non-null/undefined values
4324		if ( ( options = arguments[ i ] ) != null ) {
4325
4326			// Extend the base object
4327			for ( name in options ) {
4328				copy = options[ name ];
4329
4330				// Prevent Object.prototype pollution
4331				// Prevent never-ending loop
4332				if ( name === "__proto__" || target === copy ) {
4333					continue;
4334				}
4335
4336				// Recurse if we're merging plain objects or arrays
4337				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
4338					( copyIsArray = Array.isArray( copy ) ) ) ) {
4339					src = target[ name ];
4340
4341					// Ensure proper type for the source value
4342					if ( copyIsArray && !Array.isArray( src ) ) {
4343						clone = [];
4344					} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {
4345						clone = {};
4346					} else {
4347						clone = src;
4348					}
4349					copyIsArray = false;
4350
4351					// Never move original objects, clone them
4352					target[ name ] = jQuery.extend( deep, clone, copy );
4353
4354				// Don't bring in undefined values
4355				} else if ( copy !== undefined ) {
4356					target[ name ] = copy;
4357				}
4358			}
4359		}
4360	}
4361
4362	// Return the modified object
4363	return target;
4364};
4365
4366jQuery.extend( {
4367
4368	// Unique for each copy of jQuery on the page
4369	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
4370
4371	// Assume jQuery is ready without the ready module
4372	isReady: true,
4373
4374	error: function( msg ) {
4375		throw new Error( msg );
4376	},
4377
4378	noop: function() {},
4379
4380	isPlainObject: function( obj ) {
4381		var proto, Ctor;
4382
4383		// Detect obvious negatives
4384		// Use toString instead of jQuery.type to catch host objects
4385		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
4386			return false;
4387		}
4388
4389		proto = getProto( obj );
4390
4391		// Objects with no prototype (e.g., `Object.create( null )`) are plain
4392		if ( !proto ) {
4393			return true;
4394		}
4395
4396		// Objects with prototype are plain iff they were constructed by a global Object function
4397		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
4398		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
4399	},
4400
4401	isEmptyObject: function( obj ) {
4402		var name;
4403
4404		for ( name in obj ) {
4405			return false;
4406		}
4407		return true;
4408	},
4409
4410	// Evaluates a script in a provided context; falls back to the global one
4411	// if not specified.
4412	globalEval: function( code, options, doc ) {
4413		DOMEval( code, { nonce: options && options.nonce }, doc );
4414	},
4415
4416	each: function( obj, callback ) {
4417		var length, i = 0;
4418
4419		if ( isArrayLike( obj ) ) {
4420			length = obj.length;
4421			for ( ; i < length; i++ ) {
4422				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
4423					break;
4424				}
4425			}
4426		} else {
4427			for ( i in obj ) {
4428				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
4429					break;
4430				}
4431			}
4432		}
4433
4434		return obj;
4435	},
4436
4437
4438	// Retrieve the text value of an array of DOM nodes
4439	text: function( elem ) {
4440		var node,
4441			ret = "",
4442			i = 0,
4443			nodeType = elem.nodeType;
4444
4445		if ( !nodeType ) {
4446
4447			// If no nodeType, this is expected to be an array
4448			while ( ( node = elem[ i++ ] ) ) {
4449
4450				// Do not traverse comment nodes
4451				ret += jQuery.text( node );
4452			}
4453		}
4454		if ( nodeType === 1 || nodeType === 11 ) {
4455			return elem.textContent;
4456		}
4457		if ( nodeType === 9 ) {
4458			return elem.documentElement.textContent;
4459		}
4460		if ( nodeType === 3 || nodeType === 4 ) {
4461			return elem.nodeValue;
4462		}
4463
4464		// Do not include comment or processing instruction nodes
4465
4466		return ret;
4467	},
4468
4469	// results is for internal usage only
4470	makeArray: function( arr, results ) {
4471		var ret = results || [];
4472
4473		if ( arr != null ) {
4474			if ( isArrayLike( Object( arr ) ) ) {
4475				jQuery.merge( ret,
4476					typeof arr === "string" ?
4477						[ arr ] : arr
4478				);
4479			} else {
4480				push.call( ret, arr );
4481			}
4482		}
4483
4484		return ret;
4485	},
4486
4487	inArray: function( elem, arr, i ) {
4488		return arr == null ? -1 : indexOf.call( arr, elem, i );
4489	},
4490
4491	isXMLDoc: function( elem ) {
4492		var namespace = elem && elem.namespaceURI,
4493			docElem = elem && ( elem.ownerDocument || elem ).documentElement;
4494
4495		// Assume HTML when documentElement doesn't yet exist, such as inside
4496		// document fragments.
4497		return !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || "HTML" );
4498	},
4499
4500	// Support: Android <=4.0 only, PhantomJS 1 only
4501	// push.apply(_, arraylike) throws on ancient WebKit
4502	merge: function( first, second ) {
4503		var len = +second.length,
4504			j = 0,
4505			i = first.length;
4506
4507		for ( ; j < len; j++ ) {
4508			first[ i++ ] = second[ j ];
4509		}
4510
4511		first.length = i;
4512
4513		return first;
4514	},
4515
4516	grep: function( elems, callback, invert ) {
4517		var callbackInverse,
4518			matches = [],
4519			i = 0,
4520			length = elems.length,
4521			callbackExpect = !invert;
4522
4523		// Go through the array, only saving the items
4524		// that pass the validator function
4525		for ( ; i < length; i++ ) {
4526			callbackInverse = !callback( elems[ i ], i );
4527			if ( callbackInverse !== callbackExpect ) {
4528				matches.push( elems[ i ] );
4529			}
4530		}
4531
4532		return matches;
4533	},
4534
4535	// arg is for internal usage only
4536	map: function( elems, callback, arg ) {
4537		var length, value,
4538			i = 0,
4539			ret = [];
4540
4541		// Go through the array, translating each of the items to their new values
4542		if ( isArrayLike( elems ) ) {
4543			length = elems.length;
4544			for ( ; i < length; i++ ) {
4545				value = callback( elems[ i ], i, arg );
4546
4547				if ( value != null ) {
4548					ret.push( value );
4549				}
4550			}
4551
4552		// Go through every key on the object,
4553		} else {
4554			for ( i in elems ) {
4555				value = callback( elems[ i ], i, arg );
4556
4557				if ( value != null ) {
4558					ret.push( value );
4559				}
4560			}
4561		}
4562
4563		// Flatten any nested arrays
4564		return flat( ret );
4565	},
4566
4567	// A global GUID counter for objects
4568	guid: 1,
4569
4570	// jQuery.support is not used in Core but other projects attach their
4571	// properties to it so it needs to exist.
4572	support: support
4573} );
4574
4575if ( typeof Symbol === "function" ) {
4576	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
4577}
4578
4579// Populate the class2type map
4580jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
4581	function( _i, name ) {
4582		class2type[ "[object " + name + "]" ] = name.toLowerCase();
4583	} );
4584
4585function isArrayLike( obj ) {
4586
4587	// Support: real iOS 8.2 only (not reproducible in simulator)
4588	// `in` check used to prevent JIT error (gh-2145)
4589	// hasOwn isn't used here due to false negatives
4590	// regarding Nodelist length in IE
4591	var length = !!obj && "length" in obj && obj.length,
4592		type = toType( obj );
4593
4594	if ( isFunction( obj ) || isWindow( obj ) ) {
4595		return false;
4596	}
4597
4598	return type === "array" || length === 0 ||
4599		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
4600}
4601
4602
4603function nodeName( elem, name ) {
4604
4605	return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
4606
4607}
4608var pop = arr.pop;
4609
4610
4611var sort = arr.sort;
4612
4613
4614var splice = arr.splice;
4615
4616
4617var whitespace = "[\\x20\\t\\r\\n\\f]";
4618
4619
4620var rtrimCSS = new RegExp(
4621	"^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
4622	"g"
4623);
4624
4625
4626
4627
4628// Note: an element does not contain itself
4629jQuery.contains = function( a, b ) {
4630	var bup = b && b.parentNode;
4631
4632	return a === bup || !!( bup && bup.nodeType === 1 && (
4633
4634		// Support: IE 9 - 11+
4635		// IE doesn't have `contains` on SVG.
4636		a.contains ?
4637			a.contains( bup ) :
4638			a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
4639	) );
4640};
4641
4642
4643
4644
4645// CSS string/identifier serialization
4646// https://drafts.csswg.org/cssom/#common-serializing-idioms
4647var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
4648
4649function fcssescape( ch, asCodePoint ) {
4650	if ( asCodePoint ) {
4651
4652		// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
4653		if ( ch === "\0" ) {
4654			return "\uFFFD";
4655		}
4656
4657		// Control characters and (dependent upon position) numbers get escaped as code points
4658		return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
4659	}
4660
4661	// Other potentially-special ASCII characters get backslash-escaped
4662	return "\\" + ch;
4663}
4664
4665jQuery.escapeSelector = function( sel ) {
4666	return ( sel + "" ).replace( rcssescape, fcssescape );
4667};
4668
4669
4670
4671
4672var preferredDoc = document,
4673	pushNative = push;
4674
4675( function() {
4676
4677var i,
4678	Expr,
4679	outermostContext,
4680	sortInput,
4681	hasDuplicate,
4682	push = pushNative,
4683
4684	// Local document vars
4685	document,
4686	documentElement,
4687	documentIsHTML,
4688	rbuggyQSA,
4689	matches,
4690
4691	// Instance-specific data
4692	expando = jQuery.expando,
4693	dirruns = 0,
4694	done = 0,
4695	classCache = createCache(),
4696	tokenCache = createCache(),
4697	compilerCache = createCache(),
4698	nonnativeSelectorCache = createCache(),
4699	sortOrder = function( a, b ) {
4700		if ( a === b ) {
4701			hasDuplicate = true;
4702		}
4703		return 0;
4704	},
4705
4706	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|" +
4707		"loop|multiple|open|readonly|required|scoped",
4708
4709	// Regular expressions
4710
4711	// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
4712	identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace +
4713		"?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
4714
4715	// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors
4716	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
4717
4718		// Operator (capture 2)
4719		"*([*^$|!~]?=)" + whitespace +
4720
4721		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
4722		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" +
4723		whitespace + "*\\]",
4724
4725	pseudos = ":(" + identifier + ")(?:\\((" +
4726
4727		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
4728		// 1. quoted (capture 3; capture 4 or capture 5)
4729		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
4730
4731		// 2. simple (capture 6)
4732		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
4733
4734		// 3. anything else (capture 2)
4735		".*" +
4736		")\\)|)",
4737
4738	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
4739	rwhitespace = new RegExp( whitespace + "+", "g" ),
4740
4741	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
4742	rleadingCombinator = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" +
4743		whitespace + "*" ),
4744	rdescend = new RegExp( whitespace + "|>" ),
4745
4746	rpseudo = new RegExp( pseudos ),
4747	ridentifier = new RegExp( "^" + identifier + "$" ),
4748
4749	matchExpr = {
4750		ID: new RegExp( "^#(" + identifier + ")" ),
4751		CLASS: new RegExp( "^\\.(" + identifier + ")" ),
4752		TAG: new RegExp( "^(" + identifier + "|[*])" ),
4753		ATTR: new RegExp( "^" + attributes ),
4754		PSEUDO: new RegExp( "^" + pseudos ),
4755		CHILD: new RegExp(
4756			"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" +
4757				whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" +
4758				whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
4759		bool: new RegExp( "^(?:" + booleans + ")$", "i" ),
4760
4761		// For use in libraries implementing .is()
4762		// We use this for POS matching in `select`
4763		needsContext: new RegExp( "^" + whitespace +
4764			"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace +
4765			"*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
4766	},
4767
4768	rinputs = /^(?:input|select|textarea|button)$/i,
4769	rheader = /^h\d$/i,
4770
4771	// Easily-parseable/retrievable ID or TAG or CLASS selectors
4772	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
4773
4774	rsibling = /[+~]/,
4775
4776	// CSS escapes
4777	// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters
4778	runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace +
4779		"?|\\\\([^\\r\\n\\f])", "g" ),
4780	funescape = function( escape, nonHex ) {
4781		var high = "0x" + escape.slice( 1 ) - 0x10000;
4782
4783		if ( nonHex ) {
4784
4785			// Strip the backslash prefix from a non-hex escape sequence
4786			return nonHex;
4787		}
4788
4789		// Replace a hexadecimal escape sequence with the encoded Unicode code point
4790		// Support: IE <=11+
4791		// For values outside the Basic Multilingual Plane (BMP), manually construct a
4792		// surrogate pair
4793		return high < 0 ?
4794			String.fromCharCode( high + 0x10000 ) :
4795			String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
4796	},
4797
4798	// Used for iframes; see `setDocument`.
4799	// Support: IE 9 - 11+, Edge 12 - 18+
4800	// Removing the function wrapper causes a "Permission Denied"
4801	// error in IE/Edge.
4802	unloadHandler = function() {
4803		setDocument();
4804	},
4805
4806	inDisabledFieldset = addCombinator(
4807		function( elem ) {
4808			return elem.disabled === true && nodeName( elem, "fieldset" );
4809		},
4810		{ dir: "parentNode", next: "legend" }
4811	);
4812
4813// Support: IE <=9 only
4814// Accessing document.activeElement can throw unexpectedly
4815// https://bugs.jquery.com/ticket/13393
4816function safeActiveElement() {
4817	try {
4818		return document.activeElement;
4819	} catch ( err ) { }
4820}
4821
4822// Optimize for push.apply( _, NodeList )
4823try {
4824	push.apply(
4825		( arr = slice.call( preferredDoc.childNodes ) ),
4826		preferredDoc.childNodes
4827	);
4828
4829	// Support: Android <=4.0
4830	// Detect silently failing push.apply
4831	// eslint-disable-next-line no-unused-expressions
4832	arr[ preferredDoc.childNodes.length ].nodeType;
4833} catch ( e ) {
4834	push = {
4835		apply: function( target, els ) {
4836			pushNative.apply( target, slice.call( els ) );
4837		},
4838		call: function( target ) {
4839			pushNative.apply( target, slice.call( arguments, 1 ) );
4840		}
4841	};
4842}
4843
4844function find( selector, context, results, seed ) {
4845	var m, i, elem, nid, match, groups, newSelector,
4846		newContext = context && context.ownerDocument,
4847
4848		// nodeType defaults to 9, since context defaults to document
4849		nodeType = context ? context.nodeType : 9;
4850
4851	results = results || [];
4852
4853	// Return early from calls with invalid selector or context
4854	if ( typeof selector !== "string" || !selector ||
4855		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
4856
4857		return results;
4858	}
4859
4860	// Try to shortcut find operations (as opposed to filters) in HTML documents
4861	if ( !seed ) {
4862		setDocument( context );
4863		context = context || document;
4864
4865		if ( documentIsHTML ) {
4866
4867			// If the selector is sufficiently simple, try using a "get*By*" DOM method
4868			// (excepting DocumentFragment context, where the methods don't exist)
4869			if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {
4870
4871				// ID selector
4872				if ( ( m = match[ 1 ] ) ) {
4873
4874					// Document context
4875					if ( nodeType === 9 ) {
4876						if ( ( elem = context.getElementById( m ) ) ) {
4877
4878							// Support: IE 9 only
4879							// getElementById can match elements by name instead of ID
4880							if ( elem.id === m ) {
4881								push.call( results, elem );
4882								return results;
4883							}
4884						} else {
4885							return results;
4886						}
4887
4888					// Element context
4889					} else {
4890
4891						// Support: IE 9 only
4892						// getElementById can match elements by name instead of ID
4893						if ( newContext && ( elem = newContext.getElementById( m ) ) &&
4894							find.contains( context, elem ) &&
4895							elem.id === m ) {
4896
4897							push.call( results, elem );
4898							return results;
4899						}
4900					}
4901
4902				// Type selector
4903				} else if ( match[ 2 ] ) {
4904					push.apply( results, context.getElementsByTagName( selector ) );
4905					return results;
4906
4907				// Class selector
4908				} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {
4909					push.apply( results, context.getElementsByClassName( m ) );
4910					return results;
4911				}
4912			}
4913
4914			// Take advantage of querySelectorAll
4915			if ( !nonnativeSelectorCache[ selector + " " ] &&
4916				( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {
4917
4918				newSelector = selector;
4919				newContext = context;
4920
4921				// qSA considers elements outside a scoping root when evaluating child or
4922				// descendant combinators, which is not what we want.
4923				// In such cases, we work around the behavior by prefixing every selector in the
4924				// list with an ID selector referencing the scope context.
4925				// The technique has to be used as well when a leading combinator is used
4926				// as such selectors are not recognized by querySelectorAll.
4927				// Thanks to Andrew Dupont for this technique.
4928				if ( nodeType === 1 &&
4929					( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {
4930
4931					// Expand context for sibling selectors
4932					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
4933						context;
4934
4935					// We can use :scope instead of the ID hack if the browser
4936					// supports it & if we're not changing the context.
4937					// Support: IE 11+, Edge 17 - 18+
4938					// IE/Edge sometimes throw a "Permission denied" error when
4939					// strict-comparing two documents; shallow comparisons work.
4940					// eslint-disable-next-line eqeqeq
4941					if ( newContext != context || !support.scope ) {
4942
4943						// Capture the context ID, setting it first if necessary
4944						if ( ( nid = context.getAttribute( "id" ) ) ) {
4945							nid = jQuery.escapeSelector( nid );
4946						} else {
4947							context.setAttribute( "id", ( nid = expando ) );
4948						}
4949					}
4950
4951					// Prefix every selector in the list
4952					groups = tokenize( selector );
4953					i = groups.length;
4954					while ( i-- ) {
4955						groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " +
4956							toSelector( groups[ i ] );
4957					}
4958					newSelector = groups.join( "," );
4959				}
4960
4961				try {
4962					push.apply( results,
4963						newContext.querySelectorAll( newSelector )
4964					);
4965					return results;
4966				} catch ( qsaError ) {
4967					nonnativeSelectorCache( selector, true );
4968				} finally {
4969					if ( nid === expando ) {
4970						context.removeAttribute( "id" );
4971					}
4972				}
4973			}
4974		}
4975	}
4976
4977	// All others
4978	return select( selector.replace( rtrimCSS, "$1" ), context, results, seed );
4979}
4980
4981/**
4982 * Create key-value caches of limited size
4983 * @returns {function(string, object)} Returns the Object data after storing it on itself with
4984 *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
4985 *	deleting the oldest entry
4986 */
4987function createCache() {
4988	var keys = [];
4989
4990	function cache( key, value ) {
4991
4992		// Use (key + " ") to avoid collision with native prototype properties
4993		// (see https://github.com/jquery/sizzle/issues/157)
4994		if ( keys.push( key + " " ) > Expr.cacheLength ) {
4995
4996			// Only keep the most recent entries
4997			delete cache[ keys.shift() ];
4998		}
4999		return ( cache[ key + " " ] = value );
5000	}
5001	return cache;
5002}
5003
5004/**
5005 * Mark a function for special use by jQuery selector module
5006 * @param {Function} fn The function to mark
5007 */
5008function markFunction( fn ) {
5009	fn[ expando ] = true;
5010	return fn;
5011}
5012
5013/**
5014 * Support testing using an element
5015 * @param {Function} fn Passed the created element and returns a boolean result
5016 */
5017function assert( fn ) {
5018	var el = document.createElement( "fieldset" );
5019
5020	try {
5021		return !!fn( el );
5022	} catch ( e ) {
5023		return false;
5024	} finally {
5025
5026		// Remove from its parent by default
5027		if ( el.parentNode ) {
5028			el.parentNode.removeChild( el );
5029		}
5030
5031		// release memory in IE
5032		el = null;
5033	}
5034}
5035
5036/**
5037 * Returns a function to use in pseudos for input types
5038 * @param {String} type
5039 */
5040function createInputPseudo( type ) {
5041	return function( elem ) {
5042		return nodeName( elem, "input" ) && elem.type === type;
5043	};
5044}
5045
5046/**
5047 * Returns a function to use in pseudos for buttons
5048 * @param {String} type
5049 */
5050function createButtonPseudo( type ) {
5051	return function( elem ) {
5052		return ( nodeName( elem, "input" ) || nodeName( elem, "button" ) ) &&
5053			elem.type === type;
5054	};
5055}
5056
5057/**
5058 * Returns a function to use in pseudos for :enabled/:disabled
5059 * @param {Boolean} disabled true for :disabled; false for :enabled
5060 */
5061function createDisabledPseudo( disabled ) {
5062
5063	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
5064	return function( elem ) {
5065
5066		// Only certain elements can match :enabled or :disabled
5067		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
5068		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
5069		if ( "form" in elem ) {
5070
5071			// Check for inherited disabledness on relevant non-disabled elements:
5072			// * listed form-associated elements in a disabled fieldset
5073			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
5074			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
5075			// * option elements in a disabled optgroup
5076			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
5077			// All such elements have a "form" property.
5078			if ( elem.parentNode && elem.disabled === false ) {
5079
5080				// Option elements defer to a parent optgroup if present
5081				if ( "label" in elem ) {
5082					if ( "label" in elem.parentNode ) {
5083						return elem.parentNode.disabled === disabled;
5084					} else {
5085						return elem.disabled === disabled;
5086					}
5087				}
5088
5089				// Support: IE 6 - 11+
5090				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
5091				return elem.isDisabled === disabled ||
5092
5093					// Where there is no isDisabled, check manually
5094					elem.isDisabled !== !disabled &&
5095						inDisabledFieldset( elem ) === disabled;
5096			}
5097
5098			return elem.disabled === disabled;
5099
5100		// Try to winnow out elements that can't be disabled before trusting the disabled property.
5101		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
5102		// even exist on them, let alone have a boolean value.
5103		} else if ( "label" in elem ) {
5104			return elem.disabled === disabled;
5105		}
5106
5107		// Remaining elements are neither :enabled nor :disabled
5108		return false;
5109	};
5110}
5111
5112/**
5113 * Returns a function to use in pseudos for positionals
5114 * @param {Function} fn
5115 */
5116function createPositionalPseudo( fn ) {
5117	return markFunction( function( argument ) {
5118		argument = +argument;
5119		return markFunction( function( seed, matches ) {
5120			var j,
5121				matchIndexes = fn( [], seed.length, argument ),
5122				i = matchIndexes.length;
5123
5124			// Match elements found at the specified indexes
5125			while ( i-- ) {
5126				if ( seed[ ( j = matchIndexes[ i ] ) ] ) {
5127					seed[ j ] = !( matches[ j ] = seed[ j ] );
5128				}
5129			}
5130		} );
5131	} );
5132}
5133
5134/**
5135 * Checks a node for validity as a jQuery selector context
5136 * @param {Element|Object=} context
5137 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
5138 */
5139function testContext( context ) {
5140	return context && typeof context.getElementsByTagName !== "undefined" && context;
5141}
5142
5143/**
5144 * Sets document-related variables once based on the current document
5145 * @param {Element|Object} [node] An element or document object to use to set the document
5146 * @returns {Object} Returns the current document
5147 */
5148function setDocument( node ) {
5149	var subWindow,
5150		doc = node ? node.ownerDocument || node : preferredDoc;
5151
5152	// Return early if doc is invalid or already selected
5153	// Support: IE 11+, Edge 17 - 18+
5154	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5155	// two documents; shallow comparisons work.
5156	// eslint-disable-next-line eqeqeq
5157	if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {
5158		return document;
5159	}
5160
5161	// Update global variables
5162	document = doc;
5163	documentElement = document.documentElement;
5164	documentIsHTML = !jQuery.isXMLDoc( document );
5165
5166	// Support: iOS 7 only, IE 9 - 11+
5167	// Older browsers didn't support unprefixed `matches`.
5168	matches = documentElement.matches ||
5169		documentElement.webkitMatchesSelector ||
5170		documentElement.msMatchesSelector;
5171
5172	// Support: IE 9 - 11+, Edge 12 - 18+
5173	// Accessing iframe documents after unload throws "permission denied" errors
5174	// (see trac-13936).
5175	// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,
5176	// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.
5177	if ( documentElement.msMatchesSelector &&
5178
5179		// Support: IE 11+, Edge 17 - 18+
5180		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5181		// two documents; shallow comparisons work.
5182		// eslint-disable-next-line eqeqeq
5183		preferredDoc != document &&
5184		( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {
5185
5186		// Support: IE 9 - 11+, Edge 12 - 18+
5187		subWindow.addEventListener( "unload", unloadHandler );
5188	}
5189
5190	// Support: IE <10
5191	// Check if getElementById returns elements by name
5192	// The broken getElementById methods don't pick up programmatically-set names,
5193	// so use a roundabout getElementsByName test
5194	support.getById = assert( function( el ) {
5195		documentElement.appendChild( el ).id = jQuery.expando;
5196		return !document.getElementsByName ||
5197			!document.getElementsByName( jQuery.expando ).length;
5198	} );
5199
5200	// Support: IE 9 only
5201	// Check to see if it's possible to do matchesSelector
5202	// on a disconnected node.
5203	support.disconnectedMatch = assert( function( el ) {
5204		return matches.call( el, "*" );
5205	} );
5206
5207	// Support: IE 9 - 11+, Edge 12 - 18+
5208	// IE/Edge don't support the :scope pseudo-class.
5209	support.scope = assert( function() {
5210		return document.querySelectorAll( ":scope" );
5211	} );
5212
5213	// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only
5214	// Make sure the `:has()` argument is parsed unforgivingly.
5215	// We include `*` in the test to detect buggy implementations that are
5216	// _selectively_ forgiving (specifically when the list includes at least
5217	// one valid selector).
5218	// Note that we treat complete lack of support for `:has()` as if it were
5219	// spec-compliant support, which is fine because use of `:has()` in such
5220	// environments will fail in the qSA path and fall back to jQuery traversal
5221	// anyway.
5222	support.cssHas = assert( function() {
5223		try {
5224			document.querySelector( ":has(*,:jqfake)" );
5225			return false;
5226		} catch ( e ) {
5227			return true;
5228		}
5229	} );
5230
5231	// ID filter and find
5232	if ( support.getById ) {
5233		Expr.filter.ID = function( id ) {
5234			var attrId = id.replace( runescape, funescape );
5235			return function( elem ) {
5236				return elem.getAttribute( "id" ) === attrId;
5237			};
5238		};
5239		Expr.find.ID = function( id, context ) {
5240			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
5241				var elem = context.getElementById( id );
5242				return elem ? [ elem ] : [];
5243			}
5244		};
5245	} else {
5246		Expr.filter.ID =  function( id ) {
5247			var attrId = id.replace( runescape, funescape );
5248			return function( elem ) {
5249				var node = typeof elem.getAttributeNode !== "undefined" &&
5250					elem.getAttributeNode( "id" );
5251				return node && node.value === attrId;
5252			};
5253		};
5254
5255		// Support: IE 6 - 7 only
5256		// getElementById is not reliable as a find shortcut
5257		Expr.find.ID = function( id, context ) {
5258			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
5259				var node, i, elems,
5260					elem = context.getElementById( id );
5261
5262				if ( elem ) {
5263
5264					// Verify the id attribute
5265					node = elem.getAttributeNode( "id" );
5266					if ( node && node.value === id ) {
5267						return [ elem ];
5268					}
5269
5270					// Fall back on getElementsByName
5271					elems = context.getElementsByName( id );
5272					i = 0;
5273					while ( ( elem = elems[ i++ ] ) ) {
5274						node = elem.getAttributeNode( "id" );
5275						if ( node && node.value === id ) {
5276							return [ elem ];
5277						}
5278					}
5279				}
5280
5281				return [];
5282			}
5283		};
5284	}
5285
5286	// Tag
5287	Expr.find.TAG = function( tag, context ) {
5288		if ( typeof context.getElementsByTagName !== "undefined" ) {
5289			return context.getElementsByTagName( tag );
5290
5291		// DocumentFragment nodes don't have gEBTN
5292		} else {
5293			return context.querySelectorAll( tag );
5294		}
5295	};
5296
5297	// Class
5298	Expr.find.CLASS = function( className, context ) {
5299		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
5300			return context.getElementsByClassName( className );
5301		}
5302	};
5303
5304	/* QSA/matchesSelector
5305	---------------------------------------------------------------------- */
5306
5307	// QSA and matchesSelector support
5308
5309	rbuggyQSA = [];
5310
5311	// Build QSA regex
5312	// Regex strategy adopted from Diego Perini
5313	assert( function( el ) {
5314
5315		var input;
5316
5317		documentElement.appendChild( el ).innerHTML =
5318			"<a id='" + expando + "' href='' disabled='disabled'></a>" +
5319			"<select id='" + expando + "-\r\\' disabled='disabled'>" +
5320			"<option selected=''></option></select>";
5321
5322		// Support: iOS <=7 - 8 only
5323		// Boolean attributes and "value" are not treated correctly in some XML documents
5324		if ( !el.querySelectorAll( "[selected]" ).length ) {
5325			rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
5326		}
5327
5328		// Support: iOS <=7 - 8 only
5329		if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
5330			rbuggyQSA.push( "~=" );
5331		}
5332
5333		// Support: iOS 8 only
5334		// https://bugs.webkit.org/show_bug.cgi?id=136851
5335		// In-page `selector#id sibling-combinator selector` fails
5336		if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
5337			rbuggyQSA.push( ".#.+[+~]" );
5338		}
5339
5340		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
5341		// In some of the document kinds, these selectors wouldn't work natively.
5342		// This is probably OK but for backwards compatibility we want to maintain
5343		// handling them through jQuery traversal in jQuery 3.x.
5344		if ( !el.querySelectorAll( ":checked" ).length ) {
5345			rbuggyQSA.push( ":checked" );
5346		}
5347
5348		// Support: Windows 8 Native Apps
5349		// The type and name attributes are restricted during .innerHTML assignment
5350		input = document.createElement( "input" );
5351		input.setAttribute( "type", "hidden" );
5352		el.appendChild( input ).setAttribute( "name", "D" );
5353
5354		// Support: IE 9 - 11+
5355		// IE's :disabled selector does not pick up the children of disabled fieldsets
5356		// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+
5357		// In some of the document kinds, these selectors wouldn't work natively.
5358		// This is probably OK but for backwards compatibility we want to maintain
5359		// handling them through jQuery traversal in jQuery 3.x.
5360		documentElement.appendChild( el ).disabled = true;
5361		if ( el.querySelectorAll( ":disabled" ).length !== 2 ) {
5362			rbuggyQSA.push( ":enabled", ":disabled" );
5363		}
5364
5365		// Support: IE 11+, Edge 15 - 18+
5366		// IE 11/Edge don't find elements on a `[name='']` query in some cases.
5367		// Adding a temporary attribute to the document before the selection works
5368		// around the issue.
5369		// Interestingly, IE 10 & older don't seem to have the issue.
5370		input = document.createElement( "input" );
5371		input.setAttribute( "name", "" );
5372		el.appendChild( input );
5373		if ( !el.querySelectorAll( "[name='']" ).length ) {
5374			rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" +
5375				whitespace + "*(?:''|\"\")" );
5376		}
5377	} );
5378
5379	if ( !support.cssHas ) {
5380
5381		// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+
5382		// Our regular `try-catch` mechanism fails to detect natively-unsupported
5383		// pseudo-classes inside `:has()` (such as `:has(:contains("Foo"))`)
5384		// in browsers that parse the `:has()` argument as a forgiving selector list.
5385		// https://drafts.csswg.org/selectors/#relational now requires the argument
5386		// to be parsed unforgivingly, but browsers have not yet fully adjusted.
5387		rbuggyQSA.push( ":has" );
5388	}
5389
5390	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) );
5391
5392	/* Sorting
5393	---------------------------------------------------------------------- */
5394
5395	// Document order sorting
5396	sortOrder = function( a, b ) {
5397
5398		// Flag for duplicate removal
5399		if ( a === b ) {
5400			hasDuplicate = true;
5401			return 0;
5402		}
5403
5404		// Sort on method existence if only one input has compareDocumentPosition
5405		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
5406		if ( compare ) {
5407			return compare;
5408		}
5409
5410		// Calculate position if both inputs belong to the same document
5411		// Support: IE 11+, Edge 17 - 18+
5412		// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5413		// two documents; shallow comparisons work.
5414		// eslint-disable-next-line eqeqeq
5415		compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?
5416			a.compareDocumentPosition( b ) :
5417
5418			// Otherwise we know they are disconnected
5419			1;
5420
5421		// Disconnected nodes
5422		if ( compare & 1 ||
5423			( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {
5424
5425			// Choose the first element that is related to our preferred document
5426			// Support: IE 11+, Edge 17 - 18+
5427			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5428			// two documents; shallow comparisons work.
5429			// eslint-disable-next-line eqeqeq
5430			if ( a === document || a.ownerDocument == preferredDoc &&
5431				find.contains( preferredDoc, a ) ) {
5432				return -1;
5433			}
5434
5435			// Support: IE 11+, Edge 17 - 18+
5436			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5437			// two documents; shallow comparisons work.
5438			// eslint-disable-next-line eqeqeq
5439			if ( b === document || b.ownerDocument == preferredDoc &&
5440				find.contains( preferredDoc, b ) ) {
5441				return 1;
5442			}
5443
5444			// Maintain original order
5445			return sortInput ?
5446				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
5447				0;
5448		}
5449
5450		return compare & 4 ? -1 : 1;
5451	};
5452
5453	return document;
5454}
5455
5456find.matches = function( expr, elements ) {
5457	return find( expr, null, null, elements );
5458};
5459
5460find.matchesSelector = function( elem, expr ) {
5461	setDocument( elem );
5462
5463	if ( documentIsHTML &&
5464		!nonnativeSelectorCache[ expr + " " ] &&
5465		( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {
5466
5467		try {
5468			var ret = matches.call( elem, expr );
5469
5470			// IE 9's matchesSelector returns false on disconnected nodes
5471			if ( ret || support.disconnectedMatch ||
5472
5473					// As well, disconnected nodes are said to be in a document
5474					// fragment in IE 9
5475					elem.document && elem.document.nodeType !== 11 ) {
5476				return ret;
5477			}
5478		} catch ( e ) {
5479			nonnativeSelectorCache( expr, true );
5480		}
5481	}
5482
5483	return find( expr, document, null, [ elem ] ).length > 0;
5484};
5485
5486find.contains = function( context, elem ) {
5487
5488	// Set document vars if needed
5489	// Support: IE 11+, Edge 17 - 18+
5490	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5491	// two documents; shallow comparisons work.
5492	// eslint-disable-next-line eqeqeq
5493	if ( ( context.ownerDocument || context ) != document ) {
5494		setDocument( context );
5495	}
5496	return jQuery.contains( context, elem );
5497};
5498
5499
5500find.attr = function( elem, name ) {
5501
5502	// Set document vars if needed
5503	// Support: IE 11+, Edge 17 - 18+
5504	// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
5505	// two documents; shallow comparisons work.
5506	// eslint-disable-next-line eqeqeq
5507	if ( ( elem.ownerDocument || elem ) != document ) {
5508		setDocument( elem );
5509	}
5510
5511	var fn = Expr.attrHandle[ name.toLowerCase() ],
5512
5513		// Don't get fooled by Object.prototype properties (see trac-13807)
5514		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
5515			fn( elem, name, !documentIsHTML ) :
5516			undefined;
5517
5518	if ( val !== undefined ) {
5519		return val;
5520	}
5521
5522	return elem.getAttribute( name );
5523};
5524
5525find.error = function( msg ) {
5526	throw new Error( "Syntax error, unrecognized expression: " + msg );
5527};
5528
5529/**
5530 * Document sorting and removing duplicates
5531 * @param {ArrayLike} results
5532 */
5533jQuery.uniqueSort = function( results ) {
5534	var elem,
5535		duplicates = [],
5536		j = 0,
5537		i = 0;
5538
5539	// Unless we *know* we can detect duplicates, assume their presence
5540	//
5541	// Support: Android <=4.0+
5542	// Testing for detecting duplicates is unpredictable so instead assume we can't
5543	// depend on duplicate detection in all browsers without a stable sort.
5544	hasDuplicate = !support.sortStable;
5545	sortInput = !support.sortStable && slice.call( results, 0 );
5546	sort.call( results, sortOrder );
5547
5548	if ( hasDuplicate ) {
5549		while ( ( elem = results[ i++ ] ) ) {
5550			if ( elem === results[ i ] ) {
5551				j = duplicates.push( i );
5552			}
5553		}
5554		while ( j-- ) {
5555			splice.call( results, duplicates[ j ], 1 );
5556		}
5557	}
5558
5559	// Clear input after sorting to release objects
5560	// See https://github.com/jquery/sizzle/pull/225
5561	sortInput = null;
5562
5563	return results;
5564};
5565
5566jQuery.fn.uniqueSort = function() {
5567	return this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );
5568};
5569
5570Expr = jQuery.expr = {
5571
5572	// Can be adjusted by the user
5573	cacheLength: 50,
5574
5575	createPseudo: markFunction,
5576
5577	match: matchExpr,
5578
5579	attrHandle: {},
5580
5581	find: {},
5582
5583	relative: {
5584		">": { dir: "parentNode", first: true },
5585		" ": { dir: "parentNode" },
5586		"+": { dir: "previousSibling", first: true },
5587		"~": { dir: "previousSibling" }
5588	},
5589
5590	preFilter: {
5591		ATTR: function( match ) {
5592			match[ 1 ] = match[ 1 ].replace( runescape, funescape );
5593
5594			// Move the given value to match[3] whether quoted or unquoted
5595			match[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || "" )
5596				.replace( runescape, funescape );
5597
5598			if ( match[ 2 ] === "~=" ) {
5599				match[ 3 ] = " " + match[ 3 ] + " ";
5600			}
5601
5602			return match.slice( 0, 4 );
5603		},
5604
5605		CHILD: function( match ) {
5606
5607			/* matches from matchExpr["CHILD"]
5608				1 type (only|nth|...)
5609				2 what (child|of-type)
5610				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
5611				4 xn-component of xn+y argument ([+-]?\d*n|)
5612				5 sign of xn-component
5613				6 x of xn-component
5614				7 sign of y-component
5615				8 y of y-component
5616			*/
5617			match[ 1 ] = match[ 1 ].toLowerCase();
5618
5619			if ( match[ 1 ].slice( 0, 3 ) === "nth" ) {
5620
5621				// nth-* requires argument
5622				if ( !match[ 3 ] ) {
5623					find.error( match[ 0 ] );
5624				}
5625
5626				// numeric x and y parameters for Expr.filter.CHILD
5627				// remember that false/true cast respectively to 0/1
5628				match[ 4 ] = +( match[ 4 ] ?
5629					match[ 5 ] + ( match[ 6 ] || 1 ) :
5630					2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" )
5631				);
5632				match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" );
5633
5634			// other types prohibit arguments
5635			} else if ( match[ 3 ] ) {
5636				find.error( match[ 0 ] );
5637			}
5638
5639			return match;
5640		},
5641
5642		PSEUDO: function( match ) {
5643			var excess,
5644				unquoted = !match[ 6 ] && match[ 2 ];
5645
5646			if ( matchExpr.CHILD.test( match[ 0 ] ) ) {
5647				return null;
5648			}
5649
5650			// Accept quoted arguments as-is
5651			if ( match[ 3 ] ) {
5652				match[ 2 ] = match[ 4 ] || match[ 5 ] || "";
5653
5654			// Strip excess characters from unquoted arguments
5655			} else if ( unquoted && rpseudo.test( unquoted ) &&
5656
5657				// Get excess from tokenize (recursively)
5658				( excess = tokenize( unquoted, true ) ) &&
5659
5660				// advance to the next closing parenthesis
5661				( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) {
5662
5663				// excess is a negative index
5664				match[ 0 ] = match[ 0 ].slice( 0, excess );
5665				match[ 2 ] = unquoted.slice( 0, excess );
5666			}
5667
5668			// Return only captures needed by the pseudo filter method (type and argument)
5669			return match.slice( 0, 3 );
5670		}
5671	},
5672
5673	filter: {
5674
5675		TAG: function( nodeNameSelector ) {
5676			var expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
5677			return nodeNameSelector === "*" ?
5678				function() {
5679					return true;
5680				} :
5681				function( elem ) {
5682					return nodeName( elem, expectedNodeName );
5683				};
5684		},
5685
5686		CLASS: function( className ) {
5687			var pattern = classCache[ className + " " ];
5688
5689			return pattern ||
5690				( pattern = new RegExp( "(^|" + whitespace + ")" + className +
5691					"(" + whitespace + "|$)" ) ) &&
5692				classCache( className, function( elem ) {
5693					return pattern.test(
5694						typeof elem.className === "string" && elem.className ||
5695							typeof elem.getAttribute !== "undefined" &&
5696								elem.getAttribute( "class" ) ||
5697							""
5698					);
5699				} );
5700		},
5701
5702		ATTR: function( name, operator, check ) {
5703			return function( elem ) {
5704				var result = find.attr( elem, name );
5705
5706				if ( result == null ) {
5707					return operator === "!=";
5708				}
5709				if ( !operator ) {
5710					return true;
5711				}
5712
5713				result += "";
5714
5715				if ( operator === "=" ) {
5716					return result === check;
5717				}
5718				if ( operator === "!=" ) {
5719					return result !== check;
5720				}
5721				if ( operator === "^=" ) {
5722					return check && result.indexOf( check ) === 0;
5723				}
5724				if ( operator === "*=" ) {
5725					return check && result.indexOf( check ) > -1;
5726				}
5727				if ( operator === "$=" ) {
5728					return check && result.slice( -check.length ) === check;
5729				}
5730				if ( operator === "~=" ) {
5731					return ( " " + result.replace( rwhitespace, " " ) + " " )
5732						.indexOf( check ) > -1;
5733				}
5734				if ( operator === "|=" ) {
5735					return result === check || result.slice( 0, check.length + 1 ) === check + "-";
5736				}
5737
5738				return false;
5739			};
5740		},
5741
5742		CHILD: function( type, what, _argument, first, last ) {
5743			var simple = type.slice( 0, 3 ) !== "nth",
5744				forward = type.slice( -4 ) !== "last",
5745				ofType = what === "of-type";
5746
5747			return first === 1 && last === 0 ?
5748
5749				// Shortcut for :nth-*(n)
5750				function( elem ) {
5751					return !!elem.parentNode;
5752				} :
5753
5754				function( elem, _context, xml ) {
5755					var cache, outerCache, node, nodeIndex, start,
5756						dir = simple !== forward ? "nextSibling" : "previousSibling",
5757						parent = elem.parentNode,
5758						name = ofType && elem.nodeName.toLowerCase(),
5759						useCache = !xml && !ofType,
5760						diff = false;
5761
5762					if ( parent ) {
5763
5764						// :(first|last|only)-(child|of-type)
5765						if ( simple ) {
5766							while ( dir ) {
5767								node = elem;
5768								while ( ( node = node[ dir ] ) ) {
5769									if ( ofType ?
5770										nodeName( node, name ) :
5771										node.nodeType === 1 ) {
5772
5773										return false;
5774									}
5775								}
5776
5777								// Reverse direction for :only-* (if we haven't yet done so)
5778								start = dir = type === "only" && !start && "nextSibling";
5779							}
5780							return true;
5781						}
5782
5783						start = [ forward ? parent.firstChild : parent.lastChild ];
5784
5785						// non-xml :nth-child(...) stores cache data on `parent`
5786						if ( forward && useCache ) {
5787
5788							// Seek `elem` from a previously-cached index
5789							outerCache = parent[ expando ] || ( parent[ expando ] = {} );
5790							cache = outerCache[ type ] || [];
5791							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
5792							diff = nodeIndex && cache[ 2 ];
5793							node = nodeIndex && parent.childNodes[ nodeIndex ];
5794
5795							while ( ( node = ++nodeIndex && node && node[ dir ] ||
5796
5797								// Fallback to seeking `elem` from the start
5798								( diff = nodeIndex = 0 ) || start.pop() ) ) {
5799
5800								// When found, cache indexes on `parent` and break
5801								if ( node.nodeType === 1 && ++diff && node === elem ) {
5802									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
5803									break;
5804								}
5805							}
5806
5807						} else {
5808
5809							// Use previously-cached element index if available
5810							if ( useCache ) {
5811								outerCache = elem[ expando ] || ( elem[ expando ] = {} );
5812								cache = outerCache[ type ] || [];
5813								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
5814								diff = nodeIndex;
5815							}
5816
5817							// xml :nth-child(...)
5818							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
5819							if ( diff === false ) {
5820
5821								// Use the same loop as above to seek `elem` from the start
5822								while ( ( node = ++nodeIndex && node && node[ dir ] ||
5823									( diff = nodeIndex = 0 ) || start.pop() ) ) {
5824
5825									if ( ( ofType ?
5826										nodeName( node, name ) :
5827										node.nodeType === 1 ) &&
5828										++diff ) {
5829
5830										// Cache the index of each encountered element
5831										if ( useCache ) {
5832											outerCache = node[ expando ] ||
5833												( node[ expando ] = {} );
5834											outerCache[ type ] = [ dirruns, diff ];
5835										}
5836
5837										if ( node === elem ) {
5838											break;
5839										}
5840									}
5841								}
5842							}
5843						}
5844
5845						// Incorporate the offset, then check against cycle size
5846						diff -= last;
5847						return diff === first || ( diff % first === 0 && diff / first >= 0 );
5848					}
5849				};
5850		},
5851
5852		PSEUDO: function( pseudo, argument ) {
5853
5854			// pseudo-class names are case-insensitive
5855			// https://www.w3.org/TR/selectors/#pseudo-classes
5856			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
5857			// Remember that setFilters inherits from pseudos
5858			var args,
5859				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
5860					find.error( "unsupported pseudo: " + pseudo );
5861
5862			// The user may use createPseudo to indicate that
5863			// arguments are needed to create the filter function
5864			// just as jQuery does
5865			if ( fn[ expando ] ) {
5866				return fn( argument );
5867			}
5868
5869			// But maintain support for old signatures
5870			if ( fn.length > 1 ) {
5871				args = [ pseudo, pseudo, "", argument ];
5872				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
5873					markFunction( function( seed, matches ) {
5874						var idx,
5875							matched = fn( seed, argument ),
5876							i = matched.length;
5877						while ( i-- ) {
5878							idx = indexOf.call( seed, matched[ i ] );
5879							seed[ idx ] = !( matches[ idx ] = matched[ i ] );
5880						}
5881					} ) :
5882					function( elem ) {
5883						return fn( elem, 0, args );
5884					};
5885			}
5886
5887			return fn;
5888		}
5889	},
5890
5891	pseudos: {
5892
5893		// Potentially complex pseudos
5894		not: markFunction( function( selector ) {
5895
5896			// Trim the selector passed to compile
5897			// to avoid treating leading and trailing
5898			// spaces as combinators
5899			var input = [],
5900				results = [],
5901				matcher = compile( selector.replace( rtrimCSS, "$1" ) );
5902
5903			return matcher[ expando ] ?
5904				markFunction( function( seed, matches, _context, xml ) {
5905					var elem,
5906						unmatched = matcher( seed, null, xml, [] ),
5907						i = seed.length;
5908
5909					// Match elements unmatched by `matcher`
5910					while ( i-- ) {
5911						if ( ( elem = unmatched[ i ] ) ) {
5912							seed[ i ] = !( matches[ i ] = elem );
5913						}
5914					}
5915				} ) :
5916				function( elem, _context, xml ) {
5917					input[ 0 ] = elem;
5918					matcher( input, null, xml, results );
5919
5920					// Don't keep the element
5921					// (see https://github.com/jquery/sizzle/issues/299)
5922					input[ 0 ] = null;
5923					return !results.pop();
5924				};
5925		} ),
5926
5927		has: markFunction( function( selector ) {
5928			return function( elem ) {
5929				return find( selector, elem ).length > 0;
5930			};
5931		} ),
5932
5933		contains: markFunction( function( text ) {
5934			text = text.replace( runescape, funescape );
5935			return function( elem ) {
5936				return ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;
5937			};
5938		} ),
5939
5940		// "Whether an element is represented by a :lang() selector
5941		// is based solely on the element's language value
5942		// being equal to the identifier C,
5943		// or beginning with the identifier C immediately followed by "-".
5944		// The matching of C against the element's language value is performed case-insensitively.
5945		// The identifier C does not have to be a valid language name."
5946		// https://www.w3.org/TR/selectors/#lang-pseudo
5947		lang: markFunction( function( lang ) {
5948
5949			// lang value must be a valid identifier
5950			if ( !ridentifier.test( lang || "" ) ) {
5951				find.error( "unsupported lang: " + lang );
5952			}
5953			lang = lang.replace( runescape, funescape ).toLowerCase();
5954			return function( elem ) {
5955				var elemLang;
5956				do {
5957					if ( ( elemLang = documentIsHTML ?
5958						elem.lang :
5959						elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) {
5960
5961						elemLang = elemLang.toLowerCase();
5962						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
5963					}
5964				} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );
5965				return false;
5966			};
5967		} ),
5968
5969		// Miscellaneous
5970		target: function( elem ) {
5971			var hash = window.location && window.location.hash;
5972			return hash && hash.slice( 1 ) === elem.id;
5973		},
5974
5975		root: function( elem ) {
5976			return elem === documentElement;
5977		},
5978
5979		focus: function( elem ) {
5980			return elem === safeActiveElement() &&
5981				document.hasFocus() &&
5982				!!( elem.type || elem.href || ~elem.tabIndex );
5983		},
5984
5985		// Boolean properties
5986		enabled: createDisabledPseudo( false ),
5987		disabled: createDisabledPseudo( true ),
5988
5989		checked: function( elem ) {
5990
5991			// In CSS3, :checked should return both checked and selected elements
5992			// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
5993			return ( nodeName( elem, "input" ) && !!elem.checked ) ||
5994				( nodeName( elem, "option" ) && !!elem.selected );
5995		},
5996
5997		selected: function( elem ) {
5998
5999			// Support: IE <=11+
6000			// Accessing the selectedIndex property
6001			// forces the browser to treat the default option as
6002			// selected when in an optgroup.
6003			if ( elem.parentNode ) {
6004				// eslint-disable-next-line no-unused-expressions
6005				elem.parentNode.selectedIndex;
6006			}
6007
6008			return elem.selected === true;
6009		},
6010
6011		// Contents
6012		empty: function( elem ) {
6013
6014			// https://www.w3.org/TR/selectors/#empty-pseudo
6015			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
6016			//   but not by others (comment: 8; processing instruction: 7; etc.)
6017			// nodeType < 6 works because attributes (2) do not appear as children
6018			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
6019				if ( elem.nodeType < 6 ) {
6020					return false;
6021				}
6022			}
6023			return true;
6024		},
6025
6026		parent: function( elem ) {
6027			return !Expr.pseudos.empty( elem );
6028		},
6029
6030		// Element/input types
6031		header: function( elem ) {
6032			return rheader.test( elem.nodeName );
6033		},
6034
6035		input: function( elem ) {
6036			return rinputs.test( elem.nodeName );
6037		},
6038
6039		button: function( elem ) {
6040			return nodeName( elem, "input" ) && elem.type === "button" ||
6041				nodeName( elem, "button" );
6042		},
6043
6044		text: function( elem ) {
6045			var attr;
6046			return nodeName( elem, "input" ) && elem.type === "text" &&
6047
6048				// Support: IE <10 only
6049				// New HTML5 attribute values (e.g., "search") appear
6050				// with elem.type === "text"
6051				( ( attr = elem.getAttribute( "type" ) ) == null ||
6052					attr.toLowerCase() === "text" );
6053		},
6054
6055		// Position-in-collection
6056		first: createPositionalPseudo( function() {
6057			return [ 0 ];
6058		} ),
6059
6060		last: createPositionalPseudo( function( _matchIndexes, length ) {
6061			return [ length - 1 ];
6062		} ),
6063
6064		eq: createPositionalPseudo( function( _matchIndexes, length, argument ) {
6065			return [ argument < 0 ? argument + length : argument ];
6066		} ),
6067
6068		even: createPositionalPseudo( function( matchIndexes, length ) {
6069			var i = 0;
6070			for ( ; i < length; i += 2 ) {
6071				matchIndexes.push( i );
6072			}
6073			return matchIndexes;
6074		} ),
6075
6076		odd: createPositionalPseudo( function( matchIndexes, length ) {
6077			var i = 1;
6078			for ( ; i < length; i += 2 ) {
6079				matchIndexes.push( i );
6080			}
6081			return matchIndexes;
6082		} ),
6083
6084		lt: createPositionalPseudo( function( matchIndexes, length, argument ) {
6085			var i;
6086
6087			if ( argument < 0 ) {
6088				i = argument + length;
6089			} else if ( argument > length ) {
6090				i = length;
6091			} else {
6092				i = argument;
6093			}
6094
6095			for ( ; --i >= 0; ) {
6096				matchIndexes.push( i );
6097			}
6098			return matchIndexes;
6099		} ),
6100
6101		gt: createPositionalPseudo( function( matchIndexes, length, argument ) {
6102			var i = argument < 0 ? argument + length : argument;
6103			for ( ; ++i < length; ) {
6104				matchIndexes.push( i );
6105			}
6106			return matchIndexes;
6107		} )
6108	}
6109};
6110
6111Expr.pseudos.nth = Expr.pseudos.eq;
6112
6113// Add button/input type pseudos
6114for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
6115	Expr.pseudos[ i ] = createInputPseudo( i );
6116}
6117for ( i in { submit: true, reset: true } ) {
6118	Expr.pseudos[ i ] = createButtonPseudo( i );
6119}
6120
6121// Easy API for creating new setFilters
6122function setFilters() {}
6123setFilters.prototype = Expr.filters = Expr.pseudos;
6124Expr.setFilters = new setFilters();
6125
6126function tokenize( selector, parseOnly ) {
6127	var matched, match, tokens, type,
6128		soFar, groups, preFilters,
6129		cached = tokenCache[ selector + " " ];
6130
6131	if ( cached ) {
6132		return parseOnly ? 0 : cached.slice( 0 );
6133	}
6134
6135	soFar = selector;
6136	groups = [];
6137	preFilters = Expr.preFilter;
6138
6139	while ( soFar ) {
6140
6141		// Comma and first run
6142		if ( !matched || ( match = rcomma.exec( soFar ) ) ) {
6143			if ( match ) {
6144
6145				// Don't consume trailing commas as valid
6146				soFar = soFar.slice( match[ 0 ].length ) || soFar;
6147			}
6148			groups.push( ( tokens = [] ) );
6149		}
6150
6151		matched = false;
6152
6153		// Combinators
6154		if ( ( match = rleadingCombinator.exec( soFar ) ) ) {
6155			matched = match.shift();
6156			tokens.push( {
6157				value: matched,
6158
6159				// Cast descendant combinators to space
6160				type: match[ 0 ].replace( rtrimCSS, " " )
6161			} );
6162			soFar = soFar.slice( matched.length );
6163		}
6164
6165		// Filters
6166		for ( type in Expr.filter ) {
6167			if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||
6168				( match = preFilters[ type ]( match ) ) ) ) {
6169				matched = match.shift();
6170				tokens.push( {
6171					value: matched,
6172					type: type,
6173					matches: match
6174				} );
6175				soFar = soFar.slice( matched.length );
6176			}
6177		}
6178
6179		if ( !matched ) {
6180			break;
6181		}
6182	}
6183
6184	// Return the length of the invalid excess
6185	// if we're just parsing
6186	// Otherwise, throw an error or return tokens
6187	if ( parseOnly ) {
6188		return soFar.length;
6189	}
6190
6191	return soFar ?
6192		find.error( selector ) :
6193
6194		// Cache the tokens
6195		tokenCache( selector, groups ).slice( 0 );
6196}
6197
6198function toSelector( tokens ) {
6199	var i = 0,
6200		len = tokens.length,
6201		selector = "";
6202	for ( ; i < len; i++ ) {
6203		selector += tokens[ i ].value;
6204	}
6205	return selector;
6206}
6207
6208function addCombinator( matcher, combinator, base ) {
6209	var dir = combinator.dir,
6210		skip = combinator.next,
6211		key = skip || dir,
6212		checkNonElements = base && key === "parentNode",
6213		doneName = done++;
6214
6215	return combinator.first ?
6216
6217		// Check against closest ancestor/preceding element
6218		function( elem, context, xml ) {
6219			while ( ( elem = elem[ dir ] ) ) {
6220				if ( elem.nodeType === 1 || checkNonElements ) {
6221					return matcher( elem, context, xml );
6222				}
6223			}
6224			return false;
6225		} :
6226
6227		// Check against all ancestor/preceding elements
6228		function( elem, context, xml ) {
6229			var oldCache, outerCache,
6230				newCache = [ dirruns, doneName ];
6231
6232			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
6233			if ( xml ) {
6234				while ( ( elem = elem[ dir ] ) ) {
6235					if ( elem.nodeType === 1 || checkNonElements ) {
6236						if ( matcher( elem, context, xml ) ) {
6237							return true;
6238						}
6239					}
6240				}
6241			} else {
6242				while ( ( elem = elem[ dir ] ) ) {
6243					if ( elem.nodeType === 1 || checkNonElements ) {
6244						outerCache = elem[ expando ] || ( elem[ expando ] = {} );
6245
6246						if ( skip && nodeName( elem, skip ) ) {
6247							elem = elem[ dir ] || elem;
6248						} else if ( ( oldCache = outerCache[ key ] ) &&
6249							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
6250
6251							// Assign to newCache so results back-propagate to previous elements
6252							return ( newCache[ 2 ] = oldCache[ 2 ] );
6253						} else {
6254
6255							// Reuse newcache so results back-propagate to previous elements
6256							outerCache[ key ] = newCache;
6257
6258							// A match means we're done; a fail means we have to keep checking
6259							if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {
6260								return true;
6261							}
6262						}
6263					}
6264				}
6265			}
6266			return false;
6267		};
6268}
6269
6270function elementMatcher( matchers ) {
6271	return matchers.length > 1 ?
6272		function( elem, context, xml ) {
6273			var i = matchers.length;
6274			while ( i-- ) {
6275				if ( !matchers[ i ]( elem, context, xml ) ) {
6276					return false;
6277				}
6278			}
6279			return true;
6280		} :
6281		matchers[ 0 ];
6282}
6283
6284function multipleContexts( selector, contexts, results ) {
6285	var i = 0,
6286		len = contexts.length;
6287	for ( ; i < len; i++ ) {
6288		find( selector, contexts[ i ], results );
6289	}
6290	return results;
6291}
6292
6293function condense( unmatched, map, filter, context, xml ) {
6294	var elem,
6295		newUnmatched = [],
6296		i = 0,
6297		len = unmatched.length,
6298		mapped = map != null;
6299
6300	for ( ; i < len; i++ ) {
6301		if ( ( elem = unmatched[ i ] ) ) {
6302			if ( !filter || filter( elem, context, xml ) ) {
6303				newUnmatched.push( elem );
6304				if ( mapped ) {
6305					map.push( i );
6306				}
6307			}
6308		}
6309	}
6310
6311	return newUnmatched;
6312}
6313
6314function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
6315	if ( postFilter && !postFilter[ expando ] ) {
6316		postFilter = setMatcher( postFilter );
6317	}
6318	if ( postFinder && !postFinder[ expando ] ) {
6319		postFinder = setMatcher( postFinder, postSelector );
6320	}
6321	return markFunction( function( seed, results, context, xml ) {
6322		var temp, i, elem, matcherOut,
6323			preMap = [],
6324			postMap = [],
6325			preexisting = results.length,
6326
6327			// Get initial elements from seed or context
6328			elems = seed ||
6329				multipleContexts( selector || "*",
6330					context.nodeType ? [ context ] : context, [] ),
6331
6332			// Prefilter to get matcher input, preserving a map for seed-results synchronization
6333			matcherIn = preFilter && ( seed || !selector ) ?
6334				condense( elems, preMap, preFilter, context, xml ) :
6335				elems;
6336
6337		if ( matcher ) {
6338
6339			// If we have a postFinder, or filtered seed, or non-seed postFilter
6340			// or preexisting results,
6341			matcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
6342
6343				// ...intermediate processing is necessary
6344				[] :
6345
6346				// ...otherwise use results directly
6347				results;
6348
6349			// Find primary matches
6350			matcher( matcherIn, matcherOut, context, xml );
6351		} else {
6352			matcherOut = matcherIn;
6353		}
6354
6355		// Apply postFilter
6356		if ( postFilter ) {
6357			temp = condense( matcherOut, postMap );
6358			postFilter( temp, [], context, xml );
6359
6360			// Un-match failing elements by moving them back to matcherIn
6361			i = temp.length;
6362			while ( i-- ) {
6363				if ( ( elem = temp[ i ] ) ) {
6364					matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );
6365				}
6366			}
6367		}
6368
6369		if ( seed ) {
6370			if ( postFinder || preFilter ) {
6371				if ( postFinder ) {
6372
6373					// Get the final matcherOut by condensing this intermediate into postFinder contexts
6374					temp = [];
6375					i = matcherOut.length;
6376					while ( i-- ) {
6377						if ( ( elem = matcherOut[ i ] ) ) {
6378
6379							// Restore matcherIn since elem is not yet a final match
6380							temp.push( ( matcherIn[ i ] = elem ) );
6381						}
6382					}
6383					postFinder( null, ( matcherOut = [] ), temp, xml );
6384				}
6385
6386				// Move matched elements from seed to results to keep them synchronized
6387				i = matcherOut.length;
6388				while ( i-- ) {
6389					if ( ( elem = matcherOut[ i ] ) &&
6390						( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {
6391
6392						seed[ temp ] = !( results[ temp ] = elem );
6393					}
6394				}
6395			}
6396
6397		// Add elements to results, through postFinder if defined
6398		} else {
6399			matcherOut = condense(
6400				matcherOut === results ?
6401					matcherOut.splice( preexisting, matcherOut.length ) :
6402					matcherOut
6403			);
6404			if ( postFinder ) {
6405				postFinder( null, results, matcherOut, xml );
6406			} else {
6407				push.apply( results, matcherOut );
6408			}
6409		}
6410	} );
6411}
6412
6413function matcherFromTokens( tokens ) {
6414	var checkContext, matcher, j,
6415		len = tokens.length,
6416		leadingRelative = Expr.relative[ tokens[ 0 ].type ],
6417		implicitRelative = leadingRelative || Expr.relative[ " " ],
6418		i = leadingRelative ? 1 : 0,
6419
6420		// The foundational matcher ensures that elements are reachable from top-level context(s)
6421		matchContext = addCombinator( function( elem ) {
6422			return elem === checkContext;
6423		}, implicitRelative, true ),
6424		matchAnyContext = addCombinator( function( elem ) {
6425			return indexOf.call( checkContext, elem ) > -1;
6426		}, implicitRelative, true ),
6427		matchers = [ function( elem, context, xml ) {
6428
6429			// Support: IE 11+, Edge 17 - 18+
6430			// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6431			// two documents; shallow comparisons work.
6432			// eslint-disable-next-line eqeqeq
6433			var ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (
6434				( checkContext = context ).nodeType ?
6435					matchContext( elem, context, xml ) :
6436					matchAnyContext( elem, context, xml ) );
6437
6438			// Avoid hanging onto element
6439			// (see https://github.com/jquery/sizzle/issues/299)
6440			checkContext = null;
6441			return ret;
6442		} ];
6443
6444	for ( ; i < len; i++ ) {
6445		if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {
6446			matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];
6447		} else {
6448			matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );
6449
6450			// Return special upon seeing a positional matcher
6451			if ( matcher[ expando ] ) {
6452
6453				// Find the next relative operator (if any) for proper handling
6454				j = ++i;
6455				for ( ; j < len; j++ ) {
6456					if ( Expr.relative[ tokens[ j ].type ] ) {
6457						break;
6458					}
6459				}
6460				return setMatcher(
6461					i > 1 && elementMatcher( matchers ),
6462					i > 1 && toSelector(
6463
6464						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
6465						tokens.slice( 0, i - 1 )
6466							.concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } )
6467					).replace( rtrimCSS, "$1" ),
6468					matcher,
6469					i < j && matcherFromTokens( tokens.slice( i, j ) ),
6470					j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),
6471					j < len && toSelector( tokens )
6472				);
6473			}
6474			matchers.push( matcher );
6475		}
6476	}
6477
6478	return elementMatcher( matchers );
6479}
6480
6481function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
6482	var bySet = setMatchers.length > 0,
6483		byElement = elementMatchers.length > 0,
6484		superMatcher = function( seed, context, xml, results, outermost ) {
6485			var elem, j, matcher,
6486				matchedCount = 0,
6487				i = "0",
6488				unmatched = seed && [],
6489				setMatched = [],
6490				contextBackup = outermostContext,
6491
6492				// We must always have either seed elements or outermost context
6493				elems = seed || byElement && Expr.find.TAG( "*", outermost ),
6494
6495				// Use integer dirruns iff this is the outermost matcher
6496				dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),
6497				len = elems.length;
6498
6499			if ( outermost ) {
6500
6501				// Support: IE 11+, Edge 17 - 18+
6502				// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6503				// two documents; shallow comparisons work.
6504				// eslint-disable-next-line eqeqeq
6505				outermostContext = context == document || context || outermost;
6506			}
6507
6508			// Add elements passing elementMatchers directly to results
6509			// Support: iOS <=7 - 9 only
6510			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching
6511			// elements by id. (see trac-14142)
6512			for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {
6513				if ( byElement && elem ) {
6514					j = 0;
6515
6516					// Support: IE 11+, Edge 17 - 18+
6517					// IE/Edge sometimes throw a "Permission denied" error when strict-comparing
6518					// two documents; shallow comparisons work.
6519					// eslint-disable-next-line eqeqeq
6520					if ( !context && elem.ownerDocument != document ) {
6521						setDocument( elem );
6522						xml = !documentIsHTML;
6523					}
6524					while ( ( matcher = elementMatchers[ j++ ] ) ) {
6525						if ( matcher( elem, context || document, xml ) ) {
6526							push.call( results, elem );
6527							break;
6528						}
6529					}
6530					if ( outermost ) {
6531						dirruns = dirrunsUnique;
6532					}
6533				}
6534
6535				// Track unmatched elements for set filters
6536				if ( bySet ) {
6537
6538					// They will have gone through all possible matchers
6539					if ( ( elem = !matcher && elem ) ) {
6540						matchedCount--;
6541					}
6542
6543					// Lengthen the array for every element, matched or not
6544					if ( seed ) {
6545						unmatched.push( elem );
6546					}
6547				}
6548			}
6549
6550			// `i` is now the count of elements visited above, and adding it to `matchedCount`
6551			// makes the latter nonnegative.
6552			matchedCount += i;
6553
6554			// Apply set filters to unmatched elements
6555			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
6556			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
6557			// no element matchers and no seed.
6558			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
6559			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
6560			// numerically zero.
6561			if ( bySet && i !== matchedCount ) {
6562				j = 0;
6563				while ( ( matcher = setMatchers[ j++ ] ) ) {
6564					matcher( unmatched, setMatched, context, xml );
6565				}
6566
6567				if ( seed ) {
6568
6569					// Reintegrate element matches to eliminate the need for sorting
6570					if ( matchedCount > 0 ) {
6571						while ( i-- ) {
6572							if ( !( unmatched[ i ] || setMatched[ i ] ) ) {
6573								setMatched[ i ] = pop.call( results );
6574							}
6575						}
6576					}
6577
6578					// Discard index placeholder values to get only actual matches
6579					setMatched = condense( setMatched );
6580				}
6581
6582				// Add matches to results
6583				push.apply( results, setMatched );
6584
6585				// Seedless set matches succeeding multiple successful matchers stipulate sorting
6586				if ( outermost && !seed && setMatched.length > 0 &&
6587					( matchedCount + setMatchers.length ) > 1 ) {
6588
6589					jQuery.uniqueSort( results );
6590				}
6591			}
6592
6593			// Override manipulation of globals by nested matchers
6594			if ( outermost ) {
6595				dirruns = dirrunsUnique;
6596				outermostContext = contextBackup;
6597			}
6598
6599			return unmatched;
6600		};
6601
6602	return bySet ?
6603		markFunction( superMatcher ) :
6604		superMatcher;
6605}
6606
6607function compile( selector, match /* Internal Use Only */ ) {
6608	var i,
6609		setMatchers = [],
6610		elementMatchers = [],
6611		cached = compilerCache[ selector + " " ];
6612
6613	if ( !cached ) {
6614
6615		// Generate a function of recursive functions that can be used to check each element
6616		if ( !match ) {
6617			match = tokenize( selector );
6618		}
6619		i = match.length;
6620		while ( i-- ) {
6621			cached = matcherFromTokens( match[ i ] );
6622			if ( cached[ expando ] ) {
6623				setMatchers.push( cached );
6624			} else {
6625				elementMatchers.push( cached );
6626			}
6627		}
6628
6629		// Cache the compiled function
6630		cached = compilerCache( selector,
6631			matcherFromGroupMatchers( elementMatchers, setMatchers ) );
6632
6633		// Save selector and tokenization
6634		cached.selector = selector;
6635	}
6636	return cached;
6637}
6638
6639/**
6640 * A low-level selection function that works with jQuery's compiled
6641 *  selector functions
6642 * @param {String|Function} selector A selector or a pre-compiled
6643 *  selector function built with jQuery selector compile
6644 * @param {Element} context
6645 * @param {Array} [results]
6646 * @param {Array} [seed] A set of elements to match against
6647 */
6648function select( selector, context, results, seed ) {
6649	var i, tokens, token, type, find,
6650		compiled = typeof selector === "function" && selector,
6651		match = !seed && tokenize( ( selector = compiled.selector || selector ) );
6652
6653	results = results || [];
6654
6655	// Try to minimize operations if there is only one selector in the list and no seed
6656	// (the latter of which guarantees us context)
6657	if ( match.length === 1 ) {
6658
6659		// Reduce context if the leading compound selector is an ID
6660		tokens = match[ 0 ] = match[ 0 ].slice( 0 );
6661		if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" &&
6662				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {
6663
6664			context = ( Expr.find.ID(
6665				token.matches[ 0 ].replace( runescape, funescape ),
6666				context
6667			) || [] )[ 0 ];
6668			if ( !context ) {
6669				return results;
6670
6671			// Precompiled matchers will still verify ancestry, so step up a level
6672			} else if ( compiled ) {
6673				context = context.parentNode;
6674			}
6675
6676			selector = selector.slice( tokens.shift().value.length );
6677		}
6678
6679		// Fetch a seed set for right-to-left matching
6680		i = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;
6681		while ( i-- ) {
6682			token = tokens[ i ];
6683
6684			// Abort if we hit a combinator
6685			if ( Expr.relative[ ( type = token.type ) ] ) {
6686				break;
6687			}
6688			if ( ( find = Expr.find[ type ] ) ) {
6689
6690				// Search, expanding context for leading sibling combinators
6691				if ( ( seed = find(
6692					token.matches[ 0 ].replace( runescape, funescape ),
6693					rsibling.test( tokens[ 0 ].type ) &&
6694						testContext( context.parentNode ) || context
6695				) ) ) {
6696
6697					// If seed is empty or no tokens remain, we can return early
6698					tokens.splice( i, 1 );
6699					selector = seed.length && toSelector( tokens );
6700					if ( !selector ) {
6701						push.apply( results, seed );
6702						return results;
6703					}
6704
6705					break;
6706				}
6707			}
6708		}
6709	}
6710
6711	// Compile and execute a filtering function if one is not provided
6712	// Provide `match` to avoid retokenization if we modified the selector above
6713	( compiled || compile( selector, match ) )(
6714		seed,
6715		context,
6716		!documentIsHTML,
6717		results,
6718		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
6719	);
6720	return results;
6721}
6722
6723// One-time assignments
6724
6725// Support: Android <=4.0 - 4.1+
6726// Sort stability
6727support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando;
6728
6729// Initialize against the default document
6730setDocument();
6731
6732// Support: Android <=4.0 - 4.1+
6733// Detached nodes confoundingly follow *each other*
6734support.sortDetached = assert( function( el ) {
6735
6736	// Should return 1, but returns 4 (following)
6737	return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1;
6738} );
6739
6740jQuery.find = find;
6741
6742// Deprecated
6743jQuery.expr[ ":" ] = jQuery.expr.pseudos;
6744jQuery.unique = jQuery.uniqueSort;
6745
6746// These have always been private, but they used to be documented as part of
6747// Sizzle so let's maintain them for now for backwards compatibility purposes.
6748find.compile = compile;
6749find.select = select;
6750find.setDocument = setDocument;
6751find.tokenize = tokenize;
6752
6753find.escape = jQuery.escapeSelector;
6754find.getText = jQuery.text;
6755find.isXML = jQuery.isXMLDoc;
6756find.selectors = jQuery.expr;
6757find.support = jQuery.support;
6758find.uniqueSort = jQuery.uniqueSort;
6759
6760	/* eslint-enable */
6761
6762} )();
6763
6764
6765var dir = function( elem, dir, until ) {
6766	var matched = [],
6767		truncate = until !== undefined;
6768
6769	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
6770		if ( elem.nodeType === 1 ) {
6771			if ( truncate && jQuery( elem ).is( until ) ) {
6772				break;
6773			}
6774			matched.push( elem );
6775		}
6776	}
6777	return matched;
6778};
6779
6780
6781var siblings = function( n, elem ) {
6782	var matched = [];
6783
6784	for ( ; n; n = n.nextSibling ) {
6785		if ( n.nodeType === 1 && n !== elem ) {
6786			matched.push( n );
6787		}
6788	}
6789
6790	return matched;
6791};
6792
6793
6794var rneedsContext = jQuery.expr.match.needsContext;
6795
6796var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
6797
6798
6799
6800// Implement the identical functionality for filter and not
6801function winnow( elements, qualifier, not ) {
6802	if ( isFunction( qualifier ) ) {
6803		return jQuery.grep( elements, function( elem, i ) {
6804			return !!qualifier.call( elem, i, elem ) !== not;
6805		} );
6806	}
6807
6808	// Single element
6809	if ( qualifier.nodeType ) {
6810		return jQuery.grep( elements, function( elem ) {
6811			return ( elem === qualifier ) !== not;
6812		} );
6813	}
6814
6815	// Arraylike of elements (jQuery, arguments, Array)
6816	if ( typeof qualifier !== "string" ) {
6817		return jQuery.grep( elements, function( elem ) {
6818			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
6819		} );
6820	}
6821
6822	// Filtered directly for both simple and complex selectors
6823	return jQuery.filter( qualifier, elements, not );
6824}
6825
6826jQuery.filter = function( expr, elems, not ) {
6827	var elem = elems[ 0 ];
6828
6829	if ( not ) {
6830		expr = ":not(" + expr + ")";
6831	}
6832
6833	if ( elems.length === 1 && elem.nodeType === 1 ) {
6834		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
6835	}
6836
6837	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
6838		return elem.nodeType === 1;
6839	} ) );
6840};
6841
6842jQuery.fn.extend( {
6843	find: function( selector ) {
6844		var i, ret,
6845			len = this.length,
6846			self = this;
6847
6848		if ( typeof selector !== "string" ) {
6849			return this.pushStack( jQuery( selector ).filter( function() {
6850				for ( i = 0; i < len; i++ ) {
6851					if ( jQuery.contains( self[ i ], this ) ) {
6852						return true;
6853					}
6854				}
6855			} ) );
6856		}
6857
6858		ret = this.pushStack( [] );
6859
6860		for ( i = 0; i < len; i++ ) {
6861			jQuery.find( selector, self[ i ], ret );
6862		}
6863
6864		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
6865	},
6866	filter: function( selector ) {
6867		return this.pushStack( winnow( this, selector || [], false ) );
6868	},
6869	not: function( selector ) {
6870		return this.pushStack( winnow( this, selector || [], true ) );
6871	},
6872	is: function( selector ) {
6873		return !!winnow(
6874			this,
6875
6876			// If this is a positional/relative selector, check membership in the returned set
6877			// so $("p:first").is("p:last") won't return true for a doc with two "p".
6878			typeof selector === "string" && rneedsContext.test( selector ) ?
6879				jQuery( selector ) :
6880				selector || [],
6881			false
6882		).length;
6883	}
6884} );
6885
6886
6887// Initialize a jQuery object
6888
6889
6890// A central reference to the root jQuery(document)
6891var rootjQuery,
6892
6893	// A simple way to check for HTML strings
6894	// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)
6895	// Strict HTML recognition (trac-11290: must start with <)
6896	// Shortcut simple #id case for speed
6897	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
6898
6899	init = jQuery.fn.init = function( selector, context, root ) {
6900		var match, elem;
6901
6902		// HANDLE: $(""), $(null), $(undefined), $(false)
6903		if ( !selector ) {
6904			return this;
6905		}
6906
6907		// Method init() accepts an alternate rootjQuery
6908		// so migrate can support jQuery.sub (gh-2101)
6909		root = root || rootjQuery;
6910
6911		// Handle HTML strings
6912		if ( typeof selector === "string" ) {
6913			if ( selector[ 0 ] === "<" &&
6914				selector[ selector.length - 1 ] === ">" &&
6915				selector.length >= 3 ) {
6916
6917				// Assume that strings that start and end with <> are HTML and skip the regex check
6918				match = [ null, selector, null ];
6919
6920			} else {
6921				match = rquickExpr.exec( selector );
6922			}
6923
6924			// Match html or make sure no context is specified for #id
6925			if ( match && ( match[ 1 ] || !context ) ) {
6926
6927				// HANDLE: $(html) -> $(array)
6928				if ( match[ 1 ] ) {
6929					context = context instanceof jQuery ? context[ 0 ] : context;
6930
6931					// Option to run scripts is true for back-compat
6932					// Intentionally let the error be thrown if parseHTML is not present
6933					jQuery.merge( this, jQuery.parseHTML(
6934						match[ 1 ],
6935						context && context.nodeType ? context.ownerDocument || context : document,
6936						true
6937					) );
6938
6939					// HANDLE: $(html, props)
6940					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
6941						for ( match in context ) {
6942
6943							// Properties of context are called as methods if possible
6944							if ( isFunction( this[ match ] ) ) {
6945								this[ match ]( context[ match ] );
6946
6947							// ...and otherwise set as attributes
6948							} else {
6949								this.attr( match, context[ match ] );
6950							}
6951						}
6952					}
6953
6954					return this;
6955
6956				// HANDLE: $(#id)
6957				} else {
6958					elem = document.getElementById( match[ 2 ] );
6959
6960					if ( elem ) {
6961
6962						// Inject the element directly into the jQuery object
6963						this[ 0 ] = elem;
6964						this.length = 1;
6965					}
6966					return this;
6967				}
6968
6969			// HANDLE: $(expr, $(...))
6970			} else if ( !context || context.jquery ) {
6971				return ( context || root ).find( selector );
6972
6973			// HANDLE: $(expr, context)
6974			// (which is just equivalent to: $(context).find(expr)
6975			} else {
6976				return this.constructor( context ).find( selector );
6977			}
6978
6979		// HANDLE: $(DOMElement)
6980		} else if ( selector.nodeType ) {
6981			this[ 0 ] = selector;
6982			this.length = 1;
6983			return this;
6984
6985		// HANDLE: $(function)
6986		// Shortcut for document ready
6987		} else if ( isFunction( selector ) ) {
6988			return root.ready !== undefined ?
6989				root.ready( selector ) :
6990
6991				// Execute immediately if ready is not present
6992				selector( jQuery );
6993		}
6994
6995		return jQuery.makeArray( selector, this );
6996	};
6997
6998// Give the init function the jQuery prototype for later instantiation
6999init.prototype = jQuery.fn;
7000
7001// Initialize central reference
7002rootjQuery = jQuery( document );
7003
7004
7005var rparentsprev = /^(?:parents|prev(?:Until|All))/,
7006
7007	// Methods guaranteed to produce a unique set when starting from a unique set
7008	guaranteedUnique = {
7009		children: true,
7010		contents: true,
7011		next: true,
7012		prev: true
7013	};
7014
7015jQuery.fn.extend( {
7016	has: function( target ) {
7017		var targets = jQuery( target, this ),
7018			l = targets.length;
7019
7020		return this.filter( function() {
7021			var i = 0;
7022			for ( ; i < l; i++ ) {
7023				if ( jQuery.contains( this, targets[ i ] ) ) {
7024					return true;
7025				}
7026			}
7027		} );
7028	},
7029
7030	closest: function( selectors, context ) {
7031		var cur,
7032			i = 0,
7033			l = this.length,
7034			matched = [],
7035			targets = typeof selectors !== "string" && jQuery( selectors );
7036
7037		// Positional selectors never match, since there's no _selection_ context
7038		if ( !rneedsContext.test( selectors ) ) {
7039			for ( ; i < l; i++ ) {
7040				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
7041
7042					// Always skip document fragments
7043					if ( cur.nodeType < 11 && ( targets ?
7044						targets.index( cur ) > -1 :
7045
7046						// Don't pass non-elements to jQuery#find
7047						cur.nodeType === 1 &&
7048							jQuery.find.matchesSelector( cur, selectors ) ) ) {
7049
7050						matched.push( cur );
7051						break;
7052					}
7053				}
7054			}
7055		}
7056
7057		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
7058	},
7059
7060	// Determine the position of an element within the set
7061	index: function( elem ) {
7062
7063		// No argument, return index in parent
7064		if ( !elem ) {
7065			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
7066		}
7067
7068		// Index in selector
7069		if ( typeof elem === "string" ) {
7070			return indexOf.call( jQuery( elem ), this[ 0 ] );
7071		}
7072
7073		// Locate the position of the desired element
7074		return indexOf.call( this,
7075
7076			// If it receives a jQuery object, the first element is used
7077			elem.jquery ? elem[ 0 ] : elem
7078		);
7079	},
7080
7081	add: function( selector, context ) {
7082		return this.pushStack(
7083			jQuery.uniqueSort(
7084				jQuery.merge( this.get(), jQuery( selector, context ) )
7085			)
7086		);
7087	},
7088
7089	addBack: function( selector ) {
7090		return this.add( selector == null ?
7091			this.prevObject : this.prevObject.filter( selector )
7092		);
7093	}
7094} );
7095
7096function sibling( cur, dir ) {
7097	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
7098	return cur;
7099}
7100
7101jQuery.each( {
7102	parent: function( elem ) {
7103		var parent = elem.parentNode;
7104		return parent && parent.nodeType !== 11 ? parent : null;
7105	},
7106	parents: function( elem ) {
7107		return dir( elem, "parentNode" );
7108	},
7109	parentsUntil: function( elem, _i, until ) {
7110		return dir( elem, "parentNode", until );
7111	},
7112	next: function( elem ) {
7113		return sibling( elem, "nextSibling" );
7114	},
7115	prev: function( elem ) {
7116		return sibling( elem, "previousSibling" );
7117	},
7118	nextAll: function( elem ) {
7119		return dir( elem, "nextSibling" );
7120	},
7121	prevAll: function( elem ) {
7122		return dir( elem, "previousSibling" );
7123	},
7124	nextUntil: function( elem, _i, until ) {
7125		return dir( elem, "nextSibling", until );
7126	},
7127	prevUntil: function( elem, _i, until ) {
7128		return dir( elem, "previousSibling", until );
7129	},
7130	siblings: function( elem ) {
7131		return siblings( ( elem.parentNode || {} ).firstChild, elem );
7132	},
7133	children: function( elem ) {
7134		return siblings( elem.firstChild );
7135	},
7136	contents: function( elem ) {
7137		if ( elem.contentDocument != null &&
7138
7139			// Support: IE 11+
7140			// <object> elements with no `data` attribute has an object
7141			// `contentDocument` with a `null` prototype.
7142			getProto( elem.contentDocument ) ) {
7143
7144			return elem.contentDocument;
7145		}
7146
7147		// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
7148		// Treat the template element as a regular one in browsers that
7149		// don't support it.
7150		if ( nodeName( elem, "template" ) ) {
7151			elem = elem.content || elem;
7152		}
7153
7154		return jQuery.merge( [], elem.childNodes );
7155	}
7156}, function( name, fn ) {
7157	jQuery.fn[ name ] = function( until, selector ) {
7158		var matched = jQuery.map( this, fn, until );
7159
7160		if ( name.slice( -5 ) !== "Until" ) {
7161			selector = until;
7162		}
7163
7164		if ( selector && typeof selector === "string" ) {
7165			matched = jQuery.filter( selector, matched );
7166		}
7167
7168		if ( this.length > 1 ) {
7169
7170			// Remove duplicates
7171			if ( !guaranteedUnique[ name ] ) {
7172				jQuery.uniqueSort( matched );
7173			}
7174
7175			// Reverse order for parents* and prev-derivatives
7176			if ( rparentsprev.test( name ) ) {
7177				matched.reverse();
7178			}
7179		}
7180
7181		return this.pushStack( matched );
7182	};
7183} );
7184var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
7185
7186
7187
7188// Convert String-formatted options into Object-formatted ones
7189function createOptions( options ) {
7190	var object = {};
7191	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
7192		object[ flag ] = true;
7193	} );
7194	return object;
7195}
7196
7197/*
7198 * Create a callback list using the following parameters:
7199 *
7200 *	options: an optional list of space-separated options that will change how
7201 *			the callback list behaves or a more traditional option object
7202 *
7203 * By default a callback list will act like an event callback list and can be
7204 * "fired" multiple times.
7205 *
7206 * Possible options:
7207 *
7208 *	once:			will ensure the callback list can only be fired once (like a Deferred)
7209 *
7210 *	memory:			will keep track of previous values and will call any callback added
7211 *					after the list has been fired right away with the latest "memorized"
7212 *					values (like a Deferred)
7213 *
7214 *	unique:			will ensure a callback can only be added once (no duplicate in the list)
7215 *
7216 *	stopOnFalse:	interrupt callings when a callback returns false
7217 *
7218 */
7219jQuery.Callbacks = function( options ) {
7220
7221	// Convert options from String-formatted to Object-formatted if needed
7222	// (we check in cache first)
7223	options = typeof options === "string" ?
7224		createOptions( options ) :
7225		jQuery.extend( {}, options );
7226
7227	var // Flag to know if list is currently firing
7228		firing,
7229
7230		// Last fire value for non-forgettable lists
7231		memory,
7232
7233		// Flag to know if list was already fired
7234		fired,
7235
7236		// Flag to prevent firing
7237		locked,
7238
7239		// Actual callback list
7240		list = [],
7241
7242		// Queue of execution data for repeatable lists
7243		queue = [],
7244
7245		// Index of currently firing callback (modified by add/remove as needed)
7246		firingIndex = -1,
7247
7248		// Fire callbacks
7249		fire = function() {
7250
7251			// Enforce single-firing
7252			locked = locked || options.once;
7253
7254			// Execute callbacks for all pending executions,
7255			// respecting firingIndex overrides and runtime changes
7256			fired = firing = true;
7257			for ( ; queue.length; firingIndex = -1 ) {
7258				memory = queue.shift();
7259				while ( ++firingIndex < list.length ) {
7260
7261					// Run callback and check for early termination
7262					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
7263						options.stopOnFalse ) {
7264
7265						// Jump to end and forget the data so .add doesn't re-fire
7266						firingIndex = list.length;
7267						memory = false;
7268					}
7269				}
7270			}
7271
7272			// Forget the data if we're done with it
7273			if ( !options.memory ) {
7274				memory = false;
7275			}
7276
7277			firing = false;
7278
7279			// Clean up if we're done firing for good
7280			if ( locked ) {
7281
7282				// Keep an empty list if we have data for future add calls
7283				if ( memory ) {
7284					list = [];
7285
7286				// Otherwise, this object is spent
7287				} else {
7288					list = "";
7289				}
7290			}
7291		},
7292
7293		// Actual Callbacks object
7294		self = {
7295
7296			// Add a callback or a collection of callbacks to the list
7297			add: function() {
7298				if ( list ) {
7299
7300					// If we have memory from a past run, we should fire after adding
7301					if ( memory && !firing ) {
7302						firingIndex = list.length - 1;
7303						queue.push( memory );
7304					}
7305
7306					( function add( args ) {
7307						jQuery.each( args, function( _, arg ) {
7308							if ( isFunction( arg ) ) {
7309								if ( !options.unique || !self.has( arg ) ) {
7310									list.push( arg );
7311								}
7312							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
7313
7314								// Inspect recursively
7315								add( arg );
7316							}
7317						} );
7318					} )( arguments );
7319
7320					if ( memory && !firing ) {
7321						fire();
7322					}
7323				}
7324				return this;
7325			},
7326
7327			// Remove a callback from the list
7328			remove: function() {
7329				jQuery.each( arguments, function( _, arg ) {
7330					var index;
7331					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
7332						list.splice( index, 1 );
7333
7334						// Handle firing indexes
7335						if ( index <= firingIndex ) {
7336							firingIndex--;
7337						}
7338					}
7339				} );
7340				return this;
7341			},
7342
7343			// Check if a given callback is in the list.
7344			// If no argument is given, return whether or not list has callbacks attached.
7345			has: function( fn ) {
7346				return fn ?
7347					jQuery.inArray( fn, list ) > -1 :
7348					list.length > 0;
7349			},
7350
7351			// Remove all callbacks from the list
7352			empty: function() {
7353				if ( list ) {
7354					list = [];
7355				}
7356				return this;
7357			},
7358
7359			// Disable .fire and .add
7360			// Abort any current/pending executions
7361			// Clear all callbacks and values
7362			disable: function() {
7363				locked = queue = [];
7364				list = memory = "";
7365				return this;
7366			},
7367			disabled: function() {
7368				return !list;
7369			},
7370
7371			// Disable .fire
7372			// Also disable .add unless we have memory (since it would have no effect)
7373			// Abort any pending executions
7374			lock: function() {
7375				locked = queue = [];
7376				if ( !memory && !firing ) {
7377					list = memory = "";
7378				}
7379				return this;
7380			},
7381			locked: function() {
7382				return !!locked;
7383			},
7384
7385			// Call all callbacks with the given context and arguments
7386			fireWith: function( context, args ) {
7387				if ( !locked ) {
7388					args = args || [];
7389					args = [ context, args.slice ? args.slice() : args ];
7390					queue.push( args );
7391					if ( !firing ) {
7392						fire();
7393					}
7394				}
7395				return this;
7396			},
7397
7398			// Call all the callbacks with the given arguments
7399			fire: function() {
7400				self.fireWith( this, arguments );
7401				return this;
7402			},
7403
7404			// To know if the callbacks have already been called at least once
7405			fired: function() {
7406				return !!fired;
7407			}
7408		};
7409
7410	return self;
7411};
7412
7413
7414function Identity( v ) {
7415	return v;
7416}
7417function Thrower( ex ) {
7418	throw ex;
7419}
7420
7421function adoptValue( value, resolve, reject, noValue ) {
7422	var method;
7423
7424	try {
7425
7426		// Check for promise aspect first to privilege synchronous behavior
7427		if ( value && isFunction( ( method = value.promise ) ) ) {
7428			method.call( value ).done( resolve ).fail( reject );
7429
7430		// Other thenables
7431		} else if ( value && isFunction( ( method = value.then ) ) ) {
7432			method.call( value, resolve, reject );
7433
7434		// Other non-thenables
7435		} else {
7436
7437			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
7438			// * false: [ value ].slice( 0 ) => resolve( value )
7439			// * true: [ value ].slice( 1 ) => resolve()
7440			resolve.apply( undefined, [ value ].slice( noValue ) );
7441		}
7442
7443	// For Promises/A+, convert exceptions into rejections
7444	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
7445	// Deferred#then to conditionally suppress rejection.
7446	} catch ( value ) {
7447
7448		// Support: Android 4.0 only
7449		// Strict mode functions invoked without .call/.apply get global-object context
7450		reject.apply( undefined, [ value ] );
7451	}
7452}
7453
7454jQuery.extend( {
7455
7456	Deferred: function( func ) {
7457		var tuples = [
7458
7459				// action, add listener, callbacks,
7460				// ... .then handlers, argument index, [final state]
7461				[ "notify", "progress", jQuery.Callbacks( "memory" ),
7462					jQuery.Callbacks( "memory" ), 2 ],
7463				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
7464					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
7465				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
7466					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
7467			],
7468			state = "pending",
7469			promise = {
7470				state: function() {
7471					return state;
7472				},
7473				always: function() {
7474					deferred.done( arguments ).fail( arguments );
7475					return this;
7476				},
7477				"catch": function( fn ) {
7478					return promise.then( null, fn );
7479				},
7480
7481				// Keep pipe for back-compat
7482				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
7483					var fns = arguments;
7484
7485					return jQuery.Deferred( function( newDefer ) {
7486						jQuery.each( tuples, function( _i, tuple ) {
7487
7488							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
7489							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
7490
7491							// deferred.progress(function() { bind to newDefer or newDefer.notify })
7492							// deferred.done(function() { bind to newDefer or newDefer.resolve })
7493							// deferred.fail(function() { bind to newDefer or newDefer.reject })
7494							deferred[ tuple[ 1 ] ]( function() {
7495								var returned = fn && fn.apply( this, arguments );
7496								if ( returned && isFunction( returned.promise ) ) {
7497									returned.promise()
7498										.progress( newDefer.notify )
7499										.done( newDefer.resolve )
7500										.fail( newDefer.reject );
7501								} else {
7502									newDefer[ tuple[ 0 ] + "With" ](
7503										this,
7504										fn ? [ returned ] : arguments
7505									);
7506								}
7507							} );
7508						} );
7509						fns = null;
7510					} ).promise();
7511				},
7512				then: function( onFulfilled, onRejected, onProgress ) {
7513					var maxDepth = 0;
7514					function resolve( depth, deferred, handler, special ) {
7515						return function() {
7516							var that = this,
7517								args = arguments,
7518								mightThrow = function() {
7519									var returned, then;
7520
7521									// Support: Promises/A+ section 2.3.3.3.3
7522									// https://promisesaplus.com/#point-59
7523									// Ignore double-resolution attempts
7524									if ( depth < maxDepth ) {
7525										return;
7526									}
7527
7528									returned = handler.apply( that, args );
7529
7530									// Support: Promises/A+ section 2.3.1
7531									// https://promisesaplus.com/#point-48
7532									if ( returned === deferred.promise() ) {
7533										throw new TypeError( "Thenable self-resolution" );
7534									}
7535
7536									// Support: Promises/A+ sections 2.3.3.1, 3.5
7537									// https://promisesaplus.com/#point-54
7538									// https://promisesaplus.com/#point-75
7539									// Retrieve `then` only once
7540									then = returned &&
7541
7542										// Support: Promises/A+ section 2.3.4
7543										// https://promisesaplus.com/#point-64
7544										// Only check objects and functions for thenability
7545										( typeof returned === "object" ||
7546											typeof returned === "function" ) &&
7547										returned.then;
7548
7549									// Handle a returned thenable
7550									if ( isFunction( then ) ) {
7551
7552										// Special processors (notify) just wait for resolution
7553										if ( special ) {
7554											then.call(
7555												returned,
7556												resolve( maxDepth, deferred, Identity, special ),
7557												resolve( maxDepth, deferred, Thrower, special )
7558											);
7559
7560										// Normal processors (resolve) also hook into progress
7561										} else {
7562
7563											// ...and disregard older resolution values
7564											maxDepth++;
7565
7566											then.call(
7567												returned,
7568												resolve( maxDepth, deferred, Identity, special ),
7569												resolve( maxDepth, deferred, Thrower, special ),
7570												resolve( maxDepth, deferred, Identity,
7571													deferred.notifyWith )
7572											);
7573										}
7574
7575									// Handle all other returned values
7576									} else {
7577
7578										// Only substitute handlers pass on context
7579										// and multiple values (non-spec behavior)
7580										if ( handler !== Identity ) {
7581											that = undefined;
7582											args = [ returned ];
7583										}
7584
7585										// Process the value(s)
7586										// Default process is resolve
7587										( special || deferred.resolveWith )( that, args );
7588									}
7589								},
7590
7591								// Only normal processors (resolve) catch and reject exceptions
7592								process = special ?
7593									mightThrow :
7594									function() {
7595										try {
7596											mightThrow();
7597										} catch ( e ) {
7598
7599											if ( jQuery.Deferred.exceptionHook ) {
7600												jQuery.Deferred.exceptionHook( e,
7601													process.error );
7602											}
7603
7604											// Support: Promises/A+ section 2.3.3.3.4.1
7605											// https://promisesaplus.com/#point-61
7606											// Ignore post-resolution exceptions
7607											if ( depth + 1 >= maxDepth ) {
7608
7609												// Only substitute handlers pass on context
7610												// and multiple values (non-spec behavior)
7611												if ( handler !== Thrower ) {
7612													that = undefined;
7613													args = [ e ];
7614												}
7615
7616												deferred.rejectWith( that, args );
7617											}
7618										}
7619									};
7620
7621							// Support: Promises/A+ section 2.3.3.3.1
7622							// https://promisesaplus.com/#point-57
7623							// Re-resolve promises immediately to dodge false rejection from
7624							// subsequent errors
7625							if ( depth ) {
7626								process();
7627							} else {
7628
7629								// Call an optional hook to record the error, in case of exception
7630								// since it's otherwise lost when execution goes async
7631								if ( jQuery.Deferred.getErrorHook ) {
7632									process.error = jQuery.Deferred.getErrorHook();
7633
7634								// The deprecated alias of the above. While the name suggests
7635								// returning the stack, not an error instance, jQuery just passes
7636								// it directly to `console.warn` so both will work; an instance
7637								// just better cooperates with source maps.
7638								} else if ( jQuery.Deferred.getStackHook ) {
7639									process.error = jQuery.Deferred.getStackHook();
7640								}
7641								window.setTimeout( process );
7642							}
7643						};
7644					}
7645
7646					return jQuery.Deferred( function( newDefer ) {
7647
7648						// progress_handlers.add( ... )
7649						tuples[ 0 ][ 3 ].add(
7650							resolve(
7651								0,
7652								newDefer,
7653								isFunction( onProgress ) ?
7654									onProgress :
7655									Identity,
7656								newDefer.notifyWith
7657							)
7658						);
7659
7660						// fulfilled_handlers.add( ... )
7661						tuples[ 1 ][ 3 ].add(
7662							resolve(
7663								0,
7664								newDefer,
7665								isFunction( onFulfilled ) ?
7666									onFulfilled :
7667									Identity
7668							)
7669						);
7670
7671						// rejected_handlers.add( ... )
7672						tuples[ 2 ][ 3 ].add(
7673							resolve(
7674								0,
7675								newDefer,
7676								isFunction( onRejected ) ?
7677									onRejected :
7678									Thrower
7679							)
7680						);
7681					} ).promise();
7682				},
7683
7684				// Get a promise for this deferred
7685				// If obj is provided, the promise aspect is added to the object
7686				promise: function( obj ) {
7687					return obj != null ? jQuery.extend( obj, promise ) : promise;
7688				}
7689			},
7690			deferred = {};
7691
7692		// Add list-specific methods
7693		jQuery.each( tuples, function( i, tuple ) {
7694			var list = tuple[ 2 ],
7695				stateString = tuple[ 5 ];
7696
7697			// promise.progress = list.add
7698			// promise.done = list.add
7699			// promise.fail = list.add
7700			promise[ tuple[ 1 ] ] = list.add;
7701
7702			// Handle state
7703			if ( stateString ) {
7704				list.add(
7705					function() {
7706
7707						// state = "resolved" (i.e., fulfilled)
7708						// state = "rejected"
7709						state = stateString;
7710					},
7711
7712					// rejected_callbacks.disable
7713					// fulfilled_callbacks.disable
7714					tuples[ 3 - i ][ 2 ].disable,
7715
7716					// rejected_handlers.disable
7717					// fulfilled_handlers.disable
7718					tuples[ 3 - i ][ 3 ].disable,
7719
7720					// progress_callbacks.lock
7721					tuples[ 0 ][ 2 ].lock,
7722
7723					// progress_handlers.lock
7724					tuples[ 0 ][ 3 ].lock
7725				);
7726			}
7727
7728			// progress_handlers.fire
7729			// fulfilled_handlers.fire
7730			// rejected_handlers.fire
7731			list.add( tuple[ 3 ].fire );
7732
7733			// deferred.notify = function() { deferred.notifyWith(...) }
7734			// deferred.resolve = function() { deferred.resolveWith(...) }
7735			// deferred.reject = function() { deferred.rejectWith(...) }
7736			deferred[ tuple[ 0 ] ] = function() {
7737				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
7738				return this;
7739			};
7740
7741			// deferred.notifyWith = list.fireWith
7742			// deferred.resolveWith = list.fireWith
7743			// deferred.rejectWith = list.fireWith
7744			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
7745		} );
7746
7747		// Make the deferred a promise
7748		promise.promise( deferred );
7749
7750		// Call given func if any
7751		if ( func ) {
7752			func.call( deferred, deferred );
7753		}
7754
7755		// All done!
7756		return deferred;
7757	},
7758
7759	// Deferred helper
7760	when: function( singleValue ) {
7761		var
7762
7763			// count of uncompleted subordinates
7764			remaining = arguments.length,
7765
7766			// count of unprocessed arguments
7767			i = remaining,
7768
7769			// subordinate fulfillment data
7770			resolveContexts = Array( i ),
7771			resolveValues = slice.call( arguments ),
7772
7773			// the primary Deferred
7774			primary = jQuery.Deferred(),
7775
7776			// subordinate callback factory
7777			updateFunc = function( i ) {
7778				return function( value ) {
7779					resolveContexts[ i ] = this;
7780					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
7781					if ( !( --remaining ) ) {
7782						primary.resolveWith( resolveContexts, resolveValues );
7783					}
7784				};
7785			};
7786
7787		// Single- and empty arguments are adopted like Promise.resolve
7788		if ( remaining <= 1 ) {
7789			adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,
7790				!remaining );
7791
7792			// Use .then() to unwrap secondary thenables (cf. gh-3000)
7793			if ( primary.state() === "pending" ||
7794				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
7795
7796				return primary.then();
7797			}
7798		}
7799
7800		// Multiple arguments are aggregated like Promise.all array elements
7801		while ( i-- ) {
7802			adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );
7803		}
7804
7805		return primary.promise();
7806	}
7807} );
7808
7809
7810// These usually indicate a programmer mistake during development,
7811// warn about them ASAP rather than swallowing them by default.
7812var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
7813
7814// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error
7815// captured before the async barrier to get the original error cause
7816// which may otherwise be hidden.
7817jQuery.Deferred.exceptionHook = function( error, asyncError ) {
7818
7819	// Support: IE 8 - 9 only
7820	// Console exists when dev tools are open, which can happen at any time
7821	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
7822		window.console.warn( "jQuery.Deferred exception: " + error.message,
7823			error.stack, asyncError );
7824	}
7825};
7826
7827
7828
7829
7830jQuery.readyException = function( error ) {
7831	window.setTimeout( function() {
7832		throw error;
7833	} );
7834};
7835
7836
7837
7838
7839// The deferred used on DOM ready
7840var readyList = jQuery.Deferred();
7841
7842jQuery.fn.ready = function( fn ) {
7843
7844	readyList
7845		.then( fn )
7846
7847		// Wrap jQuery.readyException in a function so that the lookup
7848		// happens at the time of error handling instead of callback
7849		// registration.
7850		.catch( function( error ) {
7851			jQuery.readyException( error );
7852		} );
7853
7854	return this;
7855};
7856
7857jQuery.extend( {
7858
7859	// Is the DOM ready to be used? Set to true once it occurs.
7860	isReady: false,
7861
7862	// A counter to track how many items to wait for before
7863	// the ready event fires. See trac-6781
7864	readyWait: 1,
7865
7866	// Handle when the DOM is ready
7867	ready: function( wait ) {
7868
7869		// Abort if there are pending holds or we're already ready
7870		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
7871			return;
7872		}
7873
7874		// Remember that the DOM is ready
7875		jQuery.isReady = true;
7876
7877		// If a normal DOM Ready event fired, decrement, and wait if need be
7878		if ( wait !== true && --jQuery.readyWait > 0 ) {
7879			return;
7880		}
7881
7882		// If there are functions bound, to execute
7883		readyList.resolveWith( document, [ jQuery ] );
7884	}
7885} );
7886
7887jQuery.ready.then = readyList.then;
7888
7889// The ready event handler and self cleanup method
7890function completed() {
7891	document.removeEventListener( "DOMContentLoaded", completed );
7892	window.removeEventListener( "load", completed );
7893	jQuery.ready();
7894}
7895
7896// Catch cases where $(document).ready() is called
7897// after the browser event has already occurred.
7898// Support: IE <=9 - 10 only
7899// Older IE sometimes signals "interactive" too soon
7900if ( document.readyState === "complete" ||
7901	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
7902
7903	// Handle it asynchronously to allow scripts the opportunity to delay ready
7904	window.setTimeout( jQuery.ready );
7905
7906} else {
7907
7908	// Use the handy event callback
7909	document.addEventListener( "DOMContentLoaded", completed );
7910
7911	// A fallback to window.onload, that will always work
7912	window.addEventListener( "load", completed );
7913}
7914
7915
7916
7917
7918// Multifunctional method to get and set values of a collection
7919// The value/s can optionally be executed if it's a function
7920var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
7921	var i = 0,
7922		len = elems.length,
7923		bulk = key == null;
7924
7925	// Sets many values
7926	if ( toType( key ) === "object" ) {
7927		chainable = true;
7928		for ( i in key ) {
7929			access( elems, fn, i, key[ i ], true, emptyGet, raw );
7930		}
7931
7932	// Sets one value
7933	} else if ( value !== undefined ) {
7934		chainable = true;
7935
7936		if ( !isFunction( value ) ) {
7937			raw = true;
7938		}
7939
7940		if ( bulk ) {
7941
7942			// Bulk operations run against the entire set
7943			if ( raw ) {
7944				fn.call( elems, value );
7945				fn = null;
7946
7947			// ...except when executing function values
7948			} else {
7949				bulk = fn;
7950				fn = function( elem, _key, value ) {
7951					return bulk.call( jQuery( elem ), value );
7952				};
7953			}
7954		}
7955
7956		if ( fn ) {
7957			for ( ; i < len; i++ ) {
7958				fn(
7959					elems[ i ], key, raw ?
7960						value :
7961						value.call( elems[ i ], i, fn( elems[ i ], key ) )
7962				);
7963			}
7964		}
7965	}
7966
7967	if ( chainable ) {
7968		return elems;
7969	}
7970
7971	// Gets
7972	if ( bulk ) {
7973		return fn.call( elems );
7974	}
7975
7976	return len ? fn( elems[ 0 ], key ) : emptyGet;
7977};
7978
7979
7980// Matches dashed string for camelizing
7981var rmsPrefix = /^-ms-/,
7982	rdashAlpha = /-([a-z])/g;
7983
7984// Used by camelCase as callback to replace()
7985function fcamelCase( _all, letter ) {
7986	return letter.toUpperCase();
7987}
7988
7989// Convert dashed to camelCase; used by the css and data modules
7990// Support: IE <=9 - 11, Edge 12 - 15
7991// Microsoft forgot to hump their vendor prefix (trac-9572)
7992function camelCase( string ) {
7993	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
7994}
7995var acceptData = function( owner ) {
7996
7997	// Accepts only:
7998	//  - Node
7999	//    - Node.ELEMENT_NODE
8000	//    - Node.DOCUMENT_NODE
8001	//  - Object
8002	//    - Any
8003	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
8004};
8005
8006
8007
8008
8009function Data() {
8010	this.expando = jQuery.expando + Data.uid++;
8011}
8012
8013Data.uid = 1;
8014
8015Data.prototype = {
8016
8017	cache: function( owner ) {
8018
8019		// Check if the owner object already has a cache
8020		var value = owner[ this.expando ];
8021
8022		// If not, create one
8023		if ( !value ) {
8024			value = {};
8025
8026			// We can accept data for non-element nodes in modern browsers,
8027			// but we should not, see trac-8335.
8028			// Always return an empty object.
8029			if ( acceptData( owner ) ) {
8030
8031				// If it is a node unlikely to be stringify-ed or looped over
8032				// use plain assignment
8033				if ( owner.nodeType ) {
8034					owner[ this.expando ] = value;
8035
8036				// Otherwise secure it in a non-enumerable property
8037				// configurable must be true to allow the property to be
8038				// deleted when data is removed
8039				} else {
8040					Object.defineProperty( owner, this.expando, {
8041						value: value,
8042						configurable: true
8043					} );
8044				}
8045			}
8046		}
8047
8048		return value;
8049	},
8050	set: function( owner, data, value ) {
8051		var prop,
8052			cache = this.cache( owner );
8053
8054		// Handle: [ owner, key, value ] args
8055		// Always use camelCase key (gh-2257)
8056		if ( typeof data === "string" ) {
8057			cache[ camelCase( data ) ] = value;
8058
8059		// Handle: [ owner, { properties } ] args
8060		} else {
8061
8062			// Copy the properties one-by-one to the cache object
8063			for ( prop in data ) {
8064				cache[ camelCase( prop ) ] = data[ prop ];
8065			}
8066		}
8067		return cache;
8068	},
8069	get: function( owner, key ) {
8070		return key === undefined ?
8071			this.cache( owner ) :
8072
8073			// Always use camelCase key (gh-2257)
8074			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
8075	},
8076	access: function( owner, key, value ) {
8077
8078		// In cases where either:
8079		//
8080		//   1. No key was specified
8081		//   2. A string key was specified, but no value provided
8082		//
8083		// Take the "read" path and allow the get method to determine
8084		// which value to return, respectively either:
8085		//
8086		//   1. The entire cache object
8087		//   2. The data stored at the key
8088		//
8089		if ( key === undefined ||
8090				( ( key && typeof key === "string" ) && value === undefined ) ) {
8091
8092			return this.get( owner, key );
8093		}
8094
8095		// When the key is not a string, or both a key and value
8096		// are specified, set or extend (existing objects) with either:
8097		//
8098		//   1. An object of properties
8099		//   2. A key and value
8100		//
8101		this.set( owner, key, value );
8102
8103		// Since the "set" path can have two possible entry points
8104		// return the expected data based on which path was taken[*]
8105		return value !== undefined ? value : key;
8106	},
8107	remove: function( owner, key ) {
8108		var i,
8109			cache = owner[ this.expando ];
8110
8111		if ( cache === undefined ) {
8112			return;
8113		}
8114
8115		if ( key !== undefined ) {
8116
8117			// Support array or space separated string of keys
8118			if ( Array.isArray( key ) ) {
8119
8120				// If key is an array of keys...
8121				// We always set camelCase keys, so remove that.
8122				key = key.map( camelCase );
8123			} else {
8124				key = camelCase( key );
8125
8126				// If a key with the spaces exists, use it.
8127				// Otherwise, create an array by matching non-whitespace
8128				key = key in cache ?
8129					[ key ] :
8130					( key.match( rnothtmlwhite ) || [] );
8131			}
8132
8133			i = key.length;
8134
8135			while ( i-- ) {
8136				delete cache[ key[ i ] ];
8137			}
8138		}
8139
8140		// Remove the expando if there's no more data
8141		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
8142
8143			// Support: Chrome <=35 - 45
8144			// Webkit & Blink performance suffers when deleting properties
8145			// from DOM nodes, so set to undefined instead
8146			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
8147			if ( owner.nodeType ) {
8148				owner[ this.expando ] = undefined;
8149			} else {
8150				delete owner[ this.expando ];
8151			}
8152		}
8153	},
8154	hasData: function( owner ) {
8155		var cache = owner[ this.expando ];
8156		return cache !== undefined && !jQuery.isEmptyObject( cache );
8157	}
8158};
8159var dataPriv = new Data();
8160
8161var dataUser = new Data();
8162
8163
8164
8165//	Implementation Summary
8166//
8167//	1. Enforce API surface and semantic compatibility with 1.9.x branch
8168//	2. Improve the module's maintainability by reducing the storage
8169//		paths to a single mechanism.
8170//	3. Use the same single mechanism to support "private" and "user" data.
8171//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
8172//	5. Avoid exposing implementation details on user objects (eg. expando properties)
8173//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
8174
8175var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
8176	rmultiDash = /[A-Z]/g;
8177
8178function getData( data ) {
8179	if ( data === "true" ) {
8180		return true;
8181	}
8182
8183	if ( data === "false" ) {
8184		return false;
8185	}
8186
8187	if ( data === "null" ) {
8188		return null;
8189	}
8190
8191	// Only convert to a number if it doesn't change the string
8192	if ( data === +data + "" ) {
8193		return +data;
8194	}
8195
8196	if ( rbrace.test( data ) ) {
8197		return JSON.parse( data );
8198	}
8199
8200	return data;
8201}
8202
8203function dataAttr( elem, key, data ) {
8204	var name;
8205
8206	// If nothing was found internally, try to fetch any
8207	// data from the HTML5 data-* attribute
8208	if ( data === undefined && elem.nodeType === 1 ) {
8209		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
8210		data = elem.getAttribute( name );
8211
8212		if ( typeof data === "string" ) {
8213			try {
8214				data = getData( data );
8215			} catch ( e ) {}
8216
8217			// Make sure we set the data so it isn't changed later
8218			dataUser.set( elem, key, data );
8219		} else {
8220			data = undefined;
8221		}
8222	}
8223	return data;
8224}
8225
8226jQuery.extend( {
8227	hasData: function( elem ) {
8228		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
8229	},
8230
8231	data: function( elem, name, data ) {
8232		return dataUser.access( elem, name, data );
8233	},
8234
8235	removeData: function( elem, name ) {
8236		dataUser.remove( elem, name );
8237	},
8238
8239	// TODO: Now that all calls to _data and _removeData have been replaced
8240	// with direct calls to dataPriv methods, these can be deprecated.
8241	_data: function( elem, name, data ) {
8242		return dataPriv.access( elem, name, data );
8243	},
8244
8245	_removeData: function( elem, name ) {
8246		dataPriv.remove( elem, name );
8247	}
8248} );
8249
8250jQuery.fn.extend( {
8251	data: function( key, value ) {
8252		var i, name, data,
8253			elem = this[ 0 ],
8254			attrs = elem && elem.attributes;
8255
8256		// Gets all values
8257		if ( key === undefined ) {
8258			if ( this.length ) {
8259				data = dataUser.get( elem );
8260
8261				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
8262					i = attrs.length;
8263					while ( i-- ) {
8264
8265						// Support: IE 11 only
8266						// The attrs elements can be null (trac-14894)
8267						if ( attrs[ i ] ) {
8268							name = attrs[ i ].name;
8269							if ( name.indexOf( "data-" ) === 0 ) {
8270								name = camelCase( name.slice( 5 ) );
8271								dataAttr( elem, name, data[ name ] );
8272							}
8273						}
8274					}
8275					dataPriv.set( elem, "hasDataAttrs", true );
8276				}
8277			}
8278
8279			return data;
8280		}
8281
8282		// Sets multiple values
8283		if ( typeof key === "object" ) {
8284			return this.each( function() {
8285				dataUser.set( this, key );
8286			} );
8287		}
8288
8289		return access( this, function( value ) {
8290			var data;
8291
8292			// The calling jQuery object (element matches) is not empty
8293			// (and therefore has an element appears at this[ 0 ]) and the
8294			// `value` parameter was not undefined. An empty jQuery object
8295			// will result in `undefined` for elem = this[ 0 ] which will
8296			// throw an exception if an attempt to read a data cache is made.
8297			if ( elem && value === undefined ) {
8298
8299				// Attempt to get data from the cache
8300				// The key will always be camelCased in Data
8301				data = dataUser.get( elem, key );
8302				if ( data !== undefined ) {
8303					return data;
8304				}
8305
8306				// Attempt to "discover" the data in
8307				// HTML5 custom data-* attrs
8308				data = dataAttr( elem, key );
8309				if ( data !== undefined ) {
8310					return data;
8311				}
8312
8313				// We tried really hard, but the data doesn't exist.
8314				return;
8315			}
8316
8317			// Set the data...
8318			this.each( function() {
8319
8320				// We always store the camelCased key
8321				dataUser.set( this, key, value );
8322			} );
8323		}, null, value, arguments.length > 1, null, true );
8324	},
8325
8326	removeData: function( key ) {
8327		return this.each( function() {
8328			dataUser.remove( this, key );
8329		} );
8330	}
8331} );
8332
8333
8334jQuery.extend( {
8335	queue: function( elem, type, data ) {
8336		var queue;
8337
8338		if ( elem ) {
8339			type = ( type || "fx" ) + "queue";
8340			queue = dataPriv.get( elem, type );
8341
8342			// Speed up dequeue by getting out quickly if this is just a lookup
8343			if ( data ) {
8344				if ( !queue || Array.isArray( data ) ) {
8345					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
8346				} else {
8347					queue.push( data );
8348				}
8349			}
8350			return queue || [];
8351		}
8352	},
8353
8354	dequeue: function( elem, type ) {
8355		type = type || "fx";
8356
8357		var queue = jQuery.queue( elem, type ),
8358			startLength = queue.length,
8359			fn = queue.shift(),
8360			hooks = jQuery._queueHooks( elem, type ),
8361			next = function() {
8362				jQuery.dequeue( elem, type );
8363			};
8364
8365		// If the fx queue is dequeued, always remove the progress sentinel
8366		if ( fn === "inprogress" ) {
8367			fn = queue.shift();
8368			startLength--;
8369		}
8370
8371		if ( fn ) {
8372
8373			// Add a progress sentinel to prevent the fx queue from being
8374			// automatically dequeued
8375			if ( type === "fx" ) {
8376				queue.unshift( "inprogress" );
8377			}
8378
8379			// Clear up the last queue stop function
8380			delete hooks.stop;
8381			fn.call( elem, next, hooks );
8382		}
8383
8384		if ( !startLength && hooks ) {
8385			hooks.empty.fire();
8386		}
8387	},
8388
8389	// Not public - generate a queueHooks object, or return the current one
8390	_queueHooks: function( elem, type ) {
8391		var key = type + "queueHooks";
8392		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
8393			empty: jQuery.Callbacks( "once memory" ).add( function() {
8394				dataPriv.remove( elem, [ type + "queue", key ] );
8395			} )
8396		} );
8397	}
8398} );
8399
8400jQuery.fn.extend( {
8401	queue: function( type, data ) {
8402		var setter = 2;
8403
8404		if ( typeof type !== "string" ) {
8405			data = type;
8406			type = "fx";
8407			setter--;
8408		}
8409
8410		if ( arguments.length < setter ) {
8411			return jQuery.queue( this[ 0 ], type );
8412		}
8413
8414		return data === undefined ?
8415			this :
8416			this.each( function() {
8417				var queue = jQuery.queue( this, type, data );
8418
8419				// Ensure a hooks for this queue
8420				jQuery._queueHooks( this, type );
8421
8422				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
8423					jQuery.dequeue( this, type );
8424				}
8425			} );
8426	},
8427	dequeue: function( type ) {
8428		return this.each( function() {
8429			jQuery.dequeue( this, type );
8430		} );
8431	},
8432	clearQueue: function( type ) {
8433		return this.queue( type || "fx", [] );
8434	},
8435
8436	// Get a promise resolved when queues of a certain type
8437	// are emptied (fx is the type by default)
8438	promise: function( type, obj ) {
8439		var tmp,
8440			count = 1,
8441			defer = jQuery.Deferred(),
8442			elements = this,
8443			i = this.length,
8444			resolve = function() {
8445				if ( !( --count ) ) {
8446					defer.resolveWith( elements, [ elements ] );
8447				}
8448			};
8449
8450		if ( typeof type !== "string" ) {
8451			obj = type;
8452			type = undefined;
8453		}
8454		type = type || "fx";
8455
8456		while ( i-- ) {
8457			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
8458			if ( tmp && tmp.empty ) {
8459				count++;
8460				tmp.empty.add( resolve );
8461			}
8462		}
8463		resolve();
8464		return defer.promise( obj );
8465	}
8466} );
8467var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
8468
8469var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
8470
8471
8472var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
8473
8474var documentElement = document.documentElement;
8475
8476
8477
8478	var isAttached = function( elem ) {
8479			return jQuery.contains( elem.ownerDocument, elem );
8480		},
8481		composed = { composed: true };
8482
8483	// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
8484	// Check attachment across shadow DOM boundaries when possible (gh-3504)
8485	// Support: iOS 10.0-10.2 only
8486	// Early iOS 10 versions support `attachShadow` but not `getRootNode`,
8487	// leading to errors. We need to check for `getRootNode`.
8488	if ( documentElement.getRootNode ) {
8489		isAttached = function( elem ) {
8490			return jQuery.contains( elem.ownerDocument, elem ) ||
8491				elem.getRootNode( composed ) === elem.ownerDocument;
8492		};
8493	}
8494var isHiddenWithinTree = function( elem, el ) {
8495
8496		// isHiddenWithinTree might be called from jQuery#filter function;
8497		// in that case, element will be second argument
8498		elem = el || elem;
8499
8500		// Inline style trumps all
8501		return elem.style.display === "none" ||
8502			elem.style.display === "" &&
8503
8504			// Otherwise, check computed style
8505			// Support: Firefox <=43 - 45
8506			// Disconnected elements can have computed display: none, so first confirm that elem is
8507			// in the document.
8508			isAttached( elem ) &&
8509
8510			jQuery.css( elem, "display" ) === "none";
8511	};
8512
8513
8514
8515function adjustCSS( elem, prop, valueParts, tween ) {
8516	var adjusted, scale,
8517		maxIterations = 20,
8518		currentValue = tween ?
8519			function() {
8520				return tween.cur();
8521			} :
8522			function() {
8523				return jQuery.css( elem, prop, "" );
8524			},
8525		initial = currentValue(),
8526		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
8527
8528		// Starting value computation is required for potential unit mismatches
8529		initialInUnit = elem.nodeType &&
8530			( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
8531			rcssNum.exec( jQuery.css( elem, prop ) );
8532
8533	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
8534
8535		// Support: Firefox <=54
8536		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
8537		initial = initial / 2;
8538
8539		// Trust units reported by jQuery.css
8540		unit = unit || initialInUnit[ 3 ];
8541
8542		// Iteratively approximate from a nonzero starting point
8543		initialInUnit = +initial || 1;
8544
8545		while ( maxIterations-- ) {
8546
8547			// Evaluate and update our best guess (doubling guesses that zero out).
8548			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
8549			jQuery.style( elem, prop, initialInUnit + unit );
8550			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
8551				maxIterations = 0;
8552			}
8553			initialInUnit = initialInUnit / scale;
8554
8555		}
8556
8557		initialInUnit = initialInUnit * 2;
8558		jQuery.style( elem, prop, initialInUnit + unit );
8559
8560		// Make sure we update the tween properties later on
8561		valueParts = valueParts || [];
8562	}
8563
8564	if ( valueParts ) {
8565		initialInUnit = +initialInUnit || +initial || 0;
8566
8567		// Apply relative offset (+=/-=) if specified
8568		adjusted = valueParts[ 1 ] ?
8569			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
8570			+valueParts[ 2 ];
8571		if ( tween ) {
8572			tween.unit = unit;
8573			tween.start = initialInUnit;
8574			tween.end = adjusted;
8575		}
8576	}
8577	return adjusted;
8578}
8579
8580
8581var defaultDisplayMap = {};
8582
8583function getDefaultDisplay( elem ) {
8584	var temp,
8585		doc = elem.ownerDocument,
8586		nodeName = elem.nodeName,
8587		display = defaultDisplayMap[ nodeName ];
8588
8589	if ( display ) {
8590		return display;
8591	}
8592
8593	temp = doc.body.appendChild( doc.createElement( nodeName ) );
8594	display = jQuery.css( temp, "display" );
8595
8596	temp.parentNode.removeChild( temp );
8597
8598	if ( display === "none" ) {
8599		display = "block";
8600	}
8601	defaultDisplayMap[ nodeName ] = display;
8602
8603	return display;
8604}
8605
8606function showHide( elements, show ) {
8607	var display, elem,
8608		values = [],
8609		index = 0,
8610		length = elements.length;
8611
8612	// Determine new display value for elements that need to change
8613	for ( ; index < length; index++ ) {
8614		elem = elements[ index ];
8615		if ( !elem.style ) {
8616			continue;
8617		}
8618
8619		display = elem.style.display;
8620		if ( show ) {
8621
8622			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
8623			// check is required in this first loop unless we have a nonempty display value (either
8624			// inline or about-to-be-restored)
8625			if ( display === "none" ) {
8626				values[ index ] = dataPriv.get( elem, "display" ) || null;
8627				if ( !values[ index ] ) {
8628					elem.style.display = "";
8629				}
8630			}
8631			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
8632				values[ index ] = getDefaultDisplay( elem );
8633			}
8634		} else {
8635			if ( display !== "none" ) {
8636				values[ index ] = "none";
8637
8638				// Remember what we're overwriting
8639				dataPriv.set( elem, "display", display );
8640			}
8641		}
8642	}
8643
8644	// Set the display of the elements in a second loop to avoid constant reflow
8645	for ( index = 0; index < length; index++ ) {
8646		if ( values[ index ] != null ) {
8647			elements[ index ].style.display = values[ index ];
8648		}
8649	}
8650
8651	return elements;
8652}
8653
8654jQuery.fn.extend( {
8655	show: function() {
8656		return showHide( this, true );
8657	},
8658	hide: function() {
8659		return showHide( this );
8660	},
8661	toggle: function( state ) {
8662		if ( typeof state === "boolean" ) {
8663			return state ? this.show() : this.hide();
8664		}
8665
8666		return this.each( function() {
8667			if ( isHiddenWithinTree( this ) ) {
8668				jQuery( this ).show();
8669			} else {
8670				jQuery( this ).hide();
8671			}
8672		} );
8673	}
8674} );
8675var rcheckableType = ( /^(?:checkbox|radio)$/i );
8676
8677var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i );
8678
8679var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
8680
8681
8682
8683( function() {
8684	var fragment = document.createDocumentFragment(),
8685		div = fragment.appendChild( document.createElement( "div" ) ),
8686		input = document.createElement( "input" );
8687
8688	// Support: Android 4.0 - 4.3 only
8689	// Check state lost if the name is set (trac-11217)
8690	// Support: Windows Web Apps (WWA)
8691	// `name` and `type` must use .setAttribute for WWA (trac-14901)
8692	input.setAttribute( "type", "radio" );
8693	input.setAttribute( "checked", "checked" );
8694	input.setAttribute( "name", "t" );
8695
8696	div.appendChild( input );
8697
8698	// Support: Android <=4.1 only
8699	// Older WebKit doesn't clone checked state correctly in fragments
8700	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
8701
8702	// Support: IE <=11 only
8703	// Make sure textarea (and checkbox) defaultValue is properly cloned
8704	div.innerHTML = "<textarea>x</textarea>";
8705	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
8706
8707	// Support: IE <=9 only
8708	// IE <=9 replaces <option> tags with their contents when inserted outside of
8709	// the select element.
8710	div.innerHTML = "<option></option>";
8711	support.option = !!div.lastChild;
8712} )();
8713
8714
8715// We have to close these tags to support XHTML (trac-13200)
8716var wrapMap = {
8717
8718	// XHTML parsers do not magically insert elements in the
8719	// same way that tag soup parsers do. So we cannot shorten
8720	// this by omitting <tbody> or other required elements.
8721	thead: [ 1, "<table>", "</table>" ],
8722	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
8723	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
8724	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
8725
8726	_default: [ 0, "", "" ]
8727};
8728
8729wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
8730wrapMap.th = wrapMap.td;
8731
8732// Support: IE <=9 only
8733if ( !support.option ) {
8734	wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ];
8735}
8736
8737
8738function getAll( context, tag ) {
8739
8740	// Support: IE <=9 - 11 only
8741	// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)
8742	var ret;
8743
8744	if ( typeof context.getElementsByTagName !== "undefined" ) {
8745		ret = context.getElementsByTagName( tag || "*" );
8746
8747	} else if ( typeof context.querySelectorAll !== "undefined" ) {
8748		ret = context.querySelectorAll( tag || "*" );
8749
8750	} else {
8751		ret = [];
8752	}
8753
8754	if ( tag === undefined || tag && nodeName( context, tag ) ) {
8755		return jQuery.merge( [ context ], ret );
8756	}
8757
8758	return ret;
8759}
8760
8761
8762// Mark scripts as having already been evaluated
8763function setGlobalEval( elems, refElements ) {
8764	var i = 0,
8765		l = elems.length;
8766
8767	for ( ; i < l; i++ ) {
8768		dataPriv.set(
8769			elems[ i ],
8770			"globalEval",
8771			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
8772		);
8773	}
8774}
8775
8776
8777var rhtml = /<|&#?\w+;/;
8778
8779function buildFragment( elems, context, scripts, selection, ignored ) {
8780	var elem, tmp, tag, wrap, attached, j,
8781		fragment = context.createDocumentFragment(),
8782		nodes = [],
8783		i = 0,
8784		l = elems.length;
8785
8786	for ( ; i < l; i++ ) {
8787		elem = elems[ i ];
8788
8789		if ( elem || elem === 0 ) {
8790
8791			// Add nodes directly
8792			if ( toType( elem ) === "object" ) {
8793
8794				// Support: Android <=4.0 only, PhantomJS 1 only
8795				// push.apply(_, arraylike) throws on ancient WebKit
8796				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
8797
8798			// Convert non-html into a text node
8799			} else if ( !rhtml.test( elem ) ) {
8800				nodes.push( context.createTextNode( elem ) );
8801
8802			// Convert html into DOM nodes
8803			} else {
8804				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
8805
8806				// Deserialize a standard representation
8807				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
8808				wrap = wrapMap[ tag ] || wrapMap._default;
8809				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
8810
8811				// Descend through wrappers to the right content
8812				j = wrap[ 0 ];
8813				while ( j-- ) {
8814					tmp = tmp.lastChild;
8815				}
8816
8817				// Support: Android <=4.0 only, PhantomJS 1 only
8818				// push.apply(_, arraylike) throws on ancient WebKit
8819				jQuery.merge( nodes, tmp.childNodes );
8820
8821				// Remember the top-level container
8822				tmp = fragment.firstChild;
8823
8824				// Ensure the created nodes are orphaned (trac-12392)
8825				tmp.textContent = "";
8826			}
8827		}
8828	}
8829
8830	// Remove wrapper from fragment
8831	fragment.textContent = "";
8832
8833	i = 0;
8834	while ( ( elem = nodes[ i++ ] ) ) {
8835
8836		// Skip elements already in the context collection (trac-4087)
8837		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
8838			if ( ignored ) {
8839				ignored.push( elem );
8840			}
8841			continue;
8842		}
8843
8844		attached = isAttached( elem );
8845
8846		// Append to fragment
8847		tmp = getAll( fragment.appendChild( elem ), "script" );
8848
8849		// Preserve script evaluation history
8850		if ( attached ) {
8851			setGlobalEval( tmp );
8852		}
8853
8854		// Capture executables
8855		if ( scripts ) {
8856			j = 0;
8857			while ( ( elem = tmp[ j++ ] ) ) {
8858				if ( rscriptType.test( elem.type || "" ) ) {
8859					scripts.push( elem );
8860				}
8861			}
8862		}
8863	}
8864
8865	return fragment;
8866}
8867
8868
8869var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
8870
8871function returnTrue() {
8872	return true;
8873}
8874
8875function returnFalse() {
8876	return false;
8877}
8878
8879function on( elem, types, selector, data, fn, one ) {
8880	var origFn, type;
8881
8882	// Types can be a map of types/handlers
8883	if ( typeof types === "object" ) {
8884
8885		// ( types-Object, selector, data )
8886		if ( typeof selector !== "string" ) {
8887
8888			// ( types-Object, data )
8889			data = data || selector;
8890			selector = undefined;
8891		}
8892		for ( type in types ) {
8893			on( elem, type, selector, data, types[ type ], one );
8894		}
8895		return elem;
8896	}
8897
8898	if ( data == null && fn == null ) {
8899
8900		// ( types, fn )
8901		fn = selector;
8902		data = selector = undefined;
8903	} else if ( fn == null ) {
8904		if ( typeof selector === "string" ) {
8905
8906			// ( types, selector, fn )
8907			fn = data;
8908			data = undefined;
8909		} else {
8910
8911			// ( types, data, fn )
8912			fn = data;
8913			data = selector;
8914			selector = undefined;
8915		}
8916	}
8917	if ( fn === false ) {
8918		fn = returnFalse;
8919	} else if ( !fn ) {
8920		return elem;
8921	}
8922
8923	if ( one === 1 ) {
8924		origFn = fn;
8925		fn = function( event ) {
8926
8927			// Can use an empty set, since event contains the info
8928			jQuery().off( event );
8929			return origFn.apply( this, arguments );
8930		};
8931
8932		// Use same guid so caller can remove using origFn
8933		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
8934	}
8935	return elem.each( function() {
8936		jQuery.event.add( this, types, fn, data, selector );
8937	} );
8938}
8939
8940/*
8941 * Helper functions for managing events -- not part of the public interface.
8942 * Props to Dean Edwards' addEvent library for many of the ideas.
8943 */
8944jQuery.event = {
8945
8946	global: {},
8947
8948	add: function( elem, types, handler, data, selector ) {
8949
8950		var handleObjIn, eventHandle, tmp,
8951			events, t, handleObj,
8952			special, handlers, type, namespaces, origType,
8953			elemData = dataPriv.get( elem );
8954
8955		// Only attach events to objects that accept data
8956		if ( !acceptData( elem ) ) {
8957			return;
8958		}
8959
8960		// Caller can pass in an object of custom data in lieu of the handler
8961		if ( handler.handler ) {
8962			handleObjIn = handler;
8963			handler = handleObjIn.handler;
8964			selector = handleObjIn.selector;
8965		}
8966
8967		// Ensure that invalid selectors throw exceptions at attach time
8968		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
8969		if ( selector ) {
8970			jQuery.find.matchesSelector( documentElement, selector );
8971		}
8972
8973		// Make sure that the handler has a unique ID, used to find/remove it later
8974		if ( !handler.guid ) {
8975			handler.guid = jQuery.guid++;
8976		}
8977
8978		// Init the element's event structure and main handler, if this is the first
8979		if ( !( events = elemData.events ) ) {
8980			events = elemData.events = Object.create( null );
8981		}
8982		if ( !( eventHandle = elemData.handle ) ) {
8983			eventHandle = elemData.handle = function( e ) {
8984
8985				// Discard the second event of a jQuery.event.trigger() and
8986				// when an event is called after a page has unloaded
8987				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
8988					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
8989			};
8990		}
8991
8992		// Handle multiple events separated by a space
8993		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
8994		t = types.length;
8995		while ( t-- ) {
8996			tmp = rtypenamespace.exec( types[ t ] ) || [];
8997			type = origType = tmp[ 1 ];
8998			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
8999
9000			// There *must* be a type, no attaching namespace-only handlers
9001			if ( !type ) {
9002				continue;
9003			}
9004
9005			// If event changes its type, use the special event handlers for the changed type
9006			special = jQuery.event.special[ type ] || {};
9007
9008			// If selector defined, determine special event api type, otherwise given type
9009			type = ( selector ? special.delegateType : special.bindType ) || type;
9010
9011			// Update special based on newly reset type
9012			special = jQuery.event.special[ type ] || {};
9013
9014			// handleObj is passed to all event handlers
9015			handleObj = jQuery.extend( {
9016				type: type,
9017				origType: origType,
9018				data: data,
9019				handler: handler,
9020				guid: handler.guid,
9021				selector: selector,
9022				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
9023				namespace: namespaces.join( "." )
9024			}, handleObjIn );
9025
9026			// Init the event handler queue if we're the first
9027			if ( !( handlers = events[ type ] ) ) {
9028				handlers = events[ type ] = [];
9029				handlers.delegateCount = 0;
9030
9031				// Only use addEventListener if the special events handler returns false
9032				if ( !special.setup ||
9033					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
9034
9035					if ( elem.addEventListener ) {
9036						elem.addEventListener( type, eventHandle );
9037					}
9038				}
9039			}
9040
9041			if ( special.add ) {
9042				special.add.call( elem, handleObj );
9043
9044				if ( !handleObj.handler.guid ) {
9045					handleObj.handler.guid = handler.guid;
9046				}
9047			}
9048
9049			// Add to the element's handler list, delegates in front
9050			if ( selector ) {
9051				handlers.splice( handlers.delegateCount++, 0, handleObj );
9052			} else {
9053				handlers.push( handleObj );
9054			}
9055
9056			// Keep track of which events have ever been used, for event optimization
9057			jQuery.event.global[ type ] = true;
9058		}
9059
9060	},
9061
9062	// Detach an event or set of events from an element
9063	remove: function( elem, types, handler, selector, mappedTypes ) {
9064
9065		var j, origCount, tmp,
9066			events, t, handleObj,
9067			special, handlers, type, namespaces, origType,
9068			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
9069
9070		if ( !elemData || !( events = elemData.events ) ) {
9071			return;
9072		}
9073
9074		// Once for each type.namespace in types; type may be omitted
9075		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
9076		t = types.length;
9077		while ( t-- ) {
9078			tmp = rtypenamespace.exec( types[ t ] ) || [];
9079			type = origType = tmp[ 1 ];
9080			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
9081
9082			// Unbind all events (on this namespace, if provided) for the element
9083			if ( !type ) {
9084				for ( type in events ) {
9085					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
9086				}
9087				continue;
9088			}
9089
9090			special = jQuery.event.special[ type ] || {};
9091			type = ( selector ? special.delegateType : special.bindType ) || type;
9092			handlers = events[ type ] || [];
9093			tmp = tmp[ 2 ] &&
9094				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
9095
9096			// Remove matching events
9097			origCount = j = handlers.length;
9098			while ( j-- ) {
9099				handleObj = handlers[ j ];
9100
9101				if ( ( mappedTypes || origType === handleObj.origType ) &&
9102					( !handler || handler.guid === handleObj.guid ) &&
9103					( !tmp || tmp.test( handleObj.namespace ) ) &&
9104					( !selector || selector === handleObj.selector ||
9105						selector === "**" && handleObj.selector ) ) {
9106					handlers.splice( j, 1 );
9107
9108					if ( handleObj.selector ) {
9109						handlers.delegateCount--;
9110					}
9111					if ( special.remove ) {
9112						special.remove.call( elem, handleObj );
9113					}
9114				}
9115			}
9116
9117			// Remove generic event handler if we removed something and no more handlers exist
9118			// (avoids potential for endless recursion during removal of special event handlers)
9119			if ( origCount && !handlers.length ) {
9120				if ( !special.teardown ||
9121					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
9122
9123					jQuery.removeEvent( elem, type, elemData.handle );
9124				}
9125
9126				delete events[ type ];
9127			}
9128		}
9129
9130		// Remove data and the expando if it's no longer used
9131		if ( jQuery.isEmptyObject( events ) ) {
9132			dataPriv.remove( elem, "handle events" );
9133		}
9134	},
9135
9136	dispatch: function( nativeEvent ) {
9137
9138		var i, j, ret, matched, handleObj, handlerQueue,
9139			args = new Array( arguments.length ),
9140
9141			// Make a writable jQuery.Event from the native event object
9142			event = jQuery.event.fix( nativeEvent ),
9143
9144			handlers = (
9145				dataPriv.get( this, "events" ) || Object.create( null )
9146			)[ event.type ] || [],
9147			special = jQuery.event.special[ event.type ] || {};
9148
9149		// Use the fix-ed jQuery.Event rather than the (read-only) native event
9150		args[ 0 ] = event;
9151
9152		for ( i = 1; i < arguments.length; i++ ) {
9153			args[ i ] = arguments[ i ];
9154		}
9155
9156		event.delegateTarget = this;
9157
9158		// Call the preDispatch hook for the mapped type, and let it bail if desired
9159		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
9160			return;
9161		}
9162
9163		// Determine handlers
9164		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
9165
9166		// Run delegates first; they may want to stop propagation beneath us
9167		i = 0;
9168		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
9169			event.currentTarget = matched.elem;
9170
9171			j = 0;
9172			while ( ( handleObj = matched.handlers[ j++ ] ) &&
9173				!event.isImmediatePropagationStopped() ) {
9174
9175				// If the event is namespaced, then each handler is only invoked if it is
9176				// specially universal or its namespaces are a superset of the event's.
9177				if ( !event.rnamespace || handleObj.namespace === false ||
9178					event.rnamespace.test( handleObj.namespace ) ) {
9179
9180					event.handleObj = handleObj;
9181					event.data = handleObj.data;
9182
9183					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
9184						handleObj.handler ).apply( matched.elem, args );
9185
9186					if ( ret !== undefined ) {
9187						if ( ( event.result = ret ) === false ) {
9188							event.preventDefault();
9189							event.stopPropagation();
9190						}
9191					}
9192				}
9193			}
9194		}
9195
9196		// Call the postDispatch hook for the mapped type
9197		if ( special.postDispatch ) {
9198			special.postDispatch.call( this, event );
9199		}
9200
9201		return event.result;
9202	},
9203
9204	handlers: function( event, handlers ) {
9205		var i, handleObj, sel, matchedHandlers, matchedSelectors,
9206			handlerQueue = [],
9207			delegateCount = handlers.delegateCount,
9208			cur = event.target;
9209
9210		// Find delegate handlers
9211		if ( delegateCount &&
9212
9213			// Support: IE <=9
9214			// Black-hole SVG <use> instance trees (trac-13180)
9215			cur.nodeType &&
9216
9217			// Support: Firefox <=42
9218			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
9219			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
9220			// Support: IE 11 only
9221			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
9222			!( event.type === "click" && event.button >= 1 ) ) {
9223
9224			for ( ; cur !== this; cur = cur.parentNode || this ) {
9225
9226				// Don't check non-elements (trac-13208)
9227				// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)
9228				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
9229					matchedHandlers = [];
9230					matchedSelectors = {};
9231					for ( i = 0; i < delegateCount; i++ ) {
9232						handleObj = handlers[ i ];
9233
9234						// Don't conflict with Object.prototype properties (trac-13203)
9235						sel = handleObj.selector + " ";
9236
9237						if ( matchedSelectors[ sel ] === undefined ) {
9238							matchedSelectors[ sel ] = handleObj.needsContext ?
9239								jQuery( sel, this ).index( cur ) > -1 :
9240								jQuery.find( sel, this, null, [ cur ] ).length;
9241						}
9242						if ( matchedSelectors[ sel ] ) {
9243							matchedHandlers.push( handleObj );
9244						}
9245					}
9246					if ( matchedHandlers.length ) {
9247						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
9248					}
9249				}
9250			}
9251		}
9252
9253		// Add the remaining (directly-bound) handlers
9254		cur = this;
9255		if ( delegateCount < handlers.length ) {
9256			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
9257		}
9258
9259		return handlerQueue;
9260	},
9261
9262	addProp: function( name, hook ) {
9263		Object.defineProperty( jQuery.Event.prototype, name, {
9264			enumerable: true,
9265			configurable: true,
9266
9267			get: isFunction( hook ) ?
9268				function() {
9269					if ( this.originalEvent ) {
9270						return hook( this.originalEvent );
9271					}
9272				} :
9273				function() {
9274					if ( this.originalEvent ) {
9275						return this.originalEvent[ name ];
9276					}
9277				},
9278
9279			set: function( value ) {
9280				Object.defineProperty( this, name, {
9281					enumerable: true,
9282					configurable: true,
9283					writable: true,
9284					value: value
9285				} );
9286			}
9287		} );
9288	},
9289
9290	fix: function( originalEvent ) {
9291		return originalEvent[ jQuery.expando ] ?
9292			originalEvent :
9293			new jQuery.Event( originalEvent );
9294	},
9295
9296	special: {
9297		load: {
9298
9299			// Prevent triggered image.load events from bubbling to window.load
9300			noBubble: true
9301		},
9302		click: {
9303
9304			// Utilize native event to ensure correct state for checkable inputs
9305			setup: function( data ) {
9306
9307				// For mutual compressibility with _default, replace `this` access with a local var.
9308				// `|| data` is dead code meant only to preserve the variable through minification.
9309				var el = this || data;
9310
9311				// Claim the first handler
9312				if ( rcheckableType.test( el.type ) &&
9313					el.click && nodeName( el, "input" ) ) {
9314
9315					// dataPriv.set( el, "click", ... )
9316					leverageNative( el, "click", true );
9317				}
9318
9319				// Return false to allow normal processing in the caller
9320				return false;
9321			},
9322			trigger: function( data ) {
9323
9324				// For mutual compressibility with _default, replace `this` access with a local var.
9325				// `|| data` is dead code meant only to preserve the variable through minification.
9326				var el = this || data;
9327
9328				// Force setup before triggering a click
9329				if ( rcheckableType.test( el.type ) &&
9330					el.click && nodeName( el, "input" ) ) {
9331
9332					leverageNative( el, "click" );
9333				}
9334
9335				// Return non-false to allow normal event-path propagation
9336				return true;
9337			},
9338
9339			// For cross-browser consistency, suppress native .click() on links
9340			// Also prevent it if we're currently inside a leveraged native-event stack
9341			_default: function( event ) {
9342				var target = event.target;
9343				return rcheckableType.test( target.type ) &&
9344					target.click && nodeName( target, "input" ) &&
9345					dataPriv.get( target, "click" ) ||
9346					nodeName( target, "a" );
9347			}
9348		},
9349
9350		beforeunload: {
9351			postDispatch: function( event ) {
9352
9353				// Support: Firefox 20+
9354				// Firefox doesn't alert if the returnValue field is not set.
9355				if ( event.result !== undefined && event.originalEvent ) {
9356					event.originalEvent.returnValue = event.result;
9357				}
9358			}
9359		}
9360	}
9361};
9362
9363// Ensure the presence of an event listener that handles manually-triggered
9364// synthetic events by interrupting progress until reinvoked in response to
9365// *native* events that it fires directly, ensuring that state changes have
9366// already occurred before other listeners are invoked.
9367function leverageNative( el, type, isSetup ) {
9368
9369	// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add
9370	if ( !isSetup ) {
9371		if ( dataPriv.get( el, type ) === undefined ) {
9372			jQuery.event.add( el, type, returnTrue );
9373		}
9374		return;
9375	}
9376
9377	// Register the controller as a special universal handler for all event namespaces
9378	dataPriv.set( el, type, false );
9379	jQuery.event.add( el, type, {
9380		namespace: false,
9381		handler: function( event ) {
9382			var result,
9383				saved = dataPriv.get( this, type );
9384
9385			if ( ( event.isTrigger & 1 ) && this[ type ] ) {
9386
9387				// Interrupt processing of the outer synthetic .trigger()ed event
9388				if ( !saved ) {
9389
9390					// Store arguments for use when handling the inner native event
9391					// There will always be at least one argument (an event object), so this array
9392					// will not be confused with a leftover capture object.
9393					saved = slice.call( arguments );
9394					dataPriv.set( this, type, saved );
9395
9396					// Trigger the native event and capture its result
9397					this[ type ]();
9398					result = dataPriv.get( this, type );
9399					dataPriv.set( this, type, false );
9400
9401					if ( saved !== result ) {
9402
9403						// Cancel the outer synthetic event
9404						event.stopImmediatePropagation();
9405						event.preventDefault();
9406
9407						return result;
9408					}
9409
9410				// If this is an inner synthetic event for an event with a bubbling surrogate
9411				// (focus or blur), assume that the surrogate already propagated from triggering
9412				// the native event and prevent that from happening again here.
9413				// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
9414				// bubbling surrogate propagates *after* the non-bubbling base), but that seems
9415				// less bad than duplication.
9416				} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {
9417					event.stopPropagation();
9418				}
9419
9420			// If this is a native event triggered above, everything is now in order
9421			// Fire an inner synthetic event with the original arguments
9422			} else if ( saved ) {
9423
9424				// ...and capture the result
9425				dataPriv.set( this, type, jQuery.event.trigger(
9426					saved[ 0 ],
9427					saved.slice( 1 ),
9428					this
9429				) );
9430
9431				// Abort handling of the native event by all jQuery handlers while allowing
9432				// native handlers on the same element to run. On target, this is achieved
9433				// by stopping immediate propagation just on the jQuery event. However,
9434				// the native event is re-wrapped by a jQuery one on each level of the
9435				// propagation so the only way to stop it for jQuery is to stop it for
9436				// everyone via native `stopPropagation()`. This is not a problem for
9437				// focus/blur which don't bubble, but it does also stop click on checkboxes
9438				// and radios. We accept this limitation.
9439				event.stopPropagation();
9440				event.isImmediatePropagationStopped = returnTrue;
9441			}
9442		}
9443	} );
9444}
9445
9446jQuery.removeEvent = function( elem, type, handle ) {
9447
9448	// This "if" is needed for plain objects
9449	if ( elem.removeEventListener ) {
9450		elem.removeEventListener( type, handle );
9451	}
9452};
9453
9454jQuery.Event = function( src, props ) {
9455
9456	// Allow instantiation without the 'new' keyword
9457	if ( !( this instanceof jQuery.Event ) ) {
9458		return new jQuery.Event( src, props );
9459	}
9460
9461	// Event object
9462	if ( src && src.type ) {
9463		this.originalEvent = src;
9464		this.type = src.type;
9465
9466		// Events bubbling up the document may have been marked as prevented
9467		// by a handler lower down the tree; reflect the correct value.
9468		this.isDefaultPrevented = src.defaultPrevented ||
9469				src.defaultPrevented === undefined &&
9470
9471				// Support: Android <=2.3 only
9472				src.returnValue === false ?
9473			returnTrue :
9474			returnFalse;
9475
9476		// Create target properties
9477		// Support: Safari <=6 - 7 only
9478		// Target should not be a text node (trac-504, trac-13143)
9479		this.target = ( src.target && src.target.nodeType === 3 ) ?
9480			src.target.parentNode :
9481			src.target;
9482
9483		this.currentTarget = src.currentTarget;
9484		this.relatedTarget = src.relatedTarget;
9485
9486	// Event type
9487	} else {
9488		this.type = src;
9489	}
9490
9491	// Put explicitly provided properties onto the event object
9492	if ( props ) {
9493		jQuery.extend( this, props );
9494	}
9495
9496	// Create a timestamp if incoming event doesn't have one
9497	this.timeStamp = src && src.timeStamp || Date.now();
9498
9499	// Mark it as fixed
9500	this[ jQuery.expando ] = true;
9501};
9502
9503// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
9504// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
9505jQuery.Event.prototype = {
9506	constructor: jQuery.Event,
9507	isDefaultPrevented: returnFalse,
9508	isPropagationStopped: returnFalse,
9509	isImmediatePropagationStopped: returnFalse,
9510	isSimulated: false,
9511
9512	preventDefault: function() {
9513		var e = this.originalEvent;
9514
9515		this.isDefaultPrevented = returnTrue;
9516
9517		if ( e && !this.isSimulated ) {
9518			e.preventDefault();
9519		}
9520	},
9521	stopPropagation: function() {
9522		var e = this.originalEvent;
9523
9524		this.isPropagationStopped = returnTrue;
9525
9526		if ( e && !this.isSimulated ) {
9527			e.stopPropagation();
9528		}
9529	},
9530	stopImmediatePropagation: function() {
9531		var e = this.originalEvent;
9532
9533		this.isImmediatePropagationStopped = returnTrue;
9534
9535		if ( e && !this.isSimulated ) {
9536			e.stopImmediatePropagation();
9537		}
9538
9539		this.stopPropagation();
9540	}
9541};
9542
9543// Includes all common event props including KeyEvent and MouseEvent specific props
9544jQuery.each( {
9545	altKey: true,
9546	bubbles: true,
9547	cancelable: true,
9548	changedTouches: true,
9549	ctrlKey: true,
9550	detail: true,
9551	eventPhase: true,
9552	metaKey: true,
9553	pageX: true,
9554	pageY: true,
9555	shiftKey: true,
9556	view: true,
9557	"char": true,
9558	code: true,
9559	charCode: true,
9560	key: true,
9561	keyCode: true,
9562	button: true,
9563	buttons: true,
9564	clientX: true,
9565	clientY: true,
9566	offsetX: true,
9567	offsetY: true,
9568	pointerId: true,
9569	pointerType: true,
9570	screenX: true,
9571	screenY: true,
9572	targetTouches: true,
9573	toElement: true,
9574	touches: true,
9575	which: true
9576}, jQuery.event.addProp );
9577
9578jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) {
9579
9580	function focusMappedHandler( nativeEvent ) {
9581		if ( document.documentMode ) {
9582
9583			// Support: IE 11+
9584			// Attach a single focusin/focusout handler on the document while someone wants
9585			// focus/blur. This is because the former are synchronous in IE while the latter
9586			// are async. In other browsers, all those handlers are invoked synchronously.
9587
9588			// `handle` from private data would already wrap the event, but we need
9589			// to change the `type` here.
9590			var handle = dataPriv.get( this, "handle" ),
9591				event = jQuery.event.fix( nativeEvent );
9592			event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
9593			event.isSimulated = true;
9594
9595			// First, handle focusin/focusout
9596			handle( nativeEvent );
9597
9598			// ...then, handle focus/blur
9599			//
9600			// focus/blur don't bubble while focusin/focusout do; simulate the former by only
9601			// invoking the handler at the lower level.
9602			if ( event.target === event.currentTarget ) {
9603
9604				// The setup part calls `leverageNative`, which, in turn, calls
9605				// `jQuery.event.add`, so event handle will already have been set
9606				// by this point.
9607				handle( event );
9608			}
9609		} else {
9610
9611			// For non-IE browsers, attach a single capturing handler on the document
9612			// while someone wants focusin/focusout.
9613			jQuery.event.simulate( delegateType, nativeEvent.target,
9614				jQuery.event.fix( nativeEvent ) );
9615		}
9616	}
9617
9618	jQuery.event.special[ type ] = {
9619
9620		// Utilize native event if possible so blur/focus sequence is correct
9621		setup: function() {
9622
9623			var attaches;
9624
9625			// Claim the first handler
9626			// dataPriv.set( this, "focus", ... )
9627			// dataPriv.set( this, "blur", ... )
9628			leverageNative( this, type, true );
9629
9630			if ( document.documentMode ) {
9631
9632				// Support: IE 9 - 11+
9633				// We use the same native handler for focusin & focus (and focusout & blur)
9634				// so we need to coordinate setup & teardown parts between those events.
9635				// Use `delegateType` as the key as `type` is already used by `leverageNative`.
9636				attaches = dataPriv.get( this, delegateType );
9637				if ( !attaches ) {
9638					this.addEventListener( delegateType, focusMappedHandler );
9639				}
9640				dataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );
9641			} else {
9642
9643				// Return false to allow normal processing in the caller
9644				return false;
9645			}
9646		},
9647		trigger: function() {
9648
9649			// Force setup before trigger
9650			leverageNative( this, type );
9651
9652			// Return non-false to allow normal event-path propagation
9653			return true;
9654		},
9655
9656		teardown: function() {
9657			var attaches;
9658
9659			if ( document.documentMode ) {
9660				attaches = dataPriv.get( this, delegateType ) - 1;
9661				if ( !attaches ) {
9662					this.removeEventListener( delegateType, focusMappedHandler );
9663					dataPriv.remove( this, delegateType );
9664				} else {
9665					dataPriv.set( this, delegateType, attaches );
9666				}
9667			} else {
9668
9669				// Return false to indicate standard teardown should be applied
9670				return false;
9671			}
9672		},
9673
9674		// Suppress native focus or blur if we're currently inside
9675		// a leveraged native-event stack
9676		_default: function( event ) {
9677			return dataPriv.get( event.target, type );
9678		},
9679
9680		delegateType: delegateType
9681	};
9682
9683	// Support: Firefox <=44
9684	// Firefox doesn't have focus(in | out) events
9685	// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
9686	//
9687	// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
9688	// focus(in | out) events fire after focus & blur events,
9689	// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
9690	// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
9691	//
9692	// Support: IE 9 - 11+
9693	// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,
9694	// attach a single handler for both events in IE.
9695	jQuery.event.special[ delegateType ] = {
9696		setup: function() {
9697
9698			// Handle: regular nodes (via `this.ownerDocument`), window
9699			// (via `this.document`) & document (via `this`).
9700			var doc = this.ownerDocument || this.document || this,
9701				dataHolder = document.documentMode ? this : doc,
9702				attaches = dataPriv.get( dataHolder, delegateType );
9703
9704			// Support: IE 9 - 11+
9705			// We use the same native handler for focusin & focus (and focusout & blur)
9706			// so we need to coordinate setup & teardown parts between those events.
9707			// Use `delegateType` as the key as `type` is already used by `leverageNative`.
9708			if ( !attaches ) {
9709				if ( document.documentMode ) {
9710					this.addEventListener( delegateType, focusMappedHandler );
9711				} else {
9712					doc.addEventListener( type, focusMappedHandler, true );
9713				}
9714			}
9715			dataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );
9716		},
9717		teardown: function() {
9718			var doc = this.ownerDocument || this.document || this,
9719				dataHolder = document.documentMode ? this : doc,
9720				attaches = dataPriv.get( dataHolder, delegateType ) - 1;
9721
9722			if ( !attaches ) {
9723				if ( document.documentMode ) {
9724					this.removeEventListener( delegateType, focusMappedHandler );
9725				} else {
9726					doc.removeEventListener( type, focusMappedHandler, true );
9727				}
9728				dataPriv.remove( dataHolder, delegateType );
9729			} else {
9730				dataPriv.set( dataHolder, delegateType, attaches );
9731			}
9732		}
9733	};
9734} );
9735
9736// Create mouseenter/leave events using mouseover/out and event-time checks
9737// so that event delegation works in jQuery.
9738// Do the same for pointerenter/pointerleave and pointerover/pointerout
9739//
9740// Support: Safari 7 only
9741// Safari sends mouseenter too often; see:
9742// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
9743// for the description of the bug (it existed in older Chrome versions as well).
9744jQuery.each( {
9745	mouseenter: "mouseover",
9746	mouseleave: "mouseout",
9747	pointerenter: "pointerover",
9748	pointerleave: "pointerout"
9749}, function( orig, fix ) {
9750	jQuery.event.special[ orig ] = {
9751		delegateType: fix,
9752		bindType: fix,
9753
9754		handle: function( event ) {
9755			var ret,
9756				target = this,
9757				related = event.relatedTarget,
9758				handleObj = event.handleObj;
9759
9760			// For mouseenter/leave call the handler if related is outside the target.
9761			// NB: No relatedTarget if the mouse left/entered the browser window
9762			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
9763				event.type = handleObj.origType;
9764				ret = handleObj.handler.apply( this, arguments );
9765				event.type = fix;
9766			}
9767			return ret;
9768		}
9769	};
9770} );
9771
9772jQuery.fn.extend( {
9773
9774	on: function( types, selector, data, fn ) {
9775		return on( this, types, selector, data, fn );
9776	},
9777	one: function( types, selector, data, fn ) {
9778		return on( this, types, selector, data, fn, 1 );
9779	},
9780	off: function( types, selector, fn ) {
9781		var handleObj, type;
9782		if ( types && types.preventDefault && types.handleObj ) {
9783
9784			// ( event )  dispatched jQuery.Event
9785			handleObj = types.handleObj;
9786			jQuery( types.delegateTarget ).off(
9787				handleObj.namespace ?
9788					handleObj.origType + "." + handleObj.namespace :
9789					handleObj.origType,
9790				handleObj.selector,
9791				handleObj.handler
9792			);
9793			return this;
9794		}
9795		if ( typeof types === "object" ) {
9796
9797			// ( types-object [, selector] )
9798			for ( type in types ) {
9799				this.off( type, selector, types[ type ] );
9800			}
9801			return this;
9802		}
9803		if ( selector === false || typeof selector === "function" ) {
9804
9805			// ( types [, fn] )
9806			fn = selector;
9807			selector = undefined;
9808		}
9809		if ( fn === false ) {
9810			fn = returnFalse;
9811		}
9812		return this.each( function() {
9813			jQuery.event.remove( this, types, fn, selector );
9814		} );
9815	}
9816} );
9817
9818
9819var
9820
9821	// Support: IE <=10 - 11, Edge 12 - 13 only
9822	// In IE/Edge using regex groups here causes severe slowdowns.
9823	// See https://connect.microsoft.com/IE/feedback/details/1736512/
9824	rnoInnerhtml = /<script|<style|<link/i,
9825
9826	// checked="checked" or checked
9827	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
9828
9829	rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
9830
9831// Prefer a tbody over its parent table for containing new rows
9832function manipulationTarget( elem, content ) {
9833	if ( nodeName( elem, "table" ) &&
9834		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
9835
9836		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
9837	}
9838
9839	return elem;
9840}
9841
9842// Replace/restore the type attribute of script elements for safe DOM manipulation
9843function disableScript( elem ) {
9844	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
9845	return elem;
9846}
9847function restoreScript( elem ) {
9848	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
9849		elem.type = elem.type.slice( 5 );
9850	} else {
9851		elem.removeAttribute( "type" );
9852	}
9853
9854	return elem;
9855}
9856
9857function cloneCopyEvent( src, dest ) {
9858	var i, l, type, pdataOld, udataOld, udataCur, events;
9859
9860	if ( dest.nodeType !== 1 ) {
9861		return;
9862	}
9863
9864	// 1. Copy private data: events, handlers, etc.
9865	if ( dataPriv.hasData( src ) ) {
9866		pdataOld = dataPriv.get( src );
9867		events = pdataOld.events;
9868
9869		if ( events ) {
9870			dataPriv.remove( dest, "handle events" );
9871
9872			for ( type in events ) {
9873				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
9874					jQuery.event.add( dest, type, events[ type ][ i ] );
9875				}
9876			}
9877		}
9878	}
9879
9880	// 2. Copy user data
9881	if ( dataUser.hasData( src ) ) {
9882		udataOld = dataUser.access( src );
9883		udataCur = jQuery.extend( {}, udataOld );
9884
9885		dataUser.set( dest, udataCur );
9886	}
9887}
9888
9889// Fix IE bugs, see support tests
9890function fixInput( src, dest ) {
9891	var nodeName = dest.nodeName.toLowerCase();
9892
9893	// Fails to persist the checked state of a cloned checkbox or radio button.
9894	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
9895		dest.checked = src.checked;
9896
9897	// Fails to return the selected option to the default selected state when cloning options
9898	} else if ( nodeName === "input" || nodeName === "textarea" ) {
9899		dest.defaultValue = src.defaultValue;
9900	}
9901}
9902
9903function domManip( collection, args, callback, ignored ) {
9904
9905	// Flatten any nested arrays
9906	args = flat( args );
9907
9908	var fragment, first, scripts, hasScripts, node, doc,
9909		i = 0,
9910		l = collection.length,
9911		iNoClone = l - 1,
9912		value = args[ 0 ],
9913		valueIsFunction = isFunction( value );
9914
9915	// We can't cloneNode fragments that contain checked, in WebKit
9916	if ( valueIsFunction ||
9917			( l > 1 && typeof value === "string" &&
9918				!support.checkClone && rchecked.test( value ) ) ) {
9919		return collection.each( function( index ) {
9920			var self = collection.eq( index );
9921			if ( valueIsFunction ) {
9922				args[ 0 ] = value.call( this, index, self.html() );
9923			}
9924			domManip( self, args, callback, ignored );
9925		} );
9926	}
9927
9928	if ( l ) {
9929		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
9930		first = fragment.firstChild;
9931
9932		if ( fragment.childNodes.length === 1 ) {
9933			fragment = first;
9934		}
9935
9936		// Require either new content or an interest in ignored elements to invoke the callback
9937		if ( first || ignored ) {
9938			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
9939			hasScripts = scripts.length;
9940
9941			// Use the original fragment for the last item
9942			// instead of the first because it can end up
9943			// being emptied incorrectly in certain situations (trac-8070).
9944			for ( ; i < l; i++ ) {
9945				node = fragment;
9946
9947				if ( i !== iNoClone ) {
9948					node = jQuery.clone( node, true, true );
9949
9950					// Keep references to cloned scripts for later restoration
9951					if ( hasScripts ) {
9952
9953						// Support: Android <=4.0 only, PhantomJS 1 only
9954						// push.apply(_, arraylike) throws on ancient WebKit
9955						jQuery.merge( scripts, getAll( node, "script" ) );
9956					}
9957				}
9958
9959				callback.call( collection[ i ], node, i );
9960			}
9961
9962			if ( hasScripts ) {
9963				doc = scripts[ scripts.length - 1 ].ownerDocument;
9964
9965				// Re-enable scripts
9966				jQuery.map( scripts, restoreScript );
9967
9968				// Evaluate executable scripts on first document insertion
9969				for ( i = 0; i < hasScripts; i++ ) {
9970					node = scripts[ i ];
9971					if ( rscriptType.test( node.type || "" ) &&
9972						!dataPriv.access( node, "globalEval" ) &&
9973						jQuery.contains( doc, node ) ) {
9974
9975						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
9976
9977							// Optional AJAX dependency, but won't run scripts if not present
9978							if ( jQuery._evalUrl && !node.noModule ) {
9979								jQuery._evalUrl( node.src, {
9980									nonce: node.nonce || node.getAttribute( "nonce" )
9981								}, doc );
9982							}
9983						} else {
9984
9985							// Unwrap a CDATA section containing script contents. This shouldn't be
9986							// needed as in XML documents they're already not visible when
9987							// inspecting element contents and in HTML documents they have no
9988							// meaning but we're preserving that logic for backwards compatibility.
9989							// This will be removed completely in 4.0. See gh-4904.
9990							DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc );
9991						}
9992					}
9993				}
9994			}
9995		}
9996	}
9997
9998	return collection;
9999}
10000
10001function remove( elem, selector, keepData ) {
10002	var node,
10003		nodes = selector ? jQuery.filter( selector, elem ) : elem,
10004		i = 0;
10005
10006	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
10007		if ( !keepData && node.nodeType === 1 ) {
10008			jQuery.cleanData( getAll( node ) );
10009		}
10010
10011		if ( node.parentNode ) {
10012			if ( keepData && isAttached( node ) ) {
10013				setGlobalEval( getAll( node, "script" ) );
10014			}
10015			node.parentNode.removeChild( node );
10016		}
10017	}
10018
10019	return elem;
10020}
10021
10022jQuery.extend( {
10023	htmlPrefilter: function( html ) {
10024		return html;
10025	},
10026
10027	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
10028		var i, l, srcElements, destElements,
10029			clone = elem.cloneNode( true ),
10030			inPage = isAttached( elem );
10031
10032		// Fix IE cloning issues
10033		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
10034				!jQuery.isXMLDoc( elem ) ) {
10035
10036			// We eschew jQuery#find here for performance reasons:
10037			// https://jsperf.com/getall-vs-sizzle/2
10038			destElements = getAll( clone );
10039			srcElements = getAll( elem );
10040
10041			for ( i = 0, l = srcElements.length; i < l; i++ ) {
10042				fixInput( srcElements[ i ], destElements[ i ] );
10043			}
10044		}
10045
10046		// Copy the events from the original to the clone
10047		if ( dataAndEvents ) {
10048			if ( deepDataAndEvents ) {
10049				srcElements = srcElements || getAll( elem );
10050				destElements = destElements || getAll( clone );
10051
10052				for ( i = 0, l = srcElements.length; i < l; i++ ) {
10053					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
10054				}
10055			} else {
10056				cloneCopyEvent( elem, clone );
10057			}
10058		}
10059
10060		// Preserve script evaluation history
10061		destElements = getAll( clone, "script" );
10062		if ( destElements.length > 0 ) {
10063			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
10064		}
10065
10066		// Return the cloned set
10067		return clone;
10068	},
10069
10070	cleanData: function( elems ) {
10071		var data, elem, type,
10072			special = jQuery.event.special,
10073			i = 0;
10074
10075		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
10076			if ( acceptData( elem ) ) {
10077				if ( ( data = elem[ dataPriv.expando ] ) ) {
10078					if ( data.events ) {
10079						for ( type in data.events ) {
10080							if ( special[ type ] ) {
10081								jQuery.event.remove( elem, type );
10082
10083							// This is a shortcut to avoid jQuery.event.remove's overhead
10084							} else {
10085								jQuery.removeEvent( elem, type, data.handle );
10086							}
10087						}
10088					}
10089
10090					// Support: Chrome <=35 - 45+
10091					// Assign undefined instead of using delete, see Data#remove
10092					elem[ dataPriv.expando ] = undefined;
10093				}
10094				if ( elem[ dataUser.expando ] ) {
10095
10096					// Support: Chrome <=35 - 45+
10097					// Assign undefined instead of using delete, see Data#remove
10098					elem[ dataUser.expando ] = undefined;
10099				}
10100			}
10101		}
10102	}
10103} );
10104
10105jQuery.fn.extend( {
10106	detach: function( selector ) {
10107		return remove( this, selector, true );
10108	},
10109
10110	remove: function( selector ) {
10111		return remove( this, selector );
10112	},
10113
10114	text: function( value ) {
10115		return access( this, function( value ) {
10116			return value === undefined ?
10117				jQuery.text( this ) :
10118				this.empty().each( function() {
10119					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
10120						this.textContent = value;
10121					}
10122				} );
10123		}, null, value, arguments.length );
10124	},
10125
10126	append: function() {
10127		return domManip( this, arguments, function( elem ) {
10128			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
10129				var target = manipulationTarget( this, elem );
10130				target.appendChild( elem );
10131			}
10132		} );
10133	},
10134
10135	prepend: function() {
10136		return domManip( this, arguments, function( elem ) {
10137			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
10138				var target = manipulationTarget( this, elem );
10139				target.insertBefore( elem, target.firstChild );
10140			}
10141		} );
10142	},
10143
10144	before: function() {
10145		return domManip( this, arguments, function( elem ) {
10146			if ( this.parentNode ) {
10147				this.parentNode.insertBefore( elem, this );
10148			}
10149		} );
10150	},
10151
10152	after: function() {
10153		return domManip( this, arguments, function( elem ) {
10154			if ( this.parentNode ) {
10155				this.parentNode.insertBefore( elem, this.nextSibling );
10156			}
10157		} );
10158	},
10159
10160	empty: function() {
10161		var elem,
10162			i = 0;
10163
10164		for ( ; ( elem = this[ i ] ) != null; i++ ) {
10165			if ( elem.nodeType === 1 ) {
10166
10167				// Prevent memory leaks
10168				jQuery.cleanData( getAll( elem, false ) );
10169
10170				// Remove any remaining nodes
10171				elem.textContent = "";
10172			}
10173		}
10174
10175		return this;
10176	},
10177
10178	clone: function( dataAndEvents, deepDataAndEvents ) {
10179		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
10180		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
10181
10182		return this.map( function() {
10183			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
10184		} );
10185	},
10186
10187	html: function( value ) {
10188		return access( this, function( value ) {
10189			var elem = this[ 0 ] || {},
10190				i = 0,
10191				l = this.length;
10192
10193			if ( value === undefined && elem.nodeType === 1 ) {
10194				return elem.innerHTML;
10195			}
10196
10197			// See if we can take a shortcut and just use innerHTML
10198			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
10199				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
10200
10201				value = jQuery.htmlPrefilter( value );
10202
10203				try {
10204					for ( ; i < l; i++ ) {
10205						elem = this[ i ] || {};
10206
10207						// Remove element nodes and prevent memory leaks
10208						if ( elem.nodeType === 1 ) {
10209							jQuery.cleanData( getAll( elem, false ) );
10210							elem.innerHTML = value;
10211						}
10212					}
10213
10214					elem = 0;
10215
10216				// If using innerHTML throws an exception, use the fallback method
10217				} catch ( e ) {}
10218			}
10219
10220			if ( elem ) {
10221				this.empty().append( value );
10222			}
10223		}, null, value, arguments.length );
10224	},
10225
10226	replaceWith: function() {
10227		var ignored = [];
10228
10229		// Make the changes, replacing each non-ignored context element with the new content
10230		return domManip( this, arguments, function( elem ) {
10231			var parent = this.parentNode;
10232
10233			if ( jQuery.inArray( this, ignored ) < 0 ) {
10234				jQuery.cleanData( getAll( this ) );
10235				if ( parent ) {
10236					parent.replaceChild( elem, this );
10237				}
10238			}
10239
10240		// Force callback invocation
10241		}, ignored );
10242	}
10243} );
10244
10245jQuery.each( {
10246	appendTo: "append",
10247	prependTo: "prepend",
10248	insertBefore: "before",
10249	insertAfter: "after",
10250	replaceAll: "replaceWith"
10251}, function( name, original ) {
10252	jQuery.fn[ name ] = function( selector ) {
10253		var elems,
10254			ret = [],
10255			insert = jQuery( selector ),
10256			last = insert.length - 1,
10257			i = 0;
10258
10259		for ( ; i <= last; i++ ) {
10260			elems = i === last ? this : this.clone( true );
10261			jQuery( insert[ i ] )[ original ]( elems );
10262
10263			// Support: Android <=4.0 only, PhantomJS 1 only
10264			// .get() because push.apply(_, arraylike) throws on ancient WebKit
10265			push.apply( ret, elems.get() );
10266		}
10267
10268		return this.pushStack( ret );
10269	};
10270} );
10271var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
10272
10273var rcustomProp = /^--/;
10274
10275
10276var getStyles = function( elem ) {
10277
10278		// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)
10279		// IE throws on elements created in popups
10280		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
10281		var view = elem.ownerDocument.defaultView;
10282
10283		if ( !view || !view.opener ) {
10284			view = window;
10285		}
10286
10287		return view.getComputedStyle( elem );
10288	};
10289
10290var swap = function( elem, options, callback ) {
10291	var ret, name,
10292		old = {};
10293
10294	// Remember the old values, and insert the new ones
10295	for ( name in options ) {
10296		old[ name ] = elem.style[ name ];
10297		elem.style[ name ] = options[ name ];
10298	}
10299
10300	ret = callback.call( elem );
10301
10302	// Revert the old values
10303	for ( name in options ) {
10304		elem.style[ name ] = old[ name ];
10305	}
10306
10307	return ret;
10308};
10309
10310
10311var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
10312
10313
10314
10315( function() {
10316
10317	// Executing both pixelPosition & boxSizingReliable tests require only one layout
10318	// so they're executed at the same time to save the second computation.
10319	function computeStyleTests() {
10320
10321		// This is a singleton, we need to execute it only once
10322		if ( !div ) {
10323			return;
10324		}
10325
10326		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
10327			"margin-top:1px;padding:0;border:0";
10328		div.style.cssText =
10329			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
10330			"margin:auto;border:1px;padding:1px;" +
10331			"width:60%;top:1%";
10332		documentElement.appendChild( container ).appendChild( div );
10333
10334		var divStyle = window.getComputedStyle( div );
10335		pixelPositionVal = divStyle.top !== "1%";
10336
10337		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
10338		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
10339
10340		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
10341		// Some styles come back with percentage values, even though they shouldn't
10342		div.style.right = "60%";
10343		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
10344
10345		// Support: IE 9 - 11 only
10346		// Detect misreporting of content dimensions for box-sizing:border-box elements
10347		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
10348
10349		// Support: IE 9 only
10350		// Detect overflow:scroll screwiness (gh-3699)
10351		// Support: Chrome <=64
10352		// Don't get tricked when zoom affects offsetWidth (gh-4029)
10353		div.style.position = "absolute";
10354		scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;
10355
10356		documentElement.removeChild( container );
10357
10358		// Nullify the div so it wouldn't be stored in the memory and
10359		// it will also be a sign that checks already performed
10360		div = null;
10361	}
10362
10363	function roundPixelMeasures( measure ) {
10364		return Math.round( parseFloat( measure ) );
10365	}
10366
10367	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
10368		reliableTrDimensionsVal, reliableMarginLeftVal,
10369		container = document.createElement( "div" ),
10370		div = document.createElement( "div" );
10371
10372	// Finish early in limited (non-browser) environments
10373	if ( !div.style ) {
10374		return;
10375	}
10376
10377	// Support: IE <=9 - 11 only
10378	// Style of cloned element affects source element cloned (trac-8908)
10379	div.style.backgroundClip = "content-box";
10380	div.cloneNode( true ).style.backgroundClip = "";
10381	support.clearCloneStyle = div.style.backgroundClip === "content-box";
10382
10383	jQuery.extend( support, {
10384		boxSizingReliable: function() {
10385			computeStyleTests();
10386			return boxSizingReliableVal;
10387		},
10388		pixelBoxStyles: function() {
10389			computeStyleTests();
10390			return pixelBoxStylesVal;
10391		},
10392		pixelPosition: function() {
10393			computeStyleTests();
10394			return pixelPositionVal;
10395		},
10396		reliableMarginLeft: function() {
10397			computeStyleTests();
10398			return reliableMarginLeftVal;
10399		},
10400		scrollboxSize: function() {
10401			computeStyleTests();
10402			return scrollboxSizeVal;
10403		},
10404
10405		// Support: IE 9 - 11+, Edge 15 - 18+
10406		// IE/Edge misreport `getComputedStyle` of table rows with width/height
10407		// set in CSS while `offset*` properties report correct values.
10408		// Behavior in IE 9 is more subtle than in newer versions & it passes
10409		// some versions of this test; make sure not to make it pass there!
10410		//
10411		// Support: Firefox 70+
10412		// Only Firefox includes border widths
10413		// in computed dimensions. (gh-4529)
10414		reliableTrDimensions: function() {
10415			var table, tr, trChild, trStyle;
10416			if ( reliableTrDimensionsVal == null ) {
10417				table = document.createElement( "table" );
10418				tr = document.createElement( "tr" );
10419				trChild = document.createElement( "div" );
10420
10421				table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
10422				tr.style.cssText = "box-sizing:content-box;border:1px solid";
10423
10424				// Support: Chrome 86+
10425				// Height set through cssText does not get applied.
10426				// Computed height then comes back as 0.
10427				tr.style.height = "1px";
10428				trChild.style.height = "9px";
10429
10430				// Support: Android 8 Chrome 86+
10431				// In our bodyBackground.html iframe,
10432				// display for all div elements is set to "inline",
10433				// which causes a problem only in Android 8 Chrome 86.
10434				// Ensuring the div is `display: block`
10435				// gets around this issue.
10436				trChild.style.display = "block";
10437
10438				documentElement
10439					.appendChild( table )
10440					.appendChild( tr )
10441					.appendChild( trChild );
10442
10443				trStyle = window.getComputedStyle( tr );
10444				reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +
10445					parseInt( trStyle.borderTopWidth, 10 ) +
10446					parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;
10447
10448				documentElement.removeChild( table );
10449			}
10450			return reliableTrDimensionsVal;
10451		}
10452	} );
10453} )();
10454
10455
10456function curCSS( elem, name, computed ) {
10457	var width, minWidth, maxWidth, ret,
10458		isCustomProp = rcustomProp.test( name ),
10459
10460		// Support: Firefox 51+
10461		// Retrieving style before computed somehow
10462		// fixes an issue with getting wrong values
10463		// on detached elements
10464		style = elem.style;
10465
10466	computed = computed || getStyles( elem );
10467
10468	// getPropertyValue is needed for:
10469	//   .css('filter') (IE 9 only, trac-12537)
10470	//   .css('--customProperty) (gh-3144)
10471	if ( computed ) {
10472
10473		// Support: IE <=9 - 11+
10474		// IE only supports `"float"` in `getPropertyValue`; in computed styles
10475		// it's only available as `"cssFloat"`. We no longer modify properties
10476		// sent to `.css()` apart from camelCasing, so we need to check both.
10477		// Normally, this would create difference in behavior: if
10478		// `getPropertyValue` returns an empty string, the value returned
10479		// by `.css()` would be `undefined`. This is usually the case for
10480		// disconnected elements. However, in IE even disconnected elements
10481		// with no styles return `"none"` for `getPropertyValue( "float" )`
10482		ret = computed.getPropertyValue( name ) || computed[ name ];
10483
10484		if ( isCustomProp && ret ) {
10485
10486			// Support: Firefox 105+, Chrome <=105+
10487			// Spec requires trimming whitespace for custom properties (gh-4926).
10488			// Firefox only trims leading whitespace. Chrome just collapses
10489			// both leading & trailing whitespace to a single space.
10490			//
10491			// Fall back to `undefined` if empty string returned.
10492			// This collapses a missing definition with property defined
10493			// and set to an empty string but there's no standard API
10494			// allowing us to differentiate them without a performance penalty
10495			// and returning `undefined` aligns with older jQuery.
10496			//
10497			// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED
10498			// as whitespace while CSS does not, but this is not a problem
10499			// because CSS preprocessing replaces them with U+000A LINE FEED
10500			// (which *is* CSS whitespace)
10501			// https://www.w3.org/TR/css-syntax-3/#input-preprocessing
10502			ret = ret.replace( rtrimCSS, "$1" ) || undefined;
10503		}
10504
10505		if ( ret === "" && !isAttached( elem ) ) {
10506			ret = jQuery.style( elem, name );
10507		}
10508
10509		// A tribute to the "awesome hack by Dean Edwards"
10510		// Android Browser returns percentage for some values,
10511		// but width seems to be reliably pixels.
10512		// This is against the CSSOM draft spec:
10513		// https://drafts.csswg.org/cssom/#resolved-values
10514		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
10515
10516			// Remember the original values
10517			width = style.width;
10518			minWidth = style.minWidth;
10519			maxWidth = style.maxWidth;
10520
10521			// Put in the new values to get a computed value out
10522			style.minWidth = style.maxWidth = style.width = ret;
10523			ret = computed.width;
10524
10525			// Revert the changed values
10526			style.width = width;
10527			style.minWidth = minWidth;
10528			style.maxWidth = maxWidth;
10529		}
10530	}
10531
10532	return ret !== undefined ?
10533
10534		// Support: IE <=9 - 11 only
10535		// IE returns zIndex value as an integer.
10536		ret + "" :
10537		ret;
10538}
10539
10540
10541function addGetHookIf( conditionFn, hookFn ) {
10542
10543	// Define the hook, we'll check on the first run if it's really needed.
10544	return {
10545		get: function() {
10546			if ( conditionFn() ) {
10547
10548				// Hook not needed (or it's not possible to use it due
10549				// to missing dependency), remove it.
10550				delete this.get;
10551				return;
10552			}
10553
10554			// Hook needed; redefine it so that the support test is not executed again.
10555			return ( this.get = hookFn ).apply( this, arguments );
10556		}
10557	};
10558}
10559
10560
10561var cssPrefixes = [ "Webkit", "Moz", "ms" ],
10562	emptyStyle = document.createElement( "div" ).style,
10563	vendorProps = {};
10564
10565// Return a vendor-prefixed property or undefined
10566function vendorPropName( name ) {
10567
10568	// Check for vendor prefixed names
10569	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
10570		i = cssPrefixes.length;
10571
10572	while ( i-- ) {
10573		name = cssPrefixes[ i ] + capName;
10574		if ( name in emptyStyle ) {
10575			return name;
10576		}
10577	}
10578}
10579
10580// Return a potentially-mapped jQuery.cssProps or vendor prefixed property
10581function finalPropName( name ) {
10582	var final = jQuery.cssProps[ name ] || vendorProps[ name ];
10583
10584	if ( final ) {
10585		return final;
10586	}
10587	if ( name in emptyStyle ) {
10588		return name;
10589	}
10590	return vendorProps[ name ] = vendorPropName( name ) || name;
10591}
10592
10593
10594var
10595
10596	// Swappable if display is none or starts with table
10597	// except "table", "table-cell", or "table-caption"
10598	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
10599	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
10600	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
10601	cssNormalTransform = {
10602		letterSpacing: "0",
10603		fontWeight: "400"
10604	};
10605
10606function setPositiveNumber( _elem, value, subtract ) {
10607
10608	// Any relative (+/-) values have already been
10609	// normalized at this point
10610	var matches = rcssNum.exec( value );
10611	return matches ?
10612
10613		// Guard against undefined "subtract", e.g., when used as in cssHooks
10614		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
10615		value;
10616}
10617
10618function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
10619	var i = dimension === "width" ? 1 : 0,
10620		extra = 0,
10621		delta = 0,
10622		marginDelta = 0;
10623
10624	// Adjustment may not be necessary
10625	if ( box === ( isBorderBox ? "border" : "content" ) ) {
10626		return 0;
10627	}
10628
10629	for ( ; i < 4; i += 2 ) {
10630
10631		// Both box models exclude margin
10632		// Count margin delta separately to only add it after scroll gutter adjustment.
10633		// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).
10634		if ( box === "margin" ) {
10635			marginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
10636		}
10637
10638		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
10639		if ( !isBorderBox ) {
10640
10641			// Add padding
10642			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
10643
10644			// For "border" or "margin", add border
10645			if ( box !== "padding" ) {
10646				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
10647
10648			// But still keep track of it otherwise
10649			} else {
10650				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
10651			}
10652
10653		// If we get here with a border-box (content + padding + border), we're seeking "content" or
10654		// "padding" or "margin"
10655		} else {
10656
10657			// For "content", subtract padding
10658			if ( box === "content" ) {
10659				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
10660			}
10661
10662			// For "content" or "padding", subtract border
10663			if ( box !== "margin" ) {
10664				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
10665			}
10666		}
10667	}
10668
10669	// Account for positive content-box scroll gutter when requested by providing computedVal
10670	if ( !isBorderBox && computedVal >= 0 ) {
10671
10672		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
10673		// Assuming integer scroll gutter, subtract the rest and round down
10674		delta += Math.max( 0, Math.ceil(
10675			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
10676			computedVal -
10677			delta -
10678			extra -
10679			0.5
10680
10681		// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
10682		// Use an explicit zero to avoid NaN (gh-3964)
10683		) ) || 0;
10684	}
10685
10686	return delta + marginDelta;
10687}
10688
10689function getWidthOrHeight( elem, dimension, extra ) {
10690
10691	// Start with computed style
10692	var styles = getStyles( elem ),
10693
10694		// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
10695		// Fake content-box until we know it's needed to know the true value.
10696		boxSizingNeeded = !support.boxSizingReliable() || extra,
10697		isBorderBox = boxSizingNeeded &&
10698			jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
10699		valueIsBorderBox = isBorderBox,
10700
10701		val = curCSS( elem, dimension, styles ),
10702		offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );
10703
10704	// Support: Firefox <=54
10705	// Return a confounding non-pixel value or feign ignorance, as appropriate.
10706	if ( rnumnonpx.test( val ) ) {
10707		if ( !extra ) {
10708			return val;
10709		}
10710		val = "auto";
10711	}
10712
10713
10714	// Support: IE 9 - 11 only
10715	// Use offsetWidth/offsetHeight for when box sizing is unreliable.
10716	// In those cases, the computed value can be trusted to be border-box.
10717	if ( ( !support.boxSizingReliable() && isBorderBox ||
10718
10719		// Support: IE 10 - 11+, Edge 15 - 18+
10720		// IE/Edge misreport `getComputedStyle` of table rows with width/height
10721		// set in CSS while `offset*` properties report correct values.
10722		// Interestingly, in some cases IE 9 doesn't suffer from this issue.
10723		!support.reliableTrDimensions() && nodeName( elem, "tr" ) ||
10724
10725		// Fall back to offsetWidth/offsetHeight when value is "auto"
10726		// This happens for inline elements with no explicit setting (gh-3571)
10727		val === "auto" ||
10728
10729		// Support: Android <=4.1 - 4.3 only
10730		// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
10731		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) &&
10732
10733		// Make sure the element is visible & connected
10734		elem.getClientRects().length ) {
10735
10736		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
10737
10738		// Where available, offsetWidth/offsetHeight approximate border box dimensions.
10739		// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
10740		// retrieved value as a content box dimension.
10741		valueIsBorderBox = offsetProp in elem;
10742		if ( valueIsBorderBox ) {
10743			val = elem[ offsetProp ];
10744		}
10745	}
10746
10747	// Normalize "" and auto
10748	val = parseFloat( val ) || 0;
10749
10750	// Adjust for the element's box model
10751	return ( val +
10752		boxModelAdjustment(
10753			elem,
10754			dimension,
10755			extra || ( isBorderBox ? "border" : "content" ),
10756			valueIsBorderBox,
10757			styles,
10758
10759			// Provide the current computed size to request scroll gutter calculation (gh-3589)
10760			val
10761		)
10762	) + "px";
10763}
10764
10765jQuery.extend( {
10766
10767	// Add in style property hooks for overriding the default
10768	// behavior of getting and setting a style property
10769	cssHooks: {
10770		opacity: {
10771			get: function( elem, computed ) {
10772				if ( computed ) {
10773
10774					// We should always get a number back from opacity
10775					var ret = curCSS( elem, "opacity" );
10776					return ret === "" ? "1" : ret;
10777				}
10778			}
10779		}
10780	},
10781
10782	// Don't automatically add "px" to these possibly-unitless properties
10783	cssNumber: {
10784		animationIterationCount: true,
10785		aspectRatio: true,
10786		borderImageSlice: true,
10787		columnCount: true,
10788		flexGrow: true,
10789		flexShrink: true,
10790		fontWeight: true,
10791		gridArea: true,
10792		gridColumn: true,
10793		gridColumnEnd: true,
10794		gridColumnStart: true,
10795		gridRow: true,
10796		gridRowEnd: true,
10797		gridRowStart: true,
10798		lineHeight: true,
10799		opacity: true,
10800		order: true,
10801		orphans: true,
10802		scale: true,
10803		widows: true,
10804		zIndex: true,
10805		zoom: true,
10806
10807		// SVG-related
10808		fillOpacity: true,
10809		floodOpacity: true,
10810		stopOpacity: true,
10811		strokeMiterlimit: true,
10812		strokeOpacity: true
10813	},
10814
10815	// Add in properties whose names you wish to fix before
10816	// setting or getting the value
10817	cssProps: {},
10818
10819	// Get and set the style property on a DOM Node
10820	style: function( elem, name, value, extra ) {
10821
10822		// Don't set styles on text and comment nodes
10823		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
10824			return;
10825		}
10826
10827		// Make sure that we're working with the right name
10828		var ret, type, hooks,
10829			origName = camelCase( name ),
10830			isCustomProp = rcustomProp.test( name ),
10831			style = elem.style;
10832
10833		// Make sure that we're working with the right name. We don't
10834		// want to query the value if it is a CSS custom property
10835		// since they are user-defined.
10836		if ( !isCustomProp ) {
10837			name = finalPropName( origName );
10838		}
10839
10840		// Gets hook for the prefixed version, then unprefixed version
10841		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
10842
10843		// Check if we're setting a value
10844		if ( value !== undefined ) {
10845			type = typeof value;
10846
10847			// Convert "+=" or "-=" to relative numbers (trac-7345)
10848			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
10849				value = adjustCSS( elem, name, ret );
10850
10851				// Fixes bug trac-9237
10852				type = "number";
10853			}
10854
10855			// Make sure that null and NaN values aren't set (trac-7116)
10856			if ( value == null || value !== value ) {
10857				return;
10858			}
10859
10860			// If a number was passed in, add the unit (except for certain CSS properties)
10861			// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
10862			// "px" to a few hardcoded values.
10863			if ( type === "number" && !isCustomProp ) {
10864				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
10865			}
10866
10867			// background-* props affect original clone's values
10868			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
10869				style[ name ] = "inherit";
10870			}
10871
10872			// If a hook was provided, use that value, otherwise just set the specified value
10873			if ( !hooks || !( "set" in hooks ) ||
10874				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
10875
10876				if ( isCustomProp ) {
10877					style.setProperty( name, value );
10878				} else {
10879					style[ name ] = value;
10880				}
10881			}
10882
10883		} else {
10884
10885			// If a hook was provided get the non-computed value from there
10886			if ( hooks && "get" in hooks &&
10887				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
10888
10889				return ret;
10890			}
10891
10892			// Otherwise just get the value from the style object
10893			return style[ name ];
10894		}
10895	},
10896
10897	css: function( elem, name, extra, styles ) {
10898		var val, num, hooks,
10899			origName = camelCase( name ),
10900			isCustomProp = rcustomProp.test( name );
10901
10902		// Make sure that we're working with the right name. We don't
10903		// want to modify the value if it is a CSS custom property
10904		// since they are user-defined.
10905		if ( !isCustomProp ) {
10906			name = finalPropName( origName );
10907		}
10908
10909		// Try prefixed name followed by the unprefixed name
10910		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
10911
10912		// If a hook was provided get the computed value from there
10913		if ( hooks && "get" in hooks ) {
10914			val = hooks.get( elem, true, extra );
10915		}
10916
10917		// Otherwise, if a way to get the computed value exists, use that
10918		if ( val === undefined ) {
10919			val = curCSS( elem, name, styles );
10920		}
10921
10922		// Convert "normal" to computed value
10923		if ( val === "normal" && name in cssNormalTransform ) {
10924			val = cssNormalTransform[ name ];
10925		}
10926
10927		// Make numeric if forced or a qualifier was provided and val looks numeric
10928		if ( extra === "" || extra ) {
10929			num = parseFloat( val );
10930			return extra === true || isFinite( num ) ? num || 0 : val;
10931		}
10932
10933		return val;
10934	}
10935} );
10936
10937jQuery.each( [ "height", "width" ], function( _i, dimension ) {
10938	jQuery.cssHooks[ dimension ] = {
10939		get: function( elem, computed, extra ) {
10940			if ( computed ) {
10941
10942				// Certain elements can have dimension info if we invisibly show them
10943				// but it must have a current display style that would benefit
10944				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
10945
10946					// Support: Safari 8+
10947					// Table columns in Safari have non-zero offsetWidth & zero
10948					// getBoundingClientRect().width unless display is changed.
10949					// Support: IE <=11 only
10950					// Running getBoundingClientRect on a disconnected node
10951					// in IE throws an error.
10952					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
10953					swap( elem, cssShow, function() {
10954						return getWidthOrHeight( elem, dimension, extra );
10955					} ) :
10956					getWidthOrHeight( elem, dimension, extra );
10957			}
10958		},
10959
10960		set: function( elem, value, extra ) {
10961			var matches,
10962				styles = getStyles( elem ),
10963
10964				// Only read styles.position if the test has a chance to fail
10965				// to avoid forcing a reflow.
10966				scrollboxSizeBuggy = !support.scrollboxSize() &&
10967					styles.position === "absolute",
10968
10969				// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
10970				boxSizingNeeded = scrollboxSizeBuggy || extra,
10971				isBorderBox = boxSizingNeeded &&
10972					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
10973				subtract = extra ?
10974					boxModelAdjustment(
10975						elem,
10976						dimension,
10977						extra,
10978						isBorderBox,
10979						styles
10980					) :
10981					0;
10982
10983			// Account for unreliable border-box dimensions by comparing offset* to computed and
10984			// faking a content-box to get border and padding (gh-3699)
10985			if ( isBorderBox && scrollboxSizeBuggy ) {
10986				subtract -= Math.ceil(
10987					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
10988					parseFloat( styles[ dimension ] ) -
10989					boxModelAdjustment( elem, dimension, "border", false, styles ) -
10990					0.5
10991				);
10992			}
10993
10994			// Convert to pixels if value adjustment is needed
10995			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
10996				( matches[ 3 ] || "px" ) !== "px" ) {
10997
10998				elem.style[ dimension ] = value;
10999				value = jQuery.css( elem, dimension );
11000			}
11001
11002			return setPositiveNumber( elem, value, subtract );
11003		}
11004	};
11005} );
11006
11007jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
11008	function( elem, computed ) {
11009		if ( computed ) {
11010			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
11011				elem.getBoundingClientRect().left -
11012					swap( elem, { marginLeft: 0 }, function() {
11013						return elem.getBoundingClientRect().left;
11014					} )
11015			) + "px";
11016		}
11017	}
11018);
11019
11020// These hooks are used by animate to expand properties
11021jQuery.each( {
11022	margin: "",
11023	padding: "",
11024	border: "Width"
11025}, function( prefix, suffix ) {
11026	jQuery.cssHooks[ prefix + suffix ] = {
11027		expand: function( value ) {
11028			var i = 0,
11029				expanded = {},
11030
11031				// Assumes a single number if not a string
11032				parts = typeof value === "string" ? value.split( " " ) : [ value ];
11033
11034			for ( ; i < 4; i++ ) {
11035				expanded[ prefix + cssExpand[ i ] + suffix ] =
11036					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
11037			}
11038
11039			return expanded;
11040		}
11041	};
11042
11043	if ( prefix !== "margin" ) {
11044		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
11045	}
11046} );
11047
11048jQuery.fn.extend( {
11049	css: function( name, value ) {
11050		return access( this, function( elem, name, value ) {
11051			var styles, len,
11052				map = {},
11053				i = 0;
11054
11055			if ( Array.isArray( name ) ) {
11056				styles = getStyles( elem );
11057				len = name.length;
11058
11059				for ( ; i < len; i++ ) {
11060					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
11061				}
11062
11063				return map;
11064			}
11065
11066			return value !== undefined ?
11067				jQuery.style( elem, name, value ) :
11068				jQuery.css( elem, name );
11069		}, name, value, arguments.length > 1 );
11070	}
11071} );
11072
11073
11074function Tween( elem, options, prop, end, easing ) {
11075	return new Tween.prototype.init( elem, options, prop, end, easing );
11076}
11077jQuery.Tween = Tween;
11078
11079Tween.prototype = {
11080	constructor: Tween,
11081	init: function( elem, options, prop, end, easing, unit ) {
11082		this.elem = elem;
11083		this.prop = prop;
11084		this.easing = easing || jQuery.easing._default;
11085		this.options = options;
11086		this.start = this.now = this.cur();
11087		this.end = end;
11088		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
11089	},
11090	cur: function() {
11091		var hooks = Tween.propHooks[ this.prop ];
11092
11093		return hooks && hooks.get ?
11094			hooks.get( this ) :
11095			Tween.propHooks._default.get( this );
11096	},
11097	run: function( percent ) {
11098		var eased,
11099			hooks = Tween.propHooks[ this.prop ];
11100
11101		if ( this.options.duration ) {
11102			this.pos = eased = jQuery.easing[ this.easing ](
11103				percent, this.options.duration * percent, 0, 1, this.options.duration
11104			);
11105		} else {
11106			this.pos = eased = percent;
11107		}
11108		this.now = ( this.end - this.start ) * eased + this.start;
11109
11110		if ( this.options.step ) {
11111			this.options.step.call( this.elem, this.now, this );
11112		}
11113
11114		if ( hooks && hooks.set ) {
11115			hooks.set( this );
11116		} else {
11117			Tween.propHooks._default.set( this );
11118		}
11119		return this;
11120	}
11121};
11122
11123Tween.prototype.init.prototype = Tween.prototype;
11124
11125Tween.propHooks = {
11126	_default: {
11127		get: function( tween ) {
11128			var result;
11129
11130			// Use a property on the element directly when it is not a DOM element,
11131			// or when there is no matching style property that exists.
11132			if ( tween.elem.nodeType !== 1 ||
11133				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
11134				return tween.elem[ tween.prop ];
11135			}
11136
11137			// Passing an empty string as a 3rd parameter to .css will automatically
11138			// attempt a parseFloat and fallback to a string if the parse fails.
11139			// Simple values such as "10px" are parsed to Float;
11140			// complex values such as "rotate(1rad)" are returned as-is.
11141			result = jQuery.css( tween.elem, tween.prop, "" );
11142
11143			// Empty strings, null, undefined and "auto" are converted to 0.
11144			return !result || result === "auto" ? 0 : result;
11145		},
11146		set: function( tween ) {
11147
11148			// Use step hook for back compat.
11149			// Use cssHook if its there.
11150			// Use .style if available and use plain properties where available.
11151			if ( jQuery.fx.step[ tween.prop ] ) {
11152				jQuery.fx.step[ tween.prop ]( tween );
11153			} else if ( tween.elem.nodeType === 1 && (
11154				jQuery.cssHooks[ tween.prop ] ||
11155					tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {
11156				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
11157			} else {
11158				tween.elem[ tween.prop ] = tween.now;
11159			}
11160		}
11161	}
11162};
11163
11164// Support: IE <=9 only
11165// Panic based approach to setting things on disconnected nodes
11166Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
11167	set: function( tween ) {
11168		if ( tween.elem.nodeType && tween.elem.parentNode ) {
11169			tween.elem[ tween.prop ] = tween.now;
11170		}
11171	}
11172};
11173
11174jQuery.easing = {
11175	linear: function( p ) {
11176		return p;
11177	},
11178	swing: function( p ) {
11179		return 0.5 - Math.cos( p * Math.PI ) / 2;
11180	},
11181	_default: "swing"
11182};
11183
11184jQuery.fx = Tween.prototype.init;
11185
11186// Back compat <1.8 extension point
11187jQuery.fx.step = {};
11188
11189
11190
11191
11192var
11193	fxNow, inProgress,
11194	rfxtypes = /^(?:toggle|show|hide)$/,
11195	rrun = /queueHooks$/;
11196
11197function schedule() {
11198	if ( inProgress ) {
11199		if ( document.hidden === false && window.requestAnimationFrame ) {
11200			window.requestAnimationFrame( schedule );
11201		} else {
11202			window.setTimeout( schedule, jQuery.fx.interval );
11203		}
11204
11205		jQuery.fx.tick();
11206	}
11207}
11208
11209// Animations created synchronously will run synchronously
11210function createFxNow() {
11211	window.setTimeout( function() {
11212		fxNow = undefined;
11213	} );
11214	return ( fxNow = Date.now() );
11215}
11216
11217// Generate parameters to create a standard animation
11218function genFx( type, includeWidth ) {
11219	var which,
11220		i = 0,
11221		attrs = { height: type };
11222
11223	// If we include width, step value is 1 to do all cssExpand values,
11224	// otherwise step value is 2 to skip over Left and Right
11225	includeWidth = includeWidth ? 1 : 0;
11226	for ( ; i < 4; i += 2 - includeWidth ) {
11227		which = cssExpand[ i ];
11228		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
11229	}
11230
11231	if ( includeWidth ) {
11232		attrs.opacity = attrs.width = type;
11233	}
11234
11235	return attrs;
11236}
11237
11238function createTween( value, prop, animation ) {
11239	var tween,
11240		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
11241		index = 0,
11242		length = collection.length;
11243	for ( ; index < length; index++ ) {
11244		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
11245
11246			// We're done with this property
11247			return tween;
11248		}
11249	}
11250}
11251
11252function defaultPrefilter( elem, props, opts ) {
11253	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
11254		isBox = "width" in props || "height" in props,
11255		anim = this,
11256		orig = {},
11257		style = elem.style,
11258		hidden = elem.nodeType && isHiddenWithinTree( elem ),
11259		dataShow = dataPriv.get( elem, "fxshow" );
11260
11261	// Queue-skipping animations hijack the fx hooks
11262	if ( !opts.queue ) {
11263		hooks = jQuery._queueHooks( elem, "fx" );
11264		if ( hooks.unqueued == null ) {
11265			hooks.unqueued = 0;
11266			oldfire = hooks.empty.fire;
11267			hooks.empty.fire = function() {
11268				if ( !hooks.unqueued ) {
11269					oldfire();
11270				}
11271			};
11272		}
11273		hooks.unqueued++;
11274
11275		anim.always( function() {
11276
11277			// Ensure the complete handler is called before this completes
11278			anim.always( function() {
11279				hooks.unqueued--;
11280				if ( !jQuery.queue( elem, "fx" ).length ) {
11281					hooks.empty.fire();
11282				}
11283			} );
11284		} );
11285	}
11286
11287	// Detect show/hide animations
11288	for ( prop in props ) {
11289		value = props[ prop ];
11290		if ( rfxtypes.test( value ) ) {
11291			delete props[ prop ];
11292			toggle = toggle || value === "toggle";
11293			if ( value === ( hidden ? "hide" : "show" ) ) {
11294
11295				// Pretend to be hidden if this is a "show" and
11296				// there is still data from a stopped show/hide
11297				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
11298					hidden = true;
11299
11300				// Ignore all other no-op show/hide data
11301				} else {
11302					continue;
11303				}
11304			}
11305			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
11306		}
11307	}
11308
11309	// Bail out if this is a no-op like .hide().hide()
11310	propTween = !jQuery.isEmptyObject( props );
11311	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
11312		return;
11313	}
11314
11315	// Restrict "overflow" and "display" styles during box animations
11316	if ( isBox && elem.nodeType === 1 ) {
11317
11318		// Support: IE <=9 - 11, Edge 12 - 15
11319		// Record all 3 overflow attributes because IE does not infer the shorthand
11320		// from identically-valued overflowX and overflowY and Edge just mirrors
11321		// the overflowX value there.
11322		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
11323
11324		// Identify a display type, preferring old show/hide data over the CSS cascade
11325		restoreDisplay = dataShow && dataShow.display;
11326		if ( restoreDisplay == null ) {
11327			restoreDisplay = dataPriv.get( elem, "display" );
11328		}
11329		display = jQuery.css( elem, "display" );
11330		if ( display === "none" ) {
11331			if ( restoreDisplay ) {
11332				display = restoreDisplay;
11333			} else {
11334
11335				// Get nonempty value(s) by temporarily forcing visibility
11336				showHide( [ elem ], true );
11337				restoreDisplay = elem.style.display || restoreDisplay;
11338				display = jQuery.css( elem, "display" );
11339				showHide( [ elem ] );
11340			}
11341		}
11342
11343		// Animate inline elements as inline-block
11344		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
11345			if ( jQuery.css( elem, "float" ) === "none" ) {
11346
11347				// Restore the original display value at the end of pure show/hide animations
11348				if ( !propTween ) {
11349					anim.done( function() {
11350						style.display = restoreDisplay;
11351					} );
11352					if ( restoreDisplay == null ) {
11353						display = style.display;
11354						restoreDisplay = display === "none" ? "" : display;
11355					}
11356				}
11357				style.display = "inline-block";
11358			}
11359		}
11360	}
11361
11362	if ( opts.overflow ) {
11363		style.overflow = "hidden";
11364		anim.always( function() {
11365			style.overflow = opts.overflow[ 0 ];
11366			style.overflowX = opts.overflow[ 1 ];
11367			style.overflowY = opts.overflow[ 2 ];
11368		} );
11369	}
11370
11371	// Implement show/hide animations
11372	propTween = false;
11373	for ( prop in orig ) {
11374
11375		// General show/hide setup for this element animation
11376		if ( !propTween ) {
11377			if ( dataShow ) {
11378				if ( "hidden" in dataShow ) {
11379					hidden = dataShow.hidden;
11380				}
11381			} else {
11382				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
11383			}
11384
11385			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
11386			if ( toggle ) {
11387				dataShow.hidden = !hidden;
11388			}
11389
11390			// Show elements before animating them
11391			if ( hidden ) {
11392				showHide( [ elem ], true );
11393			}
11394
11395			/* eslint-disable no-loop-func */
11396
11397			anim.done( function() {
11398
11399				/* eslint-enable no-loop-func */
11400
11401				// The final step of a "hide" animation is actually hiding the element
11402				if ( !hidden ) {
11403					showHide( [ elem ] );
11404				}
11405				dataPriv.remove( elem, "fxshow" );
11406				for ( prop in orig ) {
11407					jQuery.style( elem, prop, orig[ prop ] );
11408				}
11409			} );
11410		}
11411
11412		// Per-property setup
11413		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
11414		if ( !( prop in dataShow ) ) {
11415			dataShow[ prop ] = propTween.start;
11416			if ( hidden ) {
11417				propTween.end = propTween.start;
11418				propTween.start = 0;
11419			}
11420		}
11421	}
11422}
11423
11424function propFilter( props, specialEasing ) {
11425	var index, name, easing, value, hooks;
11426
11427	// camelCase, specialEasing and expand cssHook pass
11428	for ( index in props ) {
11429		name = camelCase( index );
11430		easing = specialEasing[ name ];
11431		value = props[ index ];
11432		if ( Array.isArray( value ) ) {
11433			easing = value[ 1 ];
11434			value = props[ index ] = value[ 0 ];
11435		}
11436
11437		if ( index !== name ) {
11438			props[ name ] = value;
11439			delete props[ index ];
11440		}
11441
11442		hooks = jQuery.cssHooks[ name ];
11443		if ( hooks && "expand" in hooks ) {
11444			value = hooks.expand( value );
11445			delete props[ name ];
11446
11447			// Not quite $.extend, this won't overwrite existing keys.
11448			// Reusing 'index' because we have the correct "name"
11449			for ( index in value ) {
11450				if ( !( index in props ) ) {
11451					props[ index ] = value[ index ];
11452					specialEasing[ index ] = easing;
11453				}
11454			}
11455		} else {
11456			specialEasing[ name ] = easing;
11457		}
11458	}
11459}
11460
11461function Animation( elem, properties, options ) {
11462	var result,
11463		stopped,
11464		index = 0,
11465		length = Animation.prefilters.length,
11466		deferred = jQuery.Deferred().always( function() {
11467
11468			// Don't match elem in the :animated selector
11469			delete tick.elem;
11470		} ),
11471		tick = function() {
11472			if ( stopped ) {
11473				return false;
11474			}
11475			var currentTime = fxNow || createFxNow(),
11476				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
11477
11478				// Support: Android 2.3 only
11479				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)
11480				temp = remaining / animation.duration || 0,
11481				percent = 1 - temp,
11482				index = 0,
11483				length = animation.tweens.length;
11484
11485			for ( ; index < length; index++ ) {
11486				animation.tweens[ index ].run( percent );
11487			}
11488
11489			deferred.notifyWith( elem, [ animation, percent, remaining ] );
11490
11491			// If there's more to do, yield
11492			if ( percent < 1 && length ) {
11493				return remaining;
11494			}
11495
11496			// If this was an empty animation, synthesize a final progress notification
11497			if ( !length ) {
11498				deferred.notifyWith( elem, [ animation, 1, 0 ] );
11499			}
11500
11501			// Resolve the animation and report its conclusion
11502			deferred.resolveWith( elem, [ animation ] );
11503			return false;
11504		},
11505		animation = deferred.promise( {
11506			elem: elem,
11507			props: jQuery.extend( {}, properties ),
11508			opts: jQuery.extend( true, {
11509				specialEasing: {},
11510				easing: jQuery.easing._default
11511			}, options ),
11512			originalProperties: properties,
11513			originalOptions: options,
11514			startTime: fxNow || createFxNow(),
11515			duration: options.duration,
11516			tweens: [],
11517			createTween: function( prop, end ) {
11518				var tween = jQuery.Tween( elem, animation.opts, prop, end,
11519					animation.opts.specialEasing[ prop ] || animation.opts.easing );
11520				animation.tweens.push( tween );
11521				return tween;
11522			},
11523			stop: function( gotoEnd ) {
11524				var index = 0,
11525
11526					// If we are going to the end, we want to run all the tweens
11527					// otherwise we skip this part
11528					length = gotoEnd ? animation.tweens.length : 0;
11529				if ( stopped ) {
11530					return this;
11531				}
11532				stopped = true;
11533				for ( ; index < length; index++ ) {
11534					animation.tweens[ index ].run( 1 );
11535				}
11536
11537				// Resolve when we played the last frame; otherwise, reject
11538				if ( gotoEnd ) {
11539					deferred.notifyWith( elem, [ animation, 1, 0 ] );
11540					deferred.resolveWith( elem, [ animation, gotoEnd ] );
11541				} else {
11542					deferred.rejectWith( elem, [ animation, gotoEnd ] );
11543				}
11544				return this;
11545			}
11546		} ),
11547		props = animation.props;
11548
11549	propFilter( props, animation.opts.specialEasing );
11550
11551	for ( ; index < length; index++ ) {
11552		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
11553		if ( result ) {
11554			if ( isFunction( result.stop ) ) {
11555				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
11556					result.stop.bind( result );
11557			}
11558			return result;
11559		}
11560	}
11561
11562	jQuery.map( props, createTween, animation );
11563
11564	if ( isFunction( animation.opts.start ) ) {
11565		animation.opts.start.call( elem, animation );
11566	}
11567
11568	// Attach callbacks from options
11569	animation
11570		.progress( animation.opts.progress )
11571		.done( animation.opts.done, animation.opts.complete )
11572		.fail( animation.opts.fail )
11573		.always( animation.opts.always );
11574
11575	jQuery.fx.timer(
11576		jQuery.extend( tick, {
11577			elem: elem,
11578			anim: animation,
11579			queue: animation.opts.queue
11580		} )
11581	);
11582
11583	return animation;
11584}
11585
11586jQuery.Animation = jQuery.extend( Animation, {
11587
11588	tweeners: {
11589		"*": [ function( prop, value ) {
11590			var tween = this.createTween( prop, value );
11591			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
11592			return tween;
11593		} ]
11594	},
11595
11596	tweener: function( props, callback ) {
11597		if ( isFunction( props ) ) {
11598			callback = props;
11599			props = [ "*" ];
11600		} else {
11601			props = props.match( rnothtmlwhite );
11602		}
11603
11604		var prop,
11605			index = 0,
11606			length = props.length;
11607
11608		for ( ; index < length; index++ ) {
11609			prop = props[ index ];
11610			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
11611			Animation.tweeners[ prop ].unshift( callback );
11612		}
11613	},
11614
11615	prefilters: [ defaultPrefilter ],
11616
11617	prefilter: function( callback, prepend ) {
11618		if ( prepend ) {
11619			Animation.prefilters.unshift( callback );
11620		} else {
11621			Animation.prefilters.push( callback );
11622		}
11623	}
11624} );
11625
11626jQuery.speed = function( speed, easing, fn ) {
11627	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
11628		complete: fn || !fn && easing ||
11629			isFunction( speed ) && speed,
11630		duration: speed,
11631		easing: fn && easing || easing && !isFunction( easing ) && easing
11632	};
11633
11634	// Go to the end state if fx are off
11635	if ( jQuery.fx.off ) {
11636		opt.duration = 0;
11637
11638	} else {
11639		if ( typeof opt.duration !== "number" ) {
11640			if ( opt.duration in jQuery.fx.speeds ) {
11641				opt.duration = jQuery.fx.speeds[ opt.duration ];
11642
11643			} else {
11644				opt.duration = jQuery.fx.speeds._default;
11645			}
11646		}
11647	}
11648
11649	// Normalize opt.queue - true/undefined/null -> "fx"
11650	if ( opt.queue == null || opt.queue === true ) {
11651		opt.queue = "fx";
11652	}
11653
11654	// Queueing
11655	opt.old = opt.complete;
11656
11657	opt.complete = function() {
11658		if ( isFunction( opt.old ) ) {
11659			opt.old.call( this );
11660		}
11661
11662		if ( opt.queue ) {
11663			jQuery.dequeue( this, opt.queue );
11664		}
11665	};
11666
11667	return opt;
11668};
11669
11670jQuery.fn.extend( {
11671	fadeTo: function( speed, to, easing, callback ) {
11672
11673		// Show any hidden elements after setting opacity to 0
11674		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
11675
11676			// Animate to the value specified
11677			.end().animate( { opacity: to }, speed, easing, callback );
11678	},
11679	animate: function( prop, speed, easing, callback ) {
11680		var empty = jQuery.isEmptyObject( prop ),
11681			optall = jQuery.speed( speed, easing, callback ),
11682			doAnimation = function() {
11683
11684				// Operate on a copy of prop so per-property easing won't be lost
11685				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
11686
11687				// Empty animations, or finishing resolves immediately
11688				if ( empty || dataPriv.get( this, "finish" ) ) {
11689					anim.stop( true );
11690				}
11691			};
11692
11693		doAnimation.finish = doAnimation;
11694
11695		return empty || optall.queue === false ?
11696			this.each( doAnimation ) :
11697			this.queue( optall.queue, doAnimation );
11698	},
11699	stop: function( type, clearQueue, gotoEnd ) {
11700		var stopQueue = function( hooks ) {
11701			var stop = hooks.stop;
11702			delete hooks.stop;
11703			stop( gotoEnd );
11704		};
11705
11706		if ( typeof type !== "string" ) {
11707			gotoEnd = clearQueue;
11708			clearQueue = type;
11709			type = undefined;
11710		}
11711		if ( clearQueue ) {
11712			this.queue( type || "fx", [] );
11713		}
11714
11715		return this.each( function() {
11716			var dequeue = true,
11717				index = type != null && type + "queueHooks",
11718				timers = jQuery.timers,
11719				data = dataPriv.get( this );
11720
11721			if ( index ) {
11722				if ( data[ index ] && data[ index ].stop ) {
11723					stopQueue( data[ index ] );
11724				}
11725			} else {
11726				for ( index in data ) {
11727					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
11728						stopQueue( data[ index ] );
11729					}
11730				}
11731			}
11732
11733			for ( index = timers.length; index--; ) {
11734				if ( timers[ index ].elem === this &&
11735					( type == null || timers[ index ].queue === type ) ) {
11736
11737					timers[ index ].anim.stop( gotoEnd );
11738					dequeue = false;
11739					timers.splice( index, 1 );
11740				}
11741			}
11742
11743			// Start the next in the queue if the last step wasn't forced.
11744			// Timers currently will call their complete callbacks, which
11745			// will dequeue but only if they were gotoEnd.
11746			if ( dequeue || !gotoEnd ) {
11747				jQuery.dequeue( this, type );
11748			}
11749		} );
11750	},
11751	finish: function( type ) {
11752		if ( type !== false ) {
11753			type = type || "fx";
11754		}
11755		return this.each( function() {
11756			var index,
11757				data = dataPriv.get( this ),
11758				queue = data[ type + "queue" ],
11759				hooks = data[ type + "queueHooks" ],
11760				timers = jQuery.timers,
11761				length = queue ? queue.length : 0;
11762
11763			// Enable finishing flag on private data
11764			data.finish = true;
11765
11766			// Empty the queue first
11767			jQuery.queue( this, type, [] );
11768
11769			if ( hooks && hooks.stop ) {
11770				hooks.stop.call( this, true );
11771			}
11772
11773			// Look for any active animations, and finish them
11774			for ( index = timers.length; index--; ) {
11775				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
11776					timers[ index ].anim.stop( true );
11777					timers.splice( index, 1 );
11778				}
11779			}
11780
11781			// Look for any animations in the old queue and finish them
11782			for ( index = 0; index < length; index++ ) {
11783				if ( queue[ index ] && queue[ index ].finish ) {
11784					queue[ index ].finish.call( this );
11785				}
11786			}
11787
11788			// Turn off finishing flag
11789			delete data.finish;
11790		} );
11791	}
11792} );
11793
11794jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) {
11795	var cssFn = jQuery.fn[ name ];
11796	jQuery.fn[ name ] = function( speed, easing, callback ) {
11797		return speed == null || typeof speed === "boolean" ?
11798			cssFn.apply( this, arguments ) :
11799			this.animate( genFx( name, true ), speed, easing, callback );
11800	};
11801} );
11802
11803// Generate shortcuts for custom animations
11804jQuery.each( {
11805	slideDown: genFx( "show" ),
11806	slideUp: genFx( "hide" ),
11807	slideToggle: genFx( "toggle" ),
11808	fadeIn: { opacity: "show" },
11809	fadeOut: { opacity: "hide" },
11810	fadeToggle: { opacity: "toggle" }
11811}, function( name, props ) {
11812	jQuery.fn[ name ] = function( speed, easing, callback ) {
11813		return this.animate( props, speed, easing, callback );
11814	};
11815} );
11816
11817jQuery.timers = [];
11818jQuery.fx.tick = function() {
11819	var timer,
11820		i = 0,
11821		timers = jQuery.timers;
11822
11823	fxNow = Date.now();
11824
11825	for ( ; i < timers.length; i++ ) {
11826		timer = timers[ i ];
11827
11828		// Run the timer and safely remove it when done (allowing for external removal)
11829		if ( !timer() && timers[ i ] === timer ) {
11830			timers.splice( i--, 1 );
11831		}
11832	}
11833
11834	if ( !timers.length ) {
11835		jQuery.fx.stop();
11836	}
11837	fxNow = undefined;
11838};
11839
11840jQuery.fx.timer = function( timer ) {
11841	jQuery.timers.push( timer );
11842	jQuery.fx.start();
11843};
11844
11845jQuery.fx.interval = 13;
11846jQuery.fx.start = function() {
11847	if ( inProgress ) {
11848		return;
11849	}
11850
11851	inProgress = true;
11852	schedule();
11853};
11854
11855jQuery.fx.stop = function() {
11856	inProgress = null;
11857};
11858
11859jQuery.fx.speeds = {
11860	slow: 600,
11861	fast: 200,
11862
11863	// Default speed
11864	_default: 400
11865};
11866
11867
11868// Based off of the plugin by Clint Helfers, with permission.
11869jQuery.fn.delay = function( time, type ) {
11870	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
11871	type = type || "fx";
11872
11873	return this.queue( type, function( next, hooks ) {
11874		var timeout = window.setTimeout( next, time );
11875		hooks.stop = function() {
11876			window.clearTimeout( timeout );
11877		};
11878	} );
11879};
11880
11881
11882( function() {
11883	var input = document.createElement( "input" ),
11884		select = document.createElement( "select" ),
11885		opt = select.appendChild( document.createElement( "option" ) );
11886
11887	input.type = "checkbox";
11888
11889	// Support: Android <=4.3 only
11890	// Default value for a checkbox should be "on"
11891	support.checkOn = input.value !== "";
11892
11893	// Support: IE <=11 only
11894	// Must access selectedIndex to make default options select
11895	support.optSelected = opt.selected;
11896
11897	// Support: IE <=11 only
11898	// An input loses its value after becoming a radio
11899	input = document.createElement( "input" );
11900	input.value = "t";
11901	input.type = "radio";
11902	support.radioValue = input.value === "t";
11903} )();
11904
11905
11906var boolHook,
11907	attrHandle = jQuery.expr.attrHandle;
11908
11909jQuery.fn.extend( {
11910	attr: function( name, value ) {
11911		return access( this, jQuery.attr, name, value, arguments.length > 1 );
11912	},
11913
11914	removeAttr: function( name ) {
11915		return this.each( function() {
11916			jQuery.removeAttr( this, name );
11917		} );
11918	}
11919} );
11920
11921jQuery.extend( {
11922	attr: function( elem, name, value ) {
11923		var ret, hooks,
11924			nType = elem.nodeType;
11925
11926		// Don't get/set attributes on text, comment and attribute nodes
11927		if ( nType === 3 || nType === 8 || nType === 2 ) {
11928			return;
11929		}
11930
11931		// Fallback to prop when attributes are not supported
11932		if ( typeof elem.getAttribute === "undefined" ) {
11933			return jQuery.prop( elem, name, value );
11934		}
11935
11936		// Attribute hooks are determined by the lowercase version
11937		// Grab necessary hook if one is defined
11938		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
11939			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
11940				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
11941		}
11942
11943		if ( value !== undefined ) {
11944			if ( value === null ) {
11945				jQuery.removeAttr( elem, name );
11946				return;
11947			}
11948
11949			if ( hooks && "set" in hooks &&
11950				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
11951				return ret;
11952			}
11953
11954			elem.setAttribute( name, value + "" );
11955			return value;
11956		}
11957
11958		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
11959			return ret;
11960		}
11961
11962		ret = jQuery.find.attr( elem, name );
11963
11964		// Non-existent attributes return null, we normalize to undefined
11965		return ret == null ? undefined : ret;
11966	},
11967
11968	attrHooks: {
11969		type: {
11970			set: function( elem, value ) {
11971				if ( !support.radioValue && value === "radio" &&
11972					nodeName( elem, "input" ) ) {
11973					var val = elem.value;
11974					elem.setAttribute( "type", value );
11975					if ( val ) {
11976						elem.value = val;
11977					}
11978					return value;
11979				}
11980			}
11981		}
11982	},
11983
11984	removeAttr: function( elem, value ) {
11985		var name,
11986			i = 0,
11987
11988			// Attribute names can contain non-HTML whitespace characters
11989			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
11990			attrNames = value && value.match( rnothtmlwhite );
11991
11992		if ( attrNames && elem.nodeType === 1 ) {
11993			while ( ( name = attrNames[ i++ ] ) ) {
11994				elem.removeAttribute( name );
11995			}
11996		}
11997	}
11998} );
11999
12000// Hooks for boolean attributes
12001boolHook = {
12002	set: function( elem, value, name ) {
12003		if ( value === false ) {
12004
12005			// Remove boolean attributes when set to false
12006			jQuery.removeAttr( elem, name );
12007		} else {
12008			elem.setAttribute( name, name );
12009		}
12010		return name;
12011	}
12012};
12013
12014jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) {
12015	var getter = attrHandle[ name ] || jQuery.find.attr;
12016
12017	attrHandle[ name ] = function( elem, name, isXML ) {
12018		var ret, handle,
12019			lowercaseName = name.toLowerCase();
12020
12021		if ( !isXML ) {
12022
12023			// Avoid an infinite loop by temporarily removing this function from the getter
12024			handle = attrHandle[ lowercaseName ];
12025			attrHandle[ lowercaseName ] = ret;
12026			ret = getter( elem, name, isXML ) != null ?
12027				lowercaseName :
12028				null;
12029			attrHandle[ lowercaseName ] = handle;
12030		}
12031		return ret;
12032	};
12033} );
12034
12035
12036
12037
12038var rfocusable = /^(?:input|select|textarea|button)$/i,
12039	rclickable = /^(?:a|area)$/i;
12040
12041jQuery.fn.extend( {
12042	prop: function( name, value ) {
12043		return access( this, jQuery.prop, name, value, arguments.length > 1 );
12044	},
12045
12046	removeProp: function( name ) {
12047		return this.each( function() {
12048			delete this[ jQuery.propFix[ name ] || name ];
12049		} );
12050	}
12051} );
12052
12053jQuery.extend( {
12054	prop: function( elem, name, value ) {
12055		var ret, hooks,
12056			nType = elem.nodeType;
12057
12058		// Don't get/set properties on text, comment and attribute nodes
12059		if ( nType === 3 || nType === 8 || nType === 2 ) {
12060			return;
12061		}
12062
12063		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
12064
12065			// Fix name and attach hooks
12066			name = jQuery.propFix[ name ] || name;
12067			hooks = jQuery.propHooks[ name ];
12068		}
12069
12070		if ( value !== undefined ) {
12071			if ( hooks && "set" in hooks &&
12072				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
12073				return ret;
12074			}
12075
12076			return ( elem[ name ] = value );
12077		}
12078
12079		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
12080			return ret;
12081		}
12082
12083		return elem[ name ];
12084	},
12085
12086	propHooks: {
12087		tabIndex: {
12088			get: function( elem ) {
12089
12090				// Support: IE <=9 - 11 only
12091				// elem.tabIndex doesn't always return the
12092				// correct value when it hasn't been explicitly set
12093				// Use proper attribute retrieval (trac-12072)
12094				var tabindex = jQuery.find.attr( elem, "tabindex" );
12095
12096				if ( tabindex ) {
12097					return parseInt( tabindex, 10 );
12098				}
12099
12100				if (
12101					rfocusable.test( elem.nodeName ) ||
12102					rclickable.test( elem.nodeName ) &&
12103					elem.href
12104				) {
12105					return 0;
12106				}
12107
12108				return -1;
12109			}
12110		}
12111	},
12112
12113	propFix: {
12114		"for": "htmlFor",
12115		"class": "className"
12116	}
12117} );
12118
12119// Support: IE <=11 only
12120// Accessing the selectedIndex property
12121// forces the browser to respect setting selected
12122// on the option
12123// The getter ensures a default option is selected
12124// when in an optgroup
12125// eslint rule "no-unused-expressions" is disabled for this code
12126// since it considers such accessions noop
12127if ( !support.optSelected ) {
12128	jQuery.propHooks.selected = {
12129		get: function( elem ) {
12130
12131			/* eslint no-unused-expressions: "off" */
12132
12133			var parent = elem.parentNode;
12134			if ( parent && parent.parentNode ) {
12135				parent.parentNode.selectedIndex;
12136			}
12137			return null;
12138		},
12139		set: function( elem ) {
12140
12141			/* eslint no-unused-expressions: "off" */
12142
12143			var parent = elem.parentNode;
12144			if ( parent ) {
12145				parent.selectedIndex;
12146
12147				if ( parent.parentNode ) {
12148					parent.parentNode.selectedIndex;
12149				}
12150			}
12151		}
12152	};
12153}
12154
12155jQuery.each( [
12156	"tabIndex",
12157	"readOnly",
12158	"maxLength",
12159	"cellSpacing",
12160	"cellPadding",
12161	"rowSpan",
12162	"colSpan",
12163	"useMap",
12164	"frameBorder",
12165	"contentEditable"
12166], function() {
12167	jQuery.propFix[ this.toLowerCase() ] = this;
12168} );
12169
12170
12171
12172
12173	// Strip and collapse whitespace according to HTML spec
12174	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
12175	function stripAndCollapse( value ) {
12176		var tokens = value.match( rnothtmlwhite ) || [];
12177		return tokens.join( " " );
12178	}
12179
12180
12181function getClass( elem ) {
12182	return elem.getAttribute && elem.getAttribute( "class" ) || "";
12183}
12184
12185function classesToArray( value ) {
12186	if ( Array.isArray( value ) ) {
12187		return value;
12188	}
12189	if ( typeof value === "string" ) {
12190		return value.match( rnothtmlwhite ) || [];
12191	}
12192	return [];
12193}
12194
12195jQuery.fn.extend( {
12196	addClass: function( value ) {
12197		var classNames, cur, curValue, className, i, finalValue;
12198
12199		if ( isFunction( value ) ) {
12200			return this.each( function( j ) {
12201				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
12202			} );
12203		}
12204
12205		classNames = classesToArray( value );
12206
12207		if ( classNames.length ) {
12208			return this.each( function() {
12209				curValue = getClass( this );
12210				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
12211
12212				if ( cur ) {
12213					for ( i = 0; i < classNames.length; i++ ) {
12214						className = classNames[ i ];
12215						if ( cur.indexOf( " " + className + " " ) < 0 ) {
12216							cur += className + " ";
12217						}
12218					}
12219
12220					// Only assign if different to avoid unneeded rendering.
12221					finalValue = stripAndCollapse( cur );
12222					if ( curValue !== finalValue ) {
12223						this.setAttribute( "class", finalValue );
12224					}
12225				}
12226			} );
12227		}
12228
12229		return this;
12230	},
12231
12232	removeClass: function( value ) {
12233		var classNames, cur, curValue, className, i, finalValue;
12234
12235		if ( isFunction( value ) ) {
12236			return this.each( function( j ) {
12237				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
12238			} );
12239		}
12240
12241		if ( !arguments.length ) {
12242			return this.attr( "class", "" );
12243		}
12244
12245		classNames = classesToArray( value );
12246
12247		if ( classNames.length ) {
12248			return this.each( function() {
12249				curValue = getClass( this );
12250
12251				// This expression is here for better compressibility (see addClass)
12252				cur = this.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
12253
12254				if ( cur ) {
12255					for ( i = 0; i < classNames.length; i++ ) {
12256						className = classNames[ i ];
12257
12258						// Remove *all* instances
12259						while ( cur.indexOf( " " + className + " " ) > -1 ) {
12260							cur = cur.replace( " " + className + " ", " " );
12261						}
12262					}
12263
12264					// Only assign if different to avoid unneeded rendering.
12265					finalValue = stripAndCollapse( cur );
12266					if ( curValue !== finalValue ) {
12267						this.setAttribute( "class", finalValue );
12268					}
12269				}
12270			} );
12271		}
12272
12273		return this;
12274	},
12275
12276	toggleClass: function( value, stateVal ) {
12277		var classNames, className, i, self,
12278			type = typeof value,
12279			isValidValue = type === "string" || Array.isArray( value );
12280
12281		if ( isFunction( value ) ) {
12282			return this.each( function( i ) {
12283				jQuery( this ).toggleClass(
12284					value.call( this, i, getClass( this ), stateVal ),
12285					stateVal
12286				);
12287			} );
12288		}
12289
12290		if ( typeof stateVal === "boolean" && isValidValue ) {
12291			return stateVal ? this.addClass( value ) : this.removeClass( value );
12292		}
12293
12294		classNames = classesToArray( value );
12295
12296		return this.each( function() {
12297			if ( isValidValue ) {
12298
12299				// Toggle individual class names
12300				self = jQuery( this );
12301
12302				for ( i = 0; i < classNames.length; i++ ) {
12303					className = classNames[ i ];
12304
12305					// Check each className given, space separated list
12306					if ( self.hasClass( className ) ) {
12307						self.removeClass( className );
12308					} else {
12309						self.addClass( className );
12310					}
12311				}
12312
12313			// Toggle whole class name
12314			} else if ( value === undefined || type === "boolean" ) {
12315				className = getClass( this );
12316				if ( className ) {
12317
12318					// Store className if set
12319					dataPriv.set( this, "__className__", className );
12320				}
12321
12322				// If the element has a class name or if we're passed `false`,
12323				// then remove the whole classname (if there was one, the above saved it).
12324				// Otherwise bring back whatever was previously saved (if anything),
12325				// falling back to the empty string if nothing was stored.
12326				if ( this.setAttribute ) {
12327					this.setAttribute( "class",
12328						className || value === false ?
12329							"" :
12330							dataPriv.get( this, "__className__" ) || ""
12331					);
12332				}
12333			}
12334		} );
12335	},
12336
12337	hasClass: function( selector ) {
12338		var className, elem,
12339			i = 0;
12340
12341		className = " " + selector + " ";
12342		while ( ( elem = this[ i++ ] ) ) {
12343			if ( elem.nodeType === 1 &&
12344				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
12345				return true;
12346			}
12347		}
12348
12349		return false;
12350	}
12351} );
12352
12353
12354
12355
12356var rreturn = /\r/g;
12357
12358jQuery.fn.extend( {
12359	val: function( value ) {
12360		var hooks, ret, valueIsFunction,
12361			elem = this[ 0 ];
12362
12363		if ( !arguments.length ) {
12364			if ( elem ) {
12365				hooks = jQuery.valHooks[ elem.type ] ||
12366					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
12367
12368				if ( hooks &&
12369					"get" in hooks &&
12370					( ret = hooks.get( elem, "value" ) ) !== undefined
12371				) {
12372					return ret;
12373				}
12374
12375				ret = elem.value;
12376
12377				// Handle most common string cases
12378				if ( typeof ret === "string" ) {
12379					return ret.replace( rreturn, "" );
12380				}
12381
12382				// Handle cases where value is null/undef or number
12383				return ret == null ? "" : ret;
12384			}
12385
12386			return;
12387		}
12388
12389		valueIsFunction = isFunction( value );
12390
12391		return this.each( function( i ) {
12392			var val;
12393
12394			if ( this.nodeType !== 1 ) {
12395				return;
12396			}
12397
12398			if ( valueIsFunction ) {
12399				val = value.call( this, i, jQuery( this ).val() );
12400			} else {
12401				val = value;
12402			}
12403
12404			// Treat null/undefined as ""; convert numbers to string
12405			if ( val == null ) {
12406				val = "";
12407
12408			} else if ( typeof val === "number" ) {
12409				val += "";
12410
12411			} else if ( Array.isArray( val ) ) {
12412				val = jQuery.map( val, function( value ) {
12413					return value == null ? "" : value + "";
12414				} );
12415			}
12416
12417			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
12418
12419			// If set returns undefined, fall back to normal setting
12420			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
12421				this.value = val;
12422			}
12423		} );
12424	}
12425} );
12426
12427jQuery.extend( {
12428	valHooks: {
12429		option: {
12430			get: function( elem ) {
12431
12432				var val = jQuery.find.attr( elem, "value" );
12433				return val != null ?
12434					val :
12435
12436					// Support: IE <=10 - 11 only
12437					// option.text throws exceptions (trac-14686, trac-14858)
12438					// Strip and collapse whitespace
12439					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
12440					stripAndCollapse( jQuery.text( elem ) );
12441			}
12442		},
12443		select: {
12444			get: function( elem ) {
12445				var value, option, i,
12446					options = elem.options,
12447					index = elem.selectedIndex,
12448					one = elem.type === "select-one",
12449					values = one ? null : [],
12450					max = one ? index + 1 : options.length;
12451
12452				if ( index < 0 ) {
12453					i = max;
12454
12455				} else {
12456					i = one ? index : 0;
12457				}
12458
12459				// Loop through all the selected options
12460				for ( ; i < max; i++ ) {
12461					option = options[ i ];
12462
12463					// Support: IE <=9 only
12464					// IE8-9 doesn't update selected after form reset (trac-2551)
12465					if ( ( option.selected || i === index ) &&
12466
12467							// Don't return options that are disabled or in a disabled optgroup
12468							!option.disabled &&
12469							( !option.parentNode.disabled ||
12470								!nodeName( option.parentNode, "optgroup" ) ) ) {
12471
12472						// Get the specific value for the option
12473						value = jQuery( option ).val();
12474
12475						// We don't need an array for one selects
12476						if ( one ) {
12477							return value;
12478						}
12479
12480						// Multi-Selects return an array
12481						values.push( value );
12482					}
12483				}
12484
12485				return values;
12486			},
12487
12488			set: function( elem, value ) {
12489				var optionSet, option,
12490					options = elem.options,
12491					values = jQuery.makeArray( value ),
12492					i = options.length;
12493
12494				while ( i-- ) {
12495					option = options[ i ];
12496
12497					/* eslint-disable no-cond-assign */
12498
12499					if ( option.selected =
12500						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
12501					) {
12502						optionSet = true;
12503					}
12504
12505					/* eslint-enable no-cond-assign */
12506				}
12507
12508				// Force browsers to behave consistently when non-matching value is set
12509				if ( !optionSet ) {
12510					elem.selectedIndex = -1;
12511				}
12512				return values;
12513			}
12514		}
12515	}
12516} );
12517
12518// Radios and checkboxes getter/setter
12519jQuery.each( [ "radio", "checkbox" ], function() {
12520	jQuery.valHooks[ this ] = {
12521		set: function( elem, value ) {
12522			if ( Array.isArray( value ) ) {
12523				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
12524			}
12525		}
12526	};
12527	if ( !support.checkOn ) {
12528		jQuery.valHooks[ this ].get = function( elem ) {
12529			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
12530		};
12531	}
12532} );
12533
12534
12535
12536
12537// Return jQuery for attributes-only inclusion
12538var location = window.location;
12539
12540var nonce = { guid: Date.now() };
12541
12542var rquery = ( /\?/ );
12543
12544
12545
12546// Cross-browser xml parsing
12547jQuery.parseXML = function( data ) {
12548	var xml, parserErrorElem;
12549	if ( !data || typeof data !== "string" ) {
12550		return null;
12551	}
12552
12553	// Support: IE 9 - 11 only
12554	// IE throws on parseFromString with invalid input.
12555	try {
12556		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
12557	} catch ( e ) {}
12558
12559	parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ];
12560	if ( !xml || parserErrorElem ) {
12561		jQuery.error( "Invalid XML: " + (
12562			parserErrorElem ?
12563				jQuery.map( parserErrorElem.childNodes, function( el ) {
12564					return el.textContent;
12565				} ).join( "\n" ) :
12566				data
12567		) );
12568	}
12569	return xml;
12570};
12571
12572
12573var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
12574	stopPropagationCallback = function( e ) {
12575		e.stopPropagation();
12576	};
12577
12578jQuery.extend( jQuery.event, {
12579
12580	trigger: function( event, data, elem, onlyHandlers ) {
12581
12582		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
12583			eventPath = [ elem || document ],
12584			type = hasOwn.call( event, "type" ) ? event.type : event,
12585			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
12586
12587		cur = lastElement = tmp = elem = elem || document;
12588
12589		// Don't do events on text and comment nodes
12590		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
12591			return;
12592		}
12593
12594		// focus/blur morphs to focusin/out; ensure we're not firing them right now
12595		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
12596			return;
12597		}
12598
12599		if ( type.indexOf( "." ) > -1 ) {
12600
12601			// Namespaced trigger; create a regexp to match event type in handle()
12602			namespaces = type.split( "." );
12603			type = namespaces.shift();
12604			namespaces.sort();
12605		}
12606		ontype = type.indexOf( ":" ) < 0 && "on" + type;
12607
12608		// Caller can pass in a jQuery.Event object, Object, or just an event type string
12609		event = event[ jQuery.expando ] ?
12610			event :
12611			new jQuery.Event( type, typeof event === "object" && event );
12612
12613		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
12614		event.isTrigger = onlyHandlers ? 2 : 3;
12615		event.namespace = namespaces.join( "." );
12616		event.rnamespace = event.namespace ?
12617			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
12618			null;
12619
12620		// Clean up the event in case it is being reused
12621		event.result = undefined;
12622		if ( !event.target ) {
12623			event.target = elem;
12624		}
12625
12626		// Clone any incoming data and prepend the event, creating the handler arg list
12627		data = data == null ?
12628			[ event ] :
12629			jQuery.makeArray( data, [ event ] );
12630
12631		// Allow special events to draw outside the lines
12632		special = jQuery.event.special[ type ] || {};
12633		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
12634			return;
12635		}
12636
12637		// Determine event propagation path in advance, per W3C events spec (trac-9951)
12638		// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)
12639		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
12640
12641			bubbleType = special.delegateType || type;
12642			if ( !rfocusMorph.test( bubbleType + type ) ) {
12643				cur = cur.parentNode;
12644			}
12645			for ( ; cur; cur = cur.parentNode ) {
12646				eventPath.push( cur );
12647				tmp = cur;
12648			}
12649
12650			// Only add window if we got to document (e.g., not plain obj or detached DOM)
12651			if ( tmp === ( elem.ownerDocument || document ) ) {
12652				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
12653			}
12654		}
12655
12656		// Fire handlers on the event path
12657		i = 0;
12658		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
12659			lastElement = cur;
12660			event.type = i > 1 ?
12661				bubbleType :
12662				special.bindType || type;
12663
12664			// jQuery handler
12665			handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] &&
12666				dataPriv.get( cur, "handle" );
12667			if ( handle ) {
12668				handle.apply( cur, data );
12669			}
12670
12671			// Native handler
12672			handle = ontype && cur[ ontype ];
12673			if ( handle && handle.apply && acceptData( cur ) ) {
12674				event.result = handle.apply( cur, data );
12675				if ( event.result === false ) {
12676					event.preventDefault();
12677				}
12678			}
12679		}
12680		event.type = type;
12681
12682		// If nobody prevented the default action, do it now
12683		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
12684
12685			if ( ( !special._default ||
12686				special._default.apply( eventPath.pop(), data ) === false ) &&
12687				acceptData( elem ) ) {
12688
12689				// Call a native DOM method on the target with the same name as the event.
12690				// Don't do default actions on window, that's where global variables be (trac-6170)
12691				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
12692
12693					// Don't re-trigger an onFOO event when we call its FOO() method
12694					tmp = elem[ ontype ];
12695
12696					if ( tmp ) {
12697						elem[ ontype ] = null;
12698					}
12699
12700					// Prevent re-triggering of the same event, since we already bubbled it above
12701					jQuery.event.triggered = type;
12702
12703					if ( event.isPropagationStopped() ) {
12704						lastElement.addEventListener( type, stopPropagationCallback );
12705					}
12706
12707					elem[ type ]();
12708
12709					if ( event.isPropagationStopped() ) {
12710						lastElement.removeEventListener( type, stopPropagationCallback );
12711					}
12712
12713					jQuery.event.triggered = undefined;
12714
12715					if ( tmp ) {
12716						elem[ ontype ] = tmp;
12717					}
12718				}
12719			}
12720		}
12721
12722		return event.result;
12723	},
12724
12725	// Piggyback on a donor event to simulate a different one
12726	// Used only for `focus(in | out)` events
12727	simulate: function( type, elem, event ) {
12728		var e = jQuery.extend(
12729			new jQuery.Event(),
12730			event,
12731			{
12732				type: type,
12733				isSimulated: true
12734			}
12735		);
12736
12737		jQuery.event.trigger( e, null, elem );
12738	}
12739
12740} );
12741
12742jQuery.fn.extend( {
12743
12744	trigger: function( type, data ) {
12745		return this.each( function() {
12746			jQuery.event.trigger( type, data, this );
12747		} );
12748	},
12749	triggerHandler: function( type, data ) {
12750		var elem = this[ 0 ];
12751		if ( elem ) {
12752			return jQuery.event.trigger( type, data, elem, true );
12753		}
12754	}
12755} );
12756
12757
12758var
12759	rbracket = /\[\]$/,
12760	rCRLF = /\r?\n/g,
12761	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
12762	rsubmittable = /^(?:input|select|textarea|keygen)/i;
12763
12764function buildParams( prefix, obj, traditional, add ) {
12765	var name;
12766
12767	if ( Array.isArray( obj ) ) {
12768
12769		// Serialize array item.
12770		jQuery.each( obj, function( i, v ) {
12771			if ( traditional || rbracket.test( prefix ) ) {
12772
12773				// Treat each array item as a scalar.
12774				add( prefix, v );
12775
12776			} else {
12777
12778				// Item is non-scalar (array or object), encode its numeric index.
12779				buildParams(
12780					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
12781					v,
12782					traditional,
12783					add
12784				);
12785			}
12786		} );
12787
12788	} else if ( !traditional && toType( obj ) === "object" ) {
12789
12790		// Serialize object item.
12791		for ( name in obj ) {
12792			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
12793		}
12794
12795	} else {
12796
12797		// Serialize scalar item.
12798		add( prefix, obj );
12799	}
12800}
12801
12802// Serialize an array of form elements or a set of
12803// key/values into a query string
12804jQuery.param = function( a, traditional ) {
12805	var prefix,
12806		s = [],
12807		add = function( key, valueOrFunction ) {
12808
12809			// If value is a function, invoke it and use its return value
12810			var value = isFunction( valueOrFunction ) ?
12811				valueOrFunction() :
12812				valueOrFunction;
12813
12814			s[ s.length ] = encodeURIComponent( key ) + "=" +
12815				encodeURIComponent( value == null ? "" : value );
12816		};
12817
12818	if ( a == null ) {
12819		return "";
12820	}
12821
12822	// If an array was passed in, assume that it is an array of form elements.
12823	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
12824
12825		// Serialize the form elements
12826		jQuery.each( a, function() {
12827			add( this.name, this.value );
12828		} );
12829
12830	} else {
12831
12832		// If traditional, encode the "old" way (the way 1.3.2 or older
12833		// did it), otherwise encode params recursively.
12834		for ( prefix in a ) {
12835			buildParams( prefix, a[ prefix ], traditional, add );
12836		}
12837	}
12838
12839	// Return the resulting serialization
12840	return s.join( "&" );
12841};
12842
12843jQuery.fn.extend( {
12844	serialize: function() {
12845		return jQuery.param( this.serializeArray() );
12846	},
12847	serializeArray: function() {
12848		return this.map( function() {
12849
12850			// Can add propHook for "elements" to filter or add form elements
12851			var elements = jQuery.prop( this, "elements" );
12852			return elements ? jQuery.makeArray( elements ) : this;
12853		} ).filter( function() {
12854			var type = this.type;
12855
12856			// Use .is( ":disabled" ) so that fieldset[disabled] works
12857			return this.name && !jQuery( this ).is( ":disabled" ) &&
12858				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
12859				( this.checked || !rcheckableType.test( type ) );
12860		} ).map( function( _i, elem ) {
12861			var val = jQuery( this ).val();
12862
12863			if ( val == null ) {
12864				return null;
12865			}
12866
12867			if ( Array.isArray( val ) ) {
12868				return jQuery.map( val, function( val ) {
12869					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
12870				} );
12871			}
12872
12873			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
12874		} ).get();
12875	}
12876} );
12877
12878
12879var
12880	r20 = /%20/g,
12881	rhash = /#.*$/,
12882	rantiCache = /([?&])_=[^&]*/,
12883	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
12884
12885	// trac-7653, trac-8125, trac-8152: local protocol detection
12886	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
12887	rnoContent = /^(?:GET|HEAD)$/,
12888	rprotocol = /^\/\//,
12889
12890	/* Prefilters
12891	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
12892	 * 2) These are called:
12893	 *    - BEFORE asking for a transport
12894	 *    - AFTER param serialization (s.data is a string if s.processData is true)
12895	 * 3) key is the dataType
12896	 * 4) the catchall symbol "*" can be used
12897	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
12898	 */
12899	prefilters = {},
12900
12901	/* Transports bindings
12902	 * 1) key is the dataType
12903	 * 2) the catchall symbol "*" can be used
12904	 * 3) selection will start with transport dataType and THEN go to "*" if needed
12905	 */
12906	transports = {},
12907
12908	// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression
12909	allTypes = "*/".concat( "*" ),
12910
12911	// Anchor tag for parsing the document origin
12912	originAnchor = document.createElement( "a" );
12913
12914originAnchor.href = location.href;
12915
12916// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
12917function addToPrefiltersOrTransports( structure ) {
12918
12919	// dataTypeExpression is optional and defaults to "*"
12920	return function( dataTypeExpression, func ) {
12921
12922		if ( typeof dataTypeExpression !== "string" ) {
12923			func = dataTypeExpression;
12924			dataTypeExpression = "*";
12925		}
12926
12927		var dataType,
12928			i = 0,
12929			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
12930
12931		if ( isFunction( func ) ) {
12932
12933			// For each dataType in the dataTypeExpression
12934			while ( ( dataType = dataTypes[ i++ ] ) ) {
12935
12936				// Prepend if requested
12937				if ( dataType[ 0 ] === "+" ) {
12938					dataType = dataType.slice( 1 ) || "*";
12939					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
12940
12941				// Otherwise append
12942				} else {
12943					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
12944				}
12945			}
12946		}
12947	};
12948}
12949
12950// Base inspection function for prefilters and transports
12951function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
12952
12953	var inspected = {},
12954		seekingTransport = ( structure === transports );
12955
12956	function inspect( dataType ) {
12957		var selected;
12958		inspected[ dataType ] = true;
12959		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
12960			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
12961			if ( typeof dataTypeOrTransport === "string" &&
12962				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
12963
12964				options.dataTypes.unshift( dataTypeOrTransport );
12965				inspect( dataTypeOrTransport );
12966				return false;
12967			} else if ( seekingTransport ) {
12968				return !( selected = dataTypeOrTransport );
12969			}
12970		} );
12971		return selected;
12972	}
12973
12974	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
12975}
12976
12977// A special extend for ajax options
12978// that takes "flat" options (not to be deep extended)
12979// Fixes trac-9887
12980function ajaxExtend( target, src ) {
12981	var key, deep,
12982		flatOptions = jQuery.ajaxSettings.flatOptions || {};
12983
12984	for ( key in src ) {
12985		if ( src[ key ] !== undefined ) {
12986			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
12987		}
12988	}
12989	if ( deep ) {
12990		jQuery.extend( true, target, deep );
12991	}
12992
12993	return target;
12994}
12995
12996/* Handles responses to an ajax request:
12997 * - finds the right dataType (mediates between content-type and expected dataType)
12998 * - returns the corresponding response
12999 */
13000function ajaxHandleResponses( s, jqXHR, responses ) {
13001
13002	var ct, type, finalDataType, firstDataType,
13003		contents = s.contents,
13004		dataTypes = s.dataTypes;
13005
13006	// Remove auto dataType and get content-type in the process
13007	while ( dataTypes[ 0 ] === "*" ) {
13008		dataTypes.shift();
13009		if ( ct === undefined ) {
13010			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
13011		}
13012	}
13013
13014	// Check if we're dealing with a known content-type
13015	if ( ct ) {
13016		for ( type in contents ) {
13017			if ( contents[ type ] && contents[ type ].test( ct ) ) {
13018				dataTypes.unshift( type );
13019				break;
13020			}
13021		}
13022	}
13023
13024	// Check to see if we have a response for the expected dataType
13025	if ( dataTypes[ 0 ] in responses ) {
13026		finalDataType = dataTypes[ 0 ];
13027	} else {
13028
13029		// Try convertible dataTypes
13030		for ( type in responses ) {
13031			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
13032				finalDataType = type;
13033				break;
13034			}
13035			if ( !firstDataType ) {
13036				firstDataType = type;
13037			}
13038		}
13039
13040		// Or just use first one
13041		finalDataType = finalDataType || firstDataType;
13042	}
13043
13044	// If we found a dataType
13045	// We add the dataType to the list if needed
13046	// and return the corresponding response
13047	if ( finalDataType ) {
13048		if ( finalDataType !== dataTypes[ 0 ] ) {
13049			dataTypes.unshift( finalDataType );
13050		}
13051		return responses[ finalDataType ];
13052	}
13053}
13054
13055/* Chain conversions given the request and the original response
13056 * Also sets the responseXXX fields on the jqXHR instance
13057 */
13058function ajaxConvert( s, response, jqXHR, isSuccess ) {
13059	var conv2, current, conv, tmp, prev,
13060		converters = {},
13061
13062		// Work with a copy of dataTypes in case we need to modify it for conversion
13063		dataTypes = s.dataTypes.slice();
13064
13065	// Create converters map with lowercased keys
13066	if ( dataTypes[ 1 ] ) {
13067		for ( conv in s.converters ) {
13068			converters[ conv.toLowerCase() ] = s.converters[ conv ];
13069		}
13070	}
13071
13072	current = dataTypes.shift();
13073
13074	// Convert to each sequential dataType
13075	while ( current ) {
13076
13077		if ( s.responseFields[ current ] ) {
13078			jqXHR[ s.responseFields[ current ] ] = response;
13079		}
13080
13081		// Apply the dataFilter if provided
13082		if ( !prev && isSuccess && s.dataFilter ) {
13083			response = s.dataFilter( response, s.dataType );
13084		}
13085
13086		prev = current;
13087		current = dataTypes.shift();
13088
13089		if ( current ) {
13090
13091			// There's only work to do if current dataType is non-auto
13092			if ( current === "*" ) {
13093
13094				current = prev;
13095
13096			// Convert response if prev dataType is non-auto and differs from current
13097			} else if ( prev !== "*" && prev !== current ) {
13098
13099				// Seek a direct converter
13100				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
13101
13102				// If none found, seek a pair
13103				if ( !conv ) {
13104					for ( conv2 in converters ) {
13105
13106						// If conv2 outputs current
13107						tmp = conv2.split( " " );
13108						if ( tmp[ 1 ] === current ) {
13109
13110							// If prev can be converted to accepted input
13111							conv = converters[ prev + " " + tmp[ 0 ] ] ||
13112								converters[ "* " + tmp[ 0 ] ];
13113							if ( conv ) {
13114
13115								// Condense equivalence converters
13116								if ( conv === true ) {
13117									conv = converters[ conv2 ];
13118
13119								// Otherwise, insert the intermediate dataType
13120								} else if ( converters[ conv2 ] !== true ) {
13121									current = tmp[ 0 ];
13122									dataTypes.unshift( tmp[ 1 ] );
13123								}
13124								break;
13125							}
13126						}
13127					}
13128				}
13129
13130				// Apply converter (if not an equivalence)
13131				if ( conv !== true ) {
13132
13133					// Unless errors are allowed to bubble, catch and return them
13134					if ( conv && s.throws ) {
13135						response = conv( response );
13136					} else {
13137						try {
13138							response = conv( response );
13139						} catch ( e ) {
13140							return {
13141								state: "parsererror",
13142								error: conv ? e : "No conversion from " + prev + " to " + current
13143							};
13144						}
13145					}
13146				}
13147			}
13148		}
13149	}
13150
13151	return { state: "success", data: response };
13152}
13153
13154jQuery.extend( {
13155
13156	// Counter for holding the number of active queries
13157	active: 0,
13158
13159	// Last-Modified header cache for next request
13160	lastModified: {},
13161	etag: {},
13162
13163	ajaxSettings: {
13164		url: location.href,
13165		type: "GET",
13166		isLocal: rlocalProtocol.test( location.protocol ),
13167		global: true,
13168		processData: true,
13169		async: true,
13170		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
13171
13172		/*
13173		timeout: 0,
13174		data: null,
13175		dataType: null,
13176		username: null,
13177		password: null,
13178		cache: null,
13179		throws: false,
13180		traditional: false,
13181		headers: {},
13182		*/
13183
13184		accepts: {
13185			"*": allTypes,
13186			text: "text/plain",
13187			html: "text/html",
13188			xml: "application/xml, text/xml",
13189			json: "application/json, text/javascript"
13190		},
13191
13192		contents: {
13193			xml: /\bxml\b/,
13194			html: /\bhtml/,
13195			json: /\bjson\b/
13196		},
13197
13198		responseFields: {
13199			xml: "responseXML",
13200			text: "responseText",
13201			json: "responseJSON"
13202		},
13203
13204		// Data converters
13205		// Keys separate source (or catchall "*") and destination types with a single space
13206		converters: {
13207
13208			// Convert anything to text
13209			"* text": String,
13210
13211			// Text to html (true = no transformation)
13212			"text html": true,
13213
13214			// Evaluate text as a json expression
13215			"text json": JSON.parse,
13216
13217			// Parse text as xml
13218			"text xml": jQuery.parseXML
13219		},
13220
13221		// For options that shouldn't be deep extended:
13222		// you can add your own custom options here if
13223		// and when you create one that shouldn't be
13224		// deep extended (see ajaxExtend)
13225		flatOptions: {
13226			url: true,
13227			context: true
13228		}
13229	},
13230
13231	// Creates a full fledged settings object into target
13232	// with both ajaxSettings and settings fields.
13233	// If target is omitted, writes into ajaxSettings.
13234	ajaxSetup: function( target, settings ) {
13235		return settings ?
13236
13237			// Building a settings object
13238			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
13239
13240			// Extending ajaxSettings
13241			ajaxExtend( jQuery.ajaxSettings, target );
13242	},
13243
13244	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
13245	ajaxTransport: addToPrefiltersOrTransports( transports ),
13246
13247	// Main method
13248	ajax: function( url, options ) {
13249
13250		// If url is an object, simulate pre-1.5 signature
13251		if ( typeof url === "object" ) {
13252			options = url;
13253			url = undefined;
13254		}
13255
13256		// Force options to be an object
13257		options = options || {};
13258
13259		var transport,
13260
13261			// URL without anti-cache param
13262			cacheURL,
13263
13264			// Response headers
13265			responseHeadersString,
13266			responseHeaders,
13267
13268			// timeout handle
13269			timeoutTimer,
13270
13271			// Url cleanup var
13272			urlAnchor,
13273
13274			// Request state (becomes false upon send and true upon completion)
13275			completed,
13276
13277			// To know if global events are to be dispatched
13278			fireGlobals,
13279
13280			// Loop variable
13281			i,
13282
13283			// uncached part of the url
13284			uncached,
13285
13286			// Create the final options object
13287			s = jQuery.ajaxSetup( {}, options ),
13288
13289			// Callbacks context
13290			callbackContext = s.context || s,
13291
13292			// Context for global events is callbackContext if it is a DOM node or jQuery collection
13293			globalEventContext = s.context &&
13294				( callbackContext.nodeType || callbackContext.jquery ) ?
13295				jQuery( callbackContext ) :
13296				jQuery.event,
13297
13298			// Deferreds
13299			deferred = jQuery.Deferred(),
13300			completeDeferred = jQuery.Callbacks( "once memory" ),
13301
13302			// Status-dependent callbacks
13303			statusCode = s.statusCode || {},
13304
13305			// Headers (they are sent all at once)
13306			requestHeaders = {},
13307			requestHeadersNames = {},
13308
13309			// Default abort message
13310			strAbort = "canceled",
13311
13312			// Fake xhr
13313			jqXHR = {
13314				readyState: 0,
13315
13316				// Builds headers hashtable if needed
13317				getResponseHeader: function( key ) {
13318					var match;
13319					if ( completed ) {
13320						if ( !responseHeaders ) {
13321							responseHeaders = {};
13322							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
13323								responseHeaders[ match[ 1 ].toLowerCase() + " " ] =
13324									( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] )
13325										.concat( match[ 2 ] );
13326							}
13327						}
13328						match = responseHeaders[ key.toLowerCase() + " " ];
13329					}
13330					return match == null ? null : match.join( ", " );
13331				},
13332
13333				// Raw string
13334				getAllResponseHeaders: function() {
13335					return completed ? responseHeadersString : null;
13336				},
13337
13338				// Caches the header
13339				setRequestHeader: function( name, value ) {
13340					if ( completed == null ) {
13341						name = requestHeadersNames[ name.toLowerCase() ] =
13342							requestHeadersNames[ name.toLowerCase() ] || name;
13343						requestHeaders[ name ] = value;
13344					}
13345					return this;
13346				},
13347
13348				// Overrides response content-type header
13349				overrideMimeType: function( type ) {
13350					if ( completed == null ) {
13351						s.mimeType = type;
13352					}
13353					return this;
13354				},
13355
13356				// Status-dependent callbacks
13357				statusCode: function( map ) {
13358					var code;
13359					if ( map ) {
13360						if ( completed ) {
13361
13362							// Execute the appropriate callbacks
13363							jqXHR.always( map[ jqXHR.status ] );
13364						} else {
13365
13366							// Lazy-add the new callbacks in a way that preserves old ones
13367							for ( code in map ) {
13368								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
13369							}
13370						}
13371					}
13372					return this;
13373				},
13374
13375				// Cancel the request
13376				abort: function( statusText ) {
13377					var finalText = statusText || strAbort;
13378					if ( transport ) {
13379						transport.abort( finalText );
13380					}
13381					done( 0, finalText );
13382					return this;
13383				}
13384			};
13385
13386		// Attach deferreds
13387		deferred.promise( jqXHR );
13388
13389		// Add protocol if not provided (prefilters might expect it)
13390		// Handle falsy url in the settings object (trac-10093: consistency with old signature)
13391		// We also use the url parameter if available
13392		s.url = ( ( url || s.url || location.href ) + "" )
13393			.replace( rprotocol, location.protocol + "//" );
13394
13395		// Alias method option to type as per ticket trac-12004
13396		s.type = options.method || options.type || s.method || s.type;
13397
13398		// Extract dataTypes list
13399		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
13400
13401		// A cross-domain request is in order when the origin doesn't match the current origin.
13402		if ( s.crossDomain == null ) {
13403			urlAnchor = document.createElement( "a" );
13404
13405			// Support: IE <=8 - 11, Edge 12 - 15
13406			// IE throws exception on accessing the href property if url is malformed,
13407			// e.g. http://example.com:80x/
13408			try {
13409				urlAnchor.href = s.url;
13410
13411				// Support: IE <=8 - 11 only
13412				// Anchor's host property isn't correctly set when s.url is relative
13413				urlAnchor.href = urlAnchor.href;
13414				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
13415					urlAnchor.protocol + "//" + urlAnchor.host;
13416			} catch ( e ) {
13417
13418				// If there is an error parsing the URL, assume it is crossDomain,
13419				// it can be rejected by the transport if it is invalid
13420				s.crossDomain = true;
13421			}
13422		}
13423
13424		// Convert data if not already a string
13425		if ( s.data && s.processData && typeof s.data !== "string" ) {
13426			s.data = jQuery.param( s.data, s.traditional );
13427		}
13428
13429		// Apply prefilters
13430		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
13431
13432		// If request was aborted inside a prefilter, stop there
13433		if ( completed ) {
13434			return jqXHR;
13435		}
13436
13437		// We can fire global events as of now if asked to
13438		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)
13439		fireGlobals = jQuery.event && s.global;
13440
13441		// Watch for a new set of requests
13442		if ( fireGlobals && jQuery.active++ === 0 ) {
13443			jQuery.event.trigger( "ajaxStart" );
13444		}
13445
13446		// Uppercase the type
13447		s.type = s.type.toUpperCase();
13448
13449		// Determine if request has content
13450		s.hasContent = !rnoContent.test( s.type );
13451
13452		// Save the URL in case we're toying with the If-Modified-Since
13453		// and/or If-None-Match header later on
13454		// Remove hash to simplify url manipulation
13455		cacheURL = s.url.replace( rhash, "" );
13456
13457		// More options handling for requests with no content
13458		if ( !s.hasContent ) {
13459
13460			// Remember the hash so we can put it back
13461			uncached = s.url.slice( cacheURL.length );
13462
13463			// If data is available and should be processed, append data to url
13464			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
13465				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
13466
13467				// trac-9682: remove data so that it's not used in an eventual retry
13468				delete s.data;
13469			}
13470
13471			// Add or update anti-cache param if needed
13472			if ( s.cache === false ) {
13473				cacheURL = cacheURL.replace( rantiCache, "$1" );
13474				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) +
13475					uncached;
13476			}
13477
13478			// Put hash and anti-cache on the URL that will be requested (gh-1732)
13479			s.url = cacheURL + uncached;
13480
13481		// Change '%20' to '+' if this is encoded form body content (gh-2658)
13482		} else if ( s.data && s.processData &&
13483			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
13484			s.data = s.data.replace( r20, "+" );
13485		}
13486
13487		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
13488		if ( s.ifModified ) {
13489			if ( jQuery.lastModified[ cacheURL ] ) {
13490				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
13491			}
13492			if ( jQuery.etag[ cacheURL ] ) {
13493				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
13494			}
13495		}
13496
13497		// Set the correct header, if data is being sent
13498		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
13499			jqXHR.setRequestHeader( "Content-Type", s.contentType );
13500		}
13501
13502		// Set the Accepts header for the server, depending on the dataType
13503		jqXHR.setRequestHeader(
13504			"Accept",
13505			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
13506				s.accepts[ s.dataTypes[ 0 ] ] +
13507					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
13508				s.accepts[ "*" ]
13509		);
13510
13511		// Check for headers option
13512		for ( i in s.headers ) {
13513			jqXHR.setRequestHeader( i, s.headers[ i ] );
13514		}
13515
13516		// Allow custom headers/mimetypes and early abort
13517		if ( s.beforeSend &&
13518			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
13519
13520			// Abort if not done already and return
13521			return jqXHR.abort();
13522		}
13523
13524		// Aborting is no longer a cancellation
13525		strAbort = "abort";
13526
13527		// Install callbacks on deferreds
13528		completeDeferred.add( s.complete );
13529		jqXHR.done( s.success );
13530		jqXHR.fail( s.error );
13531
13532		// Get transport
13533		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
13534
13535		// If no transport, we auto-abort
13536		if ( !transport ) {
13537			done( -1, "No Transport" );
13538		} else {
13539			jqXHR.readyState = 1;
13540
13541			// Send global event
13542			if ( fireGlobals ) {
13543				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
13544			}
13545
13546			// If request was aborted inside ajaxSend, stop there
13547			if ( completed ) {
13548				return jqXHR;
13549			}
13550
13551			// Timeout
13552			if ( s.async && s.timeout > 0 ) {
13553				timeoutTimer = window.setTimeout( function() {
13554					jqXHR.abort( "timeout" );
13555				}, s.timeout );
13556			}
13557
13558			try {
13559				completed = false;
13560				transport.send( requestHeaders, done );
13561			} catch ( e ) {
13562
13563				// Rethrow post-completion exceptions
13564				if ( completed ) {
13565					throw e;
13566				}
13567
13568				// Propagate others as results
13569				done( -1, e );
13570			}
13571		}
13572
13573		// Callback for when everything is done
13574		function done( status, nativeStatusText, responses, headers ) {
13575			var isSuccess, success, error, response, modified,
13576				statusText = nativeStatusText;
13577
13578			// Ignore repeat invocations
13579			if ( completed ) {
13580				return;
13581			}
13582
13583			completed = true;
13584
13585			// Clear timeout if it exists
13586			if ( timeoutTimer ) {
13587				window.clearTimeout( timeoutTimer );
13588			}
13589
13590			// Dereference transport for early garbage collection
13591			// (no matter how long the jqXHR object will be used)
13592			transport = undefined;
13593
13594			// Cache response headers
13595			responseHeadersString = headers || "";
13596
13597			// Set readyState
13598			jqXHR.readyState = status > 0 ? 4 : 0;
13599
13600			// Determine if successful
13601			isSuccess = status >= 200 && status < 300 || status === 304;
13602
13603			// Get response data
13604			if ( responses ) {
13605				response = ajaxHandleResponses( s, jqXHR, responses );
13606			}
13607
13608			// Use a noop converter for missing script but not if jsonp
13609			if ( !isSuccess &&
13610				jQuery.inArray( "script", s.dataTypes ) > -1 &&
13611				jQuery.inArray( "json", s.dataTypes ) < 0 ) {
13612				s.converters[ "text script" ] = function() {};
13613			}
13614
13615			// Convert no matter what (that way responseXXX fields are always set)
13616			response = ajaxConvert( s, response, jqXHR, isSuccess );
13617
13618			// If successful, handle type chaining
13619			if ( isSuccess ) {
13620
13621				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
13622				if ( s.ifModified ) {
13623					modified = jqXHR.getResponseHeader( "Last-Modified" );
13624					if ( modified ) {
13625						jQuery.lastModified[ cacheURL ] = modified;
13626					}
13627					modified = jqXHR.getResponseHeader( "etag" );
13628					if ( modified ) {
13629						jQuery.etag[ cacheURL ] = modified;
13630					}
13631				}
13632
13633				// if no content
13634				if ( status === 204 || s.type === "HEAD" ) {
13635					statusText = "nocontent";
13636
13637				// if not modified
13638				} else if ( status === 304 ) {
13639					statusText = "notmodified";
13640
13641				// If we have data, let's convert it
13642				} else {
13643					statusText = response.state;
13644					success = response.data;
13645					error = response.error;
13646					isSuccess = !error;
13647				}
13648			} else {
13649
13650				// Extract error from statusText and normalize for non-aborts
13651				error = statusText;
13652				if ( status || !statusText ) {
13653					statusText = "error";
13654					if ( status < 0 ) {
13655						status = 0;
13656					}
13657				}
13658			}
13659
13660			// Set data for the fake xhr object
13661			jqXHR.status = status;
13662			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
13663
13664			// Success/Error
13665			if ( isSuccess ) {
13666				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
13667			} else {
13668				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
13669			}
13670
13671			// Status-dependent callbacks
13672			jqXHR.statusCode( statusCode );
13673			statusCode = undefined;
13674
13675			if ( fireGlobals ) {
13676				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
13677					[ jqXHR, s, isSuccess ? success : error ] );
13678			}
13679
13680			// Complete
13681			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
13682
13683			if ( fireGlobals ) {
13684				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
13685
13686				// Handle the global AJAX counter
13687				if ( !( --jQuery.active ) ) {
13688					jQuery.event.trigger( "ajaxStop" );
13689				}
13690			}
13691		}
13692
13693		return jqXHR;
13694	},
13695
13696	getJSON: function( url, data, callback ) {
13697		return jQuery.get( url, data, callback, "json" );
13698	},
13699
13700	getScript: function( url, callback ) {
13701		return jQuery.get( url, undefined, callback, "script" );
13702	}
13703} );
13704
13705jQuery.each( [ "get", "post" ], function( _i, method ) {
13706	jQuery[ method ] = function( url, data, callback, type ) {
13707
13708		// Shift arguments if data argument was omitted
13709		if ( isFunction( data ) ) {
13710			type = type || callback;
13711			callback = data;
13712			data = undefined;
13713		}
13714
13715		// The url can be an options object (which then must have .url)
13716		return jQuery.ajax( jQuery.extend( {
13717			url: url,
13718			type: method,
13719			dataType: type,
13720			data: data,
13721			success: callback
13722		}, jQuery.isPlainObject( url ) && url ) );
13723	};
13724} );
13725
13726jQuery.ajaxPrefilter( function( s ) {
13727	var i;
13728	for ( i in s.headers ) {
13729		if ( i.toLowerCase() === "content-type" ) {
13730			s.contentType = s.headers[ i ] || "";
13731		}
13732	}
13733} );
13734
13735
13736jQuery._evalUrl = function( url, options, doc ) {
13737	return jQuery.ajax( {
13738		url: url,
13739
13740		// Make this explicit, since user can override this through ajaxSetup (trac-11264)
13741		type: "GET",
13742		dataType: "script",
13743		cache: true,
13744		async: false,
13745		global: false,
13746
13747		// Only evaluate the response if it is successful (gh-4126)
13748		// dataFilter is not invoked for failure responses, so using it instead
13749		// of the default converter is kludgy but it works.
13750		converters: {
13751			"text script": function() {}
13752		},
13753		dataFilter: function( response ) {
13754			jQuery.globalEval( response, options, doc );
13755		}
13756	} );
13757};
13758
13759
13760jQuery.fn.extend( {
13761	wrapAll: function( html ) {
13762		var wrap;
13763
13764		if ( this[ 0 ] ) {
13765			if ( isFunction( html ) ) {
13766				html = html.call( this[ 0 ] );
13767			}
13768
13769			// The elements to wrap the target around
13770			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
13771
13772			if ( this[ 0 ].parentNode ) {
13773				wrap.insertBefore( this[ 0 ] );
13774			}
13775
13776			wrap.map( function() {
13777				var elem = this;
13778
13779				while ( elem.firstElementChild ) {
13780					elem = elem.firstElementChild;
13781				}
13782
13783				return elem;
13784			} ).append( this );
13785		}
13786
13787		return this;
13788	},
13789
13790	wrapInner: function( html ) {
13791		if ( isFunction( html ) ) {
13792			return this.each( function( i ) {
13793				jQuery( this ).wrapInner( html.call( this, i ) );
13794			} );
13795		}
13796
13797		return this.each( function() {
13798			var self = jQuery( this ),
13799				contents = self.contents();
13800
13801			if ( contents.length ) {
13802				contents.wrapAll( html );
13803
13804			} else {
13805				self.append( html );
13806			}
13807		} );
13808	},
13809
13810	wrap: function( html ) {
13811		var htmlIsFunction = isFunction( html );
13812
13813		return this.each( function( i ) {
13814			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
13815		} );
13816	},
13817
13818	unwrap: function( selector ) {
13819		this.parent( selector ).not( "body" ).each( function() {
13820			jQuery( this ).replaceWith( this.childNodes );
13821		} );
13822		return this;
13823	}
13824} );
13825
13826
13827jQuery.expr.pseudos.hidden = function( elem ) {
13828	return !jQuery.expr.pseudos.visible( elem );
13829};
13830jQuery.expr.pseudos.visible = function( elem ) {
13831	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
13832};
13833
13834
13835
13836
13837jQuery.ajaxSettings.xhr = function() {
13838	try {
13839		return new window.XMLHttpRequest();
13840	} catch ( e ) {}
13841};
13842
13843var xhrSuccessStatus = {
13844
13845		// File protocol always yields status code 0, assume 200
13846		0: 200,
13847
13848		// Support: IE <=9 only
13849		// trac-1450: sometimes IE returns 1223 when it should be 204
13850		1223: 204
13851	},
13852	xhrSupported = jQuery.ajaxSettings.xhr();
13853
13854support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
13855support.ajax = xhrSupported = !!xhrSupported;
13856
13857jQuery.ajaxTransport( function( options ) {
13858	var callback, errorCallback;
13859
13860	// Cross domain only allowed if supported through XMLHttpRequest
13861	if ( support.cors || xhrSupported && !options.crossDomain ) {
13862		return {
13863			send: function( headers, complete ) {
13864				var i,
13865					xhr = options.xhr();
13866
13867				xhr.open(
13868					options.type,
13869					options.url,
13870					options.async,
13871					options.username,
13872					options.password
13873				);
13874
13875				// Apply custom fields if provided
13876				if ( options.xhrFields ) {
13877					for ( i in options.xhrFields ) {
13878						xhr[ i ] = options.xhrFields[ i ];
13879					}
13880				}
13881
13882				// Override mime type if needed
13883				if ( options.mimeType && xhr.overrideMimeType ) {
13884					xhr.overrideMimeType( options.mimeType );
13885				}
13886
13887				// X-Requested-With header
13888				// For cross-domain requests, seeing as conditions for a preflight are
13889				// akin to a jigsaw puzzle, we simply never set it to be sure.
13890				// (it can always be set on a per-request basis or even using ajaxSetup)
13891				// For same-domain requests, won't change header if already provided.
13892				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
13893					headers[ "X-Requested-With" ] = "XMLHttpRequest";
13894				}
13895
13896				// Set headers
13897				for ( i in headers ) {
13898					xhr.setRequestHeader( i, headers[ i ] );
13899				}
13900
13901				// Callback
13902				callback = function( type ) {
13903					return function() {
13904						if ( callback ) {
13905							callback = errorCallback = xhr.onload =
13906								xhr.onerror = xhr.onabort = xhr.ontimeout =
13907									xhr.onreadystatechange = null;
13908
13909							if ( type === "abort" ) {
13910								xhr.abort();
13911							} else if ( type === "error" ) {
13912
13913								// Support: IE <=9 only
13914								// On a manual native abort, IE9 throws
13915								// errors on any property access that is not readyState
13916								if ( typeof xhr.status !== "number" ) {
13917									complete( 0, "error" );
13918								} else {
13919									complete(
13920
13921										// File: protocol always yields status 0; see trac-8605, trac-14207
13922										xhr.status,
13923										xhr.statusText
13924									);
13925								}
13926							} else {
13927								complete(
13928									xhrSuccessStatus[ xhr.status ] || xhr.status,
13929									xhr.statusText,
13930
13931									// Support: IE <=9 only
13932									// IE9 has no XHR2 but throws on binary (trac-11426)
13933									// For XHR2 non-text, let the caller handle it (gh-2498)
13934									( xhr.responseType || "text" ) !== "text"  ||
13935									typeof xhr.responseText !== "string" ?
13936										{ binary: xhr.response } :
13937										{ text: xhr.responseText },
13938									xhr.getAllResponseHeaders()
13939								);
13940							}
13941						}
13942					};
13943				};
13944
13945				// Listen to events
13946				xhr.onload = callback();
13947				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
13948
13949				// Support: IE 9 only
13950				// Use onreadystatechange to replace onabort
13951				// to handle uncaught aborts
13952				if ( xhr.onabort !== undefined ) {
13953					xhr.onabort = errorCallback;
13954				} else {
13955					xhr.onreadystatechange = function() {
13956
13957						// Check readyState before timeout as it changes
13958						if ( xhr.readyState === 4 ) {
13959
13960							// Allow onerror to be called first,
13961							// but that will not handle a native abort
13962							// Also, save errorCallback to a variable
13963							// as xhr.onerror cannot be accessed
13964							window.setTimeout( function() {
13965								if ( callback ) {
13966									errorCallback();
13967								}
13968							} );
13969						}
13970					};
13971				}
13972
13973				// Create the abort callback
13974				callback = callback( "abort" );
13975
13976				try {
13977
13978					// Do send the request (this may raise an exception)
13979					xhr.send( options.hasContent && options.data || null );
13980				} catch ( e ) {
13981
13982					// trac-14683: Only rethrow if this hasn't been notified as an error yet
13983					if ( callback ) {
13984						throw e;
13985					}
13986				}
13987			},
13988
13989			abort: function() {
13990				if ( callback ) {
13991					callback();
13992				}
13993			}
13994		};
13995	}
13996} );
13997
13998
13999
14000
14001// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
14002jQuery.ajaxPrefilter( function( s ) {
14003	if ( s.crossDomain ) {
14004		s.contents.script = false;
14005	}
14006} );
14007
14008// Install script dataType
14009jQuery.ajaxSetup( {
14010	accepts: {
14011		script: "text/javascript, application/javascript, " +
14012			"application/ecmascript, application/x-ecmascript"
14013	},
14014	contents: {
14015		script: /\b(?:java|ecma)script\b/
14016	},
14017	converters: {
14018		"text script": function( text ) {
14019			jQuery.globalEval( text );
14020			return text;
14021		}
14022	}
14023} );
14024
14025// Handle cache's special case and crossDomain
14026jQuery.ajaxPrefilter( "script", function( s ) {
14027	if ( s.cache === undefined ) {
14028		s.cache = false;
14029	}
14030	if ( s.crossDomain ) {
14031		s.type = "GET";
14032	}
14033} );
14034
14035// Bind script tag hack transport
14036jQuery.ajaxTransport( "script", function( s ) {
14037
14038	// This transport only deals with cross domain or forced-by-attrs requests
14039	if ( s.crossDomain || s.scriptAttrs ) {
14040		var script, callback;
14041		return {
14042			send: function( _, complete ) {
14043				script = jQuery( "<script>" )
14044					.attr( s.scriptAttrs || {} )
14045					.prop( { charset: s.scriptCharset, src: s.url } )
14046					.on( "load error", callback = function( evt ) {
14047						script.remove();
14048						callback = null;
14049						if ( evt ) {
14050							complete( evt.type === "error" ? 404 : 200, evt.type );
14051						}
14052					} );
14053
14054				// Use native DOM manipulation to avoid our domManip AJAX trickery
14055				document.head.appendChild( script[ 0 ] );
14056			},
14057			abort: function() {
14058				if ( callback ) {
14059					callback();
14060				}
14061			}
14062		};
14063	}
14064} );
14065
14066
14067
14068
14069var oldCallbacks = [],
14070	rjsonp = /(=)\?(?=&|$)|\?\?/;
14071
14072// Default jsonp settings
14073jQuery.ajaxSetup( {
14074	jsonp: "callback",
14075	jsonpCallback: function() {
14076		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) );
14077		this[ callback ] = true;
14078		return callback;
14079	}
14080} );
14081
14082// Detect, normalize options and install callbacks for jsonp requests
14083jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
14084
14085	var callbackName, overwritten, responseContainer,
14086		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
14087			"url" :
14088			typeof s.data === "string" &&
14089				( s.contentType || "" )
14090					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
14091				rjsonp.test( s.data ) && "data"
14092		);
14093
14094	// Handle iff the expected data type is "jsonp" or we have a parameter to set
14095	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
14096
14097		// Get callback name, remembering preexisting value associated with it
14098		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
14099			s.jsonpCallback() :
14100			s.jsonpCallback;
14101
14102		// Insert callback into url or form data
14103		if ( jsonProp ) {
14104			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
14105		} else if ( s.jsonp !== false ) {
14106			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
14107		}
14108
14109		// Use data converter to retrieve json after script execution
14110		s.converters[ "script json" ] = function() {
14111			if ( !responseContainer ) {
14112				jQuery.error( callbackName + " was not called" );
14113			}
14114			return responseContainer[ 0 ];
14115		};
14116
14117		// Force json dataType
14118		s.dataTypes[ 0 ] = "json";
14119
14120		// Install callback
14121		overwritten = window[ callbackName ];
14122		window[ callbackName ] = function() {
14123			responseContainer = arguments;
14124		};
14125
14126		// Clean-up function (fires after converters)
14127		jqXHR.always( function() {
14128
14129			// If previous value didn't exist - remove it
14130			if ( overwritten === undefined ) {
14131				jQuery( window ).removeProp( callbackName );
14132
14133			// Otherwise restore preexisting value
14134			} else {
14135				window[ callbackName ] = overwritten;
14136			}
14137
14138			// Save back as free
14139			if ( s[ callbackName ] ) {
14140
14141				// Make sure that re-using the options doesn't screw things around
14142				s.jsonpCallback = originalSettings.jsonpCallback;
14143
14144				// Save the callback name for future use
14145				oldCallbacks.push( callbackName );
14146			}
14147
14148			// Call if it was a function and we have a response
14149			if ( responseContainer && isFunction( overwritten ) ) {
14150				overwritten( responseContainer[ 0 ] );
14151			}
14152
14153			responseContainer = overwritten = undefined;
14154		} );
14155
14156		// Delegate to script
14157		return "script";
14158	}
14159} );
14160
14161
14162
14163
14164// Support: Safari 8 only
14165// In Safari 8 documents created via document.implementation.createHTMLDocument
14166// collapse sibling forms: the second one becomes a child of the first one.
14167// Because of that, this security measure has to be disabled in Safari 8.
14168// https://bugs.webkit.org/show_bug.cgi?id=137337
14169support.createHTMLDocument = ( function() {
14170	var body = document.implementation.createHTMLDocument( "" ).body;
14171	body.innerHTML = "<form></form><form></form>";
14172	return body.childNodes.length === 2;
14173} )();
14174
14175
14176// Argument "data" should be string of html
14177// context (optional): If specified, the fragment will be created in this context,
14178// defaults to document
14179// keepScripts (optional): If true, will include scripts passed in the html string
14180jQuery.parseHTML = function( data, context, keepScripts ) {
14181	if ( typeof data !== "string" ) {
14182		return [];
14183	}
14184	if ( typeof context === "boolean" ) {
14185		keepScripts = context;
14186		context = false;
14187	}
14188
14189	var base, parsed, scripts;
14190
14191	if ( !context ) {
14192
14193		// Stop scripts or inline event handlers from being executed immediately
14194		// by using document.implementation
14195		if ( support.createHTMLDocument ) {
14196			context = document.implementation.createHTMLDocument( "" );
14197
14198			// Set the base href for the created document
14199			// so any parsed elements with URLs
14200			// are based on the document's URL (gh-2965)
14201			base = context.createElement( "base" );
14202			base.href = document.location.href;
14203			context.head.appendChild( base );
14204		} else {
14205			context = document;
14206		}
14207	}
14208
14209	parsed = rsingleTag.exec( data );
14210	scripts = !keepScripts && [];
14211
14212	// Single tag
14213	if ( parsed ) {
14214		return [ context.createElement( parsed[ 1 ] ) ];
14215	}
14216
14217	parsed = buildFragment( [ data ], context, scripts );
14218
14219	if ( scripts && scripts.length ) {
14220		jQuery( scripts ).remove();
14221	}
14222
14223	return jQuery.merge( [], parsed.childNodes );
14224};
14225
14226
14227/**
14228 * Load a url into a page
14229 */
14230jQuery.fn.load = function( url, params, callback ) {
14231	var selector, type, response,
14232		self = this,
14233		off = url.indexOf( " " );
14234
14235	if ( off > -1 ) {
14236		selector = stripAndCollapse( url.slice( off ) );
14237		url = url.slice( 0, off );
14238	}
14239
14240	// If it's a function
14241	if ( isFunction( params ) ) {
14242
14243		// We assume that it's the callback
14244		callback = params;
14245		params = undefined;
14246
14247	// Otherwise, build a param string
14248	} else if ( params && typeof params === "object" ) {
14249		type = "POST";
14250	}
14251
14252	// If we have elements to modify, make the request
14253	if ( self.length > 0 ) {
14254		jQuery.ajax( {
14255			url: url,
14256
14257			// If "type" variable is undefined, then "GET" method will be used.
14258			// Make value of this field explicit since
14259			// user can override it through ajaxSetup method
14260			type: type || "GET",
14261			dataType: "html",
14262			data: params
14263		} ).done( function( responseText ) {
14264
14265			// Save response for use in complete callback
14266			response = arguments;
14267
14268			self.html( selector ?
14269
14270				// If a selector was specified, locate the right elements in a dummy div
14271				// Exclude scripts to avoid IE 'Permission Denied' errors
14272				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
14273
14274				// Otherwise use the full result
14275				responseText );
14276
14277		// If the request succeeds, this function gets "data", "status", "jqXHR"
14278		// but they are ignored because response was set above.
14279		// If it fails, this function gets "jqXHR", "status", "error"
14280		} ).always( callback && function( jqXHR, status ) {
14281			self.each( function() {
14282				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
14283			} );
14284		} );
14285	}
14286
14287	return this;
14288};
14289
14290
14291
14292
14293jQuery.expr.pseudos.animated = function( elem ) {
14294	return jQuery.grep( jQuery.timers, function( fn ) {
14295		return elem === fn.elem;
14296	} ).length;
14297};
14298
14299
14300
14301
14302jQuery.offset = {
14303	setOffset: function( elem, options, i ) {
14304		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
14305			position = jQuery.css( elem, "position" ),
14306			curElem = jQuery( elem ),
14307			props = {};
14308
14309		// Set position first, in-case top/left are set even on static elem
14310		if ( position === "static" ) {
14311			elem.style.position = "relative";
14312		}
14313
14314		curOffset = curElem.offset();
14315		curCSSTop = jQuery.css( elem, "top" );
14316		curCSSLeft = jQuery.css( elem, "left" );
14317		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
14318			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
14319
14320		// Need to be able to calculate position if either
14321		// top or left is auto and position is either absolute or fixed
14322		if ( calculatePosition ) {
14323			curPosition = curElem.position();
14324			curTop = curPosition.top;
14325			curLeft = curPosition.left;
14326
14327		} else {
14328			curTop = parseFloat( curCSSTop ) || 0;
14329			curLeft = parseFloat( curCSSLeft ) || 0;
14330		}
14331
14332		if ( isFunction( options ) ) {
14333
14334			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
14335			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
14336		}
14337
14338		if ( options.top != null ) {
14339			props.top = ( options.top - curOffset.top ) + curTop;
14340		}
14341		if ( options.left != null ) {
14342			props.left = ( options.left - curOffset.left ) + curLeft;
14343		}
14344
14345		if ( "using" in options ) {
14346			options.using.call( elem, props );
14347
14348		} else {
14349			curElem.css( props );
14350		}
14351	}
14352};
14353
14354jQuery.fn.extend( {
14355
14356	// offset() relates an element's border box to the document origin
14357	offset: function( options ) {
14358
14359		// Preserve chaining for setter
14360		if ( arguments.length ) {
14361			return options === undefined ?
14362				this :
14363				this.each( function( i ) {
14364					jQuery.offset.setOffset( this, options, i );
14365				} );
14366		}
14367
14368		var rect, win,
14369			elem = this[ 0 ];
14370
14371		if ( !elem ) {
14372			return;
14373		}
14374
14375		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
14376		// Support: IE <=11 only
14377		// Running getBoundingClientRect on a
14378		// disconnected node in IE throws an error
14379		if ( !elem.getClientRects().length ) {
14380			return { top: 0, left: 0 };
14381		}
14382
14383		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
14384		rect = elem.getBoundingClientRect();
14385		win = elem.ownerDocument.defaultView;
14386		return {
14387			top: rect.top + win.pageYOffset,
14388			left: rect.left + win.pageXOffset
14389		};
14390	},
14391
14392	// position() relates an element's margin box to its offset parent's padding box
14393	// This corresponds to the behavior of CSS absolute positioning
14394	position: function() {
14395		if ( !this[ 0 ] ) {
14396			return;
14397		}
14398
14399		var offsetParent, offset, doc,
14400			elem = this[ 0 ],
14401			parentOffset = { top: 0, left: 0 };
14402
14403		// position:fixed elements are offset from the viewport, which itself always has zero offset
14404		if ( jQuery.css( elem, "position" ) === "fixed" ) {
14405
14406			// Assume position:fixed implies availability of getBoundingClientRect
14407			offset = elem.getBoundingClientRect();
14408
14409		} else {
14410			offset = this.offset();
14411
14412			// Account for the *real* offset parent, which can be the document or its root element
14413			// when a statically positioned element is identified
14414			doc = elem.ownerDocument;
14415			offsetParent = elem.offsetParent || doc.documentElement;
14416			while ( offsetParent &&
14417				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
14418				jQuery.css( offsetParent, "position" ) === "static" ) {
14419
14420				offsetParent = offsetParent.parentNode;
14421			}
14422			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
14423
14424				// Incorporate borders into its offset, since they are outside its content origin
14425				parentOffset = jQuery( offsetParent ).offset();
14426				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
14427				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
14428			}
14429		}
14430
14431		// Subtract parent offsets and element margins
14432		return {
14433			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
14434			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
14435		};
14436	},
14437
14438	// This method will return documentElement in the following cases:
14439	// 1) For the element inside the iframe without offsetParent, this method will return
14440	//    documentElement of the parent window
14441	// 2) For the hidden or detached element
14442	// 3) For body or html element, i.e. in case of the html node - it will return itself
14443	//
14444	// but those exceptions were never presented as a real life use-cases
14445	// and might be considered as more preferable results.
14446	//
14447	// This logic, however, is not guaranteed and can change at any point in the future
14448	offsetParent: function() {
14449		return this.map( function() {
14450			var offsetParent = this.offsetParent;
14451
14452			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
14453				offsetParent = offsetParent.offsetParent;
14454			}
14455
14456			return offsetParent || documentElement;
14457		} );
14458	}
14459} );
14460
14461// Create scrollLeft and scrollTop methods
14462jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
14463	var top = "pageYOffset" === prop;
14464
14465	jQuery.fn[ method ] = function( val ) {
14466		return access( this, function( elem, method, val ) {
14467
14468			// Coalesce documents and windows
14469			var win;
14470			if ( isWindow( elem ) ) {
14471				win = elem;
14472			} else if ( elem.nodeType === 9 ) {
14473				win = elem.defaultView;
14474			}
14475
14476			if ( val === undefined ) {
14477				return win ? win[ prop ] : elem[ method ];
14478			}
14479
14480			if ( win ) {
14481				win.scrollTo(
14482					!top ? val : win.pageXOffset,
14483					top ? val : win.pageYOffset
14484				);
14485
14486			} else {
14487				elem[ method ] = val;
14488			}
14489		}, method, val, arguments.length );
14490	};
14491} );
14492
14493// Support: Safari <=7 - 9.1, Chrome <=37 - 49
14494// Add the top/left cssHooks using jQuery.fn.position
14495// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
14496// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
14497// getComputedStyle returns percent when specified for top/left/bottom/right;
14498// rather than make the css module depend on the offset module, just check for it here
14499jQuery.each( [ "top", "left" ], function( _i, prop ) {
14500	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
14501		function( elem, computed ) {
14502			if ( computed ) {
14503				computed = curCSS( elem, prop );
14504
14505				// If curCSS returns percentage, fallback to offset
14506				return rnumnonpx.test( computed ) ?
14507					jQuery( elem ).position()[ prop ] + "px" :
14508					computed;
14509			}
14510		}
14511	);
14512} );
14513
14514
14515// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
14516jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
14517	jQuery.each( {
14518		padding: "inner" + name,
14519		content: type,
14520		"": "outer" + name
14521	}, function( defaultExtra, funcName ) {
14522
14523		// Margin is only for outerHeight, outerWidth
14524		jQuery.fn[ funcName ] = function( margin, value ) {
14525			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
14526				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
14527
14528			return access( this, function( elem, type, value ) {
14529				var doc;
14530
14531				if ( isWindow( elem ) ) {
14532
14533					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
14534					return funcName.indexOf( "outer" ) === 0 ?
14535						elem[ "inner" + name ] :
14536						elem.document.documentElement[ "client" + name ];
14537				}
14538
14539				// Get document width or height
14540				if ( elem.nodeType === 9 ) {
14541					doc = elem.documentElement;
14542
14543					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
14544					// whichever is greatest
14545					return Math.max(
14546						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
14547						elem.body[ "offset" + name ], doc[ "offset" + name ],
14548						doc[ "client" + name ]
14549					);
14550				}
14551
14552				return value === undefined ?
14553
14554					// Get width or height on the element, requesting but not forcing parseFloat
14555					jQuery.css( elem, type, extra ) :
14556
14557					// Set width or height on the element
14558					jQuery.style( elem, type, value, extra );
14559			}, type, chainable ? margin : undefined, chainable );
14560		};
14561	} );
14562} );
14563
14564
14565jQuery.each( [
14566	"ajaxStart",
14567	"ajaxStop",
14568	"ajaxComplete",
14569	"ajaxError",
14570	"ajaxSuccess",
14571	"ajaxSend"
14572], function( _i, type ) {
14573	jQuery.fn[ type ] = function( fn ) {
14574		return this.on( type, fn );
14575	};
14576} );
14577
14578
14579
14580
14581jQuery.fn.extend( {
14582
14583	bind: function( types, data, fn ) {
14584		return this.on( types, null, data, fn );
14585	},
14586	unbind: function( types, fn ) {
14587		return this.off( types, null, fn );
14588	},
14589
14590	delegate: function( selector, types, data, fn ) {
14591		return this.on( types, selector, data, fn );
14592	},
14593	undelegate: function( selector, types, fn ) {
14594
14595		// ( namespace ) or ( selector, types [, fn] )
14596		return arguments.length === 1 ?
14597			this.off( selector, "**" ) :
14598			this.off( types, selector || "**", fn );
14599	},
14600
14601	hover: function( fnOver, fnOut ) {
14602		return this
14603			.on( "mouseenter", fnOver )
14604			.on( "mouseleave", fnOut || fnOver );
14605	}
14606} );
14607
14608jQuery.each(
14609	( "blur focus focusin focusout resize scroll click dblclick " +
14610	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
14611	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
14612	function( _i, name ) {
14613
14614		// Handle event binding
14615		jQuery.fn[ name ] = function( data, fn ) {
14616			return arguments.length > 0 ?
14617				this.on( name, null, data, fn ) :
14618				this.trigger( name );
14619		};
14620	}
14621);
14622
14623
14624
14625
14626// Support: Android <=4.0 only
14627// Make sure we trim BOM and NBSP
14628// Require that the "whitespace run" starts from a non-whitespace
14629// to avoid O(N^2) behavior when the engine would try matching "\s+$" at each space position.
14630var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
14631
14632// Bind a function to a context, optionally partially applying any
14633// arguments.
14634// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
14635// However, it is not slated for removal any time soon
14636jQuery.proxy = function( fn, context ) {
14637	var tmp, args, proxy;
14638
14639	if ( typeof context === "string" ) {
14640		tmp = fn[ context ];
14641		context = fn;
14642		fn = tmp;
14643	}
14644
14645	// Quick check to determine if target is callable, in the spec
14646	// this throws a TypeError, but we will just return undefined.
14647	if ( !isFunction( fn ) ) {
14648		return undefined;
14649	}
14650
14651	// Simulated bind
14652	args = slice.call( arguments, 2 );
14653	proxy = function() {
14654		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
14655	};
14656
14657	// Set the guid of unique handler to the same of original handler, so it can be removed
14658	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
14659
14660	return proxy;
14661};
14662
14663jQuery.holdReady = function( hold ) {
14664	if ( hold ) {
14665		jQuery.readyWait++;
14666	} else {
14667		jQuery.ready( true );
14668	}
14669};
14670jQuery.isArray = Array.isArray;
14671jQuery.parseJSON = JSON.parse;
14672jQuery.nodeName = nodeName;
14673jQuery.isFunction = isFunction;
14674jQuery.isWindow = isWindow;
14675jQuery.camelCase = camelCase;
14676jQuery.type = toType;
14677
14678jQuery.now = Date.now;
14679
14680jQuery.isNumeric = function( obj ) {
14681
14682	// As of jQuery 3.0, isNumeric is limited to
14683	// strings and numbers (primitives or objects)
14684	// that can be coerced to finite numbers (gh-2662)
14685	var type = jQuery.type( obj );
14686	return ( type === "number" || type === "string" ) &&
14687
14688		// parseFloat NaNs numeric-cast false positives ("")
14689		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
14690		// subtraction forces infinities to NaN
14691		!isNaN( obj - parseFloat( obj ) );
14692};
14693
14694jQuery.trim = function( text ) {
14695	return text == null ?
14696		"" :
14697		( text + "" ).replace( rtrim, "$1" );
14698};
14699
14700
14701
14702// Register as a named AMD module, since jQuery can be concatenated with other
14703// files that may use define, but not via a proper concatenation script that
14704// understands anonymous AMD modules. A named AMD is safest and most robust
14705// way to register. Lowercase jquery is used because AMD module names are
14706// derived from file names, and jQuery is normally delivered in a lowercase
14707// file name. Do this after creating the global so that if an AMD module wants
14708// to call noConflict to hide this version of jQuery, it will work.
14709
14710// Note that for maximum portability, libraries that are not jQuery should
14711// declare themselves as anonymous modules, and avoid setting a global if an
14712// AMD loader is present. jQuery is a special case. For more information, see
14713// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
14714
14715if ( true ) {
14716	!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function() {
14717		return jQuery;
14718	}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
14719		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
14720}
14721
14722
14723
14724
14725var
14726
14727	// Map over jQuery in case of overwrite
14728	_jQuery = window.jQuery,
14729
14730	// Map over the $ in case of overwrite
14731	_$ = window.$;
14732
14733jQuery.noConflict = function( deep ) {
14734	if ( window.$ === jQuery ) {
14735		window.$ = _$;
14736	}
14737
14738	if ( deep && window.jQuery === jQuery ) {
14739		window.jQuery = _jQuery;
14740	}
14741
14742	return jQuery;
14743};
14744
14745// Expose jQuery and $ identifiers, even in AMD
14746// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)
14747// and CommonJS for browser emulators (trac-13566)
14748if ( typeof noGlobal === "undefined" ) {
14749	window.jQuery = window.$ = jQuery;
14750}
14751
14752
14753
14754
14755return jQuery;
14756} );
14757
14758
14759/***/ }),
14760
vendor: 28,573 bytes, lines 14761-15567
14761/***/ "./node_modules/vanilla-lazyload/dist/lazyload.js":
14762/*!********************************************************!*\
14763  !*** ./node_modules/vanilla-lazyload/dist/lazyload.js ***!
14764  \********************************************************/
14765/***/ (function(module) {
14766
14767(function (global, factory) {
14768   true ? module.exports = factory() :
14769  0;
14770}(this, (function () { 'use strict';
14771
14772  function _extends() {
14773    _extends = Object.assign || function (target) {
14774      for (var i = 1; i < arguments.length; i++) {
14775        var source = arguments[i];
14776        for (var key in source) {
14777          if (Object.prototype.hasOwnProperty.call(source, key)) {
14778            target[key] = source[key];
14779          }
14780        }
14781      }
14782      return target;
14783    };
14784    return _extends.apply(this, arguments);
14785  }
14786
14787  var runningOnBrowser = typeof window !== "undefined";
14788  var isBot = runningOnBrowser && !("onscroll" in window) || typeof navigator !== "undefined" && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent);
14789  var supportsIntersectionObserver = runningOnBrowser && "IntersectionObserver" in window;
14790  var supportsClassList = runningOnBrowser && "classList" in document.createElement("p");
14791  var isHiDpi = runningOnBrowser && window.devicePixelRatio > 1;
14792
14793  var defaultSettings = {
14794    elements_selector: ".lazy",
14795    container: isBot || runningOnBrowser ? document : null,
14796    threshold: 300,
14797    thresholds: null,
14798    data_src: "src",
14799    data_srcset: "srcset",
14800    data_sizes: "sizes",
14801    data_bg: "bg",
14802    data_bg_hidpi: "bg-hidpi",
14803    data_bg_multi: "bg-multi",
14804    data_bg_multi_hidpi: "bg-multi-hidpi",
14805    data_bg_set: "bg-set",
14806    data_poster: "poster",
14807    class_applied: "applied",
14808    class_loading: "loading",
14809    class_loaded: "loaded",
14810    class_error: "error",
14811    class_entered: "entered",
14812    class_exited: "exited",
14813    unobserve_completed: true,
14814    unobserve_entered: false,
14815    cancel_on_exit: true,
14816    callback_enter: null,
14817    callback_exit: null,
14818    callback_applied: null,
14819    callback_loading: null,
14820    callback_loaded: null,
14821    callback_error: null,
14822    callback_finish: null,
14823    callback_cancel: null,
14824    use_native: false,
14825    restore_on_error: false
14826  };
14827  var getExtendedSettings = function getExtendedSettings(customSettings) {
14828    return _extends({}, defaultSettings, customSettings);
14829  };
14830
14831  /* Creates instance and notifies it through the window element */
14832  var createInstance = function createInstance(classObj, options) {
14833    var event;
14834    var eventString = "LazyLoad::Initialized";
14835    var instance = new classObj(options);
14836    try {
14837      // Works in modern browsers
14838      event = new CustomEvent(eventString, {
14839        detail: {
14840          instance: instance
14841        }
14842      });
14843    } catch (err) {
14844      // Works in Internet Explorer (all versions)
14845      event = document.createEvent("CustomEvent");
14846      event.initCustomEvent(eventString, false, false, {
14847        instance: instance
14848      });
14849    }
14850    window.dispatchEvent(event);
14851  };
14852
14853  /* Auto initialization of one or more instances of LazyLoad, depending on the
14854      options passed in (plain object or an array) */
14855  var autoInitialize = function autoInitialize(classObj, options) {
14856    if (!options) {
14857      return;
14858    }
14859    if (!options.length) {
14860      // Plain object
14861      createInstance(classObj, options);
14862    } else {
14863      // Array of objects
14864      for (var i = 0, optionsItem; optionsItem = options[i]; i += 1) {
14865        createInstance(classObj, optionsItem);
14866      }
14867    }
14868  };
14869
14870  var SRC = "src";
14871  var SRCSET = "srcset";
14872  var SIZES = "sizes";
14873  var POSTER = "poster";
14874  var ORIGINALS = "llOriginalAttrs";
14875  var DATA = "data";
14876
14877  var statusLoading = "loading";
14878  var statusLoaded = "loaded";
14879  var statusApplied = "applied";
14880  var statusEntered = "entered";
14881  var statusError = "error";
14882  var statusNative = "native";
14883
14884  var dataPrefix = "data-";
14885  var statusDataName = "ll-status";
14886  var getData = function getData(element, attribute) {
14887    return element.getAttribute(dataPrefix + attribute);
14888  };
14889  var setData = function setData(element, attribute, value) {
14890    var attrName = dataPrefix + attribute;
14891    if (value === null) {
14892      element.removeAttribute(attrName);
14893      return;
14894    }
14895    element.setAttribute(attrName, value);
14896  };
14897  var getStatus = function getStatus(element) {
14898    return getData(element, statusDataName);
14899  };
14900  var setStatus = function setStatus(element, status) {
14901    return setData(element, statusDataName, status);
14902  };
14903  var resetStatus = function resetStatus(element) {
14904    return setStatus(element, null);
14905  };
14906  var hasEmptyStatus = function hasEmptyStatus(element) {
14907    return getStatus(element) === null;
14908  };
14909  var hasStatusLoading = function hasStatusLoading(element) {
14910    return getStatus(element) === statusLoading;
14911  };
14912  var hasStatusError = function hasStatusError(element) {
14913    return getStatus(element) === statusError;
14914  };
14915  var hasStatusNative = function hasStatusNative(element) {
14916    return getStatus(element) === statusNative;
14917  };
14918  var statusesAfterLoading = [statusLoading, statusLoaded, statusApplied, statusError];
14919  var hadStartedLoading = function hadStartedLoading(element) {
14920    return statusesAfterLoading.indexOf(getStatus(element)) >= 0;
14921  };
14922
14923  var safeCallback = function safeCallback(callback, arg1, arg2, arg3) {
14924    if (!callback || typeof callback !== 'function') {
14925      return;
14926    }
14927    if (arg3 !== undefined) {
14928      callback(arg1, arg2, arg3);
14929      return;
14930    }
14931    if (arg2 !== undefined) {
14932      callback(arg1, arg2);
14933      return;
14934    }
14935    callback(arg1);
14936  };
14937
14938  var addClass = function addClass(element, className) {
14939    if (className === "") {
14940      return;
14941    }
14942    if (supportsClassList) {
14943      element.classList.add(className);
14944      return;
14945    }
14946    element.className += (element.className ? " " : "") + className;
14947  };
14948  var removeClass = function removeClass(element, className) {
14949    if (className === "") {
14950      return;
14951    }
14952    if (supportsClassList) {
14953      element.classList.remove(className);
14954      return;
14955    }
14956    element.className = element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), " ").replace(/^\s+/, "").replace(/\s+$/, "");
14957  };
14958
14959  var addTempImage = function addTempImage(element) {
14960    element.llTempImage = document.createElement("IMG");
14961  };
14962  var deleteTempImage = function deleteTempImage(element) {
14963    delete element.llTempImage;
14964  };
14965  var getTempImage = function getTempImage(element) {
14966    return element.llTempImage;
14967  };
14968
14969  var unobserve = function unobserve(element, instance) {
14970    if (!instance) return;
14971    var observer = instance._observer;
14972    if (!observer) return;
14973    observer.unobserve(element);
14974  };
14975  var resetObserver = function resetObserver(observer) {
14976    observer.disconnect();
14977  };
14978  var unobserveEntered = function unobserveEntered(element, settings, instance) {
14979    if (settings.unobserve_entered) unobserve(element, instance);
14980  };
14981
14982  var updateLoadingCount = function updateLoadingCount(instance, delta) {
14983    if (!instance) return;
14984    instance.loadingCount += delta;
14985  };
14986  var decreaseToLoadCount = function decreaseToLoadCount(instance) {
14987    if (!instance) return;
14988    instance.toLoadCount -= 1;
14989  };
14990  var setToLoadCount = function setToLoadCount(instance, value) {
14991    if (!instance) return;
14992    instance.toLoadCount = value;
14993  };
14994  var isSomethingLoading = function isSomethingLoading(instance) {
14995    return instance.loadingCount > 0;
14996  };
14997  var haveElementsToLoad = function haveElementsToLoad(instance) {
14998    return instance.toLoadCount > 0;
14999  };
15000
15001  var getSourceTags = function getSourceTags(parentTag) {
15002    var sourceTags = [];
15003    for (var i = 0, childTag; childTag = parentTag.children[i]; i += 1) {
15004      if (childTag.tagName === "SOURCE") {
15005        sourceTags.push(childTag);
15006      }
15007    }
15008    return sourceTags;
15009  };
15010  var forEachPictureSource = function forEachPictureSource(element, fn) {
15011    var parent = element.parentNode;
15012    if (!parent || parent.tagName !== "PICTURE") {
15013      return;
15014    }
15015    var sourceTags = getSourceTags(parent);
15016    sourceTags.forEach(fn);
15017  };
15018  var forEachVideoSource = function forEachVideoSource(element, fn) {
15019    var sourceTags = getSourceTags(element);
15020    sourceTags.forEach(fn);
15021  };
15022
15023  var attrsSrc = [SRC];
15024  var attrsSrcPoster = [SRC, POSTER];
15025  var attrsSrcSrcsetSizes = [SRC, SRCSET, SIZES];
15026  var attrsData = [DATA];
15027  var hasOriginalAttrs = function hasOriginalAttrs(element) {
15028    return !!element[ORIGINALS];
15029  };
15030  var getOriginalAttrs = function getOriginalAttrs(element) {
15031    return element[ORIGINALS];
15032  };
15033  var deleteOriginalAttrs = function deleteOriginalAttrs(element) {
15034    return delete element[ORIGINALS];
15035  };
15036
15037  // ## SAVE ##
15038
15039  var setOriginalsObject = function setOriginalsObject(element, attributes) {
15040    if (hasOriginalAttrs(element)) {
15041      return;
15042    }
15043    var originals = {};
15044    attributes.forEach(function (attribute) {
15045      originals[attribute] = element.getAttribute(attribute);
15046    });
15047    element[ORIGINALS] = originals;
15048  };
15049  var saveOriginalBackgroundStyle = function saveOriginalBackgroundStyle(element) {
15050    if (hasOriginalAttrs(element)) {
15051      return;
15052    }
15053    element[ORIGINALS] = {
15054      backgroundImage: element.style.backgroundImage
15055    };
15056  };
15057
15058  // ## RESTORE ##
15059
15060  var setOrResetAttribute = function setOrResetAttribute(element, attrName, value) {
15061    if (!value) {
15062      element.removeAttribute(attrName);
15063      return;
15064    }
15065    element.setAttribute(attrName, value);
15066  };
15067  var restoreOriginalAttrs = function restoreOriginalAttrs(element, attributes) {
15068    if (!hasOriginalAttrs(element)) {
15069      return;
15070    }
15071    var originals = getOriginalAttrs(element);
15072    attributes.forEach(function (attribute) {
15073      setOrResetAttribute(element, attribute, originals[attribute]);
15074    });
15075  };
15076  var restoreOriginalBgImage = function restoreOriginalBgImage(element) {
15077    if (!hasOriginalAttrs(element)) {
15078      return;
15079    }
15080    var originals = getOriginalAttrs(element);
15081    element.style.backgroundImage = originals.backgroundImage;
15082  };
15083
15084  var manageApplied = function manageApplied(element, settings, instance) {
15085    addClass(element, settings.class_applied);
15086    setStatus(element, statusApplied);
15087    // Instance is not provided when loading is called from static class
15088    if (!instance) return;
15089    if (settings.unobserve_completed) {
15090      // Unobserve now because we can't do it on load
15091      unobserve(element, settings);
15092    }
15093    safeCallback(settings.callback_applied, element, instance);
15094  };
15095  var manageLoading = function manageLoading(element, settings, instance) {
15096    addClass(element, settings.class_loading);
15097    setStatus(element, statusLoading);
15098    // Instance is not provided when loading is called from static class
15099    if (!instance) return;
15100    updateLoadingCount(instance, +1);
15101    safeCallback(settings.callback_loading, element, instance);
15102  };
15103  var setAttributeIfValue = function setAttributeIfValue(element, attrName, value) {
15104    if (!value) {
15105      return;
15106    }
15107    element.setAttribute(attrName, value);
15108  };
15109  var setImageAttributes = function setImageAttributes(element, settings) {
15110    setAttributeIfValue(element, SIZES, getData(element, settings.data_sizes));
15111    setAttributeIfValue(element, SRCSET, getData(element, settings.data_srcset));
15112    setAttributeIfValue(element, SRC, getData(element, settings.data_src));
15113  };
15114  var setSourcesImg = function setSourcesImg(imgEl, settings) {
15115    forEachPictureSource(imgEl, function (sourceTag) {
15116      setOriginalsObject(sourceTag, attrsSrcSrcsetSizes);
15117      setImageAttributes(sourceTag, settings);
15118    });
15119    setOriginalsObject(imgEl, attrsSrcSrcsetSizes);
15120    setImageAttributes(imgEl, settings);
15121  };
15122  var setSourcesIframe = function setSourcesIframe(iframe, settings) {
15123    setOriginalsObject(iframe, attrsSrc);
15124    setAttributeIfValue(iframe, SRC, getData(iframe, settings.data_src));
15125  };
15126  var setSourcesVideo = function setSourcesVideo(videoEl, settings) {
15127    forEachVideoSource(videoEl, function (sourceEl) {
15128      setOriginalsObject(sourceEl, attrsSrc);
15129      setAttributeIfValue(sourceEl, SRC, getData(sourceEl, settings.data_src));
15130    });
15131    setOriginalsObject(videoEl, attrsSrcPoster);
15132    setAttributeIfValue(videoEl, POSTER, getData(videoEl, settings.data_poster));
15133    setAttributeIfValue(videoEl, SRC, getData(videoEl, settings.data_src));
15134    videoEl.load();
15135  };
15136  var setSourcesObject = function setSourcesObject(object, settings) {
15137    setOriginalsObject(object, attrsData);
15138    setAttributeIfValue(object, DATA, getData(object, settings.data_src));
15139  };
15140  var setBackground = function setBackground(element, settings, instance) {
15141    var bg1xValue = getData(element, settings.data_bg);
15142    var bgHiDpiValue = getData(element, settings.data_bg_hidpi);
15143    var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;
15144    if (!bgDataValue) return;
15145    element.style.backgroundImage = "url(\"".concat(bgDataValue, "\")");
15146    getTempImage(element).setAttribute(SRC, bgDataValue);
15147    manageLoading(element, settings, instance);
15148  };
15149
15150  // NOTE: THE TEMP IMAGE TRICK CANNOT BE DONE WITH data-multi-bg
15151  // BECAUSE INSIDE ITS VALUES MUST BE WRAPPED WITH URL() AND ONE OF THEM
15152  // COULD BE A GRADIENT BACKGROUND IMAGE
15153  var setMultiBackground = function setMultiBackground(element, settings, instance) {
15154    var bg1xValue = getData(element, settings.data_bg_multi);
15155    var bgHiDpiValue = getData(element, settings.data_bg_multi_hidpi);
15156    var bgDataValue = isHiDpi && bgHiDpiValue ? bgHiDpiValue : bg1xValue;
15157    if (!bgDataValue) {
15158      return;
15159    }
15160    element.style.backgroundImage = bgDataValue;
15161    manageApplied(element, settings, instance);
15162  };
15163  var setImgsetBackground = function setImgsetBackground(element, settings, instance) {
15164    var bgImgSetDataValue = getData(element, settings.data_bg_set);
15165    if (!bgImgSetDataValue) {
15166      return;
15167    }
15168    var imgSetValues = bgImgSetDataValue.split("|");
15169    var bgImageValues = imgSetValues.map(function (value) {
15170      return "image-set(".concat(value, ")");
15171    });
15172    element.style.backgroundImage = bgImageValues.join();
15173    // Temporary fix for Chromeium with the -webkit- prefix
15174    if (element.style.backgroundImage === "") {
15175      bgImageValues = imgSetValues.map(function (value) {
15176        return "-webkit-image-set(".concat(value, ")");
15177      });
15178      element.style.backgroundImage = bgImageValues.join();
15179    }
15180    manageApplied(element, settings, instance);
15181  };
15182  var setSourcesFunctions = {
15183    IMG: setSourcesImg,
15184    IFRAME: setSourcesIframe,
15185    VIDEO: setSourcesVideo,
15186    OBJECT: setSourcesObject
15187  };
15188  var setSourcesNative = function setSourcesNative(element, settings) {
15189    var setSourcesFunction = setSourcesFunctions[element.tagName];
15190    if (!setSourcesFunction) {
15191      return;
15192    }
15193    setSourcesFunction(element, settings);
15194  };
15195  var setSources = function setSources(element, settings, instance) {
15196    var setSourcesFunction = setSourcesFunctions[element.tagName];
15197    if (!setSourcesFunction) {
15198      return;
15199    }
15200    setSourcesFunction(element, settings);
15201    manageLoading(element, settings, instance);
15202  };
15203
15204  var elementsWithLoadEvent = ["IMG", "IFRAME", "VIDEO", "OBJECT"];
15205  var hasLoadEvent = function hasLoadEvent(element) {
15206    return elementsWithLoadEvent.indexOf(element.tagName) > -1;
15207  };
15208  var checkFinish = function checkFinish(settings, instance) {
15209    if (instance && !isSomethingLoading(instance) && !haveElementsToLoad(instance)) {
15210      safeCallback(settings.callback_finish, instance);
15211    }
15212  };
15213  var addEventListener = function addEventListener(element, eventName, handler) {
15214    element.addEventListener(eventName, handler);
15215    element.llEvLisnrs[eventName] = handler;
15216  };
15217  var removeEventListener = function removeEventListener(element, eventName, handler) {
15218    element.removeEventListener(eventName, handler);
15219  };
15220  var hasEventListeners = function hasEventListeners(element) {
15221    return !!element.llEvLisnrs;
15222  };
15223  var addEventListeners = function addEventListeners(element, loadHandler, errorHandler) {
15224    if (!hasEventListeners(element)) element.llEvLisnrs = {};
15225    var loadEventName = element.tagName === "VIDEO" ? "loadeddata" : "load";
15226    addEventListener(element, loadEventName, loadHandler);
15227    addEventListener(element, "error", errorHandler);
15228  };
15229  var removeEventListeners = function removeEventListeners(element) {
15230    if (!hasEventListeners(element)) {
15231      return;
15232    }
15233    var eventListeners = element.llEvLisnrs;
15234    for (var eventName in eventListeners) {
15235      var handler = eventListeners[eventName];
15236      removeEventListener(element, eventName, handler);
15237    }
15238    delete element.llEvLisnrs;
15239  };
15240  var doneHandler = function doneHandler(element, settings, instance) {
15241    deleteTempImage(element);
15242    updateLoadingCount(instance, -1);
15243    decreaseToLoadCount(instance);
15244    removeClass(element, settings.class_loading);
15245    if (settings.unobserve_completed) {
15246      unobserve(element, instance);
15247    }
15248  };
15249  var loadHandler = function loadHandler(event, element, settings, instance) {
15250    var goingNative = hasStatusNative(element);
15251    doneHandler(element, settings, instance);
15252    addClass(element, settings.class_loaded);
15253    setStatus(element, statusLoaded);
15254    safeCallback(settings.callback_loaded, element, instance);
15255    if (!goingNative) checkFinish(settings, instance);
15256  };
15257  var errorHandler = function errorHandler(event, element, settings, instance) {
15258    var goingNative = hasStatusNative(element);
15259    doneHandler(element, settings, instance);
15260    addClass(element, settings.class_error);
15261    setStatus(element, statusError);
15262    safeCallback(settings.callback_error, element, instance);
15263    if (settings.restore_on_error) restoreOriginalAttrs(element, attrsSrcSrcsetSizes);
15264    if (!goingNative) checkFinish(settings, instance);
15265  };
15266  var addOneShotEventListeners = function addOneShotEventListeners(element, settings, instance) {
15267    var elementToListenTo = getTempImage(element) || element;
15268    if (hasEventListeners(elementToListenTo)) {
15269      // This happens when loading is retried twice
15270      return;
15271    }
15272    var _loadHandler = function _loadHandler(event) {
15273      loadHandler(event, element, settings, instance);
15274      removeEventListeners(elementToListenTo);
15275    };
15276    var _errorHandler = function _errorHandler(event) {
15277      errorHandler(event, element, settings, instance);
15278      removeEventListeners(elementToListenTo);
15279    };
15280    addEventListeners(elementToListenTo, _loadHandler, _errorHandler);
15281  };
15282
15283  var loadBackground = function loadBackground(element, settings, instance) {
15284    addTempImage(element);
15285    addOneShotEventListeners(element, settings, instance);
15286    saveOriginalBackgroundStyle(element);
15287    setBackground(element, settings, instance);
15288    setMultiBackground(element, settings, instance);
15289    setImgsetBackground(element, settings, instance);
15290  };
15291  var loadRegular = function loadRegular(element, settings, instance) {
15292    addOneShotEventListeners(element, settings, instance);
15293    setSources(element, settings, instance);
15294  };
15295  var load = function load(element, settings, instance) {
15296    if (hasLoadEvent(element)) {
15297      loadRegular(element, settings, instance);
15298    } else {
15299      loadBackground(element, settings, instance);
15300    }
15301  };
15302  var loadNative = function loadNative(element, settings, instance) {
15303    element.setAttribute("loading", "lazy");
15304    addOneShotEventListeners(element, settings, instance);
15305    setSourcesNative(element, settings);
15306    setStatus(element, statusNative);
15307  };
15308
15309  var removeImageAttributes = function removeImageAttributes(element) {
15310    element.removeAttribute(SRC);
15311    element.removeAttribute(SRCSET);
15312    element.removeAttribute(SIZES);
15313  };
15314  var resetSourcesImg = function resetSourcesImg(element) {
15315    forEachPictureSource(element, function (sourceTag) {
15316      removeImageAttributes(sourceTag);
15317    });
15318    removeImageAttributes(element);
15319  };
15320
15321  var restoreImg = function restoreImg(imgEl) {
15322    forEachPictureSource(imgEl, function (sourceEl) {
15323      restoreOriginalAttrs(sourceEl, attrsSrcSrcsetSizes);
15324    });
15325    restoreOriginalAttrs(imgEl, attrsSrcSrcsetSizes);
15326  };
15327  var restoreVideo = function restoreVideo(videoEl) {
15328    forEachVideoSource(videoEl, function (sourceEl) {
15329      restoreOriginalAttrs(sourceEl, attrsSrc);
15330    });
15331    restoreOriginalAttrs(videoEl, attrsSrcPoster);
15332    videoEl.load();
15333  };
15334  var restoreIframe = function restoreIframe(iframeEl) {
15335    restoreOriginalAttrs(iframeEl, attrsSrc);
15336  };
15337  var restoreObject = function restoreObject(objectEl) {
15338    restoreOriginalAttrs(objectEl, attrsData);
15339  };
15340  var restoreFunctions = {
15341    IMG: restoreImg,
15342    IFRAME: restoreIframe,
15343    VIDEO: restoreVideo,
15344    OBJECT: restoreObject
15345  };
15346  var restoreAttributes = function restoreAttributes(element) {
15347    var restoreFunction = restoreFunctions[element.tagName];
15348    if (!restoreFunction) {
15349      restoreOriginalBgImage(element);
15350      return;
15351    }
15352    restoreFunction(element);
15353  };
15354  var resetClasses = function resetClasses(element, settings) {
15355    if (hasEmptyStatus(element) || hasStatusNative(element)) {
15356      return;
15357    }
15358    removeClass(element, settings.class_entered);
15359    removeClass(element, settings.class_exited);
15360    removeClass(element, settings.class_applied);
15361    removeClass(element, settings.class_loading);
15362    removeClass(element, settings.class_loaded);
15363    removeClass(element, settings.class_error);
15364  };
15365  var restore = function restore(element, settings) {
15366    restoreAttributes(element);
15367    resetClasses(element, settings);
15368    resetStatus(element);
15369    deleteOriginalAttrs(element);
15370  };
15371
15372  var cancelLoading = function cancelLoading(element, entry, settings, instance) {
15373    if (!settings.cancel_on_exit) return;
15374    if (!hasStatusLoading(element)) return;
15375    if (element.tagName !== "IMG") return; //Works only on images
15376    removeEventListeners(element);
15377    resetSourcesImg(element);
15378    restoreImg(element);
15379    removeClass(element, settings.class_loading);
15380    updateLoadingCount(instance, -1);
15381    resetStatus(element);
15382    safeCallback(settings.callback_cancel, element, entry, instance);
15383  };
15384
15385  var onEnter = function onEnter(element, entry, settings, instance) {
15386    var dontLoad = hadStartedLoading(element); /* Save status
15387                                               before setting it, to prevent loading it again. Fixes #526. */
15388    setStatus(element, statusEntered);
15389    addClass(element, settings.class_entered);
15390    removeClass(element, settings.class_exited);
15391    unobserveEntered(element, settings, instance);
15392    safeCallback(settings.callback_enter, element, entry, instance);
15393    if (dontLoad) return;
15394    load(element, settings, instance);
15395  };
15396  var onExit = function onExit(element, entry, settings, instance) {
15397    if (hasEmptyStatus(element)) return; //Ignore the first pass, at landing
15398    addClass(element, settings.class_exited);
15399    cancelLoading(element, entry, settings, instance);
15400    safeCallback(settings.callback_exit, element, entry, instance);
15401  };
15402
15403  var tagsWithNativeLazy = ["IMG", "IFRAME", "VIDEO"];
15404  var shouldUseNative = function shouldUseNative(settings) {
15405    return settings.use_native && "loading" in HTMLImageElement.prototype;
15406  };
15407  var loadAllNative = function loadAllNative(elements, settings, instance) {
15408    elements.forEach(function (element) {
15409      if (tagsWithNativeLazy.indexOf(element.tagName) === -1) {
15410        return;
15411      }
15412      loadNative(element, settings, instance);
15413    });
15414    setToLoadCount(instance, 0);
15415  };
15416
15417  var isIntersecting = function isIntersecting(entry) {
15418    return entry.isIntersecting || entry.intersectionRatio > 0;
15419  };
15420  var getObserverSettings = function getObserverSettings(settings) {
15421    return {
15422      root: settings.container === document ? null : settings.container,
15423      rootMargin: settings.thresholds || settings.threshold + "px"
15424    };
15425  };
15426  var intersectionHandler = function intersectionHandler(entries, settings, instance) {
15427    entries.forEach(function (entry) {
15428      return isIntersecting(entry) ? onEnter(entry.target, entry, settings, instance) : onExit(entry.target, entry, settings, instance);
15429    });
15430  };
15431  var observeElements = function observeElements(observer, elements) {
15432    elements.forEach(function (element) {
15433      observer.observe(element);
15434    });
15435  };
15436  var updateObserver = function updateObserver(observer, elementsToObserve) {
15437    resetObserver(observer);
15438    observeElements(observer, elementsToObserve);
15439  };
15440  var setObserver = function setObserver(settings, instance) {
15441    if (!supportsIntersectionObserver || shouldUseNative(settings)) {
15442      return;
15443    }
15444    instance._observer = new IntersectionObserver(function (entries) {
15445      intersectionHandler(entries, settings, instance);
15446    }, getObserverSettings(settings));
15447  };
15448
15449  var toArray = function toArray(nodeSet) {
15450    return Array.prototype.slice.call(nodeSet);
15451  };
15452  var queryElements = function queryElements(settings) {
15453    return settings.container.querySelectorAll(settings.elements_selector);
15454  };
15455  var excludeManagedElements = function excludeManagedElements(elements) {
15456    return toArray(elements).filter(hasEmptyStatus);
15457  };
15458  var hasError = function hasError(element) {
15459    return hasStatusError(element);
15460  };
15461  var filterErrorElements = function filterErrorElements(elements) {
15462    return toArray(elements).filter(hasError);
15463  };
15464  var getElementsToLoad = function getElementsToLoad(elements, settings) {
15465    return excludeManagedElements(elements || queryElements(settings));
15466  };
15467
15468  var retryLazyLoad = function retryLazyLoad(settings, instance) {
15469    var errorElements = filterErrorElements(queryElements(settings));
15470    errorElements.forEach(function (element) {
15471      removeClass(element, settings.class_error);
15472      resetStatus(element);
15473    });
15474    instance.update();
15475  };
15476  var setOnlineCheck = function setOnlineCheck(settings, instance) {
15477    if (!runningOnBrowser) {
15478      return;
15479    }
15480    instance._onlineHandler = function () {
15481      retryLazyLoad(settings, instance);
15482    };
15483    window.addEventListener("online", instance._onlineHandler);
15484  };
15485  var resetOnlineCheck = function resetOnlineCheck(instance) {
15486    if (!runningOnBrowser) {
15487      return;
15488    }
15489    window.removeEventListener("online", instance._onlineHandler);
15490  };
15491
15492  var LazyLoad = function LazyLoad(customSettings, elements) {
15493    var settings = getExtendedSettings(customSettings);
15494    this._settings = settings;
15495    this.loadingCount = 0;
15496    setObserver(settings, this);
15497    setOnlineCheck(settings, this);
15498    this.update(elements);
15499  };
15500  LazyLoad.prototype = {
15501    update: function update(givenNodeset) {
15502      var settings = this._settings;
15503      var elementsToLoad = getElementsToLoad(givenNodeset, settings);
15504      setToLoadCount(this, elementsToLoad.length);
15505      if (isBot || !supportsIntersectionObserver) {
15506        this.loadAll(elementsToLoad);
15507        return;
15508      }
15509      if (shouldUseNative(settings)) {
15510        loadAllNative(elementsToLoad, settings, this);
15511        return;
15512      }
15513      updateObserver(this._observer, elementsToLoad);
15514    },
15515    destroy: function destroy() {
15516      // Observer
15517      if (this._observer) {
15518        this._observer.disconnect();
15519      }
15520      // Clean handlers
15521      resetOnlineCheck(this);
15522      // Clean custom attributes on elements
15523      queryElements(this._settings).forEach(function (element) {
15524        deleteOriginalAttrs(element);
15525      });
15526      // Delete all internal props
15527      delete this._observer;
15528      delete this._settings;
15529      delete this._onlineHandler;
15530      delete this.loadingCount;
15531      delete this.toLoadCount;
15532    },
15533    loadAll: function loadAll(elements) {
15534      var _this = this;
15535      var settings = this._settings;
15536      var elementsToLoad = getElementsToLoad(elements, settings);
15537      elementsToLoad.forEach(function (element) {
15538        unobserve(element, _this);
15539        load(element, settings, _this);
15540      });
15541    },
15542    restoreAll: function restoreAll() {
15543      var settings = this._settings;
15544      queryElements(settings).forEach(function (element) {
15545        restore(element, settings);
15546      });
15547    }
15548  };
15549  LazyLoad.load = function (element, customSettings) {
15550    var settings = getExtendedSettings(customSettings);
15551    load(element, settings);
15552  };
15553  LazyLoad.resetStatus = function (element) {
15554    resetStatus(element);
15555  };
15556
15557  // Automatic instances creation if required (useful for async script loading)
15558  if (runningOnBrowser) {
15559    autoInitialize(LazyLoad, window.lazyLoadOptions);
15560  }
15561
15562  return LazyLoad;
15563
15564})));
15565
15566
15567/***/ })
15567
15568
15569/******/ 	});
15570/************************************************************************/
15571/******/ 	// The module cache
15572/******/ 	var __webpack_module_cache__ = {};
15573/******/ 	
15574/******/ 	// The require function
15575/******/ 	function __webpack_require__(moduleId) {
15576/******/ 		// Check if module is in cache
15577/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
15578/******/ 		if (cachedModule !== undefined) {
15579/******/ 			return cachedModule.exports;
15580/******/ 		}
15581/******/ 		// Create a new module (and put it into the cache)
15582/******/ 		var module = __webpack_module_cache__[moduleId] = {
15583/******/ 			// no module.id needed
15584/******/ 			// no module.loaded needed
15585/******/ 			exports: {}
15586/******/ 		};
15587/******/ 	
15588/******/ 		// Execute the module function
15589/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
15590/******/ 	
15591/******/ 		// Return the exports of the module
15592/******/ 		return module.exports;
15593/******/ 	}
15594/******/ 	
15595/************************************************************************/
15596/******/ 	/* webpack/runtime/compat get default export */
15597/******/ 	!function() {
15598/******/ 		// getDefaultExport function for compatibility with non-harmony modules
15599/******/ 		__webpack_require__.n = function(module) {
15600/******/ 			var getter = module && module.__esModule ?
15601/******/ 				function() { return module['default']; } :
15602/******/ 				function() { return module; };
15603/******/ 			__webpack_require__.d(getter, { a: getter });
15604/******/ 			return getter;
15605/******/ 		};
15606/******/ 	}();
15607/******/ 	
15608/******/ 	/* webpack/runtime/define property getters */
15609/******/ 	!function() {
15610/******/ 		// define getter functions for harmony exports
15611/******/ 		__webpack_require__.d = function(exports, definition) {
15612/******/ 			for(var key in definition) {
15613/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
15614/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
15615/******/ 				}
15616/******/ 			}
15617/******/ 		};
15618/******/ 	}();
15619/******/ 	
15620/******/ 	/* webpack/runtime/global */
15621/******/ 	!function() {
15622/******/ 		__webpack_require__.g = (function() {
15623/******/ 			if (typeof globalThis === 'object') return globalThis;
15624/******/ 			try {
15625/******/ 				return this || new Function('return this')();
15626/******/ 			} catch (e) {
15627/******/ 				if (typeof window === 'object') return window;
15628/******/ 			}
15629/******/ 		})();
15630/******/ 	}();
15631/******/ 	
15632/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
15633/******/ 	!function() {
15634/******/ 		__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
15635/******/ 	}();
15636/******/ 	
15637/******/ 	/* webpack/runtime/make namespace object */
15638/******/ 	!function() {
15639/******/ 		// define __esModule on exports
15640/******/ 		__webpack_require__.r = function(exports) {
15641/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
15642/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
15643/******/ 			}
15644/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
15645/******/ 		};
15646/******/ 	}();
15647/******/ 	
15648/************************************************************************/
15649var __webpack_exports__ = {};
15650// This entry needs to be wrapped in an IIFE because it needs to be in strict mode.
15651!function() {
15652"use strict";
15653/*!***************************!*\
15654  !*** ./src/js/general.js ***!
15655  \***************************/
15656__webpack_require__.r(__webpack_exports__);
15657/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.find.js */ "./node_modules/core-js/modules/es.array.find.js");
15658/* harmony import */ var core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_find_js__WEBPACK_IMPORTED_MODULE_0__);
15659/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.includes.js */ "./node_modules/core-js/modules/es.array.includes.js");
15660/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_1__);
15661/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js");
15662/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_2__);
15663/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js");
15664/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_3__);
15665/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.regexp.exec.js */ "./node_modules/core-js/modules/es.regexp.exec.js");
15666/* harmony import */ var core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_exec_js__WEBPACK_IMPORTED_MODULE_4__);
15667/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.string.includes.js */ "./node_modules/core-js/modules/es.string.includes.js");
15668/* harmony import */ var core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_includes_js__WEBPACK_IMPORTED_MODULE_5__);
15669/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.string.replace.js */ "./node_modules/core-js/modules/es.string.replace.js");
15670/* harmony import */ var core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace_js__WEBPACK_IMPORTED_MODULE_6__);
15671/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js");
15672/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_7__);
15673/* harmony import */ var jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! jquery-inview/jquery.inview */ "./node_modules/jquery-inview/jquery.inview.js");
15674/* harmony import */ var jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(jquery_inview_jquery_inview__WEBPACK_IMPORTED_MODULE_8__);
15675/* harmony import */ var vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! vanilla-lazyload/dist/lazyload */ "./node_modules/vanilla-lazyload/dist/lazyload.js");
15676/* harmony import */ var vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9__);
15677/* harmony import */ var headroom_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! headroom.js */ "./node_modules/headroom.js/dist/headroom.js");
15678/* harmony import */ var headroom_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(headroom_js__WEBPACK_IMPORTED_MODULE_10__);
15679
15680
15681
15682
15683
15684
15685
15686
15687var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
15688
15689
15690
15691var clickEvent = '';
15692if ('ontouchstart' in window) {
15693  clickEvent = 'touchstart';
15694} else {
15695  clickEvent = 'click tap';
15696}
15697$(function () {
15698  initInviewAnimate();
15699  initHeadroom();
15700  initLazyLoad();
15701  handleHeaderMenuToggling();
15702  initMobileDrawer();
15703  initAnchorScroll();
15704  customView();
15705});
15706$(window).on('load', function () {
15707  fixCF7MultiSubmit();
15708});
15709$(window).on('scroll', function () {
15710  var ua = window.navigator.userAgent;
15711  var isIE = /MSIE|Trident/.test(ua);
15712  if (!isIE) {
15713    checkActiveSection();
15714  }
15715  $(".menu li.active").blur();
15716});
15717function initHeadroom() {
15718  var headerElements = document.getElementsByClassName("site-header"),
15719    headerElementsNo = headerElements.length;
15720  if (headerElementsNo > 0) {
15721    for (var i = 0; i < headerElementsNo; i++) {
15722      var headroom = new (headroom_js__WEBPACK_IMPORTED_MODULE_10___default())(headerElements[i]);
15723      headroom.init();
15724    }
15725  }
15726  if (/\/news\//.test(window.location.href)) {
15727    $('.news').addClass('news-single');
15728  }
15729  if (/\/jobs\//.test(window.location.href)) {
15730    $('.jobs').addClass('jobs-single');
15731  }
15732}
15733function customView() {
15734  function isScrolledIntoView(elem) {
15735    var docViewTop = $(window).scrollTop(),
15736      docViewBottom = docViewTop + $(window).height(),
15737      elemTop = $(elem).offset().top,
15738      elemBottom = elemTop + $(elem).height();
15739    //Is more than half of the element visible
15740    return elemTop + (elemBottom - elemTop) / 4.5 >= docViewTop && elemTop + (elemBottom - elemTop) / 4.5 <= docViewBottom;
15741  }
15742  if ($(window).width() < 960) {
15743    $('.custom-inview').each(function () {
15744      if (isScrolledIntoView(this) === true) {
15745        $(this).addClass('inview-active');
15746      }
15747    });
15748    $(window).on('scroll', function () {
15749      $('.custom-inview').each(function () {
15750        if (isScrolledIntoView(this) === true) {
15751          $(this).addClass('inview-active');
15752        }
15753      });
15754    });
15755  } else {
15756    $(window).on('scroll', function () {
15757      $('.custom-inview').each(function () {
15758        if (isScrolledIntoView(this) === true) {
15759          $(this).addClass('inview-active');
15760        }
15761      });
15762    });
15763  }
15764  if (/\/news\//.test(window.location.href)) {
15765    $('.custom-inview').each(function () {
15766      if (isScrolledIntoView(this) === true) {
15767        $(this).addClass('inview-active');
15768      }
15769    });
15770    $(window).on('scroll', function () {
15771      $('.custom-inview').each(function () {
15772        if (isScrolledIntoView(this) === true) {
15773          $(this).addClass('inview-active');
15774        }
15775      });
15776    });
15777  }
15778}
15779function initLazyLoad() {
15780  var lazy = new (vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default())({
15781    elements_selector: '.lazy',
15782    load_delay: 300
15783  });
15784  var variableSrc = 'src-desktop';
15785  if ($(window).width() < 768) {
15786    variableSrc = 'src-mobile';
15787  }
15788  var bgLazy = new (vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default())({
15789    elements_selector: '.lazy-bg',
15790    data_bg: variableSrc,
15791    load_delay: 300
15792  });
15793  var imgLazy = new (vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default())({
15794    elements_selector: '.lazy-img',
15795    data_src: variableSrc,
15796    load_delay: 300
15797  });
15798  var heroLazy = new (vanilla_lazyload_dist_lazyload__WEBPACK_IMPORTED_MODULE_9___default())({
15799    elements_selector: '.lazy-hero',
15800    data_bg: variableSrc,
15801    load_delay: 0
15802  });
15803  heroLazy.loadAll();
15804}
15805function initInviewAnimate() {
15806  var inviewElements = $(".inview-animate--fade").add(".inview-animate--move-up").add(".inview-animate--move-down").add(".inview-animate--move-left").add(".inview-animate--move-right")
15807  //.add( ".custom-inview" )
15808  .add(".inview-animate--scale");
15809  inviewElements.each(function () {
15810    var thisInviewElement = $(this);
15811    thisInviewElement.bind('inview', function (event, visible) {
15812      if (visible == true) {
15813        thisInviewElement.addClass('inview-active');
15814      }
15815    });
15816  });
15817}
15818function handleHeaderMenuToggling() {
15819  var header = $(".site-header"),
15820    headerMenu = $(".site-header__nav-wrap"),
15821    headerBurger = $(".site-header__nav-trigger, .site-drawer__menu-toggle-close");
15822  if (headerMenu.length) {
15823    headerBurger.on("click", function () {
15824      var index = 0;
15825      $('body').toggleClass('noscroll');
15826      $(this).toggleClass("active");
15827      headerMenu.toggleClass("menu-active menu-closed");
15828      header.toggleClass("nav-active");
15829    });
15830  }
15831  $('.menu-item a').on('click', function (e) {
15832    $('body,html').removeClass('noscroll');
15833    $('.site-header__nav').removeClass("active");
15834    $('.site-header__mobile-trigger').removeClass("active");
15835  });
15836}
15837function initMobileDrawer() {
15838  $('.site-header__mobile-trigger a').on('click', function (e) {
15839    e.preventDefault();
15840    $('.site-header__nav').toggleClass('active');
15841    $('.site-header__mobile-trigger').toggleClass('active');
15842    $('body, html').toggleClass('noscroll');
15843  });
15844}
15845function fixCF7MultiSubmit() {
15846  $('input.wpcf7-submit[type="submit"]').on('click', function () {
15847    var disabled = $(this).attr('data-disabled');
15848    if (disabled && disabled == 'disabled') {
15849      return false;
15850    } else {
15851      $(this).attr('data-disabled', 'disabled').addClass('hide-text');
15852      return true;
15853    }
15854  });
15855  $('.wpcf7').bind('wpcf7submit', function () {
15856    $(this).find('input.wpcf7-submit[type="submit"]').attr('data-disabled', 'enabled').removeClass('hide-text');
15857  });
15858}
15859function initAnchorScroll() {
15860  // Select all links with hashes
15861  $('a[href*="/#"]')
15862  // Remove links that don't actually link to anything
15863  .not('[href="#"]').not('[href="#0"]').on('click', function (event) {
15864    // On-page links
15865    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
15866      // Figure out element to scroll to
15867      var target = $(this.hash);
15868      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
15869      // Does a scroll target exist?
15870      if (target.length) {
15871        $('.nav-primary .active').removeClass('active');
15872        $(this).parent().addClass('active');
15873        // Only prevent default if animation is actually gonna happen
15874        event.preventDefault();
15875        $('html, body').animate({
15876          scrollTop: target.offset().top
15877        }, 1000, function () {
15878          // Callback after animation
15879          // Must change focus!
15880          var $target = $(target);
15881          $target.focus();
15882          if ($target.is(":focus")) {
15883            // Checking if the target was focused
15884            return false;
15885          } else {
15886            $target.attr('tabindex', '-1'); // Adding tabindex for elements not focusable
15887            $target.focus(); // Set focus again
15888          }
15889          ;
15890        });
15891      }
15892    }
15893  });
15894}
15895function checkActiveSection() {
15896  var windowTop = $(window).scrollTop();
15897  var isMobile = $(window).width() < 992;
15898  $('[data-scroll]').each(function (index, elem) {
15899    var offsetTop = $(elem).offset().top,
15900      outerHeight = $(this).outerHeight(true);
15901    if (windowTop > offsetTop - (isMobile ? 150 : 450) && windowTop < offsetTop + Math.abs(outerHeight)) {
15902      var elemId = $(elem).data('scroll');
15903      $(".menu li.active").removeClass('active');
15904      $(".menu li a[href='/#" + elemId + "']").parent().addClass('active');
15905    } else if ($(window).scrollTop() + $(window).height() > $(document).height() - 350) {
15906      $(".menu li.active").removeClass('active');
15907      $(".menu li a[href='/#contact']").parent().addClass('active');
15908    }
15909    if ($(window).scrollTop() < (isMobile ? 200 : 400)) {
15910      $(".menu li a[href='/#paq-approach']").parent().removeClass('active');
15911    }
15912  });
15913}
15914
15915/* menu active on specified url */
15916document.addEventListener('DOMContentLoaded', function () {
15917  var currentUrl = window.location.href;
15918  var anchors = document.querySelectorAll('.menu-item a'); // Select all anchor tags inside menu items
15919
15920  if (currentUrl.includes('/news-archive')) {
15921    anchors.forEach(function (anchor) {
15922      if (anchor.getAttribute('href') === '/#news-and-media') {
15923        // Check if href matches
15924        var parentMenuItem = anchor.closest('.menu-item'); // Find the closest parent <li>
15925        if (parentMenuItem) {
15926          parentMenuItem.classList.add('page-active'); // Add active class to the parent <li>
15927        }
15928      }
15929    });
15930  }
15931});
15932}();
15933/******/ })()
15934;
15935//# sourceMappingURL=general.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.