PageSourceSearch

https://alhoukoul.com/assets/frappe/dist/js/frappe-web.bundle.M4ZMZZX7.js

js alhoukoul.com collected 2026-10-03 01:33:27 UTC 1,605,149 bytes, 39,249 lines download raw bytes

vendor: 2,421 bytes, lines 1-52
1(() => {
2  var __create = Object.create;
3  var __defProp = Object.defineProperty;
4  var __defProps = Object.defineProperties;
5  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6  var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
7  var __getOwnPropNames = Object.getOwnPropertyNames;
8  var __getOwnPropSymbols = Object.getOwnPropertySymbols;
9  var __getProtoOf = Object.getPrototypeOf;
10  var __hasOwnProp = Object.prototype.hasOwnProperty;
11  var __propIsEnum = Object.prototype.propertyIsEnumerable;
12  var __defNormalProp = (obj, key, value2) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value: value2 }) : obj[key] = value2;
13  var __spreadValues = (a, b) => {
14    for (var prop in b || (b = {}))
15      if (__hasOwnProp.call(b, prop))
16        __defNormalProp(a, prop, b[prop]);
17    if (__getOwnPropSymbols)
18      for (var prop of __getOwnPropSymbols(b)) {
19        if (__propIsEnum.call(b, prop))
20          __defNormalProp(a, prop, b[prop]);
21      }
22    return a;
23  };
24  var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
25  var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
26    get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
27  }) : x)(function(x) {
28    if (typeof require !== "undefined")
29      return require.apply(this, arguments);
30    throw new Error('Dynamic require of "' + x + '" is not supported');
31  });
32  var __commonJS = (cb, mod) => function __require2() {
33    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
34  };
35  var __export = (target, all) => {
36    for (var name2 in all)
37      __defProp(target, name2, { get: all[name2], enumerable: true });
38  };
39  var __copyProps = (to, from, except, desc) => {
40    if (from && typeof from === "object" || typeof from === "function") {
41      for (let key of __getOwnPropNames(from))
42        if (!__hasOwnProp.call(to, key) && key !== except)
43          __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
44    }
45    return to;
46  };
47  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
48    isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
49    mod
50  ));
51
52  
vendor: 243,128 bytes, lines 52-6109
52// node_modules/jquery/dist/jquery.js
53  var require_jquery = __commonJS({
54    "node_modules/jquery/dist/jquery.js"(exports, module) {
55      (function(global2, factory) {
56        "use strict";
57        if (typeof module === "object" && typeof module.exports === "object") {
58          module.exports = global2.document ? factory(global2, true) : function(w) {
59            if (!w.document) {
60              throw new Error("jQuery requires a window with a document");
61            }
62            return factory(w);
63          };
64        } else {
65          factory(global2);
66        }
67      })(typeof window !== "undefined" ? window : exports, function(window2, noGlobal) {
68        "use strict";
69        var arr = [];
70        var getProto = Object.getPrototypeOf;
71        var slice = arr.slice;
72        var flat = arr.flat ? function(array) {
73          return arr.flat.call(array);
74        } : function(array) {
75          return arr.concat.apply([], array);
76        };
77        var push = arr.push;
78        var indexOf = arr.indexOf;
79        var class2type = {};
80        var toString2 = class2type.toString;
81        var hasOwn = class2type.hasOwnProperty;
82        var fnToString = hasOwn.toString;
83        var ObjectFunctionString = fnToString.call(Object);
84        var support = {};
85        var isFunction = function isFunction2(obj) {
86          return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function";
87        };
88        var isWindow = function isWindow2(obj) {
89          return obj != null && obj === obj.window;
90        };
91        var document2 = window2.document;
92        var preservedScriptAttributes = {
93          type: true,
94          src: true,
95          nonce: true,
96          noModule: true
97        };
98        function DOMEval(code, node, doc) {
99          doc = doc || document2;
100          var i2, val, script = doc.createElement("script");
101          script.text = code;
102          if (node) {
103            for (i2 in preservedScriptAttributes) {
104              val = node[i2] || node.getAttribute && node.getAttribute(i2);
105              if (val) {
106                script.setAttribute(i2, val);
107              }
108            }
109          }
110          doc.head.appendChild(script).parentNode.removeChild(script);
111        }
112        function toType(obj) {
113          if (obj == null) {
114            return obj + "";
115          }
116          return typeof obj === "object" || typeof obj === "function" ? class2type[toString2.call(obj)] || "object" : typeof obj;
117        }
118        var version = "3.7.0", rhtmlSuffix = /HTML$/i, jQuery3 = function(selector, context) {
119          return new jQuery3.fn.init(selector, context);
120        };
121        jQuery3.fn = jQuery3.prototype = {
122          jquery: version,
123          constructor: jQuery3,
124          length: 0,
125          toArray: function() {
126            return slice.call(this);
127          },
128          get: function(num) {
129            if (num == null) {
130              return slice.call(this);
131            }
132            return num < 0 ? this[num + this.length] : this[num];
133          },
134          pushStack: function(elems) {
135            var ret = jQuery3.merge(this.constructor(), elems);
136            ret.prevObject = this;
137            return ret;
138          },
139          each: function(callback) {
140            return jQuery3.each(this, callback);
141          },
142          map: function(callback) {
143            return this.pushStack(jQuery3.map(this, function(elem, i2) {
144              return callback.call(elem, i2, elem);
145            }));
146          },
147          slice: function() {
148            return this.pushStack(slice.apply(this, arguments));
149          },
150          first: function() {
151            return this.eq(0);
152          },
153          last: function() {
154            return this.eq(-1);
155          },
156          even: function() {
157            return this.pushStack(jQuery3.grep(this, function(_elem, i2) {
158              return (i2 + 1) % 2;
159            }));
160          },
161          odd: function() {
162            return this.pushStack(jQuery3.grep(this, function(_elem, i2) {
163              return i2 % 2;
164            }));
165          },
166          eq: function(i2) {
167            var len = this.length, j = +i2 + (i2 < 0 ? len : 0);
168            return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
169          },
170          end: function() {
171            return this.prevObject || this.constructor();
172          },
173          push,
174          sort: arr.sort,
175          splice: arr.splice
176        };
177        jQuery3.extend = jQuery3.fn.extend = function() {
178          var options, name2, src, copy, copyIsArray, clone, target = arguments[0] || {}, i2 = 1, length2 = arguments.length, deep = false;
179          if (typeof target === "boolean") {
180            deep = target;
181            target = arguments[i2] || {};
182            i2++;
183          }
184          if (typeof target !== "object" && !isFunction(target)) {
185            target = {};
186          }
187          if (i2 === length2) {
188            target = this;
189            i2--;
190          }
191          for (; i2 < length2; i2++) {
192            if ((options = arguments[i2]) != null) {
193              for (name2 in options) {
194                copy = options[name2];
195                if (name2 === "__proto__" || target === copy) {
196                  continue;
197                }
198                if (deep && copy && (jQuery3.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
199                  src = target[name2];
200                  if (copyIsArray && !Array.isArray(src)) {
201                    clone = [];
202                  } else if (!copyIsArray && !jQuery3.isPlainObject(src)) {
203                    clone = {};
204                  } else {
205                    clone = src;
206                  }
207                  copyIsArray = false;
208                  target[name2] = jQuery3.extend(deep, clone, copy);
209                } else if (copy !== void 0) {
210                  target[name2] = copy;
211                }
212              }
213            }
214          }
215          return target;
216        };
217        jQuery3.extend({
218          expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
219          isReady: true,
220          error: function(msg) {
221            throw new Error(msg);
222          },
223          noop: function() {
224          },
225          isPlainObject: function(obj) {
226            var proto, Ctor;
227            if (!obj || toString2.call(obj) !== "[object Object]") {
228              return false;
229            }
230            proto = getProto(obj);
231            if (!proto) {
232              return true;
233            }
234            Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
235            return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString;
236          },
237          isEmptyObject: function(obj) {
238            var name2;
239            for (name2 in obj) {
240              return false;
241            }
242            return true;
243          },
244          globalEval: function(code, options, doc) {
245            DOMEval(code, { nonce: options && options.nonce }, doc);
246          },
247          each: function(obj, callback) {
248            var length2, i2 = 0;
249            if (isArrayLike(obj)) {
250              length2 = obj.length;
251              for (; i2 < length2; i2++) {
252                if (callback.call(obj[i2], i2, obj[i2]) === false) {
253                  break;
254                }
255              }
256            } else {
257              for (i2 in obj) {
258                if (callback.call(obj[i2], i2, obj[i2]) === false) {
259                  break;
260                }
261              }
262            }
263            return obj;
264          },
265          text: function(elem) {
266            var node, ret = "", i2 = 0, nodeType = elem.nodeType;
267            if (!nodeType) {
268              while (node = elem[i2++]) {
269                ret += jQuery3.text(node);
270              }
271            } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
272              return elem.textContent;
273            } else if (nodeType === 3 || nodeType === 4) {
274              return elem.nodeValue;
275            }
276            return ret;
277          },
278          makeArray: function(arr2, results) {
279            var ret = results || [];
280            if (arr2 != null) {
281              if (isArrayLike(Object(arr2))) {
282                jQuery3.merge(
283                  ret,
284                  typeof arr2 === "string" ? [arr2] : arr2
285                );
286              } else {
287                push.call(ret, arr2);
288              }
289            }
290            return ret;
291          },
292          inArray: function(elem, arr2, i2) {
293            return arr2 == null ? -1 : indexOf.call(arr2, elem, i2);
294          },
295          isXMLDoc: function(elem) {
296            var namespace = elem && elem.namespaceURI, docElem = elem && (elem.ownerDocument || elem).documentElement;
297            return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || "HTML");
298          },
299          merge: function(first, second) {
300            var len = +second.length, j = 0, i2 = first.length;
301            for (; j < len; j++) {
302              first[i2++] = second[j];
303            }
304            first.length = i2;
305            return first;
306          },
307          grep: function(elems, callback, invert) {
308            var callbackInverse, matches = [], i2 = 0, length2 = elems.length, callbackExpect = !invert;
309            for (; i2 < length2; i2++) {
310              callbackInverse = !callback(elems[i2], i2);
311              if (callbackInverse !== callbackExpect) {
312                matches.push(elems[i2]);
313              }
314            }
315            return matches;
316          },
317          map: function(elems, callback, arg) {
318            var length2, value2, i2 = 0, ret = [];
319            if (isArrayLike(elems)) {
320              length2 = elems.length;
321              for (; i2 < length2; i2++) {
322                value2 = callback(elems[i2], i2, arg);
323                if (value2 != null) {
324                  ret.push(value2);
325                }
326              }
327            } else {
328              for (i2 in elems) {
329                value2 = callback(elems[i2], i2, arg);
330                if (value2 != null) {
331                  ret.push(value2);
332                }
333              }
334            }
335            return flat(ret);
336          },
337          guid: 1,
338          support
339        });
340        if (typeof Symbol === "function") {
341          jQuery3.fn[Symbol.iterator] = arr[Symbol.iterator];
342        }
343        jQuery3.each(
344          "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),
345          function(_i, name2) {
346            class2type["[object " + name2 + "]"] = name2.toLowerCase();
347          }
348        );
349        function isArrayLike(obj) {
350          var length2 = !!obj && "length" in obj && obj.length, type2 = toType(obj);
351          if (isFunction(obj) || isWindow(obj)) {
352            return false;
353          }
354          return type2 === "array" || length2 === 0 || typeof length2 === "number" && length2 > 0 && length2 - 1 in obj;
355        }
356        function nodeName(elem, name2) {
357          return elem.nodeName && elem.nodeName.toLowerCase() === name2.toLowerCase();
358        }
359        var pop = arr.pop;
360        var sort = arr.sort;
361        var splice = arr.splice;
362        var whitespace = "[\\x20\\t\\r\\n\\f]";
363        var rtrimCSS = new RegExp(
364          "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$",
365          "g"
366        );
367        jQuery3.contains = function(a, b) {
368          var bup = b && b.parentNode;
369          return a === bup || !!(bup && bup.nodeType === 1 && (a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
370        };
371        var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
372        function fcssescape(ch, asCodePoint) {
373          if (asCodePoint) {
374            if (ch === "\0") {
375              return "\uFFFD";
376            }
377            return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
378          }
379          return "\\" + ch;
380        }
381        jQuery3.escapeSelector = function(sel) {
382          return (sel + "").replace(rcssescape, fcssescape);
383        };
384        var preferredDoc = document2, pushNative = push;
385        (function() {
386          var i2, Expr, outermostContext, sortInput, hasDuplicate, push2 = pushNative, document3, documentElement2, documentIsHTML, rbuggyQSA, matches, expando = jQuery3.expando, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), nonnativeSelectorCache = createCache(), sortOrder = function(a, b) {
387            if (a === b) {
388              hasDuplicate = true;
389            }
390            return 0;
391          }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + "*([*^$|!~]?=)" + whitespace + `*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(` + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + `)(?:\\((('((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)")|((?:\\\\.|[^\\\\()[\\]]|` + attributes + ")*)|.*)\\)|)", rwhitespace = new RegExp(whitespace + "+", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rleadingCombinator = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rdescend = new RegExp(whitespace + "|>"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = {
392            ID: new RegExp("^#(" + identifier + ")"),
393            CLASS: new RegExp("^\\.(" + identifier + ")"),
394            TAG: new RegExp("^(" + identifier + "|[*])"),
395            ATTR: new RegExp("^" + attributes),
396            PSEUDO: new RegExp("^" + pseudos),
397            CHILD: new RegExp(
398              "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)",
399              "i"
400            ),
401            bool: new RegExp("^(?:" + booleans + ")$", "i"),
402            needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
403          }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rquickExpr2 = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"), funescape = function(escape2, nonHex) {
404            var high = "0x" + escape2.slice(1) - 65536;
405            if (nonHex) {
406              return nonHex;
407            }
408            return high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);
409          }, unloadHandler2 = function() {
410            setDocument();
411          }, inDisabledFieldset = addCombinator(
412            function(elem) {
413              return elem.disabled === true && nodeName(elem, "fieldset");
414            },
415            { dir: "parentNode", next: "legend" }
416          );
417          function safeActiveElement() {
418            try {
419              return document3.activeElement;
420            } catch (err) {
421            }
422          }
423          try {
424            push2.apply(
425              arr = slice.call(preferredDoc.childNodes),
426              preferredDoc.childNodes
427            );
428            arr[preferredDoc.childNodes.length].nodeType;
429          } catch (e) {
430            push2 = {
431              apply: function(target, els) {
432                pushNative.apply(target, slice.call(els));
433              },
434              call: function(target) {
435                pushNative.apply(target, slice.call(arguments, 1));
436              }
437            };
438          }
439          function find(selector, context, results, seed2) {
440            var m, i3, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9;
441            results = results || [];
442            if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
443              return results;
444            }
445            if (!seed2) {
446              setDocument(context);
447              context = context || document3;
448              if (documentIsHTML) {
449                if (nodeType !== 11 && (match = rquickExpr2.exec(selector))) {
450                  if (m = match[1]) {
451                    if (nodeType === 9) {
452                      if (elem = context.getElementById(m)) {
453                        if (elem.id === m) {
454                          push2.call(results, elem);
455                          return results;
456                        }
457                      } else {
458                        return results;
459                      }
460                    } else {
461                      if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) {
462                        push2.call(results, elem);
463                        return results;
464                      }
465                    }
466                  } else if (match[2]) {
467                    push2.apply(results, context.getElementsByTagName(selector));
468                    return results;
469                  } else if ((m = match[3]) && context.getElementsByClassName) {
470                    push2.apply(results, context.getElementsByClassName(m));
471                    return results;
472                  }
473                }
474                if (!nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
475                  newSelector = selector;
476                  newContext = context;
477                  if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) {
478                    newContext = rsibling.test(selector) && testContext(context.parentNode) || context;
479                    if (newContext != context || !support.scope) {
480                      if (nid = context.getAttribute("id")) {
481                        nid = jQuery3.escapeSelector(nid);
482                      } else {
483                        context.setAttribute("id", nid = expando);
484                      }
485                    }
486                    groups = tokenize(selector);
487                    i3 = groups.length;
488                    while (i3--) {
489                      groups[i3] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i3]);
490                    }
491                    newSelector = groups.join(",");
492                  }
493                  try {
494                    push2.apply(
495                      results,
496                      newContext.querySelectorAll(newSelector)
497                    );
498                    return results;
499                  } catch (qsaError) {
500                    nonnativeSelectorCache(selector, true);
501                  } finally {
502                    if (nid === expando) {
503                      context.removeAttribute("id");
504                    }
505                  }
506                }
507              }
508            }
509            return select(selector.replace(rtrimCSS, "$1"), context, results, seed2);
510          }
511          function createCache() {
512            var keys = [];
513            function cache2(key, value2) {
514              if (keys.push(key + " ") > Expr.cacheLength) {
515                delete cache2[keys.shift()];
516              }
517              return cache2[key + " "] = value2;
518            }
519            return cache2;
520          }
521          function markFunction(fn) {
522            fn[expando] = true;
523            return fn;
524          }
525          function assert(fn) {
526            var el = document3.createElement("fieldset");
527            try {
528              return !!fn(el);
529            } catch (e) {
530              return false;
531            } finally {
532              if (el.parentNode) {
533                el.parentNode.removeChild(el);
534              }
535              el = null;
536            }
537          }
538          function createInputPseudo(type2) {
539            return function(elem) {
540              return nodeName(elem, "input") && elem.type === type2;
541            };
542          }
543          function createButtonPseudo(type2) {
544            return function(elem) {
545              return (nodeName(elem, "input") || nodeName(elem, "button")) && elem.type === type2;
546            };
547          }
548          function createDisabledPseudo(disabled) {
549            return function(elem) {
550              if ("form" in elem) {
551                if (elem.parentNode && elem.disabled === false) {
552                  if ("label" in elem) {
553                    if ("label" in elem.parentNode) {
554                      return elem.parentNode.disabled === disabled;
555                    } else {
556                      return elem.disabled === disabled;
557                    }
558                  }
559                  return elem.isDisabled === disabled || elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;
560                }
561                return elem.disabled === disabled;
562              } else if ("label" in elem) {
563                return elem.disabled === disabled;
564              }
565              return false;
566            };
567          }
568          function createPositionalPseudo(fn) {
569            return markFunction(function(argument) {
570              argument = +argument;
571              return markFunction(function(seed2, matches2) {
572                var j, matchIndexes = fn([], seed2.length, argument), i3 = matchIndexes.length;
573                while (i3--) {
574                  if (seed2[j = matchIndexes[i3]]) {
575                    seed2[j] = !(matches2[j] = seed2[j]);
576                  }
577                }
578              });
579            });
580          }
581          function testContext(context) {
582            return context && typeof context.getElementsByTagName !== "undefined" && context;
583          }
584          function setDocument(node) {
585            var subWindow, doc = node ? node.ownerDocument || node : preferredDoc;
586            if (doc == document3 || doc.nodeType !== 9 || !doc.documentElement) {
587              return document3;
588            }
589            document3 = doc;
590            documentElement2 = document3.documentElement;
591            documentIsHTML = !jQuery3.isXMLDoc(document3);
592            matches = documentElement2.matches || documentElement2.webkitMatchesSelector || documentElement2.msMatchesSelector;
593            if (preferredDoc != document3 && (subWindow = document3.defaultView) && subWindow.top !== subWindow) {
594              subWindow.addEventListener("unload", unloadHandler2);
595            }
596            support.getById = assert(function(el) {
597              documentElement2.appendChild(el).id = jQuery3.expando;
598              return !document3.getElementsByName || !document3.getElementsByName(jQuery3.expando).length;
599            });
600            support.disconnectedMatch = assert(function(el) {
601              return matches.call(el, "*");
602            });
603            support.scope = assert(function() {
604              return document3.querySelectorAll(":scope");
605            });
606            support.cssHas = assert(function() {
607              try {
608                document3.querySelector(":has(*,:jqfake)");
609                return false;
610              } catch (e) {
611                return true;
612              }
613            });
614            if (support.getById) {
615              Expr.filter.ID = function(id) {
616                var attrId = id.replace(runescape, funescape);
617                return function(elem) {
618                  return elem.getAttribute("id") === attrId;
619                };
620              };
621              Expr.find.ID = function(id, context) {
622                if (typeof context.getElementById !== "undefined" && documentIsHTML) {
623                  var elem = context.getElementById(id);
624                  return elem ? [elem] : [];
625                }
626              };
627            } else {
628              Expr.filter.ID = function(id) {
629                var attrId = id.replace(runescape, funescape);
630                return function(elem) {
631                  var node2 = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
632                  return node2 && node2.value === attrId;
633                };
634              };
635              Expr.find.ID = function(id, context) {
636                if (typeof context.getElementById !== "undefined" && documentIsHTML) {
637                  var node2, i3, elems, elem = context.getElementById(id);
638                  if (elem) {
639                    node2 = elem.getAttributeNode("id");
640                    if (node2 && node2.value === id) {
641                      return [elem];
642                    }
643                    elems = context.getElementsByName(id);
644                    i3 = 0;
645                    while (elem = elems[i3++]) {
646                      node2 = elem.getAttributeNode("id");
647                      if (node2 && node2.value === id) {
648                        return [elem];
649                      }
650                    }
651                  }
652                  return [];
653                }
654              };
655            }
656            Expr.find.TAG = function(tag, context) {
657              if (typeof context.getElementsByTagName !== "undefined") {
658                return context.getElementsByTagName(tag);
659              } else {
660                return context.querySelectorAll(tag);
661              }
662            };
663            Expr.find.CLASS = function(className, context) {
664              if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
665                return context.getElementsByClassName(className);
666              }
667            };
668            rbuggyQSA = [];
669            assert(function(el) {
670              var input;
671              documentElement2.appendChild(el).innerHTML = "<a id='" + expando + "' href='' disabled='disabled'></a><select id='" + expando + "-\r\\' disabled='disabled'><option selected=''></option></select>";
672              if (!el.querySelectorAll("[selected]").length) {
673                rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
674              }
675              if (!el.querySelectorAll("[id~=" + expando + "-]").length) {
676                rbuggyQSA.push("~=");
677              }
678              if (!el.querySelectorAll("a#" + expando + "+*").length) {
679                rbuggyQSA.push(".#.+[+~]");
680              }
681              if (!el.querySelectorAll(":checked").length) {
682                rbuggyQSA.push(":checked");
683              }
684              input = document3.createElement("input");
685              input.setAttribute("type", "hidden");
686              el.appendChild(input).setAttribute("name", "D");
687              documentElement2.appendChild(el).disabled = true;
688              if (el.querySelectorAll(":disabled").length !== 2) {
689                rbuggyQSA.push(":enabled", ":disabled");
690              }
691              input = document3.createElement("input");
692              input.setAttribute("name", "");
693              el.appendChild(input);
694              if (!el.querySelectorAll("[name='']").length) {
695                rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + `*(?:''|"")`);
696              }
697            });
698            if (!support.cssHas) {
699              rbuggyQSA.push(":has");
700            }
701            rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
702            sortOrder = function(a, b) {
703              if (a === b) {
704                hasDuplicate = true;
705                return 0;
706              }
707              var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
708              if (compare) {
709                return compare;
710              }
711              compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;
712              if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
713                if (a === document3 || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) {
714                  return -1;
715                }
716                if (b === document3 || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) {
717                  return 1;
718                }
719                return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0;
720              }
721              return compare & 4 ? -1 : 1;
722            };
723            return document3;
724          }
725          find.matches = function(expr, elements) {
726            return find(expr, null, null, elements);
727          };
728          find.matchesSelector = function(elem, expr) {
729            setDocument(elem);
730            if (documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
731              try {
732                var ret = matches.call(elem, expr);
733                if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {
734                  return ret;
735                }
736              } catch (e) {
737                nonnativeSelectorCache(expr, true);
738              }
739            }
740            return find(expr, document3, null, [elem]).length > 0;
741          };
742          find.contains = function(context, elem) {
743            if ((context.ownerDocument || context) != document3) {
744              setDocument(context);
745            }
746            return jQuery3.contains(context, elem);
747          };
748          find.attr = function(elem, name2) {
749            if ((elem.ownerDocument || elem) != document3) {
750              setDocument(elem);
751            }
752            var fn = Expr.attrHandle[name2.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name2.toLowerCase()) ? fn(elem, name2, !documentIsHTML) : void 0;
753            if (val !== void 0) {
754              return val;
755            }
756            return elem.getAttribute(name2);
757          };
758          find.error = function(msg) {
759            throw new Error("Syntax error, unrecognized expression: " + msg);
760          };
761          jQuery3.uniqueSort = function(results) {
762            var elem, duplicates = [], j = 0, i3 = 0;
763            hasDuplicate = !support.sortStable;
764            sortInput = !support.sortStable && slice.call(results, 0);
765            sort.call(results, sortOrder);
766            if (hasDuplicate) {
767              while (elem = results[i3++]) {
768                if (elem === results[i3]) {
769                  j = duplicates.push(i3);
770                }
771              }
772              while (j--) {
773                splice.call(results, duplicates[j], 1);
774              }
775            }
776            sortInput = null;
777            return results;
778          };
779          jQuery3.fn.uniqueSort = function() {
780            return this.pushStack(jQuery3.uniqueSort(slice.apply(this)));
781          };
782          Expr = jQuery3.expr = {
783            cacheLength: 50,
784            createPseudo: markFunction,
785            match: matchExpr,
786            attrHandle: {},
787            find: {},
788            relative: {
789              ">": { dir: "parentNode", first: true },
790              " ": { dir: "parentNode" },
791              "+": { dir: "previousSibling", first: true },
792              "~": { dir: "previousSibling" }
793            },
794            preFilter: {
795              ATTR: function(match) {
796                match[1] = match[1].replace(runescape, funescape);
797                match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
798                if (match[2] === "~=") {
799                  match[3] = " " + match[3] + " ";
800                }
801                return match.slice(0, 4);
802              },
803              CHILD: function(match) {
804                match[1] = match[1].toLowerCase();
805                if (match[1].slice(0, 3) === "nth") {
806                  if (!match[3]) {
807                    find.error(match[0]);
808                  }
809                  match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
810                  match[5] = +(match[7] + match[8] || match[3] === "odd");
811                } else if (match[3]) {
812                  find.error(match[0]);
813                }
814                return match;
815              },
816              PSEUDO: function(match) {
817                var excess, unquoted = !match[6] && match[2];
818                if (matchExpr.CHILD.test(match[0])) {
819                  return null;
820                }
821                if (match[3]) {
822                  match[2] = match[4] || match[5] || "";
823                } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
824                  match[0] = match[0].slice(0, excess);
825                  match[2] = unquoted.slice(0, excess);
826                }
827                return match.slice(0, 3);
828              }
829            },
830            filter: {
831              TAG: function(nodeNameSelector) {
832                var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
833                return nodeNameSelector === "*" ? function() {
834                  return true;
835                } : function(elem) {
836                  return nodeName(elem, expectedNodeName);
837                };
838              },
839              CLASS: function(className) {
840                var pattern = classCache[className + " "];
841                return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) {
842                  return pattern.test(
843                    typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || ""
844                  );
845                });
846              },
847              ATTR: function(name2, operator, check) {
848                return function(elem) {
849                  var result = find.attr(elem, name2);
850                  if (result == null) {
851                    return operator === "!=";
852                  }
853                  if (!operator) {
854                    return true;
855                  }
856                  result += "";
857                  if (operator === "=") {
858                    return result === check;
859                  }
860                  if (operator === "!=") {
861                    return result !== check;
862                  }
863                  if (operator === "^=") {
864                    return check && result.indexOf(check) === 0;
865                  }
866                  if (operator === "*=") {
867                    return check && result.indexOf(check) > -1;
868                  }
869                  if (operator === "$=") {
870                    return check && result.slice(-check.length) === check;
871                  }
872                  if (operator === "~=") {
873                    return (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1;
874                  }
875                  if (operator === "|=") {
876                    return result === check || result.slice(0, check.length + 1) === check + "-";
877                  }
878                  return false;
879                };
880              },
881              CHILD: function(type2, what, _argument, first, last) {
882                var simple = type2.slice(0, 3) !== "nth", forward = type2.slice(-4) !== "last", ofType = what === "of-type";
883                return first === 1 && last === 0 ? function(elem) {
884                  return !!elem.parentNode;
885                } : function(elem, _context, xml) {
886                  var cache2, outerCache, node, nodeIndex, start, dir2 = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name2 = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false;
887                  if (parent) {
888                    if (simple) {
889                      while (dir2) {
890                        node = elem;
891                        while (node = node[dir2]) {
892                          if (ofType ? nodeName(node, name2) : node.nodeType === 1) {
893                            return false;
894                          }
895                        }
896                        start = dir2 = type2 === "only" && !start && "nextSibling";
897                      }
898                      return true;
899                    }
900                    start = [forward ? parent.firstChild : parent.lastChild];
901                    if (forward && useCache) {
902                      outerCache = parent[expando] || (parent[expando] = {});
903                      cache2 = outerCache[type2] || [];
904                      nodeIndex = cache2[0] === dirruns && cache2[1];
905                      diff = nodeIndex && cache2[2];
906                      node = nodeIndex && parent.childNodes[nodeIndex];
907                      while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start.pop()) {
908                        if (node.nodeType === 1 && ++diff && node === elem) {
909                          outerCache[type2] = [dirruns, nodeIndex, diff];
910                          break;
911                        }
912                      }
913                    } else {
914                      if (useCache) {
915                        outerCache = elem[expando] || (elem[expando] = {});
916                        cache2 = outerCache[type2] || [];
917                        nodeIndex = cache2[0] === dirruns && cache2[1];
918                        diff = nodeIndex;
919                      }
920                      if (diff === false) {
921                        while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start.pop()) {
922                          if ((ofType ? nodeName(node, name2) : node.nodeType === 1) && ++diff) {
923                            if (useCache) {
924                              outerCache = node[expando] || (node[expando] = {});
925                              outerCache[type2] = [dirruns, diff];
926                            }
927                            if (node === elem) {
928                              break;
929                            }
930                          }
931                        }
932                      }
933                    }
934                    diff -= last;
935                    return diff === first || diff % first === 0 && diff / first >= 0;
936                  }
937                };
938              },
939              PSEUDO: function(pseudo, argument) {
940                var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error("unsupported pseudo: " + pseudo);
941                if (fn[expando]) {
942                  return fn(argument);
943                }
944                if (fn.length > 1) {
945                  args = [pseudo, pseudo, "", argument];
946                  return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed2, matches2) {
947                    var idx, matched = fn(seed2, argument), i3 = matched.length;
948                    while (i3--) {
949                      idx = indexOf.call(seed2, matched[i3]);
950                      seed2[idx] = !(matches2[idx] = matched[i3]);
951                    }
952                  }) : function(elem) {
953                    return fn(elem, 0, args);
954                  };
955                }
956                return fn;
957              }
958            },
959            pseudos: {
960              not: markFunction(function(selector) {
961                var input = [], results = [], matcher = compile(selector.replace(rtrimCSS, "$1"));
962                return matcher[expando] ? markFunction(function(seed2, matches2, _context, xml) {
963                  var elem, unmatched = matcher(seed2, null, xml, []), i3 = seed2.length;
964                  while (i3--) {
965                    if (elem = unmatched[i3]) {
966                      seed2[i3] = !(matches2[i3] = elem);
967                    }
968                  }
969                }) : function(elem, _context, xml) {
970                  input[0] = elem;
971                  matcher(input, null, xml, results);
972                  input[0] = null;
973                  return !results.pop();
974                };
975              }),
976              has: markFunction(function(selector) {
977                return function(elem) {
978                  return find(selector, elem).length > 0;
979                };
980              }),
981              contains: markFunction(function(text) {
982                text = text.replace(runescape, funescape);
983                return function(elem) {
984                  return (elem.textContent || jQuery3.text(elem)).indexOf(text) > -1;
985                };
986              }),
987              lang: markFunction(function(lang) {
988                if (!ridentifier.test(lang || "")) {
989                  find.error("unsupported lang: " + lang);
990                }
991                lang = lang.replace(runescape, funescape).toLowerCase();
992                return function(elem) {
993                  var elemLang;
994                  do {
995                    if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
996                      elemLang = elemLang.toLowerCase();
997                      return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
998                    }
999                  } while ((elem = elem.parentNode) && elem.nodeType === 1);
1000                  return false;
1001                };
1002              }),
1003              target: function(elem) {
1004                var hash = window2.location && window2.location.hash;
1005                return hash && hash.slice(1) === elem.id;
1006              },
1007              root: function(elem) {
1008                return elem === documentElement2;
1009              },
1010              focus: function(elem) {
1011                return elem === safeActiveElement() && document3.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex);
1012              },
1013              enabled: createDisabledPseudo(false),
1014              disabled: createDisabledPseudo(true),
1015              checked: function(elem) {
1016                return nodeName(elem, "input") && !!elem.checked || nodeName(elem, "option") && !!elem.selected;
1017              },
1018              selected: function(elem) {
1019                if (elem.parentNode) {
1020                  elem.parentNode.selectedIndex;
1021                }
1022                return elem.selected === true;
1023              },
1024              empty: function(elem) {
1025                for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
1026                  if (elem.nodeType < 6) {
1027                    return false;
1028                  }
1029                }
1030                return true;
1031              },
1032              parent: function(elem) {
1033                return !Expr.pseudos.empty(elem);
1034              },
1035              header: function(elem) {
1036                return rheader.test(elem.nodeName);
1037              },
1038              input: function(elem) {
1039                return rinputs.test(elem.nodeName);
1040              },
1041              button: function(elem) {
1042                return nodeName(elem, "input") && elem.type === "button" || nodeName(elem, "button");
1043              },
1044              text: function(elem) {
1045                var attr;
1046                return nodeName(elem, "input") && elem.type === "text" && ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
1047              },
1048              first: createPositionalPseudo(function() {
1049                return [0];
1050              }),
1051              last: createPositionalPseudo(function(_matchIndexes, length2) {
1052                return [length2 - 1];
1053              }),
1054              eq: createPositionalPseudo(function(_matchIndexes, length2, argument) {
1055                return [argument < 0 ? argument + length2 : argument];
1056              }),
1057              even: createPositionalPseudo(function(matchIndexes, length2) {
1058                var i3 = 0;
1059                for (; i3 < length2; i3 += 2) {
1060                  matchIndexes.push(i3);
1061                }
1062                return matchIndexes;
1063              }),
1064              odd: createPositionalPseudo(function(matchIndexes, length2) {
1065                var i3 = 1;
1066                for (; i3 < length2; i3 += 2) {
1067                  matchIndexes.push(i3);
1068                }
1069                return matchIndexes;
1070              }),
1071              lt: createPositionalPseudo(function(matchIndexes, length2, argument) {
1072                var i3;
1073                if (argument < 0) {
1074                  i3 = argument + length2;
1075                } else if (argument > length2) {
1076                  i3 = length2;
1077                } else {
1078                  i3 = argument;
1079                }
1080                for (; --i3 >= 0; ) {
1081                  matchIndexes.push(i3);
1082                }
1083                return matchIndexes;
1084              }),
1085              gt: createPositionalPseudo(function(matchIndexes, length2, argument) {
1086                var i3 = argument < 0 ? argument + length2 : argument;
1087                for (; ++i3 < length2; ) {
1088                  matchIndexes.push(i3);
1089                }
1090                return matchIndexes;
1091              })
1092            }
1093          };
1094          Expr.pseudos.nth = Expr.pseudos.eq;
1095          for (i2 in { radio: true, checkbox: true, file: true, password: true, image: true }) {
1096            Expr.pseudos[i2] = createInputPseudo(i2);
1097          }
1098          for (i2 in { submit: true, reset: true }) {
1099            Expr.pseudos[i2] = createButtonPseudo(i2);
1100          }
1101          function setFilters() {
1102          }
1103          setFilters.prototype = Expr.filters = Expr.pseudos;
1104          Expr.setFilters = new setFilters();
1105          function tokenize(selector, parseOnly) {
1106            var matched, match, tokens, type2, soFar, groups, preFilters, cached = tokenCache[selector + " "];
1107            if (cached) {
1108              return parseOnly ? 0 : cached.slice(0);
1109            }
1110            soFar = selector;
1111            groups = [];
1112            preFilters = Expr.preFilter;
1113            while (soFar) {
1114              if (!matched || (match = rcomma.exec(soFar))) {
1115                if (match) {
1116                  soFar = soFar.slice(match[0].length) || soFar;
1117                }
1118                groups.push(tokens = []);
1119              }
1120              matched = false;
1121              if (match = rleadingCombinator.exec(soFar)) {
1122                matched = match.shift();
1123                tokens.push({
1124                  value: matched,
1125                  type: match[0].replace(rtrimCSS, " ")
1126                });
1127                soFar = soFar.slice(matched.length);
1128              }
1129              for (type2 in Expr.filter) {
1130                if ((match = matchExpr[type2].exec(soFar)) && (!preFilters[type2] || (match = preFilters[type2](match)))) {
1131                  matched = match.shift();
1132                  tokens.push({
1133                    value: matched,
1134                    type: type2,
1135                    matches: match
1136                  });
1137                  soFar = soFar.slice(matched.length);
1138                }
1139              }
1140              if (!matched) {
1141                break;
1142              }
1143            }
1144            if (parseOnly) {
1145              return soFar.length;
1146            }
1147            return soFar ? find.error(selector) : tokenCache(selector, groups).slice(0);
1148          }
1149          function toSelector(tokens) {
1150            var i3 = 0, len = tokens.length, selector = "";
1151            for (; i3 < len; i3++) {
1152              selector += tokens[i3].value;
1153            }
1154            return selector;
1155          }
1156          function addCombinator(matcher, combinator, base) {
1157            var dir2 = combinator.dir, skip = combinator.next, key = skip || dir2, checkNonElements = base && key === "parentNode", doneName = done++;
1158            return combinator.first ? function(elem, context, xml) {
1159              while (elem = elem[dir2]) {
1160                if (elem.nodeType === 1 || checkNonElements) {
1161                  return matcher(elem, context, xml);
1162                }
1163              }
1164              return false;
1165            } : function(elem, context, xml) {
1166              var oldCache, outerCache, newCache = [dirruns, doneName];
1167              if (xml) {
1168                while (elem = elem[dir2]) {
1169                  if (elem.nodeType === 1 || checkNonElements) {
1170                    if (matcher(elem, context, xml)) {
1171                      return true;
1172                    }
1173                  }
1174                }
1175              } else {
1176                while (elem = elem[dir2]) {
1177                  if (elem.nodeType === 1 || checkNonElements) {
1178                    outerCache = elem[expando] || (elem[expando] = {});
1179                    if (skip && nodeName(elem, skip)) {
1180                      elem = elem[dir2] || elem;
1181                    } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
1182                      return newCache[2] = oldCache[2];
1183                    } else {
1184                      outerCache[key] = newCache;
1185                      if (newCache[2] = matcher(elem, context, xml)) {
1186                        return true;
1187                      }
1188                    }
1189                  }
1190                }
1191              }
1192              return false;
1193            };
1194          }
1195          function elementMatcher(matchers) {
1196            return matchers.length > 1 ? function(elem, context, xml) {
1197              var i3 = matchers.length;
1198              while (i3--) {
1199                if (!matchers[i3](elem, context, xml)) {
1200                  return false;
1201                }
1202              }
1203              return true;
1204            } : matchers[0];
1205          }
1206          function multipleContexts(selector, contexts, results) {
1207            var i3 = 0, len = contexts.length;
1208            for (; i3 < len; i3++) {
1209              find(selector, contexts[i3], results);
1210            }
1211            return results;
1212          }
1213          function condense(unmatched, map2, filter, context, xml) {
1214            var elem, newUnmatched = [], i3 = 0, len = unmatched.length, mapped = map2 != null;
1215            for (; i3 < len; i3++) {
1216              if (elem = unmatched[i3]) {
1217                if (!filter || filter(elem, context, xml)) {
1218                  newUnmatched.push(elem);
1219                  if (mapped) {
1220                    map2.push(i3);
1221                  }
1222                }
1223              }
1224            }
1225            return newUnmatched;
1226          }
1227          function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
1228            if (postFilter && !postFilter[expando]) {
1229              postFilter = setMatcher(postFilter);
1230            }
1231            if (postFinder && !postFinder[expando]) {
1232              postFinder = setMatcher(postFinder, postSelector);
1233            }
1234            return markFunction(function(seed2, results, context, xml) {
1235              var temp, i3, elem, matcherOut, preMap = [], postMap = [], preexisting = results.length, elems = seed2 || multipleContexts(
1236                selector || "*",
1237                context.nodeType ? [context] : context,
1238                []
1239              ), matcherIn = preFilter && (seed2 || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems;
1240              if (matcher) {
1241                matcherOut = postFinder || (seed2 ? preFilter : preexisting || postFilter) ? [] : results;
1242                matcher(matcherIn, matcherOut, context, xml);
1243              } else {
1244                matcherOut = matcherIn;
1245              }
1246              if (postFilter) {
1247                temp = condense(matcherOut, postMap);
1248                postFilter(temp, [], context, xml);
1249                i3 = temp.length;
1250                while (i3--) {
1251                  if (elem = temp[i3]) {
1252                    matcherOut[postMap[i3]] = !(matcherIn[postMap[i3]] = elem);
1253                  }
1254                }
1255              }
1256              if (seed2) {
1257                if (postFinder || preFilter) {
1258                  if (postFinder) {
1259                    temp = [];
1260                    i3 = matcherOut.length;
1261                    while (i3--) {
1262                      if (elem = matcherOut[i3]) {
1263                        temp.push(matcherIn[i3] = elem);
1264                      }
1265                    }
1266                    postFinder(null, matcherOut = [], temp, xml);
1267                  }
1268                  i3 = matcherOut.length;
1269                  while (i3--) {
1270                    if ((elem = matcherOut[i3]) && (temp = postFinder ? indexOf.call(seed2, elem) : preMap[i3]) > -1) {
1271                      seed2[temp] = !(results[temp] = elem);
1272                    }
1273                  }
1274                }
1275              } else {
1276                matcherOut = condense(
1277                  matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut
1278                );
1279                if (postFinder) {
1280                  postFinder(null, results, matcherOut, xml);
1281                } else {
1282                  push2.apply(results, matcherOut);
1283                }
1284              }
1285            });
1286          }
1287          function matcherFromTokens(tokens) {
1288            var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i3 = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) {
1289              return elem === checkContext;
1290            }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) {
1291              return indexOf.call(checkContext, elem) > -1;
1292            }, implicitRelative, true), matchers = [function(elem, context, xml) {
1293              var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
1294              checkContext = null;
1295              return ret;
1296            }];
1297            for (; i3 < len; i3++) {
1298              if (matcher = Expr.relative[tokens[i3].type]) {
1299                matchers = [addCombinator(elementMatcher(matchers), matcher)];
1300              } else {
1301                matcher = Expr.filter[tokens[i3].type].apply(null, tokens[i3].matches);
1302                if (matcher[expando]) {
1303                  j = ++i3;
1304                  for (; j < len; j++) {
1305                    if (Expr.relative[tokens[j].type]) {
1306                      break;
1307                    }
1308                  }
1309                  return setMatcher(
1310                    i3 > 1 && elementMatcher(matchers),
1311                    i3 > 1 && toSelector(
1312                      tokens.slice(0, i3 - 1).concat({ value: tokens[i3 - 2].type === " " ? "*" : "" })
1313                    ).replace(rtrimCSS, "$1"),
1314                    matcher,
1315                    i3 < j && matcherFromTokens(tokens.slice(i3, j)),
1316                    j < len && matcherFromTokens(tokens = tokens.slice(j)),
1317                    j < len && toSelector(tokens)
1318                  );
1319                }
1320                matchers.push(matcher);
1321              }
1322            }
1323            return elementMatcher(matchers);
1324          }
1325          function matcherFromGroupMatchers(elementMatchers, setMatchers) {
1326            var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed2, context, xml, results, outermost) {
1327              var elem, j, matcher, matchedCount = 0, i3 = "0", unmatched = seed2 && [], setMatched = [], contextBackup = outermostContext, elems = seed2 || byElement && Expr.find.TAG("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
1328              if (outermost) {
1329                outermostContext = context == document3 || context || outermost;
1330              }
1331              for (; i3 !== len && (elem = elems[i3]) != null; i3++) {
1332                if (byElement && elem) {
1333                  j = 0;
1334                  if (!context && elem.ownerDocument != document3) {
1335                    setDocument(elem);
1336                    xml = !documentIsHTML;
1337                  }
1338                  while (matcher = elementMatchers[j++]) {
1339                    if (matcher(elem, context || document3, xml)) {
1340                      push2.call(results, elem);
1341                      break;
1342                    }
1343                  }
1344                  if (outermost) {
1345                    dirruns = dirrunsUnique;
1346                  }
1347                }
1348                if (bySet) {
1349                  if (elem = !matcher && elem) {
1350                    matchedCount--;
1351                  }
1352                  if (seed2) {
1353                    unmatched.push(elem);
1354                  }
1355                }
1356              }
1357              matchedCount += i3;
1358              if (bySet && i3 !== matchedCount) {
1359                j = 0;
1360                while (matcher = setMatchers[j++]) {
1361                  matcher(unmatched, setMatched, context, xml);
1362                }
1363                if (seed2) {
1364                  if (matchedCount > 0) {
1365                    while (i3--) {
1366                      if (!(unmatched[i3] || setMatched[i3])) {
1367                        setMatched[i3] = pop.call(results);
1368                      }
1369                    }
1370                  }
1371                  setMatched = condense(setMatched);
1372                }
1373                push2.apply(results, setMatched);
1374                if (outermost && !seed2 && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
1375                  jQuery3.uniqueSort(results);
1376                }
1377              }
1378              if (outermost) {
1379                dirruns = dirrunsUnique;
1380                outermostContext = contextBackup;
1381              }
1382              return unmatched;
1383            };
1384            return bySet ? markFunction(superMatcher) : superMatcher;
1385          }
1386          function compile(selector, match) {
1387            var i3, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "];
1388            if (!cached) {
1389              if (!match) {
1390                match = tokenize(selector);
1391              }
1392              i3 = match.length;
1393              while (i3--) {
1394                cached = matcherFromTokens(match[i3]);
1395                if (cached[expando]) {
1396                  setMatchers.push(cached);
1397                } else {
1398                  elementMatchers.push(cached);
1399                }
1400              }
1401              cached = compilerCache(
1402                selector,
1403                matcherFromGroupMatchers(elementMatchers, setMatchers)
1404              );
1405              cached.selector = selector;
1406            }
1407            return cached;
1408          }
1409          function select(selector, context, results, seed2) {
1410            var i3, tokens, token, type2, find2, compiled = typeof selector === "function" && selector, match = !seed2 && tokenize(selector = compiled.selector || selector);
1411            results = results || [];
1412            if (match.length === 1) {
1413              tokens = match[0] = match[0].slice(0);
1414              if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
1415                context = (Expr.find.ID(
1416                  token.matches[0].replace(runescape, funescape),
1417                  context
1418                ) || [])[0];
1419                if (!context) {
1420                  return results;
1421                } else if (compiled) {
1422                  context = context.parentNode;
1423                }
1424                selector = selector.slice(tokens.shift().value.length);
1425              }
1426              i3 = matchExpr.needsContext.test(selector) ? 0 : tokens.length;
1427              while (i3--) {
1428                token = tokens[i3];
1429                if (Expr.relative[type2 = token.type]) {
1430                  break;
1431                }
1432                if (find2 = Expr.find[type2]) {
1433                  if (seed2 = find2(
1434                    token.matches[0].replace(runescape, funescape),
1435                    rsibling.test(tokens[0].type) && testContext(context.parentNode) || context
1436                  )) {
1437                    tokens.splice(i3, 1);
1438                    selector = seed2.length && toSelector(tokens);
1439                    if (!selector) {
1440                      push2.apply(results, seed2);
1441                      return results;
1442                    }
1443                    break;
1444                  }
1445                }
1446              }
1447            }
1448            (compiled || compile(selector, match))(
1449              seed2,
1450              context,
1451              !documentIsHTML,
1452              results,
1453              !context || rsibling.test(selector) && testContext(context.parentNode) || context
1454            );
1455            return results;
1456          }
1457          support.sortStable = expando.split("").sort(sortOrder).join("") === expando;
1458          setDocument();
1459          support.sortDetached = assert(function(el) {
1460            return el.compareDocumentPosition(document3.createElement("fieldset")) & 1;
1461          });
1462          jQuery3.find = find;
1463          jQuery3.expr[":"] = jQuery3.expr.pseudos;
1464          jQuery3.unique = jQuery3.uniqueSort;
1465          find.compile = compile;
1466          find.select = select;
1467          find.setDocument = setDocument;
1468          find.escape = jQuery3.escapeSelector;
1469          find.getText = jQuery3.text;
1470          find.isXML = jQuery3.isXMLDoc;
1471          find.selectors = jQuery3.expr;
1472          find.support = jQuery3.support;
1473          find.uniqueSort = jQuery3.uniqueSort;
1474        })();
1475        var dir = function(elem, dir2, until) {
1476          var matched = [], truncate = until !== void 0;
1477          while ((elem = elem[dir2]) && elem.nodeType !== 9) {
1478            if (elem.nodeType === 1) {
1479              if (truncate && jQuery3(elem).is(until)) {
1480                break;
1481              }
1482              matched.push(elem);
1483            }
1484          }
1485          return matched;
1486        };
1487        var siblings = function(n, elem) {
1488          var matched = [];
1489          for (; n; n = n.nextSibling) {
1490            if (n.nodeType === 1 && n !== elem) {
1491              matched.push(n);
1492            }
1493          }
1494          return matched;
1495        };
1496        var rneedsContext = jQuery3.expr.match.needsContext;
1497        var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
1498        function winnow(elements, qualifier, not) {
1499          if (isFunction(qualifier)) {
1500            return jQuery3.grep(elements, function(elem, i2) {
1501              return !!qualifier.call(elem, i2, elem) !== not;
1502            });
1503          }
1504          if (qualifier.nodeType) {
1505            return jQuery3.grep(elements, function(elem) {
1506              return elem === qualifier !== not;
1507            });
1508          }
1509          if (typeof qualifier !== "string") {
1510            return jQuery3.grep(elements, function(elem) {
1511              return indexOf.call(qualifier, elem) > -1 !== not;
1512            });
1513          }
1514          return jQuery3.filter(qualifier, elements, not);
1515        }
1516        jQuery3.filter = function(expr, elems, not) {
1517          var elem = elems[0];
1518          if (not) {
1519            expr = ":not(" + expr + ")";
1520          }
1521          if (elems.length === 1 && elem.nodeType === 1) {
1522            return jQuery3.find.matchesSelector(elem, expr) ? [elem] : [];
1523          }
1524          return jQuery3.find.matches(expr, jQuery3.grep(elems, function(elem2) {
1525            return elem2.nodeType === 1;
1526          }));
1527        };
1528        jQuery3.fn.extend({
1529          find: function(selector) {
1530            var i2, ret, len = this.length, self2 = this;
1531            if (typeof selector !== "string") {
1532              return this.pushStack(jQuery3(selector).filter(function() {
1533                for (i2 = 0; i2 < len; i2++) {
1534                  if (jQuery3.contains(self2[i2], this)) {
1535                    return true;
1536                  }
1537                }
1538              }));
1539            }
1540            ret = this.pushStack([]);
1541            for (i2 = 0; i2 < len; i2++) {
1542              jQuery3.find(selector, self2[i2], ret);
1543            }
1544            return len > 1 ? jQuery3.uniqueSort(ret) : ret;
1545          },
1546          filter: function(selector) {
1547            return this.pushStack(winnow(this, selector || [], false));
1548          },
1549          not: function(selector) {
1550            return this.pushStack(winnow(this, selector || [], true));
1551          },
1552          is: function(selector) {
1553            return !!winnow(
1554              this,
1555              typeof selector === "string" && rneedsContext.test(selector) ? jQuery3(selector) : selector || [],
1556              false
1557            ).length;
1558          }
1559        });
1560        var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery3.fn.init = function(selector, context, root) {
1561          var match, elem;
1562          if (!selector) {
1563            return this;
1564          }
1565          root = root || rootjQuery;
1566          if (typeof selector === "string") {
1567            if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {
1568              match = [null, selector, null];
1569            } else {
1570              match = rquickExpr.exec(selector);
1571            }
1572            if (match && (match[1] || !context)) {
1573              if (match[1]) {
1574                context = context instanceof jQuery3 ? context[0] : context;
1575                jQuery3.merge(this, jQuery3.parseHTML(
1576                  match[1],
1577                  context && context.nodeType ? context.ownerDocument || context : document2,
1578                  true
1579                ));
1580                if (rsingleTag.test(match[1]) && jQuery3.isPlainObject(context)) {
1581                  for (match in context) {
1582                    if (isFunction(this[match])) {
1583                      this[match](context[match]);
1584                    } else {
1585                      this.attr(match, context[match]);
1586                    }
1587                  }
1588                }
1589                return this;
1590              } else {
1591                elem = document2.getElementById(match[2]);
1592                if (elem) {
1593                  this[0] = elem;
1594                  this.length = 1;
1595                }
1596                return this;
1597              }
1598            } else if (!context || context.jquery) {
1599              return (context || root).find(selector);
1600            } else {
1601              return this.constructor(context).find(selector);
1602            }
1603          } else if (selector.nodeType) {
1604            this[0] = selector;
1605            this.length = 1;
1606            return this;
1607          } else if (isFunction(selector)) {
1608            return root.ready !== void 0 ? root.ready(selector) : selector(jQuery3);
1609          }
1610          return jQuery3.makeArray(selector, this);
1611        };
1612        init.prototype = jQuery3.fn;
1613        rootjQuery = jQuery3(document2);
1614        var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = {
1615          children: true,
1616          contents: true,
1617          next: true,
1618          prev: true
1619        };
1620        jQuery3.fn.extend({
1621          has: function(target) {
1622            var targets = jQuery3(target, this), l = targets.length;
1623            return this.filter(function() {
1624              var i2 = 0;
1625              for (; i2 < l; i2++) {
1626                if (jQuery3.contains(this, targets[i2])) {
1627                  return true;
1628                }
1629              }
1630            });
1631          },
1632          closest: function(selectors, context) {
1633            var cur, i2 = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery3(selectors);
1634            if (!rneedsContext.test(selectors)) {
1635              for (; i2 < l; i2++) {
1636                for (cur = this[i2]; cur && cur !== context; cur = cur.parentNode) {
1637                  if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : cur.nodeType === 1 && jQuery3.find.matchesSelector(cur, selectors))) {
1638                    matched.push(cur);
1639                    break;
1640                  }
1641                }
1642              }
1643            }
1644            return this.pushStack(matched.length > 1 ? jQuery3.uniqueSort(matched) : matched);
1645          },
1646          index: function(elem) {
1647            if (!elem) {
1648              return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
1649            }
1650            if (typeof elem === "string") {
1651              return indexOf.call(jQuery3(elem), this[0]);
1652            }
1653            return indexOf.call(
1654              this,
1655              elem.jquery ? elem[0] : elem
1656            );
1657          },
1658          add: function(selector, context) {
1659            return this.pushStack(
1660              jQuery3.uniqueSort(
1661                jQuery3.merge(this.get(), jQuery3(selector, context))
1662              )
1663            );
1664          },
1665          addBack: function(selector) {
1666            return this.add(
1667              selector == null ? this.prevObject : this.prevObject.filter(selector)
1668            );
1669          }
1670        });
1671        function sibling(cur, dir2) {
1672          while ((cur = cur[dir2]) && cur.nodeType !== 1) {
1673          }
1674          return cur;
1675        }
1676        jQuery3.each({
1677          parent: function(elem) {
1678            var parent = elem.parentNode;
1679            return parent && parent.nodeType !== 11 ? parent : null;
1680          },
1681          parents: function(elem) {
1682            return dir(elem, "parentNode");
1683          },
1684          parentsUntil: function(elem, _i, until) {
1685            return dir(elem, "parentNode", until);
1686          },
1687          next: function(elem) {
1688            return sibling(elem, "nextSibling");
1689          },
1690          prev: function(elem) {
1691            return sibling(elem, "previousSibling");
1692          },
1693          nextAll: function(elem) {
1694            return dir(elem, "nextSibling");
1695          },
1696          prevAll: function(elem) {
1697            return dir(elem, "previousSibling");
1698          },
1699          nextUntil: function(elem, _i, until) {
1700            return dir(elem, "nextSibling", until);
1701          },
1702          prevUntil: function(elem, _i, until) {
1703            return dir(elem, "previousSibling", until);
1704          },
1705          siblings: function(elem) {
1706            return siblings((elem.parentNode || {}).firstChild, elem);
1707          },
1708          children: function(elem) {
1709            return siblings(elem.firstChild);
1710          },
1711          contents: function(elem) {
1712            if (elem.contentDocument != null && getProto(elem.contentDocument)) {
1713              return elem.contentDocument;
1714            }
1715            if (nodeName(elem, "template")) {
1716              elem = elem.content || elem;
1717            }
1718            return jQuery3.merge([], elem.childNodes);
1719          }
1720        }, function(name2, fn) {
1721          jQuery3.fn[name2] = function(until, selector) {
1722            var matched = jQuery3.map(this, fn, until);
1723            if (name2.slice(-5) !== "Until") {
1724              selector = until;
1725            }
1726            if (selector && typeof selector === "string") {
1727              matched = jQuery3.filter(selector, matched);
1728            }
1729            if (this.length > 1) {
1730              if (!guaranteedUnique[name2]) {
1731                jQuery3.uniqueSort(matched);
1732              }
1733              if (rparentsprev.test(name2)) {
1734                matched.reverse();
1735              }
1736            }
1737            return this.pushStack(matched);
1738          };
1739        });
1740        var rnothtmlwhite = /[^\x20\t\r\n\f]+/g;
1741        function createOptions(options) {
1742          var object = {};
1743          jQuery3.each(options.match(rnothtmlwhite) || [], function(_, flag) {
1744            object[flag] = true;
1745          });
1746          return object;
1747        }
1748        jQuery3.Callbacks = function(options) {
1749          options = typeof options === "string" ? createOptions(options) : jQuery3.extend({}, options);
1750          var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() {
1751            locked = locked || options.once;
1752            fired = firing = true;
1753            for (; queue.length; firingIndex = -1) {
1754              memory = queue.shift();
1755              while (++firingIndex < list.length) {
1756                if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
1757                  firingIndex = list.length;
1758                  memory = false;
1759                }
1760              }
1761            }
1762            if (!options.memory) {
1763              memory = false;
1764            }
1765            firing = false;
1766            if (locked) {
1767              if (memory) {
1768                list = [];
1769              } else {
1770                list = "";
1771              }
1772            }
1773          }, self2 = {
1774            add: function() {
1775              if (list) {
1776                if (memory && !firing) {
1777                  firingIndex = list.length - 1;
1778                  queue.push(memory);
1779                }
1780                (function add(args) {
1781                  jQuery3.each(args, function(_, arg) {
1782                    if (isFunction(arg)) {
1783                      if (!options.unique || !self2.has(arg)) {
1784                        list.push(arg);
1785                      }
1786                    } else if (arg && arg.length && toType(arg) !== "string") {
1787                      add(arg);
1788                    }
1789                  });
1790                })(arguments);
1791                if (memory && !firing) {
1792                  fire();
1793                }
1794              }
1795              return this;
1796            },
1797            remove: function() {
1798              jQuery3.each(arguments, function(_, arg) {
1799                var index;
1800                while ((index = jQuery3.inArray(arg, list, index)) > -1) {
1801                  list.splice(index, 1);
1802                  if (index <= firingIndex) {
1803                    firingIndex--;
1804                  }
1805                }
1806              });
1807              return this;
1808            },
1809            has: function(fn) {
1810              return fn ? jQuery3.inArray(fn, list) > -1 : list.length > 0;
1811            },
1812            empty: function() {
1813              if (list) {
1814                list = [];
1815              }
1816              return this;
1817            },
1818            disable: function() {
1819              locked = queue = [];
1820              list = memory = "";
1821              return this;
1822            },
1823            disabled: function() {
1824              return !list;
1825            },
1826            lock: function() {
1827              locked = queue = [];
1828              if (!memory && !firing) {
1829                list = memory = "";
1830              }
1831              return this;
1832            },
1833            locked: function() {
1834              return !!locked;
1835            },
1836            fireWith: function(context, args) {
1837              if (!locked) {
1838                args = args || [];
1839                args = [context, args.slice ? args.slice() : args];
1840                queue.push(args);
1841                if (!firing) {
1842                  fire();
1843                }
1844              }
1845              return this;
1846            },
1847            fire: function() {
1848              self2.fireWith(this, arguments);
1849              return this;
1850            },
1851            fired: function() {
1852              return !!fired;
1853            }
1854          };
1855          return self2;
1856        };
1857        function Identity(v) {
1858          return v;
1859        }
1860        function Thrower(ex) {
1861          throw ex;
1862        }
1863        function adoptValue(value2, resolve, reject, noValue) {
1864          var method;
1865          try {
1866            if (value2 && isFunction(method = value2.promise)) {
1867              method.call(value2).done(resolve).fail(reject);
1868            } else if (value2 && isFunction(method = value2.then)) {
1869              method.call(value2, resolve, reject);
1870            } else {
1871              resolve.apply(void 0, [value2].slice(noValue));
1872            }
1873          } catch (value3) {
1874            reject.apply(void 0, [value3]);
1875          }
1876        }
1877        jQuery3.extend({
1878          Deferred: function(func) {
1879            var tuples = [
1880              [
1881                "notify",
1882                "progress",
1883                jQuery3.Callbacks("memory"),
1884                jQuery3.Callbacks("memory"),
1885                2
1886              ],
1887              [
1888                "resolve",
1889                "done",
1890                jQuery3.Callbacks("once memory"),
1891                jQuery3.Callbacks("once memory"),
1892                0,
1893                "resolved"
1894              ],
1895              [
1896                "reject",
1897                "fail",
1898                jQuery3.Callbacks("once memory"),
1899                jQuery3.Callbacks("once memory"),
1900                1,
1901                "rejected"
1902              ]
1903            ], state = "pending", promise = {
1904              state: function() {
1905                return state;
1906              },
1907              always: function() {
1908                deferred.done(arguments).fail(arguments);
1909                return this;
1910              },
1911              "catch": function(fn) {
1912                return promise.then(null, fn);
1913              },
1914              pipe: function() {
1915                var fns = arguments;
1916                return jQuery3.Deferred(function(newDefer) {
1917                  jQuery3.each(tuples, function(_i, tuple) {
1918                    var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]];
1919                    deferred[tuple[1]](function() {
1920                      var returned = fn && fn.apply(this, arguments);
1921                      if (returned && isFunction(returned.promise)) {
1922                        returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
1923                      } else {
1924                        newDefer[tuple[0] + "With"](
1925                          this,
1926                          fn ? [returned] : arguments
1927                        );
1928                      }
1929                    });
1930                  });
1931                  fns = null;
1932                }).promise();
1933              },
1934              then: function(onFulfilled, onRejected, onProgress) {
1935                var maxDepth = 0;
1936                function resolve(depth, deferred2, handler, special) {
1937                  return function() {
1938                    var that = this, args = arguments, mightThrow = function() {
1939                      var returned, then;
1940                      if (depth < maxDepth) {
1941                        return;
1942                      }
1943                      returned = handler.apply(that, args);
1944                      if (returned === deferred2.promise()) {
1945                        throw new TypeError("Thenable self-resolution");
1946                      }
1947                      then = returned && (typeof returned === "object" || typeof returned === "function") && returned.then;
1948                      if (isFunction(then)) {
1949                        if (special) {
1950                          then.call(
1951                            returned,
1952                            resolve(maxDepth, deferred2, Identity, special),
1953                            resolve(maxDepth, deferred2, Thrower, special)
1954                          );
1955                        } else {
1956                          maxDepth++;
1957                          then.call(
1958                            returned,
1959                            resolve(maxDepth, deferred2, Identity, special),
1960                            resolve(maxDepth, deferred2, Thrower, special),
1961                            resolve(
1962                              maxDepth,
1963                              deferred2,
1964                              Identity,
1965                              deferred2.notifyWith
1966                            )
1967                          );
1968                        }
1969                      } else {
1970                        if (handler !== Identity) {
1971                          that = void 0;
1972                          args = [returned];
1973                        }
1974                        (special || deferred2.resolveWith)(that, args);
1975                      }
1976                    }, process = special ? mightThrow : function() {
1977                      try {
1978                        mightThrow();
1979                      } catch (e) {
1980                        if (jQuery3.Deferred.exceptionHook) {
1981                          jQuery3.Deferred.exceptionHook(
1982                            e,
1983                            process.error
1984                          );
1985                        }
1986                        if (depth + 1 >= maxDepth) {
1987                          if (handler !== Thrower) {
1988                            that = void 0;
1989                            args = [e];
1990                          }
1991                          deferred2.rejectWith(that, args);
1992                        }
1993                      }
1994                    };
1995                    if (depth) {
1996                      process();
1997                    } else {
1998                      if (jQuery3.Deferred.getErrorHook) {
1999                        process.error = jQuery3.Deferred.getErrorHook();
2000                      } else if (jQuery3.Deferred.getStackHook) {
2001                        process.error = jQuery3.Deferred.getStackHook();
2002                      }
2003                      window2.setTimeout(process);
2004                    }
2005                  };
2006                }
2007                return jQuery3.Deferred(function(newDefer) {
2008                  tuples[0][3].add(
2009                    resolve(
2010                      0,
2011                      newDefer,
2012                      isFunction(onProgress) ? onProgress : Identity,
2013                      newDefer.notifyWith
2014                    )
2015                  );
2016                  tuples[1][3].add(
2017                    resolve(
2018                      0,
2019                      newDefer,
2020                      isFunction(onFulfilled) ? onFulfilled : Identity
2021                    )
2022                  );
2023                  tuples[2][3].add(
2024                    resolve(
2025                      0,
2026                      newDefer,
2027                      isFunction(onRejected) ? onRejected : Thrower
2028                    )
2029                  );
2030                }).promise();
2031              },
2032              promise: function(obj) {
2033                return obj != null ? jQuery3.extend(obj, promise) : promise;
2034              }
2035            }, deferred = {};
2036            jQuery3.each(tuples, function(i2, tuple) {
2037              var list = tuple[2], stateString = tuple[5];
2038              promise[tuple[1]] = list.add;
2039              if (stateString) {
2040                list.add(
2041                  function() {
2042                    state = stateString;
2043                  },
2044                  tuples[3 - i2][2].disable,
2045                  tuples[3 - i2][3].disable,
2046                  tuples[0][2].lock,
2047                  tuples[0][3].lock
2048                );
2049              }
2050              list.add(tuple[3].fire);
2051              deferred[tuple[0]] = function() {
2052                deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments);
2053                return this;
2054              };
2055              deferred[tuple[0] + "With"] = list.fireWith;
2056            });
2057            promise.promise(deferred);
2058            if (func) {
2059              func.call(deferred, deferred);
2060            }
2061            return deferred;
2062          },
2063          when: function(singleValue) {
2064            var remaining = arguments.length, i2 = remaining, resolveContexts = Array(i2), resolveValues = slice.call(arguments), primary = jQuery3.Deferred(), updateFunc = function(i3) {
2065              return function(value2) {
2066                resolveContexts[i3] = this;
2067                resolveValues[i3] = arguments.length > 1 ? slice.call(arguments) : value2;
2068                if (!--remaining) {
2069                  primary.resolveWith(resolveContexts, resolveValues);
2070                }
2071              };
2072            };
2073            if (remaining <= 1) {
2074              adoptValue(
2075                singleValue,
2076                primary.done(updateFunc(i2)).resolve,
2077                primary.reject,
2078                !remaining
2079              );
2080              if (primary.state() === "pending" || isFunction(resolveValues[i2] && resolveValues[i2].then)) {
2081                return primary.then();
2082              }
2083            }
2084            while (i2--) {
2085              adoptValue(resolveValues[i2], updateFunc(i2), primary.reject);
2086            }
2087            return primary.promise();
2088          }
2089        });
2090        var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
2091        jQuery3.Deferred.exceptionHook = function(error, asyncError) {
2092          if (window2.console && window2.console.warn && error && rerrorNames.test(error.name)) {
2093            window2.console.warn(
2094              "jQuery.Deferred exception: " + error.message,
2095              error.stack,
2096              asyncError
2097            );
2098          }
2099        };
2100        jQuery3.readyException = function(error) {
2101          window2.setTimeout(function() {
2102            throw error;
2103          });
2104        };
2105        var readyList = jQuery3.Deferred();
2106        jQuery3.fn.ready = function(fn) {
2107          readyList.then(fn).catch(function(error) {
2108            jQuery3.readyException(error);
2109          });
2110          return this;
2111        };
2112        jQuery3.extend({
2113          isReady: false,
2114          readyWait: 1,
2115          ready: function(wait) {
2116            if (wait === true ? --jQuery3.readyWait : jQuery3.isReady) {
2117              return;
2118            }
2119            jQuery3.isReady = true;
2120            if (wait !== true && --jQuery3.readyWait > 0) {
2121              return;
2122            }
2123            readyList.resolveWith(document2, [jQuery3]);
2124          }
2125        });
2126        jQuery3.ready.then = readyList.then;
2127        function completed() {
2128          document2.removeEventListener("DOMContentLoaded", completed);
2129          window2.removeEventListener("load", completed);
2130          jQuery3.ready();
2131        }
2132        if (document2.readyState === "complete" || document2.readyState !== "loading" && !document2.documentElement.doScroll) {
2133          window2.setTimeout(jQuery3.ready);
2134        } else {
2135          document2.addEventListener("DOMContentLoaded", completed);
2136          window2.addEventListener("load", completed);
2137        }
2138        var access = function(elems, fn, key, value2, chainable, emptyGet, raw) {
2139          var i2 = 0, len = elems.length, bulk = key == null;
2140          if (toType(key) === "object") {
2141            chainable = true;
2142            for (i2 in key) {
2143              access(elems, fn, i2, key[i2], true, emptyGet, raw);
2144            }
2145          } else if (value2 !== void 0) {
2146            chainable = true;
2147            if (!isFunction(value2)) {
2148              raw = true;
2149            }
2150            if (bulk) {
2151              if (raw) {
2152                fn.call(elems, value2);
2153                fn = null;
2154              } else {
2155                bulk = fn;
2156                fn = function(elem, _key, value3) {
2157                  return bulk.call(jQuery3(elem), value3);
2158                };
2159              }
2160            }
2161            if (fn) {
2162              for (; i2 < len; i2++) {
2163                fn(
2164                  elems[i2],
2165                  key,
2166                  raw ? value2 : value2.call(elems[i2], i2, fn(elems[i2], key))
2167                );
2168              }
2169            }
2170          }
2171          if (chainable) {
2172            return elems;
2173          }
2174          if (bulk) {
2175            return fn.call(elems);
2176          }
2177          return len ? fn(elems[0], key) : emptyGet;
2178        };
2179        var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g;
2180        function fcamelCase(_all, letter) {
2181          return letter.toUpperCase();
2182        }
2183        function camelCase(string) {
2184          return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
2185        }
2186        var acceptData = function(owner) {
2187          return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
2188        };
2189        function Data() {
2190          this.expando = jQuery3.expando + Data.uid++;
2191        }
2192        Data.uid = 1;
2193        Data.prototype = {
2194          cache: function(owner) {
2195            var value2 = owner[this.expando];
2196            if (!value2) {
2197              value2 = {};
2198              if (acceptData(owner)) {
2199                if (owner.nodeType) {
2200                  owner[this.expando] = value2;
2201                } else {
2202                  Object.defineProperty(owner, this.expando, {
2203                    value: value2,
2204                    configurable: true
2205                  });
2206                }
2207              }
2208            }
2209            return value2;
2210          },
2211          set: function(owner, data, value2) {
2212            var prop, cache2 = this.cache(owner);
2213            if (typeof data === "string") {
2214              cache2[camelCase(data)] = value2;
2215            } else {
2216              for (prop in data) {
2217                cache2[camelCase(prop)] = data[prop];
2218              }
2219            }
2220            return cache2;
2221          },
2222          get: function(owner, key) {
2223            return key === void 0 ? this.cache(owner) : owner[this.expando] && owner[this.expando][camelCase(key)];
2224          },
2225          access: function(owner, key, value2) {
2226            if (key === void 0 || key && typeof key === "string" && value2 === void 0) {
2227              return this.get(owner, key);
2228            }
2229            this.set(owner, key, value2);
2230            return value2 !== void 0 ? value2 : key;
2231          },
2232          remove: function(owner, key) {
2233            var i2, cache2 = owner[this.expando];
2234            if (cache2 === void 0) {
2235              return;
2236            }
2237            if (key !== void 0) {
2238              if (Array.isArray(key)) {
2239                key = key.map(camelCase);
2240              } else {
2241                key = camelCase(key);
2242                key = key in cache2 ? [key] : key.match(rnothtmlwhite) || [];
2243              }
2244              i2 = key.length;
2245              while (i2--) {
2246                delete cache2[key[i2]];
2247              }
2248            }
2249            if (key === void 0 || jQuery3.isEmptyObject(cache2)) {
2250              if (owner.nodeType) {
2251                owner[this.expando] = void 0;
2252              } else {
2253                delete owner[this.expando];
2254              }
2255            }
2256          },
2257          hasData: function(owner) {
2258            var cache2 = owner[this.expando];
2259            return cache2 !== void 0 && !jQuery3.isEmptyObject(cache2);
2260          }
2261        };
2262        var dataPriv = new Data();
2263        var dataUser = new Data();
2264        var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g;
2265        function getData(data) {
2266          if (data === "true") {
2267            return true;
2268          }
2269          if (data === "false") {
2270            return false;
2271          }
2272          if (data === "null") {
2273            return null;
2274          }
2275          if (data === +data + "") {
2276            return +data;
2277          }
2278          if (rbrace.test(data)) {
2279            return JSON.parse(data);
2280          }
2281          return data;
2282        }
2283        function dataAttr(elem, key, data) {
2284          var name2;
2285          if (data === void 0 && elem.nodeType === 1) {
2286            name2 = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
2287            data = elem.getAttribute(name2);
2288            if (typeof data === "string") {
2289              try {
2290                data = getData(data);
2291              } catch (e) {
2292              }
2293              dataUser.set(elem, key, data);
2294            } else {
2295              data = void 0;
2296            }
2297          }
2298          return data;
2299        }
2300        jQuery3.extend({
2301          hasData: function(elem) {
2302            return dataUser.hasData(elem) || dataPriv.hasData(elem);
2303          },
2304          data: function(elem, name2, data) {
2305            return dataUser.access(elem, name2, data);
2306          },
2307          removeData: function(elem, name2) {
2308            dataUser.remove(elem, name2);
2309          },
2310          _data: function(elem, name2, data) {
2311            return dataPriv.access(elem, name2, data);
2312          },
2313          _removeData: function(elem, name2) {
2314            dataPriv.remove(elem, name2);
2315          }
2316        });
2317        jQuery3.fn.extend({
2318          data: function(key, value2) {
2319            var i2, name2, data, elem = this[0], attrs = elem && elem.attributes;
2320            if (key === void 0) {
2321              if (this.length) {
2322                data = dataUser.get(elem);
2323                if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
2324                  i2 = attrs.length;
2325                  while (i2--) {
2326                    if (attrs[i2]) {
2327                      name2 = attrs[i2].name;
2328                      if (name2.indexOf("data-") === 0) {
2329                        name2 = camelCase(name2.slice(5));
2330                        dataAttr(elem, name2, data[name2]);
2331                      }
2332                    }
2333                  }
2334                  dataPriv.set(elem, "hasDataAttrs", true);
2335                }
2336              }
2337              return data;
2338            }
2339            if (typeof key === "object") {
2340              return this.each(function() {
2341                dataUser.set(this, key);
2342              });
2343            }
2344            return access(this, function(value3) {
2345              var data2;
2346              if (elem && value3 === void 0) {
2347                data2 = dataUser.get(elem, key);
2348                if (data2 !== void 0) {
2349                  return data2;
2350                }
2351                data2 = dataAttr(elem, key);
2352                if (data2 !== void 0) {
2353                  return data2;
2354                }
2355                return;
2356              }
2357              this.each(function() {
2358                dataUser.set(this, key, value3);
2359              });
2360            }, null, value2, arguments.length > 1, null, true);
2361          },
2362          removeData: function(key) {
2363            return this.each(function() {
2364              dataUser.remove(this, key);
2365            });
2366          }
2367        });
2368        jQuery3.extend({
2369          queue: function(elem, type2, data) {
2370            var queue;
2371            if (elem) {
2372              type2 = (type2 || "fx") + "queue";
2373              queue = dataPriv.get(elem, type2);
2374              if (data) {
2375                if (!queue || Array.isArray(data)) {
2376                  queue = dataPriv.access(elem, type2, jQuery3.makeArray(data));
2377                } else {
2378                  queue.push(data);
2379                }
2380              }
2381              return queue || [];
2382            }
2383          },
2384          dequeue: function(elem, type2) {
2385            type2 = type2 || "fx";
2386            var queue = jQuery3.queue(elem, type2), startLength = queue.length, fn = queue.shift(), hooks = jQuery3._queueHooks(elem, type2), next = function() {
2387              jQuery3.dequeue(elem, type2);
2388            };
2389            if (fn === "inprogress") {
2390              fn = queue.shift();
2391              startLength--;
2392            }
2393            if (fn) {
2394              if (type2 === "fx") {
2395                queue.unshift("inprogress");
2396              }
2397              delete hooks.stop;
2398              fn.call(elem, next, hooks);
2399            }
2400            if (!startLength && hooks) {
2401              hooks.empty.fire();
2402            }
2403          },
2404          _queueHooks: function(elem, type2) {
2405            var key = type2 + "queueHooks";
2406            return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
2407              empty: jQuery3.Callbacks("once memory").add(function() {
2408                dataPriv.remove(elem, [type2 + "queue", key]);
2409              })
2410            });
2411          }
2412        });
2413        jQuery3.fn.extend({
2414          queue: function(type2, data) {
2415            var setter = 2;
2416            if (typeof type2 !== "string") {
2417              data = type2;
2418              type2 = "fx";
2419              setter--;
2420            }
2421            if (arguments.length < setter) {
2422              return jQuery3.queue(this[0], type2);
2423            }
2424            return data === void 0 ? this : this.each(function() {
2425              var queue = jQuery3.queue(this, type2, data);
2426              jQuery3._queueHooks(this, type2);
2427              if (type2 === "fx" && queue[0] !== "inprogress") {
2428                jQuery3.dequeue(this, type2);
2429              }
2430            });
2431          },
2432          dequeue: function(type2) {
2433            return this.each(function() {
2434              jQuery3.dequeue(this, type2);
2435            });
2436          },
2437          clearQueue: function(type2) {
2438            return this.queue(type2 || "fx", []);
2439          },
2440          promise: function(type2, obj) {
2441            var tmp, count = 1, defer = jQuery3.Deferred(), elements = this, i2 = this.length, resolve = function() {
2442              if (!--count) {
2443                defer.resolveWith(elements, [elements]);
2444              }
2445            };
2446            if (typeof type2 !== "string") {
2447              obj = type2;
2448              type2 = void 0;
2449            }
2450            type2 = type2 || "fx";
2451            while (i2--) {
2452              tmp = dataPriv.get(elements[i2], type2 + "queueHooks");
2453              if (tmp && tmp.empty) {
2454                count++;
2455                tmp.empty.add(resolve);
2456              }
2457            }
2458            resolve();
2459            return defer.promise(obj);
2460          }
2461        });
2462        var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
2463        var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
2464        var cssExpand = ["Top", "Right", "Bottom", "Left"];
2465        var documentElement = document2.documentElement;
2466        var isAttached = function(elem) {
2467          return jQuery3.contains(elem.ownerDocument, elem);
2468        }, composed = { composed: true };
2469        if (documentElement.getRootNode) {
2470          isAttached = function(elem) {
2471            return jQuery3.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;
2472          };
2473        }
2474        var isHiddenWithinTree = function(elem, el) {
2475          elem = el || elem;
2476          return elem.style.display === "none" || elem.style.display === "" && isAttached(elem) && jQuery3.css(elem, "display") === "none";
2477        };
2478        function adjustCSS(elem, prop, valueParts, tween) {
2479          var adjusted, scale, maxIterations = 20, currentValue = tween ? function() {
2480            return tween.cur();
2481          } : function() {
2482            return jQuery3.css(elem, prop, "");
2483          }, initial = currentValue(), unit = valueParts && valueParts[3] || (jQuery3.cssNumber[prop] ? "" : "px"), initialInUnit = elem.nodeType && (jQuery3.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery3.css(elem, prop));
2484          if (initialInUnit && initialInUnit[3] !== unit) {
2485            initial = initial / 2;
2486            unit = unit || initialInUnit[3];
2487            initialInUnit = +initial || 1;
2488            while (maxIterations--) {
2489              jQuery3.style(elem, prop, initialInUnit + unit);
2490              if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {
2491                maxIterations = 0;
2492              }
2493              initialInUnit = initialInUnit / scale;
2494            }
2495            initialInUnit = initialInUnit * 2;
2496            jQuery3.style(elem, prop, initialInUnit + unit);
2497            valueParts = valueParts || [];
2498          }
2499          if (valueParts) {
2500            initialInUnit = +initialInUnit || +initial || 0;
2501            adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
2502            if (tween) {
2503              tween.unit = unit;
2504              tween.start = initialInUnit;
2505              tween.end = adjusted;
2506            }
2507          }
2508          return adjusted;
2509        }
2510        var defaultDisplayMap = {};
2511        function getDefaultDisplay(elem) {
2512          var temp, doc = elem.ownerDocument, nodeName2 = elem.nodeName, display = defaultDisplayMap[nodeName2];
2513          if (display) {
2514            return display;
2515          }
2516          temp = doc.body.appendChild(doc.createElement(nodeName2));
2517          display = jQuery3.css(temp, "display");
2518          temp.parentNode.removeChild(temp);
2519          if (display === "none") {
2520            display = "block";
2521          }
2522          defaultDisplayMap[nodeName2] = display;
2523          return display;
2524        }
2525        function showHide(elements, show) {
2526          var display, elem, values = [], index = 0, length2 = elements.length;
2527          for (; index < length2; index++) {
2528            elem = elements[index];
2529            if (!elem.style) {
2530              continue;
2531            }
2532            display = elem.style.display;
2533            if (show) {
2534              if (display === "none") {
2535                values[index] = dataPriv.get(elem, "display") || null;
2536                if (!values[index]) {
2537                  elem.style.display = "";
2538                }
2539              }
2540              if (elem.style.display === "" && isHiddenWithinTree(elem)) {
2541                values[index] = getDefaultDisplay(elem);
2542              }
2543            } else {
2544              if (display !== "none") {
2545                values[index] = "none";
2546                dataPriv.set(elem, "display", display);
2547              }
2548            }
2549          }
2550          for (index = 0; index < length2; index++) {
2551            if (values[index] != null) {
2552              elements[index].style.display = values[index];
2553            }
2554          }
2555          return elements;
2556        }
2557        jQuery3.fn.extend({
2558          show: function() {
2559            return showHide(this, true);
2560          },
2561          hide: function() {
2562            return showHide(this);
2563          },
2564          toggle: function(state) {
2565            if (typeof state === "boolean") {
2566              return state ? this.show() : this.hide();
2567            }
2568            return this.each(function() {
2569              if (isHiddenWithinTree(this)) {
2570                jQuery3(this).show();
2571              } else {
2572                jQuery3(this).hide();
2573              }
2574            });
2575          }
2576        });
2577        var rcheckableType = /^(?:checkbox|radio)$/i;
2578        var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
2579        var rscriptType = /^$|^module$|\/(?:java|ecma)script/i;
2580        (function() {
2581          var fragment = document2.createDocumentFragment(), div = fragment.appendChild(document2.createElement("div")), input = document2.createElement("input");
2582          input.setAttribute("type", "radio");
2583          input.setAttribute("checked", "checked");
2584          input.setAttribute("name", "t");
2585          div.appendChild(input);
2586          support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked;
2587          div.innerHTML = "<textarea>x</textarea>";
2588          support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue;
2589          div.innerHTML = "<option></option>";
2590          support.option = !!div.lastChild;
2591        })();
2592        var wrapMap = {
2593          thead: [1, "<table>", "</table>"],
2594          col: [2, "<table><colgroup>", "</colgroup></table>"],
2595          tr: [2, "<table><tbody>", "</tbody></table>"],
2596          td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
2597          _default: [0, "", ""]
2598        };
2599        wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
2600        wrapMap.th = wrapMap.td;
2601        if (!support.option) {
2602          wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
2603        }
2604        function getAll(context, tag) {
2605          var ret;
2606          if (typeof context.getElementsByTagName !== "undefined") {
2607            ret = context.getElementsByTagName(tag || "*");
2608          } else if (typeof context.querySelectorAll !== "undefined") {
2609            ret = context.querySelectorAll(tag || "*");
2610          } else {
2611            ret = [];
2612          }
2613          if (tag === void 0 || tag && nodeName(context, tag)) {
2614            return jQuery3.merge([context], ret);
2615          }
2616          return ret;
2617        }
2618        function setGlobalEval(elems, refElements) {
2619          var i2 = 0, l = elems.length;
2620          for (; i2 < l; i2++) {
2621            dataPriv.set(
2622              elems[i2],
2623              "globalEval",
2624              !refElements || dataPriv.get(refElements[i2], "globalEval")
2625            );
2626          }
2627        }
2628        var rhtml = /<|&#?\w+;/;
2629        function buildFragment(elems, context, scripts, selection, ignored) {
2630          var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i2 = 0, l = elems.length;
2631          for (; i2 < l; i2++) {
2632            elem = elems[i2];
2633            if (elem || elem === 0) {
2634              if (toType(elem) === "object") {
2635                jQuery3.merge(nodes, elem.nodeType ? [elem] : elem);
2636              } else if (!rhtml.test(elem)) {
2637                nodes.push(context.createTextNode(elem));
2638              } else {
2639                tmp = tmp || fragment.appendChild(context.createElement("div"));
2640                tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
2641                wrap = wrapMap[tag] || wrapMap._default;
2642                tmp.innerHTML = wrap[1] + jQuery3.htmlPrefilter(elem) + wrap[2];
2643                j = wrap[0];
2644                while (j--) {
2645                  tmp = tmp.lastChild;
2646                }
2647                jQuery3.merge(nodes, tmp.childNodes);
2648                tmp = fragment.firstChild;
2649                tmp.textContent = "";
2650              }
2651            }
2652          }
2653          fragment.textContent = "";
2654          i2 = 0;
2655          while (elem = nodes[i2++]) {
2656            if (selection && jQuery3.inArray(elem, selection) > -1) {
2657              if (ignored) {
2658                ignored.push(elem);
2659              }
2660              continue;
2661            }
2662            attached = isAttached(elem);
2663            tmp = getAll(fragment.appendChild(elem), "script");
2664            if (attached) {
2665              setGlobalEval(tmp);
2666            }
2667            if (scripts) {
2668              j = 0;
2669              while (elem = tmp[j++]) {
2670                if (rscriptType.test(elem.type || "")) {
2671                  scripts.push(elem);
2672                }
2673              }
2674            }
2675          }
2676          return fragment;
2677        }
2678        var rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
2679        function returnTrue() {
2680          return true;
2681        }
2682        function returnFalse() {
2683          return false;
2684        }
2685        function on2(elem, types, selector, data, fn, one) {
2686          var origFn, type2;
2687          if (typeof types === "object") {
2688            if (typeof selector !== "string") {
2689              data = data || selector;
2690              selector = void 0;
2691            }
2692            for (type2 in types) {
2693              on2(elem, type2, selector, data, types[type2], one);
2694            }
2695            return elem;
2696          }
2697          if (data == null && fn == null) {
2698            fn = selector;
2699            data = selector = void 0;
2700          } else if (fn == null) {
2701            if (typeof selector === "string") {
2702              fn = data;
2703              data = void 0;
2704            } else {
2705              fn = data;
2706              data = selector;
2707              selector = void 0;
2708            }
2709          }
2710          if (fn === false) {
2711            fn = returnFalse;
2712          } else if (!fn) {
2713            return elem;
2714          }
2715          if (one === 1) {
2716            origFn = fn;
2717            fn = function(event) {
2718              jQuery3().off(event);
2719              return origFn.apply(this, arguments);
2720            };
2721            fn.guid = origFn.guid || (origFn.guid = jQuery3.guid++);
2722          }
2723          return elem.each(function() {
2724            jQuery3.event.add(this, types, fn, data, selector);
2725          });
2726        }
2727        jQuery3.event = {
2728          global: {},
2729          add: function(elem, types, handler, data, selector) {
2730            var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type2, namespaces, origType, elemData = dataPriv.get(elem);
2731            if (!acceptData(elem)) {
2732              return;
2733            }
2734            if (handler.handler) {
2735              handleObjIn = handler;
2736              handler = handleObjIn.handler;
2737              selector = handleObjIn.selector;
2738            }
2739            if (selector) {
2740              jQuery3.find.matchesSelector(documentElement, selector);
2741            }
2742            if (!handler.guid) {
2743              handler.guid = jQuery3.guid++;
2744            }
2745            if (!(events = elemData.events)) {
2746              events = elemData.events = /* @__PURE__ */ Object.create(null);
2747            }
2748            if (!(eventHandle = elemData.handle)) {
2749              eventHandle = elemData.handle = function(e) {
2750                return typeof jQuery3 !== "undefined" && jQuery3.event.triggered !== e.type ? jQuery3.event.dispatch.apply(elem, arguments) : void 0;
2751              };
2752            }
2753            types = (types || "").match(rnothtmlwhite) || [""];
2754            t = types.length;
2755            while (t--) {
2756              tmp = rtypenamespace.exec(types[t]) || [];
2757              type2 = origType = tmp[1];
2758              namespaces = (tmp[2] || "").split(".").sort();
2759              if (!type2) {
2760                continue;
2761              }
2762              special = jQuery3.event.special[type2] || {};
2763              type2 = (selector ? special.delegateType : special.bindType) || type2;
2764              special = jQuery3.event.special[type2] || {};
2765              handleObj = jQuery3.extend({
2766                type: type2,
2767                origType,
2768                data,
2769                handler,
2770                guid: handler.guid,
2771                selector,
2772                needsContext: selector && jQuery3.expr.match.needsContext.test(selector),
2773                namespace: namespaces.join(".")
2774              }, handleObjIn);
2775              if (!(handlers = events[type2])) {
2776                handlers = events[type2] = [];
2777                handlers.delegateCount = 0;
2778                if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
2779                  if (elem.addEventListener) {
2780                    elem.addEventListener(type2, eventHandle);
2781                  }
2782                }
2783              }
2784              if (special.add) {
2785                special.add.call(elem, handleObj);
2786                if (!handleObj.handler.guid) {
2787                  handleObj.handler.guid = handler.guid;
2788                }
2789              }
2790              if (selector) {
2791                handlers.splice(handlers.delegateCount++, 0, handleObj);
2792              } else {
2793                handlers.push(handleObj);
2794              }
2795              jQuery3.event.global[type2] = true;
2796            }
2797          },
2798          remove: function(elem, types, handler, selector, mappedTypes) {
2799            var j, origCount, tmp, events, t, handleObj, special, handlers, type2, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
2800            if (!elemData || !(events = elemData.events)) {
2801              return;
2802            }
2803            types = (types || "").match(rnothtmlwhite) || [""];
2804            t = types.length;
2805            while (t--) {
2806              tmp = rtypenamespace.exec(types[t]) || [];
2807              type2 = origType = tmp[1];
2808              namespaces = (tmp[2] || "").split(".").sort();
2809              if (!type2) {
2810                for (type2 in events) {
2811                  jQuery3.event.remove(elem, type2 + types[t], handler, selector, true);
2812                }
2813                continue;
2814              }
2815              special = jQuery3.event.special[type2] || {};
2816              type2 = (selector ? special.delegateType : special.bindType) || type2;
2817              handlers = events[type2] || [];
2818              tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)");
2819              origCount = j = handlers.length;
2820              while (j--) {
2821                handleObj = handlers[j];
2822                if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) {
2823                  handlers.splice(j, 1);
2824                  if (handleObj.selector) {
2825                    handlers.delegateCount--;
2826                  }
2827                  if (special.remove) {
2828                    special.remove.call(elem, handleObj);
2829                  }
2830                }
2831              }
2832              if (origCount && !handlers.length) {
2833                if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
2834                  jQuery3.removeEvent(elem, type2, elemData.handle);
2835                }
2836                delete events[type2];
2837              }
2838            }
2839            if (jQuery3.isEmptyObject(events)) {
2840              dataPriv.remove(elem, "handle events");
2841            }
2842          },
2843          dispatch: function(nativeEvent) {
2844            var i2, j, ret, matched, handleObj, handlerQueue, args = new Array(arguments.length), event = jQuery3.event.fix(nativeEvent), handlers = (dataPriv.get(this, "events") || /* @__PURE__ */ Object.create(null))[event.type] || [], special = jQuery3.event.special[event.type] || {};
2845            args[0] = event;
2846            for (i2 = 1; i2 < arguments.length; i2++) {
2847              args[i2] = arguments[i2];
2848            }
2849            event.delegateTarget = this;
2850            if (special.preDispatch && special.preDispatch.call(this, event) === false) {
2851              return;
2852            }
2853            handlerQueue = jQuery3.event.handlers.call(this, event, handlers);
2854            i2 = 0;
2855            while ((matched = handlerQueue[i2++]) && !event.isPropagationStopped()) {
2856              event.currentTarget = matched.elem;
2857              j = 0;
2858              while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
2859                if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {
2860                  event.handleObj = handleObj;
2861                  event.data = handleObj.data;
2862                  ret = ((jQuery3.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
2863                  if (ret !== void 0) {
2864                    if ((event.result = ret) === false) {
2865                      event.preventDefault();
2866                      event.stopPropagation();
2867                    }
2868                  }
2869                }
2870              }
2871            }
2872            if (special.postDispatch) {
2873              special.postDispatch.call(this, event);
2874            }
2875            return event.result;
2876          },
2877          handlers: function(event, handlers) {
2878            var i2, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target;
2879            if (delegateCount && cur.nodeType && !(event.type === "click" && event.button >= 1)) {
2880              for (; cur !== this; cur = cur.parentNode || this) {
2881                if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) {
2882                  matchedHandlers = [];
2883                  matchedSelectors = {};
2884                  for (i2 = 0; i2 < delegateCount; i2++) {
2885                    handleObj = handlers[i2];
2886                    sel = handleObj.selector + " ";
2887                    if (matchedSelectors[sel] === void 0) {
2888                      matchedSelectors[sel] = handleObj.needsContext ? jQuery3(sel, this).index(cur) > -1 : jQuery3.find(sel, this, null, [cur]).length;
2889                    }
2890                    if (matchedSelectors[sel]) {
2891                      matchedHandlers.push(handleObj);
2892                    }
2893                  }
2894                  if (matchedHandlers.length) {
2895                    handlerQueue.push({ elem: cur, handlers: matchedHandlers });
2896                  }
2897                }
2898              }
2899            }
2900            cur = this;
2901            if (delegateCount < handlers.length) {
2902              handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) });
2903            }
2904            return handlerQueue;
2905          },
2906          addProp: function(name2, hook) {
2907            Object.defineProperty(jQuery3.Event.prototype, name2, {
2908              enumerable: true,
2909              configurable: true,
2910              get: isFunction(hook) ? function() {
2911                if (this.originalEvent) {
2912                  return hook(this.originalEvent);
2913                }
2914              } : function() {
2915                if (this.originalEvent) {
2916                  return this.originalEvent[name2];
2917                }
2918              },
2919              set: function(value2) {
2920                Object.defineProperty(this, name2, {
2921                  enumerable: true,
2922                  configurable: true,
2923                  writable: true,
2924                  value: value2
2925                });
2926              }
2927            });
2928          },
2929          fix: function(originalEvent) {
2930            return originalEvent[jQuery3.expando] ? originalEvent : new jQuery3.Event(originalEvent);
2931          },
2932          special: {
2933            load: {
2934              noBubble: true
2935            },
2936            click: {
2937              setup: function(data) {
2938                var el = this || data;
2939                if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
2940                  leverageNative(el, "click", true);
2941                }
2942                return false;
2943              },
2944              trigger: function(data) {
2945                var el = this || data;
2946                if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
2947                  leverageNative(el, "click");
2948                }
2949                return true;
2950              },
2951              _default: function(event) {
2952                var target = event.target;
2953                return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a");
2954              }
2955            },
2956            beforeunload: {
2957              postDispatch: function(event) {
2958                if (event.result !== void 0 && event.originalEvent) {
2959                  event.originalEvent.returnValue = event.result;
2960                }
2961              }
2962            }
2963          }
2964        };
2965        function leverageNative(el, type2, isSetup) {
2966          if (!isSetup) {
2967            if (dataPriv.get(el, type2) === void 0) {
2968              jQuery3.event.add(el, type2, returnTrue);
2969            }
2970            return;
2971          }
2972          dataPriv.set(el, type2, false);
2973          jQuery3.event.add(el, type2, {
2974            namespace: false,
2975            handler: function(event) {
2976              var result, saved = dataPriv.get(this, type2);
2977              if (event.isTrigger & 1 && this[type2]) {
2978                if (!saved) {
2979                  saved = slice.call(arguments);
2980                  dataPriv.set(this, type2, saved);
2981                  this[type2]();
2982                  result = dataPriv.get(this, type2);
2983                  dataPriv.set(this, type2, false);
2984                  if (saved !== result) {
2985                    event.stopImmediatePropagation();
2986                    event.preventDefault();
2987                    return result;
2988                  }
2989                } else if ((jQuery3.event.special[type2] || {}).delegateType) {
2990                  event.stopPropagation();
2991                }
2992              } else if (saved) {
2993                dataPriv.set(this, type2, jQuery3.event.trigger(
2994                  saved[0],
2995                  saved.slice(1),
2996                  this
2997                ));
2998                event.stopPropagation();
2999                event.isImmediatePropagationStopped = returnTrue;
3000              }
3001            }
3002          });
3003        }
3004        jQuery3.removeEvent = function(elem, type2, handle) {
3005          if (elem.removeEventListener) {
3006            elem.removeEventListener(type2, handle);
3007          }
3008        };
3009        jQuery3.Event = function(src, props) {
3010          if (!(this instanceof jQuery3.Event)) {
3011            return new jQuery3.Event(src, props);
3012          }
3013          if (src && src.type) {
3014            this.originalEvent = src;
3015            this.type = src.type;
3016            this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === void 0 && src.returnValue === false ? returnTrue : returnFalse;
3017            this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;
3018            this.currentTarget = src.currentTarget;
3019            this.relatedTarget = src.relatedTarget;
3020          } else {
3021            this.type = src;
3022          }
3023          if (props) {
3024            jQuery3.extend(this, props);
3025          }
3026          this.timeStamp = src && src.timeStamp || Date.now();
3027          this[jQuery3.expando] = true;
3028        };
3029        jQuery3.Event.prototype = {
3030          constructor: jQuery3.Event,
3031          isDefaultPrevented: returnFalse,
3032          isPropagationStopped: returnFalse,
3033          isImmediatePropagationStopped: returnFalse,
3034          isSimulated: false,
3035          preventDefault: function() {
3036            var e = this.originalEvent;
3037            this.isDefaultPrevented = returnTrue;
3038            if (e && !this.isSimulated) {
3039              e.preventDefault();
3040            }
3041          },
3042          stopPropagation: function() {
3043            var e = this.originalEvent;
3044            this.isPropagationStopped = returnTrue;
3045            if (e && !this.isSimulated) {
3046              e.stopPropagation();
3047            }
3048          },
3049          stopImmediatePropagation: function() {
3050            var e = this.originalEvent;
3051            this.isImmediatePropagationStopped = returnTrue;
3052            if (e && !this.isSimulated) {
3053              e.stopImmediatePropagation();
3054            }
3055            this.stopPropagation();
3056          }
3057        };
3058        jQuery3.each({
3059          altKey: true,
3060          bubbles: true,
3061          cancelable: true,
3062          changedTouches: true,
3063          ctrlKey: true,
3064          detail: true,
3065          eventPhase: true,
3066          metaKey: true,
3067          pageX: true,
3068          pageY: true,
3069          shiftKey: true,
3070          view: true,
3071          "char": true,
3072          code: true,
3073          charCode: true,
3074          key: true,
3075          keyCode: true,
3076          button: true,
3077          buttons: true,
3078          clientX: true,
3079          clientY: true,
3080          offsetX: true,
3081          offsetY: true,
3082          pointerId: true,
3083          pointerType: true,
3084          screenX: true,
3085          screenY: true,
3086          targetTouches: true,
3087          toElement: true,
3088          touches: true,
3089          which: true
3090        }, jQuery3.event.addProp);
3091        jQuery3.each({ focus: "focusin", blur: "focusout" }, function(type2, delegateType) {
3092          function focusMappedHandler(nativeEvent) {
3093            if (document2.documentMode) {
3094              var handle = dataPriv.get(this, "handle"), event = jQuery3.event.fix(nativeEvent);
3095              event.type = nativeEvent.type === "focusin" ? "focus" : "blur";
3096              event.isSimulated = true;
3097              handle(nativeEvent);
3098              if (event.target === event.currentTarget) {
3099                handle(event);
3100              }
3101            } else {
3102              jQuery3.event.simulate(
3103                delegateType,
3104                nativeEvent.target,
3105                jQuery3.event.fix(nativeEvent)
3106              );
3107            }
3108          }
3109          jQuery3.event.special[type2] = {
3110            setup: function() {
3111              var attaches;
3112              leverageNative(this, type2, true);
3113              if (document2.documentMode) {
3114                attaches = dataPriv.get(this, delegateType);
3115                if (!attaches) {
3116                  this.addEventListener(delegateType, focusMappedHandler);
3117                }
3118                dataPriv.set(this, delegateType, (attaches || 0) + 1);
3119              } else {
3120                return false;
3121              }
3122            },
3123            trigger: function() {
3124              leverageNative(this, type2);
3125              return true;
3126            },
3127            teardown: function() {
3128              var attaches;
3129              if (document2.documentMode) {
3130                attaches = dataPriv.get(this, delegateType) - 1;
3131                if (!attaches) {
3132                  this.removeEventListener(delegateType, focusMappedHandler);
3133                  dataPriv.remove(this, delegateType);
3134                } else {
3135                  dataPriv.set(this, delegateType, attaches);
3136                }
3137              } else {
3138                return false;
3139              }
3140            },
3141            _default: function(event) {
3142              return dataPriv.get(event.target, type2);
3143            },
3144            delegateType
3145          };
3146          jQuery3.event.special[delegateType] = {
3147            setup: function() {
3148              var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType);
3149              if (!attaches) {
3150                if (document2.documentMode) {
3151                  this.addEventListener(delegateType, focusMappedHandler);
3152                } else {
3153                  doc.addEventListener(type2, focusMappedHandler, true);
3154                }
3155              }
3156              dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1);
3157            },
3158            teardown: function() {
3159              var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType) - 1;
3160              if (!attaches) {
3161                if (document2.documentMode) {
3162                  this.removeEventListener(delegateType, focusMappedHandler);
3163                } else {
3164                  doc.removeEventListener(type2, focusMappedHandler, true);
3165                }
3166                dataPriv.remove(dataHolder, delegateType);
3167              } else {
3168                dataPriv.set(dataHolder, delegateType, attaches);
3169              }
3170            }
3171          };
3172        });
3173        jQuery3.each({
3174          mouseenter: "mouseover",
3175          mouseleave: "mouseout",
3176          pointerenter: "pointerover",
3177          pointerleave: "pointerout"
3178        }, function(orig, fix) {
3179          jQuery3.event.special[orig] = {
3180            delegateType: fix,
3181            bindType: fix,
3182            handle: function(event) {
3183              var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj;
3184              if (!related || related !== target && !jQuery3.contains(target, related)) {
3185                event.type = handleObj.origType;
3186                ret = handleObj.handler.apply(this, arguments);
3187                event.type = fix;
3188              }
3189              return ret;
3190            }
3191          };
3192        });
3193        jQuery3.fn.extend({
3194          on: function(types, selector, data, fn) {
3195            return on2(this, types, selector, data, fn);
3196          },
3197          one: function(types, selector, data, fn) {
3198            return on2(this, types, selector, data, fn, 1);
3199          },
3200          off: function(types, selector, fn) {
3201            var handleObj, type2;
3202            if (types && types.preventDefault && types.handleObj) {
3203              handleObj = types.handleObj;
3204              jQuery3(types.delegateTarget).off(
3205                handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
3206                handleObj.selector,
3207                handleObj.handler
3208              );
3209              return this;
3210            }
3211            if (typeof types === "object") {
3212              for (type2 in types) {
3213                this.off(type2, selector, types[type2]);
3214              }
3215              return this;
3216            }
3217            if (selector === false || typeof selector === "function") {
3218              fn = selector;
3219              selector = void 0;
3220            }
3221            if (fn === false) {
3222              fn = returnFalse;
3223            }
3224            return this.each(function() {
3225              jQuery3.event.remove(this, types, fn, selector);
3226            });
3227          }
3228        });
3229        var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g;
3230        function manipulationTarget(elem, content) {
3231          if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) {
3232            return jQuery3(elem).children("tbody")[0] || elem;
3233          }
3234          return elem;
3235        }
3236        function disableScript(elem) {
3237          elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
3238          return elem;
3239        }
3240        function restoreScript(elem) {
3241          if ((elem.type || "").slice(0, 5) === "true/") {
3242            elem.type = elem.type.slice(5);
3243          } else {
3244            elem.removeAttribute("type");
3245          }
3246          return elem;
3247        }
3248        function cloneCopyEvent(src, dest) {
3249          var i2, l, type2, pdataOld, udataOld, udataCur, events;
3250          if (dest.nodeType !== 1) {
3251            return;
3252          }
3253          if (dataPriv.hasData(src)) {
3254            pdataOld = dataPriv.get(src);
3255            events = pdataOld.events;
3256            if (events) {
3257              dataPriv.remove(dest, "handle events");
3258              for (type2 in events) {
3259                for (i2 = 0, l = events[type2].length; i2 < l; i2++) {
3260                  jQuery3.event.add(dest, type2, events[type2][i2]);
3261                }
3262              }
3263            }
3264          }
3265          if (dataUser.hasData(src)) {
3266            udataOld = dataUser.access(src);
3267            udataCur = jQuery3.extend({}, udataOld);
3268            dataUser.set(dest, udataCur);
3269          }
3270        }
3271        function fixInput(src, dest) {
3272          var nodeName2 = dest.nodeName.toLowerCase();
3273          if (nodeName2 === "input" && rcheckableType.test(src.type)) {
3274            dest.checked = src.checked;
3275          } else if (nodeName2 === "input" || nodeName2 === "textarea") {
3276            dest.defaultValue = src.defaultValue;
3277          }
3278        }
3279        function domManip(collection, args, callback, ignored) {
3280          args = flat(args);
3281          var fragment, first, scripts, hasScripts, node, doc, i2 = 0, l = collection.length, iNoClone = l - 1, value2 = args[0], valueIsFunction = isFunction(value2);
3282          if (valueIsFunction || l > 1 && typeof value2 === "string" && !support.checkClone && rchecked.test(value2)) {
3283            return collection.each(function(index) {
3284              var self2 = collection.eq(index);
3285              if (valueIsFunction) {
3286                args[0] = value2.call(this, index, self2.html());
3287              }
3288              domManip(self2, args, callback, ignored);
3289            });
3290          }
3291          if (l) {
3292            fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
3293            first = fragment.firstChild;
3294            if (fragment.childNodes.length === 1) {
3295              fragment = first;
3296            }
3297            if (first || ignored) {
3298              scripts = jQuery3.map(getAll(fragment, "script"), disableScript);
3299              hasScripts = scripts.length;
3300              for (; i2 < l; i2++) {
3301                node = fragment;
3302                if (i2 !== iNoClone) {
3303                  node = jQuery3.clone(node, true, true);
3304                  if (hasScripts) {
3305                    jQuery3.merge(scripts, getAll(node, "script"));
3306                  }
3307                }
3308                callback.call(collection[i2], node, i2);
3309              }
3310              if (hasScripts) {
3311                doc = scripts[scripts.length - 1].ownerDocument;
3312                jQuery3.map(scripts, restoreScript);
3313                for (i2 = 0; i2 < hasScripts; i2++) {
3314                  node = scripts[i2];
3315                  if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery3.contains(doc, node)) {
3316                    if (node.src && (node.type || "").toLowerCase() !== "module") {
3317                      if (jQuery3._evalUrl && !node.noModule) {
3318                        jQuery3._evalUrl(node.src, {
3319                          nonce: node.nonce || node.getAttribute("nonce")
3320                        }, doc);
3321                      }
3322                    } else {
3323                      DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
3324                    }
3325                  }
3326                }
3327              }
3328            }
3329          }
3330          return collection;
3331        }
3332        function remove(elem, selector, keepData) {
3333          var node, nodes = selector ? jQuery3.filter(selector, elem) : elem, i2 = 0;
3334          for (; (node = nodes[i2]) != null; i2++) {
3335            if (!keepData && node.nodeType === 1) {
3336              jQuery3.cleanData(getAll(node));
3337            }
3338            if (node.parentNode) {
3339              if (keepData && isAttached(node)) {
3340                setGlobalEval(getAll(node, "script"));
3341              }
3342              node.parentNode.removeChild(node);
3343            }
3344          }
3345          return elem;
3346        }
3347        jQuery3.extend({
3348          htmlPrefilter: function(html) {
3349            return html;
3350          },
3351          clone: function(elem, dataAndEvents, deepDataAndEvents) {
3352            var i2, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem);
3353            if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery3.isXMLDoc(elem)) {
3354              destElements = getAll(clone);
3355              srcElements = getAll(elem);
3356              for (i2 = 0, l = srcElements.length; i2 < l; i2++) {
3357                fixInput(srcElements[i2], destElements[i2]);
3358              }
3359            }
3360            if (dataAndEvents) {
3361              if (deepDataAndEvents) {
3362                srcElements = srcElements || getAll(elem);
3363                destElements = destElements || getAll(clone);
3364                for (i2 = 0, l = srcElements.length; i2 < l; i2++) {
3365                  cloneCopyEvent(srcElements[i2], destElements[i2]);
3366                }
3367              } else {
3368                cloneCopyEvent(elem, clone);
3369              }
3370            }
3371            destElements = getAll(clone, "script");
3372            if (destElements.length > 0) {
3373              setGlobalEval(destElements, !inPage && getAll(elem, "script"));
3374            }
3375            return clone;
3376          },
3377          cleanData: function(elems) {
3378            var data, elem, type2, special = jQuery3.event.special, i2 = 0;
3379            for (; (elem = elems[i2]) !== void 0; i2++) {
3380              if (acceptData(elem)) {
3381                if (data = elem[dataPriv.expando]) {
3382                  if (data.events) {
3383                    for (type2 in data.events) {
3384                      if (special[type2]) {
3385                        jQuery3.event.remove(elem, type2);
3386                      } else {
3387                        jQuery3.removeEvent(elem, type2, data.handle);
3388                      }
3389                    }
3390                  }
3391                  elem[dataPriv.expando] = void 0;
3392                }
3393                if (elem[dataUser.expando]) {
3394                  elem[dataUser.expando] = void 0;
3395                }
3396              }
3397            }
3398          }
3399        });
3400        jQuery3.fn.extend({
3401          detach: function(selector) {
3402            return remove(this, selector, true);
3403          },
3404          remove: function(selector) {
3405            return remove(this, selector);
3406          },
3407          text: function(value2) {
3408            return access(this, function(value3) {
3409              return value3 === void 0 ? jQuery3.text(this) : this.empty().each(function() {
3410                if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3411                  this.textContent = value3;
3412                }
3413              });
3414            }, null, value2, arguments.length);
3415          },
3416          append: function() {
3417            return domManip(this, arguments, function(elem) {
3418              if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3419                var target = manipulationTarget(this, elem);
3420                target.appendChild(elem);
3421              }
3422            });
3423          },
3424          prepend: function() {
3425            return domManip(this, arguments, function(elem) {
3426              if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
3427                var target = manipulationTarget(this, elem);
3428                target.insertBefore(elem, target.firstChild);
3429              }
3430            });
3431          },
3432          before: function() {
3433            return domManip(this, arguments, function(elem) {
3434              if (this.parentNode) {
3435                this.parentNode.insertBefore(elem, this);
3436              }
3437            });
3438          },
3439          after: function() {
3440            return domManip(this, arguments, function(elem) {
3441              if (this.parentNode) {
3442                this.parentNode.insertBefore(elem, this.nextSibling);
3443              }
3444            });
3445          },
3446          empty: function() {
3447            var elem, i2 = 0;
3448            for (; (elem = this[i2]) != null; i2++) {
3449              if (elem.nodeType === 1) {
3450                jQuery3.cleanData(getAll(elem, false));
3451                elem.textContent = "";
3452              }
3453            }
3454            return this;
3455          },
3456          clone: function(dataAndEvents, deepDataAndEvents) {
3457            dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
3458            deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
3459            return this.map(function() {
3460              return jQuery3.clone(this, dataAndEvents, deepDataAndEvents);
3461            });
3462          },
3463          html: function(value2) {
3464            return access(this, function(value3) {
3465              var elem = this[0] || {}, i2 = 0, l = this.length;
3466              if (value3 === void 0 && elem.nodeType === 1) {
3467                return elem.innerHTML;
3468              }
3469              if (typeof value3 === "string" && !rnoInnerhtml.test(value3) && !wrapMap[(rtagName.exec(value3) || ["", ""])[1].toLowerCase()]) {
3470                value3 = jQuery3.htmlPrefilter(value3);
3471                try {
3472                  for (; i2 < l; i2++) {
3473                    elem = this[i2] || {};
3474                    if (elem.nodeType === 1) {
3475                      jQuery3.cleanData(getAll(elem, false));
3476                      elem.innerHTML = value3;
3477                    }
3478                  }
3479                  elem = 0;
3480                } catch (e) {
3481                }
3482              }
3483              if (elem) {
3484                this.empty().append(value3);
3485              }
3486            }, null, value2, arguments.length);
3487          },
3488          replaceWith: function() {
3489            var ignored = [];
3490            return domManip(this, arguments, function(elem) {
3491              var parent = this.parentNode;
3492              if (jQuery3.inArray(this, ignored) < 0) {
3493                jQuery3.cleanData(getAll(this));
3494                if (parent) {
3495                  parent.replaceChild(elem, this);
3496                }
3497              }
3498            }, ignored);
3499          }
3500        });
3501        jQuery3.each({
3502          appendTo: "append",
3503          prependTo: "prepend",
3504          insertBefore: "before",
3505          insertAfter: "after",
3506          replaceAll: "replaceWith"
3507        }, function(name2, original) {
3508          jQuery3.fn[name2] = function(selector) {
3509            var elems, ret = [], insert = jQuery3(selector), last = insert.length - 1, i2 = 0;
3510            for (; i2 <= last; i2++) {
3511              elems = i2 === last ? this : this.clone(true);
3512              jQuery3(insert[i2])[original](elems);
3513              push.apply(ret, elems.get());
3514            }
3515            return this.pushStack(ret);
3516          };
3517        });
3518        var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
3519        var rcustomProp = /^--/;
3520        var getStyles = function(elem) {
3521          var view = elem.ownerDocument.defaultView;
3522          if (!view || !view.opener) {
3523            view = window2;
3524          }
3525          return view.getComputedStyle(elem);
3526        };
3527        var swap = function(elem, options, callback) {
3528          var ret, name2, old = {};
3529          for (name2 in options) {
3530            old[name2] = elem.style[name2];
3531            elem.style[name2] = options[name2];
3532          }
3533          ret = callback.call(elem);
3534          for (name2 in options) {
3535            elem.style[name2] = old[name2];
3536          }
3537          return ret;
3538        };
3539        var rboxStyle = new RegExp(cssExpand.join("|"), "i");
3540        (function() {
3541          function computeStyleTests() {
3542            if (!div) {
3543              return;
3544            }
3545            container.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0";
3546            div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%";
3547            documentElement.appendChild(container).appendChild(div);
3548            var divStyle = window2.getComputedStyle(div);
3549            pixelPositionVal = divStyle.top !== "1%";
3550            reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12;
3551            div.style.right = "60%";
3552            pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36;
3553            boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36;
3554            div.style.position = "absolute";
3555            scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;
3556            documentElement.removeChild(container);
3557            div = null;
3558          }
3559          function roundPixelMeasures(measure) {
3560            return Math.round(parseFloat(measure));
3561          }
3562          var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document2.createElement("div"), div = document2.createElement("div");
3563          if (!div.style) {
3564            return;
3565          }
3566          div.style.backgroundClip = "content-box";
3567          div.cloneNode(true).style.backgroundClip = "";
3568          support.clearCloneStyle = div.style.backgroundClip === "content-box";
3569          jQuery3.extend(support, {
3570            boxSizingReliable: function() {
3571              computeStyleTests();
3572              return boxSizingReliableVal;
3573            },
3574            pixelBoxStyles: function() {
3575              computeStyleTests();
3576              return pixelBoxStylesVal;
3577            },
3578            pixelPosition: function() {
3579              computeStyleTests();
3580              return pixelPositionVal;
3581            },
3582            reliableMarginLeft: function() {
3583              computeStyleTests();
3584              return reliableMarginLeftVal;
3585            },
3586            scrollboxSize: function() {
3587              computeStyleTests();
3588              return scrollboxSizeVal;
3589            },
3590            reliableTrDimensions: function() {
3591              var table, tr, trChild, trStyle;
3592              if (reliableTrDimensionsVal == null) {
3593                table = document2.createElement("table");
3594                tr = document2.createElement("tr");
3595                trChild = document2.createElement("div");
3596                table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate";
3597                tr.style.cssText = "border:1px solid";
3598                tr.style.height = "1px";
3599                trChild.style.height = "9px";
3600                trChild.style.display = "block";
3601                documentElement.appendChild(table).appendChild(tr).appendChild(trChild);
3602                trStyle = window2.getComputedStyle(tr);
3603                reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight;
3604                documentElement.removeChild(table);
3605              }
3606              return reliableTrDimensionsVal;
3607            }
3608          });
3609        })();
3610        function curCSS(elem, name2, computed) {
3611          var width, minWidth, maxWidth, ret, isCustomProp = rcustomProp.test(name2), style = elem.style;
3612          computed = computed || getStyles(elem);
3613          if (computed) {
3614            ret = computed.getPropertyValue(name2) || computed[name2];
3615            if (isCustomProp && ret) {
3616              ret = ret.replace(rtrimCSS, "$1") || void 0;
3617            }
3618            if (ret === "" && !isAttached(elem)) {
3619              ret = jQuery3.style(elem, name2);
3620            }
3621            if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name2)) {
3622              width = style.width;
3623              minWidth = style.minWidth;
3624              maxWidth = style.maxWidth;
3625              style.minWidth = style.maxWidth = style.width = ret;
3626              ret = computed.width;
3627              style.width = width;
3628              style.minWidth = minWidth;
3629              style.maxWidth = maxWidth;
3630            }
3631          }
3632          return ret !== void 0 ? ret + "" : ret;
3633        }
3634        function addGetHookIf(conditionFn, hookFn) {
3635          return {
3636            get: function() {
3637              if (conditionFn()) {
3638                delete this.get;
3639                return;
3640              }
3641              return (this.get = hookFn).apply(this, arguments);
3642            }
3643          };
3644        }
3645        var cssPrefixes = ["Webkit", "Moz", "ms"], emptyStyle = document2.createElement("div").style, vendorProps = {};
3646        function vendorPropName(name2) {
3647          var capName = name2[0].toUpperCase() + name2.slice(1), i2 = cssPrefixes.length;
3648          while (i2--) {
3649            name2 = cssPrefixes[i2] + capName;
3650            if (name2 in emptyStyle) {
3651              return name2;
3652            }
3653          }
3654        }
3655        function finalPropName(name2) {
3656          var final = jQuery3.cssProps[name2] || vendorProps[name2];
3657          if (final) {
3658            return final;
3659          }
3660          if (name2 in emptyStyle) {
3661            return name2;
3662          }
3663          return vendorProps[name2] = vendorPropName(name2) || name2;
3664        }
3665        var rdisplayswap = /^(none|table(?!-c[ea]).+)/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = {
3666          letterSpacing: "0",
3667          fontWeight: "400"
3668        };
3669        function setPositiveNumber(_elem, value2, subtract) {
3670          var matches = rcssNum.exec(value2);
3671          return matches ? Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value2;
3672        }
3673        function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {
3674          var i2 = dimension === "width" ? 1 : 0, extra = 0, delta = 0, marginDelta = 0;
3675          if (box === (isBorderBox ? "border" : "content")) {
3676            return 0;
3677          }
3678          for (; i2 < 4; i2 += 2) {
3679            if (box === "margin") {
3680              marginDelta += jQuery3.css(elem, box + cssExpand[i2], true, styles);
3681            }
3682            if (!isBorderBox) {
3683              delta += jQuery3.css(elem, "padding" + cssExpand[i2], true, styles);
3684              if (box !== "padding") {
3685                delta += jQuery3.css(elem, "border" + cssExpand[i2] + "Width", true, styles);
3686              } else {
3687                extra += jQuery3.css(elem, "border" + cssExpand[i2] + "Width", true, styles);
3688              }
3689            } else {
3690              if (box === "content") {
3691                delta -= jQuery3.css(elem, "padding" + cssExpand[i2], true, styles);
3692              }
3693              if (box !== "margin") {
3694                delta -= jQuery3.css(elem, "border" + cssExpand[i2] + "Width", true, styles);
3695              }
3696            }
3697          }
3698          if (!isBorderBox && computedVal >= 0) {
3699            delta += Math.max(0, Math.ceil(
3700              elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5
3701            )) || 0;
3702          }
3703          return delta + marginDelta;
3704        }
3705        function getWidthOrHeight(elem, dimension, extra) {
3706          var styles = getStyles(elem), boxSizingNeeded = !support.boxSizingReliable() || extra, isBorderBox = boxSizingNeeded && jQuery3.css(elem, "boxSizing", false, styles) === "border-box", valueIsBorderBox = isBorderBox, val = curCSS(elem, dimension, styles), offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1);
3707          if (rnumnonpx.test(val)) {
3708            if (!extra) {
3709              return val;
3710            }
3711            val = "auto";
3712          }
3713          if ((!support.boxSizingReliable() && isBorderBox || !support.reliableTrDimensions() && nodeName(elem, "tr") || val === "auto" || !parseFloat(val) && jQuery3.css(elem, "display", false, styles) === "inline") && elem.getClientRects().length) {
3714            isBorderBox = jQuery3.css(elem, "boxSizing", false, styles) === "border-box";
3715            valueIsBorderBox = offsetProp in elem;
3716            if (valueIsBorderBox) {
3717              val = elem[offsetProp];
3718            }
3719          }
3720          val = parseFloat(val) || 0;
3721          return val + boxModelAdjustment(
3722            elem,
3723            dimension,
3724            extra || (isBorderBox ? "border" : "content"),
3725            valueIsBorderBox,
3726            styles,
3727            val
3728          ) + "px";
3729        }
3730        jQuery3.extend({
3731          cssHooks: {
3732            opacity: {
3733              get: function(elem, computed) {
3734                if (computed) {
3735                  var ret = curCSS(elem, "opacity");
3736                  return ret === "" ? "1" : ret;
3737                }
3738              }
3739            }
3740          },
3741          cssNumber: {
3742            animationIterationCount: true,
3743            aspectRatio: true,
3744            borderImageSlice: true,
3745            columnCount: true,
3746            flexGrow: true,
3747            flexShrink: true,
3748            fontWeight: true,
3749            gridArea: true,
3750            gridColumn: true,
3751            gridColumnEnd: true,
3752            gridColumnStart: true,
3753            gridRow: true,
3754            gridRowEnd: true,
3755            gridRowStart: true,
3756            lineHeight: true,
3757            opacity: true,
3758            order: true,
3759            orphans: true,
3760            scale: true,
3761            widows: true,
3762            zIndex: true,
3763            zoom: true,
3764            fillOpacity: true,
3765            floodOpacity: true,
3766            stopOpacity: true,
3767            strokeMiterlimit: true,
3768            strokeOpacity: true
3769          },
3770          cssProps: {},
3771          style: function(elem, name2, value2, extra) {
3772            if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
3773              return;
3774            }
3775            var ret, type2, hooks, origName = camelCase(name2), isCustomProp = rcustomProp.test(name2), style = elem.style;
3776            if (!isCustomProp) {
3777              name2 = finalPropName(origName);
3778            }
3779            hooks = jQuery3.cssHooks[name2] || jQuery3.cssHooks[origName];
3780            if (value2 !== void 0) {
3781              type2 = typeof value2;
3782              if (type2 === "string" && (ret = rcssNum.exec(value2)) && ret[1]) {
3783                value2 = adjustCSS(elem, name2, ret);
3784                type2 = "number";
3785              }
3786              if (value2 == null || value2 !== value2) {
3787                return;
3788              }
3789              if (type2 === "number" && !isCustomProp) {
3790                value2 += ret && ret[3] || (jQuery3.cssNumber[origName] ? "" : "px");
3791              }
3792              if (!support.clearCloneStyle && value2 === "" && name2.indexOf("background") === 0) {
3793                style[name2] = "inherit";
3794              }
3795              if (!hooks || !("set" in hooks) || (value2 = hooks.set(elem, value2, extra)) !== void 0) {
3796                if (isCustomProp) {
3797                  style.setProperty(name2, value2);
3798                } else {
3799                  style[name2] = value2;
3800                }
3801              }
3802            } else {
3803              if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== void 0) {
3804                return ret;
3805              }
3806              return style[name2];
3807            }
3808          },
3809          css: function(elem, name2, extra, styles) {
3810            var val, num, hooks, origName = camelCase(name2), isCustomProp = rcustomProp.test(name2);
3811            if (!isCustomProp) {
3812              name2 = finalPropName(origName);
3813            }
3814            hooks = jQuery3.cssHooks[name2] || jQuery3.cssHooks[origName];
3815            if (hooks && "get" in hooks) {
3816              val = hooks.get(elem, true, extra);
3817            }
3818            if (val === void 0) {
3819              val = curCSS(elem, name2, styles);
3820            }
3821            if (val === "normal" && name2 in cssNormalTransform) {
3822              val = cssNormalTransform[name2];
3823            }
3824            if (extra === "" || extra) {
3825              num = parseFloat(val);
3826              return extra === true || isFinite(num) ? num || 0 : val;
3827            }
3828            return val;
3829          }
3830        });
3831        jQuery3.each(["height", "width"], function(_i, dimension) {
3832          jQuery3.cssHooks[dimension] = {
3833            get: function(elem, computed, extra) {
3834              if (computed) {
3835                return rdisplayswap.test(jQuery3.css(elem, "display")) && (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() {
3836                  return getWidthOrHeight(elem, dimension, extra);
3837                }) : getWidthOrHeight(elem, dimension, extra);
3838              }
3839            },
3840            set: function(elem, value2, extra) {
3841              var matches, styles = getStyles(elem), scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute", boxSizingNeeded = scrollboxSizeBuggy || extra, isBorderBox = boxSizingNeeded && jQuery3.css(elem, "boxSizing", false, styles) === "border-box", subtract = extra ? boxModelAdjustment(
3842                elem,
3843                dimension,
3844                extra,
3845                isBorderBox,
3846                styles
3847              ) : 0;
3848              if (isBorderBox && scrollboxSizeBuggy) {
3849                subtract -= Math.ceil(
3850                  elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5
3851                );
3852              }
3853              if (subtract && (matches = rcssNum.exec(value2)) && (matches[3] || "px") !== "px") {
3854                elem.style[dimension] = value2;
3855                value2 = jQuery3.css(elem, dimension);
3856              }
3857              return setPositiveNumber(elem, value2, subtract);
3858            }
3859          };
3860        });
3861        jQuery3.cssHooks.marginLeft = addGetHookIf(
3862          support.reliableMarginLeft,
3863          function(elem, computed) {
3864            if (computed) {
3865              return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() {
3866                return elem.getBoundingClientRect().left;
3867              })) + "px";
3868            }
3869          }
3870        );
3871        jQuery3.each({
3872          margin: "",
3873          padding: "",
3874          border: "Width"
3875        }, function(prefix, suffix) {
3876          jQuery3.cssHooks[prefix + suffix] = {
3877            expand: function(value2) {
3878              var i2 = 0, expanded = {}, parts2 = typeof value2 === "string" ? value2.split(" ") : [value2];
3879              for (; i2 < 4; i2++) {
3880                expanded[prefix + cssExpand[i2] + suffix] = parts2[i2] || parts2[i2 - 2] || parts2[0];
3881              }
3882              return expanded;
3883            }
3884          };
3885          if (prefix !== "margin") {
3886            jQuery3.cssHooks[prefix + suffix].set = setPositiveNumber;
3887          }
3888        });
3889        jQuery3.fn.extend({
3890          css: function(name2, value2) {
3891            return access(this, function(elem, name3, value3) {
3892              var styles, len, map2 = {}, i2 = 0;
3893              if (Array.isArray(name3)) {
3894                styles = getStyles(elem);
3895                len = name3.length;
3896                for (; i2 < len; i2++) {
3897                  map2[name3[i2]] = jQuery3.css(elem, name3[i2], false, styles);
3898                }
3899                return map2;
3900              }
3901              return value3 !== void 0 ? jQuery3.style(elem, name3, value3) : jQuery3.css(elem, name3);
3902            }, name2, value2, arguments.length > 1);
3903          }
3904        });
3905        function Tween(elem, options, prop, end, easing) {
3906          return new Tween.prototype.init(elem, options, prop, end, easing);
3907        }
3908        jQuery3.Tween = Tween;
3909        Tween.prototype = {
3910          constructor: Tween,
3911          init: function(elem, options, prop, end, easing, unit) {
3912            this.elem = elem;
3913            this.prop = prop;
3914            this.easing = easing || jQuery3.easing._default;
3915            this.options = options;
3916            this.start = this.now = this.cur();
3917            this.end = end;
3918            this.unit = unit || (jQuery3.cssNumber[prop] ? "" : "px");
3919          },
3920          cur: function() {
3921            var hooks = Tween.propHooks[this.prop];
3922            return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
3923          },
3924          run: function(percent) {
3925            var eased, hooks = Tween.propHooks[this.prop];
3926            if (this.options.duration) {
3927              this.pos = eased = jQuery3.easing[this.easing](
3928                percent,
3929                this.options.duration * percent,
3930                0,
3931                1,
3932                this.options.duration
3933              );
3934            } else {
3935              this.pos = eased = percent;
3936            }
3937            this.now = (this.end - this.start) * eased + this.start;
3938            if (this.options.step) {
3939              this.options.step.call(this.elem, this.now, this);
3940            }
3941            if (hooks && hooks.set) {
3942              hooks.set(this);
3943            } else {
3944              Tween.propHooks._default.set(this);
3945            }
3946            return this;
3947          }
3948        };
3949        Tween.prototype.init.prototype = Tween.prototype;
3950        Tween.propHooks = {
3951          _default: {
3952            get: function(tween) {
3953              var result;
3954              if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
3955                return tween.elem[tween.prop];
3956              }
3957              result = jQuery3.css(tween.elem, tween.prop, "");
3958              return !result || result === "auto" ? 0 : result;
3959            },
3960            set: function(tween) {
3961              if (jQuery3.fx.step[tween.prop]) {
3962                jQuery3.fx.step[tween.prop](tween);
3963              } else if (tween.elem.nodeType === 1 && (jQuery3.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {
3964                jQuery3.style(tween.elem, tween.prop, tween.now + tween.unit);
3965              } else {
3966                tween.elem[tween.prop] = tween.now;
3967              }
3968            }
3969          }
3970        };
3971        Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
3972          set: function(tween) {
3973            if (tween.elem.nodeType && tween.elem.parentNode) {
3974              tween.elem[tween.prop] = tween.now;
3975            }
3976          }
3977        };
3978        jQuery3.easing = {
3979          linear: function(p) {
3980            return p;
3981          },
3982          swing: function(p) {
3983            return 0.5 - Math.cos(p * Math.PI) / 2;
3984          },
3985          _default: "swing"
3986        };
3987        jQuery3.fx = Tween.prototype.init;
3988        jQuery3.fx.step = {};
3989        var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/;
3990        function schedule() {
3991          if (inProgress) {
3992            if (document2.hidden === false && window2.requestAnimationFrame) {
3993              window2.requestAnimationFrame(schedule);
3994            } else {
3995              window2.setTimeout(schedule, jQuery3.fx.interval);
3996            }
3997            jQuery3.fx.tick();
3998          }
3999        }
4000        function createFxNow() {
4001          window2.setTimeout(function() {
4002            fxNow = void 0;
4003          });
4004          return fxNow = Date.now();
4005        }
4006        function genFx(type2, includeWidth) {
4007          var which, i2 = 0, attrs = { height: type2 };
4008          includeWidth = includeWidth ? 1 : 0;
4009          for (; i2 < 4; i2 += 2 - includeWidth) {
4010            which = cssExpand[i2];
4011            attrs["margin" + which] = attrs["padding" + which] = type2;
4012          }
4013          if (includeWidth) {
4014            attrs.opacity = attrs.width = type2;
4015          }
4016          return attrs;
4017        }
4018        function createTween(value2, prop, animation) {
4019          var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length2 = collection.length;
4020          for (; index < length2; index++) {
4021            if (tween = collection[index].call(animation, prop, value2)) {
4022              return tween;
4023            }
4024          }
4025        }
4026        function defaultPrefilter(elem, props, opts) {
4027          var prop, value2, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, orig = {}, style = elem.style, hidden = elem.nodeType && isHiddenWithinTree(elem), dataShow = dataPriv.get(elem, "fxshow");
4028          if (!opts.queue) {
4029            hooks = jQuery3._queueHooks(elem, "fx");
4030            if (hooks.unqueued == null) {
4031              hooks.unqueued = 0;
4032              oldfire = hooks.empty.fire;
4033              hooks.empty.fire = function() {
4034                if (!hooks.unqueued) {
4035                  oldfire();
4036                }
4037              };
4038            }
4039            hooks.unqueued++;
4040            anim.always(function() {
4041              anim.always(function() {
4042                hooks.unqueued--;
4043                if (!jQuery3.queue(elem, "fx").length) {
4044                  hooks.empty.fire();
4045                }
4046              });
4047            });
4048          }
4049          for (prop in props) {
4050            value2 = props[prop];
4051            if (rfxtypes.test(value2)) {
4052              delete props[prop];
4053              toggle = toggle || value2 === "toggle";
4054              if (value2 === (hidden ? "hide" : "show")) {
4055                if (value2 === "show" && dataShow && dataShow[prop] !== void 0) {
4056                  hidden = true;
4057                } else {
4058                  continue;
4059                }
4060              }
4061              orig[prop] = dataShow && dataShow[prop] || jQuery3.style(elem, prop);
4062            }
4063          }
4064          propTween = !jQuery3.isEmptyObject(props);
4065          if (!propTween && jQuery3.isEmptyObject(orig)) {
4066            return;
4067          }
4068          if (isBox && elem.nodeType === 1) {
4069            opts.overflow = [style.overflow, style.overflowX, style.overflowY];
4070            restoreDisplay = dataShow && dataShow.display;
4071            if (restoreDisplay == null) {
4072              restoreDisplay = dataPriv.get(elem, "display");
4073            }
4074            display = jQuery3.css(elem, "display");
4075            if (display === "none") {
4076              if (restoreDisplay) {
4077                display = restoreDisplay;
4078              } else {
4079                showHide([elem], true);
4080                restoreDisplay = elem.style.display || restoreDisplay;
4081                display = jQuery3.css(elem, "display");
4082                showHide([elem]);
4083              }
4084            }
4085            if (display === "inline" || display === "inline-block" && restoreDisplay != null) {
4086              if (jQuery3.css(elem, "float") === "none") {
4087                if (!propTween) {
4088                  anim.done(function() {
4089                    style.display = restoreDisplay;
4090                  });
4091                  if (restoreDisplay == null) {
4092                    display = style.display;
4093                    restoreDisplay = display === "none" ? "" : display;
4094                  }
4095                }
4096                style.display = "inline-block";
4097              }
4098            }
4099          }
4100          if (opts.overflow) {
4101            style.overflow = "hidden";
4102            anim.always(function() {
4103              style.overflow = opts.overflow[0];
4104              style.overflowX = opts.overflow[1];
4105              style.overflowY = opts.overflow[2];
4106            });
4107          }
4108          propTween = false;
4109          for (prop in orig) {
4110            if (!propTween) {
4111              if (dataShow) {
4112                if ("hidden" in dataShow) {
4113                  hidden = dataShow.hidden;
4114                }
4115              } else {
4116                dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay });
4117              }
4118              if (toggle) {
4119                dataShow.hidden = !hidden;
4120              }
4121              if (hidden) {
4122                showHide([elem], true);
4123              }
4124              anim.done(function() {
4125                if (!hidden) {
4126                  showHide([elem]);
4127                }
4128                dataPriv.remove(elem, "fxshow");
4129                for (prop in orig) {
4130                  jQuery3.style(elem, prop, orig[prop]);
4131                }
4132              });
4133            }
4134            propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
4135            if (!(prop in dataShow)) {
4136              dataShow[prop] = propTween.start;
4137              if (hidden) {
4138                propTween.end = propTween.start;
4139                propTween.start = 0;
4140              }
4141            }
4142          }
4143        }
4144        function propFilter(props, specialEasing) {
4145          var index, name2, easing, value2, hooks;
4146          for (index in props) {
4147            name2 = camelCase(index);
4148            easing = specialEasing[name2];
4149            value2 = props[index];
4150            if (Array.isArray(value2)) {
4151              easing = value2[1];
4152              value2 = props[index] = value2[0];
4153            }
4154            if (index !== name2) {
4155              props[name2] = value2;
4156              delete props[index];
4157            }
4158            hooks = jQuery3.cssHooks[name2];
4159            if (hooks && "expand" in hooks) {
4160              value2 = hooks.expand(value2);
4161              delete props[name2];
4162              for (index in value2) {
4163                if (!(index in props)) {
4164                  props[index] = value2[index];
4165                  specialEasing[index] = easing;
4166                }
4167              }
4168            } else {
4169              specialEasing[name2] = easing;
4170            }
4171          }
4172        }
4173        function Animation(elem, properties, options) {
4174          var result, stopped, index = 0, length2 = Animation.prefilters.length, deferred = jQuery3.Deferred().always(function() {
4175            delete tick.elem;
4176          }), tick = function() {
4177            if (stopped) {
4178              return false;
4179            }
4180            var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index2 = 0, length3 = animation.tweens.length;
4181            for (; index2 < length3; index2++) {
4182              animation.tweens[index2].run(percent);
4183            }
4184            deferred.notifyWith(elem, [animation, percent, remaining]);
4185            if (percent < 1 && length3) {
4186              return remaining;
4187            }
4188            if (!length3) {
4189              deferred.notifyWith(elem, [animation, 1, 0]);
4190            }
4191            deferred.resolveWith(elem, [animation]);
4192            return false;
4193          }, animation = deferred.promise({
4194            elem,
4195            props: jQuery3.extend({}, properties),
4196            opts: jQuery3.extend(true, {
4197              specialEasing: {},
4198              easing: jQuery3.easing._default
4199            }, options),
4200            originalProperties: properties,
4201            originalOptions: options,
4202            startTime: fxNow || createFxNow(),
4203            duration: options.duration,
4204            tweens: [],
4205            createTween: function(prop, end) {
4206              var tween = jQuery3.Tween(
4207                elem,
4208                animation.opts,
4209                prop,
4210                end,
4211                animation.opts.specialEasing[prop] || animation.opts.easing
4212              );
4213              animation.tweens.push(tween);
4214              return tween;
4215            },
4216            stop: function(gotoEnd) {
4217              var index2 = 0, length3 = gotoEnd ? animation.tweens.length : 0;
4218              if (stopped) {
4219                return this;
4220              }
4221              stopped = true;
4222              for (; index2 < length3; index2++) {
4223                animation.tweens[index2].run(1);
4224              }
4225              if (gotoEnd) {
4226                deferred.notifyWith(elem, [animation, 1, 0]);
4227                deferred.resolveWith(elem, [animation, gotoEnd]);
4228              } else {
4229                deferred.rejectWith(elem, [animation, gotoEnd]);
4230              }
4231              return this;
4232            }
4233          }), props = animation.props;
4234          propFilter(props, animation.opts.specialEasing);
4235          for (; index < length2; index++) {
4236            result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
4237            if (result) {
4238              if (isFunction(result.stop)) {
4239                jQuery3._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);
4240              }
4241              return result;
4242            }
4243          }
4244          jQuery3.map(props, createTween, animation);
4245          if (isFunction(animation.opts.start)) {
4246            animation.opts.start.call(elem, animation);
4247          }
4248          animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
4249          jQuery3.fx.timer(
4250            jQuery3.extend(tick, {
4251              elem,
4252              anim: animation,
4253              queue: animation.opts.queue
4254            })
4255          );
4256          return animation;
4257        }
4258        jQuery3.Animation = jQuery3.extend(Animation, {
4259          tweeners: {
4260            "*": [function(prop, value2) {
4261              var tween = this.createTween(prop, value2);
4262              adjustCSS(tween.elem, prop, rcssNum.exec(value2), tween);
4263              return tween;
4264            }]
4265          },
4266          tweener: function(props, callback) {
4267            if (isFunction(props)) {
4268              callback = props;
4269              props = ["*"];
4270            } else {
4271              props = props.match(rnothtmlwhite);
4272            }
4273            var prop, index = 0, length2 = props.length;
4274            for (; index < length2; index++) {
4275              prop = props[index];
4276              Animation.tweeners[prop] = Animation.tweeners[prop] || [];
4277              Animation.tweeners[prop].unshift(callback);
4278            }
4279          },
4280          prefilters: [defaultPrefilter],
4281          prefilter: function(callback, prepend) {
4282            if (prepend) {
4283              Animation.prefilters.unshift(callback);
4284            } else {
4285              Animation.prefilters.push(callback);
4286            }
4287          }
4288        });
4289        jQuery3.speed = function(speed, easing, fn) {
4290          var opt = speed && typeof speed === "object" ? jQuery3.extend({}, speed) : {
4291            complete: fn || !fn && easing || isFunction(speed) && speed,
4292            duration: speed,
4293            easing: fn && easing || easing && !isFunction(easing) && easing
4294          };
4295          if (jQuery3.fx.off) {
4296            opt.duration = 0;
4297          } else {
4298            if (typeof opt.duration !== "number") {
4299              if (opt.duration in jQuery3.fx.speeds) {
4300                opt.duration = jQuery3.fx.speeds[opt.duration];
4301              } else {
4302                opt.duration = jQuery3.fx.speeds._default;
4303              }
4304            }
4305          }
4306          if (opt.queue == null || opt.queue === true) {
4307            opt.queue = "fx";
4308          }
4309          opt.old = opt.complete;
4310          opt.complete = function() {
4311            if (isFunction(opt.old)) {
4312              opt.old.call(this);
4313            }
4314            if (opt.queue) {
4315              jQuery3.dequeue(this, opt.queue);
4316            }
4317          };
4318          return opt;
4319        };
4320        jQuery3.fn.extend({
4321          fadeTo: function(speed, to, easing, callback) {
4322            return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback);
4323          },
4324          animate: function(prop, speed, easing, callback) {
4325            var empty2 = jQuery3.isEmptyObject(prop), optall = jQuery3.speed(speed, easing, callback), doAnimation = function() {
4326              var anim = Animation(this, jQuery3.extend({}, prop), optall);
4327              if (empty2 || dataPriv.get(this, "finish")) {
4328                anim.stop(true);
4329              }
4330            };
4331            doAnimation.finish = doAnimation;
4332            return empty2 || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
4333          },
4334          stop: function(type2, clearQueue, gotoEnd) {
4335            var stopQueue = function(hooks) {
4336              var stop = hooks.stop;
4337              delete hooks.stop;
4338              stop(gotoEnd);
4339            };
4340            if (typeof type2 !== "string") {
4341              gotoEnd = clearQueue;
4342              clearQueue = type2;
4343              type2 = void 0;
4344            }
4345            if (clearQueue) {
4346              this.queue(type2 || "fx", []);
4347            }
4348            return this.each(function() {
4349              var dequeue = true, index = type2 != null && type2 + "queueHooks", timers = jQuery3.timers, data = dataPriv.get(this);
4350              if (index) {
4351                if (data[index] && data[index].stop) {
4352                  stopQueue(data[index]);
4353                }
4354              } else {
4355                for (index in data) {
4356                  if (data[index] && data[index].stop && rrun.test(index)) {
4357                    stopQueue(data[index]);
4358                  }
4359                }
4360              }
4361              for (index = timers.length; index--; ) {
4362                if (timers[index].elem === this && (type2 == null || timers[index].queue === type2)) {
4363                  timers[index].anim.stop(gotoEnd);
4364                  dequeue = false;
4365                  timers.splice(index, 1);
4366                }
4367              }
4368              if (dequeue || !gotoEnd) {
4369                jQuery3.dequeue(this, type2);
4370              }
4371            });
4372          },
4373          finish: function(type2) {
4374            if (type2 !== false) {
4375              type2 = type2 || "fx";
4376            }
4377            return this.each(function() {
4378              var index, data = dataPriv.get(this), queue = data[type2 + "queue"], hooks = data[type2 + "queueHooks"], timers = jQuery3.timers, length2 = queue ? queue.length : 0;
4379              data.finish = true;
4380              jQuery3.queue(this, type2, []);
4381              if (hooks && hooks.stop) {
4382                hooks.stop.call(this, true);
4383              }
4384              for (index = timers.length; index--; ) {
4385                if (timers[index].elem === this && timers[index].queue === type2) {
4386                  timers[index].anim.stop(true);
4387                  timers.splice(index, 1);
4388                }
4389              }
4390              for (index = 0; index < length2; index++) {
4391                if (queue[index] && queue[index].finish) {
4392                  queue[index].finish.call(this);
4393                }
4394              }
4395              delete data.finish;
4396            });
4397          }
4398        });
4399        jQuery3.each(["toggle", "show", "hide"], function(_i, name2) {
4400          var cssFn = jQuery3.fn[name2];
4401          jQuery3.fn[name2] = function(speed, easing, callback) {
4402            return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name2, true), speed, easing, callback);
4403          };
4404        });
4405        jQuery3.each({
4406          slideDown: genFx("show"),
4407          slideUp: genFx("hide"),
4408          slideToggle: genFx("toggle"),
4409          fadeIn: { opacity: "show" },
4410          fadeOut: { opacity: "hide" },
4411          fadeToggle: { opacity: "toggle" }
4412        }, function(name2, props) {
4413          jQuery3.fn[name2] = function(speed, easing, callback) {
4414            return this.animate(props, speed, easing, callback);
4415          };
4416        });
4417        jQuery3.timers = [];
4418        jQuery3.fx.tick = function() {
4419          var timer, i2 = 0, timers = jQuery3.timers;
4420          fxNow = Date.now();
4421          for (; i2 < timers.length; i2++) {
4422            timer = timers[i2];
4423            if (!timer() && timers[i2] === timer) {
4424              timers.splice(i2--, 1);
4425            }
4426          }
4427          if (!timers.length) {
4428            jQuery3.fx.stop();
4429          }
4430          fxNow = void 0;
4431        };
4432        jQuery3.fx.timer = function(timer) {
4433          jQuery3.timers.push(timer);
4434          jQuery3.fx.start();
4435        };
4436        jQuery3.fx.interval = 13;
4437        jQuery3.fx.start = function() {
4438          if (inProgress) {
4439            return;
4440          }
4441          inProgress = true;
4442          schedule();
4443        };
4444        jQuery3.fx.stop = function() {
4445          inProgress = null;
4446        };
4447        jQuery3.fx.speeds = {
4448          slow: 600,
4449          fast: 200,
4450          _default: 400
4451        };
4452        jQuery3.fn.delay = function(time, type2) {
4453          time = jQuery3.fx ? jQuery3.fx.speeds[time] || time : time;
4454          type2 = type2 || "fx";
4455          return this.queue(type2, function(next, hooks) {
4456            var timeout = window2.setTimeout(next, time);
4457            hooks.stop = function() {
4458              window2.clearTimeout(timeout);
4459            };
4460          });
4461        };
4462        (function() {
4463          var input = document2.createElement("input"), select = document2.createElement("select"), opt = select.appendChild(document2.createElement("option"));
4464          input.type = "checkbox";
4465          support.checkOn = input.value !== "";
4466          support.optSelected = opt.selected;
4467          input = document2.createElement("input");
4468          input.value = "t";
4469          input.type = "radio";
4470          support.radioValue = input.value === "t";
4471        })();
4472        var boolHook, attrHandle = jQuery3.expr.attrHandle;
4473        jQuery3.fn.extend({
4474          attr: function(name2, value2) {
4475            return access(this, jQuery3.attr, name2, value2, arguments.length > 1);
4476          },
4477          removeAttr: function(name2) {
4478            return this.each(function() {
4479              jQuery3.removeAttr(this, name2);
4480            });
4481          }
4482        });
4483        jQuery3.extend({
4484          attr: function(elem, name2, value2) {
4485            var ret, hooks, nType = elem.nodeType;
4486            if (nType === 3 || nType === 8 || nType === 2) {
4487              return;
4488            }
4489            if (typeof elem.getAttribute === "undefined") {
4490              return jQuery3.prop(elem, name2, value2);
4491            }
4492            if (nType !== 1 || !jQuery3.isXMLDoc(elem)) {
4493              hooks = jQuery3.attrHooks[name2.toLowerCase()] || (jQuery3.expr.match.bool.test(name2) ? boolHook : void 0);
4494            }
4495            if (value2 !== void 0) {
4496              if (value2 === null) {
4497                jQuery3.removeAttr(elem, name2);
4498                return;
4499              }
4500              if (hooks && "set" in hooks && (ret = hooks.set(elem, value2, name2)) !== void 0) {
4501                return ret;
4502              }
4503              elem.setAttribute(name2, value2 + "");
4504              return value2;
4505            }
4506            if (hooks && "get" in hooks && (ret = hooks.get(elem, name2)) !== null) {
4507              return ret;
4508            }
4509            ret = jQuery3.find.attr(elem, name2);
4510            return ret == null ? void 0 : ret;
4511          },
4512          attrHooks: {
4513            type: {
4514              set: function(elem, value2) {
4515                if (!support.radioValue && value2 === "radio" && nodeName(elem, "input")) {
4516                  var val = elem.value;
4517                  elem.setAttribute("type", value2);
4518                  if (val) {
4519                    elem.value = val;
4520                  }
4521                  return value2;
4522                }
4523              }
4524            }
4525          },
4526          removeAttr: function(elem, value2) {
4527            var name2, i2 = 0, attrNames = value2 && value2.match(rnothtmlwhite);
4528            if (attrNames && elem.nodeType === 1) {
4529              while (name2 = attrNames[i2++]) {
4530                elem.removeAttribute(name2);
4531              }
4532            }
4533          }
4534        });
4535        boolHook = {
4536          set: function(elem, value2, name2) {
4537            if (value2 === false) {
4538              jQuery3.removeAttr(elem, name2);
4539            } else {
4540              elem.setAttribute(name2, name2);
4541            }
4542            return name2;
4543          }
4544        };
4545        jQuery3.each(jQuery3.expr.match.bool.source.match(/\w+/g), function(_i, name2) {
4546          var getter = attrHandle[name2] || jQuery3.find.attr;
4547          attrHandle[name2] = function(elem, name3, isXML) {
4548            var ret, handle, lowercaseName = name3.toLowerCase();
4549            if (!isXML) {
4550              handle = attrHandle[lowercaseName];
4551              attrHandle[lowercaseName] = ret;
4552              ret = getter(elem, name3, isXML) != null ? lowercaseName : null;
4553              attrHandle[lowercaseName] = handle;
4554            }
4555            return ret;
4556          };
4557        });
4558        var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i;
4559        jQuery3.fn.extend({
4560          prop: function(name2, value2) {
4561            return access(this, jQuery3.prop, name2, value2, arguments.length > 1);
4562          },
4563          removeProp: function(name2) {
4564            return this.each(function() {
4565              delete this[jQuery3.propFix[name2] || name2];
4566            });
4567          }
4568        });
4569        jQuery3.extend({
4570          prop: function(elem, name2, value2) {
4571            var ret, hooks, nType = elem.nodeType;
4572            if (nType === 3 || nType === 8 || nType === 2) {
4573              return;
4574            }
4575            if (nType !== 1 || !jQuery3.isXMLDoc(elem)) {
4576              name2 = jQuery3.propFix[name2] || name2;
4577              hooks = jQuery3.propHooks[name2];
4578            }
4579            if (value2 !== void 0) {
4580              if (hooks && "set" in hooks && (ret = hooks.set(elem, value2, name2)) !== void 0) {
4581                return ret;
4582              }
4583              return elem[name2] = value2;
4584            }
4585            if (hooks && "get" in hooks && (ret = hooks.get(elem, name2)) !== null) {
4586              return ret;
4587            }
4588            return elem[name2];
4589          },
4590          propHooks: {
4591            tabIndex: {
4592              get: function(elem) {
4593                var tabindex = jQuery3.find.attr(elem, "tabindex");
4594                if (tabindex) {
4595                  return parseInt(tabindex, 10);
4596                }
4597                if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {
4598                  return 0;
4599                }
4600                return -1;
4601              }
4602            }
4603          },
4604          propFix: {
4605            "for": "htmlFor",
4606            "class": "className"
4607          }
4608        });
4609        if (!support.optSelected) {
4610          jQuery3.propHooks.selected = {
4611            get: function(elem) {
4612              var parent = elem.parentNode;
4613              if (parent && parent.parentNode) {
4614                parent.parentNode.selectedIndex;
4615              }
4616              return null;
4617            },
4618            set: function(elem) {
4619              var parent = elem.parentNode;
4620              if (parent) {
4621                parent.selectedIndex;
4622                if (parent.parentNode) {
4623                  parent.parentNode.selectedIndex;
4624                }
4625              }
4626            }
4627          };
4628        }
4629        jQuery3.each([
4630          "tabIndex",
4631          "readOnly",
4632          "maxLength",
4633          "cellSpacing",
4634          "cellPadding",
4635          "rowSpan",
4636          "colSpan",
4637          "useMap",
4638          "frameBorder",
4639          "contentEditable"
4640        ], function() {
4641          jQuery3.propFix[this.toLowerCase()] = this;
4642        });
4643        function stripAndCollapse(value2) {
4644          var tokens = value2.match(rnothtmlwhite) || [];
4645          return tokens.join(" ");
4646        }
4647        function getClass(elem) {
4648          return elem.getAttribute && elem.getAttribute("class") || "";
4649        }
4650        function classesToArray(value2) {
4651          if (Array.isArray(value2)) {
4652            return value2;
4653          }
4654          if (typeof value2 === "string") {
4655            return value2.match(rnothtmlwhite) || [];
4656          }
4657          return [];
4658        }
4659        jQuery3.fn.extend({
4660          addClass: function(value2) {
4661            var classNames, cur, curValue, className, i2, finalValue;
4662            if (isFunction(value2)) {
4663              return this.each(function(j) {
4664                jQuery3(this).addClass(value2.call(this, j, getClass(this)));
4665              });
4666            }
4667            classNames = classesToArray(value2);
4668            if (classNames.length) {
4669              return this.each(function() {
4670                curValue = getClass(this);
4671                cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
4672                if (cur) {
4673                  for (i2 = 0; i2 < classNames.length; i2++) {
4674                    className = classNames[i2];
4675                    if (cur.indexOf(" " + className + " ") < 0) {
4676                      cur += className + " ";
4677                    }
4678                  }
4679                  finalValue = stripAndCollapse(cur);
4680                  if (curValue !== finalValue) {
4681                    this.setAttribute("class", finalValue);
4682                  }
4683                }
4684              });
4685            }
4686            return this;
4687          },
4688          removeClass: function(value2) {
4689            var classNames, cur, curValue, className, i2, finalValue;
4690            if (isFunction(value2)) {
4691              return this.each(function(j) {
4692                jQuery3(this).removeClass(value2.call(this, j, getClass(this)));
4693              });
4694            }
4695            if (!arguments.length) {
4696              return this.attr("class", "");
4697            }
4698            classNames = classesToArray(value2);
4699            if (classNames.length) {
4700              return this.each(function() {
4701                curValue = getClass(this);
4702                cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
4703                if (cur) {
4704                  for (i2 = 0; i2 < classNames.length; i2++) {
4705                    className = classNames[i2];
4706                    while (cur.indexOf(" " + className + " ") > -1) {
4707                      cur = cur.replace(" " + className + " ", " ");
4708                    }
4709                  }
4710                  finalValue = stripAndCollapse(cur);
4711                  if (curValue !== finalValue) {
4712                    this.setAttribute("class", finalValue);
4713                  }
4714                }
4715              });
4716            }
4717            return this;
4718          },
4719          toggleClass: function(value2, stateVal) {
4720            var classNames, className, i2, self2, type2 = typeof value2, isValidValue = type2 === "string" || Array.isArray(value2);
4721            if (isFunction(value2)) {
4722              return this.each(function(i3) {
4723                jQuery3(this).toggleClass(
4724                  value2.call(this, i3, getClass(this), stateVal),
4725                  stateVal
4726                );
4727              });
4728            }
4729            if (typeof stateVal === "boolean" && isValidValue) {
4730              return stateVal ? this.addClass(value2) : this.removeClass(value2);
4731            }
4732            classNames = classesToArray(value2);
4733            return this.each(function() {
4734              if (isValidValue) {
4735                self2 = jQuery3(this);
4736                for (i2 = 0; i2 < classNames.length; i2++) {
4737                  className = classNames[i2];
4738                  if (self2.hasClass(className)) {
4739                    self2.removeClass(className);
4740                  } else {
4741                    self2.addClass(className);
4742                  }
4743                }
4744              } else if (value2 === void 0 || type2 === "boolean") {
4745                className = getClass(this);
4746                if (className) {
4747                  dataPriv.set(this, "__className__", className);
4748                }
4749                if (this.setAttribute) {
4750                  this.setAttribute(
4751                    "class",
4752                    className || value2 === false ? "" : dataPriv.get(this, "__className__") || ""
4753                  );
4754                }
4755              }
4756            });
4757          },
4758          hasClass: function(selector) {
4759            var className, elem, i2 = 0;
4760            className = " " + selector + " ";
4761            while (elem = this[i2++]) {
4762              if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) {
4763                return true;
4764              }
4765            }
4766            return false;
4767          }
4768        });
4769        var rreturn = /\r/g;
4770        jQuery3.fn.extend({
4771          val: function(value2) {
4772            var hooks, ret, valueIsFunction, elem = this[0];
4773            if (!arguments.length) {
4774              if (elem) {
4775                hooks = jQuery3.valHooks[elem.type] || jQuery3.valHooks[elem.nodeName.toLowerCase()];
4776                if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== void 0) {
4777                  return ret;
4778                }
4779                ret = elem.value;
4780                if (typeof ret === "string") {
4781                  return ret.replace(rreturn, "");
4782                }
4783                return ret == null ? "" : ret;
4784              }
4785              return;
4786            }
4787            valueIsFunction = isFunction(value2);
4788            return this.each(function(i2) {
4789              var val;
4790              if (this.nodeType !== 1) {
4791                return;
4792              }
4793              if (valueIsFunction) {
4794                val = value2.call(this, i2, jQuery3(this).val());
4795              } else {
4796                val = value2;
4797              }
4798              if (val == null) {
4799                val = "";
4800              } else if (typeof val === "number") {
4801                val += "";
4802              } else if (Array.isArray(val)) {
4803                val = jQuery3.map(val, function(value3) {
4804                  return value3 == null ? "" : value3 + "";
4805                });
4806              }
4807              hooks = jQuery3.valHooks[this.type] || jQuery3.valHooks[this.nodeName.toLowerCase()];
4808              if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === void 0) {
4809                this.value = val;
4810              }
4811            });
4812          }
4813        });
4814        jQuery3.extend({
4815          valHooks: {
4816            option: {
4817              get: function(elem) {
4818                var val = jQuery3.find.attr(elem, "value");
4819                return val != null ? val : stripAndCollapse(jQuery3.text(elem));
4820              }
4821            },
4822            select: {
4823              get: function(elem) {
4824                var value2, option, i2, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length;
4825                if (index < 0) {
4826                  i2 = max;
4827                } else {
4828                  i2 = one ? index : 0;
4829                }
4830                for (; i2 < max; i2++) {
4831                  option = options[i2];
4832                  if ((option.selected || i2 === index) && !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) {
4833                    value2 = jQuery3(option).val();
4834                    if (one) {
4835                      return value2;
4836                    }
4837                    values.push(value2);
4838                  }
4839                }
4840                return values;
4841              },
4842              set: function(elem, value2) {
4843                var optionSet, option, options = elem.options, values = jQuery3.makeArray(value2), i2 = options.length;
4844                while (i2--) {
4845                  option = options[i2];
4846                  if (option.selected = jQuery3.inArray(jQuery3.valHooks.option.get(option), values) > -1) {
4847                    optionSet = true;
4848                  }
4849                }
4850                if (!optionSet) {
4851                  elem.selectedIndex = -1;
4852                }
4853                return values;
4854              }
4855            }
4856          }
4857        });
4858        jQuery3.each(["radio", "checkbox"], function() {
4859          jQuery3.valHooks[this] = {
4860            set: function(elem, value2) {
4861              if (Array.isArray(value2)) {
4862                return elem.checked = jQuery3.inArray(jQuery3(elem).val(), value2) > -1;
4863              }
4864            }
4865          };
4866          if (!support.checkOn) {
4867            jQuery3.valHooks[this].get = function(elem) {
4868              return elem.getAttribute("value") === null ? "on" : elem.value;
4869            };
4870          }
4871        });
4872        var location2 = window2.location;
4873        var nonce = { guid: Date.now() };
4874        var rquery = /\?/;
4875        jQuery3.parseXML = function(data) {
4876          var xml, parserErrorElem;
4877          if (!data || typeof data !== "string") {
4878            return null;
4879          }
4880          try {
4881            xml = new window2.DOMParser().parseFromString(data, "text/xml");
4882          } catch (e) {
4883          }
4884          parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0];
4885          if (!xml || parserErrorElem) {
4886            jQuery3.error("Invalid XML: " + (parserErrorElem ? jQuery3.map(parserErrorElem.childNodes, function(el) {
4887              return el.textContent;
4888            }).join("\n") : data));
4889          }
4890          return xml;
4891        };
4892        var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) {
4893          e.stopPropagation();
4894        };
4895        jQuery3.extend(jQuery3.event, {
4896          trigger: function(event, data, elem, onlyHandlers) {
4897            var i2, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [elem || document2], type2 = hasOwn.call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
4898            cur = lastElement = tmp = elem = elem || document2;
4899            if (elem.nodeType === 3 || elem.nodeType === 8) {
4900              return;
4901            }
4902            if (rfocusMorph.test(type2 + jQuery3.event.triggered)) {
4903              return;
4904            }
4905            if (type2.indexOf(".") > -1) {
4906              namespaces = type2.split(".");
4907              type2 = namespaces.shift();
4908              namespaces.sort();
4909            }
4910            ontype = type2.indexOf(":") < 0 && "on" + type2;
4911            event = event[jQuery3.expando] ? event : new jQuery3.Event(type2, typeof event === "object" && event);
4912            event.isTrigger = onlyHandlers ? 2 : 3;
4913            event.namespace = namespaces.join(".");
4914            event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null;
4915            event.result = void 0;
4916            if (!event.target) {
4917              event.target = elem;
4918            }
4919            data = data == null ? [event] : jQuery3.makeArray(data, [event]);
4920            special = jQuery3.event.special[type2] || {};
4921            if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
4922              return;
4923            }
4924            if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
4925              bubbleType = special.delegateType || type2;
4926              if (!rfocusMorph.test(bubbleType + type2)) {
4927                cur = cur.parentNode;
4928              }
4929              for (; cur; cur = cur.parentNode) {
4930                eventPath.push(cur);
4931                tmp = cur;
4932              }
4933              if (tmp === (elem.ownerDocument || document2)) {
4934                eventPath.push(tmp.defaultView || tmp.parentWindow || window2);
4935              }
4936            }
4937            i2 = 0;
4938            while ((cur = eventPath[i2++]) && !event.isPropagationStopped()) {
4939              lastElement = cur;
4940              event.type = i2 > 1 ? bubbleType : special.bindType || type2;
4941              handle = (dataPriv.get(cur, "events") || /* @__PURE__ */ Object.create(null))[event.type] && dataPriv.get(cur, "handle");
4942              if (handle) {
4943                handle.apply(cur, data);
4944              }
4945              handle = ontype && cur[ontype];
4946              if (handle && handle.apply && acceptData(cur)) {
4947                event.result = handle.apply(cur, data);
4948                if (event.result === false) {
4949                  event.preventDefault();
4950                }
4951              }
4952            }
4953            event.type = type2;
4954            if (!onlyHandlers && !event.isDefaultPrevented()) {
4955              if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
4956                if (ontype && isFunction(elem[type2]) && !isWindow(elem)) {
4957                  tmp = elem[ontype];
4958                  if (tmp) {
4959                    elem[ontype] = null;
4960                  }
4961                  jQuery3.event.triggered = type2;
4962                  if (event.isPropagationStopped()) {
4963                    lastElement.addEventListener(type2, stopPropagationCallback);
4964                  }
4965                  elem[type2]();
4966                  if (event.isPropagationStopped()) {
4967                    lastElement.removeEventListener(type2, stopPropagationCallback);
4968                  }
4969                  jQuery3.event.triggered = void 0;
4970                  if (tmp) {
4971                    elem[ontype] = tmp;
4972                  }
4973                }
4974              }
4975            }
4976            return event.result;
4977          },
4978          simulate: function(type2, elem, event) {
4979            var e = jQuery3.extend(
4980              new jQuery3.Event(),
4981              event,
4982              {
4983                type: type2,
4984                isSimulated: true
4985              }
4986            );
4987            jQuery3.event.trigger(e, null, elem);
4988          }
4989        });
4990        jQuery3.fn.extend({
4991          trigger: function(type2, data) {
4992            return this.each(function() {
4993              jQuery3.event.trigger(type2, data, this);
4994            });
4995          },
4996          triggerHandler: function(type2, data) {
4997            var elem = this[0];
4998            if (elem) {
4999              return jQuery3.event.trigger(type2, data, elem, true);
5000            }
5001          }
5002        });
5003        var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i;
5004        function buildParams(prefix, obj, traditional, add) {
5005          var name2;
5006          if (Array.isArray(obj)) {
5007            jQuery3.each(obj, function(i2, v) {
5008              if (traditional || rbracket.test(prefix)) {
5009                add(prefix, v);
5010              } else {
5011                buildParams(
5012                  prefix + "[" + (typeof v === "object" && v != null ? i2 : "") + "]",
5013                  v,
5014                  traditional,
5015                  add
5016                );
5017              }
5018            });
5019          } else if (!traditional && toType(obj) === "object") {
5020            for (name2 in obj) {
5021              buildParams(prefix + "[" + name2 + "]", obj[name2], traditional, add);
5022            }
5023          } else {
5024            add(prefix, obj);
5025          }
5026        }
5027        jQuery3.param = function(a, traditional) {
5028          var prefix, s = [], add = function(key, valueOrFunction) {
5029            var value2 = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;
5030            s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value2 == null ? "" : value2);
5031          };
5032          if (a == null) {
5033            return "";
5034          }
5035          if (Array.isArray(a) || a.jquery && !jQuery3.isPlainObject(a)) {
5036            jQuery3.each(a, function() {
5037              add(this.name, this.value);
5038            });
5039          } else {
5040            for (prefix in a) {
5041              buildParams(prefix, a[prefix], traditional, add);
5042            }
5043          }
5044          return s.join("&");
5045        };
5046        jQuery3.fn.extend({
5047          serialize: function() {
5048            return jQuery3.param(this.serializeArray());
5049          },
5050          serializeArray: function() {
5051            return this.map(function() {
5052              var elements = jQuery3.prop(this, "elements");
5053              return elements ? jQuery3.makeArray(elements) : this;
5054            }).filter(function() {
5055              var type2 = this.type;
5056              return this.name && !jQuery3(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type2) && (this.checked || !rcheckableType.test(type2));
5057            }).map(function(_i, elem) {
5058              var val = jQuery3(this).val();
5059              if (val == null) {
5060                return null;
5061              }
5062              if (Array.isArray(val)) {
5063                return jQuery3.map(val, function(val2) {
5064                  return { name: elem.name, value: val2.replace(rCRLF, "\r\n") };
5065                });
5066              }
5067              return { name: elem.name, value: val.replace(rCRLF, "\r\n") };
5068            }).get();
5069          }
5070        });
5071        var r20 = /%20/g, rhash = /#.*$/, rantiCache = /([?&])_=[^&]*/, rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, rnoContent = /^(?:GET|HEAD)$/, rprotocol = /^\/\//, prefilters = {}, transports2 = {}, allTypes = "*/".concat("*"), originAnchor = document2.createElement("a");
5072        originAnchor.href = location2.href;
5073        function addToPrefiltersOrTransports(structure) {
5074          return function(dataTypeExpression, func) {
5075            if (typeof dataTypeExpression !== "string") {
5076              func = dataTypeExpression;
5077              dataTypeExpression = "*";
5078            }
5079            var dataType, i2 = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
5080            if (isFunction(func)) {
5081              while (dataType = dataTypes[i2++]) {
5082                if (dataType[0] === "+") {
5083                  dataType = dataType.slice(1) || "*";
5084                  (structure[dataType] = structure[dataType] || []).unshift(func);
5085                } else {
5086                  (structure[dataType] = structure[dataType] || []).push(func);
5087                }
5088              }
5089            }
5090          };
5091        }
5092        function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
5093          var inspected = {}, seekingTransport = structure === transports2;
5094          function inspect(dataType) {
5095            var selected;
5096            inspected[dataType] = true;
5097            jQuery3.each(structure[dataType] || [], function(_, prefilterOrFactory) {
5098              var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
5099              if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {
5100                options.dataTypes.unshift(dataTypeOrTransport);
5101                inspect(dataTypeOrTransport);
5102                return false;
5103              } else if (seekingTransport) {
5104                return !(selected = dataTypeOrTransport);
5105              }
5106            });
5107            return selected;
5108          }
5109          return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
5110        }
5111        function ajaxExtend(target, src) {
5112          var key, deep, flatOptions = jQuery3.ajaxSettings.flatOptions || {};
5113          for (key in src) {
5114            if (src[key] !== void 0) {
5115              (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
5116            }
5117          }
5118          if (deep) {
5119            jQuery3.extend(true, target, deep);
5120          }
5121          return target;
5122        }
5123        function ajaxHandleResponses(s, jqXHR, responses) {
5124          var ct, type2, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes;
5125          while (dataTypes[0] === "*") {
5126            dataTypes.shift();
5127            if (ct === void 0) {
5128              ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
5129            }
5130          }
5131          if (ct) {
5132            for (type2 in contents) {
5133              if (contents[type2] && contents[type2].test(ct)) {
5134                dataTypes.unshift(type2);
5135                break;
5136              }
5137            }
5138          }
5139          if (dataTypes[0] in responses) {
5140            finalDataType = dataTypes[0];
5141          } else {
5142            for (type2 in responses) {
5143              if (!dataTypes[0] || s.converters[type2 + " " + dataTypes[0]]) {
5144                finalDataType = type2;
5145                break;
5146              }
5147              if (!firstDataType) {
5148                firstDataType = type2;
5149              }
5150            }
5151            finalDataType = finalDataType || firstDataType;
5152          }
5153          if (finalDataType) {
5154            if (finalDataType !== dataTypes[0]) {
5155              dataTypes.unshift(finalDataType);
5156            }
5157            return responses[finalDataType];
5158          }
5159        }
5160        function ajaxConvert(s, response, jqXHR, isSuccess) {
5161          var conv2, current, conv, tmp, prev2, converters = {}, dataTypes = s.dataTypes.slice();
5162          if (dataTypes[1]) {
5163            for (conv in s.converters) {
5164              converters[conv.toLowerCase()] = s.converters[conv];
5165            }
5166          }
5167          current = dataTypes.shift();
5168          while (current) {
5169            if (s.responseFields[current]) {
5170              jqXHR[s.responseFields[current]] = response;
5171            }
5172            if (!prev2 && isSuccess && s.dataFilter) {
5173              response = s.dataFilter(response, s.dataType);
5174            }
5175            prev2 = current;
5176            current = dataTypes.shift();
5177            if (current) {
5178              if (current === "*") {
5179                current = prev2;
5180              } else if (prev2 !== "*" && prev2 !== current) {
5181                conv = converters[prev2 + " " + current] || converters["* " + current];
5182                if (!conv) {
5183                  for (conv2 in converters) {
5184                    tmp = conv2.split(" ");
5185                    if (tmp[1] === current) {
5186                      conv = converters[prev2 + " " + tmp[0]] || converters["* " + tmp[0]];
5187                      if (conv) {
5188                        if (conv === true) {
5189                          conv = converters[conv2];
5190                        } else if (converters[conv2] !== true) {
5191                          current = tmp[0];
5192                          dataTypes.unshift(tmp[1]);
5193                        }
5194                        break;
5195                      }
5196                    }
5197                  }
5198                }
5199                if (conv !== true) {
5200                  if (conv && s.throws) {
5201                    response = conv(response);
5202                  } else {
5203                    try {
5204                      response = conv(response);
5205                    } catch (e) {
5206                      return {
5207                        state: "parsererror",
5208                        error: conv ? e : "No conversion from " + prev2 + " to " + current
5209                      };
5210                    }
5211                  }
5212                }
5213              }
5214            }
5215          }
5216          return { state: "success", data: response };
5217        }
5218        jQuery3.extend({
5219          active: 0,
5220          lastModified: {},
5221          etag: {},
5222          ajaxSettings: {
5223            url: location2.href,
5224            type: "GET",
5225            isLocal: rlocalProtocol.test(location2.protocol),
5226            global: true,
5227            processData: true,
5228            async: true,
5229            contentType: "application/x-www-form-urlencoded; charset=UTF-8",
5230            accepts: {
5231              "*": allTypes,
5232              text: "text/plain",
5233              html: "text/html",
5234              xml: "application/xml, text/xml",
5235              json: "application/json, text/javascript"
5236            },
5237            contents: {
5238              xml: /\bxml\b/,
5239              html: /\bhtml/,
5240              json: /\bjson\b/
5241            },
5242            responseFields: {
5243              xml: "responseXML",
5244              text: "responseText",
5245              json: "responseJSON"
5246            },
5247            converters: {
5248              "* text": String,
5249              "text html": true,
5250              "text json": JSON.parse,
5251              "text xml": jQuery3.parseXML
5252            },
5253            flatOptions: {
5254              url: true,
5255              context: true
5256            }
5257          },
5258          ajaxSetup: function(target, settings) {
5259            return settings ? ajaxExtend(ajaxExtend(target, jQuery3.ajaxSettings), settings) : ajaxExtend(jQuery3.ajaxSettings, target);
5260          },
5261          ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
5262          ajaxTransport: addToPrefiltersOrTransports(transports2),
5263          ajax: function(url2, options) {
5264            if (typeof url2 === "object") {
5265              options = url2;
5266              url2 = void 0;
5267            }
5268            options = options || {};
5269            var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed2, fireGlobals, i2, uncached, s = jQuery3.ajaxSetup({}, options), callbackContext = s.context || s, globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery3(callbackContext) : jQuery3.event, deferred = jQuery3.Deferred(), completeDeferred = jQuery3.Callbacks("once memory"), statusCode = s.statusCode || {}, requestHeaders = {}, requestHeadersNames = {}, strAbort = "canceled", jqXHR = {
5270              readyState: 0,
5271              getResponseHeader: function(key) {
5272                var match;
5273                if (completed2) {
5274                  if (!responseHeaders) {
5275                    responseHeaders = {};
5276                    while (match = rheaders.exec(responseHeadersString)) {
5277                      responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]);
5278                    }
5279                  }
5280                  match = responseHeaders[key.toLowerCase() + " "];
5281                }
5282                return match == null ? null : match.join(", ");
5283              },
5284              getAllResponseHeaders: function() {
5285                return completed2 ? responseHeadersString : null;
5286              },
5287              setRequestHeader: function(name2, value2) {
5288                if (completed2 == null) {
5289                  name2 = requestHeadersNames[name2.toLowerCase()] = requestHeadersNames[name2.toLowerCase()] || name2;
5290                  requestHeaders[name2] = value2;
5291                }
5292                return this;
5293              },
5294              overrideMimeType: function(type2) {
5295                if (completed2 == null) {
5296                  s.mimeType = type2;
5297                }
5298                return this;
5299              },
5300              statusCode: function(map2) {
5301                var code;
5302                if (map2) {
5303                  if (completed2) {
5304                    jqXHR.always(map2[jqXHR.status]);
5305                  } else {
5306                    for (code in map2) {
5307                      statusCode[code] = [statusCode[code], map2[code]];
5308                    }
5309                  }
5310                }
5311                return this;
5312              },
5313              abort: function(statusText) {
5314                var finalText = statusText || strAbort;
5315                if (transport) {
5316                  transport.abort(finalText);
5317                }
5318                done(0, finalText);
5319                return this;
5320              }
5321            };
5322            deferred.promise(jqXHR);
5323            s.url = ((url2 || s.url || location2.href) + "").replace(rprotocol, location2.protocol + "//");
5324            s.type = options.method || options.type || s.method || s.type;
5325            s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""];
5326            if (s.crossDomain == null) {
5327              urlAnchor = document2.createElement("a");
5328              try {
5329                urlAnchor.href = s.url;
5330                urlAnchor.href = urlAnchor.href;
5331                s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
5332              } catch (e) {
5333                s.crossDomain = true;
5334              }
5335            }
5336            if (s.data && s.processData && typeof s.data !== "string") {
5337              s.data = jQuery3.param(s.data, s.traditional);
5338            }
5339            inspectPrefiltersOrTransports(prefilters, s, options, jqXHR);
5340            if (completed2) {
5341              return jqXHR;
5342            }
5343            fireGlobals = jQuery3.event && s.global;
5344            if (fireGlobals && jQuery3.active++ === 0) {
5345              jQuery3.event.trigger("ajaxStart");
5346            }
5347            s.type = s.type.toUpperCase();
5348            s.hasContent = !rnoContent.test(s.type);
5349            cacheURL = s.url.replace(rhash, "");
5350            if (!s.hasContent) {
5351              uncached = s.url.slice(cacheURL.length);
5352              if (s.data && (s.processData || typeof s.data === "string")) {
5353                cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data;
5354                delete s.data;
5355              }
5356              if (s.cache === false) {
5357                cacheURL = cacheURL.replace(rantiCache, "$1");
5358                uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached;
5359              }
5360              s.url = cacheURL + uncached;
5361            } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) {
5362              s.data = s.data.replace(r20, "+");
5363            }
5364            if (s.ifModified) {
5365              if (jQuery3.lastModified[cacheURL]) {
5366                jqXHR.setRequestHeader("If-Modified-Since", jQuery3.lastModified[cacheURL]);
5367              }
5368              if (jQuery3.etag[cacheURL]) {
5369                jqXHR.setRequestHeader("If-None-Match", jQuery3.etag[cacheURL]);
5370              }
5371            }
5372            if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
5373              jqXHR.setRequestHeader("Content-Type", s.contentType);
5374            }
5375            jqXHR.setRequestHeader(
5376              "Accept",
5377              s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]
5378            );
5379            for (i2 in s.headers) {
5380              jqXHR.setRequestHeader(i2, s.headers[i2]);
5381            }
5382            if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed2)) {
5383              return jqXHR.abort();
5384            }
5385            strAbort = "abort";
5386            completeDeferred.add(s.complete);
5387            jqXHR.done(s.success);
5388            jqXHR.fail(s.error);
5389            transport = inspectPrefiltersOrTransports(transports2, s, options, jqXHR);
5390            if (!transport) {
5391              done(-1, "No Transport");
5392            } else {
5393              jqXHR.readyState = 1;
5394              if (fireGlobals) {
5395                globalEventContext.trigger("ajaxSend", [jqXHR, s]);
5396              }
5397              if (completed2) {
5398                return jqXHR;
5399              }
5400              if (s.async && s.timeout > 0) {
5401                timeoutTimer = window2.setTimeout(function() {
5402                  jqXHR.abort("timeout");
5403                }, s.timeout);
5404              }
5405              try {
5406                completed2 = false;
5407                transport.send(requestHeaders, done);
5408              } catch (e) {
5409                if (completed2) {
5410                  throw e;
5411                }
5412                done(-1, e);
5413              }
5414            }
5415            function done(status, nativeStatusText, responses, headers) {
5416              var isSuccess, success, error, response, modified, statusText = nativeStatusText;
5417              if (completed2) {
5418                return;
5419              }
5420              completed2 = true;
5421              if (timeoutTimer) {
5422                window2.clearTimeout(timeoutTimer);
5423              }
5424              transport = void 0;
5425              responseHeadersString = headers || "";
5426              jqXHR.readyState = status > 0 ? 4 : 0;
5427              isSuccess = status >= 200 && status < 300 || status === 304;
5428              if (responses) {
5429                response = ajaxHandleResponses(s, jqXHR, responses);
5430              }
5431              if (!isSuccess && jQuery3.inArray("script", s.dataTypes) > -1 && jQuery3.inArray("json", s.dataTypes) < 0) {
5432                s.converters["text script"] = function() {
5433                };
5434              }
5435              response = ajaxConvert(s, response, jqXHR, isSuccess);
5436              if (isSuccess) {
5437                if (s.ifModified) {
5438                  modified = jqXHR.getResponseHeader("Last-Modified");
5439                  if (modified) {
5440                    jQuery3.lastModified[cacheURL] = modified;
5441                  }
5442                  modified = jqXHR.getResponseHeader("etag");
5443                  if (modified) {
5444                    jQuery3.etag[cacheURL] = modified;
5445                  }
5446                }
5447                if (status === 204 || s.type === "HEAD") {
5448                  statusText = "nocontent";
5449                } else if (status === 304) {
5450                  statusText = "notmodified";
5451                } else {
5452                  statusText = response.state;
5453                  success = response.data;
5454                  error = response.error;
5455                  isSuccess = !error;
5456                }
5457              } else {
5458                error = statusText;
5459                if (status || !statusText) {
5460                  statusText = "error";
5461                  if (status < 0) {
5462                    status = 0;
5463                  }
5464                }
5465              }
5466              jqXHR.status = status;
5467              jqXHR.statusText = (nativeStatusText || statusText) + "";
5468              if (isSuccess) {
5469                deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
5470              } else {
5471                deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
5472              }
5473              jqXHR.statusCode(statusCode);
5474              statusCode = void 0;
5475              if (fireGlobals) {
5476                globalEventContext.trigger(
5477                  isSuccess ? "ajaxSuccess" : "ajaxError",
5478                  [jqXHR, s, isSuccess ? success : error]
5479                );
5480              }
5481              completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
5482              if (fireGlobals) {
5483                globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
5484                if (!--jQuery3.active) {
5485                  jQuery3.event.trigger("ajaxStop");
5486                }
5487              }
5488            }
5489            return jqXHR;
5490          },
5491          getJSON: function(url2, data, callback) {
5492            return jQuery3.get(url2, data, callback, "json");
5493          },
5494          getScript: function(url2, callback) {
5495            return jQuery3.get(url2, void 0, callback, "script");
5496          }
5497        });
5498        jQuery3.each(["get", "post"], function(_i, method) {
5499          jQuery3[method] = function(url2, data, callback, type2) {
5500            if (isFunction(data)) {
5501              type2 = type2 || callback;
5502              callback = data;
5503              data = void 0;
5504            }
5505            return jQuery3.ajax(jQuery3.extend({
5506              url: url2,
5507              type: method,
5508              dataType: type2,
5509              data,
5510              success: callback
5511            }, jQuery3.isPlainObject(url2) && url2));
5512          };
5513        });
5514        jQuery3.ajaxPrefilter(function(s) {
5515          var i2;
5516          for (i2 in s.headers) {
5517            if (i2.toLowerCase() === "content-type") {
5518              s.contentType = s.headers[i2] || "";
5519            }
5520          }
5521        });
5522        jQuery3._evalUrl = function(url2, options, doc) {
5523          return jQuery3.ajax({
5524            url: url2,
5525            type: "GET",
5526            dataType: "script",
5527            cache: true,
5528            async: false,
5529            global: false,
5530            converters: {
5531              "text script": function() {
5532              }
5533            },
5534            dataFilter: function(response) {
5535              jQuery3.globalEval(response, options, doc);
5536            }
5537          });
5538        };
5539        jQuery3.fn.extend({
5540          wrapAll: function(html) {
5541            var wrap;
5542            if (this[0]) {
5543              if (isFunction(html)) {
5544                html = html.call(this[0]);
5545              }
5546              wrap = jQuery3(html, this[0].ownerDocument).eq(0).clone(true);
5547              if (this[0].parentNode) {
5548                wrap.insertBefore(this[0]);
5549              }
5550              wrap.map(function() {
5551                var elem = this;
5552                while (elem.firstElementChild) {
5553                  elem = elem.firstElementChild;
5554                }
5555                return elem;
5556              }).append(this);
5557            }
5558            return this;
5559          },
5560          wrapInner: function(html) {
5561            if (isFunction(html)) {
5562              return this.each(function(i2) {
5563                jQuery3(this).wrapInner(html.call(this, i2));
5564              });
5565            }
5566            return this.each(function() {
5567              var self2 = jQuery3(this), contents = self2.contents();
5568              if (contents.length) {
5569                contents.wrapAll(html);
5570              } else {
5571                self2.append(html);
5572              }
5573            });
5574          },
5575          wrap: function(html) {
5576            var htmlIsFunction = isFunction(html);
5577            return this.each(function(i2) {
5578              jQuery3(this).wrapAll(htmlIsFunction ? html.call(this, i2) : html);
5579            });
5580          },
5581          unwrap: function(selector) {
5582            this.parent(selector).not("body").each(function() {
5583              jQuery3(this).replaceWith(this.childNodes);
5584            });
5585            return this;
5586          }
5587        });
5588        jQuery3.expr.pseudos.hidden = function(elem) {
5589          return !jQuery3.expr.pseudos.visible(elem);
5590        };
5591        jQuery3.expr.pseudos.visible = function(elem) {
5592          return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
5593        };
5594        jQuery3.ajaxSettings.xhr = function() {
5595          try {
5596            return new window2.XMLHttpRequest();
5597          } catch (e) {
5598          }
5599        };
5600        var xhrSuccessStatus = {
5601          0: 200,
5602          1223: 204
5603        }, xhrSupported = jQuery3.ajaxSettings.xhr();
5604        support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
5605        support.ajax = xhrSupported = !!xhrSupported;
5606        jQuery3.ajaxTransport(function(options) {
5607          var callback, errorCallback;
5608          if (support.cors || xhrSupported && !options.crossDomain) {
5609            return {
5610              send: function(headers, complete) {
5611                var i2, xhr = options.xhr();
5612                xhr.open(
5613                  options.type,
5614                  options.url,
5615                  options.async,
5616                  options.username,
5617                  options.password
5618                );
5619                if (options.xhrFields) {
5620                  for (i2 in options.xhrFields) {
5621                    xhr[i2] = options.xhrFields[i2];
5622                  }
5623                }
5624                if (options.mimeType && xhr.overrideMimeType) {
5625                  xhr.overrideMimeType(options.mimeType);
5626                }
5627                if (!options.crossDomain && !headers["X-Requested-With"]) {
5628                  headers["X-Requested-With"] = "XMLHttpRequest";
5629                }
5630                for (i2 in headers) {
5631                  xhr.setRequestHeader(i2, headers[i2]);
5632                }
5633                callback = function(type2) {
5634                  return function() {
5635                    if (callback) {
5636                      callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
5637                      if (type2 === "abort") {
5638                        xhr.abort();
5639                      } else if (type2 === "error") {
5640                        if (typeof xhr.status !== "number") {
5641                          complete(0, "error");
5642                        } else {
5643                          complete(
5644                            xhr.status,
5645                            xhr.statusText
5646                          );
5647                        }
5648                      } else {
5649                        complete(
5650                          xhrSuccessStatus[xhr.status] || xhr.status,
5651                          xhr.statusText,
5652                          (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText },
5653                          xhr.getAllResponseHeaders()
5654                        );
5655                      }
5656                    }
5657                  };
5658                };
5659                xhr.onload = callback();
5660                errorCallback = xhr.onerror = xhr.ontimeout = callback("error");
5661                if (xhr.onabort !== void 0) {
5662                  xhr.onabort = errorCallback;
5663                } else {
5664                  xhr.onreadystatechange = function() {
5665                    if (xhr.readyState === 4) {
5666                      window2.setTimeout(function() {
5667                        if (callback) {
5668                          errorCallback();
5669                        }
5670                      });
5671                    }
5672                  };
5673                }
5674                callback = callback("abort");
5675                try {
5676                  xhr.send(options.hasContent && options.data || null);
5677                } catch (e) {
5678                  if (callback) {
5679                    throw e;
5680                  }
5681                }
5682              },
5683              abort: function() {
5684                if (callback) {
5685                  callback();
5686                }
5687              }
5688            };
5689          }
5690        });
5691        jQuery3.ajaxPrefilter(function(s) {
5692          if (s.crossDomain) {
5693            s.contents.script = false;
5694          }
5695        });
5696        jQuery3.ajaxSetup({
5697          accepts: {
5698            script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
5699          },
5700          contents: {
5701            script: /\b(?:java|ecma)script\b/
5702          },
5703          converters: {
5704            "text script": function(text) {
5705              jQuery3.globalEval(text);
5706              return text;
5707            }
5708          }
5709        });
5710        jQuery3.ajaxPrefilter("script", function(s) {
5711          if (s.cache === void 0) {
5712            s.cache = false;
5713          }
5714          if (s.crossDomain) {
5715            s.type = "GET";
5716          }
5717        });
5718        jQuery3.ajaxTransport("script", function(s) {
5719          if (s.crossDomain || s.scriptAttrs) {
5720            var script, callback;
5721            return {
5722              send: function(_, complete) {
5723                script = jQuery3("<script>").attr(s.scriptAttrs || {}).prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) {
5724                  script.remove();
5725                  callback = null;
5726                  if (evt) {
5727                    complete(evt.type === "error" ? 404 : 200, evt.type);
5728                  }
5729                });
5730                document2.head.appendChild(script[0]);
5731              },
5732              abort: function() {
5733                if (callback) {
5734                  callback();
5735                }
5736              }
5737            };
5738          }
5739        });
5740        var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/;
5741        jQuery3.ajaxSetup({
5742          jsonp: "callback",
5743          jsonpCallback: function() {
5744            var callback = oldCallbacks.pop() || jQuery3.expando + "_" + nonce.guid++;
5745            this[callback] = true;
5746            return callback;
5747          }
5748        });
5749        jQuery3.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) {
5750          var callbackName, overwritten, responseContainer, jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data");
5751          if (jsonProp || s.dataTypes[0] === "jsonp") {
5752            callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback;
5753            if (jsonProp) {
5754              s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
5755            } else if (s.jsonp !== false) {
5756              s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
5757            }
5758            s.converters["script json"] = function() {
5759              if (!responseContainer) {
5760                jQuery3.error(callbackName + " was not called");
5761              }
5762              return responseContainer[0];
5763            };
5764            s.dataTypes[0] = "json";
5765            overwritten = window2[callbackName];
5766            window2[callbackName] = function() {
5767              responseContainer = arguments;
5768            };
5769            jqXHR.always(function() {
5770              if (overwritten === void 0) {
5771                jQuery3(window2).removeProp(callbackName);
5772              } else {
5773                window2[callbackName] = overwritten;
5774              }
5775              if (s[callbackName]) {
5776                s.jsonpCallback = originalSettings.jsonpCallback;
5777                oldCallbacks.push(callbackName);
5778              }
5779              if (responseContainer && isFunction(overwritten)) {
5780                overwritten(responseContainer[0]);
5781              }
5782              responseContainer = overwritten = void 0;
5783            });
5784            return "script";
5785          }
5786        });
5787        support.createHTMLDocument = function() {
5788          var body = document2.implementation.createHTMLDocument("").body;
5789          body.innerHTML = "<form></form><form></form>";
5790          return body.childNodes.length === 2;
5791        }();
5792        jQuery3.parseHTML = function(data, context, keepScripts) {
5793          if (typeof data !== "string") {
5794            return [];
5795          }
5796          if (typeof context === "boolean") {
5797            keepScripts = context;
5798            context = false;
5799          }
5800          var base, parsed, scripts;
5801          if (!context) {
5802            if (support.createHTMLDocument) {
5803              context = document2.implementation.createHTMLDocument("");
5804              base = context.createElement("base");
5805              base.href = document2.location.href;
5806              context.head.appendChild(base);
5807            } else {
5808              context = document2;
5809            }
5810          }
5811          parsed = rsingleTag.exec(data);
5812          scripts = !keepScripts && [];
5813          if (parsed) {
5814            return [context.createElement(parsed[1])];
5815          }
5816          parsed = buildFragment([data], context, scripts);
5817          if (scripts && scripts.length) {
5818            jQuery3(scripts).remove();
5819          }
5820          return jQuery3.merge([], parsed.childNodes);
5821        };
5822        jQuery3.fn.load = function(url2, params, callback) {
5823          var selector, type2, response, self2 = this, off = url2.indexOf(" ");
5824          if (off > -1) {
5825            selector = stripAndCollapse(url2.slice(off));
5826            url2 = url2.slice(0, off);
5827          }
5828          if (isFunction(params)) {
5829            callback = params;
5830            params = void 0;
5831          } else if (params && typeof params === "object") {
5832            type2 = "POST";
5833          }
5834          if (self2.length > 0) {
5835            jQuery3.ajax({
5836              url: url2,
5837              type: type2 || "GET",
5838              dataType: "html",
5839              data: params
5840            }).done(function(responseText) {
5841              response = arguments;
5842              self2.html(selector ? jQuery3("<div>").append(jQuery3.parseHTML(responseText)).find(selector) : responseText);
5843            }).always(callback && function(jqXHR, status) {
5844              self2.each(function() {
5845                callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
5846              });
5847            });
5848          }
5849          return this;
5850        };
5851        jQuery3.expr.pseudos.animated = function(elem) {
5852          return jQuery3.grep(jQuery3.timers, function(fn) {
5853            return elem === fn.elem;
5854          }).length;
5855        };
5856        jQuery3.offset = {
5857          setOffset: function(elem, options, i2) {
5858            var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery3.css(elem, "position"), curElem = jQuery3(elem), props = {};
5859            if (position === "static") {
5860              elem.style.position = "relative";
5861            }
5862            curOffset = curElem.offset();
5863            curCSSTop = jQuery3.css(elem, "top");
5864            curCSSLeft = jQuery3.css(elem, "left");
5865            calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1;
5866            if (calculatePosition) {
5867              curPosition = curElem.position();
5868              curTop = curPosition.top;
5869              curLeft = curPosition.left;
5870            } else {
5871              curTop = parseFloat(curCSSTop) || 0;
5872              curLeft = parseFloat(curCSSLeft) || 0;
5873            }
5874            if (isFunction(options)) {
5875              options = options.call(elem, i2, jQuery3.extend({}, curOffset));
5876            }
5877            if (options.top != null) {
5878              props.top = options.top - curOffset.top + curTop;
5879            }
5880            if (options.left != null) {
5881              props.left = options.left - curOffset.left + curLeft;
5882            }
5883            if ("using" in options) {
5884              options.using.call(elem, props);
5885            } else {
5886              curElem.css(props);
5887            }
5888          }
5889        };
5890        jQuery3.fn.extend({
5891          offset: function(options) {
5892            if (arguments.length) {
5893              return options === void 0 ? this : this.each(function(i2) {
5894                jQuery3.offset.setOffset(this, options, i2);
5895              });
5896            }
5897            var rect, win, elem = this[0];
5898            if (!elem) {
5899              return;
5900            }
5901            if (!elem.getClientRects().length) {
5902              return { top: 0, left: 0 };
5903            }
5904            rect = elem.getBoundingClientRect();
5905            win = elem.ownerDocument.defaultView;
5906            return {
5907              top: rect.top + win.pageYOffset,
5908              left: rect.left + win.pageXOffset
5909            };
5910          },
5911          position: function() {
5912            if (!this[0]) {
5913              return;
5914            }
5915            var offsetParent, offset, doc, elem = this[0], parentOffset = { top: 0, left: 0 };
5916            if (jQuery3.css(elem, "position") === "fixed") {
5917              offset = elem.getBoundingClientRect();
5918            } else {
5919              offset = this.offset();
5920              doc = elem.ownerDocument;
5921              offsetParent = elem.offsetParent || doc.documentElement;
5922              while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery3.css(offsetParent, "position") === "static") {
5923                offsetParent = offsetParent.parentNode;
5924              }
5925              if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
5926                parentOffset = jQuery3(offsetParent).offset();
5927                parentOffset.top += jQuery3.css(offsetParent, "borderTopWidth", true);
5928                parentOffset.left += jQuery3.css(offsetParent, "borderLeftWidth", true);
5929              }
5930            }
5931            return {
5932              top: offset.top - parentOffset.top - jQuery3.css(elem, "marginTop", true),
5933              left: offset.left - parentOffset.left - jQuery3.css(elem, "marginLeft", true)
5934            };
5935          },
5936          offsetParent: function() {
5937            return this.map(function() {
5938              var offsetParent = this.offsetParent;
5939              while (offsetParent && jQuery3.css(offsetParent, "position") === "static") {
5940                offsetParent = offsetParent.offsetParent;
5941              }
5942              return offsetParent || documentElement;
5943            });
5944          }
5945        });
5946        jQuery3.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) {
5947          var top = "pageYOffset" === prop;
5948          jQuery3.fn[method] = function(val) {
5949            return access(this, function(elem, method2, val2) {
5950              var win;
5951              if (isWindow(elem)) {
5952                win = elem;
5953              } else if (elem.nodeType === 9) {
5954                win = elem.defaultView;
5955              }
5956              if (val2 === void 0) {
5957                return win ? win[prop] : elem[method2];
5958              }
5959              if (win) {
5960                win.scrollTo(
5961                  !top ? val2 : win.pageXOffset,
5962                  top ? val2 : win.pageYOffset
5963                );
5964              } else {
5965                elem[method2] = val2;
5966              }
5967            }, method, val, arguments.length);
5968          };
5969        });
5970        jQuery3.each(["top", "left"], function(_i, prop) {
5971          jQuery3.cssHooks[prop] = addGetHookIf(
5972            support.pixelPosition,
5973            function(elem, computed) {
5974              if (computed) {
5975                computed = curCSS(elem, prop);
5976                return rnumnonpx.test(computed) ? jQuery3(elem).position()[prop] + "px" : computed;
5977              }
5978            }
5979          );
5980        });
5981        jQuery3.each({ Height: "height", Width: "width" }, function(name2, type2) {
5982          jQuery3.each({
5983            padding: "inner" + name2,
5984            content: type2,
5985            "": "outer" + name2
5986          }, function(defaultExtra, funcName) {
5987            jQuery3.fn[funcName] = function(margin, value2) {
5988              var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value2 === true ? "margin" : "border");
5989              return access(this, function(elem, type3, value3) {
5990                var doc;
5991                if (isWindow(elem)) {
5992                  return funcName.indexOf("outer") === 0 ? elem["inner" + name2] : elem.document.documentElement["client" + name2];
5993                }
5994                if (elem.nodeType === 9) {
5995                  doc = elem.documentElement;
5996                  return Math.max(
5997                    elem.body["scroll" + name2],
5998                    doc["scroll" + name2],
5999                    elem.body["offset" + name2],
6000                    doc["offset" + name2],
6001                    doc["client" + name2]
6002                  );
6003                }
6004                return value3 === void 0 ? jQuery3.css(elem, type3, extra) : jQuery3.style(elem, type3, value3, extra);
6005              }, type2, chainable ? margin : void 0, chainable);
6006            };
6007          });
6008        });
6009        jQuery3.each([
6010          "ajaxStart",
6011          "ajaxStop",
6012          "ajaxComplete",
6013          "ajaxError",
6014          "ajaxSuccess",
6015          "ajaxSend"
6016        ], function(_i, type2) {
6017          jQuery3.fn[type2] = function(fn) {
6018            return this.on(type2, fn);
6019          };
6020        });
6021        jQuery3.fn.extend({
6022          bind: function(types, data, fn) {
6023            return this.on(types, null, data, fn);
6024          },
6025          unbind: function(types, fn) {
6026            return this.off(types, null, fn);
6027          },
6028          delegate: function(selector, types, data, fn) {
6029            return this.on(types, selector, data, fn);
6030          },
6031          undelegate: function(selector, types, fn) {
6032            return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn);
6033          },
6034          hover: function(fnOver, fnOut) {
6035            return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
6036          }
6037        });
6038        jQuery3.each(
6039          "blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),
6040          function(_i, name2) {
6041            jQuery3.fn[name2] = function(data, fn) {
6042              return arguments.length > 0 ? this.on(name2, null, data, fn) : this.trigger(name2);
6043            };
6044          }
6045        );
6046        var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g;
6047        jQuery3.proxy = function(fn, context) {
6048          var tmp, args, proxy;
6049          if (typeof context === "string") {
6050            tmp = fn[context];
6051            context = fn;
6052            fn = tmp;
6053          }
6054          if (!isFunction(fn)) {
6055            return void 0;
6056          }
6057          args = slice.call(arguments, 2);
6058          proxy = function() {
6059            return fn.apply(context || this, args.concat(slice.call(arguments)));
6060          };
6061          proxy.guid = fn.guid = fn.guid || jQuery3.guid++;
6062          return proxy;
6063        };
6064        jQuery3.holdReady = function(hold) {
6065          if (hold) {
6066            jQuery3.readyWait++;
6067          } else {
6068            jQuery3.ready(true);
6069          }
6070        };
6071        jQuery3.isArray = Array.isArray;
6072        jQuery3.parseJSON = JSON.parse;
6073        jQuery3.nodeName = nodeName;
6074        jQuery3.isFunction = isFunction;
6075        jQuery3.isWindow = isWindow;
6076        jQuery3.camelCase = camelCase;
6077        jQuery3.type = toType;
6078        jQuery3.now = Date.now;
6079        jQuery3.isNumeric = function(obj) {
6080          var type2 = jQuery3.type(obj);
6081          return (type2 === "number" || type2 === "string") && !isNaN(obj - parseFloat(obj));
6082        };
6083        jQuery3.trim = function(text) {
6084          return text == null ? "" : (text + "").replace(rtrim, "$1");
6085        };
6086        if (typeof define === "function" && define.amd) {
6087          define("jquery", [], function() {
6088            return jQuery3;
6089          });
6090        }
6091        var _jQuery = window2.jQuery, _$ = window2.$;
6092        jQuery3.noConflict = function(deep) {
6093          if (window2.$ === jQuery3) {
6094            window2.$ = _$;
6095          }
6096          if (deep && window2.jQuery === jQuery3) {
6097            window2.jQuery = _jQuery;
6098          }
6099          return jQuery3;
6100        };
6101        if (typeof noGlobal === "undefined") {
6102          window2.jQuery = window2.$ = jQuery3;
6103        }
6104        return jQuery3;
6105      });
6106    }
6107  });
6108
6109  
vendor: 6,522 bytes, lines 6109-6255
6109// node_modules/bootstrap/js/dist/util.js
6110  var require_util = __commonJS({
6111    "node_modules/bootstrap/js/dist/util.js"(exports, module) {
6112      (function(global2, factory) {
6113        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery()) : typeof define === "function" && define.amd ? define(["jquery"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Util = factory(global2.jQuery));
6114      })(exports, function($2) {
6115        "use strict";
6116        function _interopDefaultLegacy(e) {
6117          return e && typeof e === "object" && "default" in e ? e : { "default": e };
6118        }
6119        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
6120        var TRANSITION_END = "transitionend";
6121        var MAX_UID = 1e6;
6122        var MILLISECONDS_MULTIPLIER = 1e3;
6123        function toType(obj) {
6124          if (obj === null || typeof obj === "undefined") {
6125            return "" + obj;
6126          }
6127          return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
6128        }
6129        function getSpecialTransitionEndEvent() {
6130          return {
6131            bindType: TRANSITION_END,
6132            delegateType: TRANSITION_END,
6133            handle: function handle(event) {
6134              if ($__default["default"](event.target).is(this)) {
6135                return event.handleObj.handler.apply(this, arguments);
6136              }
6137              return void 0;
6138            }
6139          };
6140        }
6141        function transitionEndEmulator(duration) {
6142          var _this = this;
6143          var called = false;
6144          $__default["default"](this).one(Util2.TRANSITION_END, function() {
6145            called = true;
6146          });
6147          setTimeout(function() {
6148            if (!called) {
6149              Util2.triggerTransitionEnd(_this);
6150            }
6151          }, duration);
6152          return this;
6153        }
6154        function setTransitionEndSupport() {
6155          $__default["default"].fn.emulateTransitionEnd = transitionEndEmulator;
6156          $__default["default"].event.special[Util2.TRANSITION_END] = getSpecialTransitionEndEvent();
6157        }
6158        var Util2 = {
6159          TRANSITION_END: "bsTransitionEnd",
6160          getUID: function getUID(prefix) {
6161            do {
6162              prefix += ~~(Math.random() * MAX_UID);
6163            } while (document.getElementById(prefix));
6164            return prefix;
6165          },
6166          getSelectorFromElement: function getSelectorFromElement(element) {
6167            var selector = element.getAttribute("data-target");
6168            if (!selector || selector === "#") {
6169              var hrefAttr = element.getAttribute("href");
6170              selector = hrefAttr && hrefAttr !== "#" ? hrefAttr.trim() : "";
6171            }
6172            try {
6173              return document.querySelector(selector) ? selector : null;
6174            } catch (_) {
6175              return null;
6176            }
6177          },
6178          getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
6179            if (!element) {
6180              return 0;
6181            }
6182            var transitionDuration = $__default["default"](element).css("transition-duration");
6183            var transitionDelay = $__default["default"](element).css("transition-delay");
6184            var floatTransitionDuration = parseFloat(transitionDuration);
6185            var floatTransitionDelay = parseFloat(transitionDelay);
6186            if (!floatTransitionDuration && !floatTransitionDelay) {
6187              return 0;
6188            }
6189            transitionDuration = transitionDuration.split(",")[0];
6190            transitionDelay = transitionDelay.split(",")[0];
6191            return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;
6192          },
6193          reflow: function reflow(element) {
6194            return element.offsetHeight;
6195          },
6196          triggerTransitionEnd: function triggerTransitionEnd(element) {
6197            $__default["default"](element).trigger(TRANSITION_END);
6198          },
6199          supportsTransitionEnd: function supportsTransitionEnd() {
6200            return Boolean(TRANSITION_END);
6201          },
6202          isElement: function isElement(obj) {
6203            return (obj[0] || obj).nodeType;
6204          },
6205          typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
6206            for (var property in configTypes) {
6207              if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
6208                var expectedTypes = configTypes[property];
6209                var value2 = config[property];
6210                var valueType = value2 && Util2.isElement(value2) ? "element" : toType(value2);
6211                if (!new RegExp(expectedTypes).test(valueType)) {
6212                  throw new Error(componentName.toUpperCase() + ": " + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
6213                }
6214              }
6215            }
6216          },
6217          findShadowRoot: function findShadowRoot(element) {
6218            if (!document.documentElement.attachShadow) {
6219              return null;
6220            }
6221            if (typeof element.getRootNode === "function") {
6222              var root = element.getRootNode();
6223              return root instanceof ShadowRoot ? root : null;
6224            }
6225            if (element instanceof ShadowRoot) {
6226              return element;
6227            }
6228            if (!element.parentNode) {
6229              return null;
6230            }
6231            return Util2.findShadowRoot(element.parentNode);
6232          },
6233          jQueryDetection: function jQueryDetection() {
6234            if (typeof $__default["default"] === "undefined") {
6235              throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");
6236            }
6237            var version = $__default["default"].fn.jquery.split(" ")[0].split(".");
6238            var minMajor = 1;
6239            var ltMajor = 2;
6240            var minMinor = 9;
6241            var minPatch = 1;
6242            var maxMajor = 4;
6243            if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {
6244              throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0");
6245            }
6246          }
6247        };
6248        Util2.jQueryDetection();
6249        setTransitionEndSupport();
6250        return Util2;
6251      });
6252    }
6253  });
6254
6255  
vendor: 5,993 bytes, lines 6255-6392
6255// node_modules/bootstrap/js/dist/alert.js
6256  var require_alert = __commonJS({
6257    "node_modules/bootstrap/js/dist/alert.js"(exports, module) {
6258      (function(global2, factory) {
6259        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Alert = factory(global2.jQuery, global2.Util));
6260      })(exports, function($2, Util2) {
6261        "use strict";
6262        function _interopDefaultLegacy(e) {
6263          return e && typeof e === "object" && "default" in e ? e : { "default": e };
6264        }
6265        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
6266        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
6267        function _defineProperties(target, props) {
6268          for (var i2 = 0; i2 < props.length; i2++) {
6269            var descriptor = props[i2];
6270            descriptor.enumerable = descriptor.enumerable || false;
6271            descriptor.configurable = true;
6272            if ("value" in descriptor)
6273              descriptor.writable = true;
6274            Object.defineProperty(target, descriptor.key, descriptor);
6275          }
6276        }
6277        function _createClass(Constructor, protoProps, staticProps) {
6278          if (protoProps)
6279            _defineProperties(Constructor.prototype, protoProps);
6280          if (staticProps)
6281            _defineProperties(Constructor, staticProps);
6282          Object.defineProperty(Constructor, "prototype", {
6283            writable: false
6284          });
6285          return Constructor;
6286        }
6287        var NAME = "alert";
6288        var VERSION = "4.6.2";
6289        var DATA_KEY = "bs.alert";
6290        var EVENT_KEY = "." + DATA_KEY;
6291        var DATA_API_KEY = ".data-api";
6292        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
6293        var CLASS_NAME_ALERT = "alert";
6294        var CLASS_NAME_FADE = "fade";
6295        var CLASS_NAME_SHOW = "show";
6296        var EVENT_CLOSE = "close" + EVENT_KEY;
6297        var EVENT_CLOSED = "closed" + EVENT_KEY;
6298        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
6299        var SELECTOR_DISMISS = '[data-dismiss="alert"]';
6300        var Alert2 = /* @__PURE__ */ function() {
6301          function Alert3(element) {
6302            this._element = element;
6303          }
6304          var _proto = Alert3.prototype;
6305          _proto.close = function close(element) {
6306            var rootElement = this._element;
6307            if (element) {
6308              rootElement = this._getRootElement(element);
6309            }
6310            var customEvent = this._triggerCloseEvent(rootElement);
6311            if (customEvent.isDefaultPrevented()) {
6312              return;
6313            }
6314            this._removeElement(rootElement);
6315          };
6316          _proto.dispose = function dispose() {
6317            $__default["default"].removeData(this._element, DATA_KEY);
6318            this._element = null;
6319          };
6320          _proto._getRootElement = function _getRootElement(element) {
6321            var selector = Util__default["default"].getSelectorFromElement(element);
6322            var parent = false;
6323            if (selector) {
6324              parent = document.querySelector(selector);
6325            }
6326            if (!parent) {
6327              parent = $__default["default"](element).closest("." + CLASS_NAME_ALERT)[0];
6328            }
6329            return parent;
6330          };
6331          _proto._triggerCloseEvent = function _triggerCloseEvent(element) {
6332            var closeEvent = $__default["default"].Event(EVENT_CLOSE);
6333            $__default["default"](element).trigger(closeEvent);
6334            return closeEvent;
6335          };
6336          _proto._removeElement = function _removeElement(element) {
6337            var _this = this;
6338            $__default["default"](element).removeClass(CLASS_NAME_SHOW);
6339            if (!$__default["default"](element).hasClass(CLASS_NAME_FADE)) {
6340              this._destroyElement(element);
6341              return;
6342            }
6343            var transitionDuration = Util__default["default"].getTransitionDurationFromElement(element);
6344            $__default["default"](element).one(Util__default["default"].TRANSITION_END, function(event) {
6345              return _this._destroyElement(element, event);
6346            }).emulateTransitionEnd(transitionDuration);
6347          };
6348          _proto._destroyElement = function _destroyElement(element) {
6349            $__default["default"](element).detach().trigger(EVENT_CLOSED).remove();
6350          };
6351          Alert3._jQueryInterface = function _jQueryInterface(config) {
6352            return this.each(function() {
6353              var $element = $__default["default"](this);
6354              var data = $element.data(DATA_KEY);
6355              if (!data) {
6356                data = new Alert3(this);
6357                $element.data(DATA_KEY, data);
6358              }
6359              if (config === "close") {
6360                data[config](this);
6361              }
6362            });
6363          };
6364          Alert3._handleDismiss = function _handleDismiss(alertInstance) {
6365            return function(event) {
6366              if (event) {
6367                event.preventDefault();
6368              }
6369              alertInstance.close(this);
6370            };
6371          };
6372          _createClass(Alert3, null, [{
6373            key: "VERSION",
6374            get: function get() {
6375              return VERSION;
6376            }
6377          }]);
6378          return Alert3;
6379        }();
6380        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert2._handleDismiss(new Alert2()));
6381        $__default["default"].fn[NAME] = Alert2._jQueryInterface;
6382        $__default["default"].fn[NAME].Constructor = Alert2;
6383        $__default["default"].fn[NAME].noConflict = function() {
6384          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
6385          return Alert2._jQueryInterface;
6386        };
6387        return Alert2;
6388      });
6389    }
6390  });
6391
6392  
vendor: 8,187 bytes, lines 6392-6566
6392// node_modules/bootstrap/js/dist/button.js
6393  var require_button = __commonJS({
6394    "node_modules/bootstrap/js/dist/button.js"(exports, module) {
6395      (function(global2, factory) {
6396        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery()) : typeof define === "function" && define.amd ? define(["jquery"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Button = factory(global2.jQuery));
6397      })(exports, function($2) {
6398        "use strict";
6399        function _interopDefaultLegacy(e) {
6400          return e && typeof e === "object" && "default" in e ? e : { "default": e };
6401        }
6402        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
6403        function _defineProperties(target, props) {
6404          for (var i2 = 0; i2 < props.length; i2++) {
6405            var descriptor = props[i2];
6406            descriptor.enumerable = descriptor.enumerable || false;
6407            descriptor.configurable = true;
6408            if ("value" in descriptor)
6409              descriptor.writable = true;
6410            Object.defineProperty(target, descriptor.key, descriptor);
6411          }
6412        }
6413        function _createClass(Constructor, protoProps, staticProps) {
6414          if (protoProps)
6415            _defineProperties(Constructor.prototype, protoProps);
6416          if (staticProps)
6417            _defineProperties(Constructor, staticProps);
6418          Object.defineProperty(Constructor, "prototype", {
6419            writable: false
6420          });
6421          return Constructor;
6422        }
6423        var NAME = "button";
6424        var VERSION = "4.6.2";
6425        var DATA_KEY = "bs.button";
6426        var EVENT_KEY = "." + DATA_KEY;
6427        var DATA_API_KEY = ".data-api";
6428        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
6429        var CLASS_NAME_ACTIVE = "active";
6430        var CLASS_NAME_BUTTON = "btn";
6431        var CLASS_NAME_FOCUS = "focus";
6432        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
6433        var EVENT_FOCUS_BLUR_DATA_API = "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY);
6434        var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
6435        var SELECTOR_DATA_TOGGLE_CARROT = '[data-toggle^="button"]';
6436        var SELECTOR_DATA_TOGGLES = '[data-toggle="buttons"]';
6437        var SELECTOR_DATA_TOGGLE = '[data-toggle="button"]';
6438        var SELECTOR_DATA_TOGGLES_BUTTONS = '[data-toggle="buttons"] .btn';
6439        var SELECTOR_INPUT = 'input:not([type="hidden"])';
6440        var SELECTOR_ACTIVE = ".active";
6441        var SELECTOR_BUTTON = ".btn";
6442        var Button2 = /* @__PURE__ */ function() {
6443          function Button3(element) {
6444            this._element = element;
6445            this.shouldAvoidTriggerChange = false;
6446          }
6447          var _proto = Button3.prototype;
6448          _proto.toggle = function toggle() {
6449            var triggerChangeEvent = true;
6450            var addAriaPressed = true;
6451            var rootElement = $__default["default"](this._element).closest(SELECTOR_DATA_TOGGLES)[0];
6452            if (rootElement) {
6453              var input = this._element.querySelector(SELECTOR_INPUT);
6454              if (input) {
6455                if (input.type === "radio") {
6456                  if (input.checked && this._element.classList.contains(CLASS_NAME_ACTIVE)) {
6457                    triggerChangeEvent = false;
6458                  } else {
6459                    var activeElement = rootElement.querySelector(SELECTOR_ACTIVE);
6460                    if (activeElement) {
6461                      $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
6462                    }
6463                  }
6464                }
6465                if (triggerChangeEvent) {
6466                  if (input.type === "checkbox" || input.type === "radio") {
6467                    input.checked = !this._element.classList.contains(CLASS_NAME_ACTIVE);
6468                  }
6469                  if (!this.shouldAvoidTriggerChange) {
6470                    $__default["default"](input).trigger("change");
6471                  }
6472                }
6473                input.focus();
6474                addAriaPressed = false;
6475              }
6476            }
6477            if (!(this._element.hasAttribute("disabled") || this._element.classList.contains("disabled"))) {
6478              if (addAriaPressed) {
6479                this._element.setAttribute("aria-pressed", !this._element.classList.contains(CLASS_NAME_ACTIVE));
6480              }
6481              if (triggerChangeEvent) {
6482                $__default["default"](this._element).toggleClass(CLASS_NAME_ACTIVE);
6483              }
6484            }
6485          };
6486          _proto.dispose = function dispose() {
6487            $__default["default"].removeData(this._element, DATA_KEY);
6488            this._element = null;
6489          };
6490          Button3._jQueryInterface = function _jQueryInterface(config, avoidTriggerChange) {
6491            return this.each(function() {
6492              var $element = $__default["default"](this);
6493              var data = $element.data(DATA_KEY);
6494              if (!data) {
6495                data = new Button3(this);
6496                $element.data(DATA_KEY, data);
6497              }
6498              data.shouldAvoidTriggerChange = avoidTriggerChange;
6499              if (config === "toggle") {
6500                data[config]();
6501              }
6502            });
6503          };
6504          _createClass(Button3, null, [{
6505            key: "VERSION",
6506            get: function get() {
6507              return VERSION;
6508            }
6509          }]);
6510          return Button3;
6511        }();
6512        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function(event) {
6513          var button = event.target;
6514          var initialButton = button;
6515          if (!$__default["default"](button).hasClass(CLASS_NAME_BUTTON)) {
6516            button = $__default["default"](button).closest(SELECTOR_BUTTON)[0];
6517          }
6518          if (!button || button.hasAttribute("disabled") || button.classList.contains("disabled")) {
6519            event.preventDefault();
6520          } else {
6521            var inputBtn = button.querySelector(SELECTOR_INPUT);
6522            if (inputBtn && (inputBtn.hasAttribute("disabled") || inputBtn.classList.contains("disabled"))) {
6523              event.preventDefault();
6524              return;
6525            }
6526            if (initialButton.tagName === "INPUT" || button.tagName !== "LABEL") {
6527              Button2._jQueryInterface.call($__default["default"](button), "toggle", initialButton.tagName === "INPUT");
6528            }
6529          }
6530        }).on(EVENT_FOCUS_BLUR_DATA_API, SELECTOR_DATA_TOGGLE_CARROT, function(event) {
6531          var button = $__default["default"](event.target).closest(SELECTOR_BUTTON)[0];
6532          $__default["default"](button).toggleClass(CLASS_NAME_FOCUS, /^focus(in)?$/.test(event.type));
6533        });
6534        $__default["default"](window).on(EVENT_LOAD_DATA_API, function() {
6535          var buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLES_BUTTONS));
6536          for (var i2 = 0, len = buttons.length; i2 < len; i2++) {
6537            var button = buttons[i2];
6538            var input = button.querySelector(SELECTOR_INPUT);
6539            if (input.checked || input.hasAttribute("checked")) {
6540              button.classList.add(CLASS_NAME_ACTIVE);
6541            } else {
6542              button.classList.remove(CLASS_NAME_ACTIVE);
6543            }
6544          }
6545          buttons = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
6546          for (var _i = 0, _len = buttons.length; _i < _len; _i++) {
6547            var _button = buttons[_i];
6548            if (_button.getAttribute("aria-pressed") === "true") {
6549              _button.classList.add(CLASS_NAME_ACTIVE);
6550            } else {
6551              _button.classList.remove(CLASS_NAME_ACTIVE);
6552            }
6553          }
6554        });
6555        $__default["default"].fn[NAME] = Button2._jQueryInterface;
6556        $__default["default"].fn[NAME].Constructor = Button2;
6557        $__default["default"].fn[NAME].noConflict = function() {
6558          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
6559          return Button2._jQueryInterface;
6560        };
6561        return Button2;
6562      });
6563    }
6564  });
6565
6566  
vendor: 22,548 bytes, lines 6566-7066
6566// node_modules/bootstrap/js/dist/carousel.js
6567  var require_carousel = __commonJS({
6568    "node_modules/bootstrap/js/dist/carousel.js"(exports, module) {
6569      (function(global2, factory) {
6570        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Carousel = factory(global2.jQuery, global2.Util));
6571      })(exports, function($2, Util2) {
6572        "use strict";
6573        function _interopDefaultLegacy(e) {
6574          return e && typeof e === "object" && "default" in e ? e : { "default": e };
6575        }
6576        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
6577        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
6578        function _defineProperties(target, props) {
6579          for (var i2 = 0; i2 < props.length; i2++) {
6580            var descriptor = props[i2];
6581            descriptor.enumerable = descriptor.enumerable || false;
6582            descriptor.configurable = true;
6583            if ("value" in descriptor)
6584              descriptor.writable = true;
6585            Object.defineProperty(target, descriptor.key, descriptor);
6586          }
6587        }
6588        function _createClass(Constructor, protoProps, staticProps) {
6589          if (protoProps)
6590            _defineProperties(Constructor.prototype, protoProps);
6591          if (staticProps)
6592            _defineProperties(Constructor, staticProps);
6593          Object.defineProperty(Constructor, "prototype", {
6594            writable: false
6595          });
6596          return Constructor;
6597        }
6598        function _extends() {
6599          _extends = Object.assign ? Object.assign.bind() : function(target) {
6600            for (var i2 = 1; i2 < arguments.length; i2++) {
6601              var source = arguments[i2];
6602              for (var key in source) {
6603                if (Object.prototype.hasOwnProperty.call(source, key)) {
6604                  target[key] = source[key];
6605                }
6606              }
6607            }
6608            return target;
6609          };
6610          return _extends.apply(this, arguments);
6611        }
6612        var NAME = "carousel";
6613        var VERSION = "4.6.2";
6614        var DATA_KEY = "bs.carousel";
6615        var EVENT_KEY = "." + DATA_KEY;
6616        var DATA_API_KEY = ".data-api";
6617        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
6618        var ARROW_LEFT_KEYCODE = 37;
6619        var ARROW_RIGHT_KEYCODE = 39;
6620        var TOUCHEVENT_COMPAT_WAIT = 500;
6621        var SWIPE_THRESHOLD = 40;
6622        var CLASS_NAME_CAROUSEL = "carousel";
6623        var CLASS_NAME_ACTIVE = "active";
6624        var CLASS_NAME_SLIDE = "slide";
6625        var CLASS_NAME_RIGHT = "carousel-item-right";
6626        var CLASS_NAME_LEFT = "carousel-item-left";
6627        var CLASS_NAME_NEXT = "carousel-item-next";
6628        var CLASS_NAME_PREV = "carousel-item-prev";
6629        var CLASS_NAME_POINTER_EVENT = "pointer-event";
6630        var DIRECTION_NEXT = "next";
6631        var DIRECTION_PREV = "prev";
6632        var DIRECTION_LEFT = "left";
6633        var DIRECTION_RIGHT = "right";
6634        var EVENT_SLIDE = "slide" + EVENT_KEY;
6635        var EVENT_SLID = "slid" + EVENT_KEY;
6636        var EVENT_KEYDOWN = "keydown" + EVENT_KEY;
6637        var EVENT_MOUSEENTER = "mouseenter" + EVENT_KEY;
6638        var EVENT_MOUSELEAVE = "mouseleave" + EVENT_KEY;
6639        var EVENT_TOUCHSTART = "touchstart" + EVENT_KEY;
6640        var EVENT_TOUCHMOVE = "touchmove" + EVENT_KEY;
6641        var EVENT_TOUCHEND = "touchend" + EVENT_KEY;
6642        var EVENT_POINTERDOWN = "pointerdown" + EVENT_KEY;
6643        var EVENT_POINTERUP = "pointerup" + EVENT_KEY;
6644        var EVENT_DRAG_START = "dragstart" + EVENT_KEY;
6645        var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
6646        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
6647        var SELECTOR_ACTIVE = ".active";
6648        var SELECTOR_ACTIVE_ITEM = ".active.carousel-item";
6649        var SELECTOR_ITEM = ".carousel-item";
6650        var SELECTOR_ITEM_IMG = ".carousel-item img";
6651        var SELECTOR_NEXT_PREV = ".carousel-item-next, .carousel-item-prev";
6652        var SELECTOR_INDICATORS = ".carousel-indicators";
6653        var SELECTOR_DATA_SLIDE = "[data-slide], [data-slide-to]";
6654        var SELECTOR_DATA_RIDE = '[data-ride="carousel"]';
6655        var Default = {
6656          interval: 5e3,
6657          keyboard: true,
6658          slide: false,
6659          pause: "hover",
6660          wrap: true,
6661          touch: true
6662        };
6663        var DefaultType = {
6664          interval: "(number|boolean)",
6665          keyboard: "boolean",
6666          slide: "(boolean|string)",
6667          pause: "(string|boolean)",
6668          wrap: "boolean",
6669          touch: "boolean"
6670        };
6671        var PointerType = {
6672          TOUCH: "touch",
6673          PEN: "pen"
6674        };
6675        var Carousel2 = /* @__PURE__ */ function() {
6676          function Carousel3(element, config) {
6677            this._items = null;
6678            this._interval = null;
6679            this._activeElement = null;
6680            this._isPaused = false;
6681            this._isSliding = false;
6682            this.touchTimeout = null;
6683            this.touchStartX = 0;
6684            this.touchDeltaX = 0;
6685            this._config = this._getConfig(config);
6686            this._element = element;
6687            this._indicatorsElement = this._element.querySelector(SELECTOR_INDICATORS);
6688            this._touchSupported = "ontouchstart" in document.documentElement || navigator.maxTouchPoints > 0;
6689            this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);
6690            this._addEventListeners();
6691          }
6692          var _proto = Carousel3.prototype;
6693          _proto.next = function next() {
6694            if (!this._isSliding) {
6695              this._slide(DIRECTION_NEXT);
6696            }
6697          };
6698          _proto.nextWhenVisible = function nextWhenVisible() {
6699            var $element = $__default["default"](this._element);
6700            if (!document.hidden && $element.is(":visible") && $element.css("visibility") !== "hidden") {
6701              this.next();
6702            }
6703          };
6704          _proto.prev = function prev2() {
6705            if (!this._isSliding) {
6706              this._slide(DIRECTION_PREV);
6707            }
6708          };
6709          _proto.pause = function pause(event) {
6710            if (!event) {
6711              this._isPaused = true;
6712            }
6713            if (this._element.querySelector(SELECTOR_NEXT_PREV)) {
6714              Util__default["default"].triggerTransitionEnd(this._element);
6715              this.cycle(true);
6716            }
6717            clearInterval(this._interval);
6718            this._interval = null;
6719          };
6720          _proto.cycle = function cycle(event) {
6721            if (!event) {
6722              this._isPaused = false;
6723            }
6724            if (this._interval) {
6725              clearInterval(this._interval);
6726              this._interval = null;
6727            }
6728            if (this._config.interval && !this._isPaused) {
6729              this._updateInterval();
6730              this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
6731            }
6732          };
6733          _proto.to = function to(index) {
6734            var _this = this;
6735            this._activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
6736            var activeIndex = this._getItemIndex(this._activeElement);
6737            if (index > this._items.length - 1 || index < 0) {
6738              return;
6739            }
6740            if (this._isSliding) {
6741              $__default["default"](this._element).one(EVENT_SLID, function() {
6742                return _this.to(index);
6743              });
6744              return;
6745            }
6746            if (activeIndex === index) {
6747              this.pause();
6748              this.cycle();
6749              return;
6750            }
6751            var direction = index > activeIndex ? DIRECTION_NEXT : DIRECTION_PREV;
6752            this._slide(direction, this._items[index]);
6753          };
6754          _proto.dispose = function dispose() {
6755            $__default["default"](this._element).off(EVENT_KEY);
6756            $__default["default"].removeData(this._element, DATA_KEY);
6757            this._items = null;
6758            this._config = null;
6759            this._element = null;
6760            this._interval = null;
6761            this._isPaused = null;
6762            this._isSliding = null;
6763            this._activeElement = null;
6764            this._indicatorsElement = null;
6765          };
6766          _proto._getConfig = function _getConfig(config) {
6767            config = _extends({}, Default, config);
6768            Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
6769            return config;
6770          };
6771          _proto._handleSwipe = function _handleSwipe() {
6772            var absDeltax = Math.abs(this.touchDeltaX);
6773            if (absDeltax <= SWIPE_THRESHOLD) {
6774              return;
6775            }
6776            var direction = absDeltax / this.touchDeltaX;
6777            this.touchDeltaX = 0;
6778            if (direction > 0) {
6779              this.prev();
6780            }
6781            if (direction < 0) {
6782              this.next();
6783            }
6784          };
6785          _proto._addEventListeners = function _addEventListeners() {
6786            var _this2 = this;
6787            if (this._config.keyboard) {
6788              $__default["default"](this._element).on(EVENT_KEYDOWN, function(event) {
6789                return _this2._keydown(event);
6790              });
6791            }
6792            if (this._config.pause === "hover") {
6793              $__default["default"](this._element).on(EVENT_MOUSEENTER, function(event) {
6794                return _this2.pause(event);
6795              }).on(EVENT_MOUSELEAVE, function(event) {
6796                return _this2.cycle(event);
6797              });
6798            }
6799            if (this._config.touch) {
6800              this._addTouchEventListeners();
6801            }
6802          };
6803          _proto._addTouchEventListeners = function _addTouchEventListeners() {
6804            var _this3 = this;
6805            if (!this._touchSupported) {
6806              return;
6807            }
6808            var start = function start2(event) {
6809              if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
6810                _this3.touchStartX = event.originalEvent.clientX;
6811              } else if (!_this3._pointerEvent) {
6812                _this3.touchStartX = event.originalEvent.touches[0].clientX;
6813              }
6814            };
6815            var move = function move2(event) {
6816              _this3.touchDeltaX = event.originalEvent.touches && event.originalEvent.touches.length > 1 ? 0 : event.originalEvent.touches[0].clientX - _this3.touchStartX;
6817            };
6818            var end = function end2(event) {
6819              if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {
6820                _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;
6821              }
6822              _this3._handleSwipe();
6823              if (_this3._config.pause === "hover") {
6824                _this3.pause();
6825                if (_this3.touchTimeout) {
6826                  clearTimeout(_this3.touchTimeout);
6827                }
6828                _this3.touchTimeout = setTimeout(function(event2) {
6829                  return _this3.cycle(event2);
6830                }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);
6831              }
6832            };
6833            $__default["default"](this._element.querySelectorAll(SELECTOR_ITEM_IMG)).on(EVENT_DRAG_START, function(e) {
6834              return e.preventDefault();
6835            });
6836            if (this._pointerEvent) {
6837              $__default["default"](this._element).on(EVENT_POINTERDOWN, function(event) {
6838                return start(event);
6839              });
6840              $__default["default"](this._element).on(EVENT_POINTERUP, function(event) {
6841                return end(event);
6842              });
6843              this._element.classList.add(CLASS_NAME_POINTER_EVENT);
6844            } else {
6845              $__default["default"](this._element).on(EVENT_TOUCHSTART, function(event) {
6846                return start(event);
6847              });
6848              $__default["default"](this._element).on(EVENT_TOUCHMOVE, function(event) {
6849                return move(event);
6850              });
6851              $__default["default"](this._element).on(EVENT_TOUCHEND, function(event) {
6852                return end(event);
6853              });
6854            }
6855          };
6856          _proto._keydown = function _keydown(event) {
6857            if (/input|textarea/i.test(event.target.tagName)) {
6858              return;
6859            }
6860            switch (event.which) {
6861              case ARROW_LEFT_KEYCODE:
6862                event.preventDefault();
6863                this.prev();
6864                break;
6865              case ARROW_RIGHT_KEYCODE:
6866                event.preventDefault();
6867                this.next();
6868                break;
6869            }
6870          };
6871          _proto._getItemIndex = function _getItemIndex(element) {
6872            this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(SELECTOR_ITEM)) : [];
6873            return this._items.indexOf(element);
6874          };
6875          _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {
6876            var isNextDirection = direction === DIRECTION_NEXT;
6877            var isPrevDirection = direction === DIRECTION_PREV;
6878            var activeIndex = this._getItemIndex(activeElement);
6879            var lastItemIndex = this._items.length - 1;
6880            var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;
6881            if (isGoingToWrap && !this._config.wrap) {
6882              return activeElement;
6883            }
6884            var delta = direction === DIRECTION_PREV ? -1 : 1;
6885            var itemIndex = (activeIndex + delta) % this._items.length;
6886            return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];
6887          };
6888          _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {
6889            var targetIndex = this._getItemIndex(relatedTarget);
6890            var fromIndex = this._getItemIndex(this._element.querySelector(SELECTOR_ACTIVE_ITEM));
6891            var slideEvent = $__default["default"].Event(EVENT_SLIDE, {
6892              relatedTarget,
6893              direction: eventDirectionName,
6894              from: fromIndex,
6895              to: targetIndex
6896            });
6897            $__default["default"](this._element).trigger(slideEvent);
6898            return slideEvent;
6899          };
6900          _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
6901            if (this._indicatorsElement) {
6902              var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(SELECTOR_ACTIVE));
6903              $__default["default"](indicators).removeClass(CLASS_NAME_ACTIVE);
6904              var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
6905              if (nextIndicator) {
6906                $__default["default"](nextIndicator).addClass(CLASS_NAME_ACTIVE);
6907              }
6908            }
6909          };
6910          _proto._updateInterval = function _updateInterval() {
6911            var element = this._activeElement || this._element.querySelector(SELECTOR_ACTIVE_ITEM);
6912            if (!element) {
6913              return;
6914            }
6915            var elementInterval = parseInt(element.getAttribute("data-interval"), 10);
6916            if (elementInterval) {
6917              this._config.defaultInterval = this._config.defaultInterval || this._config.interval;
6918              this._config.interval = elementInterval;
6919            } else {
6920              this._config.interval = this._config.defaultInterval || this._config.interval;
6921            }
6922          };
6923          _proto._slide = function _slide(direction, element) {
6924            var _this4 = this;
6925            var activeElement = this._element.querySelector(SELECTOR_ACTIVE_ITEM);
6926            var activeElementIndex = this._getItemIndex(activeElement);
6927            var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);
6928            var nextElementIndex = this._getItemIndex(nextElement);
6929            var isCycling = Boolean(this._interval);
6930            var directionalClassName;
6931            var orderClassName;
6932            var eventDirectionName;
6933            if (direction === DIRECTION_NEXT) {
6934              directionalClassName = CLASS_NAME_LEFT;
6935              orderClassName = CLASS_NAME_NEXT;
6936              eventDirectionName = DIRECTION_LEFT;
6937            } else {
6938              directionalClassName = CLASS_NAME_RIGHT;
6939              orderClassName = CLASS_NAME_PREV;
6940              eventDirectionName = DIRECTION_RIGHT;
6941            }
6942            if (nextElement && $__default["default"](nextElement).hasClass(CLASS_NAME_ACTIVE)) {
6943              this._isSliding = false;
6944              return;
6945            }
6946            var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);
6947            if (slideEvent.isDefaultPrevented()) {
6948              return;
6949            }
6950            if (!activeElement || !nextElement) {
6951              return;
6952            }
6953            this._isSliding = true;
6954            if (isCycling) {
6955              this.pause();
6956            }
6957            this._setActiveIndicatorElement(nextElement);
6958            this._activeElement = nextElement;
6959            var slidEvent = $__default["default"].Event(EVENT_SLID, {
6960              relatedTarget: nextElement,
6961              direction: eventDirectionName,
6962              from: activeElementIndex,
6963              to: nextElementIndex
6964            });
6965            if ($__default["default"](this._element).hasClass(CLASS_NAME_SLIDE)) {
6966              $__default["default"](nextElement).addClass(orderClassName);
6967              Util__default["default"].reflow(nextElement);
6968              $__default["default"](activeElement).addClass(directionalClassName);
6969              $__default["default"](nextElement).addClass(directionalClassName);
6970              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(activeElement);
6971              $__default["default"](activeElement).one(Util__default["default"].TRANSITION_END, function() {
6972                $__default["default"](nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(CLASS_NAME_ACTIVE);
6973                $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE + " " + orderClassName + " " + directionalClassName);
6974                _this4._isSliding = false;
6975                setTimeout(function() {
6976                  return $__default["default"](_this4._element).trigger(slidEvent);
6977                }, 0);
6978              }).emulateTransitionEnd(transitionDuration);
6979            } else {
6980              $__default["default"](activeElement).removeClass(CLASS_NAME_ACTIVE);
6981              $__default["default"](nextElement).addClass(CLASS_NAME_ACTIVE);
6982              this._isSliding = false;
6983              $__default["default"](this._element).trigger(slidEvent);
6984            }
6985            if (isCycling) {
6986              this.cycle();
6987            }
6988          };
6989          Carousel3._jQueryInterface = function _jQueryInterface(config) {
6990            return this.each(function() {
6991              var data = $__default["default"](this).data(DATA_KEY);
6992              var _config = _extends({}, Default, $__default["default"](this).data());
6993              if (typeof config === "object") {
6994                _config = _extends({}, _config, config);
6995              }
6996              var action = typeof config === "string" ? config : _config.slide;
6997              if (!data) {
6998                data = new Carousel3(this, _config);
6999                $__default["default"](this).data(DATA_KEY, data);
7000              }
7001              if (typeof config === "number") {
7002                data.to(config);
7003              } else if (typeof action === "string") {
7004                if (typeof data[action] === "undefined") {
7005                  throw new TypeError('No method named "' + action + '"');
7006                }
7007                data[action]();
7008              } else if (_config.interval && _config.ride) {
7009                data.pause();
7010                data.cycle();
7011              }
7012            });
7013          };
7014          Carousel3._dataApiClickHandler = function _dataApiClickHandler(event) {
7015            var selector = Util__default["default"].getSelectorFromElement(this);
7016            if (!selector) {
7017              return;
7018            }
7019            var target = $__default["default"](selector)[0];
7020            if (!target || !$__default["default"](target).hasClass(CLASS_NAME_CAROUSEL)) {
7021              return;
7022            }
7023            var config = _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
7024            var slideIndex = this.getAttribute("data-slide-to");
7025            if (slideIndex) {
7026              config.interval = false;
7027            }
7028            Carousel3._jQueryInterface.call($__default["default"](target), config);
7029            if (slideIndex) {
7030              $__default["default"](target).data(DATA_KEY).to(slideIndex);
7031            }
7032            event.preventDefault();
7033          };
7034          _createClass(Carousel3, null, [{
7035            key: "VERSION",
7036            get: function get() {
7037              return VERSION;
7038            }
7039          }, {
7040            key: "Default",
7041            get: function get() {
7042              return Default;
7043            }
7044          }]);
7045          return Carousel3;
7046        }();
7047        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel2._dataApiClickHandler);
7048        $__default["default"](window).on(EVENT_LOAD_DATA_API, function() {
7049          var carousels = [].slice.call(document.querySelectorAll(SELECTOR_DATA_RIDE));
7050          for (var i2 = 0, len = carousels.length; i2 < len; i2++) {
7051            var $carousel = $__default["default"](carousels[i2]);
7052            Carousel2._jQueryInterface.call($carousel, $carousel.data());
7053          }
7054        });
7055        $__default["default"].fn[NAME] = Carousel2._jQueryInterface;
7056        $__default["default"].fn[NAME].Constructor = Carousel2;
7057        $__default["default"].fn[NAME].noConflict = function() {
7058          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
7059          return Carousel2._jQueryInterface;
7060        };
7061        return Carousel2;
7062      });
7063    }
7064  });
7065
7066  
vendor: 14,695 bytes, lines 7066-7370
7066// node_modules/bootstrap/js/dist/collapse.js
7067  var require_collapse = __commonJS({
7068    "node_modules/bootstrap/js/dist/collapse.js"(exports, module) {
7069      (function(global2, factory) {
7070        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Collapse = factory(global2.jQuery, global2.Util));
7071      })(exports, function($2, Util2) {
7072        "use strict";
7073        function _interopDefaultLegacy(e) {
7074          return e && typeof e === "object" && "default" in e ? e : { "default": e };
7075        }
7076        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
7077        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
7078        function _defineProperties(target, props) {
7079          for (var i2 = 0; i2 < props.length; i2++) {
7080            var descriptor = props[i2];
7081            descriptor.enumerable = descriptor.enumerable || false;
7082            descriptor.configurable = true;
7083            if ("value" in descriptor)
7084              descriptor.writable = true;
7085            Object.defineProperty(target, descriptor.key, descriptor);
7086          }
7087        }
7088        function _createClass(Constructor, protoProps, staticProps) {
7089          if (protoProps)
7090            _defineProperties(Constructor.prototype, protoProps);
7091          if (staticProps)
7092            _defineProperties(Constructor, staticProps);
7093          Object.defineProperty(Constructor, "prototype", {
7094            writable: false
7095          });
7096          return Constructor;
7097        }
7098        function _extends() {
7099          _extends = Object.assign ? Object.assign.bind() : function(target) {
7100            for (var i2 = 1; i2 < arguments.length; i2++) {
7101              var source = arguments[i2];
7102              for (var key in source) {
7103                if (Object.prototype.hasOwnProperty.call(source, key)) {
7104                  target[key] = source[key];
7105                }
7106              }
7107            }
7108            return target;
7109          };
7110          return _extends.apply(this, arguments);
7111        }
7112        var NAME = "collapse";
7113        var VERSION = "4.6.2";
7114        var DATA_KEY = "bs.collapse";
7115        var EVENT_KEY = "." + DATA_KEY;
7116        var DATA_API_KEY = ".data-api";
7117        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
7118        var CLASS_NAME_SHOW = "show";
7119        var CLASS_NAME_COLLAPSE = "collapse";
7120        var CLASS_NAME_COLLAPSING = "collapsing";
7121        var CLASS_NAME_COLLAPSED = "collapsed";
7122        var DIMENSION_WIDTH = "width";
7123        var DIMENSION_HEIGHT = "height";
7124        var EVENT_SHOW = "show" + EVENT_KEY;
7125        var EVENT_SHOWN = "shown" + EVENT_KEY;
7126        var EVENT_HIDE = "hide" + EVENT_KEY;
7127        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
7128        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
7129        var SELECTOR_ACTIVES = ".show, .collapsing";
7130        var SELECTOR_DATA_TOGGLE = '[data-toggle="collapse"]';
7131        var Default = {
7132          toggle: true,
7133          parent: ""
7134        };
7135        var DefaultType = {
7136          toggle: "boolean",
7137          parent: "(string|element)"
7138        };
7139        var Collapse2 = /* @__PURE__ */ function() {
7140          function Collapse3(element, config) {
7141            this._isTransitioning = false;
7142            this._element = element;
7143            this._config = this._getConfig(config);
7144            this._triggerArray = [].slice.call(document.querySelectorAll('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
7145            var toggleList = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
7146            for (var i2 = 0, len = toggleList.length; i2 < len; i2++) {
7147              var elem = toggleList[i2];
7148              var selector = Util__default["default"].getSelectorFromElement(elem);
7149              var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function(foundElem) {
7150                return foundElem === element;
7151              });
7152              if (selector !== null && filterElement.length > 0) {
7153                this._selector = selector;
7154                this._triggerArray.push(elem);
7155              }
7156            }
7157            this._parent = this._config.parent ? this._getParent() : null;
7158            if (!this._config.parent) {
7159              this._addAriaAndCollapsedClass(this._element, this._triggerArray);
7160            }
7161            if (this._config.toggle) {
7162              this.toggle();
7163            }
7164          }
7165          var _proto = Collapse3.prototype;
7166          _proto.toggle = function toggle() {
7167            if ($__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
7168              this.hide();
7169            } else {
7170              this.show();
7171            }
7172          };
7173          _proto.show = function show() {
7174            var _this = this;
7175            if (this._isTransitioning || $__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
7176              return;
7177            }
7178            var actives;
7179            var activesData;
7180            if (this._parent) {
7181              actives = [].slice.call(this._parent.querySelectorAll(SELECTOR_ACTIVES)).filter(function(elem) {
7182                if (typeof _this._config.parent === "string") {
7183                  return elem.getAttribute("data-parent") === _this._config.parent;
7184                }
7185                return elem.classList.contains(CLASS_NAME_COLLAPSE);
7186              });
7187              if (actives.length === 0) {
7188                actives = null;
7189              }
7190            }
7191            if (actives) {
7192              activesData = $__default["default"](actives).not(this._selector).data(DATA_KEY);
7193              if (activesData && activesData._isTransitioning) {
7194                return;
7195              }
7196            }
7197            var startEvent = $__default["default"].Event(EVENT_SHOW);
7198            $__default["default"](this._element).trigger(startEvent);
7199            if (startEvent.isDefaultPrevented()) {
7200              return;
7201            }
7202            if (actives) {
7203              Collapse3._jQueryInterface.call($__default["default"](actives).not(this._selector), "hide");
7204              if (!activesData) {
7205                $__default["default"](actives).data(DATA_KEY, null);
7206              }
7207            }
7208            var dimension = this._getDimension();
7209            $__default["default"](this._element).removeClass(CLASS_NAME_COLLAPSE).addClass(CLASS_NAME_COLLAPSING);
7210            this._element.style[dimension] = 0;
7211            if (this._triggerArray.length) {
7212              $__default["default"](this._triggerArray).removeClass(CLASS_NAME_COLLAPSED).attr("aria-expanded", true);
7213            }
7214            this.setTransitioning(true);
7215            var complete = function complete2() {
7216              $__default["default"](_this._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
7217              _this._element.style[dimension] = "";
7218              _this.setTransitioning(false);
7219              $__default["default"](_this._element).trigger(EVENT_SHOWN);
7220            };
7221            var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
7222            var scrollSize = "scroll" + capitalizedDimension;
7223            var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
7224            $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
7225            this._element.style[dimension] = this._element[scrollSize] + "px";
7226          };
7227          _proto.hide = function hide() {
7228            var _this2 = this;
7229            if (this._isTransitioning || !$__default["default"](this._element).hasClass(CLASS_NAME_SHOW)) {
7230              return;
7231            }
7232            var startEvent = $__default["default"].Event(EVENT_HIDE);
7233            $__default["default"](this._element).trigger(startEvent);
7234            if (startEvent.isDefaultPrevented()) {
7235              return;
7236            }
7237            var dimension = this._getDimension();
7238            this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px";
7239            Util__default["default"].reflow(this._element);
7240            $__default["default"](this._element).addClass(CLASS_NAME_COLLAPSING).removeClass(CLASS_NAME_COLLAPSE + " " + CLASS_NAME_SHOW);
7241            var triggerArrayLength = this._triggerArray.length;
7242            if (triggerArrayLength > 0) {
7243              for (var i2 = 0; i2 < triggerArrayLength; i2++) {
7244                var trigger = this._triggerArray[i2];
7245                var selector = Util__default["default"].getSelectorFromElement(trigger);
7246                if (selector !== null) {
7247                  var $elem = $__default["default"]([].slice.call(document.querySelectorAll(selector)));
7248                  if (!$elem.hasClass(CLASS_NAME_SHOW)) {
7249                    $__default["default"](trigger).addClass(CLASS_NAME_COLLAPSED).attr("aria-expanded", false);
7250                  }
7251                }
7252              }
7253            }
7254            this.setTransitioning(true);
7255            var complete = function complete2() {
7256              _this2.setTransitioning(false);
7257              $__default["default"](_this2._element).removeClass(CLASS_NAME_COLLAPSING).addClass(CLASS_NAME_COLLAPSE).trigger(EVENT_HIDDEN);
7258            };
7259            this._element.style[dimension] = "";
7260            var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
7261            $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
7262          };
7263          _proto.setTransitioning = function setTransitioning(isTransitioning) {
7264            this._isTransitioning = isTransitioning;
7265          };
7266          _proto.dispose = function dispose() {
7267            $__default["default"].removeData(this._element, DATA_KEY);
7268            this._config = null;
7269            this._parent = null;
7270            this._element = null;
7271            this._triggerArray = null;
7272            this._isTransitioning = null;
7273          };
7274          _proto._getConfig = function _getConfig(config) {
7275            config = _extends({}, Default, config);
7276            config.toggle = Boolean(config.toggle);
7277            Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
7278            return config;
7279          };
7280          _proto._getDimension = function _getDimension() {
7281            var hasWidth = $__default["default"](this._element).hasClass(DIMENSION_WIDTH);
7282            return hasWidth ? DIMENSION_WIDTH : DIMENSION_HEIGHT;
7283          };
7284          _proto._getParent = function _getParent() {
7285            var _this3 = this;
7286            var parent;
7287            if (Util__default["default"].isElement(this._config.parent)) {
7288              parent = this._config.parent;
7289              if (typeof this._config.parent.jquery !== "undefined") {
7290                parent = this._config.parent[0];
7291              }
7292            } else {
7293              parent = document.querySelector(this._config.parent);
7294            }
7295            var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]';
7296            var children = [].slice.call(parent.querySelectorAll(selector));
7297            $__default["default"](children).each(function(i2, element) {
7298              _this3._addAriaAndCollapsedClass(Collapse3._getTargetFromElement(element), [element]);
7299            });
7300            return parent;
7301          };
7302          _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
7303            var isOpen = $__default["default"](element).hasClass(CLASS_NAME_SHOW);
7304            if (triggerArray.length) {
7305              $__default["default"](triggerArray).toggleClass(CLASS_NAME_COLLAPSED, !isOpen).attr("aria-expanded", isOpen);
7306            }
7307          };
7308          Collapse3._getTargetFromElement = function _getTargetFromElement(element) {
7309            var selector = Util__default["default"].getSelectorFromElement(element);
7310            return selector ? document.querySelector(selector) : null;
7311          };
7312          Collapse3._jQueryInterface = function _jQueryInterface(config) {
7313            return this.each(function() {
7314              var $element = $__default["default"](this);
7315              var data = $element.data(DATA_KEY);
7316              var _config = _extends({}, Default, $element.data(), typeof config === "object" && config ? config : {});
7317              if (!data && _config.toggle && typeof config === "string" && /show|hide/.test(config)) {
7318                _config.toggle = false;
7319              }
7320              if (!data) {
7321                data = new Collapse3(this, _config);
7322                $element.data(DATA_KEY, data);
7323              }
7324              if (typeof config === "string") {
7325                if (typeof data[config] === "undefined") {
7326                  throw new TypeError('No method named "' + config + '"');
7327                }
7328                data[config]();
7329              }
7330            });
7331          };
7332          _createClass(Collapse3, null, [{
7333            key: "VERSION",
7334            get: function get() {
7335              return VERSION;
7336            }
7337          }, {
7338            key: "Default",
7339            get: function get() {
7340              return Default;
7341            }
7342          }]);
7343          return Collapse3;
7344        }();
7345        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
7346          if (event.currentTarget.tagName === "A") {
7347            event.preventDefault();
7348          }
7349          var $trigger = $__default["default"](this);
7350          var selector = Util__default["default"].getSelectorFromElement(this);
7351          var selectors = [].slice.call(document.querySelectorAll(selector));
7352          $__default["default"](selectors).each(function() {
7353            var $target = $__default["default"](this);
7354            var data = $target.data(DATA_KEY);
7355            var config = data ? "toggle" : $trigger.data();
7356            Collapse2._jQueryInterface.call($target, config);
7357          });
7358        });
7359        $__default["default"].fn[NAME] = Collapse2._jQueryInterface;
7360        $__default["default"].fn[NAME].Constructor = Collapse2;
7361        $__default["default"].fn[NAME].noConflict = function() {
7362          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
7363          return Collapse2._jQueryInterface;
7364        };
7365        return Collapse2;
7366      });
7367    }
7368  });
7369
7370  
vendor: 55,884 bytes, lines 7370-8599
7370// node_modules/popper.js/dist/umd/popper.js
7371  var require_popper = __commonJS({
7372    "node_modules/popper.js/dist/umd/popper.js"(exports, module) {
7373      (function(global2, factory) {
7374        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.Popper = factory();
7375      })(exports, function() {
7376        "use strict";
7377        var isBrowser = typeof window !== "undefined" && typeof document !== "undefined" && typeof navigator !== "undefined";
7378        var timeoutDuration = function() {
7379          var longerTimeoutBrowsers = ["Edge", "Trident", "Firefox"];
7380          for (var i2 = 0; i2 < longerTimeoutBrowsers.length; i2 += 1) {
7381            if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i2]) >= 0) {
7382              return 1;
7383            }
7384          }
7385          return 0;
7386        }();
7387        function microtaskDebounce(fn) {
7388          var called = false;
7389          return function() {
7390            if (called) {
7391              return;
7392            }
7393            called = true;
7394            window.Promise.resolve().then(function() {
7395              called = false;
7396              fn();
7397            });
7398          };
7399        }
7400        function taskDebounce(fn) {
7401          var scheduled = false;
7402          return function() {
7403            if (!scheduled) {
7404              scheduled = true;
7405              setTimeout(function() {
7406                scheduled = false;
7407                fn();
7408              }, timeoutDuration);
7409            }
7410          };
7411        }
7412        var supportsMicroTasks = isBrowser && window.Promise;
7413        var debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;
7414        function isFunction(functionToCheck) {
7415          var getType = {};
7416          return functionToCheck && getType.toString.call(functionToCheck) === "[object Function]";
7417        }
7418        function getStyleComputedProperty(element, property) {
7419          if (element.nodeType !== 1) {
7420            return [];
7421          }
7422          var window2 = element.ownerDocument.defaultView;
7423          var css = window2.getComputedStyle(element, null);
7424          return property ? css[property] : css;
7425        }
7426        function getParentNode(element) {
7427          if (element.nodeName === "HTML") {
7428            return element;
7429          }
7430          return element.parentNode || element.host;
7431        }
7432        function getScrollParent(element) {
7433          if (!element) {
7434            return document.body;
7435          }
7436          switch (element.nodeName) {
7437            case "HTML":
7438            case "BODY":
7439              return element.ownerDocument.body;
7440            case "#document":
7441              return element.body;
7442          }
7443          var _getStyleComputedProp = getStyleComputedProperty(element), overflow = _getStyleComputedProp.overflow, overflowX = _getStyleComputedProp.overflowX, overflowY = _getStyleComputedProp.overflowY;
7444          if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {
7445            return element;
7446          }
7447          return getScrollParent(getParentNode(element));
7448        }
7449        function getReferenceNode(reference) {
7450          return reference && reference.referenceNode ? reference.referenceNode : reference;
7451        }
7452        var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);
7453        var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);
7454        function isIE(version) {
7455          if (version === 11) {
7456            return isIE11;
7457          }
7458          if (version === 10) {
7459            return isIE10;
7460          }
7461          return isIE11 || isIE10;
7462        }
7463        function getOffsetParent(element) {
7464          if (!element) {
7465            return document.documentElement;
7466          }
7467          var noOffsetParent = isIE(10) ? document.body : null;
7468          var offsetParent = element.offsetParent || null;
7469          while (offsetParent === noOffsetParent && element.nextElementSibling) {
7470            offsetParent = (element = element.nextElementSibling).offsetParent;
7471          }
7472          var nodeName = offsetParent && offsetParent.nodeName;
7473          if (!nodeName || nodeName === "BODY" || nodeName === "HTML") {
7474            return element ? element.ownerDocument.documentElement : document.documentElement;
7475          }
7476          if (["TH", "TD", "TABLE"].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, "position") === "static") {
7477            return getOffsetParent(offsetParent);
7478          }
7479          return offsetParent;
7480        }
7481        function isOffsetContainer(element) {
7482          var nodeName = element.nodeName;
7483          if (nodeName === "BODY") {
7484            return false;
7485          }
7486          return nodeName === "HTML" || getOffsetParent(element.firstElementChild) === element;
7487        }
7488        function getRoot(node) {
7489          if (node.parentNode !== null) {
7490            return getRoot(node.parentNode);
7491          }
7492          return node;
7493        }
7494        function findCommonOffsetParent(element1, element2) {
7495          if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {
7496            return document.documentElement;
7497          }
7498          var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;
7499          var start = order ? element1 : element2;
7500          var end = order ? element2 : element1;
7501          var range = document.createRange();
7502          range.setStart(start, 0);
7503          range.setEnd(end, 0);
7504          var commonAncestorContainer = range.commonAncestorContainer;
7505          if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {
7506            if (isOffsetContainer(commonAncestorContainer)) {
7507              return commonAncestorContainer;
7508            }
7509            return getOffsetParent(commonAncestorContainer);
7510          }
7511          var element1root = getRoot(element1);
7512          if (element1root.host) {
7513            return findCommonOffsetParent(element1root.host, element2);
7514          } else {
7515            return findCommonOffsetParent(element1, getRoot(element2).host);
7516          }
7517        }
7518        function getScroll(element) {
7519          var side = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : "top";
7520          var upperSide = side === "top" ? "scrollTop" : "scrollLeft";
7521          var nodeName = element.nodeName;
7522          if (nodeName === "BODY" || nodeName === "HTML") {
7523            var html = element.ownerDocument.documentElement;
7524            var scrollingElement = element.ownerDocument.scrollingElement || html;
7525            return scrollingElement[upperSide];
7526          }
7527          return element[upperSide];
7528        }
7529        function includeScroll(rect, element) {
7530          var subtract = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
7531          var scrollTop = getScroll(element, "top");
7532          var scrollLeft = getScroll(element, "left");
7533          var modifier = subtract ? -1 : 1;
7534          rect.top += scrollTop * modifier;
7535          rect.bottom += scrollTop * modifier;
7536          rect.left += scrollLeft * modifier;
7537          rect.right += scrollLeft * modifier;
7538          return rect;
7539        }
7540        function getBordersSize(styles, axis) {
7541          var sideA = axis === "x" ? "Left" : "Top";
7542          var sideB = sideA === "Left" ? "Right" : "Bottom";
7543          return parseFloat(styles["border" + sideA + "Width"]) + parseFloat(styles["border" + sideB + "Width"]);
7544        }
7545        function getSize(axis, body, html, computedStyle) {
7546          return Math.max(body["offset" + axis], body["scroll" + axis], html["client" + axis], html["offset" + axis], html["scroll" + axis], isIE(10) ? parseInt(html["offset" + axis]) + parseInt(computedStyle["margin" + (axis === "Height" ? "Top" : "Left")]) + parseInt(computedStyle["margin" + (axis === "Height" ? "Bottom" : "Right")]) : 0);
7547        }
7548        function getWindowSizes(document2) {
7549          var body = document2.body;
7550          var html = document2.documentElement;
7551          var computedStyle = isIE(10) && getComputedStyle(html);
7552          return {
7553            height: getSize("Height", body, html, computedStyle),
7554            width: getSize("Width", body, html, computedStyle)
7555          };
7556        }
7557        var classCallCheck = function(instance, Constructor) {
7558          if (!(instance instanceof Constructor)) {
7559            throw new TypeError("Cannot call a class as a function");
7560          }
7561        };
7562        var createClass = function() {
7563          function defineProperties(target, props) {
7564            for (var i2 = 0; i2 < props.length; i2++) {
7565              var descriptor = props[i2];
7566              descriptor.enumerable = descriptor.enumerable || false;
7567              descriptor.configurable = true;
7568              if ("value" in descriptor)
7569                descriptor.writable = true;
7570              Object.defineProperty(target, descriptor.key, descriptor);
7571            }
7572          }
7573          return function(Constructor, protoProps, staticProps) {
7574            if (protoProps)
7575              defineProperties(Constructor.prototype, protoProps);
7576            if (staticProps)
7577              defineProperties(Constructor, staticProps);
7578            return Constructor;
7579          };
7580        }();
7581        var defineProperty = function(obj, key, value2) {
7582          if (key in obj) {
7583            Object.defineProperty(obj, key, {
7584              value: value2,
7585              enumerable: true,
7586              configurable: true,
7587              writable: true
7588            });
7589          } else {
7590            obj[key] = value2;
7591          }
7592          return obj;
7593        };
7594        var _extends = Object.assign || function(target) {
7595          for (var i2 = 1; i2 < arguments.length; i2++) {
7596            var source = arguments[i2];
7597            for (var key in source) {
7598              if (Object.prototype.hasOwnProperty.call(source, key)) {
7599                target[key] = source[key];
7600              }
7601            }
7602          }
7603          return target;
7604        };
7605        function getClientRect(offsets) {
7606          return _extends({}, offsets, {
7607            right: offsets.left + offsets.width,
7608            bottom: offsets.top + offsets.height
7609          });
7610        }
7611        function getBoundingClientRect(element) {
7612          var rect = {};
7613          try {
7614            if (isIE(10)) {
7615              rect = element.getBoundingClientRect();
7616              var scrollTop = getScroll(element, "top");
7617              var scrollLeft = getScroll(element, "left");
7618              rect.top += scrollTop;
7619              rect.left += scrollLeft;
7620              rect.bottom += scrollTop;
7621              rect.right += scrollLeft;
7622            } else {
7623              rect = element.getBoundingClientRect();
7624            }
7625          } catch (e) {
7626          }
7627          var result = {
7628            left: rect.left,
7629            top: rect.top,
7630            width: rect.right - rect.left,
7631            height: rect.bottom - rect.top
7632          };
7633          var sizes = element.nodeName === "HTML" ? getWindowSizes(element.ownerDocument) : {};
7634          var width = sizes.width || element.clientWidth || result.width;
7635          var height = sizes.height || element.clientHeight || result.height;
7636          var horizScrollbar = element.offsetWidth - width;
7637          var vertScrollbar = element.offsetHeight - height;
7638          if (horizScrollbar || vertScrollbar) {
7639            var styles = getStyleComputedProperty(element);
7640            horizScrollbar -= getBordersSize(styles, "x");
7641            vertScrollbar -= getBordersSize(styles, "y");
7642            result.width -= horizScrollbar;
7643            result.height -= vertScrollbar;
7644          }
7645          return getClientRect(result);
7646        }
7647        function getOffsetRectRelativeToArbitraryNode(children, parent) {
7648          var fixedPosition = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
7649          var isIE102 = isIE(10);
7650          var isHTML = parent.nodeName === "HTML";
7651          var childrenRect = getBoundingClientRect(children);
7652          var parentRect = getBoundingClientRect(parent);
7653          var scrollParent = getScrollParent(children);
7654          var styles = getStyleComputedProperty(parent);
7655          var borderTopWidth = parseFloat(styles.borderTopWidth);
7656          var borderLeftWidth = parseFloat(styles.borderLeftWidth);
7657          if (fixedPosition && isHTML) {
7658            parentRect.top = Math.max(parentRect.top, 0);
7659            parentRect.left = Math.max(parentRect.left, 0);
7660          }
7661          var offsets = getClientRect({
7662            top: childrenRect.top - parentRect.top - borderTopWidth,
7663            left: childrenRect.left - parentRect.left - borderLeftWidth,
7664            width: childrenRect.width,
7665            height: childrenRect.height
7666          });
7667          offsets.marginTop = 0;
7668          offsets.marginLeft = 0;
7669          if (!isIE102 && isHTML) {
7670            var marginTop = parseFloat(styles.marginTop);
7671            var marginLeft = parseFloat(styles.marginLeft);
7672            offsets.top -= borderTopWidth - marginTop;
7673            offsets.bottom -= borderTopWidth - marginTop;
7674            offsets.left -= borderLeftWidth - marginLeft;
7675            offsets.right -= borderLeftWidth - marginLeft;
7676            offsets.marginTop = marginTop;
7677            offsets.marginLeft = marginLeft;
7678          }
7679          if (isIE102 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== "BODY") {
7680            offsets = includeScroll(offsets, parent);
7681          }
7682          return offsets;
7683        }
7684        function getViewportOffsetRectRelativeToArtbitraryNode(element) {
7685          var excludeScroll = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
7686          var html = element.ownerDocument.documentElement;
7687          var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);
7688          var width = Math.max(html.clientWidth, window.innerWidth || 0);
7689          var height = Math.max(html.clientHeight, window.innerHeight || 0);
7690          var scrollTop = !excludeScroll ? getScroll(html) : 0;
7691          var scrollLeft = !excludeScroll ? getScroll(html, "left") : 0;
7692          var offset2 = {
7693            top: scrollTop - relativeOffset.top + relativeOffset.marginTop,
7694            left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,
7695            width,
7696            height
7697          };
7698          return getClientRect(offset2);
7699        }
7700        function isFixed(element) {
7701          var nodeName = element.nodeName;
7702          if (nodeName === "BODY" || nodeName === "HTML") {
7703            return false;
7704          }
7705          if (getStyleComputedProperty(element, "position") === "fixed") {
7706            return true;
7707          }
7708          var parentNode = getParentNode(element);
7709          if (!parentNode) {
7710            return false;
7711          }
7712          return isFixed(parentNode);
7713        }
7714        function getFixedPositionOffsetParent(element) {
7715          if (!element || !element.parentElement || isIE()) {
7716            return document.documentElement;
7717          }
7718          var el = element.parentElement;
7719          while (el && getStyleComputedProperty(el, "transform") === "none") {
7720            el = el.parentElement;
7721          }
7722          return el || document.documentElement;
7723        }
7724        function getBoundaries(popper, reference, padding, boundariesElement) {
7725          var fixedPosition = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : false;
7726          var boundaries = { top: 0, left: 0 };
7727          var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
7728          if (boundariesElement === "viewport") {
7729            boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);
7730          } else {
7731            var boundariesNode = void 0;
7732            if (boundariesElement === "scrollParent") {
7733              boundariesNode = getScrollParent(getParentNode(reference));
7734              if (boundariesNode.nodeName === "BODY") {
7735                boundariesNode = popper.ownerDocument.documentElement;
7736              }
7737            } else if (boundariesElement === "window") {
7738              boundariesNode = popper.ownerDocument.documentElement;
7739            } else {
7740              boundariesNode = boundariesElement;
7741            }
7742            var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);
7743            if (boundariesNode.nodeName === "HTML" && !isFixed(offsetParent)) {
7744              var _getWindowSizes = getWindowSizes(popper.ownerDocument), height = _getWindowSizes.height, width = _getWindowSizes.width;
7745              boundaries.top += offsets.top - offsets.marginTop;
7746              boundaries.bottom = height + offsets.top;
7747              boundaries.left += offsets.left - offsets.marginLeft;
7748              boundaries.right = width + offsets.left;
7749            } else {
7750              boundaries = offsets;
7751            }
7752          }
7753          padding = padding || 0;
7754          var isPaddingNumber = typeof padding === "number";
7755          boundaries.left += isPaddingNumber ? padding : padding.left || 0;
7756          boundaries.top += isPaddingNumber ? padding : padding.top || 0;
7757          boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
7758          boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;
7759          return boundaries;
7760        }
7761        function getArea(_ref) {
7762          var width = _ref.width, height = _ref.height;
7763          return width * height;
7764        }
7765        function computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {
7766          var padding = arguments.length > 5 && arguments[5] !== void 0 ? arguments[5] : 0;
7767          if (placement.indexOf("auto") === -1) {
7768            return placement;
7769          }
7770          var boundaries = getBoundaries(popper, reference, padding, boundariesElement);
7771          var rects = {
7772            top: {
7773              width: boundaries.width,
7774              height: refRect.top - boundaries.top
7775            },
7776            right: {
7777              width: boundaries.right - refRect.right,
7778              height: boundaries.height
7779            },
7780            bottom: {
7781              width: boundaries.width,
7782              height: boundaries.bottom - refRect.bottom
7783            },
7784            left: {
7785              width: refRect.left - boundaries.left,
7786              height: boundaries.height
7787            }
7788          };
7789          var sortedAreas = Object.keys(rects).map(function(key) {
7790            return _extends({
7791              key
7792            }, rects[key], {
7793              area: getArea(rects[key])
7794            });
7795          }).sort(function(a, b) {
7796            return b.area - a.area;
7797          });
7798          var filteredAreas = sortedAreas.filter(function(_ref2) {
7799            var width = _ref2.width, height = _ref2.height;
7800            return width >= popper.clientWidth && height >= popper.clientHeight;
7801          });
7802          var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;
7803          var variation = placement.split("-")[1];
7804          return computedPlacement + (variation ? "-" + variation : "");
7805        }
7806        function getReferenceOffsets(state, popper, reference) {
7807          var fixedPosition = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : null;
7808          var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
7809          return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);
7810        }
7811        function getOuterSizes(element) {
7812          var window2 = element.ownerDocument.defaultView;
7813          var styles = window2.getComputedStyle(element);
7814          var x = parseFloat(styles.marginTop || 0) + parseFloat(styles.marginBottom || 0);
7815          var y = parseFloat(styles.marginLeft || 0) + parseFloat(styles.marginRight || 0);
7816          var result = {
7817            width: element.offsetWidth + y,
7818            height: element.offsetHeight + x
7819          };
7820          return result;
7821        }
7822        function getOppositePlacement(placement) {
7823          var hash = { left: "right", right: "left", bottom: "top", top: "bottom" };
7824          return placement.replace(/left|right|bottom|top/g, function(matched) {
7825            return hash[matched];
7826          });
7827        }
7828        function getPopperOffsets(popper, referenceOffsets, placement) {
7829          placement = placement.split("-")[0];
7830          var popperRect = getOuterSizes(popper);
7831          var popperOffsets = {
7832            width: popperRect.width,
7833            height: popperRect.height
7834          };
7835          var isHoriz = ["right", "left"].indexOf(placement) !== -1;
7836          var mainSide = isHoriz ? "top" : "left";
7837          var secondarySide = isHoriz ? "left" : "top";
7838          var measurement = isHoriz ? "height" : "width";
7839          var secondaryMeasurement = !isHoriz ? "height" : "width";
7840          popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;
7841          if (placement === secondarySide) {
7842            popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];
7843          } else {
7844            popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];
7845          }
7846          return popperOffsets;
7847        }
7848        function find(arr, check) {
7849          if (Array.prototype.find) {
7850            return arr.find(check);
7851          }
7852          return arr.filter(check)[0];
7853        }
7854        function findIndex(arr, prop, value2) {
7855          if (Array.prototype.findIndex) {
7856            return arr.findIndex(function(cur) {
7857              return cur[prop] === value2;
7858            });
7859          }
7860          var match = find(arr, function(obj) {
7861            return obj[prop] === value2;
7862          });
7863          return arr.indexOf(match);
7864        }
7865        function runModifiers(modifiers2, data, ends) {
7866          var modifiersToRun = ends === void 0 ? modifiers2 : modifiers2.slice(0, findIndex(modifiers2, "name", ends));
7867          modifiersToRun.forEach(function(modifier) {
7868            if (modifier["function"]) {
7869              console.warn("`modifier.function` is deprecated, use `modifier.fn`!");
7870            }
7871            var fn = modifier["function"] || modifier.fn;
7872            if (modifier.enabled && isFunction(fn)) {
7873              data.offsets.popper = getClientRect(data.offsets.popper);
7874              data.offsets.reference = getClientRect(data.offsets.reference);
7875              data = fn(data, modifier);
7876            }
7877          });
7878          return data;
7879        }
7880        function update() {
7881          if (this.state.isDestroyed) {
7882            return;
7883          }
7884          var data = {
7885            instance: this,
7886            styles: {},
7887            arrowStyles: {},
7888            attributes: {},
7889            flipped: false,
7890            offsets: {}
7891          };
7892          data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);
7893          data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);
7894          data.originalPlacement = data.placement;
7895          data.positionFixed = this.options.positionFixed;
7896          data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);
7897          data.offsets.popper.position = this.options.positionFixed ? "fixed" : "absolute";
7898          data = runModifiers(this.modifiers, data);
7899          if (!this.state.isCreated) {
7900            this.state.isCreated = true;
7901            this.options.onCreate(data);
7902          } else {
7903            this.options.onUpdate(data);
7904          }
7905        }
7906        function isModifierEnabled(modifiers2, modifierName) {
7907          return modifiers2.some(function(_ref) {
7908            var name2 = _ref.name, enabled = _ref.enabled;
7909            return enabled && name2 === modifierName;
7910          });
7911        }
7912        function getSupportedPropertyName(property) {
7913          var prefixes = [false, "ms", "Webkit", "Moz", "O"];
7914          var upperProp = property.charAt(0).toUpperCase() + property.slice(1);
7915          for (var i2 = 0; i2 < prefixes.length; i2++) {
7916            var prefix = prefixes[i2];
7917            var toCheck = prefix ? "" + prefix + upperProp : property;
7918            if (typeof document.body.style[toCheck] !== "undefined") {
7919              return toCheck;
7920            }
7921          }
7922          return null;
7923        }
7924        function destroy() {
7925          this.state.isDestroyed = true;
7926          if (isModifierEnabled(this.modifiers, "applyStyle")) {
7927            this.popper.removeAttribute("x-placement");
7928            this.popper.style.position = "";
7929            this.popper.style.top = "";
7930            this.popper.style.left = "";
7931            this.popper.style.right = "";
7932            this.popper.style.bottom = "";
7933            this.popper.style.willChange = "";
7934            this.popper.style[getSupportedPropertyName("transform")] = "";
7935          }
7936          this.disableEventListeners();
7937          if (this.options.removeOnDestroy) {
7938            this.popper.parentNode.removeChild(this.popper);
7939          }
7940          return this;
7941        }
7942        function getWindow(element) {
7943          var ownerDocument = element.ownerDocument;
7944          return ownerDocument ? ownerDocument.defaultView : window;
7945        }
7946        function attachToScrollParents(scrollParent, event, callback, scrollParents) {
7947          var isBody = scrollParent.nodeName === "BODY";
7948          var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
7949          target.addEventListener(event, callback, { passive: true });
7950          if (!isBody) {
7951            attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);
7952          }
7953          scrollParents.push(target);
7954        }
7955        function setupEventListeners(reference, options, state, updateBound) {
7956          state.updateBound = updateBound;
7957          getWindow(reference).addEventListener("resize", state.updateBound, { passive: true });
7958          var scrollElement = getScrollParent(reference);
7959          attachToScrollParents(scrollElement, "scroll", state.updateBound, state.scrollParents);
7960          state.scrollElement = scrollElement;
7961          state.eventsEnabled = true;
7962          return state;
7963        }
7964        function enableEventListeners() {
7965          if (!this.state.eventsEnabled) {
7966            this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);
7967          }
7968        }
7969        function removeEventListeners(reference, state) {
7970          getWindow(reference).removeEventListener("resize", state.updateBound);
7971          state.scrollParents.forEach(function(target) {
7972            target.removeEventListener("scroll", state.updateBound);
7973          });
7974          state.updateBound = null;
7975          state.scrollParents = [];
7976          state.scrollElement = null;
7977          state.eventsEnabled = false;
7978          return state;
7979        }
7980        function disableEventListeners() {
7981          if (this.state.eventsEnabled) {
7982            cancelAnimationFrame(this.scheduleUpdate);
7983            this.state = removeEventListeners(this.reference, this.state);
7984          }
7985        }
7986        function isNumeric(n) {
7987          return n !== "" && !isNaN(parseFloat(n)) && isFinite(n);
7988        }
7989        function setStyles(element, styles) {
7990          Object.keys(styles).forEach(function(prop) {
7991            var unit = "";
7992            if (["width", "height", "top", "right", "bottom", "left"].indexOf(prop) !== -1 && isNumeric(styles[prop])) {
7993              unit = "px";
7994            }
7995            element.style[prop] = styles[prop] + unit;
7996          });
7997        }
7998        function setAttributes(element, attributes) {
7999          Object.keys(attributes).forEach(function(prop) {
8000            var value2 = attributes[prop];
8001            if (value2 !== false) {
8002              element.setAttribute(prop, attributes[prop]);
8003            } else {
8004              element.removeAttribute(prop);
8005            }
8006          });
8007        }
8008        function applyStyle(data) {
8009          setStyles(data.instance.popper, data.styles);
8010          setAttributes(data.instance.popper, data.attributes);
8011          if (data.arrowElement && Object.keys(data.arrowStyles).length) {
8012            setStyles(data.arrowElement, data.arrowStyles);
8013          }
8014          return data;
8015        }
8016        function applyStyleOnLoad(reference, popper, options, modifierOptions, state) {
8017          var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);
8018          var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);
8019          popper.setAttribute("x-placement", placement);
8020          setStyles(popper, { position: options.positionFixed ? "fixed" : "absolute" });
8021          return options;
8022        }
8023        function getRoundedOffsets(data, shouldRound) {
8024          var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
8025          var round = Math.round, floor = Math.floor;
8026          var noRound = function noRound2(v) {
8027            return v;
8028          };
8029          var referenceWidth = round(reference.width);
8030          var popperWidth = round(popper.width);
8031          var isVertical = ["left", "right"].indexOf(data.placement) !== -1;
8032          var isVariation = data.placement.indexOf("-") !== -1;
8033          var sameWidthParity = referenceWidth % 2 === popperWidth % 2;
8034          var bothOddWidth = referenceWidth % 2 === 1 && popperWidth % 2 === 1;
8035          var horizontalToInteger = !shouldRound ? noRound : isVertical || isVariation || sameWidthParity ? round : floor;
8036          var verticalToInteger = !shouldRound ? noRound : round;
8037          return {
8038            left: horizontalToInteger(bothOddWidth && !isVariation && shouldRound ? popper.left - 1 : popper.left),
8039            top: verticalToInteger(popper.top),
8040            bottom: verticalToInteger(popper.bottom),
8041            right: horizontalToInteger(popper.right)
8042          };
8043        }
8044        var isFirefox = isBrowser && /Firefox/i.test(navigator.userAgent);
8045        function computeStyle(data, options) {
8046          var x = options.x, y = options.y;
8047          var popper = data.offsets.popper;
8048          var legacyGpuAccelerationOption = find(data.instance.modifiers, function(modifier) {
8049            return modifier.name === "applyStyle";
8050          }).gpuAcceleration;
8051          if (legacyGpuAccelerationOption !== void 0) {
8052            console.warn("WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!");
8053          }
8054          var gpuAcceleration = legacyGpuAccelerationOption !== void 0 ? legacyGpuAccelerationOption : options.gpuAcceleration;
8055          var offsetParent = getOffsetParent(data.instance.popper);
8056          var offsetParentRect = getBoundingClientRect(offsetParent);
8057          var styles = {
8058            position: popper.position
8059          };
8060          var offsets = getRoundedOffsets(data, window.devicePixelRatio < 2 || !isFirefox);
8061          var sideA = x === "bottom" ? "top" : "bottom";
8062          var sideB = y === "right" ? "left" : "right";
8063          var prefixedProperty = getSupportedPropertyName("transform");
8064          var left = void 0, top = void 0;
8065          if (sideA === "bottom") {
8066            if (offsetParent.nodeName === "HTML") {
8067              top = -offsetParent.clientHeight + offsets.bottom;
8068            } else {
8069              top = -offsetParentRect.height + offsets.bottom;
8070            }
8071          } else {
8072            top = offsets.top;
8073          }
8074          if (sideB === "right") {
8075            if (offsetParent.nodeName === "HTML") {
8076              left = -offsetParent.clientWidth + offsets.right;
8077            } else {
8078              left = -offsetParentRect.width + offsets.right;
8079            }
8080          } else {
8081            left = offsets.left;
8082          }
8083          if (gpuAcceleration && prefixedProperty) {
8084            styles[prefixedProperty] = "translate3d(" + left + "px, " + top + "px, 0)";
8085            styles[sideA] = 0;
8086            styles[sideB] = 0;
8087            styles.willChange = "transform";
8088          } else {
8089            var invertTop = sideA === "bottom" ? -1 : 1;
8090            var invertLeft = sideB === "right" ? -1 : 1;
8091            styles[sideA] = top * invertTop;
8092            styles[sideB] = left * invertLeft;
8093            styles.willChange = sideA + ", " + sideB;
8094          }
8095          var attributes = {
8096            "x-placement": data.placement
8097          };
8098          data.attributes = _extends({}, attributes, data.attributes);
8099          data.styles = _extends({}, styles, data.styles);
8100          data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);
8101          return data;
8102        }
8103        function isModifierRequired(modifiers2, requestingName, requestedName) {
8104          var requesting = find(modifiers2, function(_ref) {
8105            var name2 = _ref.name;
8106            return name2 === requestingName;
8107          });
8108          var isRequired = !!requesting && modifiers2.some(function(modifier) {
8109            return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;
8110          });
8111          if (!isRequired) {
8112            var _requesting = "`" + requestingName + "`";
8113            var requested = "`" + requestedName + "`";
8114            console.warn(requested + " modifier is required by " + _requesting + " modifier in order to work, be sure to include it before " + _requesting + "!");
8115          }
8116          return isRequired;
8117        }
8118        function arrow(data, options) {
8119          var _data$offsets$arrow;
8120          if (!isModifierRequired(data.instance.modifiers, "arrow", "keepTogether")) {
8121            return data;
8122          }
8123          var arrowElement = options.element;
8124          if (typeof arrowElement === "string") {
8125            arrowElement = data.instance.popper.querySelector(arrowElement);
8126            if (!arrowElement) {
8127              return data;
8128            }
8129          } else {
8130            if (!data.instance.popper.contains(arrowElement)) {
8131              console.warn("WARNING: `arrow.element` must be child of its popper element!");
8132              return data;
8133            }
8134          }
8135          var placement = data.placement.split("-")[0];
8136          var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
8137          var isVertical = ["left", "right"].indexOf(placement) !== -1;
8138          var len = isVertical ? "height" : "width";
8139          var sideCapitalized = isVertical ? "Top" : "Left";
8140          var side = sideCapitalized.toLowerCase();
8141          var altSide = isVertical ? "left" : "top";
8142          var opSide = isVertical ? "bottom" : "right";
8143          var arrowElementSize = getOuterSizes(arrowElement)[len];
8144          if (reference[opSide] - arrowElementSize < popper[side]) {
8145            data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);
8146          }
8147          if (reference[side] + arrowElementSize > popper[opSide]) {
8148            data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];
8149          }
8150          data.offsets.popper = getClientRect(data.offsets.popper);
8151          var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;
8152          var css = getStyleComputedProperty(data.instance.popper);
8153          var popperMarginSide = parseFloat(css["margin" + sideCapitalized]);
8154          var popperBorderSide = parseFloat(css["border" + sideCapitalized + "Width"]);
8155          var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;
8156          sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);
8157          data.arrowElement = arrowElement;
8158          data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ""), _data$offsets$arrow);
8159          return data;
8160        }
8161        function getOppositeVariation(variation) {
8162          if (variation === "end") {
8163            return "start";
8164          } else if (variation === "start") {
8165            return "end";
8166          }
8167          return variation;
8168        }
8169        var placements = ["auto-start", "auto", "auto-end", "top-start", "top", "top-end", "right-start", "right", "right-end", "bottom-end", "bottom", "bottom-start", "left-end", "left", "left-start"];
8170        var validPlacements = placements.slice(3);
8171        function clockwise(placement) {
8172          var counter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
8173          var index = validPlacements.indexOf(placement);
8174          var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));
8175          return counter ? arr.reverse() : arr;
8176        }
8177        var BEHAVIORS = {
8178          FLIP: "flip",
8179          CLOCKWISE: "clockwise",
8180          COUNTERCLOCKWISE: "counterclockwise"
8181        };
8182        function flip(data, options) {
8183          if (isModifierEnabled(data.instance.modifiers, "inner")) {
8184            return data;
8185          }
8186          if (data.flipped && data.placement === data.originalPlacement) {
8187            return data;
8188          }
8189          var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);
8190          var placement = data.placement.split("-")[0];
8191          var placementOpposite = getOppositePlacement(placement);
8192          var variation = data.placement.split("-")[1] || "";
8193          var flipOrder = [];
8194          switch (options.behavior) {
8195            case BEHAVIORS.FLIP:
8196              flipOrder = [placement, placementOpposite];
8197              break;
8198            case BEHAVIORS.CLOCKWISE:
8199              flipOrder = clockwise(placement);
8200              break;
8201            case BEHAVIORS.COUNTERCLOCKWISE:
8202              flipOrder = clockwise(placement, true);
8203              break;
8204            default:
8205              flipOrder = options.behavior;
8206          }
8207          flipOrder.forEach(function(step, index) {
8208            if (placement !== step || flipOrder.length === index + 1) {
8209              return data;
8210            }
8211            placement = data.placement.split("-")[0];
8212            placementOpposite = getOppositePlacement(placement);
8213            var popperOffsets = data.offsets.popper;
8214            var refOffsets = data.offsets.reference;
8215            var floor = Math.floor;
8216            var overlapsRef = placement === "left" && floor(popperOffsets.right) > floor(refOffsets.left) || placement === "right" && floor(popperOffsets.left) < floor(refOffsets.right) || placement === "top" && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === "bottom" && floor(popperOffsets.top) < floor(refOffsets.bottom);
8217            var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);
8218            var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);
8219            var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);
8220            var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);
8221            var overflowsBoundaries = placement === "left" && overflowsLeft || placement === "right" && overflowsRight || placement === "top" && overflowsTop || placement === "bottom" && overflowsBottom;
8222            var isVertical = ["top", "bottom"].indexOf(placement) !== -1;
8223            var flippedVariationByRef = !!options.flipVariations && (isVertical && variation === "start" && overflowsLeft || isVertical && variation === "end" && overflowsRight || !isVertical && variation === "start" && overflowsTop || !isVertical && variation === "end" && overflowsBottom);
8224            var flippedVariationByContent = !!options.flipVariationsByContent && (isVertical && variation === "start" && overflowsRight || isVertical && variation === "end" && overflowsLeft || !isVertical && variation === "start" && overflowsBottom || !isVertical && variation === "end" && overflowsTop);
8225            var flippedVariation = flippedVariationByRef || flippedVariationByContent;
8226            if (overlapsRef || overflowsBoundaries || flippedVariation) {
8227              data.flipped = true;
8228              if (overlapsRef || overflowsBoundaries) {
8229                placement = flipOrder[index + 1];
8230              }
8231              if (flippedVariation) {
8232                variation = getOppositeVariation(variation);
8233              }
8234              data.placement = placement + (variation ? "-" + variation : "");
8235              data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));
8236              data = runModifiers(data.instance.modifiers, data, "flip");
8237            }
8238          });
8239          return data;
8240        }
8241        function keepTogether(data) {
8242          var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
8243          var placement = data.placement.split("-")[0];
8244          var floor = Math.floor;
8245          var isVertical = ["top", "bottom"].indexOf(placement) !== -1;
8246          var side = isVertical ? "right" : "bottom";
8247          var opSide = isVertical ? "left" : "top";
8248          var measurement = isVertical ? "width" : "height";
8249          if (popper[side] < floor(reference[opSide])) {
8250            data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];
8251          }
8252          if (popper[opSide] > floor(reference[side])) {
8253            data.offsets.popper[opSide] = floor(reference[side]);
8254          }
8255          return data;
8256        }
8257        function toValue(str, measurement, popperOffsets, referenceOffsets) {
8258          var split = str.match(/((?:\-|\+)?\d*\.?\d*)(.*)/);
8259          var value2 = +split[1];
8260          var unit = split[2];
8261          if (!value2) {
8262            return str;
8263          }
8264          if (unit.indexOf("%") === 0) {
8265            var element = void 0;
8266            switch (unit) {
8267              case "%p":
8268                element = popperOffsets;
8269                break;
8270              case "%":
8271              case "%r":
8272              default:
8273                element = referenceOffsets;
8274            }
8275            var rect = getClientRect(element);
8276            return rect[measurement] / 100 * value2;
8277          } else if (unit === "vh" || unit === "vw") {
8278            var size = void 0;
8279            if (unit === "vh") {
8280              size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);
8281            } else {
8282              size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);
8283            }
8284            return size / 100 * value2;
8285          } else {
8286            return value2;
8287          }
8288        }
8289        function parseOffset(offset2, popperOffsets, referenceOffsets, basePlacement) {
8290          var offsets = [0, 0];
8291          var useHeight = ["right", "left"].indexOf(basePlacement) !== -1;
8292          var fragments = offset2.split(/(\+|\-)/).map(function(frag) {
8293            return frag.trim();
8294          });
8295          var divider = fragments.indexOf(find(fragments, function(frag) {
8296            return frag.search(/,|\s/) !== -1;
8297          }));
8298          if (fragments[divider] && fragments[divider].indexOf(",") === -1) {
8299            console.warn("Offsets separated by white space(s) are deprecated, use a comma (,) instead.");
8300          }
8301          var splitRegex = /\s*,\s*|\s+/;
8302          var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];
8303          ops = ops.map(function(op, index) {
8304            var measurement = (index === 1 ? !useHeight : useHeight) ? "height" : "width";
8305            var mergeWithPrevious = false;
8306            return op.reduce(function(a, b) {
8307              if (a[a.length - 1] === "" && ["+", "-"].indexOf(b) !== -1) {
8308                a[a.length - 1] = b;
8309                mergeWithPrevious = true;
8310                return a;
8311              } else if (mergeWithPrevious) {
8312                a[a.length - 1] += b;
8313                mergeWithPrevious = false;
8314                return a;
8315              } else {
8316                return a.concat(b);
8317              }
8318            }, []).map(function(str) {
8319              return toValue(str, measurement, popperOffsets, referenceOffsets);
8320            });
8321          });
8322          ops.forEach(function(op, index) {
8323            op.forEach(function(frag, index2) {
8324              if (isNumeric(frag)) {
8325                offsets[index] += frag * (op[index2 - 1] === "-" ? -1 : 1);
8326              }
8327            });
8328          });
8329          return offsets;
8330        }
8331        function offset(data, _ref) {
8332          var offset2 = _ref.offset;
8333          var placement = data.placement, _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
8334          var basePlacement = placement.split("-")[0];
8335          var offsets = void 0;
8336          if (isNumeric(+offset2)) {
8337            offsets = [+offset2, 0];
8338          } else {
8339            offsets = parseOffset(offset2, popper, reference, basePlacement);
8340          }
8341          if (basePlacement === "left") {
8342            popper.top += offsets[0];
8343            popper.left -= offsets[1];
8344          } else if (basePlacement === "right") {
8345            popper.top += offsets[0];
8346            popper.left += offsets[1];
8347          } else if (basePlacement === "top") {
8348            popper.left += offsets[0];
8349            popper.top -= offsets[1];
8350          } else if (basePlacement === "bottom") {
8351            popper.left += offsets[0];
8352            popper.top += offsets[1];
8353          }
8354          data.popper = popper;
8355          return data;
8356        }
8357        function preventOverflow(data, options) {
8358          var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);
8359          if (data.instance.reference === boundariesElement) {
8360            boundariesElement = getOffsetParent(boundariesElement);
8361          }
8362          var transformProp = getSupportedPropertyName("transform");
8363          var popperStyles = data.instance.popper.style;
8364          var top = popperStyles.top, left = popperStyles.left, transform = popperStyles[transformProp];
8365          popperStyles.top = "";
8366          popperStyles.left = "";
8367          popperStyles[transformProp] = "";
8368          var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);
8369          popperStyles.top = top;
8370          popperStyles.left = left;
8371          popperStyles[transformProp] = transform;
8372          options.boundaries = boundaries;
8373          var order = options.priority;
8374          var popper = data.offsets.popper;
8375          var check = {
8376            primary: function primary(placement) {
8377              var value2 = popper[placement];
8378              if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {
8379                value2 = Math.max(popper[placement], boundaries[placement]);
8380              }
8381              return defineProperty({}, placement, value2);
8382            },
8383            secondary: function secondary(placement) {
8384              var mainSide = placement === "right" ? "left" : "top";
8385              var value2 = popper[mainSide];
8386              if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {
8387                value2 = Math.min(popper[mainSide], boundaries[placement] - (placement === "right" ? popper.width : popper.height));
8388              }
8389              return defineProperty({}, mainSide, value2);
8390            }
8391          };
8392          order.forEach(function(placement) {
8393            var side = ["left", "top"].indexOf(placement) !== -1 ? "primary" : "secondary";
8394            popper = _extends({}, popper, check[side](placement));
8395          });
8396          data.offsets.popper = popper;
8397          return data;
8398        }
8399        function shift(data) {
8400          var placement = data.placement;
8401          var basePlacement = placement.split("-")[0];
8402          var shiftvariation = placement.split("-")[1];
8403          if (shiftvariation) {
8404            var _data$offsets = data.offsets, reference = _data$offsets.reference, popper = _data$offsets.popper;
8405            var isVertical = ["bottom", "top"].indexOf(basePlacement) !== -1;
8406            var side = isVertical ? "left" : "top";
8407            var measurement = isVertical ? "width" : "height";
8408            var shiftOffsets = {
8409              start: defineProperty({}, side, reference[side]),
8410              end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])
8411            };
8412            data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);
8413          }
8414          return data;
8415        }
8416        function hide(data) {
8417          if (!isModifierRequired(data.instance.modifiers, "hide", "preventOverflow")) {
8418            return data;
8419          }
8420          var refRect = data.offsets.reference;
8421          var bound = find(data.instance.modifiers, function(modifier) {
8422            return modifier.name === "preventOverflow";
8423          }).boundaries;
8424          if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {
8425            if (data.hide === true) {
8426              return data;
8427            }
8428            data.hide = true;
8429            data.attributes["x-out-of-boundaries"] = "";
8430          } else {
8431            if (data.hide === false) {
8432              return data;
8433            }
8434            data.hide = false;
8435            data.attributes["x-out-of-boundaries"] = false;
8436          }
8437          return data;
8438        }
8439        function inner(data) {
8440          var placement = data.placement;
8441          var basePlacement = placement.split("-")[0];
8442          var _data$offsets = data.offsets, popper = _data$offsets.popper, reference = _data$offsets.reference;
8443          var isHoriz = ["left", "right"].indexOf(basePlacement) !== -1;
8444          var subtractLength = ["top", "left"].indexOf(basePlacement) === -1;
8445          popper[isHoriz ? "left" : "top"] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? "width" : "height"] : 0);
8446          data.placement = getOppositePlacement(placement);
8447          data.offsets.popper = getClientRect(popper);
8448          return data;
8449        }
8450        var modifiers = {
8451          shift: {
8452            order: 100,
8453            enabled: true,
8454            fn: shift
8455          },
8456          offset: {
8457            order: 200,
8458            enabled: true,
8459            fn: offset,
8460            offset: 0
8461          },
8462          preventOverflow: {
8463            order: 300,
8464            enabled: true,
8465            fn: preventOverflow,
8466            priority: ["left", "right", "top", "bottom"],
8467            padding: 5,
8468            boundariesElement: "scrollParent"
8469          },
8470          keepTogether: {
8471            order: 400,
8472            enabled: true,
8473            fn: keepTogether
8474          },
8475          arrow: {
8476            order: 500,
8477            enabled: true,
8478            fn: arrow,
8479            element: "[x-arrow]"
8480          },
8481          flip: {
8482            order: 600,
8483            enabled: true,
8484            fn: flip,
8485            behavior: "flip",
8486            padding: 5,
8487            boundariesElement: "viewport",
8488            flipVariations: false,
8489            flipVariationsByContent: false
8490          },
8491          inner: {
8492            order: 700,
8493            enabled: false,
8494            fn: inner
8495          },
8496          hide: {
8497            order: 800,
8498            enabled: true,
8499            fn: hide
8500          },
8501          computeStyle: {
8502            order: 850,
8503            enabled: true,
8504            fn: computeStyle,
8505            gpuAcceleration: true,
8506            x: "bottom",
8507            y: "right"
8508          },
8509          applyStyle: {
8510            order: 900,
8511            enabled: true,
8512            fn: applyStyle,
8513            onLoad: applyStyleOnLoad,
8514            gpuAcceleration: void 0
8515          }
8516        };
8517        var Defaults = {
8518          placement: "bottom",
8519          positionFixed: false,
8520          eventsEnabled: true,
8521          removeOnDestroy: false,
8522          onCreate: function onCreate() {
8523          },
8524          onUpdate: function onUpdate() {
8525          },
8526          modifiers
8527        };
8528        var Popper = function() {
8529          function Popper2(reference, popper) {
8530            var _this = this;
8531            var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
8532            classCallCheck(this, Popper2);
8533            this.scheduleUpdate = function() {
8534              return requestAnimationFrame(_this.update);
8535            };
8536            this.update = debounce(this.update.bind(this));
8537            this.options = _extends({}, Popper2.Defaults, options);
8538            this.state = {
8539              isDestroyed: false,
8540              isCreated: false,
8541              scrollParents: []
8542            };
8543            this.reference = reference && reference.jquery ? reference[0] : reference;
8544            this.popper = popper && popper.jquery ? popper[0] : popper;
8545            this.options.modifiers = {};
8546            Object.keys(_extends({}, Popper2.Defaults.modifiers, options.modifiers)).forEach(function(name2) {
8547              _this.options.modifiers[name2] = _extends({}, Popper2.Defaults.modifiers[name2] || {}, options.modifiers ? options.modifiers[name2] : {});
8548            });
8549            this.modifiers = Object.keys(this.options.modifiers).map(function(name2) {
8550              return _extends({
8551                name: name2
8552              }, _this.options.modifiers[name2]);
8553            }).sort(function(a, b) {
8554              return a.order - b.order;
8555            });
8556            this.modifiers.forEach(function(modifierOptions) {
8557              if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {
8558                modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);
8559              }
8560            });
8561            this.update();
8562            var eventsEnabled = this.options.eventsEnabled;
8563            if (eventsEnabled) {
8564              this.enableEventListeners();
8565            }
8566            this.state.eventsEnabled = eventsEnabled;
8567          }
8568          createClass(Popper2, [{
8569            key: "update",
8570            value: function update$$1() {
8571              return update.call(this);
8572            }
8573          }, {
8574            key: "destroy",
8575            value: function destroy$$1() {
8576              return destroy.call(this);
8577            }
8578          }, {
8579            key: "enableEventListeners",
8580            value: function enableEventListeners$$1() {
8581              return enableEventListeners.call(this);
8582            }
8583          }, {
8584            key: "disableEventListeners",
8585            value: function disableEventListeners$$1() {
8586              return disableEventListeners.call(this);
8587            }
8588          }]);
8589          return Popper2;
8590        }();
8591        Popper.Utils = (typeof window !== "undefined" ? window : global).PopperUtils;
8592        Popper.placements = placements;
8593        Popper.Defaults = Defaults;
8594        return Popper;
8595      });
8596    }
8597  });
8598
8599  
vendor: 19,103 bytes, lines 8599-9010
8599// node_modules/bootstrap/js/dist/dropdown.js
8600  var require_dropdown = __commonJS({
8601    "node_modules/bootstrap/js/dist/dropdown.js"(exports, module) {
8602      (function(global2, factory) {
8603        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_popper(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "popper.js", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Dropdown = factory(global2.jQuery, global2.Popper, global2.Util));
8604      })(exports, function($2, Popper, Util2) {
8605        "use strict";
8606        function _interopDefaultLegacy(e) {
8607          return e && typeof e === "object" && "default" in e ? e : { "default": e };
8608        }
8609        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
8610        var Popper__default = /* @__PURE__ */ _interopDefaultLegacy(Popper);
8611        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
8612        function _defineProperties(target, props) {
8613          for (var i2 = 0; i2 < props.length; i2++) {
8614            var descriptor = props[i2];
8615            descriptor.enumerable = descriptor.enumerable || false;
8616            descriptor.configurable = true;
8617            if ("value" in descriptor)
8618              descriptor.writable = true;
8619            Object.defineProperty(target, descriptor.key, descriptor);
8620          }
8621        }
8622        function _createClass(Constructor, protoProps, staticProps) {
8623          if (protoProps)
8624            _defineProperties(Constructor.prototype, protoProps);
8625          if (staticProps)
8626            _defineProperties(Constructor, staticProps);
8627          Object.defineProperty(Constructor, "prototype", {
8628            writable: false
8629          });
8630          return Constructor;
8631        }
8632        function _extends() {
8633          _extends = Object.assign ? Object.assign.bind() : function(target) {
8634            for (var i2 = 1; i2 < arguments.length; i2++) {
8635              var source = arguments[i2];
8636              for (var key in source) {
8637                if (Object.prototype.hasOwnProperty.call(source, key)) {
8638                  target[key] = source[key];
8639                }
8640              }
8641            }
8642            return target;
8643          };
8644          return _extends.apply(this, arguments);
8645        }
8646        var NAME = "dropdown";
8647        var VERSION = "4.6.2";
8648        var DATA_KEY = "bs.dropdown";
8649        var EVENT_KEY = "." + DATA_KEY;
8650        var DATA_API_KEY = ".data-api";
8651        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
8652        var ESCAPE_KEYCODE = 27;
8653        var SPACE_KEYCODE = 32;
8654        var TAB_KEYCODE = 9;
8655        var ARROW_UP_KEYCODE = 38;
8656        var ARROW_DOWN_KEYCODE = 40;
8657        var RIGHT_MOUSE_BUTTON_WHICH = 3;
8658        var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
8659        var CLASS_NAME_DISABLED = "disabled";
8660        var CLASS_NAME_SHOW = "show";
8661        var CLASS_NAME_DROPUP = "dropup";
8662        var CLASS_NAME_DROPRIGHT = "dropright";
8663        var CLASS_NAME_DROPLEFT = "dropleft";
8664        var CLASS_NAME_MENURIGHT = "dropdown-menu-right";
8665        var CLASS_NAME_POSITION_STATIC = "position-static";
8666        var EVENT_HIDE = "hide" + EVENT_KEY;
8667        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
8668        var EVENT_SHOW = "show" + EVENT_KEY;
8669        var EVENT_SHOWN = "shown" + EVENT_KEY;
8670        var EVENT_CLICK = "click" + EVENT_KEY;
8671        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
8672        var EVENT_KEYDOWN_DATA_API = "keydown" + EVENT_KEY + DATA_API_KEY;
8673        var EVENT_KEYUP_DATA_API = "keyup" + EVENT_KEY + DATA_API_KEY;
8674        var SELECTOR_DATA_TOGGLE = '[data-toggle="dropdown"]';
8675        var SELECTOR_FORM_CHILD = ".dropdown form";
8676        var SELECTOR_MENU = ".dropdown-menu";
8677        var SELECTOR_NAVBAR_NAV = ".navbar-nav";
8678        var SELECTOR_VISIBLE_ITEMS = ".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)";
8679        var PLACEMENT_TOP = "top-start";
8680        var PLACEMENT_TOPEND = "top-end";
8681        var PLACEMENT_BOTTOM = "bottom-start";
8682        var PLACEMENT_BOTTOMEND = "bottom-end";
8683        var PLACEMENT_RIGHT = "right-start";
8684        var PLACEMENT_LEFT = "left-start";
8685        var Default = {
8686          offset: 0,
8687          flip: true,
8688          boundary: "scrollParent",
8689          reference: "toggle",
8690          display: "dynamic",
8691          popperConfig: null
8692        };
8693        var DefaultType = {
8694          offset: "(number|string|function)",
8695          flip: "boolean",
8696          boundary: "(string|element)",
8697          reference: "(string|element)",
8698          display: "string",
8699          popperConfig: "(null|object)"
8700        };
8701        var Dropdown2 = /* @__PURE__ */ function() {
8702          function Dropdown3(element, config) {
8703            this._element = element;
8704            this._popper = null;
8705            this._config = this._getConfig(config);
8706            this._menu = this._getMenuElement();
8707            this._inNavbar = this._detectNavbar();
8708            this._addEventListeners();
8709          }
8710          var _proto = Dropdown3.prototype;
8711          _proto.toggle = function toggle() {
8712            if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED)) {
8713              return;
8714            }
8715            var isActive = $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW);
8716            Dropdown3._clearMenus();
8717            if (isActive) {
8718              return;
8719            }
8720            this.show(true);
8721          };
8722          _proto.show = function show(usePopper) {
8723            if (usePopper === void 0) {
8724              usePopper = false;
8725            }
8726            if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || $__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
8727              return;
8728            }
8729            var relatedTarget = {
8730              relatedTarget: this._element
8731            };
8732            var showEvent = $__default["default"].Event(EVENT_SHOW, relatedTarget);
8733            var parent = Dropdown3._getParentFromElement(this._element);
8734            $__default["default"](parent).trigger(showEvent);
8735            if (showEvent.isDefaultPrevented()) {
8736              return;
8737            }
8738            if (!this._inNavbar && usePopper) {
8739              if (typeof Popper__default["default"] === "undefined") {
8740                throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");
8741              }
8742              var referenceElement = this._element;
8743              if (this._config.reference === "parent") {
8744                referenceElement = parent;
8745              } else if (Util__default["default"].isElement(this._config.reference)) {
8746                referenceElement = this._config.reference;
8747                if (typeof this._config.reference.jquery !== "undefined") {
8748                  referenceElement = this._config.reference[0];
8749                }
8750              }
8751              if (this._config.boundary !== "scrollParent") {
8752                $__default["default"](parent).addClass(CLASS_NAME_POSITION_STATIC);
8753              }
8754              this._popper = new Popper__default["default"](referenceElement, this._menu, this._getPopperConfig());
8755            }
8756            if ("ontouchstart" in document.documentElement && $__default["default"](parent).closest(SELECTOR_NAVBAR_NAV).length === 0) {
8757              $__default["default"](document.body).children().on("mouseover", null, $__default["default"].noop);
8758            }
8759            this._element.focus();
8760            this._element.setAttribute("aria-expanded", true);
8761            $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
8762            $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_SHOWN, relatedTarget));
8763          };
8764          _proto.hide = function hide() {
8765            if (this._element.disabled || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || !$__default["default"](this._menu).hasClass(CLASS_NAME_SHOW)) {
8766              return;
8767            }
8768            var relatedTarget = {
8769              relatedTarget: this._element
8770            };
8771            var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
8772            var parent = Dropdown3._getParentFromElement(this._element);
8773            $__default["default"](parent).trigger(hideEvent);
8774            if (hideEvent.isDefaultPrevented()) {
8775              return;
8776            }
8777            if (this._popper) {
8778              this._popper.destroy();
8779            }
8780            $__default["default"](this._menu).toggleClass(CLASS_NAME_SHOW);
8781            $__default["default"](parent).toggleClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
8782          };
8783          _proto.dispose = function dispose() {
8784            $__default["default"].removeData(this._element, DATA_KEY);
8785            $__default["default"](this._element).off(EVENT_KEY);
8786            this._element = null;
8787            this._menu = null;
8788            if (this._popper !== null) {
8789              this._popper.destroy();
8790              this._popper = null;
8791            }
8792          };
8793          _proto.update = function update() {
8794            this._inNavbar = this._detectNavbar();
8795            if (this._popper !== null) {
8796              this._popper.scheduleUpdate();
8797            }
8798          };
8799          _proto._addEventListeners = function _addEventListeners() {
8800            var _this = this;
8801            $__default["default"](this._element).on(EVENT_CLICK, function(event) {
8802              event.preventDefault();
8803              event.stopPropagation();
8804              _this.toggle();
8805            });
8806          };
8807          _proto._getConfig = function _getConfig(config) {
8808            config = _extends({}, this.constructor.Default, $__default["default"](this._element).data(), config);
8809            Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
8810            return config;
8811          };
8812          _proto._getMenuElement = function _getMenuElement() {
8813            if (!this._menu) {
8814              var parent = Dropdown3._getParentFromElement(this._element);
8815              if (parent) {
8816                this._menu = parent.querySelector(SELECTOR_MENU);
8817              }
8818            }
8819            return this._menu;
8820          };
8821          _proto._getPlacement = function _getPlacement() {
8822            var $parentDropdown = $__default["default"](this._element.parentNode);
8823            var placement = PLACEMENT_BOTTOM;
8824            if ($parentDropdown.hasClass(CLASS_NAME_DROPUP)) {
8825              placement = $__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT) ? PLACEMENT_TOPEND : PLACEMENT_TOP;
8826            } else if ($parentDropdown.hasClass(CLASS_NAME_DROPRIGHT)) {
8827              placement = PLACEMENT_RIGHT;
8828            } else if ($parentDropdown.hasClass(CLASS_NAME_DROPLEFT)) {
8829              placement = PLACEMENT_LEFT;
8830            } else if ($__default["default"](this._menu).hasClass(CLASS_NAME_MENURIGHT)) {
8831              placement = PLACEMENT_BOTTOMEND;
8832            }
8833            return placement;
8834          };
8835          _proto._detectNavbar = function _detectNavbar() {
8836            return $__default["default"](this._element).closest(".navbar").length > 0;
8837          };
8838          _proto._getOffset = function _getOffset() {
8839            var _this2 = this;
8840            var offset = {};
8841            if (typeof this._config.offset === "function") {
8842              offset.fn = function(data) {
8843                data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets, _this2._element));
8844                return data;
8845              };
8846            } else {
8847              offset.offset = this._config.offset;
8848            }
8849            return offset;
8850          };
8851          _proto._getPopperConfig = function _getPopperConfig() {
8852            var popperConfig = {
8853              placement: this._getPlacement(),
8854              modifiers: {
8855                offset: this._getOffset(),
8856                flip: {
8857                  enabled: this._config.flip
8858                },
8859                preventOverflow: {
8860                  boundariesElement: this._config.boundary
8861                }
8862              }
8863            };
8864            if (this._config.display === "static") {
8865              popperConfig.modifiers.applyStyle = {
8866                enabled: false
8867              };
8868            }
8869            return _extends({}, popperConfig, this._config.popperConfig);
8870          };
8871          Dropdown3._jQueryInterface = function _jQueryInterface(config) {
8872            return this.each(function() {
8873              var data = $__default["default"](this).data(DATA_KEY);
8874              var _config = typeof config === "object" ? config : null;
8875              if (!data) {
8876                data = new Dropdown3(this, _config);
8877                $__default["default"](this).data(DATA_KEY, data);
8878              }
8879              if (typeof config === "string") {
8880                if (typeof data[config] === "undefined") {
8881                  throw new TypeError('No method named "' + config + '"');
8882                }
8883                data[config]();
8884              }
8885            });
8886          };
8887          Dropdown3._clearMenus = function _clearMenus(event) {
8888            if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === "keyup" && event.which !== TAB_KEYCODE)) {
8889              return;
8890            }
8891            var toggles = [].slice.call(document.querySelectorAll(SELECTOR_DATA_TOGGLE));
8892            for (var i2 = 0, len = toggles.length; i2 < len; i2++) {
8893              var parent = Dropdown3._getParentFromElement(toggles[i2]);
8894              var context = $__default["default"](toggles[i2]).data(DATA_KEY);
8895              var relatedTarget = {
8896                relatedTarget: toggles[i2]
8897              };
8898              if (event && event.type === "click") {
8899                relatedTarget.clickEvent = event;
8900              }
8901              if (!context) {
8902                continue;
8903              }
8904              var dropdownMenu = context._menu;
8905              if (!$__default["default"](parent).hasClass(CLASS_NAME_SHOW)) {
8906                continue;
8907              }
8908              if (event && (event.type === "click" && /input|textarea/i.test(event.target.tagName) || event.type === "keyup" && event.which === TAB_KEYCODE) && $__default["default"].contains(parent, event.target)) {
8909                continue;
8910              }
8911              var hideEvent = $__default["default"].Event(EVENT_HIDE, relatedTarget);
8912              $__default["default"](parent).trigger(hideEvent);
8913              if (hideEvent.isDefaultPrevented()) {
8914                continue;
8915              }
8916              if ("ontouchstart" in document.documentElement) {
8917                $__default["default"](document.body).children().off("mouseover", null, $__default["default"].noop);
8918              }
8919              toggles[i2].setAttribute("aria-expanded", "false");
8920              if (context._popper) {
8921                context._popper.destroy();
8922              }
8923              $__default["default"](dropdownMenu).removeClass(CLASS_NAME_SHOW);
8924              $__default["default"](parent).removeClass(CLASS_NAME_SHOW).trigger($__default["default"].Event(EVENT_HIDDEN, relatedTarget));
8925            }
8926          };
8927          Dropdown3._getParentFromElement = function _getParentFromElement(element) {
8928            var parent;
8929            var selector = Util__default["default"].getSelectorFromElement(element);
8930            if (selector) {
8931              parent = document.querySelector(selector);
8932            }
8933            return parent || element.parentNode;
8934          };
8935          Dropdown3._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
8936            if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $__default["default"](event.target).closest(SELECTOR_MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {
8937              return;
8938            }
8939            if (this.disabled || $__default["default"](this).hasClass(CLASS_NAME_DISABLED)) {
8940              return;
8941            }
8942            var parent = Dropdown3._getParentFromElement(this);
8943            var isActive = $__default["default"](parent).hasClass(CLASS_NAME_SHOW);
8944            if (!isActive && event.which === ESCAPE_KEYCODE) {
8945              return;
8946            }
8947            event.preventDefault();
8948            event.stopPropagation();
8949            if (!isActive || event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE) {
8950              if (event.which === ESCAPE_KEYCODE) {
8951                $__default["default"](parent.querySelector(SELECTOR_DATA_TOGGLE)).trigger("focus");
8952              }
8953              $__default["default"](this).trigger("click");
8954              return;
8955            }
8956            var items = [].slice.call(parent.querySelectorAll(SELECTOR_VISIBLE_ITEMS)).filter(function(item) {
8957              return $__default["default"](item).is(":visible");
8958            });
8959            if (items.length === 0) {
8960              return;
8961            }
8962            var index = items.indexOf(event.target);
8963            if (event.which === ARROW_UP_KEYCODE && index > 0) {
8964              index--;
8965            }
8966            if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
8967              index++;
8968            }
8969            if (index < 0) {
8970              index = 0;
8971            }
8972            items[index].focus();
8973          };
8974          _createClass(Dropdown3, null, [{
8975            key: "VERSION",
8976            get: function get() {
8977              return VERSION;
8978            }
8979          }, {
8980            key: "Default",
8981            get: function get() {
8982              return Default;
8983            }
8984          }, {
8985            key: "DefaultType",
8986            get: function get() {
8987              return DefaultType;
8988            }
8989          }]);
8990          return Dropdown3;
8991        }();
8992        $__default["default"](document).on(EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown2._dataApiKeydownHandler).on(EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown2._dataApiKeydownHandler).on(EVENT_CLICK_DATA_API + " " + EVENT_KEYUP_DATA_API, Dropdown2._clearMenus).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
8993          event.preventDefault();
8994          event.stopPropagation();
8995          Dropdown2._jQueryInterface.call($__default["default"](this), "toggle");
8996        }).on(EVENT_CLICK_DATA_API, SELECTOR_FORM_CHILD, function(e) {
8997          e.stopPropagation();
8998        });
8999        $__default["default"].fn[NAME] = Dropdown2._jQueryInterface;
9000        $__default["default"].fn[NAME].Constructor = Dropdown2;
9001        $__default["default"].fn[NAME].noConflict = function() {
9002          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
9003          return Dropdown2._jQueryInterface;
9004        };
9005        return Dropdown2;
9006      });
9007    }
9008  });
9009
9010  
vendor: 24,240 bytes, lines 9010-9510
9010// node_modules/bootstrap/js/dist/modal.js
9011  var require_modal = __commonJS({
9012    "node_modules/bootstrap/js/dist/modal.js"(exports, module) {
9013      (function(global2, factory) {
9014        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Modal = factory(global2.jQuery, global2.Util));
9015      })(exports, function($2, Util2) {
9016        "use strict";
9017        function _interopDefaultLegacy(e) {
9018          return e && typeof e === "object" && "default" in e ? e : { "default": e };
9019        }
9020        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
9021        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
9022        function _defineProperties(target, props) {
9023          for (var i2 = 0; i2 < props.length; i2++) {
9024            var descriptor = props[i2];
9025            descriptor.enumerable = descriptor.enumerable || false;
9026            descriptor.configurable = true;
9027            if ("value" in descriptor)
9028              descriptor.writable = true;
9029            Object.defineProperty(target, descriptor.key, descriptor);
9030          }
9031        }
9032        function _createClass(Constructor, protoProps, staticProps) {
9033          if (protoProps)
9034            _defineProperties(Constructor.prototype, protoProps);
9035          if (staticProps)
9036            _defineProperties(Constructor, staticProps);
9037          Object.defineProperty(Constructor, "prototype", {
9038            writable: false
9039          });
9040          return Constructor;
9041        }
9042        function _extends() {
9043          _extends = Object.assign ? Object.assign.bind() : function(target) {
9044            for (var i2 = 1; i2 < arguments.length; i2++) {
9045              var source = arguments[i2];
9046              for (var key in source) {
9047                if (Object.prototype.hasOwnProperty.call(source, key)) {
9048                  target[key] = source[key];
9049                }
9050              }
9051            }
9052            return target;
9053          };
9054          return _extends.apply(this, arguments);
9055        }
9056        var NAME = "modal";
9057        var VERSION = "4.6.2";
9058        var DATA_KEY = "bs.modal";
9059        var EVENT_KEY = "." + DATA_KEY;
9060        var DATA_API_KEY = ".data-api";
9061        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
9062        var ESCAPE_KEYCODE = 27;
9063        var CLASS_NAME_SCROLLABLE = "modal-dialog-scrollable";
9064        var CLASS_NAME_SCROLLBAR_MEASURER = "modal-scrollbar-measure";
9065        var CLASS_NAME_BACKDROP = "modal-backdrop";
9066        var CLASS_NAME_OPEN = "modal-open";
9067        var CLASS_NAME_FADE = "fade";
9068        var CLASS_NAME_SHOW = "show";
9069        var CLASS_NAME_STATIC = "modal-static";
9070        var EVENT_HIDE = "hide" + EVENT_KEY;
9071        var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
9072        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
9073        var EVENT_SHOW = "show" + EVENT_KEY;
9074        var EVENT_SHOWN = "shown" + EVENT_KEY;
9075        var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
9076        var EVENT_RESIZE = "resize" + EVENT_KEY;
9077        var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
9078        var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
9079        var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
9080        var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
9081        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
9082        var SELECTOR_DIALOG = ".modal-dialog";
9083        var SELECTOR_MODAL_BODY = ".modal-body";
9084        var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
9085        var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
9086        var SELECTOR_FIXED_CONTENT = ".fixed-top, .fixed-bottom, .is-fixed, .sticky-top";
9087        var SELECTOR_STICKY_CONTENT = ".sticky-top";
9088        var Default = {
9089          backdrop: true,
9090          keyboard: true,
9091          focus: true,
9092          show: true
9093        };
9094        var DefaultType = {
9095          backdrop: "(boolean|string)",
9096          keyboard: "boolean",
9097          focus: "boolean",
9098          show: "boolean"
9099        };
9100        var Modal2 = /* @__PURE__ */ function() {
9101          function Modal3(element, config) {
9102            this._config = this._getConfig(config);
9103            this._element = element;
9104            this._dialog = element.querySelector(SELECTOR_DIALOG);
9105            this._backdrop = null;
9106            this._isShown = false;
9107            this._isBodyOverflowing = false;
9108            this._ignoreBackdropClick = false;
9109            this._isTransitioning = false;
9110            this._scrollbarWidth = 0;
9111          }
9112          var _proto = Modal3.prototype;
9113          _proto.toggle = function toggle(relatedTarget) {
9114            return this._isShown ? this.hide() : this.show(relatedTarget);
9115          };
9116          _proto.show = function show(relatedTarget) {
9117            var _this = this;
9118            if (this._isShown || this._isTransitioning) {
9119              return;
9120            }
9121            var showEvent = $__default["default"].Event(EVENT_SHOW, {
9122              relatedTarget
9123            });
9124            $__default["default"](this._element).trigger(showEvent);
9125            if (showEvent.isDefaultPrevented()) {
9126              return;
9127            }
9128            this._isShown = true;
9129            if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
9130              this._isTransitioning = true;
9131            }
9132            this._checkScrollbar();
9133            this._setScrollbar();
9134            this._adjustDialog();
9135            this._setEscapeEvent();
9136            this._setResizeEvent();
9137            $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function(event) {
9138              return _this.hide(event);
9139            });
9140            $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function() {
9141              $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function(event) {
9142                if ($__default["default"](event.target).is(_this._element)) {
9143                  _this._ignoreBackdropClick = true;
9144                }
9145              });
9146            });
9147            this._showBackdrop(function() {
9148              return _this._showElement(relatedTarget);
9149            });
9150          };
9151          _proto.hide = function hide(event) {
9152            var _this2 = this;
9153            if (event) {
9154              event.preventDefault();
9155            }
9156            if (!this._isShown || this._isTransitioning) {
9157              return;
9158            }
9159            var hideEvent = $__default["default"].Event(EVENT_HIDE);
9160            $__default["default"](this._element).trigger(hideEvent);
9161            if (!this._isShown || hideEvent.isDefaultPrevented()) {
9162              return;
9163            }
9164            this._isShown = false;
9165            var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
9166            if (transition) {
9167              this._isTransitioning = true;
9168            }
9169            this._setEscapeEvent();
9170            this._setResizeEvent();
9171            $__default["default"](document).off(EVENT_FOCUSIN);
9172            $__default["default"](this._element).removeClass(CLASS_NAME_SHOW);
9173            $__default["default"](this._element).off(EVENT_CLICK_DISMISS);
9174            $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
9175            if (transition) {
9176              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
9177              $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function(event2) {
9178                return _this2._hideModal(event2);
9179              }).emulateTransitionEnd(transitionDuration);
9180            } else {
9181              this._hideModal();
9182            }
9183          };
9184          _proto.dispose = function dispose() {
9185            [window, this._element, this._dialog].forEach(function(htmlElement) {
9186              return $__default["default"](htmlElement).off(EVENT_KEY);
9187            });
9188            $__default["default"](document).off(EVENT_FOCUSIN);
9189            $__default["default"].removeData(this._element, DATA_KEY);
9190            this._config = null;
9191            this._element = null;
9192            this._dialog = null;
9193            this._backdrop = null;
9194            this._isShown = null;
9195            this._isBodyOverflowing = null;
9196            this._ignoreBackdropClick = null;
9197            this._isTransitioning = null;
9198            this._scrollbarWidth = null;
9199          };
9200          _proto.handleUpdate = function handleUpdate() {
9201            this._adjustDialog();
9202          };
9203          _proto._getConfig = function _getConfig(config) {
9204            config = _extends({}, Default, config);
9205            Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
9206            return config;
9207          };
9208          _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
9209            var _this3 = this;
9210            var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);
9211            $__default["default"](this._element).trigger(hideEventPrevented);
9212            if (hideEventPrevented.isDefaultPrevented()) {
9213              return;
9214            }
9215            var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
9216            if (!isModalOverflowing) {
9217              this._element.style.overflowY = "hidden";
9218            }
9219            this._element.classList.add(CLASS_NAME_STATIC);
9220            var modalTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
9221            $__default["default"](this._element).off(Util__default["default"].TRANSITION_END);
9222            $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function() {
9223              _this3._element.classList.remove(CLASS_NAME_STATIC);
9224              if (!isModalOverflowing) {
9225                $__default["default"](_this3._element).one(Util__default["default"].TRANSITION_END, function() {
9226                  _this3._element.style.overflowY = "";
9227                }).emulateTransitionEnd(_this3._element, modalTransitionDuration);
9228              }
9229            }).emulateTransitionEnd(modalTransitionDuration);
9230            this._element.focus();
9231          };
9232          _proto._showElement = function _showElement(relatedTarget) {
9233            var _this4 = this;
9234            var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
9235            var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
9236            if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
9237              document.body.appendChild(this._element);
9238            }
9239            this._element.style.display = "block";
9240            this._element.removeAttribute("aria-hidden");
9241            this._element.setAttribute("aria-modal", true);
9242            this._element.setAttribute("role", "dialog");
9243            if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {
9244              modalBody.scrollTop = 0;
9245            } else {
9246              this._element.scrollTop = 0;
9247            }
9248            if (transition) {
9249              Util__default["default"].reflow(this._element);
9250            }
9251            $__default["default"](this._element).addClass(CLASS_NAME_SHOW);
9252            if (this._config.focus) {
9253              this._enforceFocus();
9254            }
9255            var shownEvent = $__default["default"].Event(EVENT_SHOWN, {
9256              relatedTarget
9257            });
9258            var transitionComplete = function transitionComplete2() {
9259              if (_this4._config.focus) {
9260                _this4._element.focus();
9261              }
9262              _this4._isTransitioning = false;
9263              $__default["default"](_this4._element).trigger(shownEvent);
9264            };
9265            if (transition) {
9266              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
9267              $__default["default"](this._dialog).one(Util__default["default"].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
9268            } else {
9269              transitionComplete();
9270            }
9271          };
9272          _proto._enforceFocus = function _enforceFocus() {
9273            var _this5 = this;
9274            $__default["default"](document).off(EVENT_FOCUSIN).on(EVENT_FOCUSIN, function(event) {
9275              if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) {
9276                _this5._element.focus();
9277              }
9278            });
9279          };
9280          _proto._setEscapeEvent = function _setEscapeEvent() {
9281            var _this6 = this;
9282            if (this._isShown) {
9283              $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function(event) {
9284                if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
9285                  event.preventDefault();
9286                  _this6.hide();
9287                } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
9288                  _this6._triggerBackdropTransition();
9289                }
9290              });
9291            } else if (!this._isShown) {
9292              $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS);
9293            }
9294          };
9295          _proto._setResizeEvent = function _setResizeEvent() {
9296            var _this7 = this;
9297            if (this._isShown) {
9298              $__default["default"](window).on(EVENT_RESIZE, function(event) {
9299                return _this7.handleUpdate(event);
9300              });
9301            } else {
9302              $__default["default"](window).off(EVENT_RESIZE);
9303            }
9304          };
9305          _proto._hideModal = function _hideModal() {
9306            var _this8 = this;
9307            this._element.style.display = "none";
9308            this._element.setAttribute("aria-hidden", true);
9309            this._element.removeAttribute("aria-modal");
9310            this._element.removeAttribute("role");
9311            this._isTransitioning = false;
9312            this._showBackdrop(function() {
9313              $__default["default"](document.body).removeClass(CLASS_NAME_OPEN);
9314              _this8._resetAdjustments();
9315              _this8._resetScrollbar();
9316              $__default["default"](_this8._element).trigger(EVENT_HIDDEN);
9317            });
9318          };
9319          _proto._removeBackdrop = function _removeBackdrop() {
9320            if (this._backdrop) {
9321              $__default["default"](this._backdrop).remove();
9322              this._backdrop = null;
9323            }
9324          };
9325          _proto._showBackdrop = function _showBackdrop(callback) {
9326            var _this9 = this;
9327            var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : "";
9328            if (this._isShown && this._config.backdrop) {
9329              this._backdrop = document.createElement("div");
9330              this._backdrop.className = CLASS_NAME_BACKDROP;
9331              if (animate) {
9332                this._backdrop.classList.add(animate);
9333              }
9334              $__default["default"](this._backdrop).appendTo(document.body);
9335              $__default["default"](this._element).on(EVENT_CLICK_DISMISS, function(event) {
9336                if (_this9._ignoreBackdropClick) {
9337                  _this9._ignoreBackdropClick = false;
9338                  return;
9339                }
9340                if (event.target !== event.currentTarget) {
9341                  return;
9342                }
9343                if (_this9._config.backdrop === "static") {
9344                  _this9._triggerBackdropTransition();
9345                } else {
9346                  _this9.hide();
9347                }
9348              });
9349              if (animate) {
9350                Util__default["default"].reflow(this._backdrop);
9351              }
9352              $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW);
9353              if (!callback) {
9354                return;
9355              }
9356              if (!animate) {
9357                callback();
9358                return;
9359              }
9360              var backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
9361              $__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
9362            } else if (!this._isShown && this._backdrop) {
9363              $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW);
9364              var callbackRemove = function callbackRemove2() {
9365                _this9._removeBackdrop();
9366                if (callback) {
9367                  callback();
9368                }
9369              };
9370              if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
9371                var _backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
9372                $__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
9373              } else {
9374                callbackRemove();
9375              }
9376            } else if (callback) {
9377              callback();
9378            }
9379          };
9380          _proto._adjustDialog = function _adjustDialog() {
9381            var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
9382            if (!this._isBodyOverflowing && isModalOverflowing) {
9383              this._element.style.paddingLeft = this._scrollbarWidth + "px";
9384            }
9385            if (this._isBodyOverflowing && !isModalOverflowing) {
9386              this._element.style.paddingRight = this._scrollbarWidth + "px";
9387            }
9388          };
9389          _proto._resetAdjustments = function _resetAdjustments() {
9390            this._element.style.paddingLeft = "";
9391            this._element.style.paddingRight = "";
9392          };
9393          _proto._checkScrollbar = function _checkScrollbar() {
9394            var rect = document.body.getBoundingClientRect();
9395            this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
9396            this._scrollbarWidth = this._getScrollbarWidth();
9397          };
9398          _proto._setScrollbar = function _setScrollbar() {
9399            var _this10 = this;
9400            if (this._isBodyOverflowing) {
9401              var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
9402              var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT));
9403              $__default["default"](fixedContent).each(function(index, element) {
9404                var actualPadding2 = element.style.paddingRight;
9405                var calculatedPadding2 = $__default["default"](element).css("padding-right");
9406                $__default["default"](element).data("padding-right", actualPadding2).css("padding-right", parseFloat(calculatedPadding2) + _this10._scrollbarWidth + "px");
9407              });
9408              $__default["default"](stickyContent).each(function(index, element) {
9409                var actualMargin = element.style.marginRight;
9410                var calculatedMargin = $__default["default"](element).css("margin-right");
9411                $__default["default"](element).data("margin-right", actualMargin).css("margin-right", parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
9412              });
9413              var actualPadding = document.body.style.paddingRight;
9414              var calculatedPadding = $__default["default"](document.body).css("padding-right");
9415              $__default["default"](document.body).data("padding-right", actualPadding).css("padding-right", parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
9416            }
9417            $__default["default"](document.body).addClass(CLASS_NAME_OPEN);
9418          };
9419          _proto._resetScrollbar = function _resetScrollbar() {
9420            var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
9421            $__default["default"](fixedContent).each(function(index, element) {
9422              var padding2 = $__default["default"](element).data("padding-right");
9423              $__default["default"](element).removeData("padding-right");
9424              element.style.paddingRight = padding2 ? padding2 : "";
9425            });
9426            var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
9427            $__default["default"](elements).each(function(index, element) {
9428              var margin = $__default["default"](element).data("margin-right");
9429              if (typeof margin !== "undefined") {
9430                $__default["default"](element).css("margin-right", margin).removeData("margin-right");
9431              }
9432            });
9433            var padding = $__default["default"](document.body).data("padding-right");
9434            $__default["default"](document.body).removeData("padding-right");
9435            document.body.style.paddingRight = padding ? padding : "";
9436          };
9437          _proto._getScrollbarWidth = function _getScrollbarWidth() {
9438            var scrollDiv = document.createElement("div");
9439            scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
9440            document.body.appendChild(scrollDiv);
9441            var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
9442            document.body.removeChild(scrollDiv);
9443            return scrollbarWidth;
9444          };
9445          Modal3._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
9446            return this.each(function() {
9447              var data = $__default["default"](this).data(DATA_KEY);
9448              var _config = _extends({}, Default, $__default["default"](this).data(), typeof config === "object" && config ? config : {});
9449              if (!data) {
9450                data = new Modal3(this, _config);
9451                $__default["default"](this).data(DATA_KEY, data);
9452              }
9453              if (typeof config === "string") {
9454                if (typeof data[config] === "undefined") {
9455                  throw new TypeError('No method named "' + config + '"');
9456                }
9457                data[config](relatedTarget);
9458              } else if (_config.show) {
9459                data.show(relatedTarget);
9460              }
9461            });
9462          };
9463          _createClass(Modal3, null, [{
9464            key: "VERSION",
9465            get: function get() {
9466              return VERSION;
9467            }
9468          }, {
9469            key: "Default",
9470            get: function get() {
9471              return Default;
9472            }
9473          }]);
9474          return Modal3;
9475        }();
9476        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
9477          var _this11 = this;
9478          var target;
9479          var selector = Util__default["default"].getSelectorFromElement(this);
9480          if (selector) {
9481            target = document.querySelector(selector);
9482          }
9483          var config = $__default["default"](target).data(DATA_KEY) ? "toggle" : _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
9484          if (this.tagName === "A" || this.tagName === "AREA") {
9485            event.preventDefault();
9486          }
9487          var $target = $__default["default"](target).one(EVENT_SHOW, function(showEvent) {
9488            if (showEvent.isDefaultPrevented()) {
9489              return;
9490            }
9491            $target.one(EVENT_HIDDEN, function() {
9492              if ($__default["default"](_this11).is(":visible")) {
9493                _this11.focus();
9494              }
9495            });
9496          });
9497          Modal2._jQueryInterface.call($__default["default"](target), config, this);
9498        });
9499        $__default["default"].fn[NAME] = Modal2._jQueryInterface;
9500        $__default["default"].fn[NAME].Constructor = Modal2;
9501        $__default["default"].fn[NAME].noConflict = function() {
9502          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
9503          return Modal2._jQueryInterface;
9504        };
9505        return Modal2;
9506      });
9507    }
9508  });
9509
9510  
vendor: 29,928 bytes, lines 9510-10209
9510// node_modules/bootstrap/js/dist/tooltip.js
9511  var require_tooltip = __commonJS({
9512    "node_modules/bootstrap/js/dist/tooltip.js"(exports, module) {
9513      (function(global2, factory) {
9514        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_popper(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "popper.js", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Tooltip = factory(global2.jQuery, global2.Popper, global2.Util));
9515      })(exports, function($2, Popper, Util2) {
9516        "use strict";
9517        function _interopDefaultLegacy(e) {
9518          return e && typeof e === "object" && "default" in e ? e : { "default": e };
9519        }
9520        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
9521        var Popper__default = /* @__PURE__ */ _interopDefaultLegacy(Popper);
9522        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
9523        function _defineProperties(target, props) {
9524          for (var i2 = 0; i2 < props.length; i2++) {
9525            var descriptor = props[i2];
9526            descriptor.enumerable = descriptor.enumerable || false;
9527            descriptor.configurable = true;
9528            if ("value" in descriptor)
9529              descriptor.writable = true;
9530            Object.defineProperty(target, descriptor.key, descriptor);
9531          }
9532        }
9533        function _createClass(Constructor, protoProps, staticProps) {
9534          if (protoProps)
9535            _defineProperties(Constructor.prototype, protoProps);
9536          if (staticProps)
9537            _defineProperties(Constructor, staticProps);
9538          Object.defineProperty(Constructor, "prototype", {
9539            writable: false
9540          });
9541          return Constructor;
9542        }
9543        function _extends() {
9544          _extends = Object.assign ? Object.assign.bind() : function(target) {
9545            for (var i2 = 1; i2 < arguments.length; i2++) {
9546              var source = arguments[i2];
9547              for (var key in source) {
9548                if (Object.prototype.hasOwnProperty.call(source, key)) {
9549                  target[key] = source[key];
9550                }
9551              }
9552            }
9553            return target;
9554          };
9555          return _extends.apply(this, arguments);
9556        }
9557        var uriAttrs = ["background", "cite", "href", "itemtype", "longdesc", "poster", "src", "xlink:href"];
9558        var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i;
9559        var DefaultWhitelist = {
9560          "*": ["class", "dir", "id", "lang", "role", ARIA_ATTRIBUTE_PATTERN],
9561          a: ["target", "href", "title", "rel"],
9562          area: [],
9563          b: [],
9564          br: [],
9565          col: [],
9566          code: [],
9567          div: [],
9568          em: [],
9569          hr: [],
9570          h1: [],
9571          h2: [],
9572          h3: [],
9573          h4: [],
9574          h5: [],
9575          h6: [],
9576          i: [],
9577          img: ["src", "srcset", "alt", "title", "width", "height"],
9578          li: [],
9579          ol: [],
9580          p: [],
9581          pre: [],
9582          s: [],
9583          small: [],
9584          span: [],
9585          sub: [],
9586          sup: [],
9587          strong: [],
9588          u: [],
9589          ul: []
9590        };
9591        var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;
9592        var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i;
9593        function allowedAttribute(attr, allowedAttributeList) {
9594          var attrName = attr.nodeName.toLowerCase();
9595          if (allowedAttributeList.indexOf(attrName) !== -1) {
9596            if (uriAttrs.indexOf(attrName) !== -1) {
9597              return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue));
9598            }
9599            return true;
9600          }
9601          var regExp = allowedAttributeList.filter(function(attrRegex) {
9602            return attrRegex instanceof RegExp;
9603          });
9604          for (var i2 = 0, len = regExp.length; i2 < len; i2++) {
9605            if (regExp[i2].test(attrName)) {
9606              return true;
9607            }
9608          }
9609          return false;
9610        }
9611        function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {
9612          if (unsafeHtml.length === 0) {
9613            return unsafeHtml;
9614          }
9615          if (sanitizeFn && typeof sanitizeFn === "function") {
9616            return sanitizeFn(unsafeHtml);
9617          }
9618          var domParser = new window.DOMParser();
9619          var createdDocument = domParser.parseFromString(unsafeHtml, "text/html");
9620          var whitelistKeys = Object.keys(whiteList);
9621          var elements = [].slice.call(createdDocument.body.querySelectorAll("*"));
9622          var _loop = function _loop2(i3, len2) {
9623            var el = elements[i3];
9624            var elName = el.nodeName.toLowerCase();
9625            if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {
9626              el.parentNode.removeChild(el);
9627              return "continue";
9628            }
9629            var attributeList = [].slice.call(el.attributes);
9630            var whitelistedAttributes = [].concat(whiteList["*"] || [], whiteList[elName] || []);
9631            attributeList.forEach(function(attr) {
9632              if (!allowedAttribute(attr, whitelistedAttributes)) {
9633                el.removeAttribute(attr.nodeName);
9634              }
9635            });
9636          };
9637          for (var i2 = 0, len = elements.length; i2 < len; i2++) {
9638            var _ret = _loop(i2);
9639            if (_ret === "continue")
9640              continue;
9641          }
9642          return createdDocument.body.innerHTML;
9643        }
9644        var NAME = "tooltip";
9645        var VERSION = "4.6.2";
9646        var DATA_KEY = "bs.tooltip";
9647        var EVENT_KEY = "." + DATA_KEY;
9648        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
9649        var CLASS_PREFIX = "bs-tooltip";
9650        var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", "g");
9651        var DISALLOWED_ATTRIBUTES = ["sanitize", "whiteList", "sanitizeFn"];
9652        var CLASS_NAME_FADE = "fade";
9653        var CLASS_NAME_SHOW = "show";
9654        var HOVER_STATE_SHOW = "show";
9655        var HOVER_STATE_OUT = "out";
9656        var SELECTOR_TOOLTIP_INNER = ".tooltip-inner";
9657        var SELECTOR_ARROW = ".arrow";
9658        var TRIGGER_HOVER = "hover";
9659        var TRIGGER_FOCUS = "focus";
9660        var TRIGGER_CLICK = "click";
9661        var TRIGGER_MANUAL = "manual";
9662        var AttachmentMap = {
9663          AUTO: "auto",
9664          TOP: "top",
9665          RIGHT: "right",
9666          BOTTOM: "bottom",
9667          LEFT: "left"
9668        };
9669        var Default = {
9670          animation: true,
9671          template: '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',
9672          trigger: "hover focus",
9673          title: "",
9674          delay: 0,
9675          html: false,
9676          selector: false,
9677          placement: "top",
9678          offset: 0,
9679          container: false,
9680          fallbackPlacement: "flip",
9681          boundary: "scrollParent",
9682          customClass: "",
9683          sanitize: true,
9684          sanitizeFn: null,
9685          whiteList: DefaultWhitelist,
9686          popperConfig: null
9687        };
9688        var DefaultType = {
9689          animation: "boolean",
9690          template: "string",
9691          title: "(string|element|function)",
9692          trigger: "string",
9693          delay: "(number|object)",
9694          html: "boolean",
9695          selector: "(string|boolean)",
9696          placement: "(string|function)",
9697          offset: "(number|string|function)",
9698          container: "(string|element|boolean)",
9699          fallbackPlacement: "(string|array)",
9700          boundary: "(string|element)",
9701          customClass: "(string|function)",
9702          sanitize: "boolean",
9703          sanitizeFn: "(null|function)",
9704          whiteList: "object",
9705          popperConfig: "(null|object)"
9706        };
9707        var Event = {
9708          HIDE: "hide" + EVENT_KEY,
9709          HIDDEN: "hidden" + EVENT_KEY,
9710          SHOW: "show" + EVENT_KEY,
9711          SHOWN: "shown" + EVENT_KEY,
9712          INSERTED: "inserted" + EVENT_KEY,
9713          CLICK: "click" + EVENT_KEY,
9714          FOCUSIN: "focusin" + EVENT_KEY,
9715          FOCUSOUT: "focusout" + EVENT_KEY,
9716          MOUSEENTER: "mouseenter" + EVENT_KEY,
9717          MOUSELEAVE: "mouseleave" + EVENT_KEY
9718        };
9719        var Tooltip2 = /* @__PURE__ */ function() {
9720          function Tooltip3(element, config) {
9721            if (typeof Popper__default["default"] === "undefined") {
9722              throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");
9723            }
9724            this._isEnabled = true;
9725            this._timeout = 0;
9726            this._hoverState = "";
9727            this._activeTrigger = {};
9728            this._popper = null;
9729            this.element = element;
9730            this.config = this._getConfig(config);
9731            this.tip = null;
9732            this._setListeners();
9733          }
9734          var _proto = Tooltip3.prototype;
9735          _proto.enable = function enable() {
9736            this._isEnabled = true;
9737          };
9738          _proto.disable = function disable() {
9739            this._isEnabled = false;
9740          };
9741          _proto.toggleEnabled = function toggleEnabled() {
9742            this._isEnabled = !this._isEnabled;
9743          };
9744          _proto.toggle = function toggle(event) {
9745            if (!this._isEnabled) {
9746              return;
9747            }
9748            if (event) {
9749              var dataKey = this.constructor.DATA_KEY;
9750              var context = $__default["default"](event.currentTarget).data(dataKey);
9751              if (!context) {
9752                context = new this.constructor(event.currentTarget, this._getDelegateConfig());
9753                $__default["default"](event.currentTarget).data(dataKey, context);
9754              }
9755              context._activeTrigger.click = !context._activeTrigger.click;
9756              if (context._isWithActiveTrigger()) {
9757                context._enter(null, context);
9758              } else {
9759                context._leave(null, context);
9760              }
9761            } else {
9762              if ($__default["default"](this.getTipElement()).hasClass(CLASS_NAME_SHOW)) {
9763                this._leave(null, this);
9764                return;
9765              }
9766              this._enter(null, this);
9767            }
9768          };
9769          _proto.dispose = function dispose() {
9770            clearTimeout(this._timeout);
9771            $__default["default"].removeData(this.element, this.constructor.DATA_KEY);
9772            $__default["default"](this.element).off(this.constructor.EVENT_KEY);
9773            $__default["default"](this.element).closest(".modal").off("hide.bs.modal", this._hideModalHandler);
9774            if (this.tip) {
9775              $__default["default"](this.tip).remove();
9776            }
9777            this._isEnabled = null;
9778            this._timeout = null;
9779            this._hoverState = null;
9780            this._activeTrigger = null;
9781            if (this._popper) {
9782              this._popper.destroy();
9783            }
9784            this._popper = null;
9785            this.element = null;
9786            this.config = null;
9787            this.tip = null;
9788          };
9789          _proto.show = function show() {
9790            var _this = this;
9791            if ($__default["default"](this.element).css("display") === "none") {
9792              throw new Error("Please use show on visible elements");
9793            }
9794            var showEvent = $__default["default"].Event(this.constructor.Event.SHOW);
9795            if (this.isWithContent() && this._isEnabled) {
9796              $__default["default"](this.element).trigger(showEvent);
9797              var shadowRoot = Util__default["default"].findShadowRoot(this.element);
9798              var isInTheDom = $__default["default"].contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);
9799              if (showEvent.isDefaultPrevented() || !isInTheDom) {
9800                return;
9801              }
9802              var tip = this.getTipElement();
9803              var tipId = Util__default["default"].getUID(this.constructor.NAME);
9804              tip.setAttribute("id", tipId);
9805              this.element.setAttribute("aria-describedby", tipId);
9806              this.setContent();
9807              if (this.config.animation) {
9808                $__default["default"](tip).addClass(CLASS_NAME_FADE);
9809              }
9810              var placement = typeof this.config.placement === "function" ? this.config.placement.call(this, tip, this.element) : this.config.placement;
9811              var attachment = this._getAttachment(placement);
9812              this.addAttachmentClass(attachment);
9813              var container = this._getContainer();
9814              $__default["default"](tip).data(this.constructor.DATA_KEY, this);
9815              if (!$__default["default"].contains(this.element.ownerDocument.documentElement, this.tip)) {
9816                $__default["default"](tip).appendTo(container);
9817              }
9818              $__default["default"](this.element).trigger(this.constructor.Event.INSERTED);
9819              this._popper = new Popper__default["default"](this.element, tip, this._getPopperConfig(attachment));
9820              $__default["default"](tip).addClass(CLASS_NAME_SHOW);
9821              $__default["default"](tip).addClass(this.config.customClass);
9822              if ("ontouchstart" in document.documentElement) {
9823                $__default["default"](document.body).children().on("mouseover", null, $__default["default"].noop);
9824              }
9825              var complete = function complete2() {
9826                if (_this.config.animation) {
9827                  _this._fixTransition();
9828                }
9829                var prevHoverState = _this._hoverState;
9830                _this._hoverState = null;
9831                $__default["default"](_this.element).trigger(_this.constructor.Event.SHOWN);
9832                if (prevHoverState === HOVER_STATE_OUT) {
9833                  _this._leave(null, _this);
9834                }
9835              };
9836              if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE)) {
9837                var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this.tip);
9838                $__default["default"](this.tip).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
9839              } else {
9840                complete();
9841              }
9842            }
9843          };
9844          _proto.hide = function hide(callback) {
9845            var _this2 = this;
9846            var tip = this.getTipElement();
9847            var hideEvent = $__default["default"].Event(this.constructor.Event.HIDE);
9848            var complete = function complete2() {
9849              if (_this2._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {
9850                tip.parentNode.removeChild(tip);
9851              }
9852              _this2._cleanTipClass();
9853              _this2.element.removeAttribute("aria-describedby");
9854              $__default["default"](_this2.element).trigger(_this2.constructor.Event.HIDDEN);
9855              if (_this2._popper !== null) {
9856                _this2._popper.destroy();
9857              }
9858              if (callback) {
9859                callback();
9860              }
9861            };
9862            $__default["default"](this.element).trigger(hideEvent);
9863            if (hideEvent.isDefaultPrevented()) {
9864              return;
9865            }
9866            $__default["default"](tip).removeClass(CLASS_NAME_SHOW);
9867            if ("ontouchstart" in document.documentElement) {
9868              $__default["default"](document.body).children().off("mouseover", null, $__default["default"].noop);
9869            }
9870            this._activeTrigger[TRIGGER_CLICK] = false;
9871            this._activeTrigger[TRIGGER_FOCUS] = false;
9872            this._activeTrigger[TRIGGER_HOVER] = false;
9873            if ($__default["default"](this.tip).hasClass(CLASS_NAME_FADE)) {
9874              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(tip);
9875              $__default["default"](tip).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
9876            } else {
9877              complete();
9878            }
9879            this._hoverState = "";
9880          };
9881          _proto.update = function update() {
9882            if (this._popper !== null) {
9883              this._popper.scheduleUpdate();
9884            }
9885          };
9886          _proto.isWithContent = function isWithContent() {
9887            return Boolean(this.getTitle());
9888          };
9889          _proto.addAttachmentClass = function addAttachmentClass(attachment) {
9890            $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
9891          };
9892          _proto.getTipElement = function getTipElement() {
9893            this.tip = this.tip || $__default["default"](this.config.template)[0];
9894            return this.tip;
9895          };
9896          _proto.setContent = function setContent() {
9897            var tip = this.getTipElement();
9898            this.setElementContent($__default["default"](tip.querySelectorAll(SELECTOR_TOOLTIP_INNER)), this.getTitle());
9899            $__default["default"](tip).removeClass(CLASS_NAME_FADE + " " + CLASS_NAME_SHOW);
9900          };
9901          _proto.setElementContent = function setElementContent($element, content) {
9902            if (typeof content === "object" && (content.nodeType || content.jquery)) {
9903              if (this.config.html) {
9904                if (!$__default["default"](content).parent().is($element)) {
9905                  $element.empty().append(content);
9906                }
9907              } else {
9908                $element.text($__default["default"](content).text());
9909              }
9910              return;
9911            }
9912            if (this.config.html) {
9913              if (this.config.sanitize) {
9914                content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);
9915              }
9916              $element.html(content);
9917            } else {
9918              $element.text(content);
9919            }
9920          };
9921          _proto.getTitle = function getTitle() {
9922            var title = this.element.getAttribute("data-original-title");
9923            if (!title) {
9924              title = typeof this.config.title === "function" ? this.config.title.call(this.element) : this.config.title;
9925            }
9926            return title;
9927          };
9928          _proto._getPopperConfig = function _getPopperConfig(attachment) {
9929            var _this3 = this;
9930            var defaultBsConfig = {
9931              placement: attachment,
9932              modifiers: {
9933                offset: this._getOffset(),
9934                flip: {
9935                  behavior: this.config.fallbackPlacement
9936                },
9937                arrow: {
9938                  element: SELECTOR_ARROW
9939                },
9940                preventOverflow: {
9941                  boundariesElement: this.config.boundary
9942                }
9943              },
9944              onCreate: function onCreate(data) {
9945                if (data.originalPlacement !== data.placement) {
9946                  _this3._handlePopperPlacementChange(data);
9947                }
9948              },
9949              onUpdate: function onUpdate(data) {
9950                return _this3._handlePopperPlacementChange(data);
9951              }
9952            };
9953            return _extends({}, defaultBsConfig, this.config.popperConfig);
9954          };
9955          _proto._getOffset = function _getOffset() {
9956            var _this4 = this;
9957            var offset = {};
9958            if (typeof this.config.offset === "function") {
9959              offset.fn = function(data) {
9960                data.offsets = _extends({}, data.offsets, _this4.config.offset(data.offsets, _this4.element));
9961                return data;
9962              };
9963            } else {
9964              offset.offset = this.config.offset;
9965            }
9966            return offset;
9967          };
9968          _proto._getContainer = function _getContainer() {
9969            if (this.config.container === false) {
9970              return document.body;
9971            }
9972            if (Util__default["default"].isElement(this.config.container)) {
9973              return $__default["default"](this.config.container);
9974            }
9975            return $__default["default"](document).find(this.config.container);
9976          };
9977          _proto._getAttachment = function _getAttachment(placement) {
9978            return AttachmentMap[placement.toUpperCase()];
9979          };
9980          _proto._setListeners = function _setListeners() {
9981            var _this5 = this;
9982            var triggers = this.config.trigger.split(" ");
9983            triggers.forEach(function(trigger) {
9984              if (trigger === "click") {
9985                $__default["default"](_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function(event) {
9986                  return _this5.toggle(event);
9987                });
9988              } else if (trigger !== TRIGGER_MANUAL) {
9989                var eventIn = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;
9990                var eventOut = trigger === TRIGGER_HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;
9991                $__default["default"](_this5.element).on(eventIn, _this5.config.selector, function(event) {
9992                  return _this5._enter(event);
9993                }).on(eventOut, _this5.config.selector, function(event) {
9994                  return _this5._leave(event);
9995                });
9996              }
9997            });
9998            this._hideModalHandler = function() {
9999              if (_this5.element) {
10000                _this5.hide();
10001              }
10002            };
10003            $__default["default"](this.element).closest(".modal").on("hide.bs.modal", this._hideModalHandler);
10004            if (this.config.selector) {
10005              this.config = _extends({}, this.config, {
10006                trigger: "manual",
10007                selector: ""
10008              });
10009            } else {
10010              this._fixTitle();
10011            }
10012          };
10013          _proto._fixTitle = function _fixTitle() {
10014            var titleType = typeof this.element.getAttribute("data-original-title");
10015            if (this.element.getAttribute("title") || titleType !== "string") {
10016              this.element.setAttribute("data-original-title", this.element.getAttribute("title") || "");
10017              this.element.setAttribute("title", "");
10018            }
10019          };
10020          _proto._enter = function _enter(event, context) {
10021            var dataKey = this.constructor.DATA_KEY;
10022            context = context || $__default["default"](event.currentTarget).data(dataKey);
10023            if (!context) {
10024              context = new this.constructor(event.currentTarget, this._getDelegateConfig());
10025              $__default["default"](event.currentTarget).data(dataKey, context);
10026            }
10027            if (event) {
10028              context._activeTrigger[event.type === "focusin" ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;
10029            }
10030            if ($__default["default"](context.getTipElement()).hasClass(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {
10031              context._hoverState = HOVER_STATE_SHOW;
10032              return;
10033            }
10034            clearTimeout(context._timeout);
10035            context._hoverState = HOVER_STATE_SHOW;
10036            if (!context.config.delay || !context.config.delay.show) {
10037              context.show();
10038              return;
10039            }
10040            context._timeout = setTimeout(function() {
10041              if (context._hoverState === HOVER_STATE_SHOW) {
10042                context.show();
10043              }
10044            }, context.config.delay.show);
10045          };
10046          _proto._leave = function _leave(event, context) {
10047            var dataKey = this.constructor.DATA_KEY;
10048            context = context || $__default["default"](event.currentTarget).data(dataKey);
10049            if (!context) {
10050              context = new this.constructor(event.currentTarget, this._getDelegateConfig());
10051              $__default["default"](event.currentTarget).data(dataKey, context);
10052            }
10053            if (event) {
10054              context._activeTrigger[event.type === "focusout" ? TRIGGER_FOCUS : TRIGGER_HOVER] = false;
10055            }
10056            if (context._isWithActiveTrigger()) {
10057              return;
10058            }
10059            clearTimeout(context._timeout);
10060            context._hoverState = HOVER_STATE_OUT;
10061            if (!context.config.delay || !context.config.delay.hide) {
10062              context.hide();
10063              return;
10064            }
10065            context._timeout = setTimeout(function() {
10066              if (context._hoverState === HOVER_STATE_OUT) {
10067                context.hide();
10068              }
10069            }, context.config.delay.hide);
10070          };
10071          _proto._isWithActiveTrigger = function _isWithActiveTrigger() {
10072            for (var trigger in this._activeTrigger) {
10073              if (this._activeTrigger[trigger]) {
10074                return true;
10075              }
10076            }
10077            return false;
10078          };
10079          _proto._getConfig = function _getConfig(config) {
10080            var dataAttributes = $__default["default"](this.element).data();
10081            Object.keys(dataAttributes).forEach(function(dataAttr) {
10082              if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {
10083                delete dataAttributes[dataAttr];
10084              }
10085            });
10086            config = _extends({}, this.constructor.Default, dataAttributes, typeof config === "object" && config ? config : {});
10087            if (typeof config.delay === "number") {
10088              config.delay = {
10089                show: config.delay,
10090                hide: config.delay
10091              };
10092            }
10093            if (typeof config.title === "number") {
10094              config.title = config.title.toString();
10095            }
10096            if (typeof config.content === "number") {
10097              config.content = config.content.toString();
10098            }
10099            Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
10100            if (config.sanitize) {
10101              config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);
10102            }
10103            return config;
10104          };
10105          _proto._getDelegateConfig = function _getDelegateConfig() {
10106            var config = {};
10107            if (this.config) {
10108              for (var key in this.config) {
10109                if (this.constructor.Default[key] !== this.config[key]) {
10110                  config[key] = this.config[key];
10111                }
10112              }
10113            }
10114            return config;
10115          };
10116          _proto._cleanTipClass = function _cleanTipClass() {
10117            var $tip = $__default["default"](this.getTipElement());
10118            var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX);
10119            if (tabClass !== null && tabClass.length) {
10120              $tip.removeClass(tabClass.join(""));
10121            }
10122          };
10123          _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {
10124            this.tip = popperData.instance.popper;
10125            this._cleanTipClass();
10126            this.addAttachmentClass(this._getAttachment(popperData.placement));
10127          };
10128          _proto._fixTransition = function _fixTransition() {
10129            var tip = this.getTipElement();
10130            var initConfigAnimation = this.config.animation;
10131            if (tip.getAttribute("x-placement") !== null) {
10132              return;
10133            }
10134            $__default["default"](tip).removeClass(CLASS_NAME_FADE);
10135            this.config.animation = false;
10136            this.hide();
10137            this.show();
10138            this.config.animation = initConfigAnimation;
10139          };
10140          Tooltip3._jQueryInterface = function _jQueryInterface(config) {
10141            return this.each(function() {
10142              var $element = $__default["default"](this);
10143              var data = $element.data(DATA_KEY);
10144              var _config = typeof config === "object" && config;
10145              if (!data && /dispose|hide/.test(config)) {
10146                return;
10147              }
10148              if (!data) {
10149                data = new Tooltip3(this, _config);
10150                $element.data(DATA_KEY, data);
10151              }
10152              if (typeof config === "string") {
10153                if (typeof data[config] === "undefined") {
10154                  throw new TypeError('No method named "' + config + '"');
10155                }
10156                data[config]();
10157              }
10158            });
10159          };
10160          _createClass(Tooltip3, null, [{
10161            key: "VERSION",
10162            get: function get() {
10163              return VERSION;
10164            }
10165          }, {
10166            key: "Default",
10167            get: function get() {
10168              return Default;
10169            }
10170          }, {
10171            key: "NAME",
10172            get: function get() {
10173              return NAME;
10174            }
10175          }, {
10176            key: "DATA_KEY",
10177            get: function get() {
10178              return DATA_KEY;
10179            }
10180          }, {
10181            key: "Event",
10182            get: function get() {
10183              return Event;
10184            }
10185          }, {
10186            key: "EVENT_KEY",
10187            get: function get() {
10188              return EVENT_KEY;
10189            }
10190          }, {
10191            key: "DefaultType",
10192            get: function get() {
10193              return DefaultType;
10194            }
10195          }]);
10196          return Tooltip3;
10197        }();
10198        $__default["default"].fn[NAME] = Tooltip2._jQueryInterface;
10199        $__default["default"].fn[NAME].Constructor = Tooltip2;
10200        $__default["default"].fn[NAME].noConflict = function() {
10201          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
10202          return Tooltip2._jQueryInterface;
10203        };
10204        return Tooltip2;
10205      });
10206    }
10207  });
10208
10209  
vendor: 8,052 bytes, lines 10209-10403
10209// node_modules/bootstrap/js/dist/popover.js
10210  var require_popover = __commonJS({
10211    "node_modules/bootstrap/js/dist/popover.js"(exports, module) {
10212      (function(global2, factory) {
10213        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_tooltip()) : typeof define === "function" && define.amd ? define(["jquery", "./tooltip"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Popover = factory(global2.jQuery, global2.Tooltip));
10214      })(exports, function($2, Tooltip2) {
10215        "use strict";
10216        function _interopDefaultLegacy(e) {
10217          return e && typeof e === "object" && "default" in e ? e : { "default": e };
10218        }
10219        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
10220        var Tooltip__default = /* @__PURE__ */ _interopDefaultLegacy(Tooltip2);
10221        function _defineProperties(target, props) {
10222          for (var i2 = 0; i2 < props.length; i2++) {
10223            var descriptor = props[i2];
10224            descriptor.enumerable = descriptor.enumerable || false;
10225            descriptor.configurable = true;
10226            if ("value" in descriptor)
10227              descriptor.writable = true;
10228            Object.defineProperty(target, descriptor.key, descriptor);
10229          }
10230        }
10231        function _createClass(Constructor, protoProps, staticProps) {
10232          if (protoProps)
10233            _defineProperties(Constructor.prototype, protoProps);
10234          if (staticProps)
10235            _defineProperties(Constructor, staticProps);
10236          Object.defineProperty(Constructor, "prototype", {
10237            writable: false
10238          });
10239          return Constructor;
10240        }
10241        function _extends() {
10242          _extends = Object.assign ? Object.assign.bind() : function(target) {
10243            for (var i2 = 1; i2 < arguments.length; i2++) {
10244              var source = arguments[i2];
10245              for (var key in source) {
10246                if (Object.prototype.hasOwnProperty.call(source, key)) {
10247                  target[key] = source[key];
10248                }
10249              }
10250            }
10251            return target;
10252          };
10253          return _extends.apply(this, arguments);
10254        }
10255        function _inheritsLoose(subClass, superClass) {
10256          subClass.prototype = Object.create(superClass.prototype);
10257          subClass.prototype.constructor = subClass;
10258          _setPrototypeOf(subClass, superClass);
10259        }
10260        function _setPrototypeOf(o, p) {
10261          _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf2(o2, p2) {
10262            o2.__proto__ = p2;
10263            return o2;
10264          };
10265          return _setPrototypeOf(o, p);
10266        }
10267        var NAME = "popover";
10268        var VERSION = "4.6.2";
10269        var DATA_KEY = "bs.popover";
10270        var EVENT_KEY = "." + DATA_KEY;
10271        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
10272        var CLASS_PREFIX = "bs-popover";
10273        var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", "g");
10274        var CLASS_NAME_FADE = "fade";
10275        var CLASS_NAME_SHOW = "show";
10276        var SELECTOR_TITLE = ".popover-header";
10277        var SELECTOR_CONTENT = ".popover-body";
10278        var Default = _extends({}, Tooltip__default["default"].Default, {
10279          placement: "right",
10280          trigger: "click",
10281          content: "",
10282          template: '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'
10283        });
10284        var DefaultType = _extends({}, Tooltip__default["default"].DefaultType, {
10285          content: "(string|element|function)"
10286        });
10287        var Event = {
10288          HIDE: "hide" + EVENT_KEY,
10289          HIDDEN: "hidden" + EVENT_KEY,
10290          SHOW: "show" + EVENT_KEY,
10291          SHOWN: "shown" + EVENT_KEY,
10292          INSERTED: "inserted" + EVENT_KEY,
10293          CLICK: "click" + EVENT_KEY,
10294          FOCUSIN: "focusin" + EVENT_KEY,
10295          FOCUSOUT: "focusout" + EVENT_KEY,
10296          MOUSEENTER: "mouseenter" + EVENT_KEY,
10297          MOUSELEAVE: "mouseleave" + EVENT_KEY
10298        };
10299        var Popover2 = /* @__PURE__ */ function(_Tooltip) {
10300          _inheritsLoose(Popover3, _Tooltip);
10301          function Popover3() {
10302            return _Tooltip.apply(this, arguments) || this;
10303          }
10304          var _proto = Popover3.prototype;
10305          _proto.isWithContent = function isWithContent() {
10306            return this.getTitle() || this._getContent();
10307          };
10308          _proto.addAttachmentClass = function addAttachmentClass(attachment) {
10309            $__default["default"](this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
10310          };
10311          _proto.getTipElement = function getTipElement() {
10312            this.tip = this.tip || $__default["default"](this.config.template)[0];
10313            return this.tip;
10314          };
10315          _proto.setContent = function setContent() {
10316            var $tip = $__default["default"](this.getTipElement());
10317            this.setElementContent($tip.find(SELECTOR_TITLE), this.getTitle());
10318            var content = this._getContent();
10319            if (typeof content === "function") {
10320              content = content.call(this.element);
10321            }
10322            this.setElementContent($tip.find(SELECTOR_CONTENT), content);
10323            $tip.removeClass(CLASS_NAME_FADE + " " + CLASS_NAME_SHOW);
10324          };
10325          _proto._getContent = function _getContent() {
10326            return this.element.getAttribute("data-content") || this.config.content;
10327          };
10328          _proto._cleanTipClass = function _cleanTipClass() {
10329            var $tip = $__default["default"](this.getTipElement());
10330            var tabClass = $tip.attr("class").match(BSCLS_PREFIX_REGEX);
10331            if (tabClass !== null && tabClass.length > 0) {
10332              $tip.removeClass(tabClass.join(""));
10333            }
10334          };
10335          Popover3._jQueryInterface = function _jQueryInterface(config) {
10336            return this.each(function() {
10337              var data = $__default["default"](this).data(DATA_KEY);
10338              var _config = typeof config === "object" ? config : null;
10339              if (!data && /dispose|hide/.test(config)) {
10340                return;
10341              }
10342              if (!data) {
10343                data = new Popover3(this, _config);
10344                $__default["default"](this).data(DATA_KEY, data);
10345              }
10346              if (typeof config === "string") {
10347                if (typeof data[config] === "undefined") {
10348                  throw new TypeError('No method named "' + config + '"');
10349                }
10350                data[config]();
10351              }
10352            });
10353          };
10354          _createClass(Popover3, null, [{
10355            key: "VERSION",
10356            get: function get() {
10357              return VERSION;
10358            }
10359          }, {
10360            key: "Default",
10361            get: function get() {
10362              return Default;
10363            }
10364          }, {
10365            key: "NAME",
10366            get: function get() {
10367              return NAME;
10368            }
10369          }, {
10370            key: "DATA_KEY",
10371            get: function get() {
10372              return DATA_KEY;
10373            }
10374          }, {
10375            key: "Event",
10376            get: function get() {
10377              return Event;
10378            }
10379          }, {
10380            key: "EVENT_KEY",
10381            get: function get() {
10382              return EVENT_KEY;
10383            }
10384          }, {
10385            key: "DefaultType",
10386            get: function get() {
10387              return DefaultType;
10388            }
10389          }]);
10390          return Popover3;
10391        }(Tooltip__default["default"]);
10392        $__default["default"].fn[NAME] = Popover2._jQueryInterface;
10393        $__default["default"].fn[NAME].Constructor = Popover2;
10394        $__default["default"].fn[NAME].noConflict = function() {
10395          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
10396          return Popover2._jQueryInterface;
10397        };
10398        return Popover2;
10399      });
10400    }
10401  });
10402
10403  
vendor: 12,087 bytes, lines 10403-10661
10403// node_modules/bootstrap/js/dist/scrollspy.js
10404  var require_scrollspy = __commonJS({
10405    "node_modules/bootstrap/js/dist/scrollspy.js"(exports, module) {
10406      (function(global2, factory) {
10407        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.ScrollSpy = factory(global2.jQuery, global2.Util));
10408      })(exports, function($2, Util2) {
10409        "use strict";
10410        function _interopDefaultLegacy(e) {
10411          return e && typeof e === "object" && "default" in e ? e : { "default": e };
10412        }
10413        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
10414        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
10415        function _defineProperties(target, props) {
10416          for (var i2 = 0; i2 < props.length; i2++) {
10417            var descriptor = props[i2];
10418            descriptor.enumerable = descriptor.enumerable || false;
10419            descriptor.configurable = true;
10420            if ("value" in descriptor)
10421              descriptor.writable = true;
10422            Object.defineProperty(target, descriptor.key, descriptor);
10423          }
10424        }
10425        function _createClass(Constructor, protoProps, staticProps) {
10426          if (protoProps)
10427            _defineProperties(Constructor.prototype, protoProps);
10428          if (staticProps)
10429            _defineProperties(Constructor, staticProps);
10430          Object.defineProperty(Constructor, "prototype", {
10431            writable: false
10432          });
10433          return Constructor;
10434        }
10435        function _extends() {
10436          _extends = Object.assign ? Object.assign.bind() : function(target) {
10437            for (var i2 = 1; i2 < arguments.length; i2++) {
10438              var source = arguments[i2];
10439              for (var key in source) {
10440                if (Object.prototype.hasOwnProperty.call(source, key)) {
10441                  target[key] = source[key];
10442                }
10443              }
10444            }
10445            return target;
10446          };
10447          return _extends.apply(this, arguments);
10448        }
10449        var NAME = "scrollspy";
10450        var VERSION = "4.6.2";
10451        var DATA_KEY = "bs.scrollspy";
10452        var EVENT_KEY = "." + DATA_KEY;
10453        var DATA_API_KEY = ".data-api";
10454        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
10455        var CLASS_NAME_DROPDOWN_ITEM = "dropdown-item";
10456        var CLASS_NAME_ACTIVE = "active";
10457        var EVENT_ACTIVATE = "activate" + EVENT_KEY;
10458        var EVENT_SCROLL = "scroll" + EVENT_KEY;
10459        var EVENT_LOAD_DATA_API = "load" + EVENT_KEY + DATA_API_KEY;
10460        var METHOD_OFFSET = "offset";
10461        var METHOD_POSITION = "position";
10462        var SELECTOR_DATA_SPY = '[data-spy="scroll"]';
10463        var SELECTOR_NAV_LIST_GROUP = ".nav, .list-group";
10464        var SELECTOR_NAV_LINKS = ".nav-link";
10465        var SELECTOR_NAV_ITEMS = ".nav-item";
10466        var SELECTOR_LIST_ITEMS = ".list-group-item";
10467        var SELECTOR_DROPDOWN = ".dropdown";
10468        var SELECTOR_DROPDOWN_ITEMS = ".dropdown-item";
10469        var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
10470        var Default = {
10471          offset: 10,
10472          method: "auto",
10473          target: ""
10474        };
10475        var DefaultType = {
10476          offset: "number",
10477          method: "string",
10478          target: "(string|element)"
10479        };
10480        var ScrollSpy = /* @__PURE__ */ function() {
10481          function ScrollSpy2(element, config) {
10482            var _this = this;
10483            this._element = element;
10484            this._scrollElement = element.tagName === "BODY" ? window : element;
10485            this._config = this._getConfig(config);
10486            this._selector = this._config.target + " " + SELECTOR_NAV_LINKS + "," + (this._config.target + " " + SELECTOR_LIST_ITEMS + ",") + (this._config.target + " " + SELECTOR_DROPDOWN_ITEMS);
10487            this._offsets = [];
10488            this._targets = [];
10489            this._activeTarget = null;
10490            this._scrollHeight = 0;
10491            $__default["default"](this._scrollElement).on(EVENT_SCROLL, function(event) {
10492              return _this._process(event);
10493            });
10494            this.refresh();
10495            this._process();
10496          }
10497          var _proto = ScrollSpy2.prototype;
10498          _proto.refresh = function refresh() {
10499            var _this2 = this;
10500            var autoMethod = this._scrollElement === this._scrollElement.window ? METHOD_OFFSET : METHOD_POSITION;
10501            var offsetMethod = this._config.method === "auto" ? autoMethod : this._config.method;
10502            var offsetBase = offsetMethod === METHOD_POSITION ? this._getScrollTop() : 0;
10503            this._offsets = [];
10504            this._targets = [];
10505            this._scrollHeight = this._getScrollHeight();
10506            var targets = [].slice.call(document.querySelectorAll(this._selector));
10507            targets.map(function(element) {
10508              var target;
10509              var targetSelector = Util__default["default"].getSelectorFromElement(element);
10510              if (targetSelector) {
10511                target = document.querySelector(targetSelector);
10512              }
10513              if (target) {
10514                var targetBCR = target.getBoundingClientRect();
10515                if (targetBCR.width || targetBCR.height) {
10516                  return [$__default["default"](target)[offsetMethod]().top + offsetBase, targetSelector];
10517                }
10518              }
10519              return null;
10520            }).filter(Boolean).sort(function(a, b) {
10521              return a[0] - b[0];
10522            }).forEach(function(item) {
10523              _this2._offsets.push(item[0]);
10524              _this2._targets.push(item[1]);
10525            });
10526          };
10527          _proto.dispose = function dispose() {
10528            $__default["default"].removeData(this._element, DATA_KEY);
10529            $__default["default"](this._scrollElement).off(EVENT_KEY);
10530            this._element = null;
10531            this._scrollElement = null;
10532            this._config = null;
10533            this._selector = null;
10534            this._offsets = null;
10535            this._targets = null;
10536            this._activeTarget = null;
10537            this._scrollHeight = null;
10538          };
10539          _proto._getConfig = function _getConfig(config) {
10540            config = _extends({}, Default, typeof config === "object" && config ? config : {});
10541            if (typeof config.target !== "string" && Util__default["default"].isElement(config.target)) {
10542              var id = $__default["default"](config.target).attr("id");
10543              if (!id) {
10544                id = Util__default["default"].getUID(NAME);
10545                $__default["default"](config.target).attr("id", id);
10546              }
10547              config.target = "#" + id;
10548            }
10549            Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
10550            return config;
10551          };
10552          _proto._getScrollTop = function _getScrollTop() {
10553            return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
10554          };
10555          _proto._getScrollHeight = function _getScrollHeight() {
10556            return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
10557          };
10558          _proto._getOffsetHeight = function _getOffsetHeight() {
10559            return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
10560          };
10561          _proto._process = function _process() {
10562            var scrollTop = this._getScrollTop() + this._config.offset;
10563            var scrollHeight = this._getScrollHeight();
10564            var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
10565            if (this._scrollHeight !== scrollHeight) {
10566              this.refresh();
10567            }
10568            if (scrollTop >= maxScroll) {
10569              var target = this._targets[this._targets.length - 1];
10570              if (this._activeTarget !== target) {
10571                this._activate(target);
10572              }
10573              return;
10574            }
10575            if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
10576              this._activeTarget = null;
10577              this._clear();
10578              return;
10579            }
10580            for (var i2 = this._offsets.length; i2--; ) {
10581              var isActiveTarget = this._activeTarget !== this._targets[i2] && scrollTop >= this._offsets[i2] && (typeof this._offsets[i2 + 1] === "undefined" || scrollTop < this._offsets[i2 + 1]);
10582              if (isActiveTarget) {
10583                this._activate(this._targets[i2]);
10584              }
10585            }
10586          };
10587          _proto._activate = function _activate(target) {
10588            this._activeTarget = target;
10589            this._clear();
10590            var queries = this._selector.split(",").map(function(selector) {
10591              return selector + '[data-target="' + target + '"],' + selector + '[href="' + target + '"]';
10592            });
10593            var $link = $__default["default"]([].slice.call(document.querySelectorAll(queries.join(","))));
10594            if ($link.hasClass(CLASS_NAME_DROPDOWN_ITEM)) {
10595              $link.closest(SELECTOR_DROPDOWN).find(SELECTOR_DROPDOWN_TOGGLE).addClass(CLASS_NAME_ACTIVE);
10596              $link.addClass(CLASS_NAME_ACTIVE);
10597            } else {
10598              $link.addClass(CLASS_NAME_ACTIVE);
10599              $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_LINKS + ", " + SELECTOR_LIST_ITEMS).addClass(CLASS_NAME_ACTIVE);
10600              $link.parents(SELECTOR_NAV_LIST_GROUP).prev(SELECTOR_NAV_ITEMS).children(SELECTOR_NAV_LINKS).addClass(CLASS_NAME_ACTIVE);
10601            }
10602            $__default["default"](this._scrollElement).trigger(EVENT_ACTIVATE, {
10603              relatedTarget: target
10604            });
10605          };
10606          _proto._clear = function _clear() {
10607            [].slice.call(document.querySelectorAll(this._selector)).filter(function(node) {
10608              return node.classList.contains(CLASS_NAME_ACTIVE);
10609            }).forEach(function(node) {
10610              return node.classList.remove(CLASS_NAME_ACTIVE);
10611            });
10612          };
10613          ScrollSpy2._jQueryInterface = function _jQueryInterface(config) {
10614            return this.each(function() {
10615              var data = $__default["default"](this).data(DATA_KEY);
10616              var _config = typeof config === "object" && config;
10617              if (!data) {
10618                data = new ScrollSpy2(this, _config);
10619                $__default["default"](this).data(DATA_KEY, data);
10620              }
10621              if (typeof config === "string") {
10622                if (typeof data[config] === "undefined") {
10623                  throw new TypeError('No method named "' + config + '"');
10624                }
10625                data[config]();
10626              }
10627            });
10628          };
10629          _createClass(ScrollSpy2, null, [{
10630            key: "VERSION",
10631            get: function get() {
10632              return VERSION;
10633            }
10634          }, {
10635            key: "Default",
10636            get: function get() {
10637              return Default;
10638            }
10639          }]);
10640          return ScrollSpy2;
10641        }();
10642        $__default["default"](window).on(EVENT_LOAD_DATA_API, function() {
10643          var scrollSpys = [].slice.call(document.querySelectorAll(SELECTOR_DATA_SPY));
10644          var scrollSpysLength = scrollSpys.length;
10645          for (var i2 = scrollSpysLength; i2--; ) {
10646            var $spy = $__default["default"](scrollSpys[i2]);
10647            ScrollSpy._jQueryInterface.call($spy, $spy.data());
10648          }
10649        });
10650        $__default["default"].fn[NAME] = ScrollSpy._jQueryInterface;
10651        $__default["default"].fn[NAME].Constructor = ScrollSpy;
10652        $__default["default"].fn[NAME].noConflict = function() {
10653          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
10654          return ScrollSpy._jQueryInterface;
10655        };
10656        return ScrollSpy;
10657      });
10658    }
10659  });
10660
10661  
vendor: 9,665 bytes, lines 10661-10861
10661// node_modules/bootstrap/js/dist/tab.js
10662  var require_tab = __commonJS({
10663    "node_modules/bootstrap/js/dist/tab.js"(exports, module) {
10664      (function(global2, factory) {
10665        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Tab = factory(global2.jQuery, global2.Util));
10666      })(exports, function($2, Util2) {
10667        "use strict";
10668        function _interopDefaultLegacy(e) {
10669          return e && typeof e === "object" && "default" in e ? e : { "default": e };
10670        }
10671        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
10672        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
10673        function _defineProperties(target, props) {
10674          for (var i2 = 0; i2 < props.length; i2++) {
10675            var descriptor = props[i2];
10676            descriptor.enumerable = descriptor.enumerable || false;
10677            descriptor.configurable = true;
10678            if ("value" in descriptor)
10679              descriptor.writable = true;
10680            Object.defineProperty(target, descriptor.key, descriptor);
10681          }
10682        }
10683        function _createClass(Constructor, protoProps, staticProps) {
10684          if (protoProps)
10685            _defineProperties(Constructor.prototype, protoProps);
10686          if (staticProps)
10687            _defineProperties(Constructor, staticProps);
10688          Object.defineProperty(Constructor, "prototype", {
10689            writable: false
10690          });
10691          return Constructor;
10692        }
10693        var NAME = "tab";
10694        var VERSION = "4.6.2";
10695        var DATA_KEY = "bs.tab";
10696        var EVENT_KEY = "." + DATA_KEY;
10697        var DATA_API_KEY = ".data-api";
10698        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
10699        var CLASS_NAME_DROPDOWN_MENU = "dropdown-menu";
10700        var CLASS_NAME_ACTIVE = "active";
10701        var CLASS_NAME_DISABLED = "disabled";
10702        var CLASS_NAME_FADE = "fade";
10703        var CLASS_NAME_SHOW = "show";
10704        var EVENT_HIDE = "hide" + EVENT_KEY;
10705        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
10706        var EVENT_SHOW = "show" + EVENT_KEY;
10707        var EVENT_SHOWN = "shown" + EVENT_KEY;
10708        var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
10709        var SELECTOR_DROPDOWN = ".dropdown";
10710        var SELECTOR_NAV_LIST_GROUP = ".nav, .list-group";
10711        var SELECTOR_ACTIVE = ".active";
10712        var SELECTOR_ACTIVE_UL = "> li > .active";
10713        var SELECTOR_DATA_TOGGLE = '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]';
10714        var SELECTOR_DROPDOWN_TOGGLE = ".dropdown-toggle";
10715        var SELECTOR_DROPDOWN_ACTIVE_CHILD = "> .dropdown-menu .active";
10716        var Tab3 = /* @__PURE__ */ function() {
10717          function Tab4(element) {
10718            this._element = element;
10719          }
10720          var _proto = Tab4.prototype;
10721          _proto.show = function show() {
10722            var _this = this;
10723            if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $__default["default"](this._element).hasClass(CLASS_NAME_ACTIVE) || $__default["default"](this._element).hasClass(CLASS_NAME_DISABLED) || this._element.hasAttribute("disabled")) {
10724              return;
10725            }
10726            var target;
10727            var previous;
10728            var listElement = $__default["default"](this._element).closest(SELECTOR_NAV_LIST_GROUP)[0];
10729            var selector = Util__default["default"].getSelectorFromElement(this._element);
10730            if (listElement) {
10731              var itemSelector = listElement.nodeName === "UL" || listElement.nodeName === "OL" ? SELECTOR_ACTIVE_UL : SELECTOR_ACTIVE;
10732              previous = $__default["default"].makeArray($__default["default"](listElement).find(itemSelector));
10733              previous = previous[previous.length - 1];
10734            }
10735            var hideEvent = $__default["default"].Event(EVENT_HIDE, {
10736              relatedTarget: this._element
10737            });
10738            var showEvent = $__default["default"].Event(EVENT_SHOW, {
10739              relatedTarget: previous
10740            });
10741            if (previous) {
10742              $__default["default"](previous).trigger(hideEvent);
10743            }
10744            $__default["default"](this._element).trigger(showEvent);
10745            if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
10746              return;
10747            }
10748            if (selector) {
10749              target = document.querySelector(selector);
10750            }
10751            this._activate(this._element, listElement);
10752            var complete = function complete2() {
10753              var hiddenEvent = $__default["default"].Event(EVENT_HIDDEN, {
10754                relatedTarget: _this._element
10755              });
10756              var shownEvent = $__default["default"].Event(EVENT_SHOWN, {
10757                relatedTarget: previous
10758              });
10759              $__default["default"](previous).trigger(hiddenEvent);
10760              $__default["default"](_this._element).trigger(shownEvent);
10761            };
10762            if (target) {
10763              this._activate(target, target.parentNode, complete);
10764            } else {
10765              complete();
10766            }
10767          };
10768          _proto.dispose = function dispose() {
10769            $__default["default"].removeData(this._element, DATA_KEY);
10770            this._element = null;
10771          };
10772          _proto._activate = function _activate(element, container, callback) {
10773            var _this2 = this;
10774            var activeElements = container && (container.nodeName === "UL" || container.nodeName === "OL") ? $__default["default"](container).find(SELECTOR_ACTIVE_UL) : $__default["default"](container).children(SELECTOR_ACTIVE);
10775            var active = activeElements[0];
10776            var isTransitioning = callback && active && $__default["default"](active).hasClass(CLASS_NAME_FADE);
10777            var complete = function complete2() {
10778              return _this2._transitionComplete(element, active, callback);
10779            };
10780            if (active && isTransitioning) {
10781              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(active);
10782              $__default["default"](active).removeClass(CLASS_NAME_SHOW).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
10783            } else {
10784              complete();
10785            }
10786          };
10787          _proto._transitionComplete = function _transitionComplete(element, active, callback) {
10788            if (active) {
10789              $__default["default"](active).removeClass(CLASS_NAME_ACTIVE);
10790              var dropdownChild = $__default["default"](active.parentNode).find(SELECTOR_DROPDOWN_ACTIVE_CHILD)[0];
10791              if (dropdownChild) {
10792                $__default["default"](dropdownChild).removeClass(CLASS_NAME_ACTIVE);
10793              }
10794              if (active.getAttribute("role") === "tab") {
10795                active.setAttribute("aria-selected", false);
10796              }
10797            }
10798            $__default["default"](element).addClass(CLASS_NAME_ACTIVE);
10799            if (element.getAttribute("role") === "tab") {
10800              element.setAttribute("aria-selected", true);
10801            }
10802            Util__default["default"].reflow(element);
10803            if (element.classList.contains(CLASS_NAME_FADE)) {
10804              element.classList.add(CLASS_NAME_SHOW);
10805            }
10806            var parent = element.parentNode;
10807            if (parent && parent.nodeName === "LI") {
10808              parent = parent.parentNode;
10809            }
10810            if (parent && $__default["default"](parent).hasClass(CLASS_NAME_DROPDOWN_MENU)) {
10811              var dropdownElement = $__default["default"](element).closest(SELECTOR_DROPDOWN)[0];
10812              if (dropdownElement) {
10813                var dropdownToggleList = [].slice.call(dropdownElement.querySelectorAll(SELECTOR_DROPDOWN_TOGGLE));
10814                $__default["default"](dropdownToggleList).addClass(CLASS_NAME_ACTIVE);
10815              }
10816              element.setAttribute("aria-expanded", true);
10817            }
10818            if (callback) {
10819              callback();
10820            }
10821          };
10822          Tab4._jQueryInterface = function _jQueryInterface(config) {
10823            return this.each(function() {
10824              var $this = $__default["default"](this);
10825              var data = $this.data(DATA_KEY);
10826              if (!data) {
10827                data = new Tab4(this);
10828                $this.data(DATA_KEY, data);
10829              }
10830              if (typeof config === "string") {
10831                if (typeof data[config] === "undefined") {
10832                  throw new TypeError('No method named "' + config + '"');
10833                }
10834                data[config]();
10835              }
10836            });
10837          };
10838          _createClass(Tab4, null, [{
10839            key: "VERSION",
10840            get: function get() {
10841              return VERSION;
10842            }
10843          }]);
10844          return Tab4;
10845        }();
10846        $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function(event) {
10847          event.preventDefault();
10848          Tab3._jQueryInterface.call($__default["default"](this), "show");
10849        });
10850        $__default["default"].fn[NAME] = Tab3._jQueryInterface;
10851        $__default["default"].fn[NAME].Constructor = Tab3;
10852        $__default["default"].fn[NAME].noConflict = function() {
10853          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
10854          return Tab3._jQueryInterface;
10855        };
10856        return Tab3;
10857      });
10858    }
10859  });
10860
10861  
vendor: 8,732 bytes, lines 10861-11067
10861// node_modules/bootstrap/js/dist/toast.js
10862  var require_toast = __commonJS({
10863    "node_modules/bootstrap/js/dist/toast.js"(exports, module) {
10864      (function(global2, factory) {
10865        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory(require_jquery(), require_util()) : typeof define === "function" && define.amd ? define(["jquery", "./util"], factory) : (global2 = typeof globalThis !== "undefined" ? globalThis : global2 || self, global2.Toast = factory(global2.jQuery, global2.Util));
10866      })(exports, function($2, Util2) {
10867        "use strict";
10868        function _interopDefaultLegacy(e) {
10869          return e && typeof e === "object" && "default" in e ? e : { "default": e };
10870        }
10871        var $__default = /* @__PURE__ */ _interopDefaultLegacy($2);
10872        var Util__default = /* @__PURE__ */ _interopDefaultLegacy(Util2);
10873        function _defineProperties(target, props) {
10874          for (var i2 = 0; i2 < props.length; i2++) {
10875            var descriptor = props[i2];
10876            descriptor.enumerable = descriptor.enumerable || false;
10877            descriptor.configurable = true;
10878            if ("value" in descriptor)
10879              descriptor.writable = true;
10880            Object.defineProperty(target, descriptor.key, descriptor);
10881          }
10882        }
10883        function _createClass(Constructor, protoProps, staticProps) {
10884          if (protoProps)
10885            _defineProperties(Constructor.prototype, protoProps);
10886          if (staticProps)
10887            _defineProperties(Constructor, staticProps);
10888          Object.defineProperty(Constructor, "prototype", {
10889            writable: false
10890          });
10891          return Constructor;
10892        }
10893        function _extends() {
10894          _extends = Object.assign ? Object.assign.bind() : function(target) {
10895            for (var i2 = 1; i2 < arguments.length; i2++) {
10896              var source = arguments[i2];
10897              for (var key in source) {
10898                if (Object.prototype.hasOwnProperty.call(source, key)) {
10899                  target[key] = source[key];
10900                }
10901              }
10902            }
10903            return target;
10904          };
10905          return _extends.apply(this, arguments);
10906        }
10907        var NAME = "toast";
10908        var VERSION = "4.6.2";
10909        var DATA_KEY = "bs.toast";
10910        var EVENT_KEY = "." + DATA_KEY;
10911        var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
10912        var CLASS_NAME_FADE = "fade";
10913        var CLASS_NAME_HIDE = "hide";
10914        var CLASS_NAME_SHOW = "show";
10915        var CLASS_NAME_SHOWING = "showing";
10916        var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
10917        var EVENT_HIDE = "hide" + EVENT_KEY;
10918        var EVENT_HIDDEN = "hidden" + EVENT_KEY;
10919        var EVENT_SHOW = "show" + EVENT_KEY;
10920        var EVENT_SHOWN = "shown" + EVENT_KEY;
10921        var SELECTOR_DATA_DISMISS = '[data-dismiss="toast"]';
10922        var Default = {
10923          animation: true,
10924          autohide: true,
10925          delay: 500
10926        };
10927        var DefaultType = {
10928          animation: "boolean",
10929          autohide: "boolean",
10930          delay: "number"
10931        };
10932        var Toast2 = /* @__PURE__ */ function() {
10933          function Toast3(element, config) {
10934            this._element = element;
10935            this._config = this._getConfig(config);
10936            this._timeout = null;
10937            this._setListeners();
10938          }
10939          var _proto = Toast3.prototype;
10940          _proto.show = function show() {
10941            var _this = this;
10942            var showEvent = $__default["default"].Event(EVENT_SHOW);
10943            $__default["default"](this._element).trigger(showEvent);
10944            if (showEvent.isDefaultPrevented()) {
10945              return;
10946            }
10947            this._clearTimeout();
10948            if (this._config.animation) {
10949              this._element.classList.add(CLASS_NAME_FADE);
10950            }
10951            var complete = function complete2() {
10952              _this._element.classList.remove(CLASS_NAME_SHOWING);
10953              _this._element.classList.add(CLASS_NAME_SHOW);
10954              $__default["default"](_this._element).trigger(EVENT_SHOWN);
10955              if (_this._config.autohide) {
10956                _this._timeout = setTimeout(function() {
10957                  _this.hide();
10958                }, _this._config.delay);
10959              }
10960            };
10961            this._element.classList.remove(CLASS_NAME_HIDE);
10962            Util__default["default"].reflow(this._element);
10963            this._element.classList.add(CLASS_NAME_SHOWING);
10964            if (this._config.animation) {
10965              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
10966              $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
10967            } else {
10968              complete();
10969            }
10970          };
10971          _proto.hide = function hide() {
10972            if (!this._element.classList.contains(CLASS_NAME_SHOW)) {
10973              return;
10974            }
10975            var hideEvent = $__default["default"].Event(EVENT_HIDE);
10976            $__default["default"](this._element).trigger(hideEvent);
10977            if (hideEvent.isDefaultPrevented()) {
10978              return;
10979            }
10980            this._close();
10981          };
10982          _proto.dispose = function dispose() {
10983            this._clearTimeout();
10984            if (this._element.classList.contains(CLASS_NAME_SHOW)) {
10985              this._element.classList.remove(CLASS_NAME_SHOW);
10986            }
10987            $__default["default"](this._element).off(EVENT_CLICK_DISMISS);
10988            $__default["default"].removeData(this._element, DATA_KEY);
10989            this._element = null;
10990            this._config = null;
10991          };
10992          _proto._getConfig = function _getConfig(config) {
10993            config = _extends({}, Default, $__default["default"](this._element).data(), typeof config === "object" && config ? config : {});
10994            Util__default["default"].typeCheckConfig(NAME, config, this.constructor.DefaultType);
10995            return config;
10996          };
10997          _proto._setListeners = function _setListeners() {
10998            var _this2 = this;
10999            $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function() {
11000              return _this2.hide();
11001            });
11002          };
11003          _proto._close = function _close() {
11004            var _this3 = this;
11005            var complete = function complete2() {
11006              _this3._element.classList.add(CLASS_NAME_HIDE);
11007              $__default["default"](_this3._element).trigger(EVENT_HIDDEN);
11008            };
11009            this._element.classList.remove(CLASS_NAME_SHOW);
11010            if (this._config.animation) {
11011              var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
11012              $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);
11013            } else {
11014              complete();
11015            }
11016          };
11017          _proto._clearTimeout = function _clearTimeout() {
11018            clearTimeout(this._timeout);
11019            this._timeout = null;
11020          };
11021          Toast3._jQueryInterface = function _jQueryInterface(config) {
11022            return this.each(function() {
11023              var $element = $__default["default"](this);
11024              var data = $element.data(DATA_KEY);
11025              var _config = typeof config === "object" && config;
11026              if (!data) {
11027                data = new Toast3(this, _config);
11028                $element.data(DATA_KEY, data);
11029              }
11030              if (typeof config === "string") {
11031                if (typeof data[config] === "undefined") {
11032                  throw new TypeError('No method named "' + config + '"');
11033                }
11034                data[config](this);
11035              }
11036            });
11037          };
11038          _createClass(Toast3, null, [{
11039            key: "VERSION",
11040            get: function get() {
11041              return VERSION;
11042            }
11043          }, {
11044            key: "DefaultType",
11045            get: function get() {
11046              return DefaultType;
11047            }
11048          }, {
11049            key: "Default",
11050            get: function get() {
11051              return Default;
11052            }
11053          }]);
11054          return Toast3;
11055        }();
11056        $__default["default"].fn[NAME] = Toast2._jQueryInterface;
11057        $__default["default"].fn[NAME].Constructor = Toast2;
11058        $__default["default"].fn[NAME].noConflict = function() {
11059          $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
11060          return Toast2._jQueryInterface;
11061        };
11062        return Toast2;
11063      });
11064    }
11065  });
11066
11067  
vendor: 152,271 bytes, lines 11067-14975
11067// node_modules/moment/moment.js
11068  var require_moment = __commonJS({
11069    "node_modules/moment/moment.js"(exports, module) {
11070      (function(global2, factory) {
11071        typeof exports === "object" && typeof module !== "undefined" ? module.exports = factory() : typeof define === "function" && define.amd ? define(factory) : global2.moment = factory();
11072      })(exports, function() {
11073        "use strict";
11074        var hookCallback;
11075        function hooks() {
11076          return hookCallback.apply(null, arguments);
11077        }
11078        function setHookCallback(callback) {
11079          hookCallback = callback;
11080        }
11081        function isArray(input) {
11082          return input instanceof Array || Object.prototype.toString.call(input) === "[object Array]";
11083        }
11084        function isObject2(input) {
11085          return input != null && Object.prototype.toString.call(input) === "[object Object]";
11086        }
11087        function hasOwnProp(a, b) {
11088          return Object.prototype.hasOwnProperty.call(a, b);
11089        }
11090        function isObjectEmpty(obj) {
11091          if (Object.getOwnPropertyNames) {
11092            return Object.getOwnPropertyNames(obj).length === 0;
11093          } else {
11094            var k;
11095            for (k in obj) {
11096              if (hasOwnProp(obj, k)) {
11097                return false;
11098              }
11099            }
11100            return true;
11101          }
11102        }
11103        function isUndefined(input) {
11104          return input === void 0;
11105        }
11106        function isNumber(input) {
11107          return typeof input === "number" || Object.prototype.toString.call(input) === "[object Number]";
11108        }
11109        function isDate(input) {
11110          return input instanceof Date || Object.prototype.toString.call(input) === "[object Date]";
11111        }
11112        function map2(arr, fn) {
11113          var res = [], i2, arrLen = arr.length;
11114          for (i2 = 0; i2 < arrLen; ++i2) {
11115            res.push(fn(arr[i2], i2));
11116          }
11117          return res;
11118        }
11119        function extend(a, b) {
11120          for (var i2 in b) {
11121            if (hasOwnProp(b, i2)) {
11122              a[i2] = b[i2];
11123            }
11124          }
11125          if (hasOwnProp(b, "toString")) {
11126            a.toString = b.toString;
11127          }
11128          if (hasOwnProp(b, "valueOf")) {
11129            a.valueOf = b.valueOf;
11130          }
11131          return a;
11132        }
11133        function createUTC(input, format3, locale2, strict) {
11134          return createLocalOrUTC(input, format3, locale2, strict, true).utc();
11135        }
11136        function defaultParsingFlags() {
11137          return {
11138            empty: false,
11139            unusedTokens: [],
11140            unusedInput: [],
11141            overflow: -2,
11142            charsLeftOver: 0,
11143            nullInput: false,
11144            invalidEra: null,
11145            invalidMonth: null,
11146            invalidFormat: false,
11147            userInvalidated: false,
11148            iso: false,
11149            parsedDateParts: [],
11150            era: null,
11151            meridiem: null,
11152            rfc2822: false,
11153            weekdayMismatch: false
11154          };
11155        }
11156        function getParsingFlags(m) {
11157          if (m._pf == null) {
11158            m._pf = defaultParsingFlags();
11159          }
11160          return m._pf;
11161        }
11162        var some;
11163        if (Array.prototype.some) {
11164          some = Array.prototype.some;
11165        } else {
11166          some = function(fun) {
11167            var t = Object(this), len = t.length >>> 0, i2;
11168            for (i2 = 0; i2 < len; i2++) {
11169              if (i2 in t && fun.call(this, t[i2], i2, t)) {
11170                return true;
11171              }
11172            }
11173            return false;
11174          };
11175        }
11176        function isValid(m) {
11177          if (m._isValid == null) {
11178            var flags = getParsingFlags(m), parsedParts = some.call(flags.parsedDateParts, function(i2) {
11179              return i2 != null;
11180            }), isNowValid = !isNaN(m._d.getTime()) && flags.overflow < 0 && !flags.empty && !flags.invalidEra && !flags.invalidMonth && !flags.invalidWeekday && !flags.weekdayMismatch && !flags.nullInput && !flags.invalidFormat && !flags.userInvalidated && (!flags.meridiem || flags.meridiem && parsedParts);
11181            if (m._strict) {
11182              isNowValid = isNowValid && flags.charsLeftOver === 0 && flags.unusedTokens.length === 0 && flags.bigHour === void 0;
11183            }
11184            if (Object.isFrozen == null || !Object.isFrozen(m)) {
11185              m._isValid = isNowValid;
11186            } else {
11187              return isNowValid;
11188            }
11189          }
11190          return m._isValid;
11191        }
11192        function createInvalid(flags) {
11193          var m = createUTC(NaN);
11194          if (flags != null) {
11195            extend(getParsingFlags(m), flags);
11196          } else {
11197            getParsingFlags(m).userInvalidated = true;
11198          }
11199          return m;
11200        }
11201        var momentProperties = hooks.momentProperties = [], updateInProgress = false;
11202        function copyConfig(to2, from2) {
11203          var i2, prop, val, momentPropertiesLen = momentProperties.length;
11204          if (!isUndefined(from2._isAMomentObject)) {
11205            to2._isAMomentObject = from2._isAMomentObject;
11206          }
11207          if (!isUndefined(from2._i)) {
11208            to2._i = from2._i;
11209          }
11210          if (!isUndefined(from2._f)) {
11211            to2._f = from2._f;
11212          }
11213          if (!isUndefined(from2._l)) {
11214            to2._l = from2._l;
11215          }
11216          if (!isUndefined(from2._strict)) {
11217            to2._strict = from2._strict;
11218          }
11219          if (!isUndefined(from2._tzm)) {
11220            to2._tzm = from2._tzm;
11221          }
11222          if (!isUndefined(from2._isUTC)) {
11223            to2._isUTC = from2._isUTC;
11224          }
11225          if (!isUndefined(from2._offset)) {
11226            to2._offset = from2._offset;
11227          }
11228          if (!isUndefined(from2._pf)) {
11229            to2._pf = getParsingFlags(from2);
11230          }
11231          if (!isUndefined(from2._locale)) {
11232            to2._locale = from2._locale;
11233          }
11234          if (momentPropertiesLen > 0) {
11235            for (i2 = 0; i2 < momentPropertiesLen; i2++) {
11236              prop = momentProperties[i2];
11237              val = from2[prop];
11238              if (!isUndefined(val)) {
11239                to2[prop] = val;
11240              }
11241            }
11242          }
11243          return to2;
11244        }
11245        function Moment(config) {
11246          copyConfig(this, config);
11247          this._d = new Date(config._d != null ? config._d.getTime() : NaN);
11248          if (!this.isValid()) {
11249            this._d = new Date(NaN);
11250          }
11251          if (updateInProgress === false) {
11252            updateInProgress = true;
11253            hooks.updateOffset(this);
11254            updateInProgress = false;
11255          }
11256        }
11257        function isMoment(obj) {
11258          return obj instanceof Moment || obj != null && obj._isAMomentObject != null;
11259        }
11260        function warn(msg) {
11261          if (hooks.suppressDeprecationWarnings === false && typeof console !== "undefined" && console.warn) {
11262            console.warn("Deprecation warning: " + msg);
11263          }
11264        }
11265        function deprecate(msg, fn) {
11266          var firstTime = true;
11267          return extend(function() {
11268            if (hooks.deprecationHandler != null) {
11269              hooks.deprecationHandler(null, msg);
11270            }
11271            if (firstTime) {
11272              var args = [], arg, i2, key, argLen = arguments.length;
11273              for (i2 = 0; i2 < argLen; i2++) {
11274                arg = "";
11275                if (typeof arguments[i2] === "object") {
11276                  arg += "\n[" + i2 + "] ";
11277                  for (key in arguments[0]) {
11278                    if (hasOwnProp(arguments[0], key)) {
11279                      arg += key + ": " + arguments[0][key] + ", ";
11280                    }
11281                  }
11282                  arg = arg.slice(0, -2);
11283                } else {
11284                  arg = arguments[i2];
11285                }
11286                args.push(arg);
11287              }
11288              warn(
11289                msg + "\nArguments: " + Array.prototype.slice.call(args).join("") + "\n" + new Error().stack
11290              );
11291              firstTime = false;
11292            }
11293            return fn.apply(this, arguments);
11294          }, fn);
11295        }
11296        var deprecations = {};
11297        function deprecateSimple(name2, msg) {
11298          if (hooks.deprecationHandler != null) {
11299            hooks.deprecationHandler(name2, msg);
11300          }
11301          if (!deprecations[name2]) {
11302            warn(msg);
11303            deprecations[name2] = true;
11304          }
11305        }
11306        hooks.suppressDeprecationWarnings = false;
11307        hooks.deprecationHandler = null;
11308        function isFunction(input) {
11309          return typeof Function !== "undefined" && input instanceof Function || Object.prototype.toString.call(input) === "[object Function]";
11310        }
11311        function set(config) {
11312          var prop, i2;
11313          for (i2 in config) {
11314            if (hasOwnProp(config, i2)) {
11315              prop = config[i2];
11316              if (isFunction(prop)) {
11317                this[i2] = prop;
11318              } else {
11319                this["_" + i2] = prop;
11320              }
11321            }
11322          }
11323          this._config = config;
11324          this._dayOfMonthOrdinalParseLenient = new RegExp(
11325            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) + "|" + /\d{1,2}/.source
11326          );
11327        }
11328        function mergeConfigs(parentConfig, childConfig) {
11329          var res = extend({}, parentConfig), prop;
11330          for (prop in childConfig) {
11331            if (hasOwnProp(childConfig, prop)) {
11332              if (isObject2(parentConfig[prop]) && isObject2(childConfig[prop])) {
11333                res[prop] = {};
11334                extend(res[prop], parentConfig[prop]);
11335                extend(res[prop], childConfig[prop]);
11336              } else if (childConfig[prop] != null) {
11337                res[prop] = childConfig[prop];
11338              } else {
11339                delete res[prop];
11340              }
11341            }
11342          }
11343          for (prop in parentConfig) {
11344            if (hasOwnProp(parentConfig, prop) && !hasOwnProp(childConfig, prop) && isObject2(parentConfig[prop])) {
11345              res[prop] = extend({}, res[prop]);
11346            }
11347          }
11348          return res;
11349        }
11350        function Locale(config) {
11351          if (config != null) {
11352            this.set(config);
11353          }
11354        }
11355        var keys;
11356        if (Object.keys) {
11357          keys = Object.keys;
11358        } else {
11359          keys = function(obj) {
11360            var i2, res = [];
11361            for (i2 in obj) {
11362              if (hasOwnProp(obj, i2)) {
11363                res.push(i2);
11364              }
11365            }
11366            return res;
11367          };
11368        }
11369        var defaultCalendar = {
11370          sameDay: "[Today at] LT",
11371          nextDay: "[Tomorrow at] LT",
11372          nextWeek: "dddd [at] LT",
11373          lastDay: "[Yesterday at] LT",
11374          lastWeek: "[Last] dddd [at] LT",
11375          sameElse: "L"
11376        };
11377        function calendar(key, mom, now2) {
11378          var output = this._calendar[key] || this._calendar["sameElse"];
11379          return isFunction(output) ? output.call(mom, now2) : output;
11380        }
11381        function zeroFill(number, targetLength, forceSign) {
11382          var absNumber = "" + Math.abs(number), zerosToFill = targetLength - absNumber.length, sign2 = number >= 0;
11383          return (sign2 ? forceSign ? "+" : "" : "-") + Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
11384        }
11385        var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g, localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g, formatFunctions = {}, formatTokenFunctions = {};
11386        function addFormatToken(token2, padded, ordinal2, callback) {
11387          var func = callback;
11388          if (typeof callback === "string") {
11389            func = function() {
11390              return this[callback]();
11391            };
11392          }
11393          if (token2) {
11394            formatTokenFunctions[token2] = func;
11395          }
11396          if (padded) {
11397            formatTokenFunctions[padded[0]] = function() {
11398              return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
11399            };
11400          }
11401          if (ordinal2) {
11402            formatTokenFunctions[ordinal2] = function() {
11403              return this.localeData().ordinal(
11404                func.apply(this, arguments),
11405                token2
11406              );
11407            };
11408          }
11409        }
11410        function removeFormattingTokens(input) {
11411          if (input.match(/\[[\s\S]/)) {
11412            return input.replace(/^\[|\]$/g, "");
11413          }
11414          return input.replace(/\\/g, "");
11415        }
11416        function makeFormatFunction(format3) {
11417          var array = format3.match(formattingTokens), i2, length2;
11418          for (i2 = 0, length2 = array.length; i2 < length2; i2++) {
11419            if (formatTokenFunctions[array[i2]]) {
11420              array[i2] = formatTokenFunctions[array[i2]];
11421            } else {
11422              array[i2] = removeFormattingTokens(array[i2]);
11423            }
11424          }
11425          return function(mom) {
11426            var output = "", i3;
11427            for (i3 = 0; i3 < length2; i3++) {
11428              output += isFunction(array[i3]) ? array[i3].call(mom, format3) : array[i3];
11429            }
11430            return output;
11431          };
11432        }
11433        function formatMoment(m, format3) {
11434          if (!m.isValid()) {
11435            return m.localeData().invalidDate();
11436          }
11437          format3 = expandFormat(format3, m.localeData());
11438          formatFunctions[format3] = formatFunctions[format3] || makeFormatFunction(format3);
11439          return formatFunctions[format3](m);
11440        }
11441        function expandFormat(format3, locale2) {
11442          var i2 = 5;
11443          function replaceLongDateFormatTokens(input) {
11444            return locale2.longDateFormat(input) || input;
11445          }
11446          localFormattingTokens.lastIndex = 0;
11447          while (i2 >= 0 && localFormattingTokens.test(format3)) {
11448            format3 = format3.replace(
11449              localFormattingTokens,
11450              replaceLongDateFormatTokens
11451            );
11452            localFormattingTokens.lastIndex = 0;
11453            i2 -= 1;
11454          }
11455          return format3;
11456        }
11457        var defaultLongDateFormat = {
11458          LTS: "h:mm:ss A",
11459          LT: "h:mm A",
11460          L: "MM/DD/YYYY",
11461          LL: "MMMM D, YYYY",
11462          LLL: "MMMM D, YYYY h:mm A",
11463          LLLL: "dddd, MMMM D, YYYY h:mm A"
11464        };
11465        function longDateFormat(key) {
11466          var format3 = this._longDateFormat[key], formatUpper = this._longDateFormat[key.toUpperCase()];
11467          if (format3 || !formatUpper) {
11468            return format3;
11469          }
11470          this._longDateFormat[key] = formatUpper.match(formattingTokens).map(function(tok) {
11471            if (tok === "MMMM" || tok === "MM" || tok === "DD" || tok === "dddd") {
11472              return tok.slice(1);
11473            }
11474            return tok;
11475          }).join("");
11476          return this._longDateFormat[key];
11477        }
11478        var defaultInvalidDate = "Invalid date";
11479        function invalidDate() {
11480          return this._invalidDate;
11481        }
11482        var defaultOrdinal = "%d", defaultDayOfMonthOrdinalParse = /\d{1,2}/;
11483        function ordinal(number) {
11484          return this._ordinal.replace("%d", number);
11485        }
11486        var defaultRelativeTime = {
11487          future: "in %s",
11488          past: "%s ago",
11489          s: "a few seconds",
11490          ss: "%d seconds",
11491          m: "a minute",
11492          mm: "%d minutes",
11493          h: "an hour",
11494          hh: "%d hours",
11495          d: "a day",
11496          dd: "%d days",
11497          w: "a week",
11498          ww: "%d weeks",
11499          M: "a month",
11500          MM: "%d months",
11501          y: "a year",
11502          yy: "%d years"
11503        };
11504        function relativeTime(number, withoutSuffix, string, isFuture) {
11505          var output = this._relativeTime[string];
11506          return isFunction(output) ? output(number, withoutSuffix, string, isFuture) : output.replace(/%d/i, number);
11507        }
11508        function pastFuture(diff2, output) {
11509          var format3 = this._relativeTime[diff2 > 0 ? "future" : "past"];
11510          return isFunction(format3) ? format3(output) : format3.replace(/%s/i, output);
11511        }
11512        var aliases = {};
11513        function addUnitAlias(unit, shorthand) {
11514          var lowerCase = unit.toLowerCase();
11515          aliases[lowerCase] = aliases[lowerCase + "s"] = aliases[shorthand] = unit;
11516        }
11517        function normalizeUnits(units) {
11518          return typeof units === "string" ? aliases[units] || aliases[units.toLowerCase()] : void 0;
11519        }
11520        function normalizeObjectUnits(inputObject) {
11521          var normalizedInput = {}, normalizedProp, prop;
11522          for (prop in inputObject) {
11523            if (hasOwnProp(inputObject, prop)) {
11524              normalizedProp = normalizeUnits(prop);
11525              if (normalizedProp) {
11526                normalizedInput[normalizedProp] = inputObject[prop];
11527              }
11528            }
11529          }
11530          return normalizedInput;
11531        }
11532        var priorities = {};
11533        function addUnitPriority(unit, priority) {
11534          priorities[unit] = priority;
11535        }
11536        function getPrioritizedUnits(unitsObj) {
11537          var units = [], u;
11538          for (u in unitsObj) {
11539            if (hasOwnProp(unitsObj, u)) {
11540              units.push({ unit: u, priority: priorities[u] });
11541            }
11542          }
11543          units.sort(function(a, b) {
11544            return a.priority - b.priority;
11545          });
11546          return units;
11547        }
11548        function isLeapYear(year) {
11549          return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;
11550        }
11551        function absFloor(number) {
11552          if (number < 0) {
11553            return Math.ceil(number) || 0;
11554          } else {
11555            return Math.floor(number);
11556          }
11557        }
11558        function toInt(argumentForCoercion) {
11559          var coercedNumber = +argumentForCoercion, value2 = 0;
11560          if (coercedNumber !== 0 && isFinite(coercedNumber)) {
11561            value2 = absFloor(coercedNumber);
11562          }
11563          return value2;
11564        }
11565        function makeGetSet(unit, keepTime) {
11566          return function(value2) {
11567            if (value2 != null) {
11568              set$1(this, unit, value2);
11569              hooks.updateOffset(this, keepTime);
11570              return this;
11571            } else {
11572              return get(this, unit);
11573            }
11574          };
11575        }
11576        function get(mom, unit) {
11577          return mom.isValid() ? mom._d["get" + (mom._isUTC ? "UTC" : "") + unit]() : NaN;
11578        }
11579        function set$1(mom, unit, value2) {
11580          if (mom.isValid() && !isNaN(value2)) {
11581            if (unit === "FullYear" && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
11582              value2 = toInt(value2);
11583              mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](
11584                value2,
11585                mom.month(),
11586                daysInMonth(value2, mom.month())
11587              );
11588            } else {
11589              mom._d["set" + (mom._isUTC ? "UTC" : "") + unit](value2);
11590            }
11591          }
11592        }
11593        function stringGet(units) {
11594          units = normalizeUnits(units);
11595          if (isFunction(this[units])) {
11596            return this[units]();
11597          }
11598          return this;
11599        }
11600        function stringSet(units, value2) {
11601          if (typeof units === "object") {
11602            units = normalizeObjectUnits(units);
11603            var prioritized = getPrioritizedUnits(units), i2, prioritizedLen = prioritized.length;
11604            for (i2 = 0; i2 < prioritizedLen; i2++) {
11605              this[prioritized[i2].unit](units[prioritized[i2].unit]);
11606            }
11607          } else {
11608            units = normalizeUnits(units);
11609            if (isFunction(this[units])) {
11610              return this[units](value2);
11611            }
11612          }
11613          return this;
11614        }
11615        var match1 = /\d/, match2 = /\d\d/, match3 = /\d{3}/, match4 = /\d{4}/, match6 = /[+-]?\d{6}/, match1to2 = /\d\d?/, match3to4 = /\d\d\d\d?/, match5to6 = /\d\d\d\d\d\d?/, match1to3 = /\d{1,3}/, match1to4 = /\d{1,4}/, match1to6 = /[+-]?\d{1,6}/, matchUnsigned = /\d+/, matchSigned = /[+-]?\d+/, matchOffset = /Z|[+-]\d\d:?\d\d/gi, matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i, regexes;
11616        regexes = {};
11617        function addRegexToken(token2, regex, strictRegex) {
11618          regexes[token2] = isFunction(regex) ? regex : function(isStrict, localeData2) {
11619            return isStrict && strictRegex ? strictRegex : regex;
11620          };
11621        }
11622        function getParseRegexForToken(token2, config) {
11623          if (!hasOwnProp(regexes, token2)) {
11624            return new RegExp(unescapeFormat(token2));
11625          }
11626          return regexes[token2](config._strict, config._locale);
11627        }
11628        function unescapeFormat(s) {
11629          return regexEscape(
11630            s.replace("\\", "").replace(
11631              /\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,
11632              function(matched, p1, p2, p3, p4) {
11633                return p1 || p2 || p3 || p4;
11634              }
11635            )
11636          );
11637        }
11638        function regexEscape(s) {
11639          return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&");
11640        }
11641        var tokens = {};
11642        function addParseToken(token2, callback) {
11643          var i2, func = callback, tokenLen;
11644          if (typeof token2 === "string") {
11645            token2 = [token2];
11646          }
11647          if (isNumber(callback)) {
11648            func = function(input, array) {
11649              array[callback] = toInt(input);
11650            };
11651          }
11652          tokenLen = token2.length;
11653          for (i2 = 0; i2 < tokenLen; i2++) {
11654            tokens[token2[i2]] = func;
11655          }
11656        }
11657        function addWeekParseToken(token2, callback) {
11658          addParseToken(token2, function(input, array, config, token3) {
11659            config._w = config._w || {};
11660            callback(input, config._w, config, token3);
11661          });
11662        }
11663        function addTimeToArrayFromToken(token2, input, config) {
11664          if (input != null && hasOwnProp(tokens, token2)) {
11665            tokens[token2](input, config._a, config, token2);
11666          }
11667        }
11668        var YEAR = 0, MONTH = 1, DATE = 2, HOUR = 3, MINUTE = 4, SECOND = 5, MILLISECOND = 6, WEEK = 7, WEEKDAY = 8;
11669        function mod(n, x) {
11670          return (n % x + x) % x;
11671        }
11672        var indexOf;
11673        if (Array.prototype.indexOf) {
11674          indexOf = Array.prototype.indexOf;
11675        } else {
11676          indexOf = function(o) {
11677            var i2;
11678            for (i2 = 0; i2 < this.length; ++i2) {
11679              if (this[i2] === o) {
11680                return i2;
11681              }
11682            }
11683            return -1;
11684          };
11685        }
11686        function daysInMonth(year, month) {
11687          if (isNaN(year) || isNaN(month)) {
11688            return NaN;
11689          }
11690          var modMonth = mod(month, 12);
11691          year += (month - modMonth) / 12;
11692          return modMonth === 1 ? isLeapYear(year) ? 29 : 28 : 31 - modMonth % 7 % 2;
11693        }
11694        addFormatToken("M", ["MM", 2], "Mo", function() {
11695          return this.month() + 1;
11696        });
11697        addFormatToken("MMM", 0, 0, function(format3) {
11698          return this.localeData().monthsShort(this, format3);
11699        });
11700        addFormatToken("MMMM", 0, 0, function(format3) {
11701          return this.localeData().months(this, format3);
11702        });
11703        addUnitAlias("month", "M");
11704        addUnitPriority("month", 8);
11705        addRegexToken("M", match1to2);
11706        addRegexToken("MM", match1to2, match2);
11707        addRegexToken("MMM", function(isStrict, locale2) {
11708          return locale2.monthsShortRegex(isStrict);
11709        });
11710        addRegexToken("MMMM", function(isStrict, locale2) {
11711          return locale2.monthsRegex(isStrict);
11712        });
11713        addParseToken(["M", "MM"], function(input, array) {
11714          array[MONTH] = toInt(input) - 1;
11715        });
11716        addParseToken(["MMM", "MMMM"], function(input, array, config, token2) {
11717          var month = config._locale.monthsParse(input, token2, config._strict);
11718          if (month != null) {
11719            array[MONTH] = month;
11720          } else {
11721            getParsingFlags(config).invalidMonth = input;
11722          }
11723        });
11724        var defaultLocaleMonths = "January_February_March_April_May_June_July_August_September_October_November_December".split(
11725          "_"
11726        ), defaultLocaleMonthsShort = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"), MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/, defaultMonthsShortRegex = matchWord, defaultMonthsRegex = matchWord;
11727        function localeMonths(m, format3) {
11728          if (!m) {
11729            return isArray(this._months) ? this._months : this._months["standalone"];
11730          }
11731          return isArray(this._months) ? this._months[m.month()] : this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format3) ? "format" : "standalone"][m.month()];
11732        }
11733        function localeMonthsShort(m, format3) {
11734          if (!m) {
11735            return isArray(this._monthsShort) ? this._monthsShort : this._monthsShort["standalone"];
11736          }
11737          return isArray(this._monthsShort) ? this._monthsShort[m.month()] : this._monthsShort[MONTHS_IN_FORMAT.test(format3) ? "format" : "standalone"][m.month()];
11738        }
11739        function handleStrictParse(monthName, format3, strict) {
11740          var i2, ii, mom, llc = monthName.toLocaleLowerCase();
11741          if (!this._monthsParse) {
11742            this._monthsParse = [];
11743            this._longMonthsParse = [];
11744            this._shortMonthsParse = [];
11745            for (i2 = 0; i2 < 12; ++i2) {
11746              mom = createUTC([2e3, i2]);
11747              this._shortMonthsParse[i2] = this.monthsShort(
11748                mom,
11749                ""
11750              ).toLocaleLowerCase();
11751              this._longMonthsParse[i2] = this.months(mom, "").toLocaleLowerCase();
11752            }
11753          }
11754          if (strict) {
11755            if (format3 === "MMM") {
11756              ii = indexOf.call(this._shortMonthsParse, llc);
11757              return ii !== -1 ? ii : null;
11758            } else {
11759              ii = indexOf.call(this._longMonthsParse, llc);
11760              return ii !== -1 ? ii : null;
11761            }
11762          } else {
11763            if (format3 === "MMM") {
11764              ii = indexOf.call(this._shortMonthsParse, llc);
11765              if (ii !== -1) {
11766                return ii;
11767              }
11768              ii = indexOf.call(this._longMonthsParse, llc);
11769              return ii !== -1 ? ii : null;
11770            } else {
11771              ii = indexOf.call(this._longMonthsParse, llc);
11772              if (ii !== -1) {
11773                return ii;
11774              }
11775              ii = indexOf.call(this._shortMonthsParse, llc);
11776              return ii !== -1 ? ii : null;
11777            }
11778          }
11779        }
11780        function localeMonthsParse(monthName, format3, strict) {
11781          var i2, mom, regex;
11782          if (this._monthsParseExact) {
11783            return handleStrictParse.call(this, monthName, format3, strict);
11784          }
11785          if (!this._monthsParse) {
11786            this._monthsParse = [];
11787            this._longMonthsParse = [];
11788            this._shortMonthsParse = [];
11789          }
11790          for (i2 = 0; i2 < 12; i2++) {
11791            mom = createUTC([2e3, i2]);
11792            if (strict && !this._longMonthsParse[i2]) {
11793              this._longMonthsParse[i2] = new RegExp(
11794                "^" + this.months(mom, "").replace(".", "") + "$",
11795                "i"
11796              );
11797              this._shortMonthsParse[i2] = new RegExp(
11798                "^" + this.monthsShort(mom, "").replace(".", "") + "$",
11799                "i"
11800              );
11801            }
11802            if (!strict && !this._monthsParse[i2]) {
11803              regex = "^" + this.months(mom, "") + "|^" + this.monthsShort(mom, "");
11804              this._monthsParse[i2] = new RegExp(regex.replace(".", ""), "i");
11805            }
11806            if (strict && format3 === "MMMM" && this._longMonthsParse[i2].test(monthName)) {
11807              return i2;
11808            } else if (strict && format3 === "MMM" && this._shortMonthsParse[i2].test(monthName)) {
11809              return i2;
11810            } else if (!strict && this._monthsParse[i2].test(monthName)) {
11811              return i2;
11812            }
11813          }
11814        }
11815        function setMonth(mom, value2) {
11816          var dayOfMonth;
11817          if (!mom.isValid()) {
11818            return mom;
11819          }
11820          if (typeof value2 === "string") {
11821            if (/^\d+$/.test(value2)) {
11822              value2 = toInt(value2);
11823            } else {
11824              value2 = mom.localeData().monthsParse(value2);
11825              if (!isNumber(value2)) {
11826                return mom;
11827              }
11828            }
11829          }
11830          dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value2));
11831          mom._d["set" + (mom._isUTC ? "UTC" : "") + "Month"](value2, dayOfMonth);
11832          return mom;
11833        }
11834        function getSetMonth(value2) {
11835          if (value2 != null) {
11836            setMonth(this, value2);
11837            hooks.updateOffset(this, true);
11838            return this;
11839          } else {
11840            return get(this, "Month");
11841          }
11842        }
11843        function getDaysInMonth() {
11844          return daysInMonth(this.year(), this.month());
11845        }
11846        function monthsShortRegex(isStrict) {
11847          if (this._monthsParseExact) {
11848            if (!hasOwnProp(this, "_monthsRegex")) {
11849              computeMonthsParse.call(this);
11850            }
11851            if (isStrict) {
11852              return this._monthsShortStrictRegex;
11853            } else {
11854              return this._monthsShortRegex;
11855            }
11856          } else {
11857            if (!hasOwnProp(this, "_monthsShortRegex")) {
11858              this._monthsShortRegex = defaultMonthsShortRegex;
11859            }
11860            return this._monthsShortStrictRegex && isStrict ? this._monthsShortStrictRegex : this._monthsShortRegex;
11861          }
11862        }
11863        function monthsRegex(isStrict) {
11864          if (this._monthsParseExact) {
11865            if (!hasOwnProp(this, "_monthsRegex")) {
11866              computeMonthsParse.call(this);
11867            }
11868            if (isStrict) {
11869              return this._monthsStrictRegex;
11870            } else {
11871              return this._monthsRegex;
11872            }
11873          } else {
11874            if (!hasOwnProp(this, "_monthsRegex")) {
11875              this._monthsRegex = defaultMonthsRegex;
11876            }
11877            return this._monthsStrictRegex && isStrict ? this._monthsStrictRegex : this._monthsRegex;
11878          }
11879        }
11880        function computeMonthsParse() {
11881          function cmpLenRev(a, b) {
11882            return b.length - a.length;
11883          }
11884          var shortPieces = [], longPieces = [], mixedPieces = [], i2, mom;
11885          for (i2 = 0; i2 < 12; i2++) {
11886            mom = createUTC([2e3, i2]);
11887            shortPieces.push(this.monthsShort(mom, ""));
11888            longPieces.push(this.months(mom, ""));
11889            mixedPieces.push(this.months(mom, ""));
11890            mixedPieces.push(this.monthsShort(mom, ""));
11891          }
11892          shortPieces.sort(cmpLenRev);
11893          longPieces.sort(cmpLenRev);
11894          mixedPieces.sort(cmpLenRev);
11895          for (i2 = 0; i2 < 12; i2++) {
11896            shortPieces[i2] = regexEscape(shortPieces[i2]);
11897            longPieces[i2] = regexEscape(longPieces[i2]);
11898          }
11899          for (i2 = 0; i2 < 24; i2++) {
11900            mixedPieces[i2] = regexEscape(mixedPieces[i2]);
11901          }
11902          this._monthsRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i");
11903          this._monthsShortRegex = this._monthsRegex;
11904          this._monthsStrictRegex = new RegExp(
11905            "^(" + longPieces.join("|") + ")",
11906            "i"
11907          );
11908          this._monthsShortStrictRegex = new RegExp(
11909            "^(" + shortPieces.join("|") + ")",
11910            "i"
11911          );
11912        }
11913        addFormatToken("Y", 0, 0, function() {
11914          var y = this.year();
11915          return y <= 9999 ? zeroFill(y, 4) : "+" + y;
11916        });
11917        addFormatToken(0, ["YY", 2], 0, function() {
11918          return this.year() % 100;
11919        });
11920        addFormatToken(0, ["YYYY", 4], 0, "year");
11921        addFormatToken(0, ["YYYYY", 5], 0, "year");
11922        addFormatToken(0, ["YYYYYY", 6, true], 0, "year");
11923        addUnitAlias("year", "y");
11924        addUnitPriority("year", 1);
11925        addRegexToken("Y", matchSigned);
11926        addRegexToken("YY", match1to2, match2);
11927        addRegexToken("YYYY", match1to4, match4);
11928        addRegexToken("YYYYY", match1to6, match6);
11929        addRegexToken("YYYYYY", match1to6, match6);
11930        addParseToken(["YYYYY", "YYYYYY"], YEAR);
11931        addParseToken("YYYY", function(input, array) {
11932          array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
11933        });
11934        addParseToken("YY", function(input, array) {
11935          array[YEAR] = hooks.parseTwoDigitYear(input);
11936        });
11937        addParseToken("Y", function(input, array) {
11938          array[YEAR] = parseInt(input, 10);
11939        });
11940        function daysInYear(year) {
11941          return isLeapYear(year) ? 366 : 365;
11942        }
11943        hooks.parseTwoDigitYear = function(input) {
11944          return toInt(input) + (toInt(input) > 68 ? 1900 : 2e3);
11945        };
11946        var getSetYear = makeGetSet("FullYear", true);
11947        function getIsLeapYear() {
11948          return isLeapYear(this.year());
11949        }
11950        function createDate(y, m, d, h, M, s, ms) {
11951          var date;
11952          if (y < 100 && y >= 0) {
11953            date = new Date(y + 400, m, d, h, M, s, ms);
11954            if (isFinite(date.getFullYear())) {
11955              date.setFullYear(y);
11956            }
11957          } else {
11958            date = new Date(y, m, d, h, M, s, ms);
11959          }
11960          return date;
11961        }
11962        function createUTCDate(y) {
11963          var date, args;
11964          if (y < 100 && y >= 0) {
11965            args = Array.prototype.slice.call(arguments);
11966            args[0] = y + 400;
11967            date = new Date(Date.UTC.apply(null, args));
11968            if (isFinite(date.getUTCFullYear())) {
11969              date.setUTCFullYear(y);
11970            }
11971          } else {
11972            date = new Date(Date.UTC.apply(null, arguments));
11973          }
11974          return date;
11975        }
11976        function firstWeekOffset(year, dow, doy) {
11977          var fwd = 7 + dow - doy, fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
11978          return -fwdlw + fwd - 1;
11979        }
11980        function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
11981          var localWeekday = (7 + weekday - dow) % 7, weekOffset = firstWeekOffset(year, dow, doy), dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset, resYear, resDayOfYear;
11982          if (dayOfYear <= 0) {
11983            resYear = year - 1;
11984            resDayOfYear = daysInYear(resYear) + dayOfYear;
11985          } else if (dayOfYear > daysInYear(year)) {
11986            resYear = year + 1;
11987            resDayOfYear = dayOfYear - daysInYear(year);
11988          } else {
11989            resYear = year;
11990            resDayOfYear = dayOfYear;
11991          }
11992          return {
11993            year: resYear,
11994            dayOfYear: resDayOfYear
11995          };
11996        }
11997        function weekOfYear(mom, dow, doy) {
11998          var weekOffset = firstWeekOffset(mom.year(), dow, doy), week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1, resWeek, resYear;
11999          if (week < 1) {
12000            resYear = mom.year() - 1;
12001            resWeek = week + weeksInYear(resYear, dow, doy);
12002          } else if (week > weeksInYear(mom.year(), dow, doy)) {
12003            resWeek = week - weeksInYear(mom.year(), dow, doy);
12004            resYear = mom.year() + 1;
12005          } else {
12006            resYear = mom.year();
12007            resWeek = week;
12008          }
12009          return {
12010            week: resWeek,
12011            year: resYear
12012          };
12013        }
12014        function weeksInYear(year, dow, doy) {
12015          var weekOffset = firstWeekOffset(year, dow, doy), weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
12016          return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
12017        }
12018        addFormatToken("w", ["ww", 2], "wo", "week");
12019        addFormatToken("W", ["WW", 2], "Wo", "isoWeek");
12020        addUnitAlias("week", "w");
12021        addUnitAlias("isoWeek", "W");
12022        addUnitPriority("week", 5);
12023        addUnitPriority("isoWeek", 5);
12024        addRegexToken("w", match1to2);
12025        addRegexToken("ww", match1to2, match2);
12026        addRegexToken("W", match1to2);
12027        addRegexToken("WW", match1to2, match2);
12028        addWeekParseToken(
12029          ["w", "ww", "W", "WW"],
12030          function(input, week, config, token2) {
12031            week[token2.substr(0, 1)] = toInt(input);
12032          }
12033        );
12034        function localeWeek(mom) {
12035          return weekOfYear(mom, this._week.dow, this._week.doy).week;
12036        }
12037        var defaultLocaleWeek = {
12038          dow: 0,
12039          doy: 6
12040        };
12041        function localeFirstDayOfWeek() {
12042          return this._week.dow;
12043        }
12044        function localeFirstDayOfYear() {
12045          return this._week.doy;
12046        }
12047        function getSetWeek(input) {
12048          var week = this.localeData().week(this);
12049          return input == null ? week : this.add((input - week) * 7, "d");
12050        }
12051        function getSetISOWeek(input) {
12052          var week = weekOfYear(this, 1, 4).week;
12053          return input == null ? week : this.add((input - week) * 7, "d");
12054        }
12055        addFormatToken("d", 0, "do", "day");
12056        addFormatToken("dd", 0, 0, function(format3) {
12057          return this.localeData().weekdaysMin(this, format3);
12058        });
12059        addFormatToken("ddd", 0, 0, function(format3) {
12060          return this.localeData().weekdaysShort(this, format3);
12061        });
12062        addFormatToken("dddd", 0, 0, function(format3) {
12063          return this.localeData().weekdays(this, format3);
12064        });
12065        addFormatToken("e", 0, 0, "weekday");
12066        addFormatToken("E", 0, 0, "isoWeekday");
12067        addUnitAlias("day", "d");
12068        addUnitAlias("weekday", "e");
12069        addUnitAlias("isoWeekday", "E");
12070        addUnitPriority("day", 11);
12071        addUnitPriority("weekday", 11);
12072        addUnitPriority("isoWeekday", 11);
12073        addRegexToken("d", match1to2);
12074        addRegexToken("e", match1to2);
12075        addRegexToken("E", match1to2);
12076        addRegexToken("dd", function(isStrict, locale2) {
12077          return locale2.weekdaysMinRegex(isStrict);
12078        });
12079        addRegexToken("ddd", function(isStrict, locale2) {
12080          return locale2.weekdaysShortRegex(isStrict);
12081        });
12082        addRegexToken("dddd", function(isStrict, locale2) {
12083          return locale2.weekdaysRegex(isStrict);
12084        });
12085        addWeekParseToken(["dd", "ddd", "dddd"], function(input, week, config, token2) {
12086          var weekday = config._locale.weekdaysParse(input, token2, config._strict);
12087          if (weekday != null) {
12088            week.d = weekday;
12089          } else {
12090            getParsingFlags(config).invalidWeekday = input;
12091          }
12092        });
12093        addWeekParseToken(["d", "e", "E"], function(input, week, config, token2) {
12094          week[token2] = toInt(input);
12095        });
12096        function parseWeekday(input, locale2) {
12097          if (typeof input !== "string") {
12098            return input;
12099          }
12100          if (!isNaN(input)) {
12101            return parseInt(input, 10);
12102          }
12103          input = locale2.weekdaysParse(input);
12104          if (typeof input === "number") {
12105            return input;
12106          }
12107          return null;
12108        }
12109        function parseIsoWeekday(input, locale2) {
12110          if (typeof input === "string") {
12111            return locale2.weekdaysParse(input) % 7 || 7;
12112          }
12113          return isNaN(input) ? null : input;
12114        }
12115        function shiftWeekdays(ws, n) {
12116          return ws.slice(n, 7).concat(ws.slice(0, n));
12117        }
12118        var defaultLocaleWeekdays = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), defaultLocaleWeekdaysShort = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"), defaultLocaleWeekdaysMin = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"), defaultWeekdaysRegex = matchWord, defaultWeekdaysShortRegex = matchWord, defaultWeekdaysMinRegex = matchWord;
12119        function localeWeekdays(m, format3) {
12120          var weekdays = isArray(this._weekdays) ? this._weekdays : this._weekdays[m && m !== true && this._weekdays.isFormat.test(format3) ? "format" : "standalone"];
12121          return m === true ? shiftWeekdays(weekdays, this._week.dow) : m ? weekdays[m.day()] : weekdays;
12122        }
12123        function localeWeekdaysShort(m) {
12124          return m === true ? shiftWeekdays(this._weekdaysShort, this._week.dow) : m ? this._weekdaysShort[m.day()] : this._weekdaysShort;
12125        }
12126        function localeWeekdaysMin(m) {
12127          return m === true ? shiftWeekdays(this._weekdaysMin, this._week.dow) : m ? this._weekdaysMin[m.day()] : this._weekdaysMin;
12128        }
12129        function handleStrictParse$1(weekdayName, format3, strict) {
12130          var i2, ii, mom, llc = weekdayName.toLocaleLowerCase();
12131          if (!this._weekdaysParse) {
12132            this._weekdaysParse = [];
12133            this._shortWeekdaysParse = [];
12134            this._minWeekdaysParse = [];
12135            for (i2 = 0; i2 < 7; ++i2) {
12136              mom = createUTC([2e3, 1]).day(i2);
12137              this._minWeekdaysParse[i2] = this.weekdaysMin(
12138                mom,
12139                ""
12140              ).toLocaleLowerCase();
12141              this._shortWeekdaysParse[i2] = this.weekdaysShort(
12142                mom,
12143                ""
12144              ).toLocaleLowerCase();
12145              this._weekdaysParse[i2] = this.weekdays(mom, "").toLocaleLowerCase();
12146            }
12147          }
12148          if (strict) {
12149            if (format3 === "dddd") {
12150              ii = indexOf.call(this._weekdaysParse, llc);
12151              return ii !== -1 ? ii : null;
12152            } else if (format3 === "ddd") {
12153              ii = indexOf.call(this._shortWeekdaysParse, llc);
12154              return ii !== -1 ? ii : null;
12155            } else {
12156              ii = indexOf.call(this._minWeekdaysParse, llc);
12157              return ii !== -1 ? ii : null;
12158            }
12159          } else {
12160            if (format3 === "dddd") {
12161              ii = indexOf.call(this._weekdaysParse, llc);
12162              if (ii !== -1) {
12163                return ii;
12164              }
12165              ii = indexOf.call(this._shortWeekdaysParse, llc);
12166              if (ii !== -1) {
12167                return ii;
12168              }
12169              ii = indexOf.call(this._minWeekdaysParse, llc);
12170              return ii !== -1 ? ii : null;
12171            } else if (format3 === "ddd") {
12172              ii = indexOf.call(this._shortWeekdaysParse, llc);
12173              if (ii !== -1) {
12174                return ii;
12175              }
12176              ii = indexOf.call(this._weekdaysParse, llc);
12177              if (ii !== -1) {
12178                return ii;
12179              }
12180              ii = indexOf.call(this._minWeekdaysParse, llc);
12181              return ii !== -1 ? ii : null;
12182            } else {
12183              ii = indexOf.call(this._minWeekdaysParse, llc);
12184              if (ii !== -1) {
12185                return ii;
12186              }
12187              ii = indexOf.call(this._weekdaysParse, llc);
12188              if (ii !== -1) {
12189                return ii;
12190              }
12191              ii = indexOf.call(this._shortWeekdaysParse, llc);
12192              return ii !== -1 ? ii : null;
12193            }
12194          }
12195        }
12196        function localeWeekdaysParse(weekdayName, format3, strict) {
12197          var i2, mom, regex;
12198          if (this._weekdaysParseExact) {
12199            return handleStrictParse$1.call(this, weekdayName, format3, strict);
12200          }
12201          if (!this._weekdaysParse) {
12202            this._weekdaysParse = [];
12203            this._minWeekdaysParse = [];
12204            this._shortWeekdaysParse = [];
12205            this._fullWeekdaysParse = [];
12206          }
12207          for (i2 = 0; i2 < 7; i2++) {
12208            mom = createUTC([2e3, 1]).day(i2);
12209            if (strict && !this._fullWeekdaysParse[i2]) {
12210              this._fullWeekdaysParse[i2] = new RegExp(
12211                "^" + this.weekdays(mom, "").replace(".", "\\.?") + "$",
12212                "i"
12213              );
12214              this._shortWeekdaysParse[i2] = new RegExp(
12215                "^" + this.weekdaysShort(mom, "").replace(".", "\\.?") + "$",
12216                "i"
12217              );
12218              this._minWeekdaysParse[i2] = new RegExp(
12219                "^" + this.weekdaysMin(mom, "").replace(".", "\\.?") + "$",
12220                "i"
12221              );
12222            }
12223            if (!this._weekdaysParse[i2]) {
12224              regex = "^" + this.weekdays(mom, "") + "|^" + this.weekdaysShort(mom, "") + "|^" + this.weekdaysMin(mom, "");
12225              this._weekdaysParse[i2] = new RegExp(regex.replace(".", ""), "i");
12226            }
12227            if (strict && format3 === "dddd" && this._fullWeekdaysParse[i2].test(weekdayName)) {
12228              return i2;
12229            } else if (strict && format3 === "ddd" && this._shortWeekdaysParse[i2].test(weekdayName)) {
12230              return i2;
12231            } else if (strict && format3 === "dd" && this._minWeekdaysParse[i2].test(weekdayName)) {
12232              return i2;
12233            } else if (!strict && this._weekdaysParse[i2].test(weekdayName)) {
12234              return i2;
12235            }
12236          }
12237        }
12238        function getSetDayOfWeek(input) {
12239          if (!this.isValid()) {
12240            return input != null ? this : NaN;
12241          }
12242          var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
12243          if (input != null) {
12244            input = parseWeekday(input, this.localeData());
12245            return this.add(input - day, "d");
12246          } else {
12247            return day;
12248          }
12249        }
12250        function getSetLocaleDayOfWeek(input) {
12251          if (!this.isValid()) {
12252            return input != null ? this : NaN;
12253          }
12254          var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
12255          return input == null ? weekday : this.add(input - weekday, "d");
12256        }
12257        function getSetISODayOfWeek(input) {
12258          if (!this.isValid()) {
12259            return input != null ? this : NaN;
12260          }
12261          if (input != null) {
12262            var weekday = parseIsoWeekday(input, this.localeData());
12263            return this.day(this.day() % 7 ? weekday : weekday - 7);
12264          } else {
12265            return this.day() || 7;
12266          }
12267        }
12268        function weekdaysRegex(isStrict) {
12269          if (this._weekdaysParseExact) {
12270            if (!hasOwnProp(this, "_weekdaysRegex")) {
12271              computeWeekdaysParse.call(this);
12272            }
12273            if (isStrict) {
12274              return this._weekdaysStrictRegex;
12275            } else {
12276              return this._weekdaysRegex;
12277            }
12278          } else {
12279            if (!hasOwnProp(this, "_weekdaysRegex")) {
12280              this._weekdaysRegex = defaultWeekdaysRegex;
12281            }
12282            return this._weekdaysStrictRegex && isStrict ? this._weekdaysStrictRegex : this._weekdaysRegex;
12283          }
12284        }
12285        function weekdaysShortRegex(isStrict) {
12286          if (this._weekdaysParseExact) {
12287            if (!hasOwnProp(this, "_weekdaysRegex")) {
12288              computeWeekdaysParse.call(this);
12289            }
12290            if (isStrict) {
12291              return this._weekdaysShortStrictRegex;
12292            } else {
12293              return this._weekdaysShortRegex;
12294            }
12295          } else {
12296            if (!hasOwnProp(this, "_weekdaysShortRegex")) {
12297              this._weekdaysShortRegex = defaultWeekdaysShortRegex;
12298            }
12299            return this._weekdaysShortStrictRegex && isStrict ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
12300          }
12301        }
12302        function weekdaysMinRegex(isStrict) {
12303          if (this._weekdaysParseExact) {
12304            if (!hasOwnProp(this, "_weekdaysRegex")) {
12305              computeWeekdaysParse.call(this);
12306            }
12307            if (isStrict) {
12308              return this._weekdaysMinStrictRegex;
12309            } else {
12310              return this._weekdaysMinRegex;
12311            }
12312          } else {
12313            if (!hasOwnProp(this, "_weekdaysMinRegex")) {
12314              this._weekdaysMinRegex = defaultWeekdaysMinRegex;
12315            }
12316            return this._weekdaysMinStrictRegex && isStrict ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
12317          }
12318        }
12319        function computeWeekdaysParse() {
12320          function cmpLenRev(a, b) {
12321            return b.length - a.length;
12322          }
12323          var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [], i2, mom, minp, shortp, longp;
12324          for (i2 = 0; i2 < 7; i2++) {
12325            mom = createUTC([2e3, 1]).day(i2);
12326            minp = regexEscape(this.weekdaysMin(mom, ""));
12327            shortp = regexEscape(this.weekdaysShort(mom, ""));
12328            longp = regexEscape(this.weekdays(mom, ""));
12329            minPieces.push(minp);
12330            shortPieces.push(shortp);
12331            longPieces.push(longp);
12332            mixedPieces.push(minp);
12333            mixedPieces.push(shortp);
12334            mixedPieces.push(longp);
12335          }
12336          minPieces.sort(cmpLenRev);
12337          shortPieces.sort(cmpLenRev);
12338          longPieces.sort(cmpLenRev);
12339          mixedPieces.sort(cmpLenRev);
12340          this._weekdaysRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i");
12341          this._weekdaysShortRegex = this._weekdaysRegex;
12342          this._weekdaysMinRegex = this._weekdaysRegex;
12343          this._weekdaysStrictRegex = new RegExp(
12344            "^(" + longPieces.join("|") + ")",
12345            "i"
12346          );
12347          this._weekdaysShortStrictRegex = new RegExp(
12348            "^(" + shortPieces.join("|") + ")",
12349            "i"
12350          );
12351          this._weekdaysMinStrictRegex = new RegExp(
12352            "^(" + minPieces.join("|") + ")",
12353            "i"
12354          );
12355        }
12356        function hFormat() {
12357          return this.hours() % 12 || 12;
12358        }
12359        function kFormat() {
12360          return this.hours() || 24;
12361        }
12362        addFormatToken("H", ["HH", 2], 0, "hour");
12363        addFormatToken("h", ["hh", 2], 0, hFormat);
12364        addFormatToken("k", ["kk", 2], 0, kFormat);
12365        addFormatToken("hmm", 0, 0, function() {
12366          return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2);
12367        });
12368        addFormatToken("hmmss", 0, 0, function() {
12369          return "" + hFormat.apply(this) + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);
12370        });
12371        addFormatToken("Hmm", 0, 0, function() {
12372          return "" + this.hours() + zeroFill(this.minutes(), 2);
12373        });
12374        addFormatToken("Hmmss", 0, 0, function() {
12375          return "" + this.hours() + zeroFill(this.minutes(), 2) + zeroFill(this.seconds(), 2);
12376        });
12377        function meridiem(token2, lowercase) {
12378          addFormatToken(token2, 0, 0, function() {
12379            return this.localeData().meridiem(
12380              this.hours(),
12381              this.minutes(),
12382              lowercase
12383            );
12384          });
12385        }
12386        meridiem("a", true);
12387        meridiem("A", false);
12388        addUnitAlias("hour", "h");
12389        addUnitPriority("hour", 13);
12390        function matchMeridiem(isStrict, locale2) {
12391          return locale2._meridiemParse;
12392        }
12393        addRegexToken("a", matchMeridiem);
12394        addRegexToken("A", matchMeridiem);
12395        addRegexToken("H", match1to2);
12396        addRegexToken("h", match1to2);
12397        addRegexToken("k", match1to2);
12398        addRegexToken("HH", match1to2, match2);
12399        addRegexToken("hh", match1to2, match2);
12400        addRegexToken("kk", match1to2, match2);
12401        addRegexToken("hmm", match3to4);
12402        addRegexToken("hmmss", match5to6);
12403        addRegexToken("Hmm", match3to4);
12404        addRegexToken("Hmmss", match5to6);
12405        addParseToken(["H", "HH"], HOUR);
12406        addParseToken(["k", "kk"], function(input, array, config) {
12407          var kInput = toInt(input);
12408          array[HOUR] = kInput === 24 ? 0 : kInput;
12409        });
12410        addParseToken(["a", "A"], function(input, array, config) {
12411          config._isPm = config._locale.isPM(input);
12412          config._meridiem = input;
12413        });
12414        addParseToken(["h", "hh"], function(input, array, config) {
12415          array[HOUR] = toInt(input);
12416          getParsingFlags(config).bigHour = true;
12417        });
12418        addParseToken("hmm", function(input, array, config) {
12419          var pos = input.length - 2;
12420          array[HOUR] = toInt(input.substr(0, pos));
12421          array[MINUTE] = toInt(input.substr(pos));
12422          getParsingFlags(config).bigHour = true;
12423        });
12424        addParseToken("hmmss", function(input, array, config) {
12425          var pos1 = input.length - 4, pos2 = input.length - 2;
12426          array[HOUR] = toInt(input.substr(0, pos1));
12427          array[MINUTE] = toInt(input.substr(pos1, 2));
12428          array[SECOND] = toInt(input.substr(pos2));
12429          getParsingFlags(config).bigHour = true;
12430        });
12431        addParseToken("Hmm", function(input, array, config) {
12432          var pos = input.length - 2;
12433          array[HOUR] = toInt(input.substr(0, pos));
12434          array[MINUTE] = toInt(input.substr(pos));
12435        });
12436        addParseToken("Hmmss", function(input, array, config) {
12437          var pos1 = input.length - 4, pos2 = input.length - 2;
12438          array[HOUR] = toInt(input.substr(0, pos1));
12439          array[MINUTE] = toInt(input.substr(pos1, 2));
12440          array[SECOND] = toInt(input.substr(pos2));
12441        });
12442        function localeIsPM(input) {
12443          return (input + "").toLowerCase().charAt(0) === "p";
12444        }
12445        var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i, getSetHour = makeGetSet("Hours", true);
12446        function localeMeridiem(hours2, minutes2, isLower) {
12447          if (hours2 > 11) {
12448            return isLower ? "pm" : "PM";
12449          } else {
12450            return isLower ? "am" : "AM";
12451          }
12452        }
12453        var baseConfig = {
12454          calendar: defaultCalendar,
12455          longDateFormat: defaultLongDateFormat,
12456          invalidDate: defaultInvalidDate,
12457          ordinal: defaultOrdinal,
12458          dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
12459          relativeTime: defaultRelativeTime,
12460          months: defaultLocaleMonths,
12461          monthsShort: defaultLocaleMonthsShort,
12462          week: defaultLocaleWeek,
12463          weekdays: defaultLocaleWeekdays,
12464          weekdaysMin: defaultLocaleWeekdaysMin,
12465          weekdaysShort: defaultLocaleWeekdaysShort,
12466          meridiemParse: defaultLocaleMeridiemParse
12467        };
12468        var locales = {}, localeFamilies = {}, globalLocale;
12469        function commonPrefix(arr1, arr2) {
12470          var i2, minl = Math.min(arr1.length, arr2.length);
12471          for (i2 = 0; i2 < minl; i2 += 1) {
12472            if (arr1[i2] !== arr2[i2]) {
12473              return i2;
12474            }
12475          }
12476          return minl;
12477        }
12478        function normalizeLocale(key) {
12479          return key ? key.toLowerCase().replace("_", "-") : key;
12480        }
12481        function chooseLocale(names) {
12482          var i2 = 0, j, next, locale2, split;
12483          while (i2 < names.length) {
12484            split = normalizeLocale(names[i2]).split("-");
12485            j = split.length;
12486            next = normalizeLocale(names[i2 + 1]);
12487            next = next ? next.split("-") : null;
12488            while (j > 0) {
12489              locale2 = loadLocale(split.slice(0, j).join("-"));
12490              if (locale2) {
12491                return locale2;
12492              }
12493              if (next && next.length >= j && commonPrefix(split, next) >= j - 1) {
12494                break;
12495              }
12496              j--;
12497            }
12498            i2++;
12499          }
12500          return globalLocale;
12501        }
12502        function isLocaleNameSane(name2) {
12503          return name2.match("^[^/\\\\]*$") != null;
12504        }
12505        function loadLocale(name2) {
12506          var oldLocale = null, aliasedRequire;
12507          if (locales[name2] === void 0 && typeof module !== "undefined" && module && module.exports && isLocaleNameSane(name2)) {
12508            try {
12509              oldLocale = globalLocale._abbr;
12510              aliasedRequire = __require;
12511              aliasedRequire("./locale/" + name2);
12512              getSetGlobalLocale(oldLocale);
12513            } catch (e) {
12514              locales[name2] = null;
12515            }
12516          }
12517          return locales[name2];
12518        }
12519        function getSetGlobalLocale(key, values) {
12520          var data;
12521          if (key) {
12522            if (isUndefined(values)) {
12523              data = getLocale(key);
12524            } else {
12525              data = defineLocale(key, values);
12526            }
12527            if (data) {
12528              globalLocale = data;
12529            } else {
12530              if (typeof console !== "undefined" && console.warn) {
12531                console.warn(
12532                  "Locale " + key + " not found. Did you forget to load it?"
12533                );
12534              }
12535            }
12536          }
12537          return globalLocale._abbr;
12538        }
12539        function defineLocale(name2, config) {
12540          if (config !== null) {
12541            var locale2, parentConfig = baseConfig;
12542            config.abbr = name2;
12543            if (locales[name2] != null) {
12544              deprecateSimple(
12545                "defineLocaleOverride",
12546                "use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."
12547              );
12548              parentConfig = locales[name2]._config;
12549            } else if (config.parentLocale != null) {
12550              if (locales[config.parentLocale] != null) {
12551                parentConfig = locales[config.parentLocale]._config;
12552              } else {
12553                locale2 = loadLocale(config.parentLocale);
12554                if (locale2 != null) {
12555                  parentConfig = locale2._config;
12556                } else {
12557                  if (!localeFamilies[config.parentLocale]) {
12558                    localeFamilies[config.parentLocale] = [];
12559                  }
12560                  localeFamilies[config.parentLocale].push({
12561                    name: name2,
12562                    config
12563                  });
12564                  return null;
12565                }
12566              }
12567            }
12568            locales[name2] = new Locale(mergeConfigs(parentConfig, config));
12569            if (localeFamilies[name2]) {
12570              localeFamilies[name2].forEach(function(x) {
12571                defineLocale(x.name, x.config);
12572              });
12573            }
12574            getSetGlobalLocale(name2);
12575            return locales[name2];
12576          } else {
12577            delete locales[name2];
12578            return null;
12579          }
12580        }
12581        function updateLocale(name2, config) {
12582          if (config != null) {
12583            var locale2, tmpLocale, parentConfig = baseConfig;
12584            if (locales[name2] != null && locales[name2].parentLocale != null) {
12585              locales[name2].set(mergeConfigs(locales[name2]._config, config));
12586            } else {
12587              tmpLocale = loadLocale(name2);
12588              if (tmpLocale != null) {
12589                parentConfig = tmpLocale._config;
12590              }
12591              config = mergeConfigs(parentConfig, config);
12592              if (tmpLocale == null) {
12593                config.abbr = name2;
12594              }
12595              locale2 = new Locale(config);
12596              locale2.parentLocale = locales[name2];
12597              locales[name2] = locale2;
12598            }
12599            getSetGlobalLocale(name2);
12600          } else {
12601            if (locales[name2] != null) {
12602              if (locales[name2].parentLocale != null) {
12603                locales[name2] = locales[name2].parentLocale;
12604                if (name2 === getSetGlobalLocale()) {
12605                  getSetGlobalLocale(name2);
12606                }
12607              } else if (locales[name2] != null) {
12608                delete locales[name2];
12609              }
12610            }
12611          }
12612          return locales[name2];
12613        }
12614        function getLocale(key) {
12615          var locale2;
12616          if (key && key._locale && key._locale._abbr) {
12617            key = key._locale._abbr;
12618          }
12619          if (!key) {
12620            return globalLocale;
12621          }
12622          if (!isArray(key)) {
12623            locale2 = loadLocale(key);
12624            if (locale2) {
12625              return locale2;
12626            }
12627            key = [key];
12628          }
12629          return chooseLocale(key);
12630        }
12631        function listLocales() {
12632          return keys(locales);
12633        }
12634        function checkOverflow(m) {
12635          var overflow, a = m._a;
12636          if (a && getParsingFlags(m).overflow === -2) {
12637            overflow = a[MONTH] < 0 || a[MONTH] > 11 ? MONTH : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH]) ? DATE : a[HOUR] < 0 || a[HOUR] > 24 || a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0) ? HOUR : a[MINUTE] < 0 || a[MINUTE] > 59 ? MINUTE : a[SECOND] < 0 || a[SECOND] > 59 ? SECOND : a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND : -1;
12638            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
12639              overflow = DATE;
12640            }
12641            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
12642              overflow = WEEK;
12643            }
12644            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
12645              overflow = WEEKDAY;
12646            }
12647            getParsingFlags(m).overflow = overflow;
12648          }
12649          return m;
12650        }
12651        var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/, tzRegex = /Z|[+-]\d\d(?::?\d\d)?/, isoDates = [
12652          ["YYYYYY-MM-DD", /[+-]\d{6}-\d\d-\d\d/],
12653          ["YYYY-MM-DD", /\d{4}-\d\d-\d\d/],
12654          ["GGGG-[W]WW-E", /\d{4}-W\d\d-\d/],
12655          ["GGGG-[W]WW", /\d{4}-W\d\d/, false],
12656          ["YYYY-DDD", /\d{4}-\d{3}/],
12657          ["YYYY-MM", /\d{4}-\d\d/, false],
12658          ["YYYYYYMMDD", /[+-]\d{10}/],
12659          ["YYYYMMDD", /\d{8}/],
12660          ["GGGG[W]WWE", /\d{4}W\d{3}/],
12661          ["GGGG[W]WW", /\d{4}W\d{2}/, false],
12662          ["YYYYDDD", /\d{7}/],
12663          ["YYYYMM", /\d{6}/, false],
12664          ["YYYY", /\d{4}/, false]
12665        ], isoTimes = [
12666          ["HH:mm:ss.SSSS", /\d\d:\d\d:\d\d\.\d+/],
12667          ["HH:mm:ss,SSSS", /\d\d:\d\d:\d\d,\d+/],
12668          ["HH:mm:ss", /\d\d:\d\d:\d\d/],
12669          ["HH:mm", /\d\d:\d\d/],
12670          ["HHmmss.SSSS", /\d\d\d\d\d\d\.\d+/],
12671          ["HHmmss,SSSS", /\d\d\d\d\d\d,\d+/],
12672          ["HHmmss", /\d\d\d\d\d\d/],
12673          ["HHmm", /\d\d\d\d/],
12674          ["HH", /\d\d/]
12675        ], aspNetJsonRegex = /^\/?Date\((-?\d+)/i, rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/, obsOffsets = {
12676          UT: 0,
12677          GMT: 0,
12678          EDT: -4 * 60,
12679          EST: -5 * 60,
12680          CDT: -5 * 60,
12681          CST: -6 * 60,
12682          MDT: -6 * 60,
12683          MST: -7 * 60,
12684          PDT: -7 * 60,
12685          PST: -8 * 60
12686        };
12687        function configFromISO(config) {
12688          var i2, l, string = config._i, match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string), allowTime, dateFormat, timeFormat, tzFormat, isoDatesLen = isoDates.length, isoTimesLen = isoTimes.length;
12689          if (match) {
12690            getParsingFlags(config).iso = true;
12691            for (i2 = 0, l = isoDatesLen; i2 < l; i2++) {
12692              if (isoDates[i2][1].exec(match[1])) {
12693                dateFormat = isoDates[i2][0];
12694                allowTime = isoDates[i2][2] !== false;
12695                break;
12696              }
12697            }
12698            if (dateFormat == null) {
12699              config._isValid = false;
12700              return;
12701            }
12702            if (match[3]) {
12703              for (i2 = 0, l = isoTimesLen; i2 < l; i2++) {
12704                if (isoTimes[i2][1].exec(match[3])) {
12705                  timeFormat = (match[2] || " ") + isoTimes[i2][0];
12706                  break;
12707                }
12708              }
12709              if (timeFormat == null) {
12710                config._isValid = false;
12711                return;
12712              }
12713            }
12714            if (!allowTime && timeFormat != null) {
12715              config._isValid = false;
12716              return;
12717            }
12718            if (match[4]) {
12719              if (tzRegex.exec(match[4])) {
12720                tzFormat = "Z";
12721              } else {
12722                config._isValid = false;
12723                return;
12724              }
12725            }
12726            config._f = dateFormat + (timeFormat || "") + (tzFormat || "");
12727            configFromStringAndFormat(config);
12728          } else {
12729            config._isValid = false;
12730          }
12731        }
12732        function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
12733          var result = [
12734            untruncateYear(yearStr),
12735            defaultLocaleMonthsShort.indexOf(monthStr),
12736            parseInt(dayStr, 10),
12737            parseInt(hourStr, 10),
12738            parseInt(minuteStr, 10)
12739          ];
12740          if (secondStr) {
12741            result.push(parseInt(secondStr, 10));
12742          }
12743          return result;
12744        }
12745        function untruncateYear(yearStr) {
12746          var year = parseInt(yearStr, 10);
12747          if (year <= 49) {
12748            return 2e3 + year;
12749          } else if (year <= 999) {
12750            return 1900 + year;
12751          }
12752          return year;
12753        }
12754        function preprocessRFC2822(s) {
12755          return s.replace(/\([^()]*\)|[\n\t]/g, " ").replace(/(\s\s+)/g, " ").replace(/^\s\s*/, "").replace(/\s\s*$/, "");
12756        }
12757        function checkWeekday(weekdayStr, parsedInput, config) {
12758          if (weekdayStr) {
12759            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr), weekdayActual = new Date(
12760              parsedInput[0],
12761              parsedInput[1],
12762              parsedInput[2]
12763            ).getDay();
12764            if (weekdayProvided !== weekdayActual) {
12765              getParsingFlags(config).weekdayMismatch = true;
12766              config._isValid = false;
12767              return false;
12768            }
12769          }
12770          return true;
12771        }
12772        function calculateOffset(obsOffset, militaryOffset, numOffset) {
12773          if (obsOffset) {
12774            return obsOffsets[obsOffset];
12775          } else if (militaryOffset) {
12776            return 0;
12777          } else {
12778            var hm = parseInt(numOffset, 10), m = hm % 100, h = (hm - m) / 100;
12779            return h * 60 + m;
12780          }
12781        }
12782        function configFromRFC2822(config) {
12783          var match = rfc2822.exec(preprocessRFC2822(config._i)), parsedArray;
12784          if (match) {
12785            parsedArray = extractFromRFC2822Strings(
12786              match[4],
12787              match[3],
12788              match[2],
12789              match[5],
12790              match[6],
12791              match[7]
12792            );
12793            if (!checkWeekday(match[1], parsedArray, config)) {
12794              return;
12795            }
12796            config._a = parsedArray;
12797            config._tzm = calculateOffset(match[8], match[9], match[10]);
12798            config._d = createUTCDate.apply(null, config._a);
12799            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
12800            getParsingFlags(config).rfc2822 = true;
12801          } else {
12802            config._isValid = false;
12803          }
12804        }
12805        function configFromString(config) {
12806          var matched = aspNetJsonRegex.exec(config._i);
12807          if (matched !== null) {
12808            config._d = new Date(+matched[1]);
12809            return;
12810          }
12811          configFromISO(config);
12812          if (config._isValid === false) {
12813            delete config._isValid;
12814          } else {
12815            return;
12816          }
12817          configFromRFC2822(config);
12818          if (config._isValid === false) {
12819            delete config._isValid;
12820          } else {
12821            return;
12822          }
12823          if (config._strict) {
12824            config._isValid = false;
12825          } else {
12826            hooks.createFromInputFallback(config);
12827          }
12828        }
12829        hooks.createFromInputFallback = deprecate(
12830          "value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",
12831          function(config) {
12832            config._d = new Date(config._i + (config._useUTC ? " UTC" : ""));
12833          }
12834        );
12835        function defaults(a, b, c) {
12836          if (a != null) {
12837            return a;
12838          }
12839          if (b != null) {
12840            return b;
12841          }
12842          return c;
12843        }
12844        function currentDateArray(config) {
12845          var nowValue = new Date(hooks.now());
12846          if (config._useUTC) {
12847            return [
12848              nowValue.getUTCFullYear(),
12849              nowValue.getUTCMonth(),
12850              nowValue.getUTCDate()
12851            ];
12852          }
12853          return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
12854        }
12855        function configFromArray(config) {
12856          var i2, date, input = [], currentDate, expectedWeekday, yearToUse;
12857          if (config._d) {
12858            return;
12859          }
12860          currentDate = currentDateArray(config);
12861          if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
12862            dayOfYearFromWeekInfo(config);
12863          }
12864          if (config._dayOfYear != null) {
12865            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
12866            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
12867              getParsingFlags(config)._overflowDayOfYear = true;
12868            }
12869            date = createUTCDate(yearToUse, 0, config._dayOfYear);
12870            config._a[MONTH] = date.getUTCMonth();
12871            config._a[DATE] = date.getUTCDate();
12872          }
12873          for (i2 = 0; i2 < 3 && config._a[i2] == null; ++i2) {
12874            config._a[i2] = input[i2] = currentDate[i2];
12875          }
12876          for (; i2 < 7; i2++) {
12877            config._a[i2] = input[i2] = config._a[i2] == null ? i2 === 2 ? 1 : 0 : config._a[i2];
12878          }
12879          if (config._a[HOUR] === 24 && config._a[MINUTE] === 0 && config._a[SECOND] === 0 && config._a[MILLISECOND] === 0) {
12880            config._nextDay = true;
12881            config._a[HOUR] = 0;
12882          }
12883          config._d = (config._useUTC ? createUTCDate : createDate).apply(
12884            null,
12885            input
12886          );
12887          expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();
12888          if (config._tzm != null) {
12889            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
12890          }
12891          if (config._nextDay) {
12892            config._a[HOUR] = 24;
12893          }
12894          if (config._w && typeof config._w.d !== "undefined" && config._w.d !== expectedWeekday) {
12895            getParsingFlags(config).weekdayMismatch = true;
12896          }
12897        }
12898        function dayOfYearFromWeekInfo(config) {
12899          var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
12900          w = config._w;
12901          if (w.GG != null || w.W != null || w.E != null) {
12902            dow = 1;
12903            doy = 4;
12904            weekYear = defaults(
12905              w.GG,
12906              config._a[YEAR],
12907              weekOfYear(createLocal(), 1, 4).year
12908            );
12909            week = defaults(w.W, 1);
12910            weekday = defaults(w.E, 1);
12911            if (weekday < 1 || weekday > 7) {
12912              weekdayOverflow = true;
12913            }
12914          } else {
12915            dow = config._locale._week.dow;
12916            doy = config._locale._week.doy;
12917            curWeek = weekOfYear(createLocal(), dow, doy);
12918            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
12919            week = defaults(w.w, curWeek.week);
12920            if (w.d != null) {
12921              weekday = w.d;
12922              if (weekday < 0 || weekday > 6) {
12923                weekdayOverflow = true;
12924              }
12925            } else if (w.e != null) {
12926              weekday = w.e + dow;
12927              if (w.e < 0 || w.e > 6) {
12928                weekdayOverflow = true;
12929              }
12930            } else {
12931              weekday = dow;
12932            }
12933          }
12934          if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
12935            getParsingFlags(config)._overflowWeeks = true;
12936          } else if (weekdayOverflow != null) {
12937            getParsingFlags(config)._overflowWeekday = true;
12938          } else {
12939            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
12940            config._a[YEAR] = temp.year;
12941            config._dayOfYear = temp.dayOfYear;
12942          }
12943        }
12944        hooks.ISO_8601 = function() {
12945        };
12946        hooks.RFC_2822 = function() {
12947        };
12948        function configFromStringAndFormat(config) {
12949          if (config._f === hooks.ISO_8601) {
12950            configFromISO(config);
12951            return;
12952          }
12953          if (config._f === hooks.RFC_2822) {
12954            configFromRFC2822(config);
12955            return;
12956          }
12957          config._a = [];
12958          getParsingFlags(config).empty = true;
12959          var string = "" + config._i, i2, parsedInput, tokens2, token2, skipped, stringLength = string.length, totalParsedInputLength = 0, era, tokenLen;
12960          tokens2 = expandFormat(config._f, config._locale).match(formattingTokens) || [];
12961          tokenLen = tokens2.length;
12962          for (i2 = 0; i2 < tokenLen; i2++) {
12963            token2 = tokens2[i2];
12964            parsedInput = (string.match(getParseRegexForToken(token2, config)) || [])[0];
12965            if (parsedInput) {
12966              skipped = string.substr(0, string.indexOf(parsedInput));
12967              if (skipped.length > 0) {
12968                getParsingFlags(config).unusedInput.push(skipped);
12969              }
12970              string = string.slice(
12971                string.indexOf(parsedInput) + parsedInput.length
12972              );
12973              totalParsedInputLength += parsedInput.length;
12974            }
12975            if (formatTokenFunctions[token2]) {
12976              if (parsedInput) {
12977                getParsingFlags(config).empty = false;
12978              } else {
12979                getParsingFlags(config).unusedTokens.push(token2);
12980              }
12981              addTimeToArrayFromToken(token2, parsedInput, config);
12982            } else if (config._strict && !parsedInput) {
12983              getParsingFlags(config).unusedTokens.push(token2);
12984            }
12985          }
12986          getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
12987          if (string.length > 0) {
12988            getParsingFlags(config).unusedInput.push(string);
12989          }
12990          if (config._a[HOUR] <= 12 && getParsingFlags(config).bigHour === true && config._a[HOUR] > 0) {
12991            getParsingFlags(config).bigHour = void 0;
12992          }
12993          getParsingFlags(config).parsedDateParts = config._a.slice(0);
12994          getParsingFlags(config).meridiem = config._meridiem;
12995          config._a[HOUR] = meridiemFixWrap(
12996            config._locale,
12997            config._a[HOUR],
12998            config._meridiem
12999          );
13000          era = getParsingFlags(config).era;
13001          if (era !== null) {
13002            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
13003          }
13004          configFromArray(config);
13005          checkOverflow(config);
13006        }
13007        function meridiemFixWrap(locale2, hour, meridiem2) {
13008          var isPm;
13009          if (meridiem2 == null) {
13010            return hour;
13011          }
13012          if (locale2.meridiemHour != null) {
13013            return locale2.meridiemHour(hour, meridiem2);
13014          } else if (locale2.isPM != null) {
13015            isPm = locale2.isPM(meridiem2);
13016            if (isPm && hour < 12) {
13017              hour += 12;
13018            }
13019            if (!isPm && hour === 12) {
13020              hour = 0;
13021            }
13022            return hour;
13023          } else {
13024            return hour;
13025          }
13026        }
13027        function configFromStringAndArray(config) {
13028          var tempConfig, bestMoment, scoreToBeat, i2, currentScore, validFormatFound, bestFormatIsValid = false, configfLen = config._f.length;
13029          if (configfLen === 0) {
13030            getParsingFlags(config).invalidFormat = true;
13031            config._d = new Date(NaN);
13032            return;
13033          }
13034          for (i2 = 0; i2 < configfLen; i2++) {
13035            currentScore = 0;
13036            validFormatFound = false;
13037            tempConfig = copyConfig({}, config);
13038            if (config._useUTC != null) {
13039              tempConfig._useUTC = config._useUTC;
13040            }
13041            tempConfig._f = config._f[i2];
13042            configFromStringAndFormat(tempConfig);
13043            if (isValid(tempConfig)) {
13044              validFormatFound = true;
13045            }
13046            currentScore += getParsingFlags(tempConfig).charsLeftOver;
13047            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
13048            getParsingFlags(tempConfig).score = currentScore;
13049            if (!bestFormatIsValid) {
13050              if (scoreToBeat == null || currentScore < scoreToBeat || validFormatFound) {
13051                scoreToBeat = currentScore;
13052                bestMoment = tempConfig;
13053                if (validFormatFound) {
13054                  bestFormatIsValid = true;
13055                }
13056              }
13057            } else {
13058              if (currentScore < scoreToBeat) {
13059                scoreToBeat = currentScore;
13060                bestMoment = tempConfig;
13061              }
13062            }
13063          }
13064          extend(config, bestMoment || tempConfig);
13065        }
13066        function configFromObject(config) {
13067          if (config._d) {
13068            return;
13069          }
13070          var i2 = normalizeObjectUnits(config._i), dayOrDate = i2.day === void 0 ? i2.date : i2.day;
13071          config._a = map2(
13072            [i2.year, i2.month, dayOrDate, i2.hour, i2.minute, i2.second, i2.millisecond],
13073            function(obj) {
13074              return obj && parseInt(obj, 10);
13075            }
13076          );
13077          configFromArray(config);
13078        }
13079        function createFromConfig(config) {
13080          var res = new Moment(checkOverflow(prepareConfig(config)));
13081          if (res._nextDay) {
13082            res.add(1, "d");
13083            res._nextDay = void 0;
13084          }
13085          return res;
13086        }
13087        function prepareConfig(config) {
13088          var input = config._i, format3 = config._f;
13089          config._locale = config._locale || getLocale(config._l);
13090          if (input === null || format3 === void 0 && input === "") {
13091            return createInvalid({ nullInput: true });
13092          }
13093          if (typeof input === "string") {
13094            config._i = input = config._locale.preparse(input);
13095          }
13096          if (isMoment(input)) {
13097            return new Moment(checkOverflow(input));
13098          } else if (isDate(input)) {
13099            config._d = input;
13100          } else if (isArray(format3)) {
13101            configFromStringAndArray(config);
13102          } else if (format3) {
13103            configFromStringAndFormat(config);
13104          } else {
13105            configFromInput(config);
13106          }
13107          if (!isValid(config)) {
13108            config._d = null;
13109          }
13110          return config;
13111        }
13112        function configFromInput(config) {
13113          var input = config._i;
13114          if (isUndefined(input)) {
13115            config._d = new Date(hooks.now());
13116          } else if (isDate(input)) {
13117            config._d = new Date(input.valueOf());
13118          } else if (typeof input === "string") {
13119            configFromString(config);
13120          } else if (isArray(input)) {
13121            config._a = map2(input.slice(0), function(obj) {
13122              return parseInt(obj, 10);
13123            });
13124            configFromArray(config);
13125          } else if (isObject2(input)) {
13126            configFromObject(config);
13127          } else if (isNumber(input)) {
13128            config._d = new Date(input);
13129          } else {
13130            hooks.createFromInputFallback(config);
13131          }
13132        }
13133        function createLocalOrUTC(input, format3, locale2, strict, isUTC) {
13134          var c = {};
13135          if (format3 === true || format3 === false) {
13136            strict = format3;
13137            format3 = void 0;
13138          }
13139          if (locale2 === true || locale2 === false) {
13140            strict = locale2;
13141            locale2 = void 0;
13142          }
13143          if (isObject2(input) && isObjectEmpty(input) || isArray(input) && input.length === 0) {
13144            input = void 0;
13145          }
13146          c._isAMomentObject = true;
13147          c._useUTC = c._isUTC = isUTC;
13148          c._l = locale2;
13149          c._i = input;
13150          c._f = format3;
13151          c._strict = strict;
13152          return createFromConfig(c);
13153        }
13154        function createLocal(input, format3, locale2, strict) {
13155          return createLocalOrUTC(input, format3, locale2, strict, false);
13156        }
13157        var prototypeMin = deprecate(
13158          "moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",
13159          function() {
13160            var other = createLocal.apply(null, arguments);
13161            if (this.isValid() && other.isValid()) {
13162              return other < this ? this : other;
13163            } else {
13164              return createInvalid();
13165            }
13166          }
13167        ), prototypeMax = deprecate(
13168          "moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",
13169          function() {
13170            var other = createLocal.apply(null, arguments);
13171            if (this.isValid() && other.isValid()) {
13172              return other > this ? this : other;
13173            } else {
13174              return createInvalid();
13175            }
13176          }
13177        );
13178        function pickBy(fn, moments) {
13179          var res, i2;
13180          if (moments.length === 1 && isArray(moments[0])) {
13181            moments = moments[0];
13182          }
13183          if (!moments.length) {
13184            return createLocal();
13185          }
13186          res = moments[0];
13187          for (i2 = 1; i2 < moments.length; ++i2) {
13188            if (!moments[i2].isValid() || moments[i2][fn](res)) {
13189              res = moments[i2];
13190            }
13191          }
13192          return res;
13193        }
13194        function min() {
13195          var args = [].slice.call(arguments, 0);
13196          return pickBy("isBefore", args);
13197        }
13198        function max() {
13199          var args = [].slice.call(arguments, 0);
13200          return pickBy("isAfter", args);
13201        }
13202        var now = function() {
13203          return Date.now ? Date.now() : +new Date();
13204        };
13205        var ordering = [
13206          "year",
13207          "quarter",
13208          "month",
13209          "week",
13210          "day",
13211          "hour",
13212          "minute",
13213          "second",
13214          "millisecond"
13215        ];
13216        function isDurationValid(m) {
13217          var key, unitHasDecimal = false, i2, orderLen = ordering.length;
13218          for (key in m) {
13219            if (hasOwnProp(m, key) && !(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
13220              return false;
13221            }
13222          }
13223          for (i2 = 0; i2 < orderLen; ++i2) {
13224            if (m[ordering[i2]]) {
13225              if (unitHasDecimal) {
13226                return false;
13227              }
13228              if (parseFloat(m[ordering[i2]]) !== toInt(m[ordering[i2]])) {
13229                unitHasDecimal = true;
13230              }
13231            }
13232          }
13233          return true;
13234        }
13235        function isValid$1() {
13236          return this._isValid;
13237        }
13238        function createInvalid$1() {
13239          return createDuration(NaN);
13240        }
13241        function Duration(duration) {
13242          var normalizedInput = normalizeObjectUnits(duration), years2 = normalizedInput.year || 0, quarters = normalizedInput.quarter || 0, months2 = normalizedInput.month || 0, weeks2 = normalizedInput.week || normalizedInput.isoWeek || 0, days2 = normalizedInput.day || 0, hours2 = normalizedInput.hour || 0, minutes2 = normalizedInput.minute || 0, seconds2 = normalizedInput.second || 0, milliseconds2 = normalizedInput.millisecond || 0;
13243          this._isValid = isDurationValid(normalizedInput);
13244          this._milliseconds = +milliseconds2 + seconds2 * 1e3 + minutes2 * 6e4 + hours2 * 1e3 * 60 * 60;
13245          this._days = +days2 + weeks2 * 7;
13246          this._months = +months2 + quarters * 3 + years2 * 12;
13247          this._data = {};
13248          this._locale = getLocale();
13249          this._bubble();
13250        }
13251        function isDuration(obj) {
13252          return obj instanceof Duration;
13253        }
13254        function absRound(number) {
13255          if (number < 0) {
13256            return Math.round(-1 * number) * -1;
13257          } else {
13258            return Math.round(number);
13259          }
13260        }
13261        function compareArrays(array1, array2, dontConvert) {
13262          var len = Math.min(array1.length, array2.length), lengthDiff = Math.abs(array1.length - array2.length), diffs = 0, i2;
13263          for (i2 = 0; i2 < len; i2++) {
13264            if (dontConvert && array1[i2] !== array2[i2] || !dontConvert && toInt(array1[i2]) !== toInt(array2[i2])) {
13265              diffs++;
13266            }
13267          }
13268          return diffs + lengthDiff;
13269        }
13270        function offset(token2, separator) {
13271          addFormatToken(token2, 0, 0, function() {
13272            var offset2 = this.utcOffset(), sign2 = "+";
13273            if (offset2 < 0) {
13274              offset2 = -offset2;
13275              sign2 = "-";
13276            }
13277            return sign2 + zeroFill(~~(offset2 / 60), 2) + separator + zeroFill(~~offset2 % 60, 2);
13278          });
13279        }
13280        offset("Z", ":");
13281        offset("ZZ", "");
13282        addRegexToken("Z", matchShortOffset);
13283        addRegexToken("ZZ", matchShortOffset);
13284        addParseToken(["Z", "ZZ"], function(input, array, config) {
13285          config._useUTC = true;
13286          config._tzm = offsetFromString(matchShortOffset, input);
13287        });
13288        var chunkOffset = /([\+\-]|\d\d)/gi;
13289        function offsetFromString(matcher, string) {
13290          var matches = (string || "").match(matcher), chunk, parts2, minutes2;
13291          if (matches === null) {
13292            return null;
13293          }
13294          chunk = matches[matches.length - 1] || [];
13295          parts2 = (chunk + "").match(chunkOffset) || ["-", 0, 0];
13296          minutes2 = +(parts2[1] * 60) + toInt(parts2[2]);
13297          return minutes2 === 0 ? 0 : parts2[0] === "+" ? minutes2 : -minutes2;
13298        }
13299        function cloneWithOffset(input, model) {
13300          var res, diff2;
13301          if (model._isUTC) {
13302            res = model.clone();
13303            diff2 = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
13304            res._d.setTime(res._d.valueOf() + diff2);
13305            hooks.updateOffset(res, false);
13306            return res;
13307          } else {
13308            return createLocal(input).local();
13309          }
13310        }
13311        function getDateOffset(m) {
13312          return -Math.round(m._d.getTimezoneOffset());
13313        }
13314        hooks.updateOffset = function() {
13315        };
13316        function getSetOffset(input, keepLocalTime, keepMinutes) {
13317          var offset2 = this._offset || 0, localAdjust;
13318          if (!this.isValid()) {
13319            return input != null ? this : NaN;
13320          }
13321          if (input != null) {
13322            if (typeof input === "string") {
13323              input = offsetFromString(matchShortOffset, input);
13324              if (input === null) {
13325                return this;
13326              }
13327            } else if (Math.abs(input) < 16 && !keepMinutes) {
13328              input = input * 60;
13329            }
13330            if (!this._isUTC && keepLocalTime) {
13331              localAdjust = getDateOffset(this);
13332            }
13333            this._offset = input;
13334            this._isUTC = true;
13335            if (localAdjust != null) {
13336              this.add(localAdjust, "m");
13337            }
13338            if (offset2 !== input) {
13339              if (!keepLocalTime || this._changeInProgress) {
13340                addSubtract(
13341                  this,
13342                  createDuration(input - offset2, "m"),
13343                  1,
13344                  false
13345                );
13346              } else if (!this._changeInProgress) {
13347                this._changeInProgress = true;
13348                hooks.updateOffset(this, true);
13349                this._changeInProgress = null;
13350              }
13351            }
13352            return this;
13353          } else {
13354            return this._isUTC ? offset2 : getDateOffset(this);
13355          }
13356        }
13357        function getSetZone(input, keepLocalTime) {
13358          if (input != null) {
13359            if (typeof input !== "string") {
13360              input = -input;
13361            }
13362            this.utcOffset(input, keepLocalTime);
13363            return this;
13364          } else {
13365            return -this.utcOffset();
13366          }
13367        }
13368        function setOffsetToUTC(keepLocalTime) {
13369          return this.utcOffset(0, keepLocalTime);
13370        }
13371        function setOffsetToLocal(keepLocalTime) {
13372          if (this._isUTC) {
13373            this.utcOffset(0, keepLocalTime);
13374            this._isUTC = false;
13375            if (keepLocalTime) {
13376              this.subtract(getDateOffset(this), "m");
13377            }
13378          }
13379          return this;
13380        }
13381        function setOffsetToParsedOffset() {
13382          if (this._tzm != null) {
13383            this.utcOffset(this._tzm, false, true);
13384          } else if (typeof this._i === "string") {
13385            var tZone = offsetFromString(matchOffset, this._i);
13386            if (tZone != null) {
13387              this.utcOffset(tZone);
13388            } else {
13389              this.utcOffset(0, true);
13390            }
13391          }
13392          return this;
13393        }
13394        function hasAlignedHourOffset(input) {
13395          if (!this.isValid()) {
13396            return false;
13397          }
13398          input = input ? createLocal(input).utcOffset() : 0;
13399          return (this.utcOffset() - input) % 60 === 0;
13400        }
13401        function isDaylightSavingTime() {
13402          return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset();
13403        }
13404        function isDaylightSavingTimeShifted() {
13405          if (!isUndefined(this._isDSTShifted)) {
13406            return this._isDSTShifted;
13407          }
13408          var c = {}, other;
13409          copyConfig(c, this);
13410          c = prepareConfig(c);
13411          if (c._a) {
13412            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
13413            this._isDSTShifted = this.isValid() && compareArrays(c._a, other.toArray()) > 0;
13414          } else {
13415            this._isDSTShifted = false;
13416          }
13417          return this._isDSTShifted;
13418        }
13419        function isLocal() {
13420          return this.isValid() ? !this._isUTC : false;
13421        }
13422        function isUtcOffset() {
13423          return this.isValid() ? this._isUTC : false;
13424        }
13425        function isUtc() {
13426          return this.isValid() ? this._isUTC && this._offset === 0 : false;
13427        }
13428        var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/, isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
13429        function createDuration(input, key) {
13430          var duration = input, match = null, sign2, ret, diffRes;
13431          if (isDuration(input)) {
13432            duration = {
13433              ms: input._milliseconds,
13434              d: input._days,
13435              M: input._months
13436            };
13437          } else if (isNumber(input) || !isNaN(+input)) {
13438            duration = {};
13439            if (key) {
13440              duration[key] = +input;
13441            } else {
13442              duration.milliseconds = +input;
13443            }
13444          } else if (match = aspNetRegex.exec(input)) {
13445            sign2 = match[1] === "-" ? -1 : 1;
13446            duration = {
13447              y: 0,
13448              d: toInt(match[DATE]) * sign2,
13449              h: toInt(match[HOUR]) * sign2,
13450              m: toInt(match[MINUTE]) * sign2,
13451              s: toInt(match[SECOND]) * sign2,
13452              ms: toInt(absRound(match[MILLISECOND] * 1e3)) * sign2
13453            };
13454          } else if (match = isoRegex.exec(input)) {
13455            sign2 = match[1] === "-" ? -1 : 1;
13456            duration = {
13457              y: parseIso(match[2], sign2),
13458              M: parseIso(match[3], sign2),
13459              w: parseIso(match[4], sign2),
13460              d: parseIso(match[5], sign2),
13461              h: parseIso(match[6], sign2),
13462              m: parseIso(match[7], sign2),
13463              s: parseIso(match[8], sign2)
13464            };
13465          } else if (duration == null) {
13466            duration = {};
13467          } else if (typeof duration === "object" && ("from" in duration || "to" in duration)) {
13468            diffRes = momentsDifference(
13469              createLocal(duration.from),
13470              createLocal(duration.to)
13471            );
13472            duration = {};
13473            duration.ms = diffRes.milliseconds;
13474            duration.M = diffRes.months;
13475          }
13476          ret = new Duration(duration);
13477          if (isDuration(input) && hasOwnProp(input, "_locale")) {
13478            ret._locale = input._locale;
13479          }
13480          if (isDuration(input) && hasOwnProp(input, "_isValid")) {
13481            ret._isValid = input._isValid;
13482          }
13483          return ret;
13484        }
13485        createDuration.fn = Duration.prototype;
13486        createDuration.invalid = createInvalid$1;
13487        function parseIso(inp, sign2) {
13488          var res = inp && parseFloat(inp.replace(",", "."));
13489          return (isNaN(res) ? 0 : res) * sign2;
13490        }
13491        function positiveMomentsDifference(base, other) {
13492          var res = {};
13493          res.months = other.month() - base.month() + (other.year() - base.year()) * 12;
13494          if (base.clone().add(res.months, "M").isAfter(other)) {
13495            --res.months;
13496          }
13497          res.milliseconds = +other - +base.clone().add(res.months, "M");
13498          return res;
13499        }
13500        function momentsDifference(base, other) {
13501          var res;
13502          if (!(base.isValid() && other.isValid())) {
13503            return { milliseconds: 0, months: 0 };
13504          }
13505          other = cloneWithOffset(other, base);
13506          if (base.isBefore(other)) {
13507            res = positiveMomentsDifference(base, other);
13508          } else {
13509            res = positiveMomentsDifference(other, base);
13510            res.milliseconds = -res.milliseconds;
13511            res.months = -res.months;
13512          }
13513          return res;
13514        }
13515        function createAdder(direction, name2) {
13516          return function(val, period) {
13517            var dur, tmp;
13518            if (period !== null && !isNaN(+period)) {
13519              deprecateSimple(
13520                name2,
13521                "moment()." + name2 + "(period, number) is deprecated. Please use moment()." + name2 + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."
13522              );
13523              tmp = val;
13524              val = period;
13525              period = tmp;
13526            }
13527            dur = createDuration(val, period);
13528            addSubtract(this, dur, direction);
13529            return this;
13530          };
13531        }
13532        function addSubtract(mom, duration, isAdding, updateOffset) {
13533          var milliseconds2 = duration._milliseconds, days2 = absRound(duration._days), months2 = absRound(duration._months);
13534          if (!mom.isValid()) {
13535            return;
13536          }
13537          updateOffset = updateOffset == null ? true : updateOffset;
13538          if (months2) {
13539            setMonth(mom, get(mom, "Month") + months2 * isAdding);
13540          }
13541          if (days2) {
13542            set$1(mom, "Date", get(mom, "Date") + days2 * isAdding);
13543          }
13544          if (milliseconds2) {
13545            mom._d.setTime(mom._d.valueOf() + milliseconds2 * isAdding);
13546          }
13547          if (updateOffset) {
13548            hooks.updateOffset(mom, days2 || months2);
13549          }
13550        }
13551        var add = createAdder(1, "add"), subtract = createAdder(-1, "subtract");
13552        function isString(input) {
13553          return typeof input === "string" || input instanceof String;
13554        }
13555        function isMomentInput(input) {
13556          return isMoment(input) || isDate(input) || isString(input) || isNumber(input) || isNumberOrStringArray(input) || isMomentInputObject(input) || input === null || input === void 0;
13557        }
13558        function isMomentInputObject(input) {
13559          var objectTest = isObject2(input) && !isObjectEmpty(input), propertyTest = false, properties = [
13560            "years",
13561            "year",
13562            "y",
13563            "months",
13564            "month",
13565            "M",
13566            "days",
13567            "day",
13568            "d",
13569            "dates",
13570            "date",
13571            "D",
13572            "hours",
13573            "hour",
13574            "h",
13575            "minutes",
13576            "minute",
13577            "m",
13578            "seconds",
13579            "second",
13580            "s",
13581            "milliseconds",
13582            "millisecond",
13583            "ms"
13584          ], i2, property, propertyLen = properties.length;
13585          for (i2 = 0; i2 < propertyLen; i2 += 1) {
13586            property = properties[i2];
13587            propertyTest = propertyTest || hasOwnProp(input, property);
13588          }
13589          return objectTest && propertyTest;
13590        }
13591        function isNumberOrStringArray(input) {
13592          var arrayTest = isArray(input), dataTypeTest = false;
13593          if (arrayTest) {
13594            dataTypeTest = input.filter(function(item) {
13595              return !isNumber(item) && isString(input);
13596            }).length === 0;
13597          }
13598          return arrayTest && dataTypeTest;
13599        }
13600        function isCalendarSpec(input) {
13601          var objectTest = isObject2(input) && !isObjectEmpty(input), propertyTest = false, properties = [
13602            "sameDay",
13603            "nextDay",
13604            "lastDay",
13605            "nextWeek",
13606            "lastWeek",
13607            "sameElse"
13608          ], i2, property;
13609          for (i2 = 0; i2 < properties.length; i2 += 1) {
13610            property = properties[i2];
13611            propertyTest = propertyTest || hasOwnProp(input, property);
13612          }
13613          return objectTest && propertyTest;
13614        }
13615        function getCalendarFormat(myMoment, now2) {
13616          var diff2 = myMoment.diff(now2, "days", true);
13617          return diff2 < -6 ? "sameElse" : diff2 < -1 ? "lastWeek" : diff2 < 0 ? "lastDay" : diff2 < 1 ? "sameDay" : diff2 < 2 ? "nextDay" : diff2 < 7 ? "nextWeek" : "sameElse";
13618        }
13619        function calendar$1(time, formats) {
13620          if (arguments.length === 1) {
13621            if (!arguments[0]) {
13622              time = void 0;
13623              formats = void 0;
13624            } else if (isMomentInput(arguments[0])) {
13625              time = arguments[0];
13626              formats = void 0;
13627            } else if (isCalendarSpec(arguments[0])) {
13628              formats = arguments[0];
13629              time = void 0;
13630            }
13631          }
13632          var now2 = time || createLocal(), sod = cloneWithOffset(now2, this).startOf("day"), format3 = hooks.calendarFormat(this, sod) || "sameElse", output = formats && (isFunction(formats[format3]) ? formats[format3].call(this, now2) : formats[format3]);
13633          return this.format(
13634            output || this.localeData().calendar(format3, this, createLocal(now2))
13635          );
13636        }
13637        function clone() {
13638          return new Moment(this);
13639        }
13640        function isAfter(input, units) {
13641          var localInput = isMoment(input) ? input : createLocal(input);
13642          if (!(this.isValid() && localInput.isValid())) {
13643            return false;
13644          }
13645          units = normalizeUnits(units) || "millisecond";
13646          if (units === "millisecond") {
13647            return this.valueOf() > localInput.valueOf();
13648          } else {
13649            return localInput.valueOf() < this.clone().startOf(units).valueOf();
13650          }
13651        }
13652        function isBefore(input, units) {
13653          var localInput = isMoment(input) ? input : createLocal(input);
13654          if (!(this.isValid() && localInput.isValid())) {
13655            return false;
13656          }
13657          units = normalizeUnits(units) || "millisecond";
13658          if (units === "millisecond") {
13659            return this.valueOf() < localInput.valueOf();
13660          } else {
13661            return this.clone().endOf(units).valueOf() < localInput.valueOf();
13662          }
13663        }
13664        function isBetween(from2, to2, units, inclusivity) {
13665          var localFrom = isMoment(from2) ? from2 : createLocal(from2), localTo = isMoment(to2) ? to2 : createLocal(to2);
13666          if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
13667            return false;
13668          }
13669          inclusivity = inclusivity || "()";
13670          return (inclusivity[0] === "(" ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) && (inclusivity[1] === ")" ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));
13671        }
13672        function isSame(input, units) {
13673          var localInput = isMoment(input) ? input : createLocal(input), inputMs;
13674          if (!(this.isValid() && localInput.isValid())) {
13675            return false;
13676          }
13677          units = normalizeUnits(units) || "millisecond";
13678          if (units === "millisecond") {
13679            return this.valueOf() === localInput.valueOf();
13680          } else {
13681            inputMs = localInput.valueOf();
13682            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
13683          }
13684        }
13685        function isSameOrAfter(input, units) {
13686          return this.isSame(input, units) || this.isAfter(input, units);
13687        }
13688        function isSameOrBefore(input, units) {
13689          return this.isSame(input, units) || this.isBefore(input, units);
13690        }
13691        function diff(input, units, asFloat) {
13692          var that, zoneDelta, output;
13693          if (!this.isValid()) {
13694            return NaN;
13695          }
13696          that = cloneWithOffset(input, this);
13697          if (!that.isValid()) {
13698            return NaN;
13699          }
13700          zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
13701          units = normalizeUnits(units);
13702          switch (units) {
13703            case "year":
13704              output = monthDiff(this, that) / 12;
13705              break;
13706            case "month":
13707              output = monthDiff(this, that);
13708              break;
13709            case "quarter":
13710              output = monthDiff(this, that) / 3;
13711              break;
13712            case "second":
13713              output = (this - that) / 1e3;
13714              break;
13715            case "minute":
13716              output = (this - that) / 6e4;
13717              break;
13718            case "hour":
13719              output = (this - that) / 36e5;
13720              break;
13721            case "day":
13722              output = (this - that - zoneDelta) / 864e5;
13723              break;
13724            case "week":
13725              output = (this - that - zoneDelta) / 6048e5;
13726              break;
13727            default:
13728              output = this - that;
13729          }
13730          return asFloat ? output : absFloor(output);
13731        }
13732        function monthDiff(a, b) {
13733          if (a.date() < b.date()) {
13734            return -monthDiff(b, a);
13735          }
13736          var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()), anchor = a.clone().add(wholeMonthDiff, "months"), anchor2, adjust;
13737          if (b - anchor < 0) {
13738            anchor2 = a.clone().add(wholeMonthDiff - 1, "months");
13739            adjust = (b - anchor) / (anchor - anchor2);
13740          } else {
13741            anchor2 = a.clone().add(wholeMonthDiff + 1, "months");
13742            adjust = (b - anchor) / (anchor2 - anchor);
13743          }
13744          return -(wholeMonthDiff + adjust) || 0;
13745        }
13746        hooks.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ";
13747        hooks.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
13748        function toString2() {
13749          return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ");
13750        }
13751        function toISOString(keepOffset) {
13752          if (!this.isValid()) {
13753            return null;
13754          }
13755          var utc = keepOffset !== true, m = utc ? this.clone().utc() : this;
13756          if (m.year() < 0 || m.year() > 9999) {
13757            return formatMoment(
13758              m,
13759              utc ? "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"
13760            );
13761          }
13762          if (isFunction(Date.prototype.toISOString)) {
13763            if (utc) {
13764              return this.toDate().toISOString();
13765            } else {
13766              return new Date(this.valueOf() + this.utcOffset() * 60 * 1e3).toISOString().replace("Z", formatMoment(m, "Z"));
13767            }
13768          }
13769          return formatMoment(
13770            m,
13771            utc ? "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]" : "YYYY-MM-DD[T]HH:mm:ss.SSSZ"
13772          );
13773        }
13774        function inspect() {
13775          if (!this.isValid()) {
13776            return "moment.invalid(/* " + this._i + " */)";
13777          }
13778          var func = "moment", zone = "", prefix, year, datetime, suffix;
13779          if (!this.isLocal()) {
13780            func = this.utcOffset() === 0 ? "moment.utc" : "moment.parseZone";
13781            zone = "Z";
13782          }
13783          prefix = "[" + func + '("]';
13784          year = 0 <= this.year() && this.year() <= 9999 ? "YYYY" : "YYYYYY";
13785          datetime = "-MM-DD[T]HH:mm:ss.SSS";
13786          suffix = zone + '[")]';
13787          return this.format(prefix + year + datetime + suffix);
13788        }
13789        function format2(inputString) {
13790          if (!inputString) {
13791            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
13792          }
13793          var output = formatMoment(this, inputString);
13794          return this.localeData().postformat(output);
13795        }
13796        function from(time, withoutSuffix) {
13797          if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {
13798            return createDuration({ to: this, from: time }).locale(this.locale()).humanize(!withoutSuffix);
13799          } else {
13800            return this.localeData().invalidDate();
13801          }
13802        }
13803        function fromNow(withoutSuffix) {
13804          return this.from(createLocal(), withoutSuffix);
13805        }
13806        function to(time, withoutSuffix) {
13807          if (this.isValid() && (isMoment(time) && time.isValid() || createLocal(time).isValid())) {
13808            return createDuration({ from: this, to: time }).locale(this.locale()).humanize(!withoutSuffix);
13809          } else {
13810            return this.localeData().invalidDate();
13811          }
13812        }
13813        function toNow(withoutSuffix) {
13814          return this.to(createLocal(), withoutSuffix);
13815        }
13816        function locale(key) {
13817          var newLocaleData;
13818          if (key === void 0) {
13819            return this._locale._abbr;
13820          } else {
13821            newLocaleData = getLocale(key);
13822            if (newLocaleData != null) {
13823              this._locale = newLocaleData;
13824            }
13825            return this;
13826          }
13827        }
13828        var lang = deprecate(
13829          "moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",
13830          function(key) {
13831            if (key === void 0) {
13832              return this.localeData();
13833            } else {
13834              return this.locale(key);
13835            }
13836          }
13837        );
13838        function localeData() {
13839          return this._locale;
13840        }
13841        var MS_PER_SECOND = 1e3, MS_PER_MINUTE = 60 * MS_PER_SECOND, MS_PER_HOUR = 60 * MS_PER_MINUTE, MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
13842        function mod$1(dividend, divisor) {
13843          return (dividend % divisor + divisor) % divisor;
13844        }
13845        function localStartOfDate(y, m, d) {
13846          if (y < 100 && y >= 0) {
13847            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
13848          } else {
13849            return new Date(y, m, d).valueOf();
13850          }
13851        }
13852        function utcStartOfDate(y, m, d) {
13853          if (y < 100 && y >= 0) {
13854            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
13855          } else {
13856            return Date.UTC(y, m, d);
13857          }
13858        }
13859        function startOf(units) {
13860          var time, startOfDate;
13861          units = normalizeUnits(units);
13862          if (units === void 0 || units === "millisecond" || !this.isValid()) {
13863            return this;
13864          }
13865          startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
13866          switch (units) {
13867            case "year":
13868              time = startOfDate(this.year(), 0, 1);
13869              break;
13870            case "quarter":
13871              time = startOfDate(
13872                this.year(),
13873                this.month() - this.month() % 3,
13874                1
13875              );
13876              break;
13877            case "month":
13878              time = startOfDate(this.year(), this.month(), 1);
13879              break;
13880            case "week":
13881              time = startOfDate(
13882                this.year(),
13883                this.month(),
13884                this.date() - this.weekday()
13885              );
13886              break;
13887            case "isoWeek":
13888              time = startOfDate(
13889                this.year(),
13890                this.month(),
13891                this.date() - (this.isoWeekday() - 1)
13892              );
13893              break;
13894            case "day":
13895            case "date":
13896              time = startOfDate(this.year(), this.month(), this.date());
13897              break;
13898            case "hour":
13899              time = this._d.valueOf();
13900              time -= mod$1(
13901                time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
13902                MS_PER_HOUR
13903              );
13904              break;
13905            case "minute":
13906              time = this._d.valueOf();
13907              time -= mod$1(time, MS_PER_MINUTE);
13908              break;
13909            case "second":
13910              time = this._d.valueOf();
13911              time -= mod$1(time, MS_PER_SECOND);
13912              break;
13913          }
13914          this._d.setTime(time);
13915          hooks.updateOffset(this, true);
13916          return this;
13917        }
13918        function endOf(units) {
13919          var time, startOfDate;
13920          units = normalizeUnits(units);
13921          if (units === void 0 || units === "millisecond" || !this.isValid()) {
13922            return this;
13923          }
13924          startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
13925          switch (units) {
13926            case "year":
13927              time = startOfDate(this.year() + 1, 0, 1) - 1;
13928              break;
13929            case "quarter":
13930              time = startOfDate(
13931                this.year(),
13932                this.month() - this.month() % 3 + 3,
13933                1
13934              ) - 1;
13935              break;
13936            case "month":
13937              time = startOfDate(this.year(), this.month() + 1, 1) - 1;
13938              break;
13939            case "week":
13940              time = startOfDate(
13941                this.year(),
13942                this.month(),
13943                this.date() - this.weekday() + 7
13944              ) - 1;
13945              break;
13946            case "isoWeek":
13947              time = startOfDate(
13948                this.year(),
13949                this.month(),
13950                this.date() - (this.isoWeekday() - 1) + 7
13951              ) - 1;
13952              break;
13953            case "day":
13954            case "date":
13955              time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
13956              break;
13957            case "hour":
13958              time = this._d.valueOf();
13959              time += MS_PER_HOUR - mod$1(
13960                time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
13961                MS_PER_HOUR
13962              ) - 1;
13963              break;
13964            case "minute":
13965              time = this._d.valueOf();
13966              time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
13967              break;
13968            case "second":
13969              time = this._d.valueOf();
13970              time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
13971              break;
13972          }
13973          this._d.setTime(time);
13974          hooks.updateOffset(this, true);
13975          return this;
13976        }
13977        function valueOf() {
13978          return this._d.valueOf() - (this._offset || 0) * 6e4;
13979        }
13980        function unix() {
13981          return Math.floor(this.valueOf() / 1e3);
13982        }
13983        function toDate() {
13984          return new Date(this.valueOf());
13985        }
13986        function toArray2() {
13987          var m = this;
13988          return [
13989            m.year(),
13990            m.month(),
13991            m.date(),
13992            m.hour(),
13993            m.minute(),
13994            m.second(),
13995            m.millisecond()
13996          ];
13997        }
13998        function toObject() {
13999          var m = this;
14000          return {
14001            years: m.year(),
14002            months: m.month(),
14003            date: m.date(),
14004            hours: m.hours(),
14005            minutes: m.minutes(),
14006            seconds: m.seconds(),
14007            milliseconds: m.milliseconds()
14008          };
14009        }
14010        function toJSON() {
14011          return this.isValid() ? this.toISOString() : null;
14012        }
14013        function isValid$2() {
14014          return isValid(this);
14015        }
14016        function parsingFlags() {
14017          return extend({}, getParsingFlags(this));
14018        }
14019        function invalidAt() {
14020          return getParsingFlags(this).overflow;
14021        }
14022        function creationData() {
14023          return {
14024            input: this._i,
14025            format: this._f,
14026            locale: this._locale,
14027            isUTC: this._isUTC,
14028            strict: this._strict
14029          };
14030        }
14031        addFormatToken("N", 0, 0, "eraAbbr");
14032        addFormatToken("NN", 0, 0, "eraAbbr");
14033        addFormatToken("NNN", 0, 0, "eraAbbr");
14034        addFormatToken("NNNN", 0, 0, "eraName");
14035        addFormatToken("NNNNN", 0, 0, "eraNarrow");
14036        addFormatToken("y", ["y", 1], "yo", "eraYear");
14037        addFormatToken("y", ["yy", 2], 0, "eraYear");
14038        addFormatToken("y", ["yyy", 3], 0, "eraYear");
14039        addFormatToken("y", ["yyyy", 4], 0, "eraYear");
14040        addRegexToken("N", matchEraAbbr);
14041        addRegexToken("NN", matchEraAbbr);
14042        addRegexToken("NNN", matchEraAbbr);
14043        addRegexToken("NNNN", matchEraName);
14044        addRegexToken("NNNNN", matchEraNarrow);
14045        addParseToken(
14046          ["N", "NN", "NNN", "NNNN", "NNNNN"],
14047          function(input, array, config, token2) {
14048            var era = config._locale.erasParse(input, token2, config._strict);
14049            if (era) {
14050              getParsingFlags(config).era = era;
14051            } else {
14052              getParsingFlags(config).invalidEra = input;
14053            }
14054          }
14055        );
14056        addRegexToken("y", matchUnsigned);
14057        addRegexToken("yy", matchUnsigned);
14058        addRegexToken("yyy", matchUnsigned);
14059        addRegexToken("yyyy", matchUnsigned);
14060        addRegexToken("yo", matchEraYearOrdinal);
14061        addParseToken(["y", "yy", "yyy", "yyyy"], YEAR);
14062        addParseToken(["yo"], function(input, array, config, token2) {
14063          var match;
14064          if (config._locale._eraYearOrdinalRegex) {
14065            match = input.match(config._locale._eraYearOrdinalRegex);
14066          }
14067          if (config._locale.eraYearOrdinalParse) {
14068            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
14069          } else {
14070            array[YEAR] = parseInt(input, 10);
14071          }
14072        });
14073        function localeEras(m, format3) {
14074          var i2, l, date, eras = this._eras || getLocale("en")._eras;
14075          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
14076            switch (typeof eras[i2].since) {
14077              case "string":
14078                date = hooks(eras[i2].since).startOf("day");
14079                eras[i2].since = date.valueOf();
14080                break;
14081            }
14082            switch (typeof eras[i2].until) {
14083              case "undefined":
14084                eras[i2].until = Infinity;
14085                break;
14086              case "string":
14087                date = hooks(eras[i2].until).startOf("day").valueOf();
14088                eras[i2].until = date.valueOf();
14089                break;
14090            }
14091          }
14092          return eras;
14093        }
14094        function localeErasParse(eraName, format3, strict) {
14095          var i2, l, eras = this.eras(), name2, abbr, narrow;
14096          eraName = eraName.toUpperCase();
14097          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
14098            name2 = eras[i2].name.toUpperCase();
14099            abbr = eras[i2].abbr.toUpperCase();
14100            narrow = eras[i2].narrow.toUpperCase();
14101            if (strict) {
14102              switch (format3) {
14103                case "N":
14104                case "NN":
14105                case "NNN":
14106                  if (abbr === eraName) {
14107                    return eras[i2];
14108                  }
14109                  break;
14110                case "NNNN":
14111                  if (name2 === eraName) {
14112                    return eras[i2];
14113                  }
14114                  break;
14115                case "NNNNN":
14116                  if (narrow === eraName) {
14117                    return eras[i2];
14118                  }
14119                  break;
14120              }
14121            } else if ([name2, abbr, narrow].indexOf(eraName) >= 0) {
14122              return eras[i2];
14123            }
14124          }
14125        }
14126        function localeErasConvertYear(era, year) {
14127          var dir = era.since <= era.until ? 1 : -1;
14128          if (year === void 0) {
14129            return hooks(era.since).year();
14130          } else {
14131            return hooks(era.since).year() + (year - era.offset) * dir;
14132          }
14133        }
14134        function getEraName() {
14135          var i2, l, val, eras = this.localeData().eras();
14136          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
14137            val = this.clone().startOf("day").valueOf();
14138            if (eras[i2].since <= val && val <= eras[i2].until) {
14139              return eras[i2].name;
14140            }
14141            if (eras[i2].until <= val && val <= eras[i2].since) {
14142              return eras[i2].name;
14143            }
14144          }
14145          return "";
14146        }
14147        function getEraNarrow() {
14148          var i2, l, val, eras = this.localeData().eras();
14149          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
14150            val = this.clone().startOf("day").valueOf();
14151            if (eras[i2].since <= val && val <= eras[i2].until) {
14152              return eras[i2].narrow;
14153            }
14154            if (eras[i2].until <= val && val <= eras[i2].since) {
14155              return eras[i2].narrow;
14156            }
14157          }
14158          return "";
14159        }
14160        function getEraAbbr() {
14161          var i2, l, val, eras = this.localeData().eras();
14162          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
14163            val = this.clone().startOf("day").valueOf();
14164            if (eras[i2].since <= val && val <= eras[i2].until) {
14165              return eras[i2].abbr;
14166            }
14167            if (eras[i2].until <= val && val <= eras[i2].since) {
14168              return eras[i2].abbr;
14169            }
14170          }
14171          return "";
14172        }
14173        function getEraYear() {
14174          var i2, l, dir, val, eras = this.localeData().eras();
14175          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
14176            dir = eras[i2].since <= eras[i2].until ? 1 : -1;
14177            val = this.clone().startOf("day").valueOf();
14178            if (eras[i2].since <= val && val <= eras[i2].until || eras[i2].until <= val && val <= eras[i2].since) {
14179              return (this.year() - hooks(eras[i2].since).year()) * dir + eras[i2].offset;
14180            }
14181          }
14182          return this.year();
14183        }
14184        function erasNameRegex(isStrict) {
14185          if (!hasOwnProp(this, "_erasNameRegex")) {
14186            computeErasParse.call(this);
14187          }
14188          return isStrict ? this._erasNameRegex : this._erasRegex;
14189        }
14190        function erasAbbrRegex(isStrict) {
14191          if (!hasOwnProp(this, "_erasAbbrRegex")) {
14192            computeErasParse.call(this);
14193          }
14194          return isStrict ? this._erasAbbrRegex : this._erasRegex;
14195        }
14196        function erasNarrowRegex(isStrict) {
14197          if (!hasOwnProp(this, "_erasNarrowRegex")) {
14198            computeErasParse.call(this);
14199          }
14200          return isStrict ? this._erasNarrowRegex : this._erasRegex;
14201        }
14202        function matchEraAbbr(isStrict, locale2) {
14203          return locale2.erasAbbrRegex(isStrict);
14204        }
14205        function matchEraName(isStrict, locale2) {
14206          return locale2.erasNameRegex(isStrict);
14207        }
14208        function matchEraNarrow(isStrict, locale2) {
14209          return locale2.erasNarrowRegex(isStrict);
14210        }
14211        function matchEraYearOrdinal(isStrict, locale2) {
14212          return locale2._eraYearOrdinalRegex || matchUnsigned;
14213        }
14214        function computeErasParse() {
14215          var abbrPieces = [], namePieces = [], narrowPieces = [], mixedPieces = [], i2, l, eras = this.eras();
14216          for (i2 = 0, l = eras.length; i2 < l; ++i2) {
14217            namePieces.push(regexEscape(eras[i2].name));
14218            abbrPieces.push(regexEscape(eras[i2].abbr));
14219            narrowPieces.push(regexEscape(eras[i2].narrow));
14220            mixedPieces.push(regexEscape(eras[i2].name));
14221            mixedPieces.push(regexEscape(eras[i2].abbr));
14222            mixedPieces.push(regexEscape(eras[i2].narrow));
14223          }
14224          this._erasRegex = new RegExp("^(" + mixedPieces.join("|") + ")", "i");
14225          this._erasNameRegex = new RegExp("^(" + namePieces.join("|") + ")", "i");
14226          this._erasAbbrRegex = new RegExp("^(" + abbrPieces.join("|") + ")", "i");
14227          this._erasNarrowRegex = new RegExp(
14228            "^(" + narrowPieces.join("|") + ")",
14229            "i"
14230          );
14231        }
14232        addFormatToken(0, ["gg", 2], 0, function() {
14233          return this.weekYear() % 100;
14234        });
14235        addFormatToken(0, ["GG", 2], 0, function() {
14236          return this.isoWeekYear() % 100;
14237        });
14238        function addWeekYearFormatToken(token2, getter) {
14239          addFormatToken(0, [token2, token2.length], 0, getter);
14240        }
14241        addWeekYearFormatToken("gggg", "weekYear");
14242        addWeekYearFormatToken("ggggg", "weekYear");
14243        addWeekYearFormatToken("GGGG", "isoWeekYear");
14244        addWeekYearFormatToken("GGGGG", "isoWeekYear");
14245        addUnitAlias("weekYear", "gg");
14246        addUnitAlias("isoWeekYear", "GG");
14247        addUnitPriority("weekYear", 1);
14248        addUnitPriority("isoWeekYear", 1);
14249        addRegexToken("G", matchSigned);
14250        addRegexToken("g", matchSigned);
14251        addRegexToken("GG", match1to2, match2);
14252        addRegexToken("gg", match1to2, match2);
14253        addRegexToken("GGGG", match1to4, match4);
14254        addRegexToken("gggg", match1to4, match4);
14255        addRegexToken("GGGGG", match1to6, match6);
14256        addRegexToken("ggggg", match1to6, match6);
14257        addWeekParseToken(
14258          ["gggg", "ggggg", "GGGG", "GGGGG"],
14259          function(input, week, config, token2) {
14260            week[token2.substr(0, 2)] = toInt(input);
14261          }
14262        );
14263        addWeekParseToken(["gg", "GG"], function(input, week, config, token2) {
14264          week[token2] = hooks.parseTwoDigitYear(input);
14265        });
14266        function getSetWeekYear(input) {
14267          return getSetWeekYearHelper.call(
14268            this,
14269            input,
14270            this.week(),
14271            this.weekday(),
14272            this.localeData()._week.dow,
14273            this.localeData()._week.doy
14274          );
14275        }
14276        function getSetISOWeekYear(input) {
14277          return getSetWeekYearHelper.call(
14278            this,
14279            input,
14280            this.isoWeek(),
14281            this.isoWeekday(),
14282            1,
14283            4
14284          );
14285        }
14286        function getISOWeeksInYear() {
14287          return weeksInYear(this.year(), 1, 4);
14288        }
14289        function getISOWeeksInISOWeekYear() {
14290          return weeksInYear(this.isoWeekYear(), 1, 4);
14291        }
14292        function getWeeksInYear() {
14293          var weekInfo = this.localeData()._week;
14294          return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
14295        }
14296        function getWeeksInWeekYear() {
14297          var weekInfo = this.localeData()._week;
14298          return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
14299        }
14300        function getSetWeekYearHelper(input, week, weekday, dow, doy) {
14301          var weeksTarget;
14302          if (input == null) {
14303            return weekOfYear(this, dow, doy).year;
14304          } else {
14305            weeksTarget = weeksInYear(input, dow, doy);
14306            if (week > weeksTarget) {
14307              week = weeksTarget;
14308            }
14309            return setWeekAll.call(this, input, week, weekday, dow, doy);
14310          }
14311        }
14312        function setWeekAll(weekYear, week, weekday, dow, doy) {
14313          var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy), date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
14314          this.year(date.getUTCFullYear());
14315          this.month(date.getUTCMonth());
14316          this.date(date.getUTCDate());
14317          return this;
14318        }
14319        addFormatToken("Q", 0, "Qo", "quarter");
14320        addUnitAlias("quarter", "Q");
14321        addUnitPriority("quarter", 7);
14322        addRegexToken("Q", match1);
14323        addParseToken("Q", function(input, array) {
14324          array[MONTH] = (toInt(input) - 1) * 3;
14325        });
14326        function getSetQuarter(input) {
14327          return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
14328        }
14329        addFormatToken("D", ["DD", 2], "Do", "date");
14330        addUnitAlias("date", "D");
14331        addUnitPriority("date", 9);
14332        addRegexToken("D", match1to2);
14333        addRegexToken("DD", match1to2, match2);
14334        addRegexToken("Do", function(isStrict, locale2) {
14335          return isStrict ? locale2._dayOfMonthOrdinalParse || locale2._ordinalParse : locale2._dayOfMonthOrdinalParseLenient;
14336        });
14337        addParseToken(["D", "DD"], DATE);
14338        addParseToken("Do", function(input, array) {
14339          array[DATE] = toInt(input.match(match1to2)[0]);
14340        });
14341        var getSetDayOfMonth = makeGetSet("Date", true);
14342        addFormatToken("DDD", ["DDDD", 3], "DDDo", "dayOfYear");
14343        addUnitAlias("dayOfYear", "DDD");
14344        addUnitPriority("dayOfYear", 4);
14345        addRegexToken("DDD", match1to3);
14346        addRegexToken("DDDD", match3);
14347        addParseToken(["DDD", "DDDD"], function(input, array, config) {
14348          config._dayOfYear = toInt(input);
14349        });
14350        function getSetDayOfYear(input) {
14351          var dayOfYear = Math.round(
14352            (this.clone().startOf("day") - this.clone().startOf("year")) / 864e5
14353          ) + 1;
14354          return input == null ? dayOfYear : this.add(input - dayOfYear, "d");
14355        }
14356        addFormatToken("m", ["mm", 2], 0, "minute");
14357        addUnitAlias("minute", "m");
14358        addUnitPriority("minute", 14);
14359        addRegexToken("m", match1to2);
14360        addRegexToken("mm", match1to2, match2);
14361        addParseToken(["m", "mm"], MINUTE);
14362        var getSetMinute = makeGetSet("Minutes", false);
14363        addFormatToken("s", ["ss", 2], 0, "second");
14364        addUnitAlias("second", "s");
14365        addUnitPriority("second", 15);
14366        addRegexToken("s", match1to2);
14367        addRegexToken("ss", match1to2, match2);
14368        addParseToken(["s", "ss"], SECOND);
14369        var getSetSecond = makeGetSet("Seconds", false);
14370        addFormatToken("S", 0, 0, function() {
14371          return ~~(this.millisecond() / 100);
14372        });
14373        addFormatToken(0, ["SS", 2], 0, function() {
14374          return ~~(this.millisecond() / 10);
14375        });
14376        addFormatToken(0, ["SSS", 3], 0, "millisecond");
14377        addFormatToken(0, ["SSSS", 4], 0, function() {
14378          return this.millisecond() * 10;
14379        });
14380        addFormatToken(0, ["SSSSS", 5], 0, function() {
14381          return this.millisecond() * 100;
14382        });
14383        addFormatToken(0, ["SSSSSS", 6], 0, function() {
14384          return this.millisecond() * 1e3;
14385        });
14386        addFormatToken(0, ["SSSSSSS", 7], 0, function() {
14387          return this.millisecond() * 1e4;
14388        });
14389        addFormatToken(0, ["SSSSSSSS", 8], 0, function() {
14390          return this.millisecond() * 1e5;
14391        });
14392        addFormatToken(0, ["SSSSSSSSS", 9], 0, function() {
14393          return this.millisecond() * 1e6;
14394        });
14395        addUnitAlias("millisecond", "ms");
14396        addUnitPriority("millisecond", 16);
14397        addRegexToken("S", match1to3, match1);
14398        addRegexToken("SS", match1to3, match2);
14399        addRegexToken("SSS", match1to3, match3);
14400        var token, getSetMillisecond;
14401        for (token = "SSSS"; token.length <= 9; token += "S") {
14402          addRegexToken(token, matchUnsigned);
14403        }
14404        function parseMs(input, array) {
14405          array[MILLISECOND] = toInt(("0." + input) * 1e3);
14406        }
14407        for (token = "S"; token.length <= 9; token += "S") {
14408          addParseToken(token, parseMs);
14409        }
14410        getSetMillisecond = makeGetSet("Milliseconds", false);
14411        addFormatToken("z", 0, 0, "zoneAbbr");
14412        addFormatToken("zz", 0, 0, "zoneName");
14413        function getZoneAbbr() {
14414          return this._isUTC ? "UTC" : "";
14415        }
14416        function getZoneName() {
14417          return this._isUTC ? "Coordinated Universal Time" : "";
14418        }
14419        var proto = Moment.prototype;
14420        proto.add = add;
14421        proto.calendar = calendar$1;
14422        proto.clone = clone;
14423        proto.diff = diff;
14424        proto.endOf = endOf;
14425        proto.format = format2;
14426        proto.from = from;
14427        proto.fromNow = fromNow;
14428        proto.to = to;
14429        proto.toNow = toNow;
14430        proto.get = stringGet;
14431        proto.invalidAt = invalidAt;
14432        proto.isAfter = isAfter;
14433        proto.isBefore = isBefore;
14434        proto.isBetween = isBetween;
14435        proto.isSame = isSame;
14436        proto.isSameOrAfter = isSameOrAfter;
14437        proto.isSameOrBefore = isSameOrBefore;
14438        proto.isValid = isValid$2;
14439        proto.lang = lang;
14440        proto.locale = locale;
14441        proto.localeData = localeData;
14442        proto.max = prototypeMax;
14443        proto.min = prototypeMin;
14444        proto.parsingFlags = parsingFlags;
14445        proto.set = stringSet;
14446        proto.startOf = startOf;
14447        proto.subtract = subtract;
14448        proto.toArray = toArray2;
14449        proto.toObject = toObject;
14450        proto.toDate = toDate;
14451        proto.toISOString = toISOString;
14452        proto.inspect = inspect;
14453        if (typeof Symbol !== "undefined" && Symbol.for != null) {
14454          proto[Symbol.for("nodejs.util.inspect.custom")] = function() {
14455            return "Moment<" + this.format() + ">";
14456          };
14457        }
14458        proto.toJSON = toJSON;
14459        proto.toString = toString2;
14460        proto.unix = unix;
14461        proto.valueOf = valueOf;
14462        proto.creationData = creationData;
14463        proto.eraName = getEraName;
14464        proto.eraNarrow = getEraNarrow;
14465        proto.eraAbbr = getEraAbbr;
14466        proto.eraYear = getEraYear;
14467        proto.year = getSetYear;
14468        proto.isLeapYear = getIsLeapYear;
14469        proto.weekYear = getSetWeekYear;
14470        proto.isoWeekYear = getSetISOWeekYear;
14471        proto.quarter = proto.quarters = getSetQuarter;
14472        proto.month = getSetMonth;
14473        proto.daysInMonth = getDaysInMonth;
14474        proto.week = proto.weeks = getSetWeek;
14475        proto.isoWeek = proto.isoWeeks = getSetISOWeek;
14476        proto.weeksInYear = getWeeksInYear;
14477        proto.weeksInWeekYear = getWeeksInWeekYear;
14478        proto.isoWeeksInYear = getISOWeeksInYear;
14479        proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
14480        proto.date = getSetDayOfMonth;
14481        proto.day = proto.days = getSetDayOfWeek;
14482        proto.weekday = getSetLocaleDayOfWeek;
14483        proto.isoWeekday = getSetISODayOfWeek;
14484        proto.dayOfYear = getSetDayOfYear;
14485        proto.hour = proto.hours = getSetHour;
14486        proto.minute = proto.minutes = getSetMinute;
14487        proto.second = proto.seconds = getSetSecond;
14488        proto.millisecond = proto.milliseconds = getSetMillisecond;
14489        proto.utcOffset = getSetOffset;
14490        proto.utc = setOffsetToUTC;
14491        proto.local = setOffsetToLocal;
14492        proto.parseZone = setOffsetToParsedOffset;
14493        proto.hasAlignedHourOffset = hasAlignedHourOffset;
14494        proto.isDST = isDaylightSavingTime;
14495        proto.isLocal = isLocal;
14496        proto.isUtcOffset = isUtcOffset;
14497        proto.isUtc = isUtc;
14498        proto.isUTC = isUtc;
14499        proto.zoneAbbr = getZoneAbbr;
14500        proto.zoneName = getZoneName;
14501        proto.dates = deprecate(
14502          "dates accessor is deprecated. Use date instead.",
14503          getSetDayOfMonth
14504        );
14505        proto.months = deprecate(
14506          "months accessor is deprecated. Use month instead",
14507          getSetMonth
14508        );
14509        proto.years = deprecate(
14510          "years accessor is deprecated. Use year instead",
14511          getSetYear
14512        );
14513        proto.zone = deprecate(
14514          "moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",
14515          getSetZone
14516        );
14517        proto.isDSTShifted = deprecate(
14518          "isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",
14519          isDaylightSavingTimeShifted
14520        );
14521        function createUnix(input) {
14522          return createLocal(input * 1e3);
14523        }
14524        function createInZone() {
14525          return createLocal.apply(null, arguments).parseZone();
14526        }
14527        function preParsePostFormat(string) {
14528          return string;
14529        }
14530        var proto$1 = Locale.prototype;
14531        proto$1.calendar = calendar;
14532        proto$1.longDateFormat = longDateFormat;
14533        proto$1.invalidDate = invalidDate;
14534        proto$1.ordinal = ordinal;
14535        proto$1.preparse = preParsePostFormat;
14536        proto$1.postformat = preParsePostFormat;
14537        proto$1.relativeTime = relativeTime;
14538        proto$1.pastFuture = pastFuture;
14539        proto$1.set = set;
14540        proto$1.eras = localeEras;
14541        proto$1.erasParse = localeErasParse;
14542        proto$1.erasConvertYear = localeErasConvertYear;
14543        proto$1.erasAbbrRegex = erasAbbrRegex;
14544        proto$1.erasNameRegex = erasNameRegex;
14545        proto$1.erasNarrowRegex = erasNarrowRegex;
14546        proto$1.months = localeMonths;
14547        proto$1.monthsShort = localeMonthsShort;
14548        proto$1.monthsParse = localeMonthsParse;
14549        proto$1.monthsRegex = monthsRegex;
14550        proto$1.monthsShortRegex = monthsShortRegex;
14551        proto$1.week = localeWeek;
14552        proto$1.firstDayOfYear = localeFirstDayOfYear;
14553        proto$1.firstDayOfWeek = localeFirstDayOfWeek;
14554        proto$1.weekdays = localeWeekdays;
14555        proto$1.weekdaysMin = localeWeekdaysMin;
14556        proto$1.weekdaysShort = localeWeekdaysShort;
14557        proto$1.weekdaysParse = localeWeekdaysParse;
14558        proto$1.weekdaysRegex = weekdaysRegex;
14559        proto$1.weekdaysShortRegex = weekdaysShortRegex;
14560        proto$1.weekdaysMinRegex = weekdaysMinRegex;
14561        proto$1.isPM = localeIsPM;
14562        proto$1.meridiem = localeMeridiem;
14563        function get$1(format3, index, field, setter) {
14564          var locale2 = getLocale(), utc = createUTC().set(setter, index);
14565          return locale2[field](utc, format3);
14566        }
14567        function listMonthsImpl(format3, index, field) {
14568          if (isNumber(format3)) {
14569            index = format3;
14570            format3 = void 0;
14571          }
14572          format3 = format3 || "";
14573          if (index != null) {
14574            return get$1(format3, index, field, "month");
14575          }
14576          var i2, out = [];
14577          for (i2 = 0; i2 < 12; i2++) {
14578            out[i2] = get$1(format3, i2, field, "month");
14579          }
14580          return out;
14581        }
14582        function listWeekdaysImpl(localeSorted, format3, index, field) {
14583          if (typeof localeSorted === "boolean") {
14584            if (isNumber(format3)) {
14585              index = format3;
14586              format3 = void 0;
14587            }
14588            format3 = format3 || "";
14589          } else {
14590            format3 = localeSorted;
14591            index = format3;
14592            localeSorted = false;
14593            if (isNumber(format3)) {
14594              index = format3;
14595              format3 = void 0;
14596            }
14597            format3 = format3 || "";
14598          }
14599          var locale2 = getLocale(), shift = localeSorted ? locale2._week.dow : 0, i2, out = [];
14600          if (index != null) {
14601            return get$1(format3, (index + shift) % 7, field, "day");
14602          }
14603          for (i2 = 0; i2 < 7; i2++) {
14604            out[i2] = get$1(format3, (i2 + shift) % 7, field, "day");
14605          }
14606          return out;
14607        }
14608        function listMonths(format3, index) {
14609          return listMonthsImpl(format3, index, "months");
14610        }
14611        function listMonthsShort(format3, index) {
14612          return listMonthsImpl(format3, index, "monthsShort");
14613        }
14614        function listWeekdays(localeSorted, format3, index) {
14615          return listWeekdaysImpl(localeSorted, format3, index, "weekdays");
14616        }
14617        function listWeekdaysShort(localeSorted, format3, index) {
14618          return listWeekdaysImpl(localeSorted, format3, index, "weekdaysShort");
14619        }
14620        function listWeekdaysMin(localeSorted, format3, index) {
14621          return listWeekdaysImpl(localeSorted, format3, index, "weekdaysMin");
14622        }
14623        getSetGlobalLocale("en", {
14624          eras: [
14625            {
14626              since: "0001-01-01",
14627              until: Infinity,
14628              offset: 1,
14629              name: "Anno Domini",
14630              narrow: "AD",
14631              abbr: "AD"
14632            },
14633            {
14634              since: "0000-12-31",
14635              until: -Infinity,
14636              offset: 1,
14637              name: "Before Christ",
14638              narrow: "BC",
14639              abbr: "BC"
14640            }
14641          ],
14642          dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
14643          ordinal: function(number) {
14644            var b = number % 10, output = toInt(number % 100 / 10) === 1 ? "th" : b === 1 ? "st" : b === 2 ? "nd" : b === 3 ? "rd" : "th";
14645            return number + output;
14646          }
14647        });
14648        hooks.lang = deprecate(
14649          "moment.lang is deprecated. Use moment.locale instead.",
14650          getSetGlobalLocale
14651        );
14652        hooks.langData = deprecate(
14653          "moment.langData is deprecated. Use moment.localeData instead.",
14654          getLocale
14655        );
14656        var mathAbs = Math.abs;
14657        function abs() {
14658          var data = this._data;
14659          this._milliseconds = mathAbs(this._milliseconds);
14660          this._days = mathAbs(this._days);
14661          this._months = mathAbs(this._months);
14662          data.milliseconds = mathAbs(data.milliseconds);
14663          data.seconds = mathAbs(data.seconds);
14664          data.minutes = mathAbs(data.minutes);
14665          data.hours = mathAbs(data.hours);
14666          data.months = mathAbs(data.months);
14667          data.years = mathAbs(data.years);
14668          return this;
14669        }
14670        function addSubtract$1(duration, input, value2, direction) {
14671          var other = createDuration(input, value2);
14672          duration._milliseconds += direction * other._milliseconds;
14673          duration._days += direction * other._days;
14674          duration._months += direction * other._months;
14675          return duration._bubble();
14676        }
14677        function add$1(input, value2) {
14678          return addSubtract$1(this, input, value2, 1);
14679        }
14680        function subtract$1(input, value2) {
14681          return addSubtract$1(this, input, value2, -1);
14682        }
14683        function absCeil(number) {
14684          if (number < 0) {
14685            return Math.floor(number);
14686          } else {
14687            return Math.ceil(number);
14688          }
14689        }
14690        function bubble() {
14691          var milliseconds2 = this._milliseconds, days2 = this._days, months2 = this._months, data = this._data, seconds2, minutes2, hours2, years2, monthsFromDays;
14692          if (!(milliseconds2 >= 0 && days2 >= 0 && months2 >= 0 || milliseconds2 <= 0 && days2 <= 0 && months2 <= 0)) {
14693            milliseconds2 += absCeil(monthsToDays(months2) + days2) * 864e5;
14694            days2 = 0;
14695            months2 = 0;
14696          }
14697          data.milliseconds = milliseconds2 % 1e3;
14698          seconds2 = absFloor(milliseconds2 / 1e3);
14699          data.seconds = seconds2 % 60;
14700          minutes2 = absFloor(seconds2 / 60);
14701          data.minutes = minutes2 % 60;
14702          hours2 = absFloor(minutes2 / 60);
14703          data.hours = hours2 % 24;
14704          days2 += absFloor(hours2 / 24);
14705          monthsFromDays = absFloor(daysToMonths(days2));
14706          months2 += monthsFromDays;
14707          days2 -= absCeil(monthsToDays(monthsFromDays));
14708          years2 = absFloor(months2 / 12);
14709          months2 %= 12;
14710          data.days = days2;
14711          data.months = months2;
14712          data.years = years2;
14713          return this;
14714        }
14715        function daysToMonths(days2) {
14716          return days2 * 4800 / 146097;
14717        }
14718        function monthsToDays(months2) {
14719          return months2 * 146097 / 4800;
14720        }
14721        function as(units) {
14722          if (!this.isValid()) {
14723            return NaN;
14724          }
14725          var days2, months2, milliseconds2 = this._milliseconds;
14726          units = normalizeUnits(units);
14727          if (units === "month" || units === "quarter" || units === "year") {
14728            days2 = this._days + milliseconds2 / 864e5;
14729            months2 = this._months + daysToMonths(days2);
14730            switch (units) {
14731              case "month":
14732                return months2;
14733              case "quarter":
14734                return months2 / 3;
14735              case "year":
14736                return months2 / 12;
14737            }
14738          } else {
14739            days2 = this._days + Math.round(monthsToDays(this._months));
14740            switch (units) {
14741              case "week":
14742                return days2 / 7 + milliseconds2 / 6048e5;
14743              case "day":
14744                return days2 + milliseconds2 / 864e5;
14745              case "hour":
14746                return days2 * 24 + milliseconds2 / 36e5;
14747              case "minute":
14748                return days2 * 1440 + milliseconds2 / 6e4;
14749              case "second":
14750                return days2 * 86400 + milliseconds2 / 1e3;
14751              case "millisecond":
14752                return Math.floor(days2 * 864e5) + milliseconds2;
14753              default:
14754                throw new Error("Unknown unit " + units);
14755            }
14756          }
14757        }
14758        function valueOf$1() {
14759          if (!this.isValid()) {
14760            return NaN;
14761          }
14762          return this._milliseconds + this._days * 864e5 + this._months % 12 * 2592e6 + toInt(this._months / 12) * 31536e6;
14763        }
14764        function makeAs(alias) {
14765          return function() {
14766            return this.as(alias);
14767          };
14768        }
14769        var asMilliseconds = makeAs("ms"), asSeconds = makeAs("s"), asMinutes = makeAs("m"), asHours = makeAs("h"), asDays = makeAs("d"), asWeeks = makeAs("w"), asMonths = makeAs("M"), asQuarters = makeAs("Q"), asYears = makeAs("y");
14770        function clone$1() {
14771          return createDuration(this);
14772        }
14773        function get$2(units) {
14774          units = normalizeUnits(units);
14775          return this.isValid() ? this[units + "s"]() : NaN;
14776        }
14777        function makeGetter(name2) {
14778          return function() {
14779            return this.isValid() ? this._data[name2] : NaN;
14780          };
14781        }
14782        var milliseconds = makeGetter("milliseconds"), seconds = makeGetter("seconds"), minutes = makeGetter("minutes"), hours = makeGetter("hours"), days = makeGetter("days"), months = makeGetter("months"), years = makeGetter("years");
14783        function weeks() {
14784          return absFloor(this.days() / 7);
14785        }
14786        var round = Math.round, thresholds = {
14787          ss: 44,
14788          s: 45,
14789          m: 45,
14790          h: 22,
14791          d: 26,
14792          w: null,
14793          M: 11
14794        };
14795        function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale2) {
14796          return locale2.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
14797        }
14798        function relativeTime$1(posNegDuration, withoutSuffix, thresholds2, locale2) {
14799          var duration = createDuration(posNegDuration).abs(), seconds2 = round(duration.as("s")), minutes2 = round(duration.as("m")), hours2 = round(duration.as("h")), days2 = round(duration.as("d")), months2 = round(duration.as("M")), weeks2 = round(duration.as("w")), years2 = round(duration.as("y")), a = seconds2 <= thresholds2.ss && ["s", seconds2] || seconds2 < thresholds2.s && ["ss", seconds2] || minutes2 <= 1 && ["m"] || minutes2 < thresholds2.m && ["mm", minutes2] || hours2 <= 1 && ["h"] || hours2 < thresholds2.h && ["hh", hours2] || days2 <= 1 && ["d"] || days2 < thresholds2.d && ["dd", days2];
14800          if (thresholds2.w != null) {
14801            a = a || weeks2 <= 1 && ["w"] || weeks2 < thresholds2.w && ["ww", weeks2];
14802          }
14803          a = a || months2 <= 1 && ["M"] || months2 < thresholds2.M && ["MM", months2] || years2 <= 1 && ["y"] || ["yy", years2];
14804          a[2] = withoutSuffix;
14805          a[3] = +posNegDuration > 0;
14806          a[4] = locale2;
14807          return substituteTimeAgo.apply(null, a);
14808        }
14809        function getSetRelativeTimeRounding(roundingFunction) {
14810          if (roundingFunction === void 0) {
14811            return round;
14812          }
14813          if (typeof roundingFunction === "function") {
14814            round = roundingFunction;
14815            return true;
14816          }
14817          return false;
14818        }
14819        function getSetRelativeTimeThreshold(threshold, limit) {
14820          if (thresholds[threshold] === void 0) {
14821            return false;
14822          }
14823          if (limit === void 0) {
14824            return thresholds[threshold];
14825          }
14826          thresholds[threshold] = limit;
14827          if (threshold === "s") {
14828            thresholds.ss = limit - 1;
14829          }
14830          return true;
14831        }
14832        function humanize(argWithSuffix, argThresholds) {
14833          if (!this.isValid()) {
14834            return this.localeData().invalidDate();
14835          }
14836          var withSuffix = false, th = thresholds, locale2, output;
14837          if (typeof argWithSuffix === "object") {
14838            argThresholds = argWithSuffix;
14839            argWithSuffix = false;
14840          }
14841          if (typeof argWithSuffix === "boolean") {
14842            withSuffix = argWithSuffix;
14843          }
14844          if (typeof argThresholds === "object") {
14845            th = Object.assign({}, thresholds, argThresholds);
14846            if (argThresholds.s != null && argThresholds.ss == null) {
14847              th.ss = argThresholds.s - 1;
14848            }
14849          }
14850          locale2 = this.localeData();
14851          output = relativeTime$1(this, !withSuffix, th, locale2);
14852          if (withSuffix) {
14853            output = locale2.pastFuture(+this, output);
14854          }
14855          return locale2.postformat(output);
14856        }
14857        var abs$1 = Math.abs;
14858        function sign(x) {
14859          return (x > 0) - (x < 0) || +x;
14860        }
14861        function toISOString$1() {
14862          if (!this.isValid()) {
14863            return this.localeData().invalidDate();
14864          }
14865          var seconds2 = abs$1(this._milliseconds) / 1e3, days2 = abs$1(this._days), months2 = abs$1(this._months), minutes2, hours2, years2, s, total = this.asSeconds(), totalSign, ymSign, daysSign, hmsSign;
14866          if (!total) {
14867            return "P0D";
14868          }
14869          minutes2 = absFloor(seconds2 / 60);
14870          hours2 = absFloor(minutes2 / 60);
14871          seconds2 %= 60;
14872          minutes2 %= 60;
14873          years2 = absFloor(months2 / 12);
14874          months2 %= 12;
14875          s = seconds2 ? seconds2.toFixed(3).replace(/\.?0+$/, "") : "";
14876          totalSign = total < 0 ? "-" : "";
14877          ymSign = sign(this._months) !== sign(total) ? "-" : "";
14878          daysSign = sign(this._days) !== sign(total) ? "-" : "";
14879          hmsSign = sign(this._milliseconds) !== sign(total) ? "-" : "";
14880          return totalSign + "P" + (years2 ? ymSign + years2 + "Y" : "") + (months2 ? ymSign + months2 + "M" : "") + (days2 ? daysSign + days2 + "D" : "") + (hours2 || minutes2 || seconds2 ? "T" : "") + (hours2 ? hmsSign + hours2 + "H" : "") + (minutes2 ? hmsSign + minutes2 + "M" : "") + (seconds2 ? hmsSign + s + "S" : "");
14881        }
14882        var proto$2 = Duration.prototype;
14883        proto$2.isValid = isValid$1;
14884        proto$2.abs = abs;
14885        proto$2.add = add$1;
14886        proto$2.subtract = subtract$1;
14887        proto$2.as = as;
14888        proto$2.asMilliseconds = asMilliseconds;
14889        proto$2.asSeconds = asSeconds;
14890        proto$2.asMinutes = asMinutes;
14891        proto$2.asHours = asHours;
14892        proto$2.asDays = asDays;
14893        proto$2.asWeeks = asWeeks;
14894        proto$2.asMonths = asMonths;
14895        proto$2.asQuarters = asQuarters;
14896        proto$2.asYears = asYears;
14897        proto$2.valueOf = valueOf$1;
14898        proto$2._bubble = bubble;
14899        proto$2.clone = clone$1;
14900        proto$2.get = get$2;
14901        proto$2.milliseconds = milliseconds;
14902        proto$2.seconds = seconds;
14903        proto$2.minutes = minutes;
14904        proto$2.hours = hours;
14905        proto$2.days = days;
14906        proto$2.weeks = weeks;
14907        proto$2.months = months;
14908        proto$2.years = years;
14909        proto$2.humanize = humanize;
14910        proto$2.toISOString = toISOString$1;
14911        proto$2.toString = toISOString$1;
14912        proto$2.toJSON = toISOString$1;
14913        proto$2.locale = locale;
14914        proto$2.localeData = localeData;
14915        proto$2.toIsoString = deprecate(
14916          "toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",
14917          toISOString$1
14918        );
14919        proto$2.lang = lang;
14920        addFormatToken("X", 0, 0, "unix");
14921        addFormatToken("x", 0, 0, "valueOf");
14922        addRegexToken("x", matchSigned);
14923        addRegexToken("X", matchTimestamp);
14924        addParseToken("X", function(input, array, config) {
14925          config._d = new Date(parseFloat(input) * 1e3);
14926        });
14927        addParseToken("x", function(input, array, config) {
14928          config._d = new Date(toInt(input));
14929        });
14930        hooks.version = "2.29.4";
14931        setHookCallback(createLocal);
14932        hooks.fn = proto;
14933        hooks.min = min;
14934        hooks.max = max;
14935        hooks.now = now;
14936        hooks.utc = createUTC;
14937        hooks.unix = createUnix;
14938        hooks.months = listMonths;
14939        hooks.isDate = isDate;
14940        hooks.locale = getSetGlobalLocale;
14941        hooks.invalid = createInvalid;
14942        hooks.duration = createDuration;
14943        hooks.isMoment = isMoment;
14944        hooks.weekdays = listWeekdays;
14945        hooks.parseZone = createInZone;
14946        hooks.localeData = getLocale;
14947        hooks.isDuration = isDuration;
14948        hooks.monthsShort = listMonthsShort;
14949        hooks.weekdaysMin = listWeekdaysMin;
14950        hooks.defineLocale = defineLocale;
14951        hooks.updateLocale = updateLocale;
14952        hooks.locales = listLocales;
14953        hooks.weekdaysShort = listWeekdaysShort;
14954        hooks.normalizeUnits = normalizeUnits;
14955        hooks.relativeTimeRounding = getSetRelativeTimeRounding;
14956        hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
14957        hooks.calendarFormat = getCalendarFormat;
14958        hooks.prototype = proto;
14959        hooks.HTML5_FMT = {
14960          DATETIME_LOCAL: "YYYY-MM-DDTHH:mm",
14961          DATETIME_LOCAL_SECONDS: "YYYY-MM-DDTHH:mm:ss",
14962          DATETIME_LOCAL_MS: "YYYY-MM-DDTHH:mm:ss.SSS",
14963          DATE: "YYYY-MM-DD",
14964          TIME: "HH:mm",
14965          TIME_SECONDS: "HH:mm:ss",
14966          TIME_MS: "HH:mm:ss.SSS",
14967          WEEK: "GGGG-[W]WW",
14968          MONTH: "YYYY-MM"
14969        };
14970        return hooks;
14971      });
14972    }
14973  });
14974
14975  
vendor: 47,271 bytes, lines 14975-15178
14975// node_modules/moment-timezone/builds/moment-timezone-with-data-10-year-range.min.js
14976  var require_moment_timezone_with_data_10_year_range_min = __commonJS({
14977    "node_modules/moment-timezone/builds/moment-timezone-with-data-10-year-range.min.js"(exports, module) {
14978      !function(a, i2) {
14979        "use strict";
14980        "object" == typeof module && module.exports ? module.exports = i2(require_moment()) : "function" == typeof define && define.amd ? define(["moment"], i2) : i2(a.moment);
14981      }(exports, function(o) {
14982        "use strict";
14983        void 0 === o.version && o.default && (o = o.default);
14984        var i2, s = {}, c = {}, A = {}, u = {}, m = {}, a = (o && "string" == typeof o.version || D("Moment Timezone requires Moment.js. See https://momentjs.com/timezone/docs/#/use-it/browser/"), o.version.split(".")), r = +a[0], e = +a[1];
14985        function n(a2) {
14986          return 96 < a2 ? a2 - 87 : 64 < a2 ? a2 - 29 : a2 - 48;
14987        }
14988        function t(a2) {
14989          var i3 = 0, r2 = a2.split("."), e2 = r2[0], o2 = r2[1] || "", c2 = 1, A2 = 0, r2 = 1;
14990          for (45 === a2.charCodeAt(0) && (r2 = -(i3 = 1)); i3 < e2.length; i3++)
14991            A2 = 60 * A2 + n(e2.charCodeAt(i3));
14992          for (i3 = 0; i3 < o2.length; i3++)
14993            c2 /= 60, A2 += n(o2.charCodeAt(i3)) * c2;
14994          return A2 * r2;
14995        }
14996        function l(a2) {
14997          for (var i3 = 0; i3 < a2.length; i3++)
14998            a2[i3] = t(a2[i3]);
14999        }
15000        function f(a2, i3) {
15001          for (var r2 = [], e2 = 0; e2 < i3.length; e2++)
15002            r2[e2] = a2[i3[e2]];
15003          return r2;
15004        }
15005        function p(a2) {
15006          for (var a2 = a2.split("|"), i3 = a2[2].split(" "), r2 = a2[3].split(""), e2 = a2[4].split(" "), o2 = (l(i3), l(r2), l(e2), e2), c2 = r2.length, A2 = 0; A2 < c2; A2++)
15007            o2[A2] = Math.round((o2[A2 - 1] || 0) + 6e4 * o2[A2]);
15008          return o2[c2 - 1] = 1 / 0, { name: a2[0], abbrs: f(a2[1].split(" "), r2), offsets: f(i3, r2), untils: e2, population: 0 | a2[5] };
15009        }
15010        function b(a2) {
15011          a2 && this._set(p(a2));
15012        }
15013        function M(a2, i3) {
15014          this.name = a2, this.zones = i3;
15015        }
15016        function h(a2) {
15017          var i3 = a2.toTimeString(), r2 = i3.match(/\([a-z ]+\)/i);
15018          "GMT" === (r2 = r2 && r2[0] ? (r2 = r2[0].match(/[A-Z]/g)) ? r2.join("") : void 0 : (r2 = i3.match(/[A-Z]{3,5}/g)) ? r2[0] : void 0) && (r2 = void 0), this.at = +a2, this.abbr = r2, this.offset = a2.getTimezoneOffset();
15019        }
15020        function d(a2) {
15021          this.zone = a2, this.offsetScore = 0, this.abbrScore = 0;
15022        }
15023        function E() {
15024          for (var a2, i3, r2 = new Date().getFullYear() - 2, e2 = new h(new Date(r2, 0, 1)), o2 = [e2], c2 = 1; c2 < 48; c2++)
15025            (i3 = new h(new Date(r2, c2, 1))).offset !== e2.offset && (a2 = function(a3, i4) {
15026              for (var r3; r3 = 6e4 * ((i4.at - a3.at) / 12e4 | 0); )
15027                (r3 = new h(new Date(a3.at + r3))).offset === a3.offset ? a3 = r3 : i4 = r3;
15028              return a3;
15029            }(e2, i3), o2.push(a2), o2.push(new h(new Date(a2.at + 6e4)))), e2 = i3;
15030          for (c2 = 0; c2 < 4; c2++)
15031            o2.push(new h(new Date(r2 + c2, 0, 1))), o2.push(new h(new Date(r2 + c2, 6, 1)));
15032          return o2;
15033        }
15034        function g(a2, i3) {
15035          return a2.offsetScore !== i3.offsetScore ? a2.offsetScore - i3.offsetScore : a2.abbrScore !== i3.abbrScore ? a2.abbrScore - i3.abbrScore : a2.zone.population !== i3.zone.population ? i3.zone.population - a2.zone.population : i3.zone.name.localeCompare(a2.zone.name);
15036        }
15037        function z() {
15038          try {
15039            var a2 = Intl.DateTimeFormat().resolvedOptions().timeZone;
15040            if (a2 && 3 < a2.length) {
15041              var i3 = u[P(a2)];
15042              if (i3)
15043                return i3;
15044              D("Moment Timezone found " + a2 + " from the Intl api, but did not have that data loaded.");
15045            }
15046          } catch (a3) {
15047          }
15048          for (var r2, e2, o2 = E(), c2 = o2.length, A2 = function(a3) {
15049            for (var i4, r3, e3 = a3.length, o3 = {}, c3 = [], A3 = 0; A3 < e3; A3++)
15050              for (i4 in r3 = m[a3[A3].offset] || {})
15051                r3.hasOwnProperty(i4) && (o3[i4] = true);
15052            for (A3 in o3)
15053              o3.hasOwnProperty(A3) && c3.push(u[A3]);
15054            return c3;
15055          }(o2), n2 = [], t2 = 0; t2 < A2.length; t2++) {
15056            for (r2 = new d(T(A2[t2])), e2 = 0; e2 < c2; e2++)
15057              r2.scoreOffsetAt(o2[e2]);
15058            n2.push(r2);
15059          }
15060          return n2.sort(g), 0 < n2.length ? n2[0].zone.name : void 0;
15061        }
15062        function P(a2) {
15063          return (a2 || "").toLowerCase().replace(/\//g, "_");
15064        }
15065        function k(a2) {
15066          var i3, r2, e2, o2;
15067          for ("string" == typeof a2 && (a2 = [a2]), i3 = 0; i3 < a2.length; i3++) {
15068            o2 = P(r2 = (e2 = a2[i3].split("|"))[0]), s[o2] = a2[i3], u[o2] = r2, A2 = c2 = t2 = n2 = void 0;
15069            var c2, A2, n2 = o2, t2 = e2[2].split(" ");
15070            for (l(t2), c2 = 0; c2 < t2.length; c2++)
15071              A2 = t2[c2], m[A2] = m[A2] || {}, m[A2][n2] = true;
15072          }
15073        }
15074        function T(a2, i3) {
15075          a2 = P(a2);
15076          var r2 = s[a2];
15077          return r2 instanceof b ? r2 : "string" == typeof r2 ? (r2 = new b(r2), s[a2] = r2) : c[a2] && i3 !== T && (i3 = T(c[a2], T)) ? ((r2 = s[a2] = new b())._set(i3), r2.name = u[a2], r2) : null;
15078        }
15079        function S(a2) {
15080          var i3, r2, e2, o2;
15081          for ("string" == typeof a2 && (a2 = [a2]), i3 = 0; i3 < a2.length; i3++)
15082            e2 = P((r2 = a2[i3].split("|"))[0]), o2 = P(r2[1]), c[e2] = o2, u[e2] = r2[0], c[o2] = e2, u[o2] = r2[1];
15083        }
15084        function _(a2) {
15085          k(a2.zones), S(a2.links);
15086          var i3, r2, e2, o2 = a2.countries;
15087          if (o2 && o2.length)
15088            for (i3 = 0; i3 < o2.length; i3++)
15089              r2 = (e2 = o2[i3].split("|"))[0].toUpperCase(), e2 = e2[1].split(" "), A[r2] = new M(r2, e2);
15090          y.dataVersion = a2.version;
15091        }
15092        function C(a2) {
15093          return C.didShowError || (C.didShowError = true, D("moment.tz.zoneExists('" + a2 + "') has been deprecated in favor of !moment.tz.zone('" + a2 + "')")), !!T(a2);
15094        }
15095        function B(a2) {
15096          var i3 = "X" === a2._f || "x" === a2._f;
15097          return !(!a2._a || void 0 !== a2._tzm || i3);
15098        }
15099        function D(a2) {
15100          "undefined" != typeof console && "function" == typeof console.error && console.error(a2);
15101        }
15102        function y(a2) {
15103          var i3 = Array.prototype.slice.call(arguments, 0, -1), r2 = arguments[arguments.length - 1], e2 = T(r2), i3 = o.utc.apply(null, i3);
15104          return e2 && !o.isMoment(a2) && B(i3) && i3.add(e2.parse(i3), "minutes"), i3.tz(r2), i3;
15105        }
15106        (r < 2 || 2 == r && e < 6) && D("Moment Timezone requires Moment.js >= 2.6.0. You are using Moment.js " + o.version + ". See momentjs.com"), b.prototype = { _set: function(a2) {
15107          this.name = a2.name, this.abbrs = a2.abbrs, this.untils = a2.untils, this.offsets = a2.offsets, this.population = a2.population;
15108        }, _index: function(a2) {
15109          for (var i3 = +a2, r2 = this.untils, e2 = 0; e2 < r2.length; e2++)
15110            if (i3 < r2[e2])
15111              return e2;
15112        }, countries: function() {
15113          var i3 = this.name;
15114          return Object.keys(A).filter(function(a2) {
15115            return -1 !== A[a2].zones.indexOf(i3);
15116          });
15117        }, parse: function(a2) {
15118          for (var i3, r2, e2, o2 = +a2, c2 = this.offsets, A2 = this.untils, n2 = A2.length - 1, t2 = 0; t2 < n2; t2++)
15119            if (i3 = c2[t2], r2 = c2[t2 + 1], e2 = c2[t2 && t2 - 1], i3 < r2 && y.moveAmbiguousForward ? i3 = r2 : e2 < i3 && y.moveInvalidForward && (i3 = e2), o2 < A2[t2] - 6e4 * i3)
15120              return c2[t2];
15121          return c2[n2];
15122        }, abbr: function(a2) {
15123          return this.abbrs[this._index(a2)];
15124        }, offset: function(a2) {
15125          return D("zone.offset has been deprecated in favor of zone.utcOffset"), this.offsets[this._index(a2)];
15126        }, utcOffset: function(a2) {
15127          return this.offsets[this._index(a2)];
15128        } }, d.prototype.scoreOffsetAt = function(a2) {
15129          this.offsetScore += Math.abs(this.zone.utcOffset(a2.at) - a2.offset), this.zone.abbr(a2.at).replace(/[^A-Z]/g, "") !== a2.abbr && this.abbrScore++;
15130        }, y.version = "0.5.43", y.dataVersion = "", y._zones = s, y._links = c, y._names = u, y._countries = A, y.add = k, y.link = S, y.load = _, y.zone = T, y.zoneExists = C, y.guess = function(a2) {
15131          return i2 = i2 && !a2 ? i2 : z();
15132        }, y.names = function() {
15133          var a2, i3 = [];
15134          for (a2 in u)
15135            u.hasOwnProperty(a2) && (s[a2] || s[c[a2]]) && u[a2] && i3.push(u[a2]);
15136          return i3.sort();
15137        }, y.Zone = b, y.unpack = p, y.unpackBase60 = t, y.needsOffset = B, y.moveInvalidForward = true, y.moveAmbiguousForward = false, y.countries = function() {
15138          return Object.keys(A);
15139        }, y.zonesForCountry = function(a2, i3) {
15140          var r2;
15141          return r2 = (r2 = a2).toUpperCase(), (a2 = A[r2] || null) ? (r2 = a2.zones.sort(), i3 ? r2.map(function(a3) {
15142            return { name: a3, offset: T(a3).utcOffset(new Date()) };
15143          }) : r2) : null;
15144        };
15145        var L2, a = o.fn;
15146        function O(a2) {
15147          return function() {
15148            return this._z ? this._z.abbr(this) : a2.call(this);
15149          };
15150        }
15151        function N(a2) {
15152          return function() {
15153            return this._z = null, a2.apply(this, arguments);
15154          };
15155        }
15156        o.tz = y, o.defaultZone = null, o.updateOffset = function(a2, i3) {
15157          var r2, e2 = o.defaultZone;
15158          void 0 === a2._z && (e2 && B(a2) && !a2._isUTC && (a2._d = o.utc(a2._a)._d, a2.utc().add(e2.parse(a2), "minutes")), a2._z = e2), a2._z && (e2 = a2._z.utcOffset(a2), Math.abs(e2) < 16 && (e2 /= 60), void 0 !== a2.utcOffset ? (r2 = a2._z, a2.utcOffset(-e2, i3), a2._z = r2) : a2.zone(e2, i3));
15159        }, a.tz = function(a2, i3) {
15160          if (a2) {
15161            if ("string" != typeof a2)
15162              throw new Error("Time zone name must be a string, got " + a2 + " [" + typeof a2 + "]");
15163            return this._z = T(a2), this._z ? o.updateOffset(this, i3) : D("Moment Timezone has no data for " + a2 + ". See http://momentjs.com/timezone/docs/#/data-loading/."), this;
15164          }
15165          if (this._z)
15166            return this._z.name;
15167        }, a.zoneName = O(a.zoneName), a.zoneAbbr = O(a.zoneAbbr), a.utc = N(a.utc), a.local = N(a.local), a.utcOffset = (L2 = a.utcOffset, function() {
15168          return 0 < arguments.length && (this._z = null), L2.apply(this, arguments);
15169        }), o.tz.setDefault = function(a2) {
15170          return (r < 2 || 2 == r && e < 9) && D("Moment Timezone setDefault() requires Moment.js >= 2.9.0. You are using Moment.js " + o.version + "."), o.defaultZone = a2 ? T(a2) : null, o;
15171        };
15172        a = o.momentProperties;
15173        return "[object Array]" === Object.prototype.toString.call(a) ? (a.push("_z"), a.push("_a")) : a && (a._z = null), _({ version: "2023c", zones: ["Africa/Abidjan|GMT|0|0||48e5", "Africa/Nairobi|EAT|-30|0||47e5", "Africa/Algiers|CET|-10|0||26e5", "Africa/Lagos|WAT|-10|0||17e6", "Africa/Khartoum|CAT|-20|0||51e5", "Africa/Cairo|EET EEST|-20 -30|0101010101010|29NW0 1cL0 1cN0 1fz0 1a10 1fz0 1a10 1fz0 1cN0 1cL0 1cN0 1cL0|15e6", "Africa/Casablanca|+00 +01|0 -10|010101010101010101010101|1Vq20 jA0 e00 28M0 e00 2600 gM0 2600 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0 2600 e00 28M0 e00 2600 gM0|32e5", "Europe/Paris|CET CEST|-10 -20|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|11e6", "Africa/Johannesburg|SAST|-20|0||84e5", "Africa/Juba|EAT CAT|-30 -20|01|24nx0|", "Africa/Sao_Tome|GMT WAT|0 -10|010|1UQN0 2q00|", "Africa/Tripoli|EET|-20|0||11e5", "America/Adak|HST HDT|a0 90|01010101010101010101010|1VkA0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|326", "America/Anchorage|AKST AKDT|90 80|01010101010101010101010|1Vkz0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|30e4", "America/Santo_Domingo|AST|40|0||29e5", "America/Fortaleza|-03|30|0||34e5", "America/Asuncion|-03 -04|30 40|01010101010101010101010|1Vq30 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0 19X0 1fB0 19X0 1ip0 17b0 1ip0 17b0 1ip0 19X0 1fB0 19X0 1fB0|28e5", "America/Panama|EST|50|0||15e5", "America/Mexico_City|CST CDT|60 50|01010101010|1VsU0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|20e6", "America/Managua|CST|60|0||22e5", "America/Caracas|-04|40|0||29e5", "America/Lima|-05|50|0||11e6", "America/Denver|MST MDT|70 60|01010101010101010101010|1Vkx0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|26e5", "America/Campo_Grande|-03 -04|30 40|0101|1Vc30 1HB0 FX0|77e4", "America/Chicago|CST CDT|60 50|01010101010101010101010|1Vkw0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|92e5", "America/Chihuahua|MST MDT CST|70 60 60|01010101012|1VsV0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|81e4", "America/Ciudad_Juarez|MST MDT CST|70 60 60|010101010120101010101010|1Vkx0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 cm0 EP0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|", "America/Phoenix|MST|70|0||42e5", "America/Whitehorse|PST PDT MST|80 70 70|0101012|1Vky0 1zb0 Op0 1zb0 Op0 1z90|23e3", "America/New_York|EST EDT|50 40|01010101010101010101010|1Vkv0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|21e6", "America/Los_Angeles|PST PDT|80 70|01010101010101010101010|1Vky0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|15e6", "America/Halifax|AST ADT|40 30|01010101010101010101010|1Vku0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|39e4", "America/Godthab|-03 -02 -01|30 20 10|0101010101012121212121|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 2so0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|17e3", "America/Grand_Turk|AST EDT EST|40 40 50|01212121212121212121212|1Vkv0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|37e2", "America/Havana|CST CDT|50 40|01010101010101010101010|1Vkt0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Oo0 1zc0 Rc0 1zc0 Oo0 1zc0|21e5", "America/Mazatlan|MST MDT|70 60|01010101010|1VsV0 1nX0 14p0 1lb0 14p0 1lb0 14p0 1nX0 11B0 1nX0|44e4", "America/Metlakatla|AKST AKDT PST|90 80 80|012010101010101010101010|1Vkz0 1zb0 uM0 jB0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|14e2", "America/Miquelon|-03 -02|30 20|01010101010101010101010|1Vkt0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|61e2", "America/Noronha|-02|20|0||30e2", "America/Ojinaga|MST MDT CST CDT|70 60 60 50|01010101012323232323232|1Vkx0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1wn0 Rc0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|23e3", "America/Santiago|-03 -04|30 40|01010101010101010101010|1VJD0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|62e5", "America/Sao_Paulo|-02 -03|20 30|0101|1Vc20 1HB0 FX0|20e6", "Atlantic/Azores|-01 +00|10 0|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|25e4", "America/St_Johns|NST NDT|3u 2u|01010101010101010101010|1Vktu 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Op0 1zb0 Rd0 1zb0 Op0 1zb0|11e4", "Antarctica/Casey|+11 +08|-b0 -80|0101010|1Vkh0 1o30 14k0 1kr0 12l0 1o01|10", "Asia/Bangkok|+07|-70|0||15e6", "Asia/Vladivostok|+10|-a0|0||60e4", "Australia/Sydney|AEDT AEST|-b0 -a0|01010101010101010101010|1VsE0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|40e5", "Asia/Tashkent|+05|-50|0||23e5", "Pacific/Auckland|NZDT NZST|-d0 -c0|01010101010101010101010|1VsC0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|14e5", "Europe/Istanbul|+03|-30|0||13e6", "Antarctica/Troll|+00 +02|0 -20|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|40", "Asia/Dhaka|+06|-60|0||16e6", "Asia/Amman|EET EEST +03|-20 -30 -30|01010101012|1VrW0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 LA0 1C00|25e5", "Asia/Kamchatka|+12|-c0|0||18e4", "Asia/Dubai|+04|-40|0||39e5", "Asia/Beirut|EET EEST|-20 -30|01010101010101010101010|1VpW0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0|22e5", "Asia/Kuala_Lumpur|+08|-80|0||71e5", "Asia/Kolkata|IST|-5u|0||15e6", "Asia/Chita|+09|-90|0||33e4", "Asia/Shanghai|CST|-80|0||23e6", "Asia/Colombo|+0530|-5u|0||22e5", "Asia/Damascus|EET EEST +03|-20 -30 -30|01010101012|1VrW0 1nX0 11B0 1nX0 11B0 1qL0 WN0 1qL0 WN0 1qL0|26e5", "Europe/Athens|EET EEST|-20 -30|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|35e5", "Asia/Gaza|EET EEST|-20 -30|01010101010101010101010|1Vpz0 1qL0 11c0 1on0 11B0 1o00 11A0 1qo0 XA0 1qp0 1cN0 1cL0 17d0 1in0 14p0 1lb0 11B0 1nX0 11B0 1qL0 WN0 1qL0|18e5", "Asia/Hong_Kong|HKT|-80|0||73e5", "Asia/Jakarta|WIB|-70|0||31e6", "Asia/Jayapura|WIT|-90|0||26e4", "Asia/Jerusalem|IST IDT|-20 -30|01010101010101010101010|1Vpc0 1rz0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0 W10 1rz0 10N0 1oL0 10N0 1oL0 10N0 1oL0 10N0 1rz0 W10 1rz0|81e4", "Asia/Kabul|+0430|-4u|0||46e5", "Asia/Karachi|PKT|-50|0||24e6", "Asia/Kathmandu|+0545|-5J|0||12e5", "Asia/Sakhalin|+11|-b0|0||58e4", "Asia/Makassar|WITA|-80|0||15e5", "Asia/Manila|PST|-80|0||24e6", "Asia/Pyongyang|KST KST|-8u -90|01|1VGf0|29e5", "Asia/Qyzylorda|+06 +05|-60 -50|01|1Xei0|73e4", "Asia/Rangoon|+0630|-6u|0||48e5", "Asia/Seoul|KST|-90|0||23e6", "Asia/Tehran|+0330 +0430|-3u -4u|01010101010|1VoIu 1dz0 1cp0 1dz0 1cp0 1dz0 1cN0 1dz0 1cp0 1dz0|14e6", "Asia/Tokyo|JST|-90|0||38e6", "Europe/Lisbon|WET WEST|0 -10|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|27e5", "Atlantic/Cape_Verde|-01|10|0||50e4", "Australia/Adelaide|ACDT ACST|-au -9u|01010101010101010101010|1VsEu 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|11e5", "Australia/Brisbane|AEST|-a0|0||20e5", "Australia/Darwin|ACST|-9u|0||12e4", "Australia/Eucla|+0845|-8J|0||368", "Australia/Lord_Howe|+11 +1030|-b0 -au|01010101010101010101010|1VsD0 1fAu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1fzu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu 1cLu 1cMu|347", "Australia/Perth|AWST|-80|0||18e5", "Pacific/Easter|-05 -06|50 60|01010101010101010101010|1VJD0 Ap0 1zb0 11B0 1nX0 11B0 1nX0 11B0 1nX0 14p0 1lb0 11B0 1qL0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0 1nX0 11B0|30e2", "Europe/Dublin|GMT IST|0 -10|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|12e5", "Etc/GMT-1|+01|-10|0||", "Pacific/Tongatapu|+13|-d0|0||75e3", "Pacific/Kiritimati|+14|-e0|0||51e2", "Etc/GMT-2|+02|-20|0||", "Pacific/Tahiti|-10|a0|0||18e4", "Pacific/Niue|-11|b0|0||12e2", "Etc/GMT+12|-12|c0|0||", "Pacific/Galapagos|-06|60|0||25e3", "Etc/GMT+7|-07|70|0||", "Pacific/Pitcairn|-08|80|0||56", "Pacific/Gambier|-09|90|0||125", "Etc/UTC|UTC|0|0||", "Europe/London|GMT BST|0 -10|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|10e6", "Europe/Chisinau|EET EEST|-20 -30|01010101010101010101010|1Vq00 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|67e4", "Europe/Moscow|MSK|-30|0||16e6", "Europe/Volgograd|MSK +04|-30 -40|010|1WQL0 5gn0|10e5", "Pacific/Honolulu|HST|a0|0||37e4", "MET|MET MEST|-10 -20|01010101010101010101010|1Vq10 1qM0 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0 WM0 1qM0 11A0 1o00 11A0 1o00 11A0 1o00 11A0 1qM0 WM0 1qM0|", "Pacific/Chatham|+1345 +1245|-dJ -cJ|01010101010101010101010|1VsC0 1cM0 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1io0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00 1fA0 1a00|600", "Pacific/Apia|+14 +13|-e0 -d0|01010101|1VsC0 1cM0 1fA0 1a00 1fA0 1a00 1fA0|37e3", "Pacific/Fiji|+13 +12|-d0 -c0|01010101|1UVO0 1VA0 s00 20o0 pc0 2hc0 bc0|88e4", "Pacific/Guam|ChST|-a0|0||17e4", "Pacific/Marquesas|-0930|9u|0||86e2", "Pacific/Pago_Pago|SST|b0|0||37e2", "Pacific/Norfolk|+11 +12|-b0 -c0|01010101010101010101|219P0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1fA0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0 1cM0|25e4"], links: ["Africa/Abidjan|Africa/Accra", "Africa/Abidjan|Africa/Bamako", "Africa/Abidjan|Africa/Banjul", "Africa/Abidjan|Africa/Bissau", "Africa/Abidjan|Africa/Conakry", "Africa/Abidjan|Africa/Dakar", "Africa/Abidjan|Africa/Freetown", "Africa/Abidjan|Africa/Lome", "Africa/Abidjan|Africa/Monrovia", "Africa/Abidjan|Africa/Nouakchott", "Africa/Abidjan|Africa/Ouagadougou", "Africa/Abidjan|Africa/Timbuktu", "Africa/Abidjan|America/Danmarkshavn", "Africa/Abidjan|Atlantic/Reykjavik", "Africa/Abidjan|Atlantic/St_Helena", "Africa/Abidjan|Etc/GMT", "Africa/Abidjan|Etc/GMT+0", "Africa/Abidjan|Etc/GMT-0", "Africa/Abidjan|Etc/GMT0", "Africa/Abidjan|Etc/Greenwich", "Africa/Abidjan|GMT", "Africa/Abidjan|GMT+0", "Africa/Abidjan|GMT-0", "Africa/Abidjan|GMT0", "Africa/Abidjan|Greenwich", "Africa/Abidjan|Iceland", "Africa/Algiers|Africa/Tunis", "Africa/Cairo|Egypt", "Africa/Casablanca|Africa/El_Aaiun", "Africa/Johannesburg|Africa/Maseru", "Africa/Johannesburg|Africa/Mbabane", "Africa/Khartoum|Africa/Blantyre", "Africa/Khartoum|Africa/Bujumbura", "Africa/Khartoum|Africa/Gaborone", "Africa/Khartoum|Africa/Harare", "Africa/Khartoum|Africa/Kigali", "Africa/Khartoum|Africa/Lubumbashi", "Africa/Khartoum|Africa/Lusaka", "Africa/Khartoum|Africa/Maputo", "Africa/Khartoum|Africa/Windhoek", "Africa/Lagos|Africa/Bangui", "Africa/Lagos|Africa/Brazzaville", "Africa/Lagos|Africa/Douala", "Africa/Lagos|Africa/Kinshasa", "Africa/Lagos|Africa/Libreville", "Africa/Lagos|Africa/Luanda", "Africa/Lagos|Africa/Malabo", "Africa/Lagos|Africa/Ndjamena", "Africa/Lagos|Africa/Niamey", "Africa/Lagos|Africa/Porto-Novo", "Africa/Nairobi|Africa/Addis_Ababa", "Africa/Nairobi|Africa/Asmara", "Africa/Nairobi|Africa/Asmera", "Africa/Nairobi|Africa/Dar_es_Salaam", "Africa/Nairobi|Africa/Djibouti", "Africa/Nairobi|Africa/Kampala", "Africa/Nairobi|Africa/Mogadishu", "Africa/Nairobi|Indian/Antananarivo", "Africa/Nairobi|Indian/Comoro", "Africa/Nairobi|Indian/Mayotte", "Africa/Tripoli|Europe/Kaliningrad", "Africa/Tripoli|Libya", "America/Adak|America/Atka", "America/Adak|US/Aleutian", "America/Anchorage|America/Juneau", "America/Anchorage|America/Nome", "America/Anchorage|America/Sitka", "America/Anchorage|America/Yakutat", "America/Anchorage|US/Alaska", "America/Campo_Grande|America/Cuiaba", "America/Caracas|America/Boa_Vista", "America/Caracas|America/Guyana", "America/Caracas|America/La_Paz", "America/Caracas|America/Manaus", "America/Caracas|America/Porto_Velho", "America/Caracas|Brazil/West", "America/Caracas|Etc/GMT+4", "America/Chicago|America/Indiana/Knox", "America/Chicago|America/Indiana/Tell_City", "America/Chicago|America/Knox_IN", "America/Chicago|America/Matamoros", "America/Chicago|America/Menominee", "America/Chicago|America/North_Dakota/Beulah", "America/Chicago|America/North_Dakota/Center", "America/Chicago|America/North_Dakota/New_Salem", "America/Chicago|America/Rainy_River", "America/Chicago|America/Rankin_Inlet", "America/Chicago|America/Resolute", "America/Chicago|America/Winnipeg", "America/Chicago|CST6CDT", "America/Chicago|Canada/Central", "America/Chicago|US/Central", "America/Chicago|US/Indiana-Starke", "America/Denver|America/Boise", "America/Denver|America/Cambridge_Bay", "America/Denver|America/Edmonton", "America/Denver|America/Inuvik", "America/Denver|America/Shiprock", "America/Denver|America/Yellowknife", "America/Denver|Canada/Mountain", "America/Denver|MST7MDT", "America/Denver|Navajo", "America/Denver|US/Mountain", "America/Fortaleza|America/Araguaina", "America/Fortaleza|America/Argentina/Buenos_Aires", "America/Fortaleza|America/Argentina/Catamarca", "America/Fortaleza|America/Argentina/ComodRivadavia", "America/Fortaleza|America/Argentina/Cordoba", "America/Fortaleza|America/Argentina/Jujuy", "America/Fortaleza|America/Argentina/La_Rioja", "America/Fortaleza|America/Argentina/Mendoza", "America/Fortaleza|America/Argentina/Rio_Gallegos", "America/Fortaleza|America/Argentina/Salta", "America/Fortaleza|America/Argentina/San_Juan", "America/Fortaleza|America/Argentina/San_Luis", "America/Fortaleza|America/Argentina/Tucuman", "America/Fortaleza|America/Argentina/Ushuaia", "America/Fortaleza|America/Bahia", "America/Fortaleza|America/Belem", "America/Fortaleza|America/Buenos_Aires", "America/Fortaleza|America/Catamarca", "America/Fortaleza|America/Cayenne", "America/Fortaleza|America/Cordoba", "America/Fortaleza|America/Jujuy", "America/Fortaleza|America/Maceio", "America/Fortaleza|America/Mendoza", "America/Fortaleza|America/Montevideo", "America/Fortaleza|America/Paramaribo", "America/Fortaleza|America/Punta_Arenas", "America/Fortaleza|America/Recife", "America/Fortaleza|America/Rosario", "America/Fortaleza|America/Santarem", "America/Fortaleza|Antarctica/Palmer", "America/Fortaleza|Antarctica/Rothera", "America/Fortaleza|Atlantic/Stanley", "America/Fortaleza|Etc/GMT+3", "America/Godthab|America/Nuuk", "America/Halifax|America/Glace_Bay", "America/Halifax|America/Goose_Bay", "America/Halifax|America/Moncton", "America/Halifax|America/Thule", "America/Halifax|Atlantic/Bermuda", "America/Halifax|Canada/Atlantic", "America/Havana|Cuba", "America/Lima|America/Bogota", "America/Lima|America/Eirunepe", "America/Lima|America/Guayaquil", "America/Lima|America/Porto_Acre", "America/Lima|America/Rio_Branco", "America/Lima|Brazil/Acre", "America/Lima|Etc/GMT+5", "America/Los_Angeles|America/Ensenada", "America/Los_Angeles|America/Santa_Isabel", "America/Los_Angeles|America/Tijuana", "America/Los_Angeles|America/Vancouver", "America/Los_Angeles|Canada/Pacific", "America/Los_Angeles|Mexico/BajaNorte", "America/Los_Angeles|PST8PDT", "America/Los_Angeles|US/Pacific", "America/Managua|America/Belize", "America/Managua|America/Costa_Rica", "America/Managua|America/El_Salvador", "America/Managua|America/Guatemala", "America/Managua|America/Regina", "America/Managua|America/Swift_Current", "America/Managua|America/Tegucigalpa", "America/Managua|Canada/Saskatchewan", "America/Mazatlan|Mexico/BajaSur", "America/Mexico_City|America/Bahia_Banderas", "America/Mexico_City|America/Merida", "America/Mexico_City|America/Monterrey", "America/Mexico_City|Mexico/General", "America/New_York|America/Detroit", "America/New_York|America/Fort_Wayne", "America/New_York|America/Indiana/Indianapolis", "America/New_York|America/Indiana/Marengo", "America/New_York|America/Indiana/Petersburg", "America/New_York|America/Indiana/Vevay", "America/New_York|America/Indiana/Vincennes", "America/New_York|America/Indiana/Winamac", "America/New_York|America/Indianapolis", "America/New_York|America/Iqaluit", "America/New_York|America/Kentucky/Louisville", "America/New_York|America/Kentucky/Monticello", "America/New_York|America/Louisville", "America/New_York|America/Montreal", "America/New_York|America/Nassau", "America/New_York|America/Nipigon", "America/New_York|America/Pangnirtung", "America/New_York|America/Port-au-Prince", "America/New_York|America/Thunder_Bay", "America/New_York|America/Toronto", "America/New_York|Canada/Eastern", "America/New_York|EST5EDT", "America/New_York|US/East-Indiana", "America/New_York|US/Eastern", "America/New_York|US/Michigan", "America/Noronha|Atlantic/South_Georgia", "America/Noronha|Brazil/DeNoronha", "America/Noronha|Etc/GMT+2", "America/Panama|America/Atikokan", "America/Panama|America/Cancun", "America/Panama|America/Cayman", "America/Panama|America/Coral_Harbour", "America/Panama|America/Jamaica", "America/Panama|EST", "America/Panama|Jamaica", "America/Phoenix|America/Creston", "America/Phoenix|America/Dawson_Creek", "America/Phoenix|America/Fort_Nelson", "America/Phoenix|America/Hermosillo", "America/Phoenix|MST", "America/Phoenix|US/Arizona", "America/Santiago|Chile/Continental", "America/Santo_Domingo|America/Anguilla", "America/Santo_Domingo|America/Antigua", "America/Santo_Domingo|America/Aruba", "America/Santo_Domingo|America/Barbados", "America/Santo_Domingo|America/Blanc-Sablon", "America/Santo_Domingo|America/Curacao", "America/Santo_Domingo|America/Dominica", "America/Santo_Domingo|America/Grenada", "America/Santo_Domingo|America/Guadeloupe", "America/Santo_Domingo|America/Kralendijk", "America/Santo_Domingo|America/Lower_Princes", "America/Santo_Domingo|America/Marigot", "America/Santo_Domingo|America/Martinique", "America/Santo_Domingo|America/Montserrat", "America/Santo_Domingo|America/Port_of_Spain", "America/Santo_Domingo|America/Puerto_Rico", "America/Santo_Domingo|America/St_Barthelemy", "America/Santo_Domingo|America/St_Kitts", "America/Santo_Domingo|America/St_Lucia", "America/Santo_Domingo|America/St_Thomas", "America/Santo_Domingo|America/St_Vincent", "America/Santo_Domingo|America/Tortola", "America/Santo_Domingo|America/Virgin", "America/Sao_Paulo|Brazil/East", "America/St_Johns|Canada/Newfoundland", "America/Whitehorse|America/Dawson", "America/Whitehorse|Canada/Yukon", "Asia/Bangkok|Antarctica/Davis", "Asia/Bangkok|Asia/Barnaul", "Asia/Bangkok|Asia/Ho_Chi_Minh", "Asia/Bangkok|Asia/Hovd", "Asia/Bangkok|Asia/Krasnoyarsk", "Asia/Bangkok|Asia/Novokuznetsk", "Asia/Bangkok|Asia/Novosibirsk", "Asia/Bangkok|Asia/Phnom_Penh", "Asia/Bangkok|Asia/Saigon", "Asia/Bangkok|Asia/Tomsk", "Asia/Bangkok|Asia/Vientiane", "Asia/Bangkok|Etc/GMT-7", "Asia/Bangkok|Indian/Christmas", "Asia/Chita|Asia/Dili", "Asia/Chita|Asia/Khandyga", "Asia/Chita|Asia/Yakutsk", "Asia/Chita|Etc/GMT-9", "Asia/Chita|Pacific/Palau", "Asia/Dhaka|Antarctica/Vostok", "Asia/Dhaka|Asia/Almaty", "Asia/Dhaka|Asia/Bishkek", "Asia/Dhaka|Asia/Dacca", "Asia/Dhaka|Asia/Kashgar", "Asia/Dhaka|Asia/Omsk", "Asia/Dhaka|Asia/Qostanay", "Asia/Dhaka|Asia/Thimbu", "Asia/Dhaka|Asia/Thimphu", "Asia/Dhaka|Asia/Urumqi", "Asia/Dhaka|Etc/GMT-6", "Asia/Dhaka|Indian/Chagos", "Asia/Dubai|Asia/Baku", "Asia/Dubai|Asia/Muscat", "Asia/Dubai|Asia/Tbilisi", "Asia/Dubai|Asia/Yerevan", "Asia/Dubai|Etc/GMT-4", "Asia/Dubai|Europe/Astrakhan", "Asia/Dubai|Europe/Samara", "Asia/Dubai|Europe/Saratov", "Asia/Dubai|Europe/Ulyanovsk", "Asia/Dubai|Indian/Mahe", "Asia/Dubai|Indian/Mauritius", "Asia/Dubai|Indian/Reunion", "Asia/Gaza|Asia/Hebron", "Asia/Hong_Kong|Hongkong", "Asia/Jakarta|Asia/Pontianak", "Asia/Jerusalem|Asia/Tel_Aviv", "Asia/Jerusalem|Israel", "Asia/Kamchatka|Asia/Anadyr", "Asia/Kamchatka|Etc/GMT-12", "Asia/Kamchatka|Kwajalein", "Asia/Kamchatka|Pacific/Funafuti", "Asia/Kamchatka|Pacific/Kwajalein", "Asia/Kamchatka|Pacific/Majuro", "Asia/Kamchatka|Pacific/Nauru", "Asia/Kamchatka|Pacific/Tarawa", "Asia/Kamchatka|Pacific/Wake", "Asia/Kamchatka|Pacific/Wallis", "Asia/Kathmandu|Asia/Katmandu", "Asia/Kolkata|Asia/Calcutta", "Asia/Kuala_Lumpur|Asia/Brunei", "Asia/Kuala_Lumpur|Asia/Choibalsan", "Asia/Kuala_Lumpur|Asia/Irkutsk", "Asia/Kuala_Lumpur|Asia/Kuching", "Asia/Kuala_Lumpur|Asia/Singapore", "Asia/Kuala_Lumpur|Asia/Ulaanbaatar", "Asia/Kuala_Lumpur|Asia/Ulan_Bator", "Asia/Kuala_Lumpur|Etc/GMT-8", "Asia/Kuala_Lumpur|Singapore", "Asia/Makassar|Asia/Ujung_Pandang", "Asia/Rangoon|Asia/Yangon", "Asia/Rangoon|Indian/Cocos", "Asia/Sakhalin|Asia/Magadan", "Asia/Sakhalin|Asia/Srednekolymsk", "Asia/Sakhalin|Etc/GMT-11", "Asia/Sakhalin|Pacific/Bougainville", "Asia/Sakhalin|Pacific/Efate", "Asia/Sakhalin|Pacific/Guadalcanal", "Asia/Sakhalin|Pacific/Kosrae", "Asia/Sakhalin|Pacific/Noumea", "Asia/Sakhalin|Pacific/Pohnpei", "Asia/Sakhalin|Pacific/Ponape", "Asia/Seoul|ROK", "Asia/Shanghai|Asia/Chongqing", "Asia/Shanghai|Asia/Chungking", "Asia/Shanghai|Asia/Harbin", "Asia/Shanghai|Asia/Macao", "Asia/Shanghai|Asia/Macau", "Asia/Shanghai|Asia/Taipei", "Asia/Shanghai|PRC", "Asia/Shanghai|ROC", "Asia/Tashkent|Antarctica/Mawson", "Asia/Tashkent|Asia/Aqtau", "Asia/Tashkent|Asia/Aqtobe", "Asia/Tashkent|Asia/Ashgabat", "Asia/Tashkent|Asia/Ashkhabad", "Asia/Tashkent|Asia/Atyrau", "Asia/Tashkent|Asia/Dushanbe", "Asia/Tashkent|Asia/Oral", "Asia/Tashkent|Asia/Samarkand", "Asia/Tashkent|Asia/Yekaterinburg", "Asia/Tashkent|Etc/GMT-5", "Asia/Tashkent|Indian/Kerguelen", "Asia/Tashkent|Indian/Maldives", "Asia/Tehran|Iran", "Asia/Tokyo|Japan", "Asia/Vladivostok|Antarctica/DumontDUrville", "Asia/Vladivostok|Asia/Ust-Nera", "Asia/Vladivostok|Etc/GMT-10", "Asia/Vladivostok|Pacific/Chuuk", "Asia/Vladivostok|Pacific/Port_Moresby", "Asia/Vladivostok|Pacific/Truk", "Asia/Vladivostok|Pacific/Yap", "Atlantic/Azores|America/Scoresbysund", "Atlantic/Cape_Verde|Etc/GMT+1", "Australia/Adelaide|Australia/Broken_Hill", "Australia/Adelaide|Australia/South", "Australia/Adelaide|Australia/Yancowinna", "Australia/Brisbane|Australia/Lindeman", "Australia/Brisbane|Australia/Queensland", "Australia/Darwin|Australia/North", "Australia/Lord_Howe|Australia/LHI", "Australia/Perth|Australia/West", "Australia/Sydney|Antarctica/Macquarie", "Australia/Sydney|Australia/ACT", "Australia/Sydney|Australia/Canberra", "Australia/Sydney|Australia/Currie", "Australia/Sydney|Australia/Hobart", "Australia/Sydney|Australia/Melbourne", "Australia/Sydney|Australia/NSW", "Australia/Sydney|Australia/Tasmania", "Australia/Sydney|Australia/Victoria", "Etc/UTC|Etc/UCT", "Etc/UTC|Etc/Universal", "Etc/UTC|Etc/Zulu", "Etc/UTC|UCT", "Etc/UTC|UTC", "Etc/UTC|Universal", "Etc/UTC|Zulu", "Europe/Athens|Asia/Famagusta", "Europe/Athens|Asia/Nicosia", "Europe/Athens|EET", "Europe/Athens|Europe/Bucharest", "Europe/Athens|Europe/Helsinki", "Europe/Athens|Europe/Kiev", "Europe/Athens|Europe/Kyiv", "Europe/Athens|Europe/Mariehamn", "Europe/Athens|Europe/Nicosia", "Europe/Athens|Europe/Riga", "Europe/Athens|Europe/Sofia", "Europe/Athens|Europe/Tallinn", "Europe/Athens|Europe/Uzhgorod", "Europe/Athens|Europe/Vilnius", "Europe/Athens|Europe/Zaporozhye", "Europe/Chisinau|Europe/Tiraspol", "Europe/Dublin|Eire", "Europe/Istanbul|Antarctica/Syowa", "Europe/Istanbul|Asia/Aden", "Europe/Istanbul|Asia/Baghdad", "Europe/Istanbul|Asia/Bahrain", "Europe/Istanbul|Asia/Istanbul", "Europe/Istanbul|Asia/Kuwait", "Europe/Istanbul|Asia/Qatar", "Europe/Istanbul|Asia/Riyadh", "Europe/Istanbul|Etc/GMT-3", "Europe/Istanbul|Europe/Minsk", "Europe/Istanbul|Turkey", "Europe/Lisbon|Atlantic/Canary", "Europe/Lisbon|Atlantic/Faeroe", "Europe/Lisbon|Atlantic/Faroe", "Europe/Lisbon|Atlantic/Madeira", "Europe/Lisbon|Portugal", "Europe/Lisbon|WET", "Europe/London|Europe/Belfast", "Europe/London|Europe/Guernsey", "Europe/London|Europe/Isle_of_Man", "Europe/London|Europe/Jersey", "Europe/London|GB", "Europe/London|GB-Eire", "Europe/Moscow|Europe/Kirov", "Europe/Moscow|Europe/Simferopol", "Europe/Moscow|W-SU", "Europe/Paris|Africa/Ceuta", "Europe/Paris|Arctic/Longyearbyen", "Europe/Paris|Atlantic/Jan_Mayen", "Europe/Paris|CET", "Europe/Paris|Europe/Amsterdam", "Europe/Paris|Europe/Andorra", "Europe/Paris|Europe/Belgrade", "Europe/Paris|Europe/Berlin", "Europe/Paris|Europe/Bratislava", "Europe/Paris|Europe/Brussels", "Europe/Paris|Europe/Budapest", "Europe/Paris|Europe/Busingen", "Europe/Paris|Europe/Copenhagen", "Europe/Paris|Europe/Gibraltar", "Europe/Paris|Europe/Ljubljana", "Europe/Paris|Europe/Luxembourg", "Europe/Paris|Europe/Madrid", "Europe/Paris|Europe/Malta", "Europe/Paris|Europe/Monaco", "Europe/Paris|Europe/Oslo", "Europe/Paris|Europe/Podgorica", "Europe/Paris|Europe/Prague", "Europe/Paris|Europe/Rome", "Europe/Paris|Europe/San_Marino", "Europe/Paris|Europe/Sarajevo", "Europe/Paris|Europe/Skopje", "Europe/Paris|Europe/Stockholm", "Europe/Paris|Europe/Tirane", "Europe/Paris|Europe/Vaduz", "Europe/Paris|Europe/Vatican", "Europe/Paris|Europe/Vienna", "Europe/Paris|Europe/Warsaw", "Europe/Paris|Europe/Zagreb", "Europe/Paris|Europe/Zurich", "Europe/Paris|Poland", "Pacific/Auckland|Antarctica/McMurdo", "Pacific/Auckland|Antarctica/South_Pole", "Pacific/Auckland|NZ", "Pacific/Chatham|NZ-CHAT", "Pacific/Easter|Chile/EasterIsland", "Pacific/Galapagos|Etc/GMT+6", "Pacific/Gambier|Etc/GMT+9", "Pacific/Guam|Pacific/Saipan", "Pacific/Honolulu|HST", "Pacific/Honolulu|Pacific/Johnston", "Pacific/Honolulu|US/Hawaii", "Pacific/Kiritimati|Etc/GMT-14", "Pacific/Niue|Etc/GMT+11", "Pacific/Pago_Pago|Pacific/Midway", "Pacific/Pago_Pago|Pacific/Samoa", "Pacific/Pago_Pago|US/Samoa", "Pacific/Pitcairn|Etc/GMT+8", "Pacific/Tahiti|Etc/GMT+10", "Pacific/Tahiti|Pacific/Rarotonga", "Pacific/Tongatapu|Etc/GMT-13", "Pacific/Tongatapu|Pacific/Enderbury", "Pacific/Tongatapu|Pacific/Fakaofo", "Pacific/Tongatapu|Pacific/Kanton"], countries: ["AD|Europe/Andorra", "AE|Asia/Dubai", "AF|Asia/Kabul", "AG|America/Puerto_Rico America/Antigua", "AI|America/Puerto_Rico America/Anguilla", "AL|Europe/Tirane", "AM|Asia/Yerevan", "AO|Africa/Lagos Africa/Luanda", "AQ|Antarctica/Casey Antarctica/Davis Antarctica/Mawson Antarctica/Palmer Antarctica/Rothera Antarctica/Troll Asia/Urumqi Pacific/Auckland Pacific/Port_Moresby Asia/Riyadh Antarctica/McMurdo Antarctica/DumontDUrville Antarctica/Syowa Antarctica/Vostok", "AR|America/Argentina/Buenos_Aires America/Argentina/Cordoba America/Argentina/Salta America/Argentina/Jujuy America/Argentina/Tucuman America/Argentina/Catamarca America/Argentina/La_Rioja America/Argentina/San_Juan America/Argentina/Mendoza America/Argentina/San_Luis America/Argentina/Rio_Gallegos America/Argentina/Ushuaia", "AS|Pacific/Pago_Pago", "AT|Europe/Vienna", "AU|Australia/Lord_Howe Antarctica/Macquarie Australia/Hobart Australia/Melbourne Australia/Sydney Australia/Broken_Hill Australia/Brisbane Australia/Lindeman Australia/Adelaide Australia/Darwin Australia/Perth Australia/Eucla", "AW|America/Puerto_Rico America/Aruba", "AX|Europe/Helsinki Europe/Mariehamn", "AZ|Asia/Baku", "BA|Europe/Belgrade Europe/Sarajevo", "BB|America/Barbados", "BD|Asia/Dhaka", "BE|Europe/Brussels", "BF|Africa/Abidjan Africa/Ouagadougou", "BG|Europe/Sofia", "BH|Asia/Qatar Asia/Bahrain", "BI|Africa/Maputo Africa/Bujumbura", "BJ|Africa/Lagos Africa/Porto-Novo", "BL|America/Puerto_Rico America/St_Barthelemy", "BM|Atlantic/Bermuda", "BN|Asia/Kuching Asia/Brunei", "BO|America/La_Paz", "BQ|America/Puerto_Rico America/Kralendijk", "BR|America/Noronha America/Belem America/Fortaleza America/Recife America/Araguaina America/Maceio America/Bahia America/Sao_Paulo America/Campo_Grande America/Cuiaba America/Santarem America/Porto_Velho America/Boa_Vista America/Manaus America/Eirunepe America/Rio_Branco", "BS|America/Toronto America/Nassau", "BT|Asia/Thimphu", "BW|Africa/Maputo Africa/Gaborone", "BY|Europe/Minsk", "BZ|America/Belize", "CA|America/St_Johns America/Halifax America/Glace_Bay America/Moncton America/Goose_Bay America/Toronto America/Iqaluit America/Winnipeg America/Resolute America/Rankin_Inlet America/Regina America/Swift_Current America/Edmonton America/Cambridge_Bay America/Inuvik America/Dawson_Creek America/Fort_Nelson America/Whitehorse America/Dawson America/Vancouver America/Panama America/Puerto_Rico America/Phoenix America/Blanc-Sablon America/Atikokan America/Creston", "CC|Asia/Yangon Indian/Cocos", "CD|Africa/Maputo Africa/Lagos Africa/Kinshasa Africa/Lubumbashi", "CF|Africa/Lagos Africa/Bangui", "CG|Africa/Lagos Africa/Brazzaville", "CH|Europe/Zurich", "CI|Africa/Abidjan", "CK|Pacific/Rarotonga", "CL|America/Santiago America/Punta_Arenas Pacific/Easter", "CM|Africa/Lagos Africa/Douala", "CN|Asia/Shanghai Asia/Urumqi", "CO|America/Bogota", "CR|America/Costa_Rica", "CU|America/Havana", "CV|Atlantic/Cape_Verde", "CW|America/Puerto_Rico America/Curacao", "CX|Asia/Bangkok Indian/Christmas", "CY|Asia/Nicosia Asia/Famagusta", "CZ|Europe/Prague", "DE|Europe/Zurich Europe/Berlin Europe/Busingen", "DJ|Africa/Nairobi Africa/Djibouti", "DK|Europe/Berlin Europe/Copenhagen", "DM|America/Puerto_Rico America/Dominica", "DO|America/Santo_Domingo", "DZ|Africa/Algiers", "EC|America/Guayaquil Pacific/Galapagos", "EE|Europe/Tallinn", "EG|Africa/Cairo", "EH|Africa/El_Aaiun", "ER|Africa/Nairobi Africa/Asmara", "ES|Europe/Madrid Africa/Ceuta Atlantic/Canary", "ET|Africa/Nairobi Africa/Addis_Ababa", "FI|Europe/Helsinki", "FJ|Pacific/Fiji", "FK|Atlantic/Stanley", "FM|Pacific/Kosrae Pacific/Port_Moresby Pacific/Guadalcanal Pacific/Chuuk Pacific/Pohnpei", "FO|Atlantic/Faroe", "FR|Europe/Paris", "GA|Africa/Lagos Africa/Libreville", "GB|Europe/London", "GD|America/Puerto_Rico America/Grenada", "GE|Asia/Tbilisi", "GF|America/Cayenne", "GG|Europe/London Europe/Guernsey", "GH|Africa/Abidjan Africa/Accra", "GI|Europe/Gibraltar", "GL|America/Nuuk America/Danmarkshavn America/Scoresbysund America/Thule", "GM|Africa/Abidjan Africa/Banjul", "GN|Africa/Abidjan Africa/Conakry", "GP|America/Puerto_Rico America/Guadeloupe", "GQ|Africa/Lagos Africa/Malabo", "GR|Europe/Athens", "GS|Atlantic/South_Georgia", "GT|America/Guatemala", "GU|Pacific/Guam", "GW|Africa/Bissau", "GY|America/Guyana", "HK|Asia/Hong_Kong", "HN|America/Tegucigalpa", "HR|Europe/Belgrade Europe/Zagreb", "HT|America/Port-au-Prince", "HU|Europe/Budapest", "ID|Asia/Jakarta Asia/Pontianak Asia/Makassar Asia/Jayapura", "IE|Europe/Dublin", "IL|Asia/Jerusalem", "IM|Europe/London Europe/Isle_of_Man", "IN|Asia/Kolkata", "IO|Indian/Chagos", "IQ|Asia/Baghdad", "IR|Asia/Tehran", "IS|Africa/Abidjan Atlantic/Reykjavik", "IT|Europe/Rome", "JE|Europe/London Europe/Jersey", "JM|America/Jamaica", "JO|Asia/Amman", "JP|Asia/Tokyo", "KE|Africa/Nairobi", "KG|Asia/Bishkek", "KH|Asia/Bangkok Asia/Phnom_Penh", "KI|Pacific/Tarawa Pacific/Kanton Pacific/Kiritimati", "KM|Africa/Nairobi Indian/Comoro", "KN|America/Puerto_Rico America/St_Kitts", "KP|Asia/Pyongyang", "KR|Asia/Seoul", "KW|Asia/Riyadh Asia/Kuwait", "KY|America/Panama America/Cayman", "KZ|Asia/Almaty Asia/Qyzylorda Asia/Qostanay Asia/Aqtobe Asia/Aqtau Asia/Atyrau Asia/Oral", "LA|Asia/Bangkok Asia/Vientiane", "LB|Asia/Beirut", "LC|America/Puerto_Rico America/St_Lucia", "LI|Europe/Zurich Europe/Vaduz", "LK|Asia/Colombo", "LR|Africa/Monrovia", "LS|Africa/Johannesburg Africa/Maseru", "LT|Europe/Vilnius", "LU|Europe/Brussels Europe/Luxembourg", "LV|Europe/Riga", "LY|Africa/Tripoli", "MA|Africa/Casablanca", "MC|Europe/Paris Europe/Monaco", "MD|Europe/Chisinau", "ME|Europe/Belgrade Europe/Podgorica", "MF|America/Puerto_Rico America/Marigot", "MG|Africa/Nairobi Indian/Antananarivo", "MH|Pacific/Tarawa Pacific/Kwajalein Pacific/Majuro", "MK|Europe/Belgrade Europe/Skopje", "ML|Africa/Abidjan Africa/Bamako", "MM|Asia/Yangon", "MN|Asia/Ulaanbaatar Asia/Hovd Asia/Choibalsan", "MO|Asia/Macau", "MP|Pacific/Guam Pacific/Saipan", "MQ|America/Martinique", "MR|Africa/Abidjan Africa/Nouakchott", "MS|America/Puerto_Rico America/Montserrat", "MT|Europe/Malta", "MU|Indian/Mauritius", "MV|Indian/Maldives", "MW|Africa/Maputo Africa/Blantyre", "MX|America/Mexico_City America/Cancun America/Merida America/Monterrey America/Matamoros America/Chihuahua America/Ciudad_Juarez America/Ojinaga America/Mazatlan America/Bahia_Banderas America/Hermosillo America/Tijuana", "MY|Asia/Kuching Asia/Singapore Asia/Kuala_Lumpur", "MZ|Africa/Maputo", "NA|Africa/Windhoek", "NC|Pacific/Noumea", "NE|Africa/Lagos Africa/Niamey", "NF|Pacific/Norfolk", "NG|Africa/Lagos", "NI|America/Managua", "NL|Europe/Brussels Europe/Amsterdam", "NO|Europe/Berlin Europe/Oslo", "NP|Asia/Kathmandu", "NR|Pacific/Nauru", "NU|Pacific/Niue", "NZ|Pacific/Auckland Pacific/Chatham", "OM|Asia/Dubai Asia/Muscat", "PA|America/Panama", "PE|America/Lima", "PF|Pacific/Tahiti Pacific/Marquesas Pacific/Gambier", "PG|Pacific/Port_Moresby Pacific/Bougainville", "PH|Asia/Manila", "PK|Asia/Karachi", "PL|Europe/Warsaw", "PM|America/Miquelon", "PN|Pacific/Pitcairn", "PR|America/Puerto_Rico", "PS|Asia/Gaza Asia/Hebron", "PT|Europe/Lisbon Atlantic/Madeira Atlantic/Azores", "PW|Pacific/Palau", "PY|America/Asuncion", "QA|Asia/Qatar", "RE|Asia/Dubai Indian/Reunion", "RO|Europe/Bucharest", "RS|Europe/Belgrade", "RU|Europe/Kaliningrad Europe/Moscow Europe/Simferopol Europe/Kirov Europe/Volgograd Europe/Astrakhan Europe/Saratov Europe/Ulyanovsk Europe/Samara Asia/Yekaterinburg Asia/Omsk Asia/Novosibirsk Asia/Barnaul Asia/Tomsk Asia/Novokuznetsk Asia/Krasnoyarsk Asia/Irkutsk Asia/Chita Asia/Yakutsk Asia/Khandyga Asia/Vladivostok Asia/Ust-Nera Asia/Magadan Asia/Sakhalin Asia/Srednekolymsk Asia/Kamchatka Asia/Anadyr", "RW|Africa/Maputo Africa/Kigali", "SA|Asia/Riyadh", "SB|Pacific/Guadalcanal", "SC|Asia/Dubai Indian/Mahe", "SD|Africa/Khartoum", "SE|Europe/Berlin Europe/Stockholm", "SG|Asia/Singapore", "SH|Africa/Abidjan Atlantic/St_Helena", "SI|Europe/Belgrade Europe/Ljubljana", "SJ|Europe/Berlin Arctic/Longyearbyen", "SK|Europe/Prague Europe/Bratislava", "SL|Africa/Abidjan Africa/Freetown", "SM|Europe/Rome Europe/San_Marino", "SN|Africa/Abidjan Africa/Dakar", "SO|Africa/Nairobi Africa/Mogadishu", "SR|America/Paramaribo", "SS|Africa/Juba", "ST|Africa/Sao_Tome", "SV|America/El_Salvador", "SX|America/Puerto_Rico America/Lower_Princes", "SY|Asia/Damascus", "SZ|Africa/Johannesburg Africa/Mbabane", "TC|America/Grand_Turk", "TD|Africa/Ndjamena", "TF|Asia/Dubai Indian/Maldives Indian/Kerguelen", "TG|Africa/Abidjan Africa/Lome", "TH|Asia/Bangkok", "TJ|Asia/Dushanbe", "TK|Pacific/Fakaofo", "TL|Asia/Dili", "TM|Asia/Ashgabat", "TN|Africa/Tunis", "TO|Pacific/Tongatapu", "TR|Europe/Istanbul", "TT|America/Puerto_Rico America/Port_of_Spain", "TV|Pacific/Tarawa Pacific/Funafuti", "TW|Asia/Taipei", "TZ|Africa/Nairobi Africa/Dar_es_Salaam", "UA|Europe/Simferopol Europe/Kyiv", "UG|Africa/Nairobi Africa/Kampala", "UM|Pacific/Pago_Pago Pacific/Tarawa Pacific/Midway Pacific/Wake", "US|America/New_York America/Detroit America/Kentucky/Louisville America/Kentucky/Monticello America/Indiana/Indianapolis America/Indiana/Vincennes America/Indiana/Winamac America/Indiana/Marengo America/Indiana/Petersburg America/Indiana/Vevay America/Chicago America/Indiana/Tell_City America/Indiana/Knox America/Menominee America/North_Dakota/Center America/North_Dakota/New_Salem America/North_Dakota/Beulah America/Denver America/Boise America/Phoenix America/Los_Angeles America/Anchorage America/Juneau America/Sitka America/Metlakatla America/Yakutat America/Nome America/Adak Pacific/Honolulu", "UY|America/Montevideo", "UZ|Asia/Samarkand Asia/Tashkent", "VA|Europe/Rome Europe/Vatican", "VC|America/Puerto_Rico America/St_Vincent", "VE|America/Caracas", "VG|America/Puerto_Rico America/Tortola", "VI|America/Puerto_Rico America/St_Thomas", "VN|Asia/Bangkok Asia/Ho_Chi_Minh", "VU|Pacific/Efate", "WF|Pacific/Tarawa Pacific/Wallis", "WS|Pacific/Apia", "YE|Asia/Riyadh Asia/Aden", "YT|Africa/Nairobi Indian/Mayotte", "ZA|Africa/Johannesburg", "ZM|Africa/Maputo Africa/Lusaka", "ZW|Africa/Maputo Africa/Harare"] }), o;
15174      });
15175    }
15176  });
15177
15178  
15178// frappe/public/js/lib/leaflet/leaflet.js
15179  var require_leaflet = __commonJS({
15180    "frappe/public/js/lib/leaflet/leaflet.js"(exports, module) {
15181      !function(t, i2) {
15182        "object" == typeof exports && "undefined" != typeof module ? i2(exports) : "function" == typeof define && define.amd ? define(["exports"], i2) : i2(t.L = {});
15183      }(exports, function(t) {
15184        "use strict";
15185        function i2(t2) {
15186          var i3, e2, n2, o2;
15187          for (e2 = 1, n2 = arguments.length; e2 < n2; e2++) {
15188            o2 = arguments[e2];
15189            for (i3 in o2)
15190              t2[i3] = o2[i3];
15191          }
15192          return t2;
15193        }
15194        function e(t2, i3) {
15195          var e2 = Array.prototype.slice;
15196          if (t2.bind)
15197            return t2.bind.apply(t2, e2.call(arguments, 1));
15198          var n2 = e2.call(arguments, 2);
15199          return function() {
15200            return t2.apply(i3, n2.length ? n2.concat(e2.call(arguments)) : arguments);
15201          };
15202        }
15203        function n(t2) {
15204          return t2._leaflet_id = t2._leaflet_id || ++ti, t2._leaflet_id;
15205        }
15206        function o(t2, i3, e2) {
15207          var n2, o2, s2, r2;
15208          return r2 = function() {
15209            n2 = false, o2 && (s2.apply(e2, o2), o2 = false);
15210          }, s2 = function() {
15211            n2 ? o2 = arguments : (t2.apply(e2, arguments), setTimeout(r2, i3), n2 = true);
15212          };
15213        }
15214        function s(t2, i3, e2) {
15215          var n2 = i3[1], o2 = i3[0], s2 = n2 - o2;
15216          return t2 === n2 && e2 ? t2 : ((t2 - o2) % s2 + s2) % s2 + o2;
15217        }
15218        function r() {
15219          return false;
15220        }
15221        function a(t2, i3) {
15222          var e2 = Math.pow(10, i3 || 5);
15223          return Math.round(t2 * e2) / e2;
15224        }
15225        function h(t2) {
15226          return t2.trim ? t2.trim() : t2.replace(/^\s+|\s+$/g, "");
15227        }
15228        function u(t2) {
15229          return h(t2).split(/\s+/);
15230        }
15231        function l(t2, i3) {
15232          t2.hasOwnProperty("options") || (t2.options = t2.options ? Qt(t2.options) : {});
15233          for (var e2 in i3)
15234            t2.options[e2] = i3[e2];
15235          return t2.options;
15236        }
15237        function c(t2, i3, e2) {
15238          var n2 = [];
15239          for (var o2 in t2)
15240            n2.push(encodeURIComponent(e2 ? o2.toUpperCase() : o2) + "=" + encodeURIComponent(t2[o2]));
15241          return (i3 && -1 !== i3.indexOf("?") ? "&" : "?") + n2.join("&");
15242        }
15243        function _(t2, i3) {
15244          return t2.replace(ii, function(t3, e2) {
15245            var n2 = i3[e2];
15246            if (void 0 === n2)
15247              throw new Error("No value provided for variable " + t3);
15248            return "function" == typeof n2 && (n2 = n2(i3)), n2;
15249          });
15250        }
15251        function d(t2, i3) {
15252          for (var e2 = 0; e2 < t2.length; e2++)
15253            if (t2[e2] === i3)
15254              return e2;
15255          return -1;
15256        }
15257        function p(t2) {
15258          return window["webkit" + t2] || window["moz" + t2] || window["ms" + t2];
15259        }
15260        function m(t2) {
15261          var i3 = +new Date(), e2 = Math.max(0, 16 - (i3 - oi));
15262          return oi = i3 + e2, window.setTimeout(t2, e2);
15263        }
15264        function f(t2, i3, n2) {
15265          if (!n2 || si !== m)
15266            return si.call(window, e(t2, i3));
15267          t2.call(i3);
15268        }
15269        function g(t2) {
15270          t2 && ri.call(window, t2);
15271        }
15272        function v() {
15273        }
15274        function y(t2) {
15275          if (L && L.Mixin) {
15276            t2 = ei(t2) ? t2 : [t2];
15277            for (var i3 = 0; i3 < t2.length; i3++)
15278              t2[i3] === L.Mixin.Events && console.warn("Deprecated 
15278include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.", new Error().stack);
15279          }
15280        }
15281        function x(t2, i3, e2) {
15282          this.x = e2 ? Math.round(t2) : t2, this.y = e2 ? Math.round(i3) : i3;
15283        }
15284        function w(t2, i3, e2) {
15285          return t2 instanceof x ? t2 : ei(t2) ? new x(t2[0], t2[1]) : void 0 === t2 || null === t2 ? t2 : "object" == typeof t2 && "x" in t2 && "y" in t2 ? new x(t2.x, t2.y) : new x(t2, i3, e2);
15286        }
15287        function P(t2, i3) {
15288          if (t2)
15289            for (var e2 = i3 ? [t2, i3] : t2, n2 = 0, o2 = e2.length; n2 < o2; n2++)
15290              this.extend(e2[n2]);
15291        }
15292        function b(t2, i3) {
15293          return !t2 || t2 instanceof P ? t2 : new P(t2, i3);
15294        }
15295        function T(t2, i3) {
15296          if (t2)
15297            for (var e2 = i3 ? [t2, i3] : t2, n2 = 0, o2 = e2.length; n2 < o2; n2++)
15298              this.extend(e2[n2]);
15299        }
15300        function z(t2, i3) {
15301          return t2 instanceof T ? t2 : new T(t2, i3);
15302        }
15303        function M(t2, i3, e2) {
15304          if (isNaN(t2) || isNaN(i3))
15305            throw new Error("Invalid LatLng object: (" + t2 + ", " + i3 + ")");
15306          this.lat = +t2, this.lng = +i3, void 0 !== e2 && (this.alt = +e2);
15307        }
15308        function C(t2, i3, e2) {
15309          return t2 instanceof M ? t2 : ei(t2) && "object" != typeof t2[0] ? 3 === t2.length ? new M(t2[0], t2[1], t2[2]) : 2 === t2.length ? new M(t2[0], t2[1]) : null : void 0 === t2 || null === t2 ? t2 : "object" == typeof t2 && "lat" in t2 ? new M(t2.lat, "lng" in t2 ? t2.lng : t2.lon, t2.alt) : void 0 === i3 ? null : new M(t2, i3, e2);
15310        }
15311        function Z(t2, i3, e2, n2) {
15312          if (ei(t2))
15313            return this._a = t2[0], this._b = t2[1], this._c = t2[2], void (this._d = t2[3]);
15314          this._a = t2, this._b = i3, this._c = e2, this._d = n2;
15315        }
15316        function E(t2, i3, e2, n2) {
15317          return new Z(t2, i3, e2, n2);
15318        }
15319        function S(t2) {
15320          return document.createElementNS("http://www.w3.org/2000/svg", t2);
15321        }
15322        function k(t2, i3) {
15323          var e2, n2, o2, s2, r2, a2, h2 = "";
15324          for (e2 = 0, o2 = t2.length; e2 < o2; e2++) {
15325            for (n2 = 0, s2 = (r2 = t2[e2]).length; n2 < s2; n2++)
15326              a2 = r2[n2], h2 += (n2 ? "L" : "M") + a2.x + " " + a2.y;
15327            h2 += i3 ? qi ? "z" : "x" : "";
15328          }
15329          return h2 || "M0 0";
15330        }
15331        function B(t2) {
15332          return navigator.userAgent.toLowerCase().indexOf(t2) >= 0;
15333        }
15334        function I(t2, i3, e2, n2) {
15335          return "touchstart" === i3 ? O(t2, e2, n2) : "touchmove" === i3 ? W(t2, e2, n2) : "touchend" === i3 && H(t2, e2, n2), this;
15336        }
15337        function A(t2, i3, e2) {
15338          var n2 = t2["_leaflet_" + i3 + e2];
15339          return "touchstart" === i3 ? t2.removeEventListener(Xi, n2, false) : "touchmove" === i3 ? t2.removeEventListener(Ji, n2, false) : "touchend" === i3 && (t2.removeEventListener($i, n2, false), t2.removeEventListener(Qi, n2, false)), this;
15340        }
15341        function O(t2, i3, n2) {
15342          var o2 = e(function(t3) {
15343            if ("mouse" !== t3.pointerType && t3.pointerType !== t3.MSPOINTER_TYPE_MOUSE && t3.pointerType !== t3.MSPOINTER_TYPE_MOUSE) {
15344              if (!(te.indexOf(t3.target.tagName) < 0))
15345                return;
15346              $2(t3);
15347            }
15348            j(t3, i3);
15349          });
15350          t2["_leaflet_touchstart" + n2] = o2, t2.addEventListener(Xi, o2, false), ee || (document.documentElement.addEventListener(Xi, R, true), document.documentElement.addEventListener(Ji, D, true), document.documentElement.addEventListener($i, N, true), document.documentElement.addEventListener(Qi, N, true), ee = true);
15351        }
15352        function R(t2) {
15353          ie[t2.pointerId] = t2, ne++;
15354        }
15355        function D(t2) {
15356          ie[t2.pointerId] && (ie[t2.pointerId] = t2);
15357        }
15358        function N(t2) {
15359          delete ie[t2.pointerId], ne--;
15360        }
15361        function j(t2, i3) {
15362          t2.touches = [];
15363          for (var e2 in ie)
15364            t2.touches.push(ie[e2]);
15365          t2.changedTouches = [t2], i3(t2);
15366        }
15367        function W(t2, i3, e2) {
15368          var n2 = function(t3) {
15369            (t3.pointerType !== t3.MSPOINTER_TYPE_MOUSE && "mouse" !== t3.pointerType || 0 !== t3.buttons) && j(t3, i3);
15370          };
15371          t2["_leaflet_touchmove" + e2] = n2, t2.addEventListener(Ji, n2, false);
15372        }
15373        function H(t2, i3, e2) {
15374          var n2 = function(t3) {
15375            j(t3, i3);
15376          };
15377          t2["_leaflet_touchend" + e2] = n2, t2.addEventListener($i, n2, false), t2.addEventListener(Qi, n2, false);
15378        }
15379        function F(t2, i3, e2) {
15380          function n2(t3) {
15381            var i4;
15382            if (Wi) {
15383              if (!Li || "mouse" === t3.pointerType)
15384                return;
15385              i4 = ne;
15386            } else
15387              i4 = t3.touches.length;
15388            if (!(i4 > 1)) {
15389              var e3 = Date.now(), n3 = e3 - (s2 || e3);
15390              r2 = t3.touches ? t3.touches[0] : t3, a2 = n3 > 0 && n3 <= h2, s2 = e3;
15391            }
15392          }
15393          function o2(t3) {
15394            if (a2 && !r2.cancelBubble) {
15395              if (Wi) {
15396                if (!Li || "mouse" === t3.pointerType)
15397                  return;
15398                var e3, n3, o3 = {};
15399                for (n3 in r2)
15400                  e3 = r2[n3], o3[n3] = e3 && e3.bind ? e3.bind(r2) : e3;
15401                r2 = o3;
15402              }
15403              r2.type = "dblclick", i3(r2), s2 = null;
15404            }
15405          }
15406          var s2, r2, a2 = false, h2 = 250;
15407          return t2[re2 + oe + e2] = n2, t2[re2 + se + e2] = o2, t2[re2 + "dblclick" + e2] = i3, t2.addEventListener(oe, n2, false), t2.addEventListener(se, o2, false), t2.addEventListener("dblclick", i3, false), this;
15408        }
15409        function U(t2, i3) {
15410          var e2 = t2[re2 + oe + i3], n2 = t2[re2 + se + i3], o2 = t2[re2 + "dblclick" + i3];
15411          return t2.removeEventListener(oe, e2, false), t2.removeEventListener(se, n2, false), Li || t2.removeEventListener("dblclick", o2, false), this;
15412        }
15413        function V(t2, i3, e2, n2) {
15414          if ("object" == typeof i3)
15415            for (var o2 in i3)
15416              q(t2, o2, i3[o2], e2);
15417          else
15418            for (var s2 = 0, r2 = (i3 = u(i3)).length; s2 < r2; s2++)
15419              q(t2, i3[s2], e2, n2);
15420          return this;
15421        }
15422        function G(t2, i3, e2, n2) {
15423          if ("object" == typeof i3)
15424            for (var o2 in i3)
15425              K(t2, o2, i3[o2], e2);
15426          else if (i3)
15427            for (var s2 = 0, r2 = (i3 = u(i3)).length; s2 < r2; s2++)
15428              K(t2, i3[s2], e2, n2);
15429          else {
15430            for (var a2 in t2[ae])
15431              K(t2, a2, t2[ae][a2]);
15432            delete t2[ae];
15433          }
15434          return this;
15435        }
15436        function q(t2, i3, e2, o2) {
15437          var s2 = i3 + n(e2) + (o2 ? "_" + n(o2) : "");
15438          if (t2[ae] && t2[ae][s2])
15439            return this;
15440          var r2 = function(i4) {
15441            return e2.call(o2 || t2, i4 || window.event);
15442          }, a2 = r2;
15443          Wi && 0 === i3.indexOf("touch") ? I(t2, i3, r2, s2) : !Hi || "dblclick" !== i3 || !F || Wi && Mi ? "addEventListener" in t2 ? "mousewheel" === i3 ? t2.addEventListener("onwheel" in t2 ? "wheel" : "mousewheel", r2, false) : "mouseenter" === i3 || "mouseleave" === i3 ? (r2 = function(i4) {
15444            i4 = i4 || window.event, ot(t2, i4) && a2(i4);
15445          }, t2.addEventListener("mouseenter" === i3 ? "mouseover" : "mouseout", r2, false)) : ("click" === i3 && bi && (r2 = function(t3) {
15446            st(t3, a2);
15447          }), t2.addEventListener(i3, r2, false)) : "attachEvent" in t2 && t2.attachEvent("on" + i3, r2) : F(t2, r2, s2), t2[ae] = t2[ae] || {}, t2[ae][s2] = r2;
15448        }
15449        function K(t2, i3, e2, o2) {
15450          var s2 = i3 + n(e2) + (o2 ? "_" + n(o2) : ""), r2 = t2[ae] && t2[ae][s2];
15451          if (!r2)
15452            return this;
15453          Wi && 0 === i3.indexOf("touch") ? A(t2, i3, s2) : Hi && "dblclick" === i3 && U ? U(t2, s2) : "removeEventListener" in t2 ? "mousewheel" === i3 ? t2.removeEventListener("onw
15453heel" in t2 ? "wheel" : "mousewheel", r2, false) : t2.removeEventListener("mouseenter" === i3 ? "mouseover" : "mouseleave" === i3 ? "mouseout" : i3, r2, false) : "detachEvent" in t2 && t2.detachEvent("on" + i3, r2), t2[ae][s2] = null;
15454        }
15455        function Y(t2) {
15456          return t2.stopPropagation ? t2.stopPropagation() : t2.originalEvent ? t2.originalEvent._stopped = true : t2.cancelBubble = true, nt(t2), this;
15457        }
15458        function X(t2) {
15459          return q(t2, "mousewheel", Y), this;
15460        }
15461        function J(t2) {
15462          return V(t2, "mousedown touchstart dblclick", Y), q(t2, "click", et), this;
15463        }
15464        function $2(t2) {
15465          return t2.preventDefault ? t2.preventDefault() : t2.returnValue = false, this;
15466        }
15467        function Q(t2) {
15468          return $2(t2), Y(t2), this;
15469        }
15470        function tt(t2, i3) {
15471          if (!i3)
15472            return new x(t2.clientX, t2.clientY);
15473          var e2 = i3.getBoundingClientRect();
15474          return new x(t2.clientX - e2.left - i3.clientLeft, t2.clientY - e2.top - i3.clientTop);
15475        }
15476        function it(t2) {
15477          return Li ? t2.wheelDeltaY / 2 : t2.deltaY && 0 === t2.deltaMode ? -t2.deltaY / he : t2.deltaY && 1 === t2.deltaMode ? 20 * -t2.deltaY : t2.deltaY && 2 === t2.deltaMode ? 60 * -t2.deltaY : t2.deltaX || t2.deltaZ ? 0 : t2.wheelDelta ? (t2.wheelDeltaY || t2.wheelDelta) / 2 : t2.detail && Math.abs(t2.detail) < 32765 ? 20 * -t2.detail : t2.detail ? t2.detail / -32765 * 60 : 0;
15478        }
15479        function et(t2) {
15480          ue[t2.type] = true;
15481        }
15482        function nt(t2) {
15483          var i3 = ue[t2.type];
15484          return ue[t2.type] = false, i3;
15485        }
15486        function ot(t2, i3) {
15487          var e2 = i3.relatedTarget;
15488          if (!e2)
15489            return true;
15490          try {
15491            for (; e2 && e2 !== t2; )
15492              e2 = e2.parentNode;
15493          } catch (t3) {
15494            return false;
15495          }
15496          return e2 !== t2;
15497        }
15498        function st(t2, i3) {
15499          var e2 = t2.timeStamp || t2.originalEvent && t2.originalEvent.timeStamp, n2 = di && e2 - di;
15500          n2 && n2 > 100 && n2 < 500 || t2.target._simulatedClick && !t2._simulated ? Q(t2) : (di = e2, i3(t2));
15501        }
15502        function rt(t2) {
15503          return "string" == typeof t2 ? document.getElementById(t2) : t2;
15504        }
15505        function at(t2, i3) {
15506          var e2 = t2.style[i3] || t2.currentStyle && t2.currentStyle[i3];
15507          if ((!e2 || "auto" === e2) && document.defaultView) {
15508            var n2 = document.defaultView.getComputedStyle(t2, null);
15509            e2 = n2 ? n2[i3] : null;
15510          }
15511          return "auto" === e2 ? null : e2;
15512        }
15513        function ht(t2, i3, e2) {
15514          var n2 = document.createElement(t2);
15515          return n2.className = i3 || "", e2 && e2.appendChild(n2), n2;
15516        }
15517        function ut(t2) {
15518          var i3 = t2.parentNode;
15519          i3 && i3.removeChild(t2);
15520        }
15521        function lt(t2) {
15522          for (; t2.firstChild; )
15523            t2.removeChild(t2.firstChild);
15524        }
15525        function ct(t2) {
15526          var i3 = t2.parentNode;
15527          i3.lastChild !== t2 && i3.appendChild(t2);
15528        }
15529        function _t(t2) {
15530          var i3 = t2.parentNode;
15531          i3.firstChild !== t2 && i3.insertBefore(t2, i3.firstChild);
15532        }
15533        function dt(t2, i3) {
15534          if (void 0 !== t2.classList)
15535            return t2.classList.contains(i3);
15536          var e2 = gt(t2);
15537          return e2.length > 0 && new RegExp("(^|\\s)" + i3 + "(\\s|$)").test(e2);
15538        }
15539        function pt(t2, i3) {
15540          if (void 0 !== t2.classList)
15541            for (var e2 = u(i3), n2 = 0, o2 = e2.length; n2 < o2; n2++)
15542              t2.classList.add(e2[n2]);
15543          else if (!dt(t2, i3)) {
15544            var s2 = gt(t2);
15545            ft(t2, (s2 ? s2 + " " : "") + i3);
15546          }
15547        }
15548        function mt(t2, i3) {
15549          void 0 !== t2.classList ? t2.classList.remove(i3) : ft(t2, h((" " + gt(t2) + " ").replace(" " + i3 + " ", " ")));
15550        }
15551        function ft(t2, i3) {
15552          void 0 === t2.className.baseVal ? t2.className = i3 : t2.className.baseVal = i3;
15553        }
15554        function gt(t2) {
15555          return void 0 === t2.className.baseVal ? t2.className : t2.className.baseVal;
15556        }
15557        function vt(t2, i3) {
15558          "opacity" in t2.style ? t2.style.opacity = i3 : "filter" in t2.style && yt(t2, i3);
15559        }
15560        function yt(t2, i3) {
15561          var e2 = false, n2 = "DXImageTransform.Microsoft.Alpha";
15562          try {
15563            e2 = t2.filters.item(n2);
15564          } catch (t3) {
15565            if (1 === i3)
15566              return;
15567          }
15568          i3 = Math.round(100 * i3), e2 ? (e2.Enabled = 100 !== i3, e2.Opacity = i3) : t2.style.filter += " progid:" + n2 + "(opacity=" + i3 + ")";
15569        }
15570        function xt(t2) {
15571          for (var i3 = document.documentElement.style, e2 = 0; e2 < t2.length; e2++)
15572            if (t2[e2] in i3)
15573              return t2[e2];
15574          return false;
15575        }
15576        function wt(t2, i3, e2) {
15577          var n2 = i3 || new x(0, 0);
15578          t2.style[ce] = (Bi ? "translate(" + n2.x + "px," + n2.y + "px)" : "translate3d(" + n2.x + "px," + n2.y + "px,0)") + (e2 ? " scale(" + e2 + ")" : "");
15579        }
15580        function Lt(t2, i3) {
15581          t2._leaflet_pos = i3, Oi ? wt(t2, i3) : (t2.style.left = i3.x + "px", t2.style.top = i3.y + "px");
15582        }
15583        function Pt(t2) {
15584          return t2._leaflet_pos || new x(0, 0);
15585        }
15586        function bt() {
15587          V(window, "dragstart", $2);
15588        }
15589        function Tt() {
15590          G(window, "dragstart", $2);
15591        }
15592        function zt(t2) {
15593          for (; -1 === t2.tabIndex; )
15594            t2 = t2.parentNode;
15595          t2.style && (Mt(), me = t2, fe = t2.style.outline, t2.style.outline = "none", V(window, "keydown", Mt));
15596        }
15597        function Mt() {
15598          me && (me.style.outline = fe, me = void 0, fe = void 0, G(window, "keydown", Mt));
15599        }
15600        function Ct(t2, i3) {
15601          if (!i3 || !t2.length)
15602            return t2.slice();
15603          var e2 = i3 * i3;
15604          return t2 = kt(t2, e2), t2 = Et(t2, e2);
15605        }
15606        function Zt(t2, i3, e2) {
15607          return Math.sqrt(Rt(t2, i3, e2, true));
15608        }
15609        function Et(t2, i3) {
15610          var e2 = t2.length, n2 = new (typeof Uint8Array != void 0 + "" ? Uint8Array : Array)(e2);
15611          n2[0] = n2[e2 - 1] = 1, St(t2, n2, i3, 0, e2 - 1);
15612          var o2, s2 = [];
15613          for (o2 = 0; o2 < e2; o2++)
15614            n2[o2] && s2.push(t2[o2]);
15615          return s2;
15616        }
15617        function St(t2, i3, e2, n2, o2) {
15618          var s2, r2, a2, h2 = 0;
15619          for (r2 = n2 + 1; r2 <= o2 - 1; r2++)
15620            (a2 = Rt(t2[r2], t2[n2], t2[o2], true)) > h2 && (s2 = r2, h2 = a2);
15621          h2 > e2 && (i3[s2] = 1, St(t2, i3, e2, n2, s2), St(t2, i3, e2, s2, o2));
15622        }
15623        function kt(t2, i3) {
15624          for (var e2 = [t2[0]], n2 = 1, o2 = 0, s2 = t2.length; n2 < s2; n2++)
15625            Ot(t2[n2], t2[o2]) > i3 && (e2.push(t2[n2]), o2 = n2);
15626          return o2 < s2 - 1 && e2.push(t2[s2 - 1]), e2;
15627        }
15628        function Bt(t2, i3, e2, n2, o2) {
15629          var s2, r2, a2, h2 = n2 ? ze : At(t2, e2), u2 = At(i3, e2);
15630          for (ze = u2; ; ) {
15631            if (!(h2 | u2))
15632              return [t2, i3];
15633            if (h2 & u2)
15634              return false;
15635            a2 = At(r2 = It(t2, i3, s2 = h2 || u2, e2, o2), e2), s2 === h2 ? (t2 = r2, h2 = a2) : (i3 = r2, u2 = a2);
15636          }
15637        }
15638        function It(t2, i3, e2, n2, o2) {
15639          var s2, r2, a2 = i3.x - t2.x, h2 = i3.y - t2.y, u2 = n2.min, l2 = n2.max;
15640          return 8 & e2 ? (s2 = t2.x + a2 * (l2.y - t2.y) / h2, r2 = l2.y) : 4 & e2 ? (s2 = t2.x + a2 * (u2.y - t2.y) / h2, r2 = u2.y) : 2 & e2 ? (s2 = l2.x, r2 = t2.y + h2 * (l2.x - t2.x) / a2) : 1 & e2 && (s2 = u2.x, r2 = t2.y + h2 * (u2.x - t2.x) / a2), new x(s2, r2, o2);
15641        }
15642        function At(t2, i3) {
15643          var e2 = 0;
15644          return t2.x < i3.min.x ? e2 |= 1 : t2.x > i3.max.x && (e2 |= 2), t2.y < i3.min.y ? e2 |= 4 : t2.y > i3.max.y && (e2 |= 8), e2;
15645        }
15646        function Ot(t2, i3) {
15647          var e2 = i3.x - t2.x, n2 = i3.y - t2.y;
15648          return e2 * e2 + n2 * n2;
15649        }
15650        function Rt(t2, i3, e2, n2) {
15651          var o2, s2 = i3.x, r2 = i3.y, a2 = e2.x - s2, h2 = e2.y - r2, u2 = a2 * a2 + h2 * h2;
15652          return u2 > 0 && ((o2 = ((t2.x - s2) * a2 + (t2.y - r2) * h2) / u2) > 1 ? (s2 = e2.x, r2 = e2.y) : o2 > 0 && (s2 += a2 * o2, r2 += h2 * o2)), a2 = t2.x - s2, h2 = t2.y - r2, n2 ? a2 * a2 + h2 * h2 : new x(s2, r2);
15653        }
15654        function Dt(t2) {
15655          return !ei(t2[0]) || "object" != typeof t2[0][0] && void 0 !== t2[0][0];
15656        }
15657        function Nt(t2) {
15658          return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."), Dt(t2);
15659        }
15660        function jt(t2, i3, e2) {
15661          var n2, o2, s2, r2, a2, h2, u2, l2, c2, _2 = [1, 4, 2, 8];
15662          for (o2 = 0, u2 = t2.length; o2 < u2; o2++)
15663            t2[o2]._code = At(t2[o2], i3);
15664          for (r2 = 0; r2 < 4; r2++) {
15665            for (l2 = _2[r2], n2 = [], o2 = 0, s2 = (u2 = t2.length) - 1; o2 < u2; s2 = o2++)
15666              a2 = t2[o2], h2 = t2[s2], a2._code & l2 ? h2._code & l2 || ((c2 = It(h2, a2, l2, i3, e2))._code = At(c2, i3), n2.push(c2)) : (h2._code & l2 && ((c2 = It(h2, a2, l2, i3, e2))._code = At(c2, i3), n2.push(c2)), n2.push(a2));
15667            t2 = n2;
15668          }
15669          return t2;
15670        }
15671        function Wt(t2, i3) {
15672          var e2, n2, o2, s2, r2 = "Feature" === t2.type ? t2.geometry : t2, a2 = r2 ? r2.coordinates : null, h2 = [], u2 = i3 && i3.pointToLayer, l2 = i3 && i3.coordsToLatLng || Ht;
15673          if (!a2 && !r2)
15674            return null;
15675          switch (r2.type) {
15676            case "Point":
15677              return e2 = l2(a2), u2 ? u2(t2, e2) : new qe(e2);
15678            case "MultiPoint":
15679              for (o2 = 0, s2 = a2.length; o2 < s2; o2++)
15680                e2 = l2(a2[o2]), h2.push(u2 ? u2(t2, e2) : new qe(e2));
15681              return new Fe(h2);
15682            case "LineString":
15683            case "MultiLineString":
15684              return n2 = Ft(a2, "LineString" === r2.type ? 0 : 1, l2), new Je(n2, i3);
15685            case "Polygon":
15686            case "MultiPolygon":
15687              return n2 = Ft(a2, "Polygon" === r2.type ? 1 : 2, l2), new $e(n2, i3);
15688            case "GeometryCollection":
15689              for (o2 = 0, s2 = r2.geometries.length; o2 < s2; o2++) {
15690                var c2 = Wt({ geometry: r2.geometries[o2], type: "Feature", properties: t2.properties }, i3);
15691                c2 && h2.push(c2);
15692              }
15693              return new Fe(h2);
15694            default:
15695              throw new Error("Invalid GeoJSON object.");
15696          }
15697        }
15698        function Ht(t2) {
15699          return new M(t2[1], t2[0], t2[2]);
15700        }
15701        function Ft(t2, i3, e2) {
15702          for (var n2, o2 = [], s2 = 0, r2 = t2.length; s2 < r2; s2++)
15703            n2 = i3 ? Ft(t2[s2], i3 - 1, e2) : (e2 || Ht)(t2[s2]), o2.push(n2);
15704          return o2;
15705        }
15706        function Ut(t2, i3) {
15707          return i3 = "number" == typeof i3 ? i3 : 6, void 0 !== t2.alt ? [a(t2.lng, i3), a(t2.lat, i3), a(t2.alt, i3)] : [a(t2.lng, i3), a(t2.lat, i3)];
15708        }
15709        function Vt(t2, i3, e2, n2) {
15710          for (var o2 = [], s2 = 0, r2 = t2.length; s2 < r2; s2++)
15711            o2.push(i3 ? Vt(t2[s2], i3 - 1, e2, n2) : Ut(t2[s2], n2));
15712          return !i3 && e2 && o2.push(o2[0]), o2;
15713        }
15714        function Gt(t2, e2) {
15715          return t2.feature ? i2({}, t2.feature, { geometry: e2 }) : qt(e2);
15716        }
15717        function qt(t2) {
15718          return "Feature" === t2.type || "FeatureCollection" === t2.type ? t2 : { type: "Feature", properties: {}, geometry: t2 };
15719        }
15720        function Kt(t2, i3) {
15721          return new Qe(t2, i3);
15722        }
15723        function Yt(t2, i3) {
15724          return new ln(t2, i3);
15725        }
15726        function Xt(t2) {
15727          return Gi ? new dn(t2) : null;
15728        }
15729        function Jt(t2) {
15730          return qi || Ki ? new gn(t2) : null;
15731        }
15732        var $t = Object.freeze;
15733        Object.freeze = function(t2) {
15734          return t2;
15735        };
15736        var Qt = Object.create || function() {
15737          function t2() {
15738          }
15739          return function(i3) {
15740            return t2.prototype = i3, new t2();
15741          };
15742        }(), ti = 0, ii = /\{ *([\w_\-]+) *\}/g, ei = Array.isArray || function(t2) {
15743          return "[object Array]" === Object.prototype.toString.call(t2);
15744        }, ni = "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=", oi = 0, si = window.requestAnimationFrame || p("RequestAnimationFrame") || m, ri = window.cancelAnimationFrame || p("CancelAnimationFrame") || p("CancelRequestAnimationFrame") || function(t2) {
15745          window.clearTimeout(t2);
15746        }, ai = (Object.freeze || Object)({ freeze: $t, extend: i2, create: Qt, bind: e, lastId: ti, stamp: n, throttle: o, wrapNum: s, falseFn: r, formatNum: a, trim: h, splitWords: u, setOptions: l, getParamString: c, template: _, isArray: ei, indexOf: d, emptyImageUrl: ni, requestFn: si, cancelFn: ri, requestAnimFrame: f, cancelAnimFrame: g });
15747        v.extend = function(t2) {
15748          var e2 = function() {
15749            this.initialize && this.initialize.apply(this, arguments), this.callInitHooks();
15750          }, n2 = e2.__super__ = this.prototype, o2 = Qt(n2);
15751          o2.constructor = e2, e2.prototype = o2;
15752          for (var s2 in this)
15753            this.hasOwnProperty(s2) && "prototype" !== s2 && "__super__" !== s2 && (e2[s2] = this[s2]);
15754          return t2.statics && (i2(e2, t2.statics), delete t2.statics), t2.includes && (y(t2.includes), i2.apply(null, [o2].concat(t2.includes)), delete t2.includes), o2.options && (t2.options = i2(Qt(o2.options), t2.options)), i2(o2, t2), o2._initHooks = [], o2.callInitHooks = function() {
15755            if (!this._initHooksCalled) {
15756              n2.callInitHooks && n2.callInitHooks.call(this), this._initHooksCalled = true;
15757              for (var t3 = 0, i3 = o2._initHooks.length; t3 < i3; t3++)
15758                o2._initHooks[t3].call(this);
15759            }
15760          }, e2;
15761        }, v.include = function(t2) {
15762          return i2(this.prototype, t2), this;
15763        }, v.mergeOptions = function(t2) {
15764          return i2(this.prototype.options, t2), this;
15765        }, v.addInitHook = function(t2) {
15766          var i3 = Array.prototype.slice.call(arguments, 1), e2 = "function" == typeof t2 ? t2 : function() {
15767            this[t2].apply(this, i3);
15768          };
15769          return this.prototype._initHooks = this.prototype._initHooks || [], this.prototype._initHooks.push(e2), this;
15770        };
15771        var hi = { on: function(t2, i3, e2) {
15772          if ("object" == typeof t2)
15773            for (var n2 in t2)
15774              this._on(n2, t2[n2], i3);
15775          else
15776            for (var o2 = 0, s2 = (t2 = u(t2)).length; o2 < s2; o2++)
15777              this._on(t2[o2], i3, e2);
15778          return this;
15779        }, off: function(t2, i3, e2) {
15780          if (t2)
15781            if ("object" == typeof t2)
15782              for (var n2 in t2)
15783                this._off(n2, t2[n2], i3);
15784            else
15785              for (var o2 = 0, s2 = (t2 = u(t2)).length; o2 < s2; o2++)
15786                this._off(t2[o2], i3, e2);
15787          else
15788            delete this._events;
15789          return this;
15790        }, _on: function(t2, i3, e2) {
15791          this._events = this._events || {};
15792          var n2 = this._events[t2];
15793          n2 || (n2 = [], this._events[t2] = n2), e2 === this && (e2 = void 0);
15794          for (var o2 = { fn: i3, ctx: e2 }, s2 = n2, r2 = 0, a2 = s2.length; r2 < a2; r2++)
15795            if (s2[r2].fn === i3 && s2[r2].ctx === e2)
15796              return;
15797          s2.push(o2);
15798        }, _off: function(t2, i3, e2) {
15799          var n2, o2, s2;
15800          if (this._events && (n2 = this._events[t2]))
15801            if (i3) {
15802              if (e2 === this && (e2 = void 0), n2)
15803                for (o2 = 0, s2 = n2.length; o2 < s2; o2++) {
15804                  var a2 = n2[o2];
15805                  if (a2.ctx === e2 && a2.fn === i3)
15806                    return a2.fn = r, this._firingCount && (this._events[t2] = n2 = n2.slice()), void n2.splice(o2, 1);
15807                }
15808            } else {
15809              for (o2 = 0, s2 = n2.length; o2 < s2; o2++)
15810                n2[o2].fn = r;
15811              delete this._events[t2];
15812            }
15813        }, fire: function(t2, e2, n2) {
15814          if (!this.listens(t2, n2))
15815            return this;
15816          var o2 = i2({}, e2, { type: t2, target: this });
15817          if (this._events) {
15818            var s2 = this._events[t2];
15819            if (s2) {
15820              this._firingCount = this._firingCount + 1 || 1;
15821              for (var r2 = 0, a2 = s2.length; r2 < a2; r2++) {
15822                var h2 = s2[r2];
15823                h2.fn.call(h2.ctx || this, o2);
15824              }
15825              this._firingCount--;
15826            }
15827          }
15828          return n2 && this._propagateEvent(o2), this;
15829        }, listens: function(t2, i3) {
15830          var e2 = this._events && this._events[t2];
15831          if (e2 && e2.length)
15832            return true;
15833          if (i3) {
15834            for (var n2 in this._eventParents)
15835              if (this._eventParents[n2].listens(t2, i3))
15836                return true;
15837          }
15838          return false;
15839        }, once: function(t2, i3, n2) {
15840          if ("object" == typeof t2) {
15841            for (var o2 in t2)
15842              this.once(o2, t2[o2], i3);
15843            return this;
15844          }
15845          var s2 = e(function() {
15846            this.off(t2, i3, n2).off(t2, s2, n2);
15847          }, this);
15848          return this.on(t2, i3, n2).on(t2, s2, n2);
15849        }, addEventParent: function(t2) {
15850          return this._eventParents = this._eventParents || {}, this._eventParents[n(t2)] = t2, this;
15851        }, removeEventParent: function(t2) {
15852          return this._eventParents && delete this._eventParents[n(t2)], this;
15853        }, _propagateEvent: function(t2) {
15854          for (var e2 in this._eventParents)
15855            this._eventParents[e2].fire(t2.type, i2({ layer: t2.target }, t2), true);
15856        } };
15857        hi.addEventListener = hi.on, hi.removeEventListener = hi.clearAllEventListeners = hi.off, hi.addOneTimeEventListener = hi.once, hi.fireEvent = hi.fire, hi.hasEventListeners = hi.listens;
15858        var ui = v.extend(hi);
15859        x.prototype = { clone: function() {
15860          return new x(this.x, this.y);
15861        }, add: function(t2) {
15862          return this.clone()._add(w(t2));
15863        }, _add: function(t2) {
15864          return this.x += t2.x, this.y += t2.y, this;
15865        }, subtract: function(t2) {
15866          return this.clone()._subtract(w(t2));
15867        }, _subtract: function(t2) {
15868          return this.x -= t2.x, this.y -= t2.y, this;
15869        }, divideBy: function(t2) {
15870          return this.clone()._divideBy(t2);
15871        }, _divideBy: function(t2) {
15872          return this.x /= t2, this.y /= t2, this;
15873        }, multiplyBy: function(t2) {
15874          return this.clone()._multiplyBy(t2);
15875        }, _multiplyBy: function(t2) {
15876          return this.x *= t2, this.y *= t2, this;
15877        }, scaleBy: function(t2) {
15878          return new x(this.x * t2.x, this.y * t2.y);
15879        }, unscaleBy: function(t2) {
15880          return new x(this.x / t2.x, this.y / t2.y);
15881        }, round: function() {
15882          return this.clone()._round();
15883        }, _round: function() {
15884          return this.x = Math.round(this.x), this.y = Math.round(this.y), this;
15885        }, floor: function() {
15886          return this.clone()._floor();
15887        }, _floor: function() {
15888          return this.x = Math.floor(this.x), this.y = Math.floor(this.y), this;
15889        }, ceil: function() {
15890          return this.clone()._ceil();
15891        }, _ceil: function() {
15892          return this.x = Math.ceil(this.x), this.y = Math.ceil(this.y), this;
15893        }, distanceTo: function(t2) {
15894          var i3 = (t2 = w(t2)).x - this.x, e2 = t2.y - this.y;
15895          return Math.sqrt(i3 * i3 + e2 * e2);
15896        }, equals: function(t2) {
15897          return (t2 = w(t2)).x === this.x && t2.y === this.y;
15898        }, contains: function(t2) {
15899          return t2 = w(t2), Math.abs(t2.x) <= Math.abs(this.x) && Math.abs(t2.y) <= Math.abs(this.y);
15900        }, toString: function() {
15901          return "Point(" + a(this.x) + ", " + a(this.y) + ")";
15902        } }, P.prototype = { extend: function(t2) {
15903          return t2 = w(t2), this.min || this.max ? (this.min.x = Math.min(t2.x, this.min.x), this.max.x = Math.max(t2.x, this.max.x), this.min.y = Math.min(t2.y, this.min.y), this.max.y = Math.max(t2.y, this.max.y)) : (this.min = t2.clone(), this.max = t2.clone()), this;
15904        }, getCenter: function(t2) {
15905          return new x((this.min.x + this.max.x) / 2, (this.min.y + this.max.y) / 2, t2);
15906        }, getBottomLeft: function() {
15907          return new x(this.min.x, this.max.y);
15908        }, getTopRight: function() {
15909          return new x(this.max.x, this.min.y);
15910        }, getTopLeft: function() {
15911          return this.min;
15912        }, getBottomRight: function() {
15913          return this.max;
15914        }, getSize: function() {
15915          return this.max.subtract(this.min);
15916        }, contains: function(t2) {
15917          var i3, e2;
15918          return (t2 = "number" == typeof t2[0] || t2 instanceof x ? w(t2) : b(t2)) instanceof P ? (i3 = t2.min, e2 = t2.max) : i3 = e2 = t2, i3.x >= this.min.x && e2.x <= this.max.x && i3.y >= this.min.y && e2.y <= this.max.y;
15919        }, intersects: function(t2) {
15920          t2 = b(t2);
15921          var i3 = this.min, e2 = this.max, n2 = t2.min, o2 = t2.max, s2 = o2.x >= i3.x && n2.x <= e2.x, r2 = o2.y >= i3.y && n2.y <= e2.y;
15922          return s2 && r2;
15923        }, overlaps: function(t2) {
15924          t2 = b(t2);
15925          var i3 = this.min, e2 = this.max, n2 = t2.min, o2 = t2.max, s2 = o2.x > i3.x && n2.x < e2.x, r2 = o2.y > i3.y && n2.y < e2.y;
15926          return s2 && r2;
15927        }, isValid: function() {
15928          return !(!this.min || !this.max);
15929        } }, T.prototype = { extend: function(t2) {
15930          var i3, e2, n2 = this._southWest, o2 = this._northEast;
15931          if (t2 instanceof M)
15932            i3 = t2, e2 = t2;
15933          else {
15934            if (!(t2 instanceof T))
15935              return t2 ? this.extend(C(t2) || z(t2)) : this;
15936            if (i3 = t2._southWest, e2 = t2._northEast, !i3 || !e2)
15937              return this;
15938          }
15939          return n2 || o2 ? (n2.lat = Math.min(i3.lat, n2.lat), n2.lng = Math.min(i3.lng, n2.lng), o2.lat = Math.max(e2.lat, o2.lat), o2.lng = Math.max(e2.lng, o2.lng)) : (this._southWest = new M(i3.lat, i3.lng), this._northEast = new M(e2.lat, e2.lng)), this;
15940        }, pad: function(t2) {
15941          var i3 = this._southWest, e2 = this._northEast, n2 = Math.abs(i3.lat - e2.lat) * t2, o2 = Math.abs(i3.lng - e2.lng) * t2;
15942          return new T(new M(i3.lat - n2, i3.lng - o2), new M(e2.lat + n2, e2.lng + o2));
15943        }, getCenter: function() {
15944          return new M((this._southWest.lat + this._northEast.lat) / 2, (this._southWest.lng + this._northEast.lng) / 2);
15945        }, getSouthWest: function() {
15946          return this._southWest;
15947        }, getNorthEast: function() {
15948          return this._northEast;
15949        }, getNorthWest: function() {
15950          return new M(this.getNorth(), this.getWest());
15951        }, getSouthEast: function() {
15952          return new M(this.getSouth(), this.getEast());
15953        }, getWest: function() {
15954          return this._southWest.lng;
15955        }, getSouth: function() {
15956          return this._southWest.lat;
15957        }, getEast: function() {
15958          return this._northEast.lng;
15959        }, getNorth: function() {
15960          return this._northEast.lat;
15961        }, contains: function(t2) {
15962          t2 = "number" == typeof t2[0] || t2 instanceof M || "lat" in t2 ? C(t2) : z(t2);
15963          var i3, e2, n2 = this._southWest, o2 = this._northEast;
15964          return t2 instanceof T ? (i3 = t2.getSouthWest(), e2 = t2.getNorthEast()) : i3 = e2 = t2, i3.lat >= n2.lat && e2.lat <= o2.lat && i3.lng >= n2.lng && e2.lng <= o2.lng;
15965        }, intersects: function(t2) {
15966          t2 = z(t2);
15967          var i3 = this._southWest, e2 = this._northEast, n2 = t2.getSouthWest(), o2 = t2.getNorthEast(), s2 = o2.lat >= i3.lat && n2.lat <= e2.lat, r2 = o2.lng >= i3.lng && n2.lng <= e2.lng;
15968          return s2 && r2;
15969        }, overlaps: function(t2) {
15970          t2 = z(t2);
15971          var i3 = this._southWest, e2 = this._northEast, n2 = t2.getSouthWest(), o2 = t2.getNorthEast(), s2 = o2.lat > i3.lat && n2.lat < e2.lat, r2 = o2.lng > i3.lng && n2.lng < e2.lng;
15972          return s2 && r2;
15973        }, toBBoxString: function() {
15974          return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",");
15975        }, equals: function(t2, i3) {
15976          return !!t2 && (t2 = z(t2), this._southWest.equals(t2.getSouthWest(), i3) && this._northEast.equals(t2.getNorthEast(), i3));
15977        }, isValid: function() {
15978          return !(!this._southWest || !this._northEast);
15979        } }, M.prototype = { equals: function(t2, i3) {
15980          return !!t2 && (t2 = C(t2), Math.max(Math.abs(this.lat - t2.lat), Math.abs(this.lng - t2.lng)) <= (void 0 === i3 ? 1e-9 : i3));
15981        }, toString: function(t2) {
15982          return "LatLng(" + a(this.lat, t2) + ", " + a(this.lng, t2) + ")";
15983        }, distanceTo: function(t2) {
15984          return ci.distance(this, C(t2));
15985        }, wrap: function() {
15986          return ci.wrapLatLng(this);
15987        }, toBounds: function(t2) {
15988          var i3 = 180 * t2 / 40075017, e2 = i3 / Math.cos(Math.PI / 180 * this.lat);
15989          return z([this.lat - i3, this.lng - e2], [this.lat + i3, this.lng + e2]);
15990        }, clone: function() {
15991          return new M(this.lat, this.lng, this.alt);
15992        } };
15993        var li = { latLngToPoint: function(t2, i3) {
15994          var e2 = this.projection.project(t2), n2 = this.scale(i3);
15995          return this.transformation._transform(e2, n2);
15996        }, pointToLatLng: function(t2, i3) {
15997          var e2 = this.scale(i3), n2 = this.transformation.untransform(t2, e2);
15998          return this.projection.unproject(n2);
15999        }, project: function(t2) {
16000          return this.projection.project(t2);
16001        }, unproject: function(t2) {
16002          return this.projection.unproject(t2);
16003        }, scale: function(t2) {
16004          return 256 * Math.pow(2, t2);
16005        }, zoom: function(t2) {
16006          return Math.log(t2 / 256) / Math.LN2;
16007        }, getProjectedBounds: function(t2) {
16008          if (this.infinite)
16009            return null;
16010          var i3 = this.projection.bounds, e2 = this.scale(t2);
16011          return new P(this.transformation.transform(i3.min, e2), this.transformation.transform(i3.max, e2));
16012        }, infinite: false, wrapLatLng: function(t2) {
16013          var i3 = this.wrapLng ? s(t2.lng, this.wrapLng, true) : t2.lng;
16014          return new M(this.wrapLat ? s(t2.lat, this.wrapLat, true) : t2.lat, i3, t2.alt);
16015        }, wrapLatLngBounds: function(t2) {
16016          var i3 = t2.getCenter(), e2 = this.wrapLatLng(i3), n2 = i3.lat - e2.lat, o2 = i3.lng - e2.lng;
16017          if (0 === n2 && 0 === o2)
16018            return t2;
16019          var s2 = t2.getSouthWest(), r2 = t2.getNorthEast();
16020          return new T(new M(s2.lat - n2, s2.lng - o2), new M(r2.lat - n2, r2.lng - o2));
16021        } }, ci = i2({}, li, { wrapLng: [-180, 180], R: 6371e3, distance: function(t2, i3) {
16022          var e2 = Math.PI / 180, n2 = t2.lat * e2, o2 = i3.lat * e2, s2 = Math.sin(n2) * Math.sin(o2) + Math.cos(n2) * Math.cos(o2) * Math.cos((i3.lng - t2.lng) * e2);
16023          return this.R * Math.acos(Math.min(s2, 1));
16024        } }), _i = { R: 6378137, MAX_LATITUDE: 85.0511287798, project: function(t2) {
16025          var i3 = Math.PI / 180, e2 = this.MAX_LATITUDE, n2 = Math.max(Math.min(e2, t2.lat), -e2), o2 = Math.sin(n2 * i3);
16026          return new x(this.R * t2.lng * i3, this.R * Math.log((1 + o2) / (1 - o2)) / 2);
16027        }, unproject: function(t2) {
16028          var i3 = 180 / Math.PI;
16029          return new M((2 * Math.atan(Math.exp(t2.y / this.R)) - Math.PI / 2) * i3, t2.x * i3 / this.R);
16030        }, bounds: function() {
16031          var t2 = 6378137 * Math.PI;
16032          return new P([-t2, -t2], [t2, t2]);
16033        }() };
16034        Z.prototype = { transform: function(t2, i3) {
16035          return this._transform(t2.clone(), i3);
16036        }, _transform: function(t2, i3) {
16037          return i3 = i3 || 1, t2.x = i3 * (this._a * t2.x + this._b), t2.y = i3 * (this._c * t2.y + this._d), t2;
16038        }, untransform: function(t2, i3) {
16039          return i3 = i3 || 1, new x((t2.x / i3 - this._b) / this._a, (t2.y / i3 - this._d) / this._c);
16040        } };
16041        var di, pi, mi, fi, gi = i2({}, ci, { code: "EPSG:3857", projection: _i, transformation: function() {
16042          var t2 = 0.5 / (Math.PI * _i.R);
16043          return E(t2, 0.5, -t2, 0.5);
16044        }() }), vi = i2({}, gi, { code: "EPSG:900913" }), yi = document.documentElement.style, xi = "ActiveXObject" in window, wi = xi && !document.addEventListener, Li = "msLaunchUri" in navigator && !("documentMode" in document), Pi = B("webkit"), bi = B("android"), Ti = B("android 2") || B("android 3"), zi = !!window.opera, Mi = B("chrome"), Ci = B("gecko") && !Pi && !zi && !xi, Zi = !Mi && B("safari"), Ei = B("phantom"), Si = "OTransition" in yi, ki = 0 === navigator.platform.indexOf("Win"), Bi = xi && "transition" in yi, Ii = "WebKitCSSMatrix" in window && "m11" in new window.WebKitCSSMatrix() && !Ti, Ai = "MozPerspective" in yi, Oi = !window.L_DISABLE_3D && (Bi || Ii || Ai) && !Si && !Ei, Ri = "undefined" != typeof orientation || B("mobile"), Di = Ri && Pi, Ni = Ri && Ii, ji = !window.PointerEvent && window.MSPointerEvent, Wi = !(!window.PointerEvent && !ji), Hi = !window.L_NO_TOUCH && (Wi || "ontouchstart" in window || window.DocumentTouch && document instanceof window.DocumentTouch), Fi = Ri && zi, Ui = Ri && Ci, Vi = (window.devicePixelRatio || window.screen.deviceXDPI / window.screen.logicalXDPI) > 1, Gi = !!document.createElement("canvas").getContext, qi = !(!document.createElementNS || !S("svg").createSVGRect), Ki = !qi && function() {
16045          try {
16046            var t2 = document.createElement("div");
16047            t2.innerHTML = '<v:shape adj="1"/>';
16048            var i3 = t2.firstChild;
16049            return i3.style.behavior = "url(#default#VML)", i3 && "object" == typeof i3.adj;
16050          } catch (t3) {
16051            return false;
16052          }
16053        }(), Yi = (Object.freeze || Object)({ ie: xi, ielt9: wi, edge: Li, webkit: Pi, android: bi, android23: Ti, opera: zi, chrome: Mi, gecko: Ci, safari: Zi, phantom: Ei, opera12: Si, win: ki, ie3d: Bi, webkit3d: Ii, gecko3d: Ai, any3d: Oi, mobile: Ri, mobileWebkit: Di, mobileWebkit3d: Ni, msPointer: ji, pointer: Wi, touch: Hi, mobileOpera: Fi, mobileGecko: Ui, retina: Vi, canvas: Gi, svg: qi, vml: Ki }), Xi = ji ? "MSPointerDown" : "pointerdown", Ji = ji ? "MSPointerMove" : "pointermove", $i = ji ? "MSPointerUp" : "pointerup", Qi = ji ? "MSPointerCancel" : "pointercancel", te = ["INPUT", "SELECT", "OPTION"], ie = {}, ee = false, ne = 0, oe = ji ? "MSPointerDown" : Wi ? "pointerdown" : "touchstart", se = ji ? "MSPointerUp" : Wi ? "pointerup" : "touchend", re2 = "_leaflet_", ae = "_leaflet_events", he = ki && Mi ? 2 * window.devicePixelRatio : Ci ? window.devicePixelRatio : 1, ue = {}, le = (Object.freeze || Object)({ on: V, off: G, stopPropagation: Y, disableScrollPropagation: X, disableClickPropagation: J, preventDefault: $2, stop: Q, getMousePosition: tt, getWheelDelta: it, fakeStop: et, skipped: nt, isExternalTarget: ot, addListener: V, removeListener: G }), ce = xt(["transform", "WebkitTransform", "OTransform", "MozTransform", "msTransform"]), _e = xt(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]), de = "webkitTransition" === _e || "OTransition" === _e ? _e + "End" : "transitionend";
16054        if ("onselectstart" in document)
16055          pi = function() {
16056            V(window, "selectstart", $2);
16057          }, mi = function() {
16058            G(window, "selectstart", $2);
16059          };
16060        else {
16061          var pe = xt(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]);
16062          pi = function() {
16063            if (pe) {
16064              var t2 = document.documentElement.style;
16065              fi = t2[pe], t2[pe] = "none";
16066            }
16067          }, mi = function() {
16068            pe && (document.documentElement.style[pe] = fi, fi = void 0);
16069          };
16070        }
16071        var me, fe, ge = (Object.freeze || Object)({ TRANSFORM: ce, TRANSITION: _e, TRANSITION_END: de, get: rt, getStyle: at, create: ht, remove: ut, empty: lt, toFront: ct, toBack: _t, hasClass: dt, addClass: pt, removeClass: mt, setClass: ft, getClass: gt, setOpacity: vt, testProp: xt, setTransform: wt, setPosition: Lt, getPosition: Pt, disableTextSelection: pi, enableTextSelection: mi, disableImageDrag: bt, enableImageDrag: Tt, preventOutline: zt, restoreOutline: Mt }), ve = ui.extend({ run: function(t2, i3, e2, n2) {
16072          this.stop(), this._el = t2, this._inProgress = true, this._duration = e2 || 0.25, this._easeOutPower = 1 / Math.max(n2 || 0.5, 0.2), this._startPos = Pt(t2), this._offset = i3.subtract(this._startPos), this._startTime = +new Date(), this.fire("start"), this._animate();
16073        }, stop: function() {
16074          this._inProgress && (this._step(true), this._complete());
16075        }, _animate: function() {
16076          this._animId = f(this._animate, this), this._step();
16077        }, _step: function(t2) {
16078          var i3 = +new Date() - this._startTime, e2 = 1e3 * this._duration;
16079          i3 < e2 ? this._runFrame(this._easeOut(i3 / e2), t2) : (this._runFrame(1), this._complete());
16080        }, _runFrame: function(t2, i3) {
16081          var e2 = this._startPos.add(this._offset.multiplyBy(t2));
16082          i3 && e2._round(), Lt(this._el, e2), this.fire("step");
16083        }, _complete: function() {
16084          g(this._animId), this._inProgress = false, this.fire("end");
16085        }, _easeOut: function(t2) {
16086          return 1 - Math.pow(1 - t2, this._easeOutPower);
16087        } }), ye = ui.extend({ options: { crs: gi, center: void 0, zoom: void 0, minZoom: void 0, maxZoom: void 0, layers: [], maxBounds: void 0, renderer: void 0, zoomAnimation: true, zoomAnimationThreshold: 4, fadeAnimation: true, markerZoomAnimation: true, transform3DLimit: 8388608, zoomSnap: 1, zoomDelta: 1, trackResize: true }, initialize: function(t2, i3) {
16088          i3 = l(this, i3), this._initContainer(t2), this._initLayout(), this._onResize = e(this._onResize, this), this._initEvents(), i3.maxBounds && this.setMaxBounds(i3.maxBounds), void 0 !== i3.zoom && (this._zoom = this._limitZoom(i3.zoom)), i3.center && void 0 !== i3.zoom && this.setView(C(i3.center), i3.zoom, { reset: true }), this._handlers = [], this._layers = {}, this._zoomBoundLayers = {}, this._sizeChanged = true, this.callInitHooks(), this._zoomAnimated = _e && Oi && !Fi && this.options.zoomAnimation, this._zoomAnimated && (this._createAnimProxy(), V(this._proxy, de, this._catchTransitionEnd, this)), this._addLayers(this.options.layers);
16089        }
16089, setView: function(t2, e2, n2) {
16090          return e2 = void 0 === e2 ? this._zoom : this._limitZoom(e2), t2 = this._limitCenter(C(t2), e2, this.options.maxBounds), n2 = n2 || {}, this._stop(), this._loaded && !n2.reset && true !== n2 && (void 0 !== n2.animate && (n2.zoom = i2({ animate: n2.animate }, n2.zoom), n2.pan = i2({ animate: n2.animate, duration: n2.duration }, n2.pan)), this._zoom !== e2 ? this._tryAnimatedZoom && this._tryAnimatedZoom(t2, e2, n2.zoom) : this._tryAnimatedPan(t2, n2.pan)) ? (clearTimeout(this._sizeTimer), this) : (this._resetView(t2, e2), this);
16091        }, setZoom: function(t2, i3) {
16092          return this._loaded ? this.setView(this.getCenter(), t2, { zoom: i3 }) : (this._zoom = t2, this);
16093        }, zoomIn: function(t2, i3) {
16094          return t2 = t2 || (Oi ? this.options.zoomDelta : 1), this.setZoom(this._zoom + t2, i3);
16095        }, zoomOut: function(t2, i3) {
16096          return t2 = t2 || (Oi ? this.options.zoomDelta : 1), this.setZoom(this._zoom - t2, i3);
16097        }, setZoomAround: function(t2, i3, e2) {
16098          var n2 = this.getZoomScale(i3), o2 = this.getSize().divideBy(2), s2 = (t2 instanceof x ? t2 : this.latLngToContainerPoint(t2)).subtract(o2).multiplyBy(1 - 1 / n2), r2 = this.containerPointToLatLng(o2.add(s2));
16099          return this.setView(r2, i3, { zoom: e2 });
16100        }, _getBoundsCenterZoom: function(t2, i3) {
16101          i3 = i3 || {}, t2 = t2.getBounds ? t2.getBounds() : z(t2);
16102          var e2 = w(i3.paddingTopLeft || i3.padding || [0, 0]), n2 = w(i3.paddingBottomRight || i3.padding || [0, 0]), o2 = this.getBoundsZoom(t2, false, e2.add(n2));
16103          if ((o2 = "number" == typeof i3.maxZoom ? Math.min(i3.maxZoom, o2) : o2) === 1 / 0)
16104            return { center: t2.getCenter(), zoom: o2 };
16105          var s2 = n2.subtract(e2).divideBy(2), r2 = this.project(t2.getSouthWest
16105(), o2), a2 = this.project(t2.getNorthEast(), o2);
16106          return { center: this.unproject(r2.add(a2).divideBy(2).add(s2), o2), zoom: o2 };
16107        }, fitBounds: function(t2, i3) {
16108          if (!(t2 = z(t2)).isValid())
16109            throw new Error("Bounds are not valid.");
16110          var e2 = this._getBoundsCenterZoom(t2, i3);
16111          return this.setView(e2.center, e2.zoom, i3);
16112        }, fitWorld: function(t2) {
16113          return this.fitBounds([[-90, -180], [90, 180]], t2);
16114        }, panTo: function(t2, i3) {
16115          return this.setView(t2, this._zoom, { pan: i3 });
16116        }, panBy: function(t2, i3) {
16117          if (t2 = w(t2).round(), i3 = i3 || {}, !t2.x && !t2.y)
16118            return this.fire("moveend");
16119          if (true !== i3.animate && !this.getSize().contains(t2))
16120            return this._resetView(this.unproject(this.project(this.getCenter()).add(t2)), this.getZoom()), this;
16121          if (this._panAnim || (this._panAnim = new ve(), this._panAnim.on({ step: this._onPanTransitionStep, end: this._onPanTransitionEnd }, this)), i3.noMoveStart || this.fire("movestart"), false !== i3.animate) {
16122            pt(this._mapPane, "leaflet-pan-anim");
16123            var e2 = this._getMapPanePos().subtract(t2).round();
16124            this._panAnim.run(this._mapPane, e2, i3.duration || 0.25, i3.easeLinearity);
16125          } else
16126            this._rawPanBy(t2), this.fire("move").fire("moveend");
16127          return this;
16128        }, flyTo: function(t2, i3, e2) {
16129          function n2(t3) {
16130            var i4 = (g2 * g2 - m2 * m2 + (t3 ? -1 : 1) * x2 * x2 * v2 * v2) / (2 * (t3 ? g2 : m2) * x2 * v2), e3 = Math.sqrt(i4 * i4 + 1) - i4;
16131            return e3 < 1e-9 ? -18 : Math.log(e3);
16132          }
16133          function o2(t3) {
16134            return (Math.exp(t3) - Math.exp(-t3)) / 2;
16135          }
16136          function s2(t3) {
16137            return (Math.exp(t3) + Math.exp(-t3)) / 2;
16138          }
16139          function r2(t3) {
16140            return o2(t3) / s2(t3);
16141          }
16142          function a2(t3) {
16143            return m2 * (s2(w2) / s2(w2 + y2 * t3));
16144          }
16145          function h2(t3) {
16146            return m2 * (s2(w2) * r2(w2 + y2 * t3) - o2(w2)) / x2;
16147          }
16148          function u2(t3) {
16149            return 1 - Math.pow(1 - t3, 1.5);
16150          }
16151          function l2() {
16152            var e3 = (Date.now() - L2) / b2, n3 = u2(e3) * P2;
16153            e3 <= 1 ? (this._flyToFrame = f(l2, this), this._move(this.unproject(c2.add(_2.subtract(c2).multiplyBy(h2(n3) / v2)), p2), this.getScaleZoom(m2 / a2(n3), p2), { flyTo: true })) : this._move(t2, i3)._moveEnd(true);
16154          }
16155          if (false === (e2 = e2 || {}).animate || !Oi)
16156            return this.setView(t2, i3, e2);
16157          this._stop();
16158          var c2 = this.project(this.getCenter()), _2 = this.project(t2), d2 = this.getSize(), p2 = this._zoom;
16159          t2 = C(t2), i3 = void 0 === i3 ? p2 : i3;
16160          var m2 = Math.max(d2.x, d2.y), g2 = m2 * this.getZoomScale(p2, i3), v2 = _2.distanceTo(c2) || 1, y2 = 1.42, x2 = y2 * y2, w2 = n2(0), L2 = Date.now(), P2 = (n2(1) - w2) / y2, b2 = e2.duration ? 1e3 * e2.duration : 1e3 * P2 * 0.8;
16161          return this._moveStart(true), l2.call(this), this;
16162        }, flyToBounds: function(t2, i3) {
16163          var e2 = this._getBoundsCenterZoom(t2, i3);
16164          return this.flyTo(e2.center, e2.zoom, i3);
16165        }, setMaxBounds: function(t2) {
16166          return (t2 = z(t2)).isValid() ? (this.options.maxBounds && this.off("moveend", this._panInsideMaxBounds), this.options.maxBounds = t2, this._loaded && this._panInsideMaxBounds(), this.on("moveend", this._panInsideMaxBounds)) : (this.options.maxBounds = null, this.off("moveend", this._panInsideMaxBounds));
16167        }, setMinZoom: function(t2) {
16168          return this.options.minZoom = t2, this._loaded && this.getZoom() < this.options.minZoom ? this.setZoom(t2) : this;
16169        }, setMaxZoom: function(t2) {
16170          return this.options.maxZoom = t2, this._loaded && this.getZoom() > this.options.maxZoom ? this.setZoom(t2) : this;
16171        }, panInsideBounds: function(t2, i3) {
16172          this._enforcingBounds = true;
16173          var e2 = this.getCenter(), n2 = this._limitCenter(e2, this._zoom, z(t2));
16174          return e2.equals(n2) || this.panTo(n2, i3), this._enforcingBounds = false, this;
16175        }, invalidateSize: function(t2) {
16176          if (!this._loaded)
16177            return this;
16178          t2 = i2({ animate: false, pan: true }, true === t2 ? { animate: true } : t2);
16179          var n2 = this.getSize();
16180          this._sizeChanged = true, this._lastCenter = null;
16181          var o2 = this.getSize(), s2 = n2.divideBy(2).round(), r2 = o2.divideBy(2).round(), a2 = s2.subtract(r2);
16182          return a2.x || a2.y ? (t2.animate && t2.pan ? this.panBy(a2) : (t2.pan && this._rawPanBy(a2), this.fire("move"), t2.debounceMoveend ? (clearTimeout(this._sizeTimer), this._sizeTimer = setTimeout(e(this.fire, this, "moveend"), 200)) : this.fire("moveend")), this.fire("resize", { oldSize: n2, newSize: o2 })) : this;
16183        }, stop: function() {
16184          return this.setZoom(this._limitZoom(this._zoom)), this.options.zoomSnap || this.fire("viewreset"), this._stop();
16185        }, locate: function(t2) {
16186          if (t2 = this._locateOptions = i2({ timeout: 1e4, watch: false }, t2), !("geolocation" in navigator))
16187            return this._handleGeolocationError({ code: 0, message: "Geolocation not supported." }), this;
16188          var n2 = e(this._handleGeolocationResponse, this), o2 = e(this._handleGeolocationError, this);
16189          return t2.watch ? this._locationWatchId = navigator.geolocation.watchPosition(n2, o2, t2) : navigator.geolocation.getCurrentPosition(n2, o2, t2), this;
16190        }, stopLocate: function() {
16191          return navigator.geolocation && navigator.geolocation.clearWatch && navigator.geolocation.clearWatch(this._locationWatchId), this._locateOptions && (this._locateOptions.setView = false), this;
16192        }, _handleGeolocationError: function(t2) {
16193          var i3 = t2.code, e2 = t2.message || (1 === i3 ? "permission denied" : 2 === i3 ? "position unavailable" : "timeout");
16194          this._locateOptions.setView && !this._loaded && this.fitWorld(), this.fire("locationerror", { code: i3, message: "Geolocation error: " + e2 + "." });
16195        }, _handleGeolocationResponse: function(t2) {
16196          var i3 = new M(t2.coords.latitude, t2.coords.longitude), e2 = i3.toBounds(t2.coords.accuracy), n2 = this._locateOptions;
16197          if (n2.setView) {
16198            var o2 = this.getBoundsZoom(e2);
16199            this.setView(i3, n2.maxZoom ? Math.min(o2, n2.maxZoom) : o2);
16200          }
16201          var s2 = { latlng: i3, bounds: e2, timestamp: t2.timestamp };
16202          for (var r2 in t2.coords)
16203            "number" == typeof t2.coords[r2] && (s2[r2] = t2.coords[r2]);
16204          this.fire("locationfound", s2);
16205        }, addHandler: function(t2, i3) {
16206          if (!i3)
16207            return this;
16208          var e2 = this[t2] = new i3(this);
16209          return this._handlers.push(e2), this.options[t2] && e2.enable(), this;
16210        }, remove: function() {
16211          if (this._initEvents(true), this._containerId !== this._container._leaflet_id)
16212            throw new Error("Map container is being reused by another instance");
16213          try {
16214            delete this._container._leaflet_id, delete this._containerId;
16215          } catch (t3) {
16216            this._container._leaflet_id = void 0, this._containerId = void 0;
16217          }
16218          ut(this._mapPane), this._clearControlPos && this._clearControlPos(), this._clearHandlers(), this._loaded && this.fire("unload");
16219          var t2;
16220          for (t2 in this._layers)
16221            this._layers[t2].remove();
16222          for (t2 in this._panes)
16223            ut(this._panes[t2]);
16224          return this._layers = [], this._panes = [], delete this._mapPane, delete this._renderer, this;
16225        }, createPane: function(t2, i3) {
16226          var e2 = ht("div", "leaflet-pane" + (t2 ? " leaflet-" + t2.replace("Pane", "") + "-pane" : ""), i3 || this._mapPane);
16227          return t2 && (this._panes[t2] = e2), e2;
16228        }, getCenter: function() {
16229          return this._checkIfLoaded(), this._lastCenter && !this._moved() ? this._lastCenter : this.layerPointToLatLng(this._getCenterLayerPoint());
16230        }, getZoom: function() {
16231          return this._zoom;
16232        }, getBounds: function() {
16233          var t2 = this.getPixelBounds();
16234          return new T(this.unproject(t2.getBottomLeft()), this.unproject(t2.getTopRight()));
16235        }, getMinZoom: function() {
16236          return void 0 === this.options.minZoom ? this._layersMinZoom || 0 : this.options.minZoom;
16237        }, getMaxZoom: function() {
16238          return void 0 === this.options.maxZoom ? void 0 === this._layersMaxZo
16238om ? 1 / 0 : this._layersMaxZoom : this.options.maxZoom;
16239        }, getBoundsZoom: function(t2, i3, e2) {
16240          t2 = z(t2), e2 = w(e2 || [0, 0]);
16241          var n2 = this.getZoom() || 0, o2 = this.getMinZoom(), s2 = this.getMaxZoom(), r2 = t2.getNorthWest(), a2 = t2.getSouthEast(), h2 = this.getSize().subtract(e2), u2 = b(this.project(a2, n2), this.project(r2, n2)).getSize(), l2 = Oi ? this.options.zoomSnap : 1, c2 = h2.x / u2.x, _2 = h2.y / u2.y, d2 = i3 ? Math.max(c2, _2) : Math.min(c2, _2);
16242          return n2 = this.getScaleZoom(d2, n2), l2 && (n2 = Math.round(n2 / (l2 / 100)) * (l2 / 100), n2 = i3 ? Math.ceil(n2 / l2) * l2 : Math.floor(n2 / l2) * l2), Math.max(o2, Math.min(s2, n2));
16243        }, getSize: function() {
16244          return this._size && !this._sizeChanged || (this._size = new x(this._container.clientWidth || 0, this._container.clientHeight || 0), this._sizeChanged = false), this._size.clone();
16245        }, getPixelBounds: function(t2, i3) {
16246          var e2 = this._getTopLeftPoint(t2, i3);
16247          return new P(e2, e2.add(this.getSize()));
16248        }, getPixelOrigin: function() {
16249          return this._checkIfLoaded(), this._pixelOrigin;
16250        }, getPixelWorldBounds: function(t2) {
16251          return this.options.crs.getProjectedBounds(void 0 === t2 ? this.getZoom() : t2);
16252        }, getPane: function(t2) {
16253          return "string" == typeof t2 ? this._panes[t2] : t2;
16254        }, getPanes: function() {
16255          return this._panes;
16256        }, getContainer: function() {
16257          return this._container;
16258        }, getZoomScale: function(t2, i3) {
16259          var e2 = this.options.crs;
16260          return i3 = void 0 === i3 ? this._zoom : i3, e2.scale(t2) / e2.scale(i3);
16261        }, getScaleZoom: function(t2, i3) {
16262          var e2 = this.options.crs;
16263          i3 = void 0 === i3 ? this._zoom : i3;
16264          var n2 = e2.zoom(t2 * e2.scale(i3));
16265          return isNaN(n2) ? 1 / 0 : n2;
16266        }, project: function(t2, i3) {
16267          return i3 = void 0 === i3 ? this._zoom : i3, this.options.crs.latLngToPoint(C(t2), i3);
16268        }, unproject: function(t2, i3) {
16269          return i3 = void 0 === i3 ? this._zoom : i3, this.options.crs.pointToLatLng(w(t2), i3);
16270        }, layerPointToLatLng: function(t2) {
16271          var i3 = w(t2).add(this.getPixelOrigin());
16272          return this.unproject(i3);
16273        }, latLngToLayerPoint: function(t2) {
16274          return this.project(C(t2))._round()._subtract(this.getPixelOrigin());
16275        }, wrapLatLng: function(t2) {
16276          return this.options.crs.wrapLatLng(C(t2));
16277        }, wrapLatLngBounds: function(t2) {
16278          return this.options.crs.wrapLatLngBounds(z(t2));
16279        }, distance: function(t2, i3) {
16280          return this.options.crs.distance(C(t2), C(i3));
16281        }, containerPointToLayerPoint: function(t2) {
16282          return w(t2).subtract(this._getMapPanePos());
16283        }, layerPointToContainerPoint: function(t2) {
16284          return w(t2).add(this._getMapPanePos());
16285        }, containerPointToLatLng: function(t2) {
16286          var i3 = this.containerPointToLayerPoint(w(t2));
16287          return this.layerPointToLatLng(i3);
16288        }, latLngToContainerPoint: function(t2) {
16289          return this.layerPointToContainerPoint(this.latLngToLayerPoint(C(t2)));
16290        }, mouseEventToContainerPoint: function(t2) {
16291          return tt(t2, this._container);
16292        }, mouseEventToLayerPoint: function(t2) {
16293          return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t2));
16294        }, mouseEventToLatLng: function(t2) {
16295          return this.layerPointToLatLng(this.mouseEventToLayerPoint(t2));
16296        }, _initContainer: function(t2) {
16297          var i3 = this._container = rt(t2);
16298          if (!i3)
16299            throw new Error("Map container not found.");
16300          if (i3._leaflet_id)
16301            throw new Error("Map container is already initialized.");
16302          V(i3, "scroll", this._onScroll, this), this._containerId = n(i3);
16303        }, _initLayout: function() {
16304          var t2 = this._container;
16305          this._fadeAnimated = this.options.fadeAnimation && Oi, pt(t2, "leaflet-container" + (Hi ? " leaflet-touch" : "") + (Vi ? " leaflet-retina" : "") + (wi ? " leaflet-oldie" : "") + (Zi ? " leaflet-safari" : "") + (this._fadeAnimated ? " leaflet-fade-anim" : ""));
16306          var i3 = at(t2, "position");
16307          "absolute" !== i3 && "relative" !== i3 && "fixed" !== i3 && (t2.style.position = "relative"), this._initPanes(), this._initControlPos && this._initControlPos();
16308        }, _initPanes: function() {
16309          var t2 = this._panes = {};
16310          this._paneRenderers = {}, this._mapPane = this.createPane("mapPane", this._container), Lt(this._mapPane, new x(0, 0)), this.createPane("tilePane"), this.createPane("shadowPane"), this.createPane("overlayPane"), this.createPane("markerPane"), this.createPane("tooltipPane"), this.createPane("popupPane"), this.options.markerZoomAnimation || (pt(t2.markerPane, "leaflet-zoom-hide"), pt(t2.shadowPane, "leaflet-zoom-hide"));
16311        }, _resetView: function(t2, i3) {
16312          Lt(this._mapPane, new x(0, 0));
16313          var e2 = !this._loaded;
16314          this._loaded = true, i3 = this._limitZoom(i3), this.fire("viewprereset");
16315          var n2 = this._zoom !== i3;
16316          this._moveStart(n2)._move(t2, i3)._moveEnd(n2), this.fire("viewreset"), e2 && this.fire("load");
16317        }, _moveStart: function(t2) {
16318          return t2 && this.fire("zoomstart"), this.fire("movestart");
16319        }, _move: function(t2, i3, e2) {
16320          void 0 === i3 && (i3 = this._zoom);
16321          var n2 = this._zoom !== i3;
16322          return this._zoom = i3, this._lastCenter = t2, this._pixelOrigin = this._getNewPixelOrigin(t2), (n2 || e2 && e2.pinch) && this.fire("zoom", e2), this.fire("move", e2);
16323        }, _moveEnd: function(t2) {
16324          return t2 && this.fire("zoomend"), this.fire("moveend");
16325        }, _stop: function() {
16326          return g(this._flyToFrame), this._panAnim && this._panAnim.stop(), this;
16327        }, _rawPanBy: function(t2) {
16328          Lt(this._mapPane, this._getMapPanePos().subtract(t2));
16329        }, _getZoomSpan: function() {
16330          return this.getMaxZoom() - this.getMinZoom();
16331        }, _panInsideMaxBounds: function() {
16332          this._enforcingBounds || this.panInsideBounds(this.options.maxBounds);
16333        }, _checkIfLoaded: function() {
16334          if (!this._loaded)
16335            throw new Error("Set map center and zoom first.");
16336        }, _initEvents: function(t2) {
16337          this._targets = {}, this._targets[n(this._container)] = this;
16338          var i3 = t2 ? G : V;
16339          i3(this._container, "click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress", this._handleDOMEvent, this), this.options.trackResize && i3(window, "resize", this._onResize, this), Oi && this.options.transform3DLimit && (t2 ? this.off : this.on).call(this, "moveend", this._onMoveEnd);
16340        }, _onResize: function() {
16341          g(this._resizeRequest), this._resizeRequest = f(function() {
16342            this.invalidateSize({ debounceMoveend: true });
16343          }, this);
16344        }, _onScroll: function() {
16345          this._container.scrollTop = 0, this._container.scrollLeft = 0;
16346        }, _onMoveEnd: function() {
16347          var t2 = this._getMapPanePos();
16348          Math.max(Math.abs(t2.x), Math.abs(t2.y)) >= this.options.transform3DLimit && this._resetView(this.getCenter(), this.getZoom());
16349        }, _findEventTargets: function(t2, i3) {
16350          for (var e2, o2 = [], s2 = "mouseout" === i3 || "mouseover" === i3, r2 = t2.target || t2.srcElement, a2 = false; r2; ) {
16351            if ((e2 = this._targets[n(r2)]) && ("click" === i3 || "preclick" === i3) && !t2._simulated && this._draggableMoved(e2)) {
16352              a2 = true;
16353              break;
16354            }
16355            if (e2 && e2.listens(i3, true)) {
16356              if (s2 && !ot(r2, t2))
16357                break;
16358              if (o2.push(e2), s2)
16359                break;
16360            }
16361            if (r2 === this._container)
16362              break;
16363            r2 = r2.parentNode;
16364          }
16365          return o2.length || a2 || s2 || !ot(r2, t2) || (o2 = [this]), o2;
16366        }, _handleDOMEvent: function(t2) {
16367          if (this._loaded && !nt(t2)) {
16368            var i3 = t2.type;
16369            "mousedown" !== i3 && "keypress" !== i3 || zt(t2.target || t2.srcElement), this._fireDOMEvent(t2, i3);
16370          }
16371        }, _mouseEvents: ["click", "dblclick", "mouseover", "mouseout", "contextmenu"], _fireDOMEvent: function(t2, e2, n2) {
16372          if ("click" === t2.type) {
16373            var o2 = i2({}, t2);
16374            o2.type = "preclick", this._fireDOMEvent(o2, o2.type, n2);
16375          }
16376          if (!t2._stopped && (n2 = (n2 || []).concat(this._findEventTargets(t2, e2))).length) {
16377            var s2 = n2[0];
16378            "contextmenu" === e2 && s2.listens(e2, true) && $2(t2);
16379            var r2 = { originalEvent: t2 };
16380            if ("keypress" !== t2.type) {
16381              var a2 = s2.options && "icon" in s2.options;
16382              r2.containerPoint = a2 ? this.latLngToContainerPoint(s2.getLatLng()) : this.mouseEventToContainerPoint(t2), r2.layerPoint = this.containerPointToLayerPoint(r2.containerPoint), r2.latlng = a2 ? s2.getLatLng() : this.layerPointToLatLng(r2.layerPoint);
16383            }
16384            for (var h2 = 0; h2 < n2.length; h2++)
16385              if (n2[h2].fire(e2, r2, true), r2.originalEvent._stopped || false === n2[h2].options.bubblingMouseEvents && -1 !== d(this._mouseEvents, e2))
16386                return;
16387          }
16388        }, _draggableMoved: function(t2) {
16389          return (t2 = t2.dragging && t2.dragging.enabled() ? t2 : this).dragging && t2.dragging.moved() || this.boxZoom && this.boxZoom.moved();
16390        }, _clearHandlers: function() {
16391          for (var t2 = 0, i3 = this._handlers.length; t2 < i3; t2++)
16392            this._handlers[t2].disable();
16393        }, whenReady: function(t2, i3) {
16394          return this._loaded ? t2.call(i3 || this, { target: this }) : this.on("load", t2, i3), this;
16395        }, _getMapPanePos: function() {
16396          return Pt(this._mapPane) || new x(0, 0);
16397        }, _moved: function() {
16398          var t2 = this._getMapPanePos();
16399          return t2 && !t2.equals([0, 0]);
16400        }, _getTopLeftPoint: function(t2, i3) {
16401          return (t2 && void 0 !== i3 ? this._getNewPixelOrigin(t2, i3) : this.getPixelOrigin()).subtract(this._getMapPanePos());
16402        }, _getNewPixelOrigin: function(t2, i3) {
vendor: 1,590 bytes, lines 16403-16426
16403          var e2 = this.getSize()._divideBy(2);
16404          return this.project(t2, i3)._subtract(e2)._add(this._getMapPanePos())._round();
16405        }, _latLngToNewLayerPoint: function(t2, i3, e2) {
16406          var n2 = this._getNewPixelOrigin(e2, i3);
16407          return this.project(t2, i3)._subtract(n2);
16408        }, _latLngBoundsToNewLayerBounds: function(t2, i3, e2) {
16409          var n2 = this._getNewPixelOrigin(e2, i3);
16410          return b([this.project(t2.getSouthWest(), i3)._subtract(n2), this.project(t2.getNorthWest(), i3)._subtract(n2), this.project(t2.getSouthEast(), i3)._subtract(n2), this.project(t2.getNorthEast(), i3)._subtract(n2)]);
16411        }, _getCenterLayerPoint: function() {
16412          return this.containerPointToLayerPoint(this.getSize()._divideBy(2));
16413        }, _getCenterOffset: function(t2) {
16414          return this.latLngToLayerPoint(t2).subtract(this._getCenterLayerPoint());
16415        }, _limitCenter: function(t2, i3, e2) {
16416          if (!e2)
16417            return t2;
16418          var n2 = this.project(t2, i3), o2 = this.getSize().divideBy(2), s2 = new P(n2.subtract(o2), n2.add(o2)), r2 = this._getBoundsOffset(s2, e2, i3);
16419          return r2.round().equals([0, 0]) ? t2 : this.unproject(n2.add(r2), i3);
16420        }, _limitOffset: function(t2, i3) {
16421          if (!i3)
16422            return t2;
16423          var e2 = this.getPixelBounds(), n2 = new P(e2.min.add(t2), e2.max.add(t2));
16424          return t2.add(this._getBoundsOffset(n2, i3));
16425        }, _getBoundsOffset: function(t2, i3, e2) {
16426          var n2 = b(this.project(i3.getNorthEast(), e2), this.project(i3.getSouthWest
16426(), e2)), o2 = n2.min.subtract(t2.min), s2 = n2.max.subtract(t2.max);
16427          return new x(this._rebound(o2.x, -s2.x), this._rebound(o2.y, -s2.y));
16428        }, _rebound: function(t2, i3) {
16429          return t2 + i3 > 0 ? Math.round(t2 - i3) / 2 : Math.max(0, Math.ceil(t2)) - Math.max(0, Math.floor(i3));
16430        }, _limitZoom: function(t2) {
16431          var i3 = this.getMinZoom(), e2 = this.getMaxZoom(), n2 = Oi ? this.options.zoomSnap : 1;
16432          return n2 && (t2 = Math.round(t2 / n2) * n2), Math.max(i3, Math.min(e2, t2));
16433        }, _onPanTransitionStep: function() {
16434          this.fire("move");
16435        }, _onPanTransitionEnd: function() {
16436          mt(this._mapPane, "leaflet-pan-anim"), this.fire("moveend");
16437        }, _tryAnimatedPan: function(t2, i3) {
16438          var e2 = this._getCenterOffset(t2)._floor();
16439          return !(true !== (i3 && i3.animate) && !this.getSize().contains(e2)) && (this.panBy(e2, i3), true);
16440        }, _createAnimProxy: function() {
16441          var t2 = this._proxy = ht("div", "leaflet-proxy leaflet-zoom-animated");
16442          this._panes.mapPane.appendChild(t2), this.on("zoomanim", function(t3) {
16443            var i3 = ce, e2 = this._proxy.style[i3];
16444            wt(this._proxy, this.project(t3.center, t3.zoom), this.getZoomScale(t3.zoom, 1)), e2 === this._proxy.style[i3] && this._animatingZoom && this._onZoomTransitionEnd();
16445          }, this), this.on("load moveend", function() {
16446            var t3 = this.getCenter(), i3 = this.getZoom();
16447            wt(this._proxy, this.project(t3, i3), this.getZoomScale(i3, 1));
16448          }, this), this._on("unload", this._destroyAnimProxy, this);
16449        }, _destroyAnimProxy: function() {
16450          ut(this._proxy), delete this._proxy;
16451        }, _catchTransitionEnd: function(t2) {
16452          this._animatingZoom && t2.propertyName.indexOf("transform") >= 0 && this._onZoomTransitionEnd();
16453        }, _nothingToAnimate: function() {
16454          return !this._container.getElementsByClassName("leaflet-zoom-animated").length;
16455        }, _tryAnimatedZoom: function(t2, i3, e2) {
16456          if (this._animatingZoom)
16457            return true;
16458          if (e2 = e2 || {}, !this._zoomAnimated || false === e2.animate || this._nothingToAnimate() || Math.abs(i3 - this._zoom) > this.options.zoomAnimationThreshold)
16459            return false;
16460          var n2 = this.getZoomScale(i3), o2 = this._getCenterOffset(t2)._divideBy(1 - 1 / n2);
16461          return !(true !== e2.animate && !this.getSize().contains(o2)) && (f(function() {
16462            this._moveStart(true)._animateZoom(t2, i3, true);
16463          }, this), true);
16464        }, _animateZoom: function(t2, i3, n2, o2) {
16465          n2 && (this._animatingZoom = true, this._animateToCenter = t2, this._animateToZoom = i3, pt(this._mapPane, "leaflet-zoom-anim")), this.fire("zoomanim", { center: t2, zoom: i3, noUpdate: o2 }), setTimeout(e(this._onZoomTransitionEnd, this), 250);
16466        }, _onZoomTransitionEnd: function() {
16467          this._animatingZoom && (mt(this._mapPane, "leaflet-zoom-anim"), this._animatingZoom = false, this._move(this._animateToCenter, this._animateToZoom), f(function() {
16468            this._moveEnd(true);
16469          }, this));
16470        } }), xe = v.extend({ options: { position: "topright" }, initialize: function(t2) {
16471          l(this, t2);
16472        }, getPosition: function() {
16473          return this.options.position;
16474        }, setPosition: function(t2) {
16475          var i3 = this._map;
16476          return i3 && i3.removeControl(this), this.options.position = t2, i3 && i3.addControl(this), this;
16477        }, getContainer: function() {
16478          return this._container;
16479        }, addTo: function(t2) {
16480          this.remove(), this._map = t2;
16481          var i3 = this._container = this.onAdd(t2), e2 = this.getPosition(), n2 = t2._controlCorners[e2];
16482          return pt(i3, "leaflet-control"), -1 !== e2.indexOf("bottom") ? n2.insertBefore(i3, n2.firstChild) : n2.appendChild(i3), this;
16483        }, remove: function() {
16484          return this._map ? (ut(this._container), this.onRemove && this.onRemove(this._map), this._map = null, this) : this;
16485        }, _refocusOnMap: function(t2) {
16486          this._map && t2 && t2.screenX > 0 && t2.screenY > 0 && this._map.getContainer().focus();
16487        } }), we = function(t2) {
16488          return new xe(t2);
16489        };
16490        ye.include({ addControl: function(t2) {
16491          return t2.addTo(this), this;
16492        }, removeControl: function(t2) {
16493          return t2.remove(), this;
16494        }
16494, _initControlPos: function() {
16495          function t2(t3, o2) {
16496            var s2 = e2 + t3 + " " + e2 + o2;
16497            i3[t3 + o2] = ht("div", s2, n2);
16498          }
16499          var i3 = this._controlCorners = {}, e2 = "leaflet-", n2 = this._controlContainer = ht("div", e2 + "control-container", this._container);
16500          t2("top", "left"), t2("top", "right"), t2("bottom", "left"), t2("bottom", "right");
16501        }, _clearControlPos: function() {
16502          for (var t2 in this._controlCorners)
16503            ut(this._controlCorners[t2]);
16504          ut(this._controlContainer), delete this._controlCorners, delete this._controlContainer;
16505        } });
16506        var Le = xe.extend({ options: { collapsed: true, position: "topright", autoZIndex: true, hideSingleBase: false, sortLayers: false, sortFunction: function(t2, i3, e2, n2) {
16507          return e2 < n2 ? -1 : n2 < e2 ? 1 : 0;
16508        } }, initialize: function(t2, i3, e2) {
16509          l(this, e2), this._layerControlInputs = [], this._layers = [], this._lastZIndex = 0, this._handlingClick = false;
16510          for (var n2 in t2)
16511            this._addLayer(t2[n2], n2);
16512          for (n2 in i3)
16513            this._addLayer(i3[n2], n2, true);
16514        }, onAdd: function(t2) {
16515          this._initLayout(), this._update(), this._map = t2, t2.on("zoomend", this._checkDisabledLayers, this);
16516          for (var i3 = 0; i3 < this._layers.length; i3++)
16517            this._layers[i3].layer.on("add remove", this._onLayerChange, this);
16518          return this._container;
16519        }, addTo: function(t2) {
16520          return xe.prototype.addTo.call(this, t2), this._expandIfNotCollapsed();
16521        }, onRemove: function() {
16522          this._map.off("zoomend", this._checkDisabledLayers, this);
16523          for (var t2 = 0; t2 < this._layers.length; t2++)
16524            this._layers[t2].layer.off("add remove", this._onLayerChange, this);
16525        }, addBaseLayer: function(t2, i3) {
16526          return this._addLayer(t2, i3), this._map ? this._update() : this;
16527        }, addOverlay: function(t2, i3) {
16528          return this._addLayer(t2, i3, true), this._map ? this._update() : this;
16529        }, removeLayer: function(t2) {
16530          t2.off("add remove", this._onLayerChange, this);
16531          var i3 = this._getLayer(n(t2));
16532          return i3 && this._layers.splice(this._layers.indexOf(i3), 1), this._map ? this._update() : this;
16533        }, expand: function() {
16534          pt(this._container, "leaflet-control-layers-expanded"), this._form.style.height = null;
16535          var t2 = this._map.getSize().y - (this._container.offsetTop + 50);
16536          return t2 < this._form.clientHeight ? (pt(this._form, "leaflet-control-layers-scrollbar"), this._form.style.height = t2 + "px") : mt(this._form, "leaflet-control-layers-scrollbar"), this._checkDisabledLayers(), this;
16537        }, collapse: function() {
16538          return mt(this._container, "leaflet-control-layers-expanded"), this;
16539        }, _initLayout: function() {
16540          var t2 = "leaflet-control-layers", i3 = this._container = ht("div", t2), e2 = this.options.collapsed;
16541          i3.setAttribute("aria-haspopup", true), J(i3), X(i3);
16542          var n2 = this._form = ht("form", t2 + "-list");
16543          e2 && (this._map.on("click", this.collapse, this), bi || V(i3, { mouseenter: this.expand, mouseleave: this.collapse }, this));
16544          var o2 = this._layersLink = ht("a", t2 + "-toggle", i3);
16545          o2.href = "#", o2.title = "Layers", Hi ? (V(o2, "click", Q), V(o2, "click", this.expand, this)) : V(o2, "focus", this.expand, this), e2 || this.expand(), this._baseLayersList = ht("div", t2 + "-base", n2), this._separator = ht("div", t2 + "-separator", n2), this._overlaysList = ht("div", t2 + "-overlays", n2), i3.appendChild(n2);
16546        }, _getLayer: function(t2) {
16547          for (var i3 = 0; i3 < this._layers.length; i3++)
16548            if (this._layers[i3] && n(this._layers[i3].layer) === t2)
16549              return this._layers[i3];
16550        }, _addLayer: function(t2, i3, n2) {
16551          this._map && t2.on("add remove", this._onLayerChange, this), this._layers.push({ layer: t2, name: i3, overlay: n2 }), this.options.sortLayers && this._layers.sort(e(function(t3, i4) {
16552            return this.options.sortFunction(t3.layer, i4.layer, t3.name, i4.name);
16553          }
16553, this)), this.options.autoZIndex && t2.setZIndex && (this._lastZIndex++, t2.setZIndex(this._lastZIndex)), this._expandIfNotCollapsed();
16554        }, _update: function() {
16555          if (!this._container)
16556            return this;
16557          lt(this._baseLayersList), lt(this._overlaysList), this._layerControlInputs = [];
16558          var t2, i3, e2, n2, o2 = 0;
16559          for (e2 = 0; e2 < this._layers.length; e2++)
16560            n2 = this._layers[e2], this._addItem(n2), i3 = i3 || n2.overlay, t2 = t2 || !n2.overlay, o2 += n2.overlay ? 0 : 1;
16561          return this.options.hideSingleBase && (t2 = t2 && o2 > 1, this._baseLayersList.style.display = t2 ? "" : "none"), this._separator.style.display = i3 && t2 ? "" : "none", this;
16562        }, _onLayerChange: function(t2) {
16563          this._handlingClick || this._update();
16564          var i3 = this._getLayer(n(t2.target)), e2 = i3.overlay ? "add" === t2.type ? "overlayadd" : "overlayremove" : "add" === t2.type ? "baselayerchange" : null;
16565          e2 && this._map.fire(e2, i3);
16566        }, _createRadioElement: function(t2, i3) {
16567          var e2 = '<input type="radio" class="leaflet-control-layers-selector" name="' + t2 + '"' + (i3 ? ' checked="checked"' : "") + "/>", n2 = document.createElement("div");
16568          return n2.innerHTML = e2, n2.firstChild;
16569        }, _addItem: function(t2) {
16570          var i3, e2 = document.createElement("label"), o2 = this._map.hasLayer(t2.layer);
16571          t2.overlay ? ((i3 = document.createElement("input")).type = "checkbox", i3.className = "leaflet-control-layers-selector", i3.defaultChecked = o2) : i3 = this._createRadioElement("leaflet-base-layers", o2), this._layerControlInputs.push(i3), i3.layerId = n(t2.layer), V(i3, "click", this._onInputClick, this);
16572          var s2 = document.createElement("span");
16573          s2.innerHTML = " " + t2.name;
16574          var r2 = document.createElement("div");
16575          return e2.appendChild(r2), r2.appendChild(i3), r2.appendChild(s2), (t2.overlay ? this._overlaysList : this._baseLayersList).appendChild(e2), this._checkDisabledLayers(), e2;
16576        }, _onInputClick: function() {
16577          var t2, i3, e2 = this._layerControlInputs, n2 = [], o2 = [];
16578          this._handlingClick = true;
16579          for (var s2 = e2.length - 1; s2 >= 0; s2--)
16580            t2 = e2[s2], i3 = this._getLayer(t2.layerId).layer, t2.checked ? n2.push(i3) : t2.checked || o2.push(i3);
16581          for (s2 = 0; s2 < o2.length; s2++)
16582            this._map.hasLayer(o2[s2]) && this._map.removeLayer(o2[s2]);
16583          for (s2 = 0; s2 < n2.length; s2++)
16584            this._map.hasLayer(n2[s2]) || this._map.addLayer(n2[s2]);
16585          this._handlingClick = false, this._refocusOnMap();
16586        }, _checkDisabledLayers: function() {
16587          for (var t2, i3, e2 = this._layerControlInputs, n2 = this._map.getZoom(), o2 = e2.length - 1; o2 >= 0; o2--)
16588            t2 = e2[o2], i3 = this._getLayer(t2.layerId).layer, t2.disabled = void 0 !== i3.options.minZoom && n2 < i3.options.minZoom || void 0 !== i3.options.maxZoom && n2 > i3.options.maxZoom;
16589        }, _expandIfNotCollapsed: function() {
16590          return this._map && !this.options.collapsed && this.expand(), this;
16591        }, _expand: function() {
16592          return this.expand();
16593        }, _collapse: function() {
16594          return this.collapse();
16595        } }), Pe = xe.extend({ options: { position: "topleft", zoomInText: "+", zoomInTitle: "Zoom in", zoomOutText: "&#x2212;", zoomOutTitle: "Zoom out" }, onAdd: function(t2) {
16596          var i3 = "leaflet-control-zoom", e2 = ht("div", i3 + " leaflet-bar"), n2 = this.options;
16597          return this._zoomInButton = this._createButton(n2.zoomInText, n2.zoomInTitle, i3 + "-in", e2, this._zoomIn), this._zoomOutButton = this._createButton(n2.zoomOutText, n2.zoomOutTitle, i3 + "-out", e2, this._zoomOut), this._updateDisabled(), t2.on("zoomend zoomlevelschange", this._updateDisabled, this), e2;
16598        }, onRemove: function(t2) {
16599          t2.off("zoomend zoomlevelschange", this._updateDisabled, this);
16600        }, disable: function() {
16601          return this._disabled = true, this._updateDisabled(), this;
16602        }, enable: function() {
16603          return this._disabled = false, this._updateDisabled(), this;
16604        }, _zoomIn: function(t2) {
16605          !this._disabled && this._map._zoom < this._map.getMaxZoom() && this._map.zoomIn(this._map.options.zoomDelta * (t2.shiftKey ? 3 : 1));
16606        }, _zoomOut: function(t2) {
16607          !this._disabled && this._map._zoom > this._map.getMinZoom() && this._map.zoomOut(this._map.options.zoomDelta * (t2.shiftKey ? 3 : 1));
16608        }, _createButton: function(t2, i3, e2, n2, o2) {
16609          var s2 = ht("a", e2, n2);
16610          return s2.innerHTML = t2, s2.href = "#", s2.title = i3, s2.setAttribute("role", "button"), s2.
16610setAttribute("aria-label", i3), J(s2), V(s2, "click", Q), V(s2, "click", o2, this), V(s2, "click", this._refocusOnMap, this), s2;
16611        }, _updateDisabled: function() {
16612          var t2 = this._map, i3 = "leaflet-disabled";
16613          mt(this._zoomInButton, i3), mt(this._zoomOutButton, i3), (this._disabled || t2._zoom === t2.getMinZoom()) && pt(this._zoomOutButton, i3), (this._disabled || t2._zoom === t2.getMaxZoom()) && pt(this._zoomInButton, i3);
16614        } });
16615        ye.mergeOptions({ zoomControl: true }), ye.addInitHook(function() {
16616          this.options.zoomControl && (this.zoomControl = new Pe(), this.addControl(this.zoomControl));
16617        });
16618        var be = xe.extend({ options: { position: "bottomleft", maxWidth: 100, metric: true, imperial: true }, onAdd: function(t2) {
16619          var i3 = ht("div", "leaflet-control-scale"), e2 = this.options;
16620          return this._addScales(e2, "leaflet-control-scale-line", i3), t2.on(e2.updateWhenIdle ? "moveend" : "move", this._update, this), t2.whenReady(this._update, this), i3;
16621        }, onRemove: function(t2) {
16622          t2.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this);
16623        }, _addScales: function(t2, i3, e2) {
16624          t2.metric && (this._mScale = ht("div", i3, e2)), t2.imperial && (this._iScale = ht("div", i3, e2));
16625        }, _update: function() {
16626          var t2 = this._map, i3 = t2.getSize().y / 2, e2 = t2.distance(t2.containerPointToLatLng([0, i3]), t2.containerPointToLatLng([this.options.maxWidth, i3]));
16627          this._updateScales(e2);
16628        }, _updateScales: function(t2) {
16629          this.options.metric && t2 && this._updateMetric(t2), this.options.imperial && t2 && this._updateImperial(t2);
16630        }, _updateMetric: function(t2) {
16631          var i3 = this._getRoundNum(t2), e2 = i3 < 1e3 ? i3 + " m" : i3 / 1e3 + " km";
16632          this._updateScale(this._mScale, e2, i3 / t2);
16633        }, _updateImperial: function(t2) {
16634          var i3, e2, n2, o2 = 3.2808399 * t2;
16635          o2 > 5280 ? (i3 = o2 / 5280, e2 = this._getRoundNum(i3), this._updateScale(this._iScale, e2 + " mi", e2 / i3)) : (n2 = this._getRoundNum(o2), this._updateScale(this._iScale, n2 + " ft", n2 / o2));
16636        }, _updateScale: function(t2, i3, e2) {
16637          t2.style.width = Math.round(this.options.maxWidth * e2) + "px", t2.innerHTML = i3;
16638        }, _getRoundNum: function(t2) {
16639          var i3 = Math.pow(10, (Math.floor(t2) + "").length - 1), e2 = t2 / i3;
16640          return e2 = e2 >= 10 ? 10 : e2 >= 5 ? 5 : e2 >= 3 ? 3 : e2 >= 2 ? 2 : 1, i3 * e2;
16641        } }), Te = xe.extend({ options: { position: "bottomright", prefix: '<a href="http://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>' }, initialize: function(t2) {
16642          l(this, t2), this._attributions = {};
16643        }, onAdd: function(t2) {
16644          t2.attributionControl = this, this._container = ht("div", "leaflet-control-attribution"), J(this._container);
16645          for (var i3 in t2._layers)
16646            t2._layers[i3].getAttribution && this.addAttribution(t2._layers[i3].getAttribution());
16647          return this._update(), this._container;
16648        }, setPrefix: function(t2) {
16649          return this.options.prefix = t2, this._update(), this;
16650        }, addAttribution: function(t2) {
16651          return t2 ? (this._attributions[t2] || (this._attributions[t2] = 0), this._attributions[t2]++, this._update(), this) : this;
16652        }, removeAttribution: function(t2) {
16653          return t2 ? (this._attributions[t2] && (this._attributions[t2]--, this._update()), this) : this;
16654        }, _update: function() {
16655          if (this._map) {
16656            var t2 = [];
16657            for (var i3 in this._attributions)
16658              this._attributions[i3] && t2.push(i3);
16659            var e2 = [];
16660            this.options.prefix && e2.push(this.options.prefix), t2.length && e2.push(t2.join(", ")), this._container.innerHTML = e2.join(" | ");
16661          }
16662        } });
16663        ye.mergeOptions({ attributionControl: true }), ye.addInitHook(function() {
16664          this.options.attributionControl && new Te().addTo(this);
16665        });
16666        xe.Layers = Le, xe.Zoom = Pe, xe.Scale = be, xe.Attribution = Te, we.layers = function(t2, i3, e2) {
16667          return new Le(t2, i3, e2);
16668        }, we.zoom = function(t2) {
16669          return new Pe(t2);
16670        }, we.scale = function(t2) {
16671          return new be(t2);
16672        }, we.attribution = function(t2) {
16673          return new Te(t2);
16674        };
16675        var ze, Me = v.extend({ initialize: function(t2) {
16676          this._map = t2;
16677        }, enable: function() {
16678          return this._enabled ? this : (this._enabled = true, this.addHooks(), this);
16679        }, disable: function() {
16680          return this._enabled ? (this._enabled = false, this.removeHooks(), this) : this;
16681        }, enabled: function() {
16682          return !!this._enabled;
16683        } }), Ce = { Events: hi }, Ze = Hi ? "touchstart mousedown" : "mousedown", Ee = { mousedown: "mouseup", touchstart: "touchend", pointerdown: "touchend", MSPointerDown: "touchend" }, Se = { mousedown: "mousemove", touchstart: "touchmove", pointerdown: "touchmove", MSPointerDown: "touchmove" }, ke = ui.extend({ options: { clickTolerance: 3 }, initialize: function(t2, i3, e2, n2) {
16684          l(this, n2), this._element = t2, this._dragStartTarget = i3 || t2, this._preventOutline = e2;
16685        }, enable: function() {
16686          this._enabled || (V(this._dragStartTarget, Ze, this._onDown, this), this._enabled = true);
16687        }, disable: function() {
16688          this._enabled && (ke._dragging === this && this.finishDrag(), G(this._dragStartTarget, Ze, this._onDown, this), this._enabled = false, this._moved = false);
16689        }, _onDown: function(t2) {
16690          if (!t2._simulated && this._enabled && (this._moved = false, !dt(this._element, "leaflet-zoom-anim") && !(ke._dragging || t2.shiftKey || 1 !== t2.which && 1 !== t2.button && !t2.touches || (ke._dragging = this, this._preventOutline && zt(this._element), bt(), pi(), this._moving)))) {
16691            this.fire("down");
16692            var i3 = t2.touches ? t2.touches[0] : t2;
16693            this._startPoint = new x(i3.clientX, i3.clientY), V(document, Se[t2.type], this._onMove, this), V(document, Ee[t2.type], this._onUp, this);
16694          }
16695        }, _onMove: function(t2) {
16696          if (!t2._simulated && this._enabled)
16697            if (t2.touches && t2.touches.length > 1)
16698              this._moved = true;
16699            else {
16700              var i3 = t2.touches && 1 === t2.touches.length ? t2.touches[0] : t2, e2 = new x(i3.clientX, i3.clientY).subtract(this._startPoint);
16701              (e2.x || e2.y) && (Math.abs(e2.x) + Math.abs(e2.y) < this.options.clickTolerance || ($2(t2), this._moved || (this.fire("dragstart"), this._moved = true, this._startPos = Pt(this._element).subtract(e2), pt(document.body, "leaflet-dragging"), this._lastTarget = t2.target || t2.srcElement, window.SVGElementInstance && this._lastTarget instanceof SVGElementInstance && (this._lastTarget = this._lastTarget.correspondingUseElement), pt(this._lastTarget, "leaflet-drag-target")), this._newPos = this._startPos.add(e2), this._moving = true, g(this._animRequest), this._lastEvent = t2, this._animRequest = f(this._updatePosition, this, true)));
16702            }
16703        }, _updatePosition: function() {
16704          var t2 = { originalEvent: this._lastEvent };
16705          this.fire("predrag", t2), Lt(this._element, this._newPos), this.fire("drag", t2);
16706        }, _onUp: function(t2) {
16707          !t2._simulated && this._enabled && this.finishDrag();
16708        }, finishDrag: function() {
16709          mt(document.body, "leaflet-dragging"), this._lastTarget && (mt(this._lastTarget, "leaflet-drag-target"), this._lastTarget = null);
16710          for (var t2 in Se)
16711            G(document, Se[t2], this._onMove, this), G(document, Ee[t2], this._onUp, this);
16712          Tt(), mi(), this._moved && this._moving && (g(this._animRequest), this.fire("dragend", { distance: this._newPos.distanceTo(this._startPos) })), this._moving = false, ke._dragging = false;
16713        } }), Be = (Object.freeze || Object)({ simplify: Ct, pointToSegmentDistance: Zt, closestPointOnSegment: function(t2, i3, e2) {
16714          return Rt(t2, i3, e2);
16715        }, clipSegment: Bt, _getEdgeIntersection: It, _getBitCode: At, _sqClosestPointOnSegment: Rt, isFlat: Dt, _flat: Nt }), Ie = (Object.freeze || Object)({ clipPolygon: jt }), Ae = { project: function(t2) {
16716          return new x(t2.lng, t2.lat);
16717        }, unproject: function(t2) {
16718          return new M(t2.y, t2.x);
16719        }, bounds: new P([-180, -90], [180, 90]) }, Oe = { R: 6378137, R_MINOR: 6356752314245179e-9, bounds: new P([-2003750834279e-5, -1549657073972e-5], [2003750834279e-5, 1876465623138e-5]), project: function(t2) {
16720          var i3 = Math.PI / 180, e2 = this.R, n2 = t2.lat * i3, o2 = this.R_MINOR / e2, s2 = Math.sqrt(1 - o2 * o2), r2 = s2 * Math.sin(n2), a2 = Math.tan(Math.PI / 4 - n2 / 2) / Math.pow((1 - r2) / (1 + r2), s2 / 2);
16721          return n2 = -e2 * Math.log(Math.max(a2, 1e-10)), new x(t2.lng * i3 * e2, n2);
16722        }, unproject: function(t2) {
16723          for (var i3, e2 = 180 / Math.PI, n2 = this.R, o2 = this.R_MINOR / n2, s2 = Math.sqrt(1 - o2 * o2), r2 = Math.exp(-t2.y / n2), a2 = Math.PI / 2 - 2 * Math.atan(r2), h2 = 0, u2 = 0.1; h2 < 15 && Math.abs(u2) > 1e-7; h2++)
16724            i3 = s2 * Math.sin(a2), i3 = Math.pow((1 - i3) / (1 + i3), s2 / 2), a2 += u2 = Math.PI / 2 - 2 * Math.atan(r2 * i3) - a2;
16725          return new M(a2 * e2, t2.x * e2 / n2);
16726        } }, Re = (Object.freeze || Object)({ LonLat: Ae, Mercator: Oe, SphericalMercator: _i }), De = i2({}, ci, { code: "EPSG:3395", projection: Oe, transformation: function() {
16727          var t2 = 0.5 / (Math.PI * Oe.R);
16728          return E(t2, 0.5, -t2, 0.5);
16729        }() }), Ne = i2({}, ci, { code: "EPSG:4326", projection: Ae, transformation: E(1 / 180, 1, -1 / 180, 0.5) }), je = i2({}, li, { projection: Ae, transformation: E(1, 0, -1, 0), scale: function(t2) {
16730          return Math.pow(2, t2);
16731        }, zoom: function(t2) {
16732          return Math.log(t2) / Math.LN2;
16733        }, distance: function(t2, i3) {
16734          var e2 = i3.lng - t2.lng, n2 = i3.lat - t2.lat;
16735          return Math.sqrt(e2 * e2 + n2 * n2);
16736        }, infinite: true });
16737        li.Earth = ci, li.EPSG3395 = De, li.EPSG3857 = gi, li.EPSG900913 = vi, li.EPSG4326 = Ne, li.Simple = je;
16738        var We = ui.extend({ options: { pane: "overlayPane", attribution: null, bubblingMouseEvents: true }, addTo: function(t2) {
16739          return t2.addLayer(this), this;
16740        }, remove: function() {
16741          return this.removeFrom(this._map || this._mapToAdd);
16742        }, removeFrom: function(t2) {
16743          return t2 && t2.removeLayer(this), this;
16744        }, getPane: function(t2) {
16745          return this._map.getPane(t2 ? this.options[t2] || t2 : this.options.pane);
16746        }, addInteractiveTarget: function(t2) {
16747          return this._map._targets[n(t2)] = this, this;
16748        }, removeInteractiveTarget: function(t2) {
16749          return delete this._map._targets[n(t2)], this;
16750        }, getAttribution: function() {
16751          return this.options.attribution;
16752        }, _layerAdd: function(t2) {
16753          var i3 = t2.target;
16754          if (i3.hasLayer(this)) {
16755            if (this._map = i3, this._zoomAnimated = i3._zoomAnimated, this.getEvents) {
16756              var e2 = this.getEvents();
16757              i3.on(e2, this), this.once("remove", function() {
16758                i3.off(e2, this);
16759              }, this);
16760            }
16761            this.onAdd(i3), this.getAttribution && i3.attributionControl && i3.attributionControl.addAttribution(this.getAttribution()), this.fire("add"), i3.fire("layeradd", { layer: this });
16762          }
16763        } });
16764        ye.include({ addLayer: function(t2) {
16765          if (!t2._layerAdd)
16766            throw new Error("The provided object is not a Layer.");
16767          var i3 = n(t2);
16768          return this._layers[i3] ? this : (this._layers[i3] = t2, t2._mapToAdd = this, t2.beforeAdd && t2.beforeAdd(this), this.whenReady(t2._layerAdd, t2), this);
16769        }, removeLayer: function(t2) {
16770          var i3 = n(t2);
16771          return this._layers[i3] ? (this._loaded && t2.onRemove(this), t2.getAttribution && this.attributionControl && this.attributionControl.removeAttribution(t2.getAttribution()), delete this._layers[i3], this._loaded && (this.fire("layerremove", { layer: t2 }), t2.fire("remove")), t2._map = t2._mapToAdd = null, this) : this;
16772        }, hasLayer: function(t2) {
16773          return !!t2 && n(t2) in this._layers;
16774        }, eachLayer: function(t2, i3) {
16775          for (var e2 in this._layers)
16776            t2.call(i3, this._layers[e2]);
16777          return this;
16778        }, _addLayers: function(t2) {
16779          for (var i3 = 0, e2 = (t2 = t2 ? ei(t2) ? t2 : [t2] : []).length; i3 < e2; i3++)
16780            this.addLayer(t2[i3]);
16781        }, _addZoomLimit: function(t2) {
16782          !isNaN(t2.options.maxZoom) && isNaN(t2.options.minZoom) || (this._zoomBoundLayers[n(t2)] = t2, this._updateZoomLevels());
16783        }, _removeZoomLimit: function(t2) {
16784          var i3 = n(t2);
16785          this._zoomBoundLayers[i3] && (delete this._zoomBoundLayers[i3], this._updateZoomLevels());
16786        }, _updateZoomLevels: function() {
16787          var t2 = 1 / 0, i3 = -1 / 0, e2 = this._getZoomSpan();
16788          for (var n2 in this._zoomBoundLayers) {
16789            var o2 = this._zoomBoundLayers[n2].options;
16790            t2 = void 0 === o2.minZoom ? t2 : Math.min(t2, o2.minZoom), i3 = void 0 === o2.maxZoom ? i3 : Math.max(i3, o2.maxZoom);
16791          }
16792          this._layersMaxZoom = i3 === -1 / 0 ? void 0 : i3, this._layersMinZoom = t2 === 1 / 0 ? void 0 : t2, e2 !== this._getZoomSpan() && this.fire("zoomlevelschange"), void 0 === this.options.maxZoom && this._layersMaxZoom && this.getZoom() > this._layersMaxZoom && this.setZoom(this._layersMaxZoom), void 0 === this.options.minZoom && this._layersMinZoom && this.getZoom() < this._layersMinZoom && this.setZoom(this._layersMinZoom);
16793        } });
16794        var He = We.extend({ initialize: function(t2) {
16795          this._layers = {};
16796          var i3, e2;
16797          if (t2)
16798            for (i3 = 0, e2 = t2.length; i3 < e2; i3++)
16799              this.addLayer(t2[i3]);
16800        }, addLayer: function(t2) {
16801          var i3 = this.getLayerId(t2);
16802          return this._layers[i3] = t2, this._map && this._map.addLayer(t2), this;
16803        }, removeLayer: function(t2) {
16804          var i3 = t2 in this._layers ? t2 : this.getLayerId(t2);
16805          return this._map && this._layers[i3] && this._map.removeLayer(this._layers[i3]), delete this._layers[i3], this;
16806        }, hasLayer: function(t2) {
16807          return !!t2 && (t2 in this._layers || this.getLayerId(t2) in this._layers);
16808        }, clearLayers: function() {
16809          for (var t2 in this._layers)
16810            this.removeLayer(this._layers[t2]);
16811          return this;
16812        }, invoke: function(t2) {
16813          var i3, e2, n2 = Array.prototype.slice.call(arguments, 1);
16814          for (i3 in this._layers)
16815            (e2 = this._layers[i3])[t2] && e2[t2].apply(e2, n2);
16816          return this;
16817        }, onAdd: function(t2) {
16818          for (var i3 in this._layers)
16819            t2.addLayer(this._layers[i3]);
16820        }, onRemove: function(t2) {
16821          for (var i3 in this._layers)
16822            t2.removeLayer(this._layers[i3]);
16823        }, eachLayer: function(t2, i3) {
16824          for (var e2 in this._layers)
16825            t2.call(i3, this._layers[e2]);
16826          return this;
16827        }, getLayer: function(t2) {
16828          return this._layers[t2];
16829        }, getLayers: function() {
16830          var t2 = [];
16831          for (var i3 in this._layers)
16832            t2.push(this._layers[i3]);
16833          return t2;
16834        }, setZIndex: function(t2) {
16835          return this.invoke("setZIndex", t2);
16836        }, getLayerId: function(t2) {
16837          return n(t2);
16838        } }), Fe = He.extend({ addLayer: function(t2) {
16839          return this.hasLayer(t2) ? this : (t2.addEventParent(this), He.prototype.addLayer.call(this, t2), this.fire("layeradd", { layer: t2 }));
16840        }, removeLayer: function(t2) {
16841          return this.hasLayer(t2) ? (t2 in this._layers && (t2 = this._layers[t2]), t2.removeEventParent(this), He.prototype.removeLayer.call(this, t2), this.fire("layerremove", { layer: t2 })) : this;
16842        }, setStyle: function(t2) {
16843          return this.invoke("setStyle", t2);
16844        }, bringToFront: function() {
16845          return this.invoke("bringToFront");
16846        }, bringToBack: function() {
16847          return this.invoke("bringToBack");
16848        }, getBounds: function() {
16849          var t2 = new T();
16850          for (var i3 in this._layers) {
16851            var e2 = this._layers[i3];
16852            t2.extend(e2.getBounds ? e2.getBounds() : e2.getLatLng());
16853          }
16854          return t2;
16855        } }), Ue = v.extend({ initialize: function(t2) {
16856          l(this, t2);
16857        }, createIcon: function(t2) {
16858          return this._createIcon("icon", t2);
16859        }, createShadow: function(t2) {
16860          return this._createIcon("shadow", t2);
16861        }, _createIcon: function(t2, i3) {
16862          var e2 = this._getIconUrl(t2);
16863          if (!e2) {
16864            if ("icon" === t2)
16865              throw new Error("iconUrl not set in Icon options (see the docs).");
16866            return null;
16867          }
16868          var n2 = this._createImg(e2, i3 && "IMG" === i3.tagName ? i3 : null);
16869          return this._setIconStyles(n2, t2), n2;
16870        }, _setIconStyles: function(t2, i3) {
16871          var e2 = this.options, n2 = e2[i3 + "Size"];
16872          "number" == typeof n2 && (n2 = [n2, n2]);
16873          var o2 = w(n2), s2 = w("shadow" === i3 && e2.shadowAnchor || e2.iconAnchor || o2 && o2.divideBy(2, true));
16874          t2.className = "leaflet-marker-" + i3 + " " + (e2.className || ""), s2 && (t2.style.marginLeft = -s2.x + "px", t2.style.marginTop = -s2.y + "px"), o2 && (t2.style.width = o2.x + "px", t2.style.height = o2.y + "px");
16875        }, _createImg: function(t2, i3) {
16876          return i3 = i3 || document.createElement("img"), i3.src = t2, i3;
16877        }, _getIconUrl: function(t2) {
16878          return Vi && this.options[t2 + "RetinaUrl"] || this.options[t2 + "Url"];
16879        } }), Ve = Ue.extend({ options: { iconUrl: "marker-icon.png", iconRetinaUrl: "marker-icon-2x.png", shadowUrl: "marker-shadow.png", iconSize: [25, 41], iconAnchor: [12, 41], popupAnchor: [1, -34], tooltipAnchor: [16, -28], shadowSize: [41, 41] }, _getIconUrl: function(t2) {
16880          return Ve.imagePath || (Ve.imagePath = this._detectIconPath()), (this.options.imagePath || Ve.imagePath) + Ue.prototype._getIconUrl.call(this, t2);
16881        }, _detectIconPath: function() {
16882          var t2 = ht("div", "leaflet-default-icon-path", document.body), i3 = at(t2, "background-image") || at(t2, "backgroundImage");
16883          return document.body.removeChild(t2), i3 = null === i3 || 0 !== i3.indexOf("url") ? "" : i3.replace(/^url\([\"\']?/, "").replace(/marker-icon\.png[\"\']?\)$/, "");
16884        } }), Ge = Me.extend({ initialize: function(t2) {
16885          this._marker = t2;
16886        }, addHooks: function() {
16887          var t2 = this._marker._icon;
16888          this._draggable || (this._draggable = new ke(t2, t2, true)), this._draggable.on({ dragstart: this._onDragStart, drag: this._onDrag, dragend: this._onDragEnd }, this).enable(), pt(t2, "leaflet-marker-draggable");
16889        }, removeHooks: function() {
16890          this._draggable.off({ dragstart: this._onDragStart, drag: this._onDrag, dragend: this._onDragEnd }, this).disable(), this._marker._icon && mt(this._marker._icon, "leaflet-marker-draggable");
16891        }, moved: function() {
16892          return this._draggable && this._draggable._moved;
16893        }, _onDragStart: function() {
16894          this._oldLatLng = this._marker.getLatLng(), this._marker.closePopup().fire("movestart").fire("dragstart");
16895        }, _onDrag: function(t2) {
16896          var i3 = this._marker, e2 = i3._shadow, n2 = Pt(i3._icon), o2 = i3._map.layerPointToLatLng(n2);
16897          e2 && Lt(e2, n2), i3._latlng = o2, t2.latlng = o2, t2.oldLatLng = this._oldLatLng, i3.fire("move", t2).fire("drag", t2);
16898        }, _onDragEnd: function(t2) {
16899          delete this._oldLatLng, this._marker.fire("moveend").fire("dragend", t2);
16900        } }), qe = We.extend({ options: { icon: new Ve(), interactive: true, draggable: false, keyboard: true, title: "", alt: "", zIndexOffset: 0, opacity: 1, riseOnHover: false, riseOffset: 250, pane: "markerPane", bubblingMouseEvents: false }, initialize: function(t2, i3) {
16901          l(this, i3), this._latlng = C(t2);
16902        }, onAdd: function(t2) {
16903          this._zoomAnimated = this._zoomAnimated && t2.options.markerZoomAnimation, this._zoomAnimated && t2.on("zoomanim", this._animateZoom, this), this._initIcon(), this.update();
16904        }, onRemove: function(t2) {
16905          this.dragging && this.dragging.enabled() && (this.options.draggable = true, this.dragging.removeHooks()), delete this.dragging, this._zoomAnimated && t2.off("zoomanim", this._animateZoom, this), this._removeIcon(), this._removeShadow();
16906        }, getEvents: function() {
16907          return { zoom: this.update, viewreset: this.update };
16908        }, getLatLng: function() {
16909          return this._latlng;
16910        }, setLatLng: function(t2) {
16911          var i3 = this._latlng;
16912          return this._latlng = C(t2), this.update(), this.fire("move", { oldLatLng: i3, latlng: this._latlng });
16913        }, setZIndexOffset: function(t2) {
16914          return this.options.zIndexOffset = t2, this.update();
16915        }, setIcon: function(t2) {
16916          return this.options.icon = t2, this._map && (this._initIcon(), this.update()), this._popup && this.bindPopup(this._popup, this._popup.options), this;
16917        }, getElement: function() {
16918          return this._icon;
16919        }, update: function() {
16920          if (this._icon) {
16921            var t2 = this._map.latLngToLayerPoint(this._latlng).round();
16922            this._setPos(t2);
16923          }
16924          return this;
16925        }, _initIcon: function() {
16926          var t2 = this.options, i3 = "leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide"), e2 = t2.icon.createIcon(this._icon), n2 = false;
16927          e2 !== this._icon && (this._icon && this._removeIcon(), n2 = true, t2.title && (e2.title = t2.title), t2.alt && (e2.alt = t2.alt)), pt(e2, i3), t2.keyboard && (e2.tabIndex = "0"), this._icon = e2, t2.riseOnHover && this.on({ mouseover: this._bringToFront, mouseout: this._resetZIndex });
16928          var o2 = t2.icon.createShadow(this._shadow), s2 = false;
16929          o2 !== this._shadow && (this._removeShadow(), s2 = true), o2 && (pt(o2, i3), o2.alt = ""), this._shadow = o2, t2.opacity < 1 && this._updateOpacity(), n2 && this.getPane().appendChild(this._icon), this._initInteraction(), o2 && s2 && this.getPane("shadowPane").appendChild(this._shadow);
16930        }, _removeIcon: function() {
16931          this.options.riseOnHover && this.off({ mouseover: this._bringToFront, mouseout: this._resetZIndex }), ut(this._icon), this.removeInteractiveTarget(this._icon), this._icon = null;
16932        }, _removeShadow: function() {
16933          this._shadow && ut(this._shadow), this._shadow = null;
16934        }, _setPos: function(t2) {
16935          Lt(this._icon, t2), this._shadow && Lt(this._shadow, t2), this._zIndex = t2.y + this.options.zIndexOffset, this._resetZIndex();
16936        }, _updateZIndex: function(t2) {
16937          this._icon.style.zIndex = this._zIndex + t2;
16938        }, _animateZoom: function(t2) {
16939          var i3 = this._map._latLngToNewLayerPoint(this._latlng, t2.zoom, t2.center).round();
16940          this._setPos(i3);
16941        }, _initInteraction: function() {
16942          if (this.options.interactive && (pt(this._icon, "leaflet-interactive"), this.addInteractiveTarget(this._icon), Ge)) {
16943            var t2 = this.options.draggable;
16944            this.dragging && (t2 = this.dragging.enabled(), this.dragging.disable()), this.dragging = new Ge(this), t2 && this.dragging.enable();
16945          }
16946        }, setOpacity: function(t2) {
16947          return this.options.opacity = t2, this._map && this._updateOpacity(), this;
16948        }, _updateOpacity: function() {
16949          var t2 = this.options.opacity;
16950          vt(this._icon, t2), this._shadow && vt(this._shadow, t2);
16951        }, _bringToFront: function() {
16952          this._updateZIndex(this.options.riseOffset);
16953        }, _resetZIndex: function() {
16954          this._updateZIndex(0);
16955        }, _getPopupAnchor: function() {
16956          return this.options.icon.options.popupAnchor || [0, 0];
16957        }, _getTooltipAnchor: function() {
16958          return this.options.icon.options.tooltipAnchor || [0, 0];
16959        } }), Ke = We.extend({ options: { stroke: true, color: "#3388ff", weight: 3, opacity: 1, lineCap: "round", lineJoin: "round", dashArray: null, dashOffset: null, fill: false, fillColor: null, fillOpacity: 0.2, fillRule: "evenodd", interactive: true, bubblingMouseEvents: true }, beforeAdd: function(t2) {
16960          this._renderer = t2.getRenderer(this);
16961        }, onAdd: function() {
16962          this._renderer._initPath(this), this._reset(), this._renderer._addPath(this);
16963        }, onRemove: function() {
16964          this._renderer._removePath(this);
16965        }, redraw: function() {
16966          return this._map && this._renderer._updatePath(this), this;
16967        }, setStyle: function(t2) {
16968          return l(this, t2), this._renderer && this._renderer._updateStyle(this), this;
16969        }, bringToFront: function() {
16970          return this._renderer && this._renderer._bringToFront(this), this;
16971        }, bringToBack: function() {
16972          return this._renderer && this._renderer._bringToBack(this), this;
16973        }, getElement: function() {
16974          return this._path;
16975        }, _reset: function() {
16976          this._project(), this._update();
16977        }, _clickTolerance: function() {
16978          return (this.options.stroke ? this.options.weight / 2 : 0) + (Hi ? 10 : 0);
16979        } }), Ye = Ke.extend({ options: { fill: true, radius: 10 }, initialize: function(t2, i3) {
16980          l(this, i3), this._latlng = C(t2), this._radius = this.options.radius;
16981        }, setLatLng: function(t2) {
16982          return this._latlng = C(t2), this.redraw(), this.fire("move", { latlng: this._latlng });
16983        }, getLatLng: function() {
16984          return this._latlng;
16985        }, setRadius: function(t2) {
16986          return this.options.radius = this._radius = t2, this.redraw();
16987        }, getRadius: function() {
16988          return this._radius;
16989        }, setStyle: function(t2) {
16990          var i3 = t2 && t2.radius || this._radius;
16991          return Ke.prototype.setStyle.call(this, t2), this.setRadius(i3), this;
16992        }, _project: function() {
16993          this._point = this._map.latLngToLayerPoint(this._latlng), this._updateBounds();
16994        }, _updateBounds: function() {
16995          var t2 = this._radius, i3 = this._radiusY || t2, e2 = this._clickTolerance(), n2 = [t2 + e2, i3 + e2];
16996          this._pxBounds = new P(this._point.subtract(n2), this._point.add(n2));
16997        }, _update: function() {
16998          this._map && this._updatePath();
16999        }, _updatePath: function() {
17000          this._renderer._updateCircle(this);
17001        }, _empty: function() {
17002          return this._radius && !this._renderer._bounds.intersects(this._pxBounds);
17003        }, _containsPoint: function(t2) {
17004          return t2.distanceTo(this._point) <= this._radius + this._clickTolerance();
17005        } }), Xe = Ye.extend({ initialize: function(t2, e2, n2) {
17006          if ("number" == typeof e2 && (e2 = i2({}, n2, { radius: e2 })), l(this, e2), this._latlng = C(t2), isNaN(this.options.radius))
17007            throw new Error("Circle radius cannot be NaN");
17008          this._mRadius = this.options.radius;
17009        }, setRadius: function(t2) {
17010          return this._mRadius = t2, this.redraw();
17011        }, getRadius: function() {
17012          return this._mRadius;
17013        }, getBounds: function() {
17014          var t2 = [this._radius, this._radiusY || this._radius];
17015          return new T(this._map.layerPointToLatLng(this._point.subtract(t2)), this._map.layerPointToLatLng(this._point.add(t2)));
17016        }, setStyle: Ke.prototype.setStyle, _project: function() {
17017          var t2 = this._latlng.lng, i3 = this._latlng.lat, e2 = this._map, n2 = e2.options.crs;
17018          if (n2.distance === ci.distance) {
17019            var o2 = Math.PI / 180, s2 = this._mRadius / ci.R / o2, r2 = e2.project([i3 + s2, t2]), a2 = e2.project([i3 - s2, t2]), h2 = r2.add(a2).divideBy(2), u2 = e2.unproject(h2).lat, l2 = Math.acos((Math.cos(s2 * o2) - Math.sin(i3 * o2) * Math.sin(u2 * o2)) / (Math.cos(i3 * o2) * Math.cos(u2 * o2))) / o2;
17020            (isNaN(l2) || 0 === l2) && (l2 = s2 / Math.cos(Math.PI / 180 * i3)), this._point = h2.subtract(e2.getPixelOrigin()), this._radius = isNaN(l2) ? 0 : Math.max(Math.round(h2.x - e2.project([u2, t2 - l2]).x), 1), this._radiusY = Math.max(Math.round(h2.y - r2.y), 1);
17021          } else {
17022            var c2 = n2.unproject(n2.project(this._latlng).subtract([this._mRadius, 0]));
17023            this._point = e2.latLngToLayerPoint(this._latlng), this._radius = this._point.x - e2.latLngToLayerPoint(c2).x;
17024          }
17025          this._updateBounds();
17026        } }), Je = Ke.extend({ options: { smoothFactor: 1, noClip: false }, initialize: function(t2, i3) {
17027          l(this, i3), this._setLatLngs(t2);
17028        }, getLatLngs: function() {
17029          return this._latlngs;
17030        }, setLatLngs: function(t2) {
17031          return this._setLatLngs(t2), this.redraw();
17032        }, isEmpty: function() {
17033          return !this._latlngs.length;
17034        }, closestLayerPoint: function(t2) {
17035          for (var i3, e2, n2 = 1 / 0, o2 = null, s2 = Rt, r2 = 0, a2 = this._parts.length; r2 < a2; r2++)
17036            for (var h2 = this._parts[r2], u2 = 1, l2 = h2.length; u2 < l2; u2++) {
17037              var c2 = s2(t2, i3 = h2[u2 - 1], e2 = h2[u2], true);
17038              c2 < n2 && (n2 = c2, o2 = s2(t2, i3, e2));
17039            }
17040          return o2 && (o2.distance = Math.sqrt(n2)), o2;
17041        }, getCenter: function() {
17042          if (!this._map)
17043            throw new Error("Must add layer to map before using getCenter()");
17044          var t2, i3, e2, n2, o2, s2, r2, a2 = this._rings[0], h2 = a2.length;
17045          if (!h2)
17046            return null;
17047          for (t2 = 0, i3 = 0; t2 < h2 - 1; t2++)
17048            i3 += a2[t2].distanceTo(a2[t2 + 1]) / 2;
17049          if (0 === i3)
17050            return this._map.layerPointToLatLng(a2[0]);
17051          for (t2 = 0, n2 = 0; t2 < h2 - 1; t2++)
17052            if (o2 = a2[t2], s2 = a2[t2 + 1], e2 = o2.distanceTo(s2), (n2 += e2) > i3)
17053              return r2 = (n2 - i3) / e2, this._map.layerPointToLatLng([s2.x - r2 * (s2.x - o2.x), s2.y - r2 * (s2.y - o2.y)]);
17054        }, getBounds: function() {
17055          return this._bounds;
17056        }, addLatLng: function(t2, i3) {
17057          return i3 = i3 || this._defaultShape(), t2 = C(t2), i3.push(t2), this._bounds.extend(t2), this.redraw();
17058        }, _setLatLngs: function(t2) {
17059          this._bounds = new T(), this._latlngs = this._convertLatLngs(t2);
17060        }, _defaultShape: function() {
17061          return Dt(this._latlngs) ? this._latlngs : this._latlngs[0];
17062        }, _convertLatLngs: function(t2) {
17063          for (var i3 = [], e2 = Dt(t2), n2 = 0, o2 = t2.length; n2 < o2; n2++)
17064            e2 ? (i3[n2] = C(t2[n2]), this._bounds.extend(i3[n2])) : i3[n2] = this._convertLatLngs(t2[n2]);
17065          return i3;
17066        }, _project: function() {
17067          var t2 = new P();
17068          this._rings = [], this._projectLatlngs(this._latlngs, this._rings, t2);
17069          var i3 = this._clickTolerance(), e2 = new x(i3, i3);
17070          this._bounds.isValid() && t2.isValid() && (t2.min._subtract(e2), t2.max._add(e2), this._pxBounds = t2);
17071        }, _projectLatlngs: function(t2, i3, e2) {
17072          var n2, o2, s2 = t2[0] instanceof M, r2 = t2.length;
17073          if (s2) {
17074            for (o2 = [], n2 = 0; n2 < r2; n2++)
17075              o2[n2] = this._map.latLngToLayerPoint(t2[n2]), e2.extend(o2[n2]);
17076            i3.push(o2);
17077          } else
17078            for (n2 = 0; n2 < r2; n2++)
17079              this._projectLatlngs(t2[n2], i3, e2);
17080        }, _clipPoints: function() {
17081          var t2 = this._renderer._bounds;
17082          if (this._parts = [], this._pxBounds && this._pxBounds.intersects(t2))
17083            if (this.options.noClip)
17084              this._parts = this._rings;
17085            else {
17086              var i3, e2, n2, o2, s2, r2, a2, h2 = this._parts;
17087              for (i3 = 0, n2 = 0, o2 = this._rings.length; i3 < o2; i3++)
17088                for (e2 = 0, s2 = (a2 = this._rings[i3]).length; e2 < s2 - 1; e2++)
17089                  (r2 = Bt(a2[e2], a2[e2 + 1], t2, e2, true)) && (h2[n2] = h2[n2] || [], h2[n2].push(r2[0]), r2[1] === a2[e2 + 1] && e2 !== s2 - 2 || (h2[n2].push(r2[1]), n2++));
17090            }
17091        }, _simplifyPoints: function() {
17092          for (var t2 = this._parts, i3 = this.options.smoothFactor, e2 = 0, n2 = t2.length; e2 < n2; e2++)
17093            t2[e2] = Ct(t2[e2], i3);
17094        }, _update: function() {
17095          this._map && (this._clipPoints(), this._simplifyPoints(), this._updatePath());
17096        }, _updatePath: function() {
17097          this._renderer._updatePoly(this);
17098        }, _containsPoint: function(t2, i3) {
17099          var e2, n2, o2, s2, r2, a2, h2 = this._clickTolerance();
17100          if (!this._pxBounds || !this._pxBounds.contains(t2))
17101            return false;
17102          for (e2 = 0, s2 = this._parts.length; e2 < s2; e2++)
17103            for (n2 = 0, o2 = (r2 = (a2 = this._parts[e2]).length) - 1; n2 < r2; o2 = n2++)
17104              if ((i3 || 0 !== n2) && Zt(t2, a2[o2], a2[n2]) <= h2)
17105                return true;
17106          return false;
17107        } });
17108        Je._flat = Nt;
17109        var $e = Je.extend({ options: { fill: true }, isEmpty: function() {
17110          return !this._latlngs.length || !this._latlngs[0].length;
17111        }, getCenter: function() {
17112          if (!this._map)
17113            throw new Error("Must add layer to map before using getCenter()");
17114          var t2, i3, e2, n2, o2, s2, r2, a2, h2, u2 = this._rings[0], l2 = u2.length;
17115          if (!l2)
17116            return null;
17117          for (s2 = r2 = a2 = 0, t2 = 0, i3 = l2 - 1; t2 < l2; i3 = t2++)
17118            e2 = u2[t2], n2 = u2[i3], o2 = e2.y * n2.x - n2.y * e2.x, r2 += (e2.x + n2.x) * o2, a2 += (e2.y + n2.y) * o2, s2 += 3 * o2;
17119          return h2 = 0 === s2 ? u2[0] : [r2 / s2, a2 / s2], this._map.layerPointToLatLng(h2);
17120        }, _convertLatLngs: function(t2) {
17121          var i3 = Je.prototype._convertLatLngs.call(this, t2), e2 = i3.length;
17122          return e2 >= 2 && i3[0] instanceof M && i3[0].equals(i3[e2 - 1]) && i3.pop(), i3;
17123        }, _setLatLngs: function(t2) {
17124          Je.prototype._setLatLngs.call(this, t2), Dt(this._latlngs) && (this._latlngs = [this._latlngs]);
17125        }, _defaultShape: function() {
17126          return Dt(this._latlngs[0]) ? this._latlngs[0] : this._latlngs[0][0];
17127        }, _clipPoints: function() {
17128          var t2 = this._renderer._bounds, i3 = this.options.weight, e2 = new x(i3, i3);
17129          if (t2 = new P(t2.min.subtract(e2), t2.max.add(e2)), this._parts = [], this._pxBounds && this._pxBounds.intersects(t2))
17130            if (this.options.noClip)
17131              this._parts = this._rings;
17132            else
17133              for (var n2, o2 = 0, s2 = this._rings.length; o2 < s2; o2++)
17134                (n2 = jt(this._rings[o2], t2, true)).length && this._parts.push(n2);
17135        }, _updatePath: function() {
17136          this._renderer._updatePoly(this, true);
17137        }, _containsPoint: function(t2) {
17138          var i3, e2, n2, o2, s2, r2, a2, h2, u2 = false;
17139          if (!this._pxBounds.contains(t2))
17140            return false;
17141          for (o2 = 0, a2 = this._parts.length; o2 < a2; o2++)
17142            for (s2 = 0, r2 = (h2 = (i3 = this._parts[o2]).length) - 1; s2 < h2; r2 = s2++)
17143              e2 = i3[s2], n2 = i3[r2], e2.y > t2.y != n2.y > t2.y && t2.x < (n2.x - e2.x) * (t2.y - e2.y) / (n2.y - e2.y) + e2.x && (u2 = !u2);
17144          return u2 || Je.prototype._containsPoint.call(this, t2, true);
17145        } }), Qe = Fe.extend({ initialize: function(t2, i3) {
17146          l(this, i3), this._layers = {}, t2 && this.addData(t2);
17147        }, addData: function(t2) {
17148          var i3, e2, n2, o2 = ei(t2) ? t2 : t2.features;
17149          if (o2) {
17150            for (i3 = 0, e2 = o2.length; i3 < e2; i3++)
17151              ((n2 = o2[i3]).geometries || n2.geometry || n2.features || n2.coordinates) && this.addData(n2);
17152            return this;
17153          }
17154          var s2 = this.options;
17155          if (s2.filter && !s2.filter(t2))
17156            return this;
17157          var r2 = Wt(t2, s2);
17158          return r2 ? (r2.feature = qt(t2), r2.defaultOptions = r2.options, this.resetStyle(r2), s2.onEachFeature && s2.onEachFeature(t2, r2), this.addLayer(r2)) : this;
17159        }, resetStyle: function(t2) {
17160          return t2.options = i2({}, t2.defaultOptions), this._setLayerStyle(t2, this.options.style), this;
17161        }, setStyle: function(t2) {
17162          return this.eachLayer(function(i3) {
17163            this._setLayerStyle(i3, t2);
17164          }, this);
17165        }, _setLayerStyle: function(t2, i3) {
17166          "function" == typeof i3 && (i3 = i3(t2.feature)), t2.setStyle && t2.setStyle(i3);
17167        } }), tn = { toGeoJSON: function(t2) {
17168          return Gt(this, { type: "Point", coordinates: Ut(this.getLatLng(), t2) });
17169        } };
17170        qe.include(tn), Xe.include(tn), Ye.include(tn), Je.include({ toGeoJSON: function(t2) {
17171          var i3 = !Dt(this._latlngs), e2 = Vt(this._latlngs, i3 ? 1 : 0, false, t2);
17172          return Gt(this, { type: (i3 ? "Multi" : "") + "LineString", coordinates: e2 });
17173        } }), $e.include({ toGeoJSON: function(t2) {
17174          var i3 = !Dt(this._latlngs), e2 = i3 && !Dt(this._latlngs[0]), n2 = Vt(this._latlngs, e2 ? 2 : i3 ? 1 : 0, true, t2);
17175          return i3 || (n2 = [n2]), Gt(this, { type: (e2 ? "Multi" : "") + "Polygon", coordinates: n2 });
17176        } }), He.include({ toMultiPoint: function(t2) {
17177          var i3 = [];
17178          return this.eachLayer(function(e2) {
17179            i3.push(e2.toGeoJSON(t2).geometry.coordinates);
17180          }), Gt(this, { type: "MultiPoint", coordinates: i3 });
17181        }, toGeoJSON: function(t2) {
17182          var i3 = this.feature && this.feature.geometry && this.feature.geometry.type;
17183          if ("MultiPoint" === i3)
17184            return this.toMultiPoint(t2);
17185          var e2 = "GeometryCollection" === i3, n2 = [];
17186          return this.eachLayer(function(i4) {
17187            if (i4.toGeoJSON) {
17188              var o2 = i4.toGeoJSON(t2);
17189              if (e2)
17190                n2.push(o2.geometry);
17191              else {
17192                var s2 = qt(o2);
17193                "FeatureCollection" === s2.type ? n2.push.apply(n2, s2.features) : n2.push(s2);
17194              }
17195            }
17196          }), e2 ? Gt(this, { geometries: n2, type: "GeometryCollection" }) : { type: "FeatureCollection", features: n2 };
17197        } });
17198        var en = Kt, nn = We.extend({ options: { opacity: 1, alt: "", interactive: false, crossOrigin: false, errorOverlayUrl: "", zIndex: 1, className: "" }, initialize: function(t2, i3, e2) {
17199          this._url = t2, this._bounds = z(i3), l(this, e2);
17200        }, onAdd: function() {
17201          this._image || (this._initImage(), this.options.opacity < 1 && this._updateOpacity()), this.options.interactive && (pt(this._image, "leaflet-interactive"), this.addInteractiveTarget(this._image)), this.getPane().appendChild(this._image), this._reset();
17202        }, onRemove: function() {
17203          ut(this._image), this.options.interactive && this.removeInteractiveTarget(this._image);
17204        }, setOpacity: function(t2) {
17205          return this.options.opacity = t2, this._image && this._updateOpacity(), this;
17206        }, setStyle: function(t2) {
17207          return t2.opacity && this.setOpacity(t2.opacity), this;
17208        }, bringToFront: function() {
17209          return this._map && ct(this._image), this;
17210        }, bringToBack: function() {
17211          return this._map && _t(this._image), this;
17212        }, setUrl: function(t2) {
17213          return this._url = t2, this._image && (this._image.src = t2), this;
17214        }, setBounds: function(t2) {
17215          return this._bounds = z(t2), this._map && this._reset(), this;
17216        }, getEvents: function() {
17217          var t2 = { zoom: this._reset, viewreset: this._reset };
17218          return this._zoomAnimated && (t2.zoomanim = this._animateZoom), t2;
17219        }, setZIndex: function(t2) {
17220          return this.options.zIndex = t2, this._updateZIndex(), this;
17221        }, getBounds: function() {
17222          return this._bounds;
17223        }, getElement: function() {
17224          return this._image;
17225        }, _initImage: function() {
17226          var t2 = this._image = ht("img", "leaflet-image-layer " + (this._zoomAnimated ? "leaflet-zoom-animated" : "") + (this.options.className || ""));
17227          t2.onselectstart = r, t2.onmousemove = r, t2.onload = e(this.fire, this, "load"), t2.onerror = e(this._overlayOnError, this, "error"), this.options.crossOrigin && (t2.crossOrigin = ""), this.options.zIndex && this._updateZIndex(), t2.src = this._url, t2.alt = this.options.alt;
17228        }, _animateZoom: function(t2) {
17229          var i3 = this._map.getZoomScale(t2.zoom), e2 = this._map._latLngBoundsToNewLayerBounds(this._bounds, t2.zoom, t2.center).min;
17230          wt(this._image, e2, i3);
17231        }, _reset: function() {
17232          var t2 = this._image, i3 = new P(this._map.latLngToLayerPoint(this._bounds.getNorthWest()), this._map.latLngToLayerPoint(this._bounds.getSouthEast())), e2 = i3.getSize();
17233          Lt(t2, i3.min), t2.style.width = e2.x + "px", t2.style.height = e2.y + "px";
17234        }, _updateOpacity: function() {
17235          vt(this._image, this.options.opacity);
17236        }, _updateZIndex: function() {
17237          this._image && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this._image.style.zIndex = this.options.zIndex);
17238        }, _overlayOnError: function() {
17239          this.fire("error");
17240          var t2 = this.options.errorOverlayUrl;
17241          t2 && this._url !== t2 && (this._url = t2, this._image.src = t2);
17242        } }), on2 = nn.extend({ options: { autoplay: true, loop: true }, _initImage: function() {
17243          var t2 = "VIDEO" === this._url.tagName, i3 = this._image = t2 ? this._url : ht("video");
17244          if (i3.class = i3.class || "", i3.class += "leaflet-image-layer " + (this._zoomAnimated ? "leaflet-zoom-animated" : ""), i3.onselectstart = r, i3.onmousemove = r, i3.onloadeddata = e(this.fire, this, "load"), !t2) {
17245            ei(this._url) || (this._url = [this._url]), i3.autoplay = !!this.options.autoplay, i3.loop = !!this.options.loop;
17246            for (var n2 = 0; n2 < this._url.length; n2++) {
17247              var o2 = ht("source");
17248              o2.src = this._url[n2], i3.appendChild(o2);
17249            }
17250          }
17251        } }), sn = We.extend({ options: { offset: [0, 7], className: "", pane: "popupPane" }, initialize: function(t2, i3) {
17252          l(this, t2), this._source = i3;
17253        }, onAdd: function(t2) {
17254          this._zoomAnimated = t2._zoomAnimated, this._container || this._initLayout(), t2._fadeAnimated && vt(this._container, 0), clearTimeout(this._removeTimeout), this.getPane().appendChild(this._container), this.update(), t2._fadeAnimated && vt(this._container, 1), this.bringToFront();
17255        }, onRemove: function(t2) {
17256          t2._fadeAnimated ? (vt(this._container, 0), this._removeTimeout = setTimeout(e(ut, void 0, this._container), 200)) : ut(this._container);
17257        }, getLatLng: function() {
17258          return this._latlng;
17259        }, setLatLng: function(t2) {
17260          return this._latlng = C(t2), this._map && (this._updatePosition(), this._adjustPan()), this;
17261        }, getContent: function() {
17262          return this._content;
17263        }, setContent: function(t2) {
17264          return this._content = t2, this.update(), this;
17265        }, getElement: function() {
17266          return this._container;
17267        }, update: function() {
17268          this._map && (this._container.style.visibility = "hidden", this._updateContent(), this._updateLayout(), this._updatePosition(), this._container.style.visibility = "", this._adjustPan());
17269        }, getEvents: function() {
17270          var t2 = { zoom: this._updatePosition, viewreset: this._updatePosition };
17271          return this._zoomAnimated && (t2.zoomanim = this._animateZoom), t2;
17272        }, isOpen: function() {
17273          return !!this._map && this._map.hasLayer(this);
17274        }, bringToFront: function() {
17275          return this._map && ct(this._container), this;
17276        }, bringToBack: function() {
17277          return this._map && _t(this._container), this;
17278        }, _updateContent: function() {
17279          if (this._content) {
17280            var t2 = this._contentNode, i3 = "function" == typeof this._content ? this._content(this._source || this) : this._content;
17281            if ("string" == typeof i3)
17282              t2.innerHTML = i3;
17283            else {
17284              for (; t2.hasChildNodes(); )
17285                t2.removeChild(t2.firstChild);
17286              t2.appendChild(i3);
17287            }
17288            this.fire("contentupdate");
17289          }
17290        }, _updatePosition: function() {
17291          if (this._map) {
17292            var t2 = this._map.latLngToLayerPoint(this._latlng), i3 = w(this.options.offset), e2 = this._getAnchor();
17293            this._zoomAnimated ? Lt(this._container, t2.add(e2)) : i3 = i3.add(t2).add(e2);
17294            var n2 = this._containerBottom = -i3.y, o2 = this._containerLeft = -Math.round(this._containerWidth / 2) + i3.x;
17295            this._container.style.bottom = n2 + "px", this._container.style.left = o2 + "px";
17296          }
17297        }, _getAnchor: function() {
17298          return [0, 0];
17299        } }), rn = sn.extend({ options: { maxWidth: 300, minWidth: 50, maxHeight: null, autoPan: true, autoPanPaddingTopLeft: null, autoPanPaddingBottomRight: null, autoPanPadding: [5, 5], keepInView: false, closeButton: true, autoClose: true, className: "" }, openOn: function(t2) {
17300          return t2.openPopup(this), this;
17301        }, onAdd: function(t2) {
17302          sn.prototype.onAdd.call(this, t2), t2.fire("popupopen", { popup: this }), this._source && (this._source.fire("popupopen", { popup: this }, true), this._source instanceof Ke || this._source.on("preclick", Y));
17303        }, onRemove: function(t2) {
17304          sn.prototype.onRemove.call(this, t2), t2.fire("popupclose", { popup: this }), this._source && (this._source.fire("popupclose", { popup: this }, true), this._source instanceof Ke || this._source.off("preclick", Y));
17305        }, getEvents: function() {
17306          var t2 = sn.prototype.getEvents.call(this);
17307          return (void 0 !== this.options.closeOnClick ? this.options.closeOnClick : this._map.options.closePopupOnClick) && (t2.preclick = this._close), this.options.keepInView && (t2.moveend = this._adjustPan), t2;
17308        }, _close: function() {
17309          this._map && this._map.closePopup(this);
17310        }, _initLayout: function() {
17311          var t2 = "leaflet-popup", i3 = this._container = ht("div", t2 + " " + (this.options.className || "") + " leaflet-zoom-animated"), e2 = this._wrapper = ht("div", t2 + "-content-wrapper", i3);
17312          if (this._contentNode = ht("div", t2 + "-content", e2), J(e2), X(this._contentNode), V(e2, "contextmenu", Y), this._tipContainer = ht("div", t2 + "-tip-container", i3), this._tip = ht("div", t2 + "-tip", this._tipContainer), this.options.closeButton) {
17313            var n2 = this._closeButton = ht("a", t2 + "-close-button", i3);
17314            n2.href = "#close", n2.innerHTML = "&#215;", V(n2, "click", this._onCloseButtonClick, this);
17315          }
17316        }, _updateLayout: function() {
17317          var t2 = this._contentNode, i3 = t2.style;
17318          i3.width = "", i3.whiteSpace = "nowrap";
17319          var e2 = t2.offsetWidth;
17320          e2 = Math.min(e2, this.options.maxWidth), e2 = Math.max(e2, this.options.minWidth), i3.width = e2 + 1 + "px", i3.whiteSpace = "", i3.height = "";
17321          var n2 = t2.offsetHeight, o2 = this.options.maxHeight;
17322          o2 && n2 > o2 ? (i3.height = o2 + "px", pt(t2, "leaflet-popup-scrolled")) : mt(t2, "leaflet-popup-scrolled"), this._containerWidth = this._container.offsetWidth;
17323        }, _animateZoom: function(t2) {
17324          var i3 = this._map._latLngToNewLayerPoint(this._latlng, t2.zoom, t2.center), e2 = this._getAnchor();
17325          Lt(this._container, i3.add(e2));
17326        }, _adjustPan: function() {
17327          if (!(!this.options.autoPan || this._map._panAnim && this._map._panAnim._inProgress)) {
17328            var t2 = this._map, i3 = parseInt(at(this._container, "marginBottom"), 10) || 0, e2 = this._container.offsetHeight + i3, n2 = this._containerWidth, o2 = new x(this._containerLeft, -e2 - this._containerBottom);
17329            o2._add(Pt(this._container));
17330            var s2 = t2.layerPointToContainerPoint(o2), r2 = w(this.options.autoPanPadding), a2 = w(this.options.autoPanPaddingTopLeft || r2), h2 = w(this.options.autoPanPaddingBottomRight || r2), u2 = t2.getSize(), l2 = 0, c2 = 0;
17331            s2.x + n2 + h2.x > u2.x && (l2 = s2.x + n2 - u2.x + h2.x), s2.x - l2 - a2.x < 0 && (l2 = s2.x - a2.x), s2.y + e2 + h2.y > u2.y && (c2 = s2.y + e2 - u2.y + h2.y), s2.y - c2 - a2.y < 0 && (c2 = s2.y - a2.y), (l2 || c2) && t2.fire("autopanstart").panBy([l2, c2]);
17332          }
17333        }, _onCloseButtonClick: function(t2) {
17334          this._close(), Q(t2);
17335        }, _getAnchor: function() {
17336          return w(this._source && this._source._getPopupAnchor ? this._source._getPopupAnchor() : [0, 0]);
17337        } });
17338        ye.mergeOptions({ closePopupOnClick: true }), ye.include({ openPopup: function(t2, i3, e2) {
17339          return t2 instanceof rn || (t2 = new rn(e2).setContent(t2)), i3 && t2.setLatLng(i3), this.hasLayer(t2) ? this 
17339: (this._popup && this._popup.options.autoClose && this.closePopup(), this._popup = t2, this.addLayer(t2));
17340        }, closePopup: function(t2) {
17341          return t2 && t2 !== this._popup || (t2 = this._popup, this._popup = null), t2 && this.removeLayer(t2), this;
17342        } }), We.include({ bindPopup: function(t2, i3) {
17343          return t2 instanceof rn ? (l(t2, i3), this._popup = t2, t2._source = this) : (this._popup && !i3 || (this._popup = new rn(i3, this)), this._popup.setContent(t2)), this._popupHandlersAdded || (this.on({ click: this._openPopup, keypress: this._onKeyPress, remove: this.closePopup, move: this._movePopup }), this._popupHandlersAdded = true), this;
17344        }, unbindPopup: function() {
17345          return this._popup && (this.off({ click: this._openPopup, keypress: this._onKeyPress, remove: this.closePopup, move: this._movePopup }), this._popupHandlersAdded = false, this._popup = null), this;
17346        }, openPopup: function(t2, i3) {
17347          if (t2 instanceof We || (i3 = t2, t2 = this), t2 instanceof Fe)
17348            for (var e2 in this._layers) {
17349              t2 = this._layers[e2];
17350              break;
17351            }
17352          return i3 || (i3 = t2.getCenter ? t2.getCenter() : t2.getLatLng()), this._popup && this._map && (this._popup._source = t2, this._popup.update(), this._map.openPopup(this._popup, i3)), this;
17353        }, closePopup: function() {
17354          return this._popup && this._popup._close(), this;
17355        }, togglePopup: function(t2) {
17356          return this._popup && (this._popup._map ? this.closePopup() : this.openPopup(t2)), this;
17357        }, isPopupOpen: function() {
17358          return !!this._popup && this._popup.isOpen();
17359        }, setPopupContent: function(t2) {
17360          return this._popup && this._popup.setContent(t2), this;
17361        }, getPopup: function() {
17362          return this._popup;
17363        }, _openPopup: function(t2) {
17364          var i3 = t2.layer || t2.target;
17365          this._popup && this._map && (Q(t2), i3 instanceof Ke ? this.openPopup(t2.layer || t2.target, t2.latlng) : this._map.hasLayer(this._popup) && this._popup._source === i3 ? this.closePopup() : this.openPopup(i3, t2.latlng));
17366        }, _movePopup: function(t2) {
17367          this._popup.setLatLng(t2.latlng);
17368        }, _onKeyPress: function(t2) {
17369          13 === t2.originalEvent.keyCode && this._openPopup(t2);
17370        } });
17371        var an = sn.extend({ options: { pane: "tooltipPane", offset: [0, 0], direction: "auto", permanent: false, sticky: false, interactive: false, opacity: 0.9 }, onAdd: function(t2) {
17372          sn.prototype.onAdd.call(this, t2), this.setOpacity(this.options.opacity), t2.fire("tooltipopen", { tooltip: this }), this._source && this._source.fire("tooltipopen", { tooltip: this }, true);
17373        }, onRemove: function(t2) {
17374          sn.prototype.onRemove.call(this, t2), t2.fire("tooltipclose", { tooltip: this }), this._source && this._source.fire("tooltipclose", { tooltip: this }, true);
17375        }, getEvents: function() {
17376          var t2 = sn.prototype.getEvents.call(this);
17377          return Hi && !this.options.permanent && (t2.preclick = this._close), t2;
17378        }, _close: function() {
17379          this._map && this._map.closeTooltip(this);
17380        }, _initLayout: function() {
17381          var t2 = "leaflet-tooltip " + (this.options.className || "") + " leaflet-zoom-" + (this._zoomAnimated ? "animated" : "hide");
17382          this._contentNode = this._container = ht("div", t2);
17383        }, _updateLayout: function() {
17384        }, _adjustPan: function() {
17385        }, _setPosition: function(t2) {
17386          var i3 = this._map, e2 = this._container, n2 = i3.latLngToContainerPoint(i3.getCenter()), o2 = i3.layerPointToContainerPoint(t2), s2 = this.options.direction, r2 = e2.offsetWidth, a2 = e2.offsetHeight, h2 = w(this.options.offset), u2 = this._getAnchor();
17387          "top" === s2 ? t2 = t2.add(w(-r2 / 2 + h2.x, -a2 + h2.y + u2.y, true)) : "bottom" === s2 ? t2 = t2.subtract(w(r2 / 2 - h2.x, -h2.y, true)) : "center" === s2 ? t2 = t2.subtract(w(r2 / 2 + h2.x, a2 / 2 - u2.y + h2.y, true)) : "right" === s2 || "auto" === s2 && o2.x < n2.x ? (s2 = "right", t2 = t2.add(w(h2.x + u2.x, u2.y - a2 / 2 + h2.y, true))) : (s2 = "left", t2 = t2.subtract(w(r2 + u2.x - h2.x, a2 / 2 - u2.y - h2.y, true))), mt(e2, "leaflet-tooltip-right"), mt(e2, "leaflet-tooltip-left"), mt(e2, "leaflet-tooltip-top"), mt(e2, "leaflet-tooltip-bottom"), pt(e2, "leaflet-tooltip-" + s2), Lt(e2, t2);
17388        }, _updatePosition: function() {
17389          var t2 = this._map.latLngToLayerPoint(this._latlng);
17390          this._setPosition(t2);
17391        }, setOpacity: function(t2) {
17392          this.options.opacity = t2, this._container && vt(this._container, t2);
17393        }, _animateZoom: function(t2) {
17394          var i3 = this._map._latLngToNewLayerPoint(this._latlng, t2.zoom, t2.center);
17395          this._setPosition(i3);
17396        }, _getAnchor: function() {
17397          return w(this._source && this._source._getTooltipAnchor && !this.options.sticky ? this._source._getTooltipAnchor() : [0, 0]);
17398        } });
17399        ye.include({ openTooltip: function(t2, i3, e2) {
17400          return t2 instanceof an || (t2 = new an(e2).setContent(t2)), i3 && t2.setLatLng(i3), this.hasLayer(t2) ? this 
17400: this.addLayer(t2);
17401        }, closeTooltip: function(t2) {
17402          return t2 && this.removeLayer(t2), this;
17403        } }), We.include({ bindTooltip: function(t2, i3) {
17404          return t2 instanceof an ? (l(t2, i3), this._tooltip = t2, t2._source = this) : (this._tooltip && !i3 || (this._tooltip = new an(i3, this)), this._tooltip.setContent(t2)), this._initTooltipInteractions(), this._tooltip.options.permanent && this._map && this._map.hasLayer(this) && this.openTooltip(), this;
17405        }, unbindTooltip: function() {
17406          return this._tooltip && (this._initTooltipInteractions(true), this.closeTooltip(), this._tooltip = null), this;
17407        }, _initTooltipInteractions: function(t2) {
17408          if (t2 || !this._tooltipHandlersAdded) {
17409            var i3 = t2 ? "off" : "on", e2 = { remove: this.closeTooltip, move: this._moveTooltip };
17410            this._tooltip.options.permanent ? e2.add = this._openTooltip : (e2.mouseover = this._openTooltip, e2.mouseout = this.closeTooltip, this._tooltip.options.sticky && (e2.mousemove = this._moveTooltip), Hi && (e2.click = this._openTooltip)), this[i3](e2), this._tooltipHandlersAdded = !t2;
17411          }
17412        }, openTooltip: function(t2, i3) {
17413          if (t2 instanceof We || (i3 = t2, t2 = this), t2 instanceof Fe)
17414            for (var e2 in this._layers) {
17415              t2 = this._layers[e2];
17416              break;
17417            }
17418          return i3 || (i3 = t2.getCenter ? t2.getCenter() : t2.getLatLng()), this._tooltip && this._map && (this._tooltip._source = t2, this._tooltip.update(), this._map.openTooltip(this._tooltip, i3), this._tooltip.options.interactive && this._tooltip._container && (pt(this._tooltip._container, "leaflet-clickable"), this.addInteractiveTarget(this._tooltip._container))), this;
17419        }, closeTooltip: function() {
17420          return this._tooltip && (this._tooltip._close(), this._tooltip.options.interactive && this._tooltip._container && (mt(this._tooltip._container, "leaflet-clickable"), this.removeInteractiveTarget(this._tooltip._container))), this;
17421        }, toggleTooltip: function(t2) {
17422          return this._tooltip && (this._tooltip._map ? this.closeTooltip() : this.openTooltip(t2)), this;
17423        }, isTooltipOpen: function() {
17424          return this._tooltip.isOpen();
17425        }, setTooltipContent: function(t2) {
17426          return this._tooltip && this._tooltip.setContent(t2), this;
17427        }, getTooltip: function() {
17428          return this._tooltip;
17429        }, _openTooltip: function(t2) {
17430          var i3 = t2.layer || t2.target;
17431          this._tooltip && this._map && this.openTooltip(i3, this._tooltip.options.sticky ? t2.latlng : void 0);
17432        }, _moveTooltip: function(t2) {
17433          var i3, e2, n2 = t2.latlng;
17434          this._tooltip.options.sticky && t2.originalEvent && (i3 = this._map.mouseEventToContainerPoint(t2.originalEvent), e2 = this._map.containerPointToLayerPoint(i3), n2 = this._map.layerPointToLatLng(e2)), this._tooltip.setLatLng(n2);
17435        } });
17436        var hn = Ue.extend({ options: { iconSize: [12, 12], html: false, bgPos: null, className: "leaflet-div-icon" }, createIcon: function(t2) {
17437          var i3 = t2 && "DIV" === t2.tagName ? t2 : document.createElement("div"), e2 = this.options;
17438          if (i3.innerHTML = false !== e2.html ? e2.html : "", e2.bgPos) {
17439            var n2 = w(e2.bgPos);
17440            i3.style.backgroundPosition = -n2.x + "px " + -n2.y + "px";
17441          }
17442          return this._setIconStyles(i3, "icon"), i3;
17443        }, createShadow: function() {
17444          return null;
17445        } });
17446        Ue.Default = Ve;
17447        var un = We.extend({ options: { tileSize: 256, opacity: 1, updateWhenIdle: Ri, updateWhenZooming: true, updateInterval: 200, zIndex: 1, bounds: null, minZoom: 0, maxZoom: void 0, maxNativeZoom: void 0, minNativeZoom: void 0, noWrap: false, pane: "tilePane", className: "", keepBuffer: 2 }, initialize: function(t2) {
17448          l(this, t2);
17449        }, onAdd: function() {
17450          this._initContainer(), this._levels = {}, this._tiles = {}, this._resetView(), this._update();
17451        }, beforeAdd: function(t2) {
17452          t2._addZoomLimit(this);
17453        }, onRemove: function(t2) {
17454          this._removeAllTiles(), ut(this._container), t2._removeZoomLimit(this), this._container = null, this._tileZoom = null;
17455        }, bringToFront: function() {
17456          return this._map && (ct(this._container), this._setAutoZIndex(Math.max)), this;
17457        }, bringToBack: function() {
17458          return this._map && (_t(this._container), this._setAutoZIndex(Math.min)), this;
17459        }, getContainer: function() {
17460          return this._container;
17461        }, setOpacity: function(t2) {
17462          return this.options.opacity = t2, this._updateOpacity(), this;
17463        }, setZIndex: function(t2) {
17464          return this.options.zIndex = t2, this._updateZIndex(), this;
17465        }, isLoading: function() {
17466          return this._loading;
17467        }, redraw: function() {
17468          return this._map && (this._removeAllTiles(), this._update()), this;
17469        }, getEvents: function() {
17470          var t2 = { viewprereset: this._invalidateAll, viewreset: this._resetView, zoom: this._resetView, moveend: this._onMoveEnd };
17471          return this.options.updateWhenIdle || (this._onMove || (this._onMove = o(this._onMoveEnd, this.options.updateInterval, this)), t2.move = this._onMove), this._zoomAnimated && (t2.zoomanim = this._animateZoom), t2;
17472        }, createTile: function() {
17473          return document.createElement("div");
17474        }, getTileSize: function() {
17475          var t2 = this.options.tileSize;
17476          return t2 instanceof x ? t2 : new x(t2, t2);
17477        }, _updateZIndex: function() {
17478          this._container && void 0 !== this.options.zIndex && null !== this.options.zIndex && (this._container.style.zIndex = this.options.zIndex);
17479        }, _setAutoZIndex: function(t2) {
17480          for (var i3, e2 = this.getPane().children, n2 = -t2(-1 / 0, 1 / 0), o2 = 0, s2 = e2.length; o2 < s2; o2++)
17481            i3 = e2[o2].style.zIndex, e2[o2] !== this._container && i3 && (n2 = t2(n2, +i3));
17482          isFinite(n2) && (this.options.zIndex = n2 + t2(-1, 1), this._updateZIndex());
17483        }, _updateOpacity: function() {
17484          if (this._map && !wi) {
17485            vt(this._container, this.options.opacity);
17486            var t2 = +new Date(), i3 = false, e2 = false;
17487            for (var n2 in this._tiles) {
17488              var o2 = this._tiles[n2];
17489              if (o2.current && o2.loaded) {
17490                var s2 = Math.min(1, (t2 - o2.loaded) / 200);
17491                vt(o2.el, s2), s2 < 1 ? i3 = true : (o2.active ? e2 = true : this._onOpaqueTile(o2), o2.active = true);
17492              }
17493            }
17494            e2 && !this._noPrune && this._pruneTiles(), i3 && (g(this._fadeFrame), this._fadeFrame = f(this._updateOpacity, this));
17495          }
17496        }, _onOpaqueTile: r, _initContainer: function() {
17497          this._container || (this._container = ht("div", "leaflet-layer " + (this.options.className || "")), this._updateZIndex(), this.options.opacity < 1 && this._updateOpacity(), this.getPane().appendChild(this._container));
17498        }, _updateLevels: function() {
17499          var t2 = this._tileZoom, i3 = this.options.maxZoom;
17500          if (void 0 !== t2) {
17501            for (var e2 in this._levels)
17502              this._levels[e2].el.children.length || e2 === t2 ? (this._levels[e2].el.style.zIndex = i3 - Math.abs(t2 - e2), this._onUpdateLevel(e2)) : (ut(this._levels[e2].el), this._removeTilesAtZoom(e2), this._onRemoveLevel(e2), delete this._levels[e2]);
17503            var n2 = this._levels[t2], o2 = this._map;
17504            return n2 || ((n2 = this._levels[t2] = {}).el = ht("div", "leaflet-tile-container leaflet-zoom-animated", this._container), n2.el.style.zIndex = i3, n2.origin = o2.project(o2.unproject(o2.getPixelOrigin()), t2).round(), n2.zoom = t2, this._setZoomTransform(n2, o2.getCenter(), o2.getZoom()), n2.el.offsetWidth, this._onCreateLevel(n2)), this._level = n2, n2;
17505          }
17506        }, _onUpdateLevel: r, _onRemoveLevel: r, _onCreateLevel: r, _pruneTiles: function() {
17507          if (this._map) {
17508            var t2, i3, e2 = this._map.getZoom();
17509            if (e2 > this.options.maxZoom || e2 < this.options.minZoom)
17510              this._removeAllTiles();
17511            else {
17512              for (t2 in this._tiles)
17513                (i3 = this._tiles[t2]).retain = i3.current;
17514              for (t2 in this._tiles)
17515                if ((i3 = this._tiles[t2]).current && !i3.active) {
17516                  var n2 = i3.coords;
17517                  this._retainParent(n2.x, n2.y, n2.z, n2.z - 5) || this._retainChildren(n2.x, n2.y, n2.z, n2.z + 2);
17518                }
17519              for (t2 in this._tiles)
17520                this._tiles[t2].retain || this._removeTile(t2);
17521            }
17522          }
17523        }, _removeTilesAtZoom: function(t2) {
17524          for (var i3 in this._tiles)
17525            this._tiles[i3].coords.z === t2 && this._removeTile(i3);
17526        }, _removeAllTiles: function() {
17527          for (var t2 in this._tiles)
17528            this._removeTile(t2);
17529        }, _invalidateAll: function() {
17530          for (var t2 in this._levels)
17531            ut(this._levels[t2].el), this._onRemoveLevel(t2), delete this._levels[t2];
17532          this._removeAllTiles(), this._tileZoom = null;
17533        }, _retainParent: function(t2, i3, e2, n2) {
17534          var o2 = Math.floor(t2 / 2), s2 = Math.floor(i3 / 2), r2 = e2 - 1, a2 = new x(+o2, +s2);
17535          a2.z = +r2;
17536          var h2 = this._tileCoordsToKey(a2), u2 = this._tiles[h2];
17537          return u2 && u2.active ? (u2.retain = true, true) : (u2 && u2.loaded && (u2.retain = true), r2 > n2 && this._retainParent(o2, s2, r2, n2));
17538        }, _retainChildren: function(t2, i3, e2, n2) {
17539          for (var o2 = 2 * t2; o2 < 2 * t2 + 2; o2++)
17540            for (var s2 = 2 * i3; s2 < 2 * i3 + 2; s2++) {
17541              var r2 = new x(o2, s2);
17542              r2.z = e2 + 1;
17543              var a2 = this._tileCoordsToKey(r2), h2 = this._tiles[a2];
17544              h2 && h2.active ? h2.retain = true : (h2 && h2.loaded && (h2.retain = true), e2 + 1 < n2 && this._retainChildren(o2, s2, e2 + 1, n2));
17545            }
17546        }, _resetView: function(t2) {
17547          var i3 = t2 && (t2.pinch || t2.flyTo);
17548          this._setView(this._map.getCenter(), this._map.getZoom(), i3, i3);
17549        }, _animateZoom: function(t2) {
17550          this._setView(t2.center, t2.zoom, true, t2.noUpdate);
17551        }, _clampZoom: function(t2) {
17552          var i3 = this.options;
17553          return void 0 !== i3.minNativeZoom && t2 < i3.minNativeZoom ? i3.minNativeZoom : void 0 !== i3.maxNativeZoom && i3.maxNativeZoom < t2 ? i3.maxNativeZoom : t2;
17554        }
17554, _setView: function(t2, i3, e2, n2) {
17555          var o2 = this._clampZoom(Math.round(i3));
17556          (void 0 !== this.options.maxZoom && o2 > this.options.maxZoom || void 0 !== this.options.minZoom && o2 < this.options.minZoom) && (o2 = void 0);
17557          var s2 = this.options.updateWhenZooming && o2 !== this._tileZoom;
17558          n2 && !s2 || (this._tileZoom = o2, this._abortLoading && this._abortLoading(), this._updateLevels(), this._resetGrid(), void 0 !== o2 && this._update(t2), e2 || this._pruneTiles(), this._noPrune = !!e2), this._setZoomTransforms(t2, i3);
17559        }, _setZoomTransforms: function(t2, i3) {
17560          for (var e2 in this._levels)
17561            this._setZoomTransform(this._levels[e2], t2, i3);
17562        }, _setZoomTransform: function(t2, i3, e2) {
17563          var n2 = this._map.getZoomScale(e2, t2.zoom), o2 = t2.origin.multiplyBy(n2).subtract(this._map._getNewPixelOrigin(i3, e2)).round();
17564          Oi ? wt(t2.el, o2, n2) : Lt(t2.el, o2);
17565        }, _resetGrid: function() {
17566          var t2 = this._map, i3 = t2.options.crs, e2 = this._tileSize = this.getTileSize(), n2 = this._tileZoom, o2 = this._map.getPixelWorldBounds(this._tileZoom);
17567          o2 && (this._globalTileRange = this._pxBoundsToTileRange(o2)), this._wrapX = i3.wrapLng && !this.options.noWrap && [Math.floor(t2.project([0, i3.wrapLng[0]], n2).x / e2.x), Math.ceil(t2.project([0, i3.wrapLng[1]], n2).x / e2.y)], this._wrapY = i3.wrapLat && !this.options.noWrap && [Math.floor(t2.project([i3.wrapLat[0], 0], n2).y / e2.x), Math.ceil(t2.project([i3.wrapLat[1], 0], n2).y / e2.y)];
17568        }, _onMoveEnd: function() {
17569          this._map && !this._map._animatingZoom && this._update();
17570        }, _getTiledPixelBounds: function(t2) {
17571          var i3 = this._map, e2 = i3._animatingZoom ? Math.max(i3._animateToZoom, i3.getZoom()) : i3.getZoom(), n2 = i3.getZoomScale(e2, this._tileZoom), o2 = i3.project(t2, this._tileZoom).floor(), s2 = i3.getSize().divideBy(2 * n2);
17572          return new P(o2.subtract(s2), o2.add(s2));
17573        }, _update: function(t2) {
17574          var i3 = this._map;
17575          if (i3) {
17576            var e2 = this._clampZoom(i3.getZoom());
17577            if (void 0 === t2 && (t2 = i3.getCenter()), void 0 !== this._tileZoom) {
17578              var n2 = this._getTiledPixelBounds(t2), o2 = this._pxBoundsToTileRange(n2), s2 = o2.getCenter(), r2 = [], a2 = this.options.keepBuffer, h2 = new P(o2.getBottomLeft().subtract([a2, -a2]), o2.getTopRight().add([a2, -a2]));
17579              if (!(isFinite(o2.min.x) && isFinite(o2.min.y) && isFinite(o2.max.x) && isFinite(o2.max.y)))
17580                throw new Error("Attempted to load an infinite number of tiles");
17581              for (var u2 in this._tiles) {
17582                var l2 = this._tiles[u2].coords;
17583                l2.z === this._tileZoom && h2.contains(new x(l2.x, l2.y)) || (this._tiles[u2].current = false);
17584              }
17585              if (Math.abs(e2 - this._tileZoom) > 1)
17586                this._setView(t2, e2);
17587              else {
17588                for (var c2 = o2.min.y; c2 <= o2.max.y; c2++)
17589                  for (var _2 = o2.min.x; _2 <= o2.max.x; _2++) {
17590                    var d2 = new x(_2, c2);
17591                    d2.z = this._tileZoom, this._isValidTile(d2) && (this._tiles[this._tileCoordsToKey(d2)] || r2.push(d2));
17592                  }
17593                if (r2.sort(function(t3, i4) {
17594                  return t3.distanceTo(s2) - i4.distanceTo(s2);
17595                }), 0 !== r2.length) {
17596                  this._loading || (this._loading = true, this.fire("loading"));
17597                  var p2 = document.createDocumentFragment();
17598                  for (_2 = 0; _2 < r2.length; _2++)
17599                    this._addTile(r2[_2], p2);
17600                  this._level.el.appendChild(p2);
17601                }
17602              }
17603            }
17604          }
17605        }, _isValidTile: function(t2) {
17606          var i3 = this._map.options.crs;
17607          if (!i3.infinite) {
17608            var e2 = this._globalTileRange;
17609            if (!i3.wrapLng && (t2.x < e2.min.x || t2.x > e2.max.x) || !i3.wrapLat && (t2.y < e2.min.y || t2.y > e2.max.y))
17610              return false;
17611          }
17612          if (!this.options.bounds)
17613            return true;
17614          var n2 = this._tileCoordsToBounds(t2);
17615          return z(this.options.bounds).overlaps(n2);
17616        }, _keyToBounds: function(t2) {
17617          return this._tileCoordsToBounds(this._keyToTileCoords(t2));
17618        }, _tileCoordsToBounds: function(t2) {
17619          var i3 = this._map, e2 = this.getTileSize(), n2 = t2.scaleBy(e2), o2 = n2.add(e2), s2 = new T(i3.unproject(n2, t2.z), i3.unproject(o2, t2.z));
17620          return this.options.noWrap || i3.wrapLatLngBounds(s2), s2;
17621        }, _tileCoordsToKey: function(t2) {
17622          return t2.x + ":" + t2.y + ":" + t2.z;
17623        }, _keyToTileCoords: function(t2) {
17624          var i3 = t2.split(":"), e2 = new x(+i3[0], +i3[1]);
17625          return e2.z = +i3[2], e2;
17626        }, _removeTile: function(t2) {
17627          var i3 = this._tiles[t2];
17628          i3 && (ut(i3.el), delete this._tiles[t2], this.fire("tileunload", { tile: i3.el, coords: this._keyToTileCoords(t2) }));
17629        }, _initTile: function(t2) {
17630          pt(t2, "leaflet-tile");
17631          var i3 = this.getTileSize();
17632          t2.style.width = i3.x + "px", t2.style.height = i3.y + "px", t2.onselectstart = r, t2.onmousemove = r, wi && this.options.opacity < 1 && vt(t2, this.options.opacity), bi && !Ti && (t2.style.WebkitBackfaceVisibility = "hidden");
17633        }, _addTile: function(t2, i3) {
17634          var n2 = this._getTilePos(t2), o2 = this._tileCoordsToKey(t2), s2 = this.createTile(this._wrapCoords(t2), e(this._tileReady, this, t2));
17635          this._initTile(s2), this.createTile.length < 2 && f(e(this._tileReady, this, t2, null, s2)), Lt(s2, n2), this._tiles[o2] = { el: s2, coords: t2, current: true }, i3.appendChild(s2), this.fire("tileloadstart", { tile: s2, coords: t2 });
17636        }, _tileReady: function(t2, i3, n2) {
17637          if (this._map) {
17638            i3 && this.fire("tileerror", { error: i3, tile: n2, coords: t2 });
17639            var o2 = this._tileCoordsToKey(t2);
17640            (n2 = this._tiles[o2]) && (n2.loaded = +new Date(), this._map._fadeAnimated ? (vt(n2.el, 0), g(this._fadeFrame), this._fadeFrame = f(this._updateOpacity, this)) : (n2.active = true, this._pruneTiles()), i3 || (pt(n2.el, "leaflet-tile-loaded"), this.fire("tileload", { tile: n2.el, coords: t2 })), this._noTilesToLoad() && (this._loading = false, this.fire("load"), wi || !this._map._fadeAnimated ? f(this._pruneTiles, this) : setTimeout(e(this._pruneTiles, this), 250)));
17641          }
17642        }, _getTilePos: function(t2) {
17643          return t2.scaleBy(this.getTileSize()).subtract(this._level.origin);
17644        }, _wrapCoords: function(t2) {
17645          var i3 = new x(this._wrapX ? s(t2.x, this._wrapX) : t2.x, this._wrapY ? s(t2.y, this._wrapY) : t2.y);
17646          return i3.z = t2.z, i3;
17647        }, _pxBoundsToTileRange: function(t2) {
17648          var i3 = this.getTileSize();
17649          return new P(t2.min.unscaleBy(i3).floor(), t2.max.unscaleBy(i3).ceil().subtract([1, 1]));
17650        }, _noTilesToLoad: function() {
17651          for (var t2 in this._tiles)
17652            if (!this._tiles[t2].loaded)
17653              return false;
17654          return true;
17655        } }), ln = un.extend({ options: { minZoom: 0, maxZoom: 18, subdomains: "abc", errorTileUrl: "", zoomOffset: 0, tms: false, zoomReverse: false, detectRetina: false, crossOrigin: false }, initialize: function(t2, i3) {
17656          this._url = t2, (i3 = l(this, i3)).detectRetina && Vi && i3.maxZoom > 0 && (i3.tileSize = Math.floor(i3.tileSize / 2), i3.zoomReverse ? (i3.zoomOffset--, i3.minZoom++) : (i3.zoomOffset++, i3.maxZoom--), i3.minZoom = Math.max(0, i3.minZoom)), "string" == typeof i3.subdomains && (i3.subdomains = i3.subdomains.split("")), bi || this.on("tileunload", this._onTileRemove);
17657        }, setUrl: function(t2, i3) {
17658          return this._url = t2, i3 || this.redraw(), this;
17659        }, createTile: function(t2, i3) {
17660          var n2 = document.createElement("img");
17661          return V(n2, "load", e(this._tileOnLoad, this, i3, n2)), V(n2, "error", e(this._tileOnError, this, i3, n2)), this.options.crossOrigin && (n2.crossOrigin = ""), n2.alt = "", n2.setAttribute("role", "presentation"), n2.src = this.getTileUrl(t2), n2;
17662        }, getTileUrl: function(t2) {
17663          var e2 = { r: Vi ? "@2x" : "", s: this._getSubdomain(t2), x: t2.x, y: t2.y, z: this._getZoomForUrl() };
17664          if (this._map && !this._map.options.crs.infinite) {
17665            var n2 = this._globalTileRange.max.y - t2.y;
17666            this.options.tms && (e2.y = n2), e2["-y"] = n2;
17667          }
17668          return _(this._url, i2(e2, this.options));
17669        }, _tileOnLoad: function(t2, i3) {
17670          wi ? setTimeout(e(t2, this, null, i3), 0) : t2(null, i3);
17671        }, _tileOnError: function(t2, i3, e2) {
17672          var n2 = this.options.errorTileUrl;
17673          n2 && i3.src !== n2 && (i3.src = n2), t2(e2, i3);
17674        }, _onTileRemove: function(t2) {
17675          t2.tile.onload = null;
17676        }, _getZoomForUrl: function() {
17677          var t2 = this._tileZoom, i3 = this.options.maxZoom, e2 = this.options.zoomReverse, n2 = this.options.zoomOffset;
17678          return e2 && (t2 = i3 - t2), t2 + n2;
17679        }, _getSubdomain: function(t2) {
17680          var i3 = Math.abs(t2.x + t2.y) % this.options.subdomains.length;
17681          return this.options.subdomains[i3];
17682        }, _abortLoading: function() {
17683          var t2, i3;
17684          for (t2 in this._tiles)
17685            this._tiles[t2].coords.z !== this._tileZoom && ((i3 = this._tiles[t2].el).onload = r, i3.onerror = r, i3.complete || (i3.src = ni, ut(i3)));
17686        } }), cn = ln.extend({ defaultWmsParams: { service: "WMS", request: "GetMap", layers: "", styles: "", format: "image/jpeg", transparent: false, version: "1.1.1" }, options: { crs: null, uppercase: false }, initialize: function(t2, e2) {
17687          this._url = t2;
17688          var n2 = i2({}, this.defaultWmsParams);
17689          for (var o2 in e2)
17690            o2 in this.options || (n2[o2] = e2[o2]);
17691          e2 = l(this, e2), n2.width = n2.height = e2.tileSize * (e2.detectRetina && Vi ? 2 : 1), this.wmsParams = n2;
17692        }, onAdd: function(t2) {
17693          this._crs = this.options.crs || t2.options.crs, this._wmsVersion = parseFloat(this.wmsParams.version);
17694          var i3 = this._wmsVersion >= 1.3 ? "crs" : "srs";
17695          this.wmsParams[i3] = this._crs.code, ln.prototype.onAdd.call(this, t2);
17696        }, getTileUrl: function(t2) {
17697          var i3 = this._tileCoordsToBounds(t2), e2 = this._crs.project(i3.getNorthWest()), n2 = this._crs.project(i3.getSouthEast()), o2 = (this._wmsVersion >= 1.3 && this._crs === Ne ? [n2.y, e2.x, e2.y, n2.x] : [e2.x, n2.y, n2.x, e2.y]).join(","), s2 = ln.prototype.getTileUrl.call(this, t2);
17698          return s2 + c(this.wmsParams, s2, this.options.uppercase) + (this.options.uppercase ? "&BBOX=" : "&bbox=") + o2;
17699        }, setParams: function(t2, e2) {
17700          return i2(this.wmsParams, t2), e2 || this.redraw(), this;
17701        } });
17702        ln.WMS = cn, Yt.wms = function(t2, i3) {
17703          return new cn(t2, i3);
17704        };
17705        var _n = We.extend({ options: { padding: 0.1 }, initialize: function(t2) {
17706          l(this, t2), n(this), this._layers = this._layers || {};
17707        }, onAdd: function() {
17708          this._container || (this._initContainer(), this._zoomAnimated && pt(this._container, "leaflet-zoom-animated")), this.getPane().appendChild(this._container), this._update(), this.on("update", this._updatePaths, this);
17709        }, onRemove: function() {
17710          this.off("update", this._updatePaths, this), this._destroyContainer();
17711        }, getEvents: function() {
17712          var t2 = { viewreset: this._reset, zoom: this._onZoom, moveend: this._update, zoomend: this._onZoomEnd };
17713          return this._zoomAnimated && (t2.zoomanim = this._onAnimZoom), t2;
17714        }, _onAnimZoom: function(t2) {
17715          this._updateTransform(t2.center, t2.zoom);
17716        }, _onZoom: function() {
17717          this._updateTransform(this._map.getCenter(), this._map.getZoom());
17718        }, _updateTransform: function(t2, i3) {
17719          var e2 = this._map.getZoomScale(i3, this._zoom), n2 = Pt(this._container), o2 = this._map.getSize().multiplyBy(0.5 + this.options.padding), s2 = this._map.project(this._center, i3), r2 = this._map.project(t2, i3).subtract(s2), a2 = o2.multiplyBy(-e2).add(n2).add(o2).subtract(r2);
17720          Oi ? wt(this._container, a2, e2) : Lt(this._container, a2);
17721        }, _reset: function() {
17722          this._update(), this._updateTransform(this._center, this._zoom);
17723          for (var t2 in this._layers)
17724            this._layers[t2]._reset();
17725        }, _onZoomEnd: function() {
17726          for (var t2 in this._layers)
17727            this._layers[t2]._project();
17728        }, _updatePaths: function() {
17729          for (var t2 in this._layers)
17730            this._layers[t2]._update();
17731        }, _update: function() {
17732          var t2 = this.options.padding, i3 = this._map.getSize(), e2 = this._map.containerPointToLayerPoint(i3.multiplyBy(-t2)).round();
17733          this._bounds = new P(e2, e2.add(i3.multiplyBy(1 + 2 * t2)).round()), this._center = this._map.getCenter(), this._zoom = this._map.getZoom();
17734        } }), dn = _n.extend({ getEvents: function() {
17735          var t2 = _n.prototype.getEvents.call(this);
17736          return t2.viewprereset = this._onViewPreReset, t2;
17737        }, _onViewPreReset: function() {
17738          this._postponeUpdatePaths = true;
17739        }, onAdd: function() {
17740          _n.prototype.onAdd.call(this), this._draw();
17741        }
17741, _initContainer: function() {
17742          var t2 = this._container = document.createElement("canvas");
17743          V(t2, "mousemove", o(this._onMouseMove, 32, this), this), V(t2, "click dblclick mousedown mouseup contextmenu", this._onClick, this), V(t2, "mouseout", this._handleMouseOut, this), this._ctx = t2.getContext("2d");
17744        }, _destroyContainer: function() {
17745          delete this._ctx, ut(this._container), G(this._container), delete this._container;
17746        }, _updatePaths: function() {
17747          if (!this._postponeUpdatePaths) {
17748            this._redrawBounds = null;
17749            for (var t2 in this._layers)
17750              this._layers[t2]._update();
17751            this._redraw();
17752          }
17753        }, _update: function() {
17754          if (!this._map._animatingZoom || !this._bounds) {
17755            this._drawnLayers = {}, _n.prototype._update.call(this);
17756            var t2 = this._bounds, i3 = this._container, e2 = t2.getSize(), n2 = Vi ? 2 : 1;
17757            Lt(i3, t2.min), i3.width = n2 * e2.x, i3.height = n2 * e2.y, i3.style.width = e2.x + "px", i3.style.height = e2.y + "px", Vi && this._ctx.scale(2, 2), this._ctx.translate(-t2.min.x, -t2.min.y), this.fire("update");
17758          }
17759        }, _reset: function() {
17760          _n.prototype._reset.call(this), this._postponeUpdatePaths && (this._postponeUpdatePaths = false, this._updatePaths());
17761        }, _initPath: function(t2) {
17762          this._updateDashArray(t2), this._layers[n(t2)] = t2;
17763          var i3 = t2._order = { layer: t2, prev: this._drawLast, next: null };
17764          this._drawLast && (this._drawLast.next = i3), this._drawLast = i3, this._drawFirst = this._drawFirst || this._drawLast;
17765        }, _addPath: function(t2) {
17766          this._requestRedraw(t2);
17767        }, _removePath: function(t2) {
17768          var i3 = t2._order, e2 = i3.next, n2 = i3.prev;
17769          e2 ? e2.prev = n2 : this._drawLast = n2, n2 ? n2.next = e2 : this._drawFirst = e2, delete t2._order, delete this._layers[L.stamp(t2)], this._requestRedraw(t2);
17770        }, _updatePath: function(t2) {
17771          this._extendRedrawBounds(t2), t2._project(), t2._update(), this._requestRedraw(t2);
17772        }, _updateStyle: function(t2) {
17773          this._updateDashArray(t2), this._requestRedraw(t2);
17774        }, _updateDashArray: function(t2) {
17775          if (t2.options.dashArray) {
17776            var i3, e2 = t2.options.dashArray.split(","), n2 = [];
17777            for (i3 = 0; i3 < e2.length; i3++)
17778              n2.push(Number(e2[i3]));
17779            t2.options._dashArray = n2;
17780          }
17781        }, _requestRedraw: function(t2) {
17782          this._map && (this._extendRedrawBounds(t2), this._redrawRequest = this._redrawRequest || f(this._redraw, this));
17783        }, _extendRedrawBounds: function(t2) {
17784          if (t2._pxBounds) {
17785            var i3 = (t2.options.weight || 0) + 1;
17786            this._redrawBounds = this._redrawBounds || new P(), this._redrawBounds.extend(t2._pxBounds.min.subtract([i3, i3])), this._redrawBounds.extend(t2._pxBounds.max.add([i3, i3]));
17787          }
17788        }, _redraw: function() {
17789          this._redrawRequest = null, this._redrawBounds && (this._redrawBounds.min._floor(), this._redrawBounds.max._ceil()), this._clear(), this._draw(), this._redrawBounds = null;
17790        }, _clear: function() {
17791          var t2 = this._redrawBounds;
17792          if (t2) {
17793            var i3 = t2.getSize();
17794            this._ctx.clearRect(t2.min.x, t2.min.y, i3.x, i3.y);
17795          } else
17796            this._ctx.clearRect(0, 0, this._container.width, this._container.height);
17797        }, _draw: function() {
17798          var t2, i3 = this._redrawBounds;
17799          if (this._ctx.save(), i3) {
17800            var e2 = i3.getSize();
17801            this._ctx.beginPath(), this._ctx.rect(i3.min.x, i3.min.y, e2.x, e2.y), this._ctx.clip();
17802          }
17803          this._drawing = true;
17804          for (var n2 = this._drawFirst; n2; n2 = n2.next)
17805            t2 = n2.layer, (!i3 || t2._pxBounds && t2._pxBounds.intersects(i3)) && t2._updatePath();
17806          this._drawing = false, this._ctx.restore();
17807        }, _updatePoly: function(t2, i3) {
17808          if (this._drawing) {
17809            var e2, n2, o2, s2, r2 = t2._parts, a2 = r2.length, h2 = this._ctx;
17810            if (a2) {
17811              for (this._drawnLayers[t2._leaflet_id] = t2, h2.beginPath(), e2 = 0; e2 < a2; e2++) {
17812                for (n2 = 0, o2 = r2[e2].length; n2 < o2; n2++)
17813                  s2 = r2[e2][n2], h2[n2 ? "lineTo" : "moveTo"](s2.x, s2.y);
17814                i3 && h2.closePath();
17815              }
17816              this._fillStroke(h2, t2);
17817            }
17818          }
17819        }, _updateCircle: function(t2) {
17820          if (this._drawing && !t2._empty()) {
17821            var i3 = t2._point, e2 = this._ctx, n2 = t2._radius, o2 = (t2._radiusY || n2) / n2;
17822            this._drawnLayers[t2._leaflet_id] = t2, 1 !== o2 && (e2.save(), e2.scale(1, o2)), e2.beginPath(), e2.arc(i3.x, i3.y / o2, n2, 0, 2 * Math.PI, false), 1 !== o2 && e2.restore(
17822), this._fillStroke(e2, t2);
17823          }
17824        }, _fillStroke: function(t2, i3) {
17825          var e2 = i3.options;
17826          e2.fill && (t2.globalAlpha = e2.fillOpacity, t2.fillStyle = e2.fillColor || e2.color, t2.fill(e2.fillRule || "evenodd")), e2.stroke && 0 !== e2.weight && (t2.setLineDash && t2.setLineDash(i3.options && i3.options._dashArray || []), t2.globalAlpha = e2.opacity, t2.lineWidth = e2.weight, t2.strokeStyle = e2.color, t2.lineCap = e2.lineCap, t2.lineJoin = e2.lineJoin, t2.stroke());
17827        }, _onClick: function(t2) {
17828          for (var i3, e2, n2 = this._map.mouseEventToLayerPoint(t2), o2 = this._drawFirst; o2; o2 = o2.next)
17829            (i3 = o2.layer).options.interactive && i3._containsPoint(n2) && !this._map._draggableMoved(i3) && (e2 = i3);
17830          e2 && (et(t2), this._fireEvent([e2], t2));
17831        }, _onMouseMove: function(t2) {
17832          if (this._map && !this._map.dragging.moving() && !this._map._animatingZoom) {
17833            var i3 = this._map.mouseEventToLayerPoint(t2);
17834            this._handleMouseHover(t2, i3);
17835          }
17836        }, _handleMouseOut: function(t2) {
17837          var i3 = this._hoveredLayer;
17838          i3 && (mt(this._container, "leaflet-interactive"), this._fireEvent([i3], t2, "mouseout"), this._hoveredLayer = null);
17839        }, _handleMouseHover: function(t2, i3) {
17840          for (var e2, n2, o2 = this._drawFirst; o2; o2 = o2.next)
17841            (e2 = o2.layer).options.interactive && e2._containsPoint(i3) && (n2 = e2);
17842          n2 !== this._hoveredLayer && (this._handleMouseOut(t2), n2 && (pt(this._container, "leaflet-interactive"), this._fireEvent([n2], t2, "mouseover"), this._hoveredLayer = n2)), this._hoveredLayer && this._fireEvent([this._hoveredLayer], t2);
17843        }, _fireEvent: function(t2, i3, e2) {
17844          this._map._fireDOMEvent(i3, e2 || i3.type, t2);
17845        }, _bringToFront: function(t2) {
17846          var i3 = t2._order, e2 = i3.next, n2 = i3.prev;
17847          e2 && (e2.prev = n2, n2 ? n2.next = e2 : e2 && (this._drawFirst = e2), i3.prev = this._drawLast, this._drawLast.next = i3, i3.next = null, this._drawLast = i3, this._requestRedraw(t2));
17848        }, _bringToBack: function(t2) {
17849          var i3 = t2._order, e2 = i3.next, n2 = i3.prev;
17850          n2 && (n2.next = e2, e2 ? e2.prev = n2 : n2 && (this._drawLast = n2), i3.prev = null, i3.next = this._drawFirst, this._drawFirst.prev = i3, this._drawFirst = i3, this._requestRedraw(t2));
17851        } }), pn = function() {
17852          try {
17853            return document.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"), function(t2) {
17854              return document.createElement("<lvml:" + t2 + ' class="lvml">');
17855            };
17856          } catch (t2) {
17857            return function(t3) {
17858              return document.createElement("<" + t3 + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">');
17859            };
17860          }
17861        }(), mn = { _initContainer: function() {
17862          this._container = ht("div", "leaflet-vml-container");
17863        }, _update: function() {
17864          this._map._animatingZoom || (_n.prototype._update.call(this), this.fire("update"));
17865        }, _initPath: function(t2) {
17866          var i3 = t2._container = pn("shape");
17867          pt(i3, "leaflet-vml-shape " + (this.options.className || "")), i3.coordsize = "1 1", t2._path = pn("path"), i3.appendChild(t2._path), this._updateStyle(t2), this._layers[n(t2)] = t2;
17868        }, _addPath: function(t2) {
17869          var i3 = t2._container;
17870          this._container.appendChild(i3), t2.options.interactive && t2.addInteractiveTarget(i3);
17871        }, _removePath: function(t2) {
17872          var i3 = t2._container;
17873          ut(i3), t2.removeInteractiveTarget(i3), delete this._layers[n(t2)];
17874        }, _updateStyle: function(t2) {
17875          var i3 = t2._stroke, e2 = t2._fill, n2 = t2.options, o2 = t2._container;
17876          o2.stroked = !!n2.stroke, o2.filled = !!n2.fill, n2.stroke ? (i3 || (i3 = t2._stroke = pn("stroke")), o2.appendChild(i3), i3.weight = n2.weight + "px", i3.color = n2.color, i3.opacity = n2.opacity, n2.dashArray ? i3.dashStyle = ei(n2.dashArray) ? n2.dashArray.join(" ") : n2.dashArray.replace(/( *, *)/g, " ") : i3.dashStyle = "", i3.endcap = n2.lineCap.replace("butt", "flat"), i3.joinstyle = n2.lineJoin) : i3 && (o2.removeChild(i3), t2._stroke = null), n2.fill ? (e2 || (e2 = t2._fill = pn("fill")), o2.appendChild(e2), e2.color = n2.fillColor || n2.color, e2.opacity = n2.fillOpacity) : e2 && (o2.removeChild(e2), t2._fill = null);
17877        }, _updateCircle: function(t2) {
17878          var i3 = t2._point.round(), e2 = Math.round(t2._radius), n2 = Math.round(t2._radiusY || e2);
17879          this._setPath(t2, t2._empty() ? "M0 0" : "AL " + i3.x + "," + i3.y + " " + e2 + "," + n2 + " 0,23592600");
17880        }, _setPath: function(t2, i3) {
17881          t2._path.v = i3;
17882        }, _bringToFront: function(t2) {
17883          ct(t2._container);
17884        }, _bringToBack: function(t2) {
17885          _t(t2._container);
17886        } }, fn = Ki ? pn : S, gn = _n.extend({ getEvents: function() {
17887          var t2 = _n.prototype.getEvents.call(this);
17888          return t2.zoomstart = this._onZoomStart, t2;
17889        }, _initContainer: function() {
17890          this._container = fn("svg"), this._container.setAttribute("pointer-events", "none"), this._rootGroup = fn("g"), this._container.appendChild(this._rootGroup);
17891        }, _destroyContainer: function() {
17892          ut(this._container), G(this._container), delete this._container, delete this._rootGroup;
17893        }, _onZoomStart: function() {
17894          this._update();
17895        }, _update: function() {
17896          if (!this._map._animatingZoom || !this._bounds) {
17897            _n.prototype._update.call(this);
17898            var t2 = this._bounds, i3 = t2.getSize(), e2 = this._container;
17899            this._svgSize && this._svgSize.equals(i3) || (this._svgSize = i3, e2.setAttribute("width", i3.x), e2.setAttribute("height", i3.y)), Lt(e2, t2.min), e2.setAttribute("viewBox", [t2.min.x, t2.min.y, i3.x, i3.y].join(" ")), this.fire("update");
17900          }
17901        }, _initPath: function(t2) {
17902          var i3 = t2._path = fn("path");
17903          t2.options.className && pt(i3, t2.options.className), t2.options.interactive && pt(i3, "leaflet-interactive"), this._updateStyle(t2), this._layers[n(t2)] = t2;
17904        }, _addPath: function(t2) {
17905          this._rootGroup || this._initContainer(), this._rootGroup.appendChild(t2._path), t2.addInteractiveTarget(t2._path);
17906        }, _removePath: function(t2) {
17907          ut(t2._path), t2.removeInteractiveTarget(t2._path), delete this._layers[n(t2)];
17908        }, _updatePath: function(t2) {
17909          t2._project(), t2._update();
17910        }, _updateStyle: function(t2) {
17911          var i3 = t2._path, e2 = t2.options;
17912          i3 && (e2.stroke ? (i3.setAttribute("stroke", e2.color), i3.setAttribute("stroke-opacity", e2.opacity), i3.setAttribute("stroke-width", e2.weight), i3.setAttribute("stroke-linecap", e2.lineCap), i3.setAttribute("stroke-linejoin", e2.lineJoin), e2.dashArray ? i3.setAttribute("stroke-dasharray", e2.dashArray) : i3.removeAttribute("stroke-dasharray"), e2.dashOffset ? i3.setAttribute("stroke-dashoffset", e2.dashOffset) : i3.removeAttribute("stroke-dashoffset")) : i3.setAttribute("stroke", "none"), e2.fill ? (i3.setAttribute("fill", e2.fillColor || e2.color), i3.setAttribute("fill-opacity", e2.fillOpacity), i3.setAttribute("fill-rule", e2.fillRule || "evenodd")) : i3.setAttribute("fill", "none"));
17913        }, _updatePoly: function(t2, i3) {
17914          this._setPath(t2, k(t2._parts, i3));
17915        }, _updateCircle: function(t2) {
17916          var i3 = t2._point, e2 = t2._radius, n2 = "a" + e2 + "," + (t2._radiusY || e2) + " 0 1,0 ", o2 = t2._empty() ? "M0 0" : "M" + (i3.x - e2) + "," + i3.y + n2 + 2 * e2 + ",0 " + n2 + 2 * -e2 + ",0 ";
17917          this._setPath(t2, o2);
17918        }, _setPath: function(t2, i3) {
17919          t2._path.setAttribute("d", i3);
17920        }, _bringToFront: function(t2) {
17921          ct(t2._path);
17922        }, _bringToBack: function(t2) {
17923          _t(t2._path);
17924        } });
17925        Ki && gn.include(mn), ye.include({ getRenderer: function(t2) {
17926          var i3 = t2.options.renderer || this._getPaneRenderer(t2.options.pane) || this.options.renderer || this._renderer;
17927          return i3 || (i3 = this._renderer = this.options.preferCanvas && Xt() || Jt()), this.hasLayer(i3) || this.addLayer(i3), i3;
17928        }, _getPaneRenderer: function(t2) {
17929          if ("overlayPane" === t2 || void 0 === t2)
17930            return false;
17931          var i3 = this._paneRenderers[t2];
17932          return void 0 === i3 && (i3 = gn && Jt({ pane: t2 }) || dn && Xt({ pane: t2 }), this._paneRenderers[t2] = i3), i3;
17933        } });
17934        var vn = $e.extend({ initialize: function(t2, i3) {
17935          $e.prototype.initialize.call(this, this._boundsToLatLngs(t2), i3);
17936        }, setBounds: function(t2) {
17937          return this.setLatLngs(this._boundsToLatLngs(t2));
17938        }, _boundsToLatLngs: function(t2) {
17939          return t2 = z(t2), [t2.getSouthWest(), t2.getNorthWest(), t2.getNorthEast(), t2.getSouthEast()];
17940        } });
17941        gn.create = fn, gn.pointsToPath = k, Qe.geometryToLayer = Wt, Qe.coordsToLatLng = Ht, Qe.coordsToLatLngs = Ft, Qe.latLngToCoords = Ut, Qe.latLngsToCoords = Vt, Qe.getFeature = Gt, Qe.asFeature = qt, ye.mergeOptions({ boxZoom: true });
17942        var yn = Me.extend({ initialize: function(t2) {
17943          this._map = t2, this._container = t2._container, this._pane = t2._panes.overlayPane, this._resetStateTimeout = 0, t2.on("unload", this._destroy, this);
17944        }, addHooks: function() {
17945          V(this._container, "mousedown", this._onMouseDown, this);
17946        }, removeHooks: function() {
17947          G(this._container, "mousedown", this._onMouseDown, this);
17948        }, moved: function() {
17949          return this._moved;
17950        }, _destroy: function() {
17951          ut(this._pane), delete this._pane;
17952        }, _resetState: function() {
17953          this._resetStateTimeout = 0, this._moved = false;
17954        }, _clearDeferredResetState: function() {
17955          0 !== this._resetStateTimeout && (clearTimeout(this._resetStateTimeout), this._resetStateTimeout = 0);
17956        }, _onMouseDown: function(t2) {
17957          if (!t2.shiftKey || 1 !== t2.which && 1 !== t2.button)
17958            return false;
17959          this._clearDeferredResetState(), this._resetState(), pi(), bt(), this._startPoint = this._map.mouseEventToContainerPoint(t2), V(document, { contextmenu: Q, mousemove: this._onMouseMove, mouseup: this._onMouseUp, keydown: this._onKeyDown }, this);
17960        }, _onMouseMove: function(t2) {
17961          this._moved || (this._moved = true, this._box = ht("div", "leaflet-zoom-box", this._container), pt(this._container, "leaflet-crosshair"), this._map.fire("boxzoomstart")), this._point = this._map.mouseEventToContainerPoint(t2);
17962          var i3 = new P(this._point, this._startPoint), e2 = i3.getSize();
17963          Lt(this._box, i3.min), this._box.style.width = e2.x + "px", this._box.style.height = e2.y + "px";
17964        }, _finish: function() {
17965          this._moved && (ut(this._box), mt(this._container, "leaflet-crosshair")), mi(), Tt(), G(document, { contextmenu: Q, mousemove: this._onMouseMove, mouseup: this._onMouseUp, keydown: this._onKeyDown }, this);
17966        }, _onMouseUp: function(t2) {
17967          if ((1 === t2.which || 1 === t2.button) && (this._finish(), this._moved)) {
17968            this._clearDeferredResetState(), this._resetStateTimeout = setTimeout(e(this._resetState, this), 0);
17969            var i3 = new T(this._map.containerPointToLatLng(this._startPoint), this._map.containerPointToLatLng(this._point));
17970            this._map.fitBounds(i3).fire("boxzoomend", { boxZoomBounds: i3 });
17971          }
17972        }, _onKeyDown: function(t2) {
17973          27 === t2.keyCode && this._finish();
17974        } });
17975        ye.addInitHook("addHandler", "boxZoom", yn), ye.mergeOptions({ doubleClickZoom: true });
17976        var xn = Me.extend({ addHooks: function() {
17977          this._map.on("dblclick", this._onDoubleClick, this);
17978        }, removeHooks: function() {
17979          this._map.off("dblclick", this._onDoubleClick, this);
17980        }, _onDoubleClick: function(t2) {
17981          var i3 = this._map, e2 = i3.getZoom(), n2 = i3.options.zoomDelta, o2 = t2.originalEvent.shiftKey ? e2 - n2 : e2 + n2;
17982          "center" === i3.options.doubleClickZoom ? i3.setZoom(o2) : i3.setZoomAround(t2.containerPoint, o2);
17983        } });
17984        ye.addInitHook("addHandler", "doubleClickZoom", xn), ye.mergeOptions({ dragging: true, inertia: !Ti, inertiaDeceleration: 3400, inertiaMaxSpeed: 1 / 0, easeLinearity: 0.2, worldCopyJump: false, maxBoundsViscosity: 0 });
17985        var wn = Me.extend({ addHooks: function() {
17986          if (!this._draggable) {
17987            var t2 = this._map;
17988            this._draggable = new ke(t2._mapPane, t2._container), this._draggable.on({ dragstart: this._onDragStart, drag: this._onDrag, dragend: this._onDragEnd }, this), this._draggable.on("predrag", this._onPreDragLimit, this), t2.options.worldCopyJump && (this._draggable.on("predrag", this._onPreDragWrap, this), t2.on("zoomend", this._onZoomEnd, this), t2.whenReady(this._onZoomEnd, this));
17989          }
17990          pt(this._map._container, "leaflet-grab leaflet-touch-drag"), this._draggable.enable(), this._positions = [], this._times = [];
17991        }, removeHooks: function() {
17992          mt(this._map._container, "leaflet-grab"), mt(this._map._container, "leaflet-touch-drag"), this._draggable.disable();
17993        }, moved: function() {
17994          return this._draggable && this._draggable._moved;
17995        }, moving: function() {
17996          return this._draggable && this._draggable._moving;
17997        }, _onDragStart: function() {
17998          var t2 = this._map;
17999          if (t2._stop(), this._map.options.maxBounds && this._map.options.maxBoundsViscosity) {
18000            var i3 = z(this._map.options.maxBounds);
18001            this._offsetLimit = b(this._map.latLngToContainerPoint(i3.getNorthWest()).multiplyBy(-1), this._map.latLngToContainerPoint(i3.getSouthEast()).multiplyBy(-1).add(this._map.getSize())), this._viscosity = Math.min(1, Math.max(0, this._map.options.maxBoundsViscosity));
18002          } else
18003            this._offsetLimit = null;
18004          t2.fire("movestart").fire("dragstart"), t2.options.inertia && (this._positions = [], this._times = []);
18005        }, _onDrag: function(t2) {
18006          if (this._map.options.inertia) {
18007            var i3 = this._lastTime = +new Date(), e2 = this._lastPos = this._draggable._absPos || this._draggable._newPos;
18008            this._positions.push(e2), this._times.push(i3), i3 - this._times[0] > 50 && (this._positions.shift(), this._times.shift());
18009          }
18010          this._map.fire("move", t2).fire("drag", t2);
18011        }, _onZoomEnd: function() {
18012          var t2 = this._map.getSize().divideBy(2), i3 = this._map.latLngToLayerPoint([0, 0]);
18013          this._initialWorldOffset = i3.subtract(t2).x, this._worldWidth = this._map.getPixelWorldBounds().getSize().x;
18014        }, _viscousLimit: function(t2, i3) {
18015          return t2 - (t2 - i3) * this._viscosity;
18016        }, _onPreDragLimit: function() {
18017          if (this._viscosity && this._offsetLimit) {
18018            var t2 = this._draggable._newPos.subtract(this._draggable._startPos), i3 = this._offsetLimit;
18019            t2.x < i3.min.x && (t2.x = this._viscousLimit(t2.x, i3.min.x)), t2.y < i3.min.y && (t2.y = this._viscousLimit(t2.y, i3.min.y)), t2.x > i3.max.x && (t2.x = this._viscousLimit(t2.x, i3.max.x)), t2.y > i3.max.y && (t2.y = this._viscousLimit(t2.y, i3.max.y)), this._draggable._newPos = this._draggable._startPos.add(t2);
18020          }
18021        }, _onPreDragWrap: function() {
18022          var t2 = this._worldWidth, i3 = Math.round(t2 / 2), e2 = this._initialWorldOffset, n2 = this._draggable._newPos.x, o2 = (n2 - i3 + e2) % t2 + i3 - e2, s2 = (n2 + i3 + e2) % t2 - i3 - e2, r2 = Math.abs(o2 + e2) < Math.abs(s2 + e2) ? o2 : s2;
18023          this._draggable._absPos = this._draggable._newPos.clone(), this._draggable._newPos.x = r2;
18024        }, _onDragEnd: function(t2) {
18025          var i3 = this._map, e2 = i3.options, n2 = !e2.inertia || this._times.length < 2;
18026          if (i3.fire("dragend", t2), n2)
18027            i3.fire("moveend");
18028          else {
18029            var o2 = this._lastPos.subtract(this._positions[0]), s2 = (this._lastTime - this._times[0]) / 1e3, r2 = e2.easeLinearity, a2 = o2.multiplyBy(r2 / s2), h2 = a2.distanceTo([0, 0]), u2 = Math.min(e2.inertiaMaxSpeed, h2), l2 = a2.multiplyBy(u2 / h2), c2 = u2 / (e2.inertiaDeceleration * r2), _2 = l2.multiplyBy(-c2 / 2).round();
18030            _2.x || _2.y ? (_2 = i3._limitOffset(_2, i3.options.maxBounds), f(function() {
18031              i3.panBy(_2, { duration: c2, easeLinearity: r2, noMoveStart: true, animate: true });
18032            })) : i3.fire("moveend");
18033          }
18034        } });
18035        ye.addInitHook("addHandler", "dragging", wn), ye.mergeOptions({ keyboard: true, keyboardPanDelta: 80 });
18036        var Ln = Me.extend({ keyCodes: { left: [37], right: [39], down: [40], up: [38], zoomIn: [187, 107, 61, 171], zoomOut: [189, 109, 54, 173] }, initialize: function(t2) {
18037          this._map = t2, this._setPanDelta(t2.options.keyboardPanDelta), this._setZoomDelta(t2.options.zoomDelta);
18038        }, addHooks: function() {
18039          var t2 = this._map._container;
18040          t2.tabIndex <= 0 && (t2.tabIndex = "0"), V(t2, { focus: this._onFocus, blur: this._onBlur, mousedown: this._onMouseDown }, this), this._map.on({ focus: this._addHooks, blur: this._removeHooks }, this);
18041        }, removeHooks: function() {
18042          this._removeHooks(), G(this._map._container, { focus: this._onFocus, blur: this._onBlur, mousedown: this._onMouseDown }, this), this._map.off({ focus: this._addHooks, blur: this._removeHooks }, this);
18043        }, _onMouseDown: function() {
18044          if (!this._focused) {
18045            var t2 = document.body, i3 = document.documentElement, e2 = t2.scrollTop || i3.scrollTop, n2 = t2.scrollLeft || i3.scrollLeft;
18046            this._map._container.focus(), window.scrollTo(n2, e2);
18047          }
18048        }, _onFocus: function() {
18049          this._focused = true, this._map.fire("focus");
18050        }, _onBlur: function() {
18051          this._focused = false, this._map.fire("blur");
18052        }, _setPanDelta: function(t2) {
18053          var i3, e2, n2 = this._panKeys = {}, o2 = this.keyCodes;
18054          for (i3 = 0, e2 = o2.left.length; i3 < e2; i3++)
18055            n2[o2.left[i3]] = [-1 * t2, 0];
18056          for (i3 = 0, e2 = o2.right.length; i3 < e2; i3++)
18057            n2[o2.right[i3]] = [t2, 0];
18058          for (i3 = 0, e2 = o2.down.length; i3 < e2; i3++)
18059            n2[o2.down[i3]] = [0, t2];
18060          for (i3 = 0, e2 = o2.up.length; i3 < e2; i3++)
18061            n2[o2.up[i3]] = [0, -1 * t2];
18062        }, _setZoomDelta: function(t2) {
18063          var i3, e2, n2 = this._zoomKeys = {}, o2 = this.keyCodes;
18064          for (i3 = 0, e2 = o2.zoomIn.length; i3 < e2; i3++)
18065            n2[o2.zoomIn[i3]] = t2;
18066          for (i3 = 0, e2 = o2.zoomOut.length; i3 < e2; i3++)
18067            n2[o2.zoomOut[i3]] = -t2;
18068        }, _addHooks: function() {
18069          V(document, "keydown", this._onKeyDown, this);
18070        }, _removeHooks: function() {
18071          G(document, "keydown", this._onKeyDown, this);
18072        }, _onKeyDown: function(t2) {
18073          if (!(t2.altKey || t2.ctrlKey || t2.metaKey)) {
18074            var i3, e2 = t2.keyCode, n2 = this._map;
18075            if (e2 in this._panKeys) {
18076              if (n2._panAnim && n2._panAnim._inProgress)
18077                return;
18078              i3 = this._panKeys[e2], t2.shiftKey && (i3 = w(i3).multiplyBy(3)), n2.panBy(i3), n2.options.maxBounds && n2.panInsideBounds(n2.options.maxBounds);
18079            } else if (e2 in this._zoomKeys)
18080              n2.setZoom(n2.getZoom() + (t2.shiftKey ? 3 : 1) * this._zoomKeys[e2]);
18081            else {
18082              if (27 !== e2 || !n2._popup)
18083                return;
18084              n2.closePopup();
18085            }
18086            Q(t2);
18087          }
18088        } });
18089        ye.addInitHook("addHandler", "keyboard", Ln), ye.mergeOptions({ scrollWheelZoom: true, wheelDebounceTime: 40, wheelPxPerZoomLevel: 60 });
18090        var Pn = Me.extend({ addHooks: function() {
18091          V(this._map._container, "mousewheel", this._onWheelScroll, this), this._delta = 0;
18092        }, removeHooks: function() {
18093          G(this._map._container, "mousewheel", this._onWheelScroll, this);
18094        }, _onWheelScroll: function(t2) {
18095          var i3 = it(t2), n2 = this._map.options.wheelDebounceTime;
18096          this._delta += i3, this._lastMousePos = this._map.mouseEventToContainerPoint(t2), this._startTime || (this._startTime = +new Date());
18097          var o2 = Math.max(n2 - (+new Date() - this._startTime), 0);
18098          clearTimeout(this._timer), this._timer = setTimeout(e(this._performZoom, this), o2), Q(t2);
18099        }, _performZoom: function() {
18100          var t2 = this._map, i3 = t2.getZoom(), e2 = this._map.options.zoomSnap || 0;
18101          t2._stop();
18102          var n2 = this._delta / (4 * this._map.options.wheelPxPerZoomLevel), o2 = 4 * Math.log(2 / (1 + Math.exp(-Math.abs(n2)))) / Math.LN2, s2 = e2 ? Math.ceil(o2 / e2) * e2 : o2, r2 = t2._limitZoom(i3 + (this._delta > 0 ? s2 : -s2)) - i3;
18103          this._delta = 0, this._startTime = null, r2 && ("center" === t2.options.scrollWheelZoom ? t2.setZoom(i3 + r2) : t2.setZoomAround(this._lastMousePos, i3 + r2));
18104        } });
18105        ye.addInitHook("addHandler", "scrollWheelZoom", Pn), ye.mergeOptions({ tap: true, tapTolerance: 15 });
18106        var bn = Me.extend({ addHooks: function() {
18107          V(this._map._container, "touchstart", this._onDown, this);
18108        }, removeHooks: function() {
18109          G(this._map._container, "touchstart", this._onDown, this);
18110        }, _onDown: function(t2) {
18111          if (t2.touches) {
18112            if ($2(t2), this._fireClick = true, t2.touches.length > 1)
18113              return this._fireClick = false, void clearTimeout(this._holdTimeout);
18114            var i3 = t2.touches[0], n2 = i3.target;
18115            this._startPos = this._newPos = new x(i3.clientX, i3.clientY), n2.tagName && "a" === n2.tagName.toLowerCase() && pt(n2, "leaflet-active"), this._holdTimeout = setTimeout(e(function() {
18116              this._isTapValid() && (this._fireClick = false, this._onUp(), this._simulateEvent("contextmenu", i3));
18117            }, this), 1e3), this._simulateEvent("mousedown", i3), V(document, { touchmove: this._onMove, touchend: this._onUp }, this);
18118          }
18119        }, _onUp: function(t2) {
18120          if (clearTimeout(this._holdTimeout), G(document, { touchmove: this._onMove, touchend: this._onUp }, this), this._fireClick && t2 && t2.changedTouches) {
18121            var i3 = t2.changedTouches[0], e2 = i3.target;
18122            e2 && e2.tagName && "a" === e2.tagName.toLowerCase() && mt(e2, "leaflet-active"), this._simulateEvent("mouseup", i3), this._isTapValid() && this._simulateEvent("click", i3);
18123          }
18124        }, _isTapValid: function() {
18125          return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance;
18126        }, _onMove: function(t2) {
18127          var i3 = t2.touches[0];
18128          this._newPos = new x(i3.clientX, i3.clientY), this._simulateEvent("mousemove", i3);
18129        }, _simulateEvent: function(t2, i3) {
18130          var e2 = document.createEvent("MouseEvents");
18131          e2._simulated = true, i3.target._simulatedClick = true, e2.initMouseEvent(t2, true, true, window, 1, i3.screenX, i3.screenY, i3.clientX, i3.clientY, false, false, false, false, 0, null), i3.target.dispatchEvent(e2);
18132        } });
18133        Hi && !Wi && ye.addInitHook("addHandler", "tap", bn), ye.mergeOptions({ touchZoom: Hi && !Ti, bounceAtZoomLimits: true });
18134        var Tn = Me.extend({ addHooks: function() {
18135          pt(this._map._container, "leaflet-touch-zoom"), V(this._map._container, "touchstart", this._onTouchStart, this);
18136        }, removeHooks: function() {
18137          mt(this._map._container, "leaflet-touch-zoom"), G(this._map._container, "touchstart", this._onTouchStart, this);
18138        }, _onTouchStart: function(t2) {
18139          var i3 = this._map;
18140          if (t2.touches && 2 === t2.touches.length && !i3._animatingZoom && !this._zooming) {
18141            var e2 = i3.mouseEventToContainerPoint(t2.touches[0]), n2 = i3.mouseEventToContainerPoint(t2.touches[1]);
18142            this._centerPoint = i3.getSize()._divideBy(2), this._startLatLng = i3.containerPointToLatLng(this._centerPoint), "center" !== i3.options.touchZoom && (this._pinchStartLatLng = i3.containerPointToLatLng(e2.add(n2)._divideBy(2))), this._startDist = e2.distanceTo(n2), this._startZoom = i3.getZoom(), this._moved = false, this._zooming = true, i3._stop(), V(document, "touchmove", this._onTouchMove, this), V(document, "touchend", this._onTouchEnd, this), $2(t2);
18143          }
18144        }, _onTouchMove: function(t2) {
18145          if (t2.touches && 2 === t2.touches.length && this._zooming) {
18146            var i3 = this._map, n2 = i3.mouseEventToContainerPoint(t2.touches[0]), o2 = i3.mouseEventToContainerPoint(t2.touches[1]), s2 = n2.distanceTo(o2) / this._startDist;
18147            if (this._zoom = i3.getScaleZoom(s2, this._startZoom), !i3.options.bounceAtZoomLimits && (this._zoom < i3.getMin
18147Zoom() && s2 < 1 || this._zoom > i3.getMaxZoom() && s2 > 1) && (this._zoom = i3._limitZoom(this._zoom)), "center" === i3.options.touchZoom) {
18148              if (this._center = this._startLatLng, 1 === s2)
18149                return;
18150            } else {
18151              var r2 = n2._add(o2)._divideBy(2)._subtract(this._centerPoint);
18152              if (1 === s2 && 0 === r2.x && 0 === r2.y)
18153                return;
18154              this._center = i3.unproject(i3.project(this._pinchStartLatLng, this._zoom).subtract(r2), this._zoom);
18155            }
18156            this._moved || (i3._moveStart(true), this._moved = true), g(this._animRequest);
18157            var a2 = e(i3._move, i3, this._center, this._zoom, { pinch: true, round: false });
18158            this._animRequest = f(a2, this, true), $2(t2);
18159          }
18160        }, _onTouchEnd: function() {
18161          this._moved && this._zooming ? (this._zooming = false, g(this._animRequest), G(document, "touchmove", this._onTouchMove), G(document, "touchend", this._onTouchEnd), this._map.options.zoomAnimation ? this._map._animateZoom(this._center, this._map._limitZoom(this._zoom), true, this._map.options.zoomSnap) : this._map._resetView(this._center, this._map._limitZoom(this._zoom))) : this._zooming = false;
18162        } });
18163        ye.addInitHook("addHandler", "touchZoom", Tn), ye.BoxZoom = yn, ye.DoubleClickZoom = xn, ye.Drag = wn, ye.Keyboard = Ln, ye.ScrollWheelZoom = Pn, ye.Tap = bn, ye.TouchZoom = Tn;
18164        var zn = window.L;
18165        window.L = t, Object.freeze = $t, t.version = "1.2.0", t.noConflict = function() {
18166          return window.L = zn, this;
18167        }, t.Control = xe, t.control = we, t.Browser = Yi, t.Evented = ui, t.Mixin = Ce, t.Util = ai, t.Class = v, t.Handler = Me, t.extend = i2, t.bind = e, t.stamp = n, t.setOptions = l, t.DomEvent = le, t.DomUtil = ge, t.PosAnimation = ve, t.Draggable = ke, t.LineUtil = Be, t.PolyUtil = Ie, t.Point = x, t.point = w, t.Bounds = P, t.bounds = b, t.Transformation = Z, t.transformation = E, t.Projection = Re, t.LatLng = M, t.latLng = C, t.LatLngBounds = T, t.latLngBounds = z, t.CRS = li, t.GeoJSON = Qe, t.geoJSON = Kt, t.geoJson = en, t.Layer = We, t.LayerGroup = He, t.layerGroup = function(t2) {
18168          return new He(t2);
18169        }, t.FeatureGroup = Fe, t.featureGroup = function(t2) {
18170          return new Fe(t2);
18171        }, t.ImageOverlay = nn, t.imageOverlay = function(t2, i3, e2) {
18172          return new nn(t2, i3, e2);
18173        }, t.VideoOverlay = on2, t.videoOverlay = function(t2, i3, e2) {
18174          return new on2(t2, i3, e2);
18175        }, t.DivOverlay = sn, t.Popup = rn, t.popup = function(t2, i3) {
18176          return new rn(t2, i3);
18177        }, t.Tooltip = an, t.tooltip = function(t2, i3) {
18178          return new an(t2, i3);
18179        }, t.Icon = Ue, t.icon = function(t2) {
18180          return new Ue(t2);
18181        }, t.DivIcon = hn, t.divIcon = function(t2) {
18182          return new hn(t2);
18183        }, t.Marker = qe, t.marker = function(t2, i3) {
18184          return new qe(t2, i3);
18185        }, t.TileLayer = ln, t.tileLayer = Yt, t.GridLayer = un, t.gridLayer = function(t2) {
18186          return new un(t2);
18187        }, t.SVG = gn, t.svg = Jt, t.Renderer = _n, t.Canvas = dn, t.canvas = Xt, t.Path = Ke, t.CircleMarker = Ye, t.circleMarker = function(t2, i3) {
18188          return new Ye(t2, i3);
18189        }, t.Circle = Xe, t.circle = function(t2, i3, e2) {
18190          return new Xe(t2, i3, e2);
18191        }, t.Polyline = Je, t.polyline = function(t2, i3) {
18192          return new Je(t2, i3);
18193        }, t.Polygon = $e, t.polygon = function(t2, i3) {
18194          return new $e(t2, i3);
18195        }, t.Rectangle = vn, t.rectangle = function(t2, i3) {
18196          return new vn(t2, i3);
18197        }, t.Map = ye, t.map = function(t2, i3) {
18198          return new ye(t2, i3);
18199        };
18200      });
18201    }
18202  });
18203
18204  
18204// frappe/public/js/lib/leaflet_control_locate/L.Control.Locate.js
18205  var require_L_Control_Locate = __commonJS({
18206    "frappe/public/js/lib/leaflet_control_locate/L.Control.Locate.js"(exports, module) {
18207      (function(factory, window2) {
18208        if (typeof define === "function" && define.amd) {
18209          define(["leaflet"], factory);
18210        } else if (typeof exports === "object") {
18211          if (typeof window2 !== "undefined" && window2.L) {
18212            module.exports = factory(L);
18213          } else {
18214            module.exports = factory(require_leaflet());
18215          }
18216        }
18217        if (typeof window2 !== "undefined" && window2.L) {
18218          window2.L.Control.Locate = factory(L);
18219        }
18220      })(function(L2) {
18221        var LDomUtilApplyClassesMethod = function(method, element, classNames) {
18222          classNames = classNames.split(" ");
18223          classNames.forEach(function(className) {
18224            L2.DomUtil[method].call(this, element, className);
18225          });
18226        };
18227        var addClasses = function(el, names) {
18228          LDomUtilApplyClassesMethod("addClass", el, names);
18229        };
18230        var removeClasses = function(el, names) {
18231          LDomUtilApplyClassesMethod("removeClass", el, names);
18232        };
18233        var LocateControl = L2.Control.extend({
18234          options: {
18235            position: "topleft",
18236            layer: void 0,
18237            setView: "untilPan",
18238            keepCurrentZoomLevel: false,
18239            flyTo: false,
18240            clickBehavior: {
18241              inView: "stop",
18242              outOfView: "setView"
18243            },
18244            returnToPrevBounds: false,
18245            cacheLocation: true,
18246            drawCircle: true,
18247            drawMarker: true,
18248            markerClass: L2.CircleMarker,
18249            circleStyle: {
18250              color: "#136AEC",
18251              fillColor: "#136AEC",
18252              fillOpacity: 0.15,
18253              weight: 2,
18254              opacity: 0.5
18255            },
18256            markerStyle: {
18257              color: "#136AEC",
18258              fillColor: "#2A93EE",
18259              fillOpacity: 0.7,
18260              weight: 2,
18261              opacity: 0.9,
18262              radius: 5
18263            },
18264            followCircleStyle: {},
18265            followMarkerStyle: {},
18266            icon: "fa fa-map-marker",
18267            iconLoading: "fa fa-spinner fa-spin",
18268            iconElementTag: "span",
18269            circlePadding: [0, 0],
18270            metric: true,
18271            createButtonCallback: function(container, options) {
18272              var link = L2.DomUtil.create("a", "leaflet-bar-part leaflet-bar-part-single", container);
18273              link.title = options.strings.title;
18274              var icon = L2.DomUtil.create(options.iconElementTag, options.icon, link);
18275              return { link, icon };
18276            },
18277            onLocationError: function(err, control) {
18278              alert(err.message);
18279            },
18280            onLocationOutsideMapBounds: function(control) {
18281              control.stop();
18282              alert(control.options.strings.outsideMapBoundsMsg);
18283            },
18284            showPopup: true,
18285            strings: {
18286              title: "Show me where I am",
18287              metersUnit: "meters",
18288              feetUnit: "feet",
18289              popup: "You are within {distance} {unit} from this point",
18290              outsideMapBoundsMsg: "You seem located outside the boundaries of the map"
18291            },
18292            locateOptions: {
18293              maxZoom: Infinity,
18294              watch: true,
18295              setView: false
18296            }
18297          },
18298          initialize: function(options) {
18299            for (var i2 in options) {
18300              if (typeof this.options[i2] === "object") {
18301                L2.extend(this.options[i2], options[i2]);
18302              } else {
18303                this.options[i2] = options[i2];
18304              }
18305            }
18306            this.options.followMarkerStyle = L2.extend({}, this.options.markerStyle, this.options.followMarkerStyle);
18307            this.options.followCircleStyle = L2.extend({}, this.options.circleStyle, this.options.followCircleStyle);
18308          },
18309          onAdd: function(map2) {
18310            var container = L2.DomUtil.create(
18311              "div",
18312              "leaflet-control-locate leaflet-bar leaflet-control"
18313            );
18314            this._layer = this.options.layer || new L2.LayerGroup();
18315            this._layer.addTo(map2);
18316            this._event = void 0;
18317            this._prevBounds = null;
18318            var linkAndIcon = this.options.createButtonCallback(container, this.options);
18319            this._link = linkAndIcon.link;
18320            this._icon = linkAndIcon.icon;
18321            L2.DomEvent.on(this._link, "click", L2.DomEvent.stopPropagation).on(this._link, "click", L2.DomEvent.preventDefault).on(this._link, "click", this._onClick, this).on(this._link, "dblclick", L2.DomEvent.stopPropagation);
18322            this._resetVariables();
18323            this._map.on("unload", this._unload, this);
18324            return container;
18325          },
18326          _onClick: function() {
18327            this._justClicked = true;
18328            this._userPanned = false;
18329            if (this._active && !this._event) {
18330              this.stop();
18331            } else if (this._active && this._event !== void 0) {
18332              var behavior = this._map.getBounds().contains(this._event.latlng) ? this.options.clickBehavior.inView : this.options.clickBehavior.outOfView;
18333              switch (behavior) {
18334                case "setView":
18335                  this.setView();
18336                  break;
18337                case "stop":
18338                  this.stop();
18339                  if (this.options.returnToPrevBounds) {
18340                    var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;
18341                    f.bind(this._map)(this._prevBounds);
18342                  }
18343                  break;
18344              }
18345            } else {
18346              if (this.options.returnToPrevBounds) {
18347                this._prevBounds = this._map.getBounds();
18348              }
18349              this.start();
18350            }
18351            this._updateContainerStyle();
18352          },
18353          start: function() {
18354            this._activate();
18355            if (this._event) {
18356              this._drawMarker(this._map);
18357              if (this.options.setView) {
18358                this.setView();
18359              }
18360            }
18361            this._updateContainerStyle();
18362          },
18363          stop: function() {
18364            this._deactivate();
18365            this._cleanClasses();
18366            this._resetVariables();
18367            this._removeMarker();
18368          },
18369          _activate: function() {
18370            if (!this._active) {
18371              this._map.locate(this.options.locateOptions);
18372              this._active = true;
18373              this._map.on("locationfound", this._onLocationFound, this);
18374              this._map.on("locationerror", this._onLocationError, this);
18375              this._map.on("dragstart", this._onDrag, this);
18376            }
18377          },
18378          _deactivate: function() {
18379            this._map.stopLocate();
18380            this._active = false;
18381            if (!this.options.cacheLocation) {
18382              this._event = void 0;
18383            }
18384            this._map.off("locationfound", this._onLocationFound, this);
18385            this._map.off("locationerror", this._onLocationError, this);
18386            this._map.off("dragstart", this._onDrag, this);
18387          },
18388          setView: function() {
18389            this._drawMarker();
18390            if (this._isOutsideMapBounds()) {
18391              this._event = void 0;
18392              this.options.onLocationOutsideMapBounds(this);
18393            } else {
18394              if (this.options.keepCurrentZoomLevel) {
18395                var f = this.options.flyTo ? this._map.flyTo : this._map.panTo;
18396                f.bind(this._map)([this._event.latitude, this._event.longitude]);
18397              } else {
18398                var f = this.options.flyTo ? this._map.flyToBounds : this._map.fitBounds;
18399                f.bind(this._map)(this._event.bounds, {
18400                  padding: this.options.circlePadding,
18401                  maxZoom: this.options.locateOptions.maxZoom
18402                });
18403              }
18404            }
18405          },
18406          _drawMarker: function() {
18407            if (this._event.accuracy === void 0) {
18408              this._event.accuracy = 0;
18409            }
18410            var radius = this._event.accuracy;
18411            var latlng = this._event.latlng;
18412            if (this.options.drawCircle) {
18413              var style = this._isFollowing() ? this.options.followCircleStyle : this.options.circleStyle;
18414              if (!this._circle) {
18415                this._circle = L2.circle(latlng, radius, style).addTo(this._layer);
18416              } else {
18417                this._circle.setLatLng(latlng).setRadius(radius).setStyle(style);
18418              }
18419            }
18420            var distance, unit;
18421            if (this.options.metric) {
18422              distance = radius.toFixed(0);
18423              unit = this.options.strings.metersUnit;
18424            } else {
18425              distance = (radius * 3.2808399).toFixed(0);
18426              unit = this.options.strings.feetUnit;
18427            }
18428            if (this.options.drawMarker) {
18429              var mStyle = this._isFollowing() ? this.options.followMarkerStyle : this.options.markerStyle;
18430              if (!this._marker) {
18431                this._marker = new this.options.markerClass(latlng, mStyle).addTo(this._layer);
18432              } else {
18433                this._marker.setLatLng(latlng);
18434                if (this._marker.setStyle) {
18435                  this._marker.setStyle(mStyle);
18436                }
18437              }
18438            }
18439            var t = this.options.strings.popup;
18440            if (this.options.showPopup && t && this._marker) {
18441              this._marker.bindPopup(L2.Util.template(t, { distance, unit }))._popup.setLatLng(latlng);
18442            }
18443          },
18444          _removeMarker: function() {
18445            this._layer.clearLayers();
18446            this._marker = void 0;
18447            this._circle = void 0;
18448          },
18449          _unload: function() {
18450            this.stop();
18451            this._map.off("unload", this._unload, this);
18452          },
18453          _onLocationError: function(err) {
18454            if (err.code == 3 && this.options.locateOptions.watch) {
18455              return;
18456            }
18457            this.stop();
18458            this.options.onLocationError(err, this);
18459          },
18460          _onLocationFound: function(e) {
18461            if (this._event && (this._event.latlng.lat === e.latlng.lat && this._event.latlng.lng === e.latlng.lng && this._event.accuracy === e.accuracy)) {
18462              return;
18463            }
18464            if (!this._active) {
18465              return;
18466            }
18467            this._event = e;
18468            this._drawMarker();
18469            this._updateContainerStyle();
18470            switch (this.options.setView) {
18471              case "once":
18472                if (this._justClicked) {
18473                  this.setView();
18474                }
18475                break;
18476              case "untilPan":
18477                if (!this._userPanned) {
18478                  this.setView();
18479                }
18480                break;
18481              case "always":
18482                this.setView();
18483                break;
18484              case false:
18485                break;
18486            }
18487            this._justClicked = false;
18488          },
18489          _onDrag: function() {
18490            if (this._event) {
18491              this._userPanned = true;
18492              this._updateContainerStyle();
18493              this._drawMarker();
18494            }
18495          },
18496          _isFollowing: function() {
18497            if (!this._active) {
18498              return false;
18499            }
18500            if (this.options.setView === "always") {
18501              return true;
18502            } else if (this.options.setView === "untilPan") {
18503              return !this._userPanned;
18504            }
18505          },
18506          _isOutsideMapBounds: function() {
18507            if (this._event === void 0) {
18508              return false;
18509            }
18510            return this._map.options.maxBounds && !this._map.options.maxBounds.contains(this._event.latlng);
18511          },
18512          _updateContainerStyle: function() {
18513            if (!this._container) {
18514              return;
18515            }
18516            if (this._active && !this._event) {
18517              this._setClasses("requesting");
18518            } else if (this._isFollowing()) {
18519              this._setClasses("following");
18520            } else if (this._active) {
18521              this._setClasses("active");
18522            } else {
18523              this._cleanClasses();
18524            }
18525          },
18526          _setClasses: function(state) {
18527            if (state == "requesting") {
18528              removeClasses(this._container, "active following");
18529              addClasses(this._container, "requesting");
18530              removeClasses(this._icon, this.options.icon);
18531              addClasses(this._icon, this.options.iconLoading);
18532            } else if (state == "active") {
18533              removeClasses(this._container, "requesting following");
18534              addClasses(this._container, "active");
18535              removeClasses(this._icon, this.options.iconLoading);
18536              addClasses(this._icon, this.options.icon);
18537            } else if (state == "following") {
18538              removeClasses(this._container, "requesting");
18539              addClasses(this._container, "active following");
18540              removeClasses(this._icon, this.options.iconLoading);
18541              addClasses(this._icon, this.options.icon);
18542            }
18543          },
18544          _cleanClasses: function() {
18545            L2.DomUtil.removeClass(this._container, "requesting");
18546            L2.DomUtil.removeClass(this._container, "active");
18547            L2.DomUtil.removeClass(this._container, "following");
18548            removeClasses(this._icon, this.options.iconLoading);
18549            addClasses(this._icon, this.options.icon);
18550          },
18551          _resetVariables: function() {
18552            this._active = false;
18553            this._justClicked = false;
18554            this._userPanned = false;
18555          }
18556        });
18557        L2.control.locate = function(options) {
18558          return new L2.Control.Locate(options);
18559        };
18560        return LocateControl;
18561      }, window);
18562    }
18563  });
18564
18565  
vendor: 67,047 bytes, lines 18565-19518
18565// node_modules/sortablejs/Sortable.min.js
18566  var require_Sortable_min = __commonJS({
18567    "node_modules/sortablejs/Sortable.min.js"(exports, module) {
18568      !function(t, e) {
18569        "object" == typeof exports && "undefined" != typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define(e) : (t = t || self).Sortable = e();
18570      }(exports, function() {
18571        "use strict";
18572        function e(e2, t2) {
18573          var n2, o2 = Object.keys(e2);
18574          return Object.getOwnPropertySymbols && (n2 = Object.getOwnPropertySymbols(e2), t2 && (n2 = n2.filter(function(t3) {
18575            return Object.getOwnPropertyDescriptor(e2, t3).enumerable;
18576          })), o2.push.apply(o2, n2)), o2;
18577        }
18578        function M(o2) {
18579          for (var t2 = 1; t2 < arguments.length; t2++) {
18580            var i3 = null != arguments[t2] ? arguments[t2] : {};
18581            t2 % 2 ? e(Object(i3), true).forEach(function(t3) {
18582              var e2, n2;
18583              e2 = o2, t3 = i3[n2 = t3], n2 in e2 ? Object.defineProperty(e2, n2, { value: t3, enumerable: true, configurable: true, writable: true }) : e2[n2] = t3;
18584            }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(o2, Object.getOwnPropertyDescriptors(i3)) : e(Object(i3)).forEach(function(t3) {
18585              Object.defineProperty(o2, t3, Object.getOwnPropertyDescriptor(i3, t3));
18586            });
18587          }
18588          return o2;
18589        }
18590        function o(t2) {
18591          return (o = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function(t3) {
18592            return typeof t3;
18593          } : function(t3) {
18594            return t3 && "function" == typeof Symbol && t3.constructor === Symbol && t3 !== Symbol.prototype ? "symbol" : typeof t3;
18595          })(t2);
18596        }
18597        function a() {
18598          return (a = Object.assign || function(t2) {
18599            for (var e2 = 1; e2 < arguments.length; e2++) {
18600              var n2, o2 = arguments[e2];
18601              for (n2 in o2)
18602                Object.prototype.hasOwnProperty.call(o2, n2) && (t2[n2] = o2[n2]);
18603            }
18604            return t2;
18605          }).apply(this, arguments);
18606        }
18607        function i2(t2, e2) {
18608          if (null == t2)
18609            return {};
18610          var n2, o2 = function(t3, e3) {
18611            if (null == t3)
18612              return {};
18613            for (var n3, o3 = {}, i4 = Object.keys(t3), r3 = 0; r3 < i4.length; r3++)
18614              n3 = i4[r3], 0 <= e3.indexOf(n3) || (o3[n3] = t3[n3]);
18615            return o3;
18616          }(t2, e2);
18617          if (Object.getOwnPropertySymbols)
18618            for (var i3 = Object.getOwnPropertySymbols(t2), r2 = 0; r2 < i3.length; r2++)
18619              n2 = i3[r2], 0 <= e2.indexOf(n2) || Object.prototype.propertyIsEnumerable.call(t2, n2) && (o2[n2] = t2[n2]);
18620          return o2;
18621        }
18622        function r(t2) {
18623          return function(t3) {
18624            if (Array.isArray(t3))
18625              return l(t3);
18626          }(t2) || function(t3) {
18627            if ("undefined" != typeof Symbol && null != t3[Symbol.iterator] || null != t3["@@iterator"])
18628              return Array.from(t3);
18629          }(t2) || function(t3, e2) {
18630            if (t3) {
18631              if ("string" == typeof t3)
18632                return l(t3, e2);
18633              var n2 = Object.prototype.toString.call(t3).slice(8, -1);
18634              return "Map" === (n2 = "Object" === n2 && t3.constructor ? t3.constructor.name : n2) || "Set" === n2 ? Array.from(t3) : "Arguments" === n2 || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n2) ? l(t3, e2) : void 0;
18635            }
18636          }(t2) || function() {
18637            throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
18638          }();
18639        }
18640        function l(t2, e2) {
18641          (null == e2 || e2 > t2.length) && (e2 = t2.length);
18642          for (var n2 = 0, o2 = new Array(e2); n2 < e2; n2++)
18643            o2[n2] = t2[n2];
18644          return o2;
18645        }
18646        function t(t2) {
18647          if ("undefined" != typeof window && window.navigator)
18648            return !!navigator.userAgent.match(t2);
18649        }
18650        var y = t(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i), w = t(/Edge/i), s = t(/firefox/i), u = t(/safari/i) && !t(/chrome/i) && !t(/android/i), n = t(/iP(ad|od|hone)/i), c = t(/chrome/i) && t(/android/i), d = { capture: false, passive: false };
18651        function h(t2, e2, n2) {
18652          t2.addEventListener(e2, n2, !y && d);
18653        }
18654        function f(t2, e2, n2) {
18655          t2.removeEventListener(e2, n2, !y && d);
18656        }
18657        function p(t2, e2) {
18658          if (e2 && (">" === e2[0] && (e2 = e2.substring(1)), t2))
18659            try {
18660              if (t2.matches)
18661                return t2.matches(e2);
18662              if (t2.msMatchesSelector)
18663                return t2.msMatchesSelector(e2);
18664              if (t2.webkitMatchesSelector)
18665                return t2.webkitMatchesSelector(e2);
18666            } catch (t3) {
18667              return;
18668            }
18669        }
18670        function N(t2, e2, n2, o2) {
18671          if (t2) {
18672            n2 = n2 || document;
18673            do {
18674              if (null != e2 && (">" !== e2[0] || t2.parentNode === n2) && p(t2, e2) || o2 && t2 === n2)
18675                return t2;
18676            } while (t2 !== n2 && (t2 = (i3 = t2).host && i3 !== document && i3.host.nodeType ? i3.host : i3.parentNode));
18677          }
18678          var i3;
18679          return null;
18680        }
18681        var g, m = /\s+/g;
18682        function I(t2, e2, n2) {
18683          var o2;
18684          t2 && e2 && (t2.classList ? t2.classList[n2 ? "add" : "remove"](e2) : (o2 = (" " + t2.className + " ").replace(m, " ").replace(" " + e2 + " ", " "), t2.className = (o2 + (n2 ? " " + e2 : "")).replace(m, " ")));
18685        }
18686        function P(t2, e2, n2) {
18687          var o2 = t2 && t2.style;
18688          if (o2) {
18689            if (void 0 === n2)
18690              return document.defaultView && document.defaultView.getComputedStyle ? n2 = document.defaultView.getComputedStyle(t2, "") : t2.currentStyle && (n2 = t2.currentStyle), void 0 === e2 ? n2 : n2[e2];
18691            o2[e2 = !(e2 in o2 || -1 !== e2.indexOf("webkit")) ? "-webkit-" + e2 : e2] = n2 + ("string" == typeof n2 ? "" : "px");
18692          }
18693        }
18694        function v(t2, e2) {
18695          var n2 = "";
18696          if ("string" == typeof t2)
18697            n2 = t2;
18698          else
18699            do {
18700              var o2 = P(t2, "transform");
18701            } while (o2 && "none" !== o2 && (n2 = o2 + " " + n2), !e2 && (t2 = t2.parentNode));
18702          var i3 = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;
18703          return i3 && new i3(n2);
18704        }
18705        function b(t2, e2, n2) {
18706          if (t2) {
18707            var o2 = t2.getElementsByTagName(e2), i3 = 0, r2 = o2.length;
18708            if (n2)
18709              for (; i3 < r2; i3++)
18710                n2(o2[i3], i3);
18711            return o2;
18712          }
18713          return [];
18714        }
18715        function O() {
18716          var t2 = document.scrollingElement;
18717          return t2 || document.documentElement;
18718        }
18719        function k(t2, e2, n2, o2, i3) {
18720          if (t2.getBoundingClientRect || t2 === window) {
18721            var r2, a2, l2, s2, c2, u2, d2 = t2 !== window && t2.parentNode && t2 !== O() ? (a2 = (r2 = t2.getBoundingClientRect()).top, l2 = r2.left, s2 = r2.bottom, c2 = r2.right, u2 = r2.height, r2.width) : (l2 = a2 = 0, s2 = window.innerHeight, c2 = window.innerWidth, u2 = window.innerHeight, window.innerWidth);
18722            if ((e2 || n2) && t2 !== window && (i3 = i3 || t2.parentNode, !y))
18723              do {
18724                if (i3 && i3.getBoundingClientRect && ("none" !== P(i3, "transform") || n2 && "static" !== P(i3, "position"))) {
18725                  var h2 = i3.getBoundingClientRect();
18726                  a2 -= h2.top + parseInt(P(i3, "border-top-width")), l2 -= h2.left + parseInt(P(i3, "border-left-width")), s2 = a2 + r2.height, c2 = l2 + r2.width;
18727                  break;
18728                }
18729              } while (i3 = i3.parentNode);
18730            return o2 && t2 !== window && (o2 = (e2 = v(i3 || t2)) && e2.a, t2 = e2 && e2.d, e2 && (s2 = (a2 /= t2) + (u2 /= t2), c2 = (l2 /= o2) + (d2 /= o2))), { top: a2, left: l2, bottom: s2, right: c2, width: d2, height: u2 };
18731          }
18732        }
18733        function R(t2, e2, n2) {
18734          for (var o2 = A(t2, true), i3 = k(t2)[e2]; o2; ) {
18735            var r2 = k(o2)[n2];
18736            if (!("top" === n2 || "left" === n2 ? r2 <= i3 : i3 <= r2))
18737              return o2;
18738            if (o2 === O())
18739              break;
18740            o2 = A(o2, false);
18741          }
18742          return false;
18743        }
18744        function X(t2, e2, n2, o2) {
18745          for (var i3 = 0, r2 = 0, a2 = t2.children; r2 < a2.length; ) {
18746            if ("none" !== a2[r2].style.display && a2[r2] !== Bt.ghost && (o2 || a2[r2] !== Bt.dragged) && N(a2[r2], n2.draggable, t2, false)) {
18747              if (i3 === e2)
18748                return a2[r2];
18749              i3++;
18750            }
18751            r2++;
18752          }
18753          return null;
18754        }
18755        function Y(t2, e2) {
18756          for (var n2 = t2.lastElementChild; n2 && (n2 === Bt.ghost || "none" === P(n2, "display") || e2 && !p(n2, e2)); )
18757            n2 = n2.previousElementSibling;
18758          return n2 || null;
18759        }
18760        function B(t2, e2) {
18761          var n2 = 0;
18762          if (!t2 || !t2.parentNode)
18763            return -1;
18764          for (; t2 = t2.previousElementSibling; )
18765            "TEMPLATE" === t2.nodeName.toUpperCase() || t2 === Bt.clone || e2 && !p(t2, e2) || n2++;
18766          return n2;
18767        }
18768        function E(t2) {
18769          var e2 = 0, n2 = 0, o2 = O();
18770          if (t2)
18771            do {
18772              var i3 = v(t2), r2 = i3.a, i3 = i3.d;
18773            } while (e2 += t2.scrollLeft * r2, n2 += t2.scrollTop * i3, t2 !== o2 && (t2 = t2.parentNode));
18774          return [e2, n2];
18775        }
18776        function A(t2, e2) {
18777          if (!t2 || !t2.getBoundingClientRect)
18778            return O();
18779          var n2 = t2, o2 = false;
18780          do {
18781            if (n2.clientWidth < n2.scrollWidth || n2.clientHeight < n2.scrollHeight) {
18782              var i3 = P(n2);
18783              if (n2.clientWidth < n2.scrollWidth && ("auto" == i3.overflowX || "scroll" == i3.overflowX) || n2.clientHeight < n2.scrollHeight && ("auto" == i3.overflowY || "scroll" == i3.overflowY)) {
18784                if (!n2.getBoundingClientRect || n2 === document.body)
18785                  return O();
18786                if (o2 || e2)
18787                  return n2;
18788                o2 = true;
18789              }
18790            }
18791          } while (n2 = n2.parentNode);
18792          return O();
18793        }
18794        function D(t2, e2) {
18795          return Math.round(t2.top) === Math.round(e2.top) && Math.round(t2.left) === Math.round(e2.left) && Math.round(t2.height) === Math.round(e2.height) && Math.round(t2.width) === Math.round(e2.width);
18796        }
18797        function S(e2, n2) {
18798          return function() {
18799            var t2;
18800            g || (1 === (t2 = arguments).length ? e2.call(this, t2[0]) : e2.apply(this, t2), g = setTimeout(function() {
18801              g = void 0;
18802            }, n2));
18803          };
18804        }
18805        function F(t2, e2, n2) {
18806          t2.scrollLeft += e2, t2.scrollTop += n2;
18807        }
18808        function _(t2) {
18809          var e2 = window.Polymer, n2 = window.jQuery || window.Zepto;
18810          return e2 && e2.dom ? e2.dom(t2).cloneNode(true) : n2 ? n2(t2).clone(true)[0] : t2.cloneNode(true);
18811        }
18812        function C(t2, e2) {
18813          P(t2, "position", "absolute"), P(t2, "top", e2.top), P(t2, "left", e2.left), P(t2, "width", e2.width), P(t2, "height", e2.height);
18814        }
18815        function T(t2) {
18816          P(t2, "position", ""), P(t2, "top", ""), P(t2, "left", ""), P(t2, "width", ""), P(t2, "height", "");
18817        }
18818        var j = "Sortable" + new Date().getTime();
18819        function x() {
18820          var e2, o2 = [];
18821          return { captureAnimationState: function() {
18822            o2 = [], this.options.animation && [].slice.call(this.el.children).forEach(function(t2) {
18823              var e3, n2;
18824              "none" !== P(t2, "display") && t2 !== Bt.ghost && (o2.push({ target: t2, rect: k(t2) }), e3 = M({}, o2[o2.length - 1].rect), !t2.thisAnimationDuration || (n2 = v(t2, true)) && (e3.top -= n2.f, e3.left -= n2.e), t2.fromRect = e3);
18825            });
18826          }, addAnimationState: function(t2) {
18827            o2.push(t2);
18828          }, removeAnimationState: function(t2) {
18829            o2.splice(function(t3, e3) {
18830              for (var n2 in t3)
18831                if (t3.hasOwnProperty(n2)) {
18832                  for (var o3 in e3)
18833                    if (e3.hasOwnProperty(o3) && e3[o3] === t3[n2][o3])
18834                      return Number(n2);
18835                }
18836              return -1;
18837            }(o2, { target: t2 }), 1);
18838          }, animateAll: function(t2) {
18839            var c2 = this;
18840            if (!this.options.animation)
18841              return clearTimeout(e2), void ("function" == typeof t2 && t2());
18842            var u2 = false, d2 = 0;
18843            o2.forEach(function(t3) {
18844              var e3 = 0, n2 = t3.target, o3 = n2.fromRect, i3 = k(n2), r2 = n2.prevFromRect, a2 = n2.prevToRect, l2 = t3.rect, s2 = v(n2, true);
18845              s2 && (i3.top -= s2.f, i3.left -= s2.e), n2.toRect = i3, n2.thisAnimationDuration && D(r2, i3) && !D(o3, i3) && (l2.top - i3.top) / (l2.left - i3.left) == (o3.top - i3.top) / (o3.left - i3.left) && (t3 = l2, s2 = r2, r2 = a2, a2 = c2.options, e3 = Math.sqrt(Math.pow(s2.top - t3.top, 2) + Math.pow(s2.left - t3.left, 2)) / Math.sqrt(Math.pow(s2.top - r2.top, 2) + Math.pow(s2.left - r2.left, 2)) * a2.animation), D(i3, o3) || (n2.prevFromRect = o3, n2.prevToRect = i3, e3 = e3 || c2.options.animation, c2.animate(n2, l2, i3, e3)), e3 && (u2 = true, d2 = Math.max(d2, e3), clearTimeout(n2.animationResetTimer), n2.animationResetTimer = setTimeout(function() {
18846                n2.animationTime = 0, n2.prevFromRect = null, n2.fromRect = null, n2.prevToRect = null, n2.thisAnimationDuration = null;
18847              }, e3), n2.thisAnimationDuration = e3);
18848            }), clearTimeout(e2), u2 ? e2 = setTimeout(function() {
18849              "function" == typeof t2 && t2();
18850            }, d2) : "function" == typeof t2 && t2(), o2 = [];
18851          }, animate: function(t2, e3, n2, o3) {
18852            var i3, r2;
18853            o3 && (P(t2, "transition", ""), P(t2, "transform", ""), i3 = (r2 = v(this.el)) && r2.a, r2 = r2 && r2.d, i3 = (e3.left - n2.left) / (i3 || 1), r2 = (e3.top - n2.top) / (r2 || 1), t2.animatingX = !!i3, t2.animatingY = !!r2, P(t2, "transform", "translate3d(" + i3 + "px," + r2 + "px,0)"), this.forRepaintDummy = t2.offsetWidth, P(t2, "transition", "transform " + o3 + "ms" + (this.options.easing ? " " + this.options.easing : "")), P(t2, "transform", "translate3d(0,0,0)"), "number" == typeof t2.animated && clearTimeout(t2.animated), t2.animated = setTimeout(function() {
18854              P(t2, "transition", ""), P(t2, "transform", ""), t2.animated = false, t2.animatingX = false, t2.animatingY = false;
18855            }, o3));
18856          } };
18857        }
18858        var H = [], L2 = { initializeByDefault: true }, K = { mount: function(e2) {
18859          for (var t2 in L2)
18860            !L2.hasOwnProperty(t2) || t2 in e2 || (e2[t2] = L2[t2]);
18861          H.forEach(function(t3) {
18862            if (t3.pluginName === e2.pluginName)
18863              throw "Sortable: Cannot mount plugin ".concat(e2.pluginName, " more than once");
18864          }), H.push(e2);
18865        }, pluginEvent: function(e2, n2, o2) {
18866          var t2 = this;
18867          this.eventCanceled = false, o2.cancel = function() {
18868            t2.eventCanceled = true;
18869          };
18870          var i3 = e2 + "Global";
18871          H.forEach(function(t3) {
18872            n2[t3.pluginName] && (n2[t3.pluginName][i3] && n2[t3.pluginName][i3](M({ sortable: n2 }, o2)), n2.options[t3.pluginName] && n2[t3.pluginName][e2] && n2[t3.pluginName][e2](M({ sortable: n2 }, o2)));
18873          });
18874        }, initializePlugins: function(n2, o2, i3, t2) {
18875          for (var e2 in H.forEach(function(t3) {
18876            var e3 = t3.pluginName;
18877            (n2.options[e3] || t3.initializeByDefault) && ((t3 = new t3(n2, o2, n2.options)).sortable = n2, t3.options = n2.options, n2[e3] = t3, a(i3, t3.defaults));
18878          }), n2.options) {
18879            var r2;
18880            n2.options.hasOwnProperty(e2) && (void 0 !== (r2 = this.modifyOption(n2, e2, n2.options[e2])) && (n2.options[e2] = r2));
18881          }
18882        }, getEventProperties: function(e2, n2) {
18883          var o2 = {};
18884          return H.forEach(function(t2) {
18885            "function" == typeof t2.eventProperties && a(o2, t2.eventProperties.call(n2[t2.pluginName], e2));
18886          }), o2;
18887        }, modifyOption: function(e2, n2, o2) {
18888          var i3;
18889          return H.forEach(function(t2) {
18890            e2[t2.pluginName] && t2.optionListeners && "function" == typeof t2.optionListeners[n2] && (i3 = t2.optionListeners[n2].call(e2[t2.pluginName], o2));
18891          }), i3;
18892        } };
18893        function W(t2) {
18894          var e2 = t2.sortable, n2 = t2.rootEl, o2 = t2.name, i3 = t2.targetEl, r2 = t2.cloneEl, a2 = t2.toEl, l2 = t2.fromEl, s2 = t2.oldIndex, c2 = t2.newIndex, u2 = t2.oldDraggableIndex, d2 = t2.newDraggableIndex, h2 = t2.originalEvent, f2 = t2.putSortable, p2 = t2.extraEventProperties;
18895          if (e2 = e2 || n2 && n2[j]) {
18896            var g2, m2 = e2.options, t2 = "on" + o2.charAt(0).toUpperCase() + o2.substr(1);
18897            !window.CustomEvent || y || w ? (g2 = document.createEvent("Event")).initEvent(o2, true, true) : g2 = new CustomEvent(o2, { bubbles: true, cancelable: true }), g2.to = a2 || n2, g2.from = l2 || n2, g2.item = i3 || n2, g2.clone = r2, g2.oldIndex = s2, g2.newIndex = c2, g2.oldDraggableIndex = u2, g2.newDraggableIndex = d2, g2.originalEvent = h2, g2.pullMode = f2 ? f2.lastPutMode : void 0;
18898            var v2, b2 = M(M({}, p2), K.getEventProperties(o2, e2));
18899            for (v2 in b2)
18900              g2[v2] = b2[v2];
18901            n2 && n2.dispatchEvent(g2), m2[t2] && m2[t2].call(e2, g2);
18902          }
18903        }
18904        function z(t2, e2) {
18905          var n2 = (o2 = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {}).evt, o2 = i2(o2, G);
18906          K.pluginEvent.bind(Bt)(t2, e2, M({ dragEl: q, parentEl: V, ghostEl: Z, rootEl: $2, nextEl: Q, lastDownEl: J, cloneEl: tt, cloneHidden: et, dragStarted: pt, putSortable: lt, activeSortable: Bt.active, originalEvent: n2, oldIndex: nt, oldDraggableIndex: it, newIndex: ot, newDraggableIndex: rt, hideGhostForTarget: kt, unhideGhostForTarget: Rt, cloneNowHidden: function() {
18907            et = true;
18908          }, cloneNowShown: function() {
18909            et = false;
18910          }, dispatchSortableEvent: function(t3) {
18911            U({ sortable: e2, name: t3, originalEvent: n2 });
18912          } }, o2));
18913        }
18914        var G = ["evt"];
18915        function U(t2) {
18916          W(M({ putSortable: lt, cloneEl: tt, targetEl: q, rootEl: $2, oldIndex: nt, oldDraggableIndex: it, newIndex: ot, newDraggableIndex: rt }, t2));
18917        }
18918        var q, V, Z, $2, Q, J, tt, et, nt, ot, it, rt, at, lt, st, ct, ut, dt, ht, ft, pt, gt, mt, vt, bt, yt = false, wt = false, Et = [], Dt = false, St = false, _t = [], Ct = false, Tt = [], xt = "undefined" != typeof document, Ot = n, At = w || y ? "cssFloat" : "float", Mt = xt && !c && !n && "draggable" in document.createElement("div"), Nt = function() {
18919          if (xt) {
18920            if (y)
18921              return false;
18922            var t2 = document.createElement("x");
18923            return t2.style.cssText = "pointer-events:auto", "auto" === t2.style.pointerEvents;
18924          }
18925        }(), It = function(t2, e2) {
18926          var n2 = P(t2), o2 = parseInt(n2.width) - parseInt(n2.paddingLeft) - parseInt(n2.paddingRight) - parseInt(n2.borderLeftWidth) - parseInt(n2.borderRightWidth), i3 = X(t2, 0, e2), r2 = X(t2, 1, e2), a2 = i3 && P(i3), l2 = r2 && P(r2), s2 = a2 && parseInt(a2.marginLeft) + parseInt(a2.marginRight) + k(i3).width, t2 = l2 && parseInt(l2.marginLeft) + parseInt(l2.marginRight) + k(r2).width;
18927          if ("flex" === n2.display)
18928            return "column" === n2.flexDirection || "column-reverse" === n2.flexDirection ? "vertical" : "horizontal";
18929          if ("grid" === n2.display)
18930            return n2.gridTemplateColumns.split(" ").length <= 1 ? "vertical" : "horizontal";
18931          if (i3 && a2.float && "none" !== a2.float) {
18932            e2 = "left" === a2.float ? "left" : "right";
18933            return !r2 || "both" !== l2.clear && l2.clear !== e2 ? "horizontal" : "vertical";
18934          }
18935          return i3 && ("block" === a2.display || "flex" === a2.display || "table" === a2.display || "grid" === a2.display || o2 <= s2 && "none" === n2[At] || r2 && "none" === n2[At] && o2 < s2 + t2) ? "vertical" : "horizontal";
18936        }, Pt = function(t2) {
18937          function l2(r2, a2) {
18938            return function(t3, e3, n3, o2) {
18939              var i3 = t3.options.group.name && e3.options.group.name && t3.options.group.name === e3.options.group.name;
18940              if (null == r2 && (a2 || i3))
18941                return true;
18942              if (null == r2 || false === r2)
18943                return false;
18944              if (a2 && "clone" === r2)
18945                return r2;
18946              if ("function" == typeof r2)
18947                return l2(r2(t3, e3, n3, o2), a2)(t3, e3, n3, o2);
18948              e3 = (a2 ? t3 : e3).options.group.name;
18949              return true === r2 || "string" == typeof r2 && r2 === e3 || r2.join && -1 < r2.indexOf(e3);
18950            };
18951          }
18952          var e2 = {}, n2 = t2.group;
18953          n2 && "object" == o(n2) || (n2 = { name: n2 }), e2.name = n2.name, e2.checkPull = l2(n2.pull, true), e2.checkPut = l2(n2.put), e2.revertClone = n2.revertClone, t2.group = e2;
18954        }, kt = function() {
18955          !Nt && Z && P(Z, "display", "none");
18956        }, Rt = function() {
18957          !Nt && Z && P(Z, "display", "");
18958        };
18959        xt && !c && document.addEventListener("click", function(t2) {
18960          if (wt)
18961            return t2.preventDefault(), t2.stopPropagation && t2.stopPropagation(), t2.stopImmediatePropagation && t2.stopImmediatePropagation(), wt = false;
18962        }, true);
18963        function Xt(t2) {
18964          if (q) {
18965            t2 = t2.touches ? t2.touches[0] : t2;
18966            var e2 = (i3 = t2.clientX, r2 = t2.clientY, Et.some(function(t3) {
18967              var e3 = t3[j].options.emptyInsertThreshold;
18968              if (e3 && !Y(t3)) {
18969                var n3 = k(t3), o3 = i3 >= n3.left - e3 && i3 <= n3.right + e3, e3 = r2 >= n3.top - e3 && r2 <= n3.bottom + e3;
18970                return o3 && e3 ? a2 = t3 : void 0;
18971              }
18972            }), a2);
18973            if (e2) {
18974              var n2, o2 = {};
18975              for (n2 in t2)
18976                t2.hasOwnProperty(n2) && (o2[n2] = t2[n2]);
18977              o2.target = o2.rootEl = e2, o2.preventDefault = void 0, o2.stopPropagation = void 0, e2[j]._onDragOver(o2);
18978            }
18979          }
18980          var i3, r2, a2;
18981        }
18982        function Yt(t2) {
18983          q && q.parentNode[j]._isOutsideThisEl(t2.target);
18984        }
18985        function Bt(t2, e2) {
18986          if (!t2 || !t2.nodeType || 1 !== t2.nodeType)
18987            throw "Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t2));
18988          this.el = t2, this.options = e2 = a({}, e2), t2[j] = this;
18989          var n2, o2, i3 = { group: null, sort: true, disabled: false, store: null, handle: null, draggable: /^[uo]l$/i.test(t2.nodeName) ? ">li" : ">*", swapThreshold: 1, invertSwap: false, invertedSwapThreshold: null, removeCloneOnHide: true, direction: function() {
18990            return It(t2, this.options);
18991          }, ghostClass: "sortable-ghost", chosenClass: "sortable-chosen", dragClass: "sortable-drag", ignore: "a, img", filter: null, preventOnFilter: true, animation: 0, easing: null, setData: function(t3, e3) {
18992            t3.setData("Text", e3.textContent);
18993          }, dropBubble: false, dragoverBubble: false, dataIdAttr: "data-id", delay: 0, delayOnTouchOnly: false, touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1, forceFallback: false, fallbackClass: "sortable-fallback", fallbackOnBody: false, fallbackTolerance: 0, fallbackOffset: { x: 0, y: 0 }, supportPointer: false !== Bt.supportPointer && "PointerEvent" in window && !u, emptyInsertThreshold: 5 };
18994          for (n2 in K.initializePlugins(this, t2, i3), i3)
18995            n2 in e2 || (e2[n2] = i3[n2]);
18996          for (o2 in Pt(e2), this)
18997            "_" === o2.charAt(0) && "function" == typeof this[o2] && (this[o2] = this[o2].bind(this));
18998          this.nativeDraggable = !e2.forceFallback && Mt, this.nativeDraggable && (this.options.touchStartThreshold = 1), e2.supportPointer ? h(t2, "pointerdown", this._onTapStart) : (h(t2, "mousedown", this._onTapStart), h(t2, "touchstart", this._onTapStart)), this.nativeDraggable && (h(t2, "dragover", this), h(t2, "dragenter", this)), Et.push(this.el), e2.store && e2.store.get && this.sort(e2.store.get(this) || []), a(this, x());
18999        }
19000        function Ft(t2, e2, n2, o2, i3, r2, a2, l2) {
19001          var s2, c2, u2 = t2[j], d2 = u2.options.onMove;
19002          return !window.CustomEvent || y || w ? (s2 = document.createEvent("Event")).initEvent("move", true, true) : s2 = new CustomEvent("move", { bubbles: true, cancelable: true }), s2.to = e2, s2.from = t2, s2.dragged = n2, s2.draggedRect = o2, s2.related = i3 || e2, s2.relatedRect = r2 || k(e2), s2.willInsertAfter = l2, s2.originalEvent = a2, t2.dispatchEvent(s2), c2 = d2 ? d2.call(u2, s2, a2) : c2;
19003        }
19004        function jt(t2) {
19005          t2.draggable = false;
19006        }
19007        function Ht() {
19008          Ct = false;
19009        }
19010        function Lt(t2) {
19011          return setTimeout(t2, 0);
19012        }
19013        function Kt(t2) {
19014          return clearTimeout(t2);
19015        }
19016        Bt.prototype = { constructor: Bt, _isOutsideThisEl: function(t2) {
19017          this.el.contains(t2) || t2 === this.el || (gt = null);
19018        }, _getDirection: function(t2, e2) {
19019          return "function" == typeof this.options.direction ? this.options.direction.call(this, t2, e2, q) : this.options.direction;
19020        }, _onTapStart: function(e2) {
19021          if (e2.cancelable) {
19022            var n2 = this, o2 = this.el, t2 = this.options, i3 = t2.preventOnFilter, r2 = e2.type, a2 = e2.touches && e2.touches[0] || e2.pointerType && "touch" === e2.pointerType && e2, l2 = (a2 || e2).target, s2 = e2.target.shadowRoot && (e2.path && e2.path[0] || e2.composedPath && e2.composedPath()[0]) || l2, c2 = t2.filter;
19023            if (!function(t3) {
19024              Tt.length = 0;
19025              var e3 = t3.getElementsByTagName("input"), n3 = e3.length;
19026              for (; n3--; ) {
19027                var o3 = e3[n3];
19028                o3.checked && Tt.push(o3);
19029              }
19030            }(o2), !q && !(/mousedown|pointerdown/.test(r2) && 0 !== e2.button || t2.disabled) && !s2.isContentEditable && (this.nativeDraggable || !u || !l2 || "SELECT" !== l2.tagName.toUpperCase()) && !((l2 = N(l2, t2.draggable, o2, false)) && l2.animated || J === l2)) {
19031              if (nt = B(l2), it = B(l2, t2.draggable), "function" == typeof c2) {
19032                if (c2.call(this, e2, l2, this))
19033                  return U({ sortable: n2, rootEl: s2, name: "filter", targetEl: l2, toEl: o2, fromEl: o2 }), z("filter", n2, { evt: e2 }), void (i3 && e2.cancelable && e2.preventDefault());
19034              } else if (c2 = c2 && c2.split(",").some(function(t3) {
19035                if (t3 = N(s2, t3.trim(), o2, false))
19036                  return U({ sortable: n2, rootEl: t3, name: "filter", targetEl: l2, fromEl: o2, toEl: o2 }), z("filter", n2, { evt: e2 }), true;
19037              }))
19038                return void (i3 && e2.cancelable && e2.preventDefault());
19039              t2.handle && !N(s2, t2.handle, o2, false) || this._prepareDragStart(e2, a2, l2);
19040            }
19041          }
19042        }, _prepareDragStart: function(t2, e2, n2) {
19043          var o2, i3 = this, r2 = i3.el, a2 = i3.options, l2 = r2.ownerDocument;
19044          n2 && !q && n2.parentNode === r2 && (o2 = k(n2), $2 = r2, V = (q = n2).parentNode, Q = q.nextSibling, J = n2, at = a2.group, st = { target: Bt.dragged = q, clientX: (e2 || t2).clientX, clientY: (e2 || t2).clientY }, ht = st.clientX - o2.left, ft = st.clientY - o2.top, this._lastX = (e2 || t2).clientX, this._lastY = (e2 || t2).clientY, q.style["will-change"] = "all", o2 = function() {
19045            z("delayEnded", i3, { evt: t2 }), Bt.eventCanceled ? i3._onDrop() : (i3._disableDelayedDragEvents(), !s && i3.nativeDraggable && (q.draggable = true), i3._triggerDragStart(t2, e2), U({ sortable: i3, name: "choose", originalEvent: t2 }), I(q, a2.chosenClass, true));
19046          }, a2.ignore.split(",").forEach(function(t3) {
19047            b(q, t3.trim(), jt);
19048          }), h(l2, "dragover", Xt), h(l2, "mousemove", Xt), h(l2, "touchmove", Xt), h(l2, "mouseup", i3._onDrop), h(l2, "touchend", i3._onDrop), h(l2, "touchcancel", i3._onDrop), s && this.nativeDraggable && (this.options.touchStartThreshold = 4, q.draggable = true), z("delayStart", this, { evt: t2 }), !a2.delay || a2.delayOnTouchOnly && !e2 || this.nativeDraggable && (w || y) ? o2() : Bt.eventCanceled ? this._onDrop() : (h(l2, "mouseup", i3._disableDelayedDrag), h(l2, "touchend", i3._disableDelayedDrag), h(l2, "touchcancel", i3._disableDelayedDrag), h(l2, "mousemove", i3._delayedDragTouchMoveHandler), h(l2, "touchmove", i3._delayedDragTouchMoveHandler), a2.supportPointer && h(l2, "pointermove", i3._delayedDragTouchMoveHandler), i3._dragStartTimer = setTimeout(o2, a2.delay)));
19049        }, _delayedDragTouchMoveHandler: function(t2) {
19050          t2 = t2.touches ? t2.touches[0] : t2;
19051          Math.max(Math.abs(t2.clientX - this._lastX), Math.abs(t2.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1)) && this._disableDelayedDrag();
19052        }, _disableDelayedDrag: function() {
19053          q && jt(q), clearTimeout(this._dragStartTimer), this._disableDelayedDragEvents();
19054        }, _disableDelayedDragEvents: function() {
19055          var t2 = this.el.ownerDocument;
19056          f(t2, "mouseup", this._disableDelayedDrag), f(t2, "touchend", this._disableDelayedDrag), f(t2, "touchcancel", this._disableDelayedDrag), f(t2, "mousemove", this._delayedDragTouchMoveHandler), f(t2, "touchmove", this._delayedDragTouchMoveHandler), f(t2, "pointermove", this._delayedDragTouchMoveHandler);
19057        }, _triggerDragStart: function(t2, e2) {
19058          e2 = e2 || "touch" == t2.pointerType && t2, !this.nativeDraggable || e2 ? this.options.supportPointer ? h(document, "pointermove", this._onTouchMove) : h(document, e2 ? "touchmove" : "mousemove", this._onTouchMove) : (h(q, "dragend", this), h($2, "dragstart", this._onDragStart));
19059          try {
19060            document.selection ? Lt(function() {
19061              document.selection.empty();
19062            }) : window.getSelection().removeAllRanges();
19063          } catch (t3) {
19064          }
19065        }, _dragStarted: function(t2, e2) {
19066          var n2;
19067          yt = false, $2 && q ? (z("dragStarted", this, { evt: e2 }), this.nativeDraggable && h(document, "dragover", Yt), n2 = this.options, t2 || I(q, n2.dragClass, false), I(q, n2.ghostClass, true), Bt.active = this, t2 && this._appendGhost(), U({ sortable: this, name: "start", originalEvent: e2 })) : this._nulling();
19068        }, _emulateDragOver: function() {
19069          if (ct) {
19070            this._lastX = ct.clientX, this._lastY = ct.clientY, kt();
19071            for (var t2 = document.elementFromPoint(ct.clientX, ct.clientY), e2 = t2; t2 && t2.shadowRoot && (t2 = t2.shadowRoot.elementFromPoint(ct.clientX, ct.clientY)) !== e2; )
19072              e2 = t2;
19073            if (q.parentNode[j]._isOutsideThisEl(t2), e2)
19074              do {
19075                if (e2[j]) {
19076                  if (e2[j]._onDragOver({ clientX: ct.clientX, clientY: ct.clientY, target: t2, rootEl: e2 }) && !this.options.dragoverBubble)
19077                    break;
19078                }
19079              } while (e2 = (t2 = e2).parentNode);
19080            Rt();
19081          }
19082        }, _onTouchMove: function(t2) {
19083          if (st) {
19084            var e2 = this.options, n2 = e2.fallbackTolerance, o2 = e2.fallbackOffset, i3 = t2.touches ? t2.touches[0] : t2, r2 = Z && v(Z, true), a2 = Z && r2 && r2.a, l2 = Z && r2 && r2.d, e2 = Ot && bt && E(bt), a2 = (i3.clientX - st.clientX + o2.x) / (a2 || 1) + (e2 ? e2[0] - _t[0] : 0) / (a2 || 1), l2 = (i3.clientY - st.clientY + o2.y) / (l2 || 1) + (e2 ? e2[1] - _t[1] : 0) / (l2 || 1);
19085            if (!Bt.active && !yt) {
19086              if (n2 && Math.max(Math.abs(i3.clientX - this._lastX), Math.abs(i3.clientY - this._lastY)) < n2)
19087                return;
19088              this._onDragStart(t2, true);
19089            }
19090            Z && (r2 ? (r2.e += a2 - (ut || 0), r2.f += l2 - (dt || 0)) : r2 = { a: 1, b: 0, c: 0, d: 1, e: a2, f: l2 }, r2 = "matrix(".concat(r2.a, ",").concat(r2.b, ",").concat(r2.c, ",").concat(r2.d, ",").concat(r2.e, ",").concat(r2.f, ")"), P(Z, "webkitTransform", r2), P(Z, "mozTransform", r2), P(Z, "msTransform", r2), P(Z, "transform", r2), ut = a2, dt = l2, ct = i3), t2.cancelable && t2.preventDefault();
19091          }
19092        }, _appendGhost: function() {
19093          if (!Z) {
19094            var t2 = this.options.fallbackOnBody ? document.body : $2, e2 = k(q, true, Ot, true, t2), n2 = this.options;
19095            if (Ot) {
19096              for (bt = t2; "static" === P(bt, "position") && "none" === P(bt, "transform") && bt !== document; )
19097                bt = bt.parentNode;
19098              bt !== document.body && bt !== document.documentElement ? (bt === document && (bt = O()), e2.top += bt.scrollTop, e2.left += bt.scrollLeft) : bt = O(), _t = E(bt);
19099            }
19100            I(Z = q.cloneNode(true), n2.ghostClass, false), I(Z, n2.fallbackClass, true), I(Z, n2.dragClass, true), P(Z, "transition", ""), P(Z, "transform", ""), P(Z, "box-sizing", "border-box"), P(Z, "margin", 0), P(Z, "top", e2.top), P(Z, "left", e2.left), P(Z, "width", e2.width), P(Z, "height", e2.height), P(Z, "opacity", "0.8"), P(Z, "position", Ot ? "absolute" : "fixed"), P(Z, "zIndex", "100000"), P(Z, "pointerEvents", "none"), Bt.ghost = Z, t2.appendChild(Z), P(Z, "transform-origin", ht / parseInt(Z.style.width) * 100 + "% " + ft / parseInt(Z.style.height) * 100 + "%");
19101          }
19102        }, _onDragStart: function(t2, e2) {
19103          var n2 = this, o2 = t2.dataTransfer, i3 = n2.options;
19104          z("dragStart", this, { evt: t2 }), Bt.eventCanceled ? this._onDrop() : (z("setupClone", this), Bt.eventCanceled || ((tt = _(q)).removeAttribute("id"), tt.draggable = false, tt.style["will-change"] = "", this._hideClone(), I(tt, this.options.chosenClass, false), Bt.clone = tt), n2.cloneId = Lt(function() {
19105            z("clone", n2), Bt.eventCanceled || (n2.options.removeCloneOnHide || $2.insertBefore(tt, q), n2._hideClone(), U({ sortable: n2, name: "clone" }));
19106          }), e2 || I(q, i3.dragClass, true), e2 ? (wt = true, n2._loopId = setInterval(n2._emulateDragOver, 50)) : (f(document, "mouseup", n2._onDrop), f(document, "touchend", n2._onDrop), f(document, "touchcancel", n2._onDrop), o2 && (o2.effectAllowed = "move", i3.setData && i3.setData.call(n2, o2, q)), h(document, "drop", n2), P(q, "transform", "translateZ(0)")), yt = true, n2._dragStartId = Lt(n2._dragStarted.bind(n2, e2, t2)), h(document, "selectstart", n2), pt = true, u && P(document.body, "user-select", "none"));
19107        }, _onDragOver: function(n2) {
19108          var o2, i3, r2, t2, a2 = this.el, l2 = n2.target, e2 = this.options, s2 = e2.group, c2 = Bt.active, u2 = at === s2, d2 = e2.sort, h2 = lt || c2, f2 = this, p2 = false;
19109          if (!Ct) {
19110            if (void 0 !== n2.preventDefault && n2.cancelable && n2.preventDefault(), l2 = N(l2, e2.draggable, a2, true), T2("dragOver"), Bt.eventCanceled)
19111              return p2;
19112            if (q.contains(n2.target) || l2.animated && l2.animatingX && l2.animatingY || f2._ignoreWhileAnimating === l2)
19113              return O2(false);
19114            if (wt = false, c2 && !e2.disabled && (u2 ? d2 || (i3 = V !== $2) : lt === this || (this.lastPutMode = at.checkPull(this, c2, q, n2)) && s2.checkPut(this, c2, q, n2))) {
19115              if (r2 = "vertical" === this._getDirection(n2, l2), o2 = k(q), T2("dragOverValid"), Bt.eventCanceled)
19116                return p2;
19117              if (i3)
19118                return V = $2, x2(), this._hideClone(), T2("revert"), Bt.eventCanceled || (Q ? $2.insertBefore(q, Q) : $2.appendChild(q)), O2(true);
19119              var g2 = Y(a2, e2.draggable);
19120              if (!g2 || function(t3, e3, n3) {
19121                n3 = k(Y(n3.el, n3.options.draggable));
19122                return e3 ? t3.clientX > n3.right + 10 || t3.clientX <= n3.right && t3.clientY > n3.bottom && t3.clientX >= n3.left : t3.clientX > n3.right && t3.clientY > n3.top || t3.clientX <= n3.right && t3.clientY > n3.bottom + 10;
19123              }(n2, r2, this) && !g2.animated) {
19124                if (g2 === q)
19125                  return O2(false);
19126                if ((l2 = g2 && a2 === n2.target ? g2 : l2) && (w2 = k(l2)), false !== Ft($2, a2, q, o2, l2, w2, n2, !!l2))
19127                  return x2(), g2 && g2.nextSibling ? a2.insertBefore(q, g2.nextSibling) : a2.appendChild(q), V = a2, A2(), O2(true);
19128              } else if (g2 && function(t3, e3, n3) {
19129                n3 = k(X(n3.el, 0, n3.options, true));
19130                return e3 ? t3.clientX < n3.left - 10 || t3.clientY < n3.top && t3.clientX < n3.right : t3.clientY < n3.top - 10 || t3.clientY < n3.bottom && t3.clientX < n3.left;
19131              }(n2, r2, this)) {
19132                var m2 = X(a2, 0, e2, true);
19133                if (m2 === q)
19134                  return O2(false);
19135                if (w2 = k(l2 = m2), false !== Ft($2, a2, q, o2, l2, w2, n2, false))
19136                  return x2(), a2.insertBefore(q, m2), V = a2, A2(), O2(true);
19137              } else if (l2.parentNode === a2) {
19138                var v2, b2, y2, w2 = k(l2), E2 = q.parentNode !== a2, D2 = (D2 = q.animated && q.toRect || o2, C2 = l2.animated && l2.toRect || w2, S2 = (t2 = r2) ? D2.left : D2.top, s2 = t2 ? D2.right : D2.bottom, g2 = t2 ? D2.width : D2.height, m2 = t2 ? C2.left : C2.top, D2 = t2 ? C2.right : C2.bottom, C2 = t2 ? C2.width : C2.height, !(S2 === m2 || s2 === D2 || S2 + g2 / 2 === m2 + C2 / 2)), S2 = r2 ? "top" : "left", g2 = R(l2, "top", "top") || R(q, "top", "top"), m2 = g2 ? g2.scrollTop : void 0;
19139                if (gt !== l2 && (b2 = w2[S2], Dt = false, St = !D2 && e2.invertSwap || E2), 0 !== (v2 = function(t3, e3, n3, o3, i4, r3, a3, l3) {
19140                  var s3 = o3 ? t3.clientY : t3.clientX, c3 = o3 ? n3.height : n3.width, t3 = o3 ? n3.top : n3.left, o3 = o3 ? n3.bottom : n3.right, n3 = false;
19141                  if (!a3) {
19142                    if (l3 && vt < c3 * i4) {
19143                      if (Dt = !Dt && (1 === mt ? t3 + c3 * r3 / 2 < s3 : s3 < o3 - c3 * r3 / 2) ? true : Dt)
19144                        n3 = true;
19145                      else if (1 === mt ? s3 < t3 + vt : o3 - vt < s3)
19146                        return -mt;
19147                    } else if (t3 + c3 * (1 - i4) / 2 < s3 && s3 < o3 - c3 * (1 - i4) / 2)
19148                      return function(t4) {
19149                        return B(q) < B(t4) ? 1 : -1;
19150                      }(e3);
19151                  }
19152                  if ((n3 = n3 || a3) && (s3 < t3 + c3 * r3 / 2 || o3 - c3 * r3 / 2 < s3))
19153                    return t3 + c3 / 2 < s3 ? 1 : -1;
19154                  return 0;
19155                }(n2, l2, w2, r2, D2 ? 1 : e2.swapThreshold, null == e2.invertedSwapThreshold ? e2.swapThreshold : e2.invertedSwapThreshold, St, gt === l2)))
19156                  for (var _2 = B(q); (y2 = V.children[_2 -= v2]) && ("none" === P(y2, "display") || y2 === Z); )
19157                    ;
19158                if (0 === v2 || y2 === l2)
19159                  return O2(false);
19160                mt = v2;
19161                var C2 = (gt = l2).nextElementSibling, E2 = false, D2 = Ft($2, a2, q, o2, l2, w2, n2, E2 = 1 === v2);
19162                if (false !== D2)
19163                  return 1 !== D2 && -1 !== D2 || (E2 = 1 === D2), Ct = true, setTimeout(Ht, 30), x2(), E2 && !C2 ? a2.appendChild(q) : l2.parentNode.insertBefore(q, E2 ? C2 : l2), g2 && F(g2, 0, m2 - g2.scrollTop), V = q.parentNode, void 0 === b2 || St || (vt = Math.abs(b2 - k(l2)[S2])), A2(), O2(true);
19164              }
19165              if (a2.contains(q))
19166                return O2(false);
19167            }
19168            return false;
19169          }
19170          function T2(t3, e3) {
19171            z(t3, f2, M({ evt: n2, isOwner: u2, axis: r2 ? "vertical" : "horizontal", revert: i3, dragRect: o2, targetRect: w2, canSort: d2, fromSortable: h2, target: l2, completed: O2, onMove: function(t4, e4) {
19172              return Ft($2, a2, q, o2, t4, k(t4), n2, e4);
19173            }, changed: A2 }, e3));
19174          }
19175          function x2() {
19176            T2("dragOverAnimationCapture"), f2.captureAnimationState(), f2 !== h2 && h2.captureAnimationState();
19177          }
19178          function O2(t3) {
19179            return T2("dragOverCompleted", { insertion: t3 }), t3 && (u2 ? c2._hideClone() : c2._showClone(f2), f2 !== h2 && (I(q, (lt || c2).options.ghostClass, false), I(q, e2.ghostClass, true)), lt !== f2 && f2 !== Bt.active ? lt = f2 : f2 === Bt.active && lt && (lt = null), h2 === f2 && (f2._ignoreWhileAnimating = l2), f2.animateAll(function() {
19180              T2("dragOverAnimationComplete"), f2._ignoreWhileAnimating = null;
19181            }), f2 !== h2 && (h2.animateAll(), h2._ignoreWhileAnimating = null)), (l2 === q && !q.animated || l2 === a2 && !l2.animated) && (gt = null), e2.dragoverBubble || n2.rootEl || l2 === document || (q.parentNode[j]._isOutsideThisEl(n2.target), t3 || Xt(n2)), !e2.dragoverBubble && n2.stopPropagation && n2.stopPropagation(), p2 = true;
19182          }
19183          function A2() {
19184            ot = B(q), rt = B(q, e2.draggable), U({ sortable: f2, name: "change", toEl: a2, newIndex: ot, newDraggableIndex: rt, originalEvent: n2 });
19185          }
19186        }, _ignoreWhileAnimating: null, _offMoveEvents: function() {
19187          f(document, "mousemove", this._onTouchMove), f(document, "touchmove", this._onTouchMove), f(document, "pointermove", this._onTouchMove), f(document, "dragover", Xt), f(document, "mousemove", Xt), f(document, "touchmove", Xt);
19188        }, _offUpEvents: function() {
19189          var t2 = this.el.ownerDocument;
19190          f(t2, "mouseup", this._onDrop), f(t2, "touchend", this._onDrop), f(t2, "pointerup", this._onDrop), f(t2, "touchcancel", this._onDrop), f(document, "selectstart", this);
19191        }, _onDrop: function(t2) {
19192          var e2 = this.el, n2 = this.options;
19193          ot = B(q), rt = B(q, n2.draggable), z("drop", this, { evt: t2 }), V = q && q.parentNode, ot = B(q), rt = B(q, n2.draggable), Bt.eventCanceled || (Dt = St = yt = false, clearInterval(this._loopId), clearTimeout(this._dragStartTimer), Kt(this.cloneId), Kt(this._dragStartId), this.nativeDraggable && (f(document, "drop", this), f(e2, "dragstart", this._onDragStart)), this._offMoveEvents(), this._offUpEvents(), u && P(document.body, "user-select", ""), P(q, "transform", ""), t2 && (pt && (t2.cancelable && t2.preventDefault(), n2.dropBubble || t2.stopPropagation()), Z && Z.parentNode && Z.parentNode.removeChild(Z), ($2 === V || lt && "clone" !== lt.lastPutMode) && tt && tt.parentNode && tt.parentNode.removeChild(tt), q && (this.nativeDraggable && f(q, "dragend", this), jt(q), q.style["will-change"] = "", pt && !yt && I(q, (lt || this).options.ghostClass, false), I(q, this.options.chosenClass, false), U({ sortable: this, name: "unchoose", toEl: V, newIndex: null, newDraggableIndex: null, originalEvent: t2 }), $2 !== V ? (0 <= ot && (U({ rootEl: V, name: "add", toEl: V, fromEl: $2, originalEvent: t2 }), U({ sortable: this, name: "remove", toEl: V, originalEvent: t2 }), U({ rootEl: V, name: "sort", toEl: V, fromEl: $2, originalEvent: t2 }), U({ sortable: this, name: "sort", toEl: V, originalEvent: t2 })), lt && lt.save()) : ot !== nt && 0 <= ot && (U({ sortable: this, name: "update", toEl: V, originalEvent: t2 }), U({ sortable: this, name: "sort", toEl: V, originalEvent: t2 })), Bt.active && (null != ot && -1 !== ot || (ot = nt, rt = it), U({ sortable: this, name: "end", toEl: V, originalEvent: t2 }), this.save())))), this._nulling();
19194        }, _nulling: function() {
19195          z("nulling", this), $2 = q = V = Z = Q = tt = J = et = st = ct = pt = ot = rt = nt = it = gt = mt = lt = at = Bt.dragged = Bt.ghost = Bt.clone = Bt.active = null, Tt.forEach(function(t2) {
19196            t2.checked = true;
19197          }), Tt.length = ut = dt = 0;
19198        }, handleEvent: function(t2) {
19199          switch (t2.type) {
19200            case "drop":
19201            case "dragend":
19202              this._onDrop(t2);
19203              break;
19204            case "dragenter":
19205            case "dragover":
19206              q && (this._onDragOver(t2), function(t3) {
19207                t3.dataTransfer && (t3.dataTransfer.dropEffect = "move");
19208                t3.cancelable && t3.preventDefault();
19209              }(t2));
19210              break;
19211            case "selectstart":
19212              t2.preventDefault();
19213          }
19214        }, toArray: function() {
19215          for (var t2, e2 = [], n2 = this.el.children, o2 = 0, i3 = n2.length, r2 = this.options; o2 < i3; o2++)
19216            N(t2 = n2[o2], r2.draggable, this.el, false) && e2.push(t2.getAttribute(r2.dataIdAttr) || function(t3) {
19217              var e3 = t3.tagName + t3.className + t3.src + t3.href + t3.textContent, n3 = e3.length, o3 = 0;
19218              for (; n3--; )
19219                o3 += e3.charCodeAt(n3);
19220              return o3.toString(36);
19221            }(t2));
19222          return e2;
19223        }, sort: function(t2, e2) {
19224          var n2 = {}, o2 = this.el;
19225          this.toArray().forEach(function(t3, e3) {
19226            e3 = o2.children[e3];
19227            N(e3, this.options.draggable, o2, false) && (n2[t3] = e3);
19228          }, this), e2 && this.captureAnimationState(), t2.forEach(function(t3) {
19229            n2[t3] && (o2.removeChild(n2[t3]), o2.appendChild(n2[t3]));
19230          }), e2 && this.animateAll();
19231        }, save: function() {
19232          var t2 = this.options.store;
19233          t2 && t2.set && t2.set(this);
19234        }, closest: function(t2, e2) {
19235          return N(t2, e2 || this.options.draggable, this.el, false);
19236        }, option: function(t2, e2) {
19237          var n2 = this.options;
19238          if (void 0 === e2)
19239            return n2[t2];
19240          var o2 = K.modifyOption(this, t2, e2);
19241          n2[t2] = void 0 !== o2 ? o2 : e2, "group" === t2 && Pt(n2);
19242        }, destroy: function() {
19243          z("destroy", this);
19244          var t2 = this.el;
19245          t2[j] = null, f(t2, "mousedown", this._onTapStart), f(t2, "touchstart", this._onTapStart), f(t2, "pointerdown", this._onTapStart), this.nativeDraggable && (f(t2, "dragover", this), f(t2, "dragenter", this)), Array.prototype.forEach.call(t2.querySelectorAll("[draggable]"), function(t3) {
19246            t3.removeAttribute("draggable");
19247          }), this._onDrop(), this._disableDelayedDragEvents(), Et.splice(Et.indexOf(this.el), 1), this.el = t2 = null;
19248        }, _hideClone: function() {
19249          et || (z("hideClone", this), Bt.eventCanceled || (P(tt, "display", "none"), this.options.removeCloneOnHide && tt.parentNode && tt.parentNode.removeChild(tt), et = true));
19250        }, _showClone: function(t2) {
19251          "clone" === t2.lastPutMode ? et && (z("showClone", this), Bt.eventCanceled || (q.parentNode != $2 || this.options.group.revertClone ? Q ? $2.insertBefore(tt, Q) : $2.appendChild(tt) : $2.insertBefore(tt, q), this.options.group.revertClone && this.animate(q, tt), P(tt, "display", ""), et = false)) : this._hideClone();
19252        } }, xt && h(document, "touchmove", function(t2) {
19253          (Bt.active || yt) && t2.cancelable && t2.preventDefault();
19254        }), Bt.utils = { on: h, off: f, css: P, find: b, is: function(t2, e2) {
19255          return !!N(t2, e2, t2, false);
19256        }, extend: function(t2, e2) {
19257          if (t2 && e2)
19258            for (var n2 in e2)
19259              e2.hasOwnProperty(n2) && (t2[n2] = e2[n2]);
19260          return t2;
19261        }, throttle: S, closest: N, toggleClass: I, clone: _, index: B, nextTick: Lt, cancelNextTick: Kt, detectDirection: It, getChild: X }, Bt.get = function(t2) {
19262          return t2[j];
19263        }, Bt.mount = function() {
19264          for (var t2 = arguments.length, e2 = new Array(t2), n2 = 0; n2 < t2; n2++)
19265            e2[n2] = arguments[n2];
19266          (e2 = e2[0].constructor === Array ? e2[0] : e2).forEach(function(t3) {
19267            if (!t3.prototype || !t3.prototype.constructor)
19268              throw "Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t3));
19269            t3.utils && (Bt.utils = M(M({}, Bt.utils), t3.utils)), K.mount(t3);
19270          });
19271        }, Bt.create = function(t2, e2) {
19272          return new Bt(t2, e2);
19273        };
19274        var Wt, zt, Gt, Ut, qt, Vt, Zt = [], $t = !(Bt.version = "1.15.0");
19275        function Qt() {
19276          Zt.forEach(function(t2) {
19277            clearInterval(t2.pid);
19278          }), Zt = [];
19279        }
19280        function Jt() {
19281          clearInterval(Vt);
19282        }
19283        var te, ee = S(function(n2, t2, e2, o2) {
19284          if (t2.scroll) {
19285            var i3, r2 = (n2.touches ? n2.touches[0] : n2).clientX, a2 = (n2.touches ? n2.touches[0] : n2).clientY, l2 = t2.scrollSensitivity, s2 = t2.scrollSpeed, c2 = O(), u2 = false;
19286            zt !== e2 && (zt = e2, Qt(), Wt = t2.scroll, i3 = t2.scrollFn, true === Wt && (Wt = A(e2, true)));
19287            var d2 = 0, h2 = Wt;
19288            do {
19289              var f2 = h2, p2 = k(f2), g2 = p2.top, m2 = p2.bottom, v2 = p2.left, b2 = p2.right, y2 = p2.width, w2 = p2.height, E2 = void 0, D2 = void 0, S2 = f2.scrollWidth, _2 = f2.scrollHeight, C2 = P(f2), T2 = f2.scrollLeft, p2 = f2.scrollTop, D2 = f2 === c2 ? (E2 = y2 < S2 && ("auto" === C2.overflowX || "scroll" === C2.overflowX || "visible" === C2.overflowX), w2 < _2 && ("auto" === C2.overflowY || "scroll" === C2.overflowY || "visible" === C2.overflowY)) : (E2 = y2 < S2 && ("auto" === C2.overflowX || "scroll" === C2.overflowX), w2 < _2 && ("auto" === C2.overflowY || "scroll" === C2.overflowY)), T2 = E2 && (Math.abs(b2 - r2) <= l2 && T2 + y2 < S2) - (Math.abs(v2 - r2) <= l2 && !!T2), p2 = D2 && (Math.abs(m2 - a2) <= l2 && p2 + w2 < _2) - (Math.abs(g2 - a2) <= l2 && !!p2);
19290              if (!Zt[d2])
19291                for (var x2 = 0; x2 <= d2; x2++)
19292                  Zt[x2] || (Zt[x2] = {});
19293              Zt[d2].vx == T2 && Zt[d2].vy == p2 && Zt[d2].el === f2 || (Zt[d2].el = f2, Zt[d2].vx = T2, Zt[d2].vy = p2, clearInterval(Zt[d2].pid), 0 == T2 && 0 == p2 || (u2 = true, Zt[d2].pid = setInterval(function() {
19294                o2 && 0 === this.layer && Bt.active._onTouchMove(qt);
19295                var t3 = Zt[this.layer].vy ? Zt[this.layer].vy * s2 : 0, e3 = Zt[this.layer].vx ? Zt[this.layer].vx * s2 : 0;
19296                "function" == typeof i3 && "continue" !== i3.call(Bt.dragged.parentNode[j], e3, t3, n2, qt, Zt[this.layer].el) || F(Zt[this.layer].el, e3, t3);
19297              }.bind({ layer: d2 }), 24))), d2++;
19298            } while (t2.bubbleScroll && h2 !== c2 && (h2 = A(h2, false)));
19299            $t = u2;
19300          }
19301        }, 30), c = function(t2) {
19302          var e2 = t2.originalEvent, n2 = t2.putSortable, o2 = t2.dragEl, i3 = t2.activeSortable, r2 = t2.dispatchSortableEvent, a2 = t2.hideGhostForTarget, t2 = t2.unhideGhostForTarget;
19303          e2 && (i3 = n2 || i3, a2(), e2 = e2.changedTouches && e2.changedTouches.length ? e2.changedTouches[0] : e2, e2 = document.elementFromPoint(e2.clientX, e2.clientY), t2(), i3 && !i3.el.contains(e2) && (r2("spill"), this.onSpill({ dragEl: o2, putSortable: n2 })));
19304        };
19305        function ne() {
19306        }
19307        function oe() {
19308        }
19309        ne.prototype = { startIndex: null, dragStart: function(t2) {
19310          t2 = t2.oldDraggableIndex;
19311          this.startIndex = t2;
19312        }, onSpill: function(t2) {
19313          var e2 = t2.dragEl, n2 = t2.putSortable;
19314          this.sortable.captureAnimationState(), n2 && n2.captureAnimationState();
19315          t2 = X(this.sortable.el, this.startIndex, this.options);
19316          t2 ? this.sortable.el.insertBefore(e2, t2) : this.sortable.el.appendChild(e2), this.sortable.animateAll(), n2 && n2.animateAll();
19317        }, drop: c }, a(ne, { pluginName: "revertOnSpill" }), oe.prototype = { onSpill: function(t2) {
19318          var e2 = t2.dragEl, t2 = t2.putSortable || this.sortable;
19319          t2.captureAnimationState(), e2.parentNode && e2.parentNode.removeChild(e2), t2.animateAll();
19320        }, drop: c }, a(oe, { pluginName: "removeOnSpill" });
19321        var ie, re2, ae, le, se, ce = [], ue = [], de = false, he = false, fe = false;
19322        function pe(n2, o2) {
19323          ue.forEach(function(t2, e2) {
19324            e2 = o2.children[t2.sortableIndex + (n2 ? Number(e2) : 0)];
19325            e2 ? o2.insertBefore(t2, e2) : o2.appendChild(t2);
19326          });
19327        }
19328        function ge() {
19329          ce.forEach(function(t2) {
19330            t2 !== ae && t2.parentNode && t2.parentNode.removeChild(t2);
19331          });
19332        }
19333        return Bt.mount(new function() {
19334          function t2() {
19335            for (var t3 in this.defaults = { scroll: true, forceAutoScrollFallback: false, scrollSensitivity: 30, scrollSpeed: 10, bubbleScroll: true }, this)
19336              "_" === t3.charAt(0) && "function" == typeof this[t3] && (this[t3] = this[t3].bind(this));
19337          }
19338          return t2.prototype = { dragStarted: function(t3) {
19339            t3 = t3.originalEvent;
19340            this.sortable.nativeDraggable ? h(document, "dragover", this._handleAutoScroll) : this.options.supportPointer ? h(document, "pointermove", this._handleFallbackAutoScroll) : t3.touches ? h(document, "touchmove", this._handleFallbackAutoScroll) : h(document, "mousemove", this._handleFallbackAutoScroll);
19341          }, dragOverCompleted: function(t3) {
19342            t3 = t3.originalEvent;
19343            this.options.dragOverBubble || t3.rootEl || this._handleAutoScroll(t3);
19344          }, drop: function() {
19345            this.sortable.nativeDraggable ? f(document, "dragover", this._handleAutoScroll) : (f(document, "pointermove", this._handleFallbackAutoScroll), f(document, "touchmove", this._handleFallbackAutoScroll), f(document, "mousemove", this._handleFallbackAutoScroll)), Jt(), Qt(), clearTimeout(g), g = void 0;
19346          }, nulling: function() {
19347            qt = zt = Wt = $t = Vt = Gt = Ut = null, Zt.length = 0;
19348          }, _handleFallbackAutoScroll: function(t3) {
19349            this._handleAutoScroll(t3, true);
19350          }, _handleAutoScroll: function(e2, n2) {
19351            var o2, i3 = this, r2 = (e2.touches ? e2.touches[0] : e2).clientX, a2 = (e2.touches ? e2.touches[0] : e2).clientY, t3 = document.elementFromPoint(r2, a2);
19352            qt = e2, n2 || this.options.forceAutoScrollFallback || w || y || u ? (ee(e2, this.options, t3, n2), o2 = A(t3, true), !$t || Vt && r2 === Gt && a2 === Ut || (Vt && Jt(), Vt = setInterval(function() {
19353              var t4 = A(document.elementFromPoint(r2, a2), true);
19354              t4 !== o2 && (o2 = t4, Qt()), ee(e2, i3.options, t4, n2);
19355            }, 10), Gt = r2, Ut = a2)) : this.options.bubbleScroll && A(t3, true) !== O() ? ee(e2, this.options, A(t3, false), false) : Qt();
19356          } }, a(t2, { pluginName: "scroll", initializeByDefault: true });
19357        }()), Bt.mount(oe, ne), Bt.mount(new function() {
19358          function t2() {
19359            this.defaults = { swapClass: "sortable-swap-highlight" };
19360          }
19361          return t2.prototype = { dragStart: function(t3) {
19362            t3 = t3.dragEl;
19363            te = t3;
19364          }, dragOverValid: function(t3) {
19365            var e2 = t3.completed, n2 = t3.target, o2 = t3.onMove, i3 = t3.activeSortable, r2 = t3.changed, a2 = t3.cancel;
19366            i3.options.swap && (t3 = this.sortable.el, i3 = this.options, n2 && n2 !== t3 && (t3 = te, te = false !== o2(n2) ? (I(n2, i3.swapClass, true), n2) : null, t3 && t3 !== te && I(t3, i3.swapClass, false)), r2(), e2(true), a2());
19367          }, drop: function(t3) {
19368            var e2, n2, o2 = t3.activeSortable, i3 = t3.putSortable, r2 = t3.dragEl, a2 = i3 || this.sortable, l2 = this.options;
19369            te && I(te, l2.swapClass, false), te && (l2.swap || i3 && i3.options.swap) && r2 !== te && (a2.captureAnimationState(), a2 !== o2 && o2.captureAnimationState(), n2 = te, t3 = (e2 = r2).parentNode, l2 = n2.parentNode, t3 && l2 && !t3.isEqualNode(n2) && !l2.isEqualNode(e2) && (i3 = B(e2), r2 = B(n2), t3.isEqualNode(l2) && i3 < r2 && r2++, t3.insertBefore(n2, t3.children[i3]), l2.insertBefore(e2, l2.children[r2])), a2.animateAll(), a2 !== o2 && o2.animateAll());
19370          }, nulling: function() {
19371            te = null;
19372          } }, a(t2, { pluginName: "swap", eventProperties: function() {
19373            return { swapItem: te };
19374          } });
19375        }()), Bt.mount(new function() {
19376          function t2(o2) {
19377            for (var t3 in this)
19378              "_" === t3.charAt(0) && "function" == typeof this[t3] && (this[t3] = this[t3].bind(this));
19379            o2.options.avoidImplicitDeselect || (o2.options.supportPointer ? h(document, "pointerup", this._deselectMultiDrag) : (h(document, "mouseup", this._deselectMultiDrag), h(document, "touchend", this._deselectMultiDrag))), h(document, "keydown", this._checkKeyDown), h(document, "keyup", this._checkKeyUp), this.defaults = { selectedClass: "sortable-selected", multiDragKey: null, avoidImplicitDeselect: false, setData: function(t4, e2) {
19380              var n2 = "";
19381              ce.length && re2 === o2 ? ce.forEach(function(t5, e3) {
19382                n2 += (e3 ? ", " : "") + t5.textContent;
19383              }) : n2 = e2.textContent, t4.setData("Text", n2);
19384            } };
19385          }
19386          return t2.prototype = { multiDragKeyDown: false, isMultiDrag: false, delayStartGlobal: function(t3) {
19387            t3 = t3.dragEl;
19388            ae = t3;
19389          }, delayEnded: function() {
19390            this.isMultiDrag = ~ce.indexOf(ae);
19391          }, setupClone: function(t3) {
19392            var e2 = t3.sortable, t3 = t3.cancel;
19393            if (this.isMultiDrag) {
19394              for (var n2 = 0; n2 < ce.length; n2++)
19395                ue.push(_(ce[n2])), ue[n2].sortableIndex = ce[n2].sortableIndex, ue[n2].draggable = false, ue[n2].style["will-change"] = "", I(ue[n2], this.options.selectedClass, false), ce[n2] === ae && I(ue[n2], this.options.chosenClass, false);
19396              e2._hideClone(), t3();
19397            }
19398          }, clone: function(t3) {
19399            var e2 = t3.sortable, n2 = t3.rootEl, o2 = t3.dispatchSortableEvent, t3 = t3.cancel;
19400            this.isMultiDrag && (this.options.removeCloneOnHide || ce.length && re2 === e2 && (pe(true, n2), o2("clone"), t3()));
19401          }, showClone: function(t3) {
19402            var e2 = t3.cloneNowShown, n2 = t3.rootEl, t3 = t3.cancel;
19403            this.isMultiDrag && (pe(false, n2), ue.forEach(function(t4) {
19404              P(t4, "display", "");
19405            }), e2(), se = false, t3());
19406          }, hideClone: function(t3) {
19407            var e2 = this, n2 = (t3.sortable, t3.cloneNowHidden), t3 = t3.cancel;
19408            this.isMultiDrag && (ue.forEach(function(t4) {
19409              P(t4, "display", "none"), e2.options.removeCloneOnHide && t4.parentNode && t4.parentNode.removeChild(t4);
19410            }), n2(), se = true, t3());
19411          }, dragStartGlobal: function(t3) {
19412            t3.sortable;
19413            !this.isMultiDrag && re2 && re2.multiDrag._deselectMultiDrag(), ce.forEach(function(t4) {
19414              t4.sortableIndex = B(t4);
19415            }), ce = ce.sort(function(t4, e2) {
19416              return t4.sortableIndex - e2.sortableIndex;
19417            }), fe = true;
19418          }, dragStarted: function(t3) {
19419            var e2, n2 = this, t3 = t3.sortable;
19420            this.isMultiDrag && (this.options.sort && (t3.captureAnimationState(), this.options.animation && (ce.forEach(function(t4) {
19421              t4 !== ae && P(t4, "position", "absolute");
19422            }), e2 = k(ae, false, true, true), ce.forEach(function(t4) {
19423              t4 !== ae && C(t4, e2);
19424            }), de = he = true)), t3.animateAll(function() {
19425              de = he = false, n2.options.animation && ce.forEach(function(t4) {
19426                T(t4);
19427              }), n2.options.sort && ge();
19428            }));
19429          }, dragOver: function(t3) {
19430            var e2 = t3.target, n2 = t3.completed, t3 = t3.cancel;
19431            he && ~ce.indexOf(e2) && (n2(false), t3());
19432          }, revert: function(t3) {
19433            var n2, o2, e2 = t3.fromSortable, i3 = t3.rootEl, r2 = t3.sortable, a2 = t3.dragRect;
19434            1 < ce.length && (ce.forEach(function(t4) {
19435              r2.addAnimationState({ target: t4, rect: he ? k(t4) : a2 }), T(t4), t4.fromRect = a2, e2.removeAnimationState(t4);
19436            }), he = false, n2 = !this.options.removeCloneOnHide, o2 = i3, ce.forEach(function(t4, e3) {
19437              e3 = o2.children[t4.sortableIndex + (n2 ? Number(e3) : 0)];
19438              e3 ? o2.insertBefore(t4, e3) : o2.appendChild(t4);
19439            }));
19440          }, dragOverCompleted: function(t3) {
19441            var e2, n2 = t3.sortable, o2 = t3.isOwner, i3 = t3.insertion, r2 = t3.activeSortable, a2 = t3.parentEl, l2 = t3.putSortable, t3 = this.options;
19442            i3 && (o2 && r2._hideClone(), de = false, t3.animation && 1 < ce.length && (he || !o2 && !r2.options.sort && !l2) && (e2 = k(ae, false, true, true), ce.forEach(function(t4) {
19443              t4 !== ae && (C(t4, e2), a2.appendChild(t4));
19444            }), he = true), o2 || (he || ge(), 1 < ce.length ? (o2 = se, r2._showClone(n2), r2.options.animation && !se && o2 && ue.forEach(function(t4) {
19445              r2.addAnimationState({ target: t4, rect: le }), t4.fromRect = le, t4.thisAnimationDuration = null;
19446            })) : r2._showClone(n2)));
19447          }, dragOverAnimationCapture: function(t3) {
19448            var e2 = t3.dragRect, n2 = t3.isOwner, t3 = t3.activeSortable;
19449            ce.forEach(function(t4) {
19450              t4.thisAnimationDuration = null;
19451            }), t3.options.animation && !n2 && t3.multiDrag.isMultiDrag && (le = a({}, e2), e2 = v(ae, true), le.top -= e2.f, le.left -= e2.e);
19452          }, dragOverAnimationComplete: function() {
19453            he && (he = false, ge());
19454          }, drop: function(t3) {
19455            var e2 = t3.originalEvent, n2 = t3.rootEl, o2 = t3.parentEl, i3 = t3.sortable, r2 = t3.dispatchSortableEvent, a2 = t3.oldIndex, l2 = t3.putSortable, s2 = l2 || this.sortable;
19456            if (e2) {
19457              var c2, u2, d2, h2 = this.options, f2 = o2.children;
19458              if (!fe)
19459                if (h2.multiDragKey && !this.multiDragKeyDown && this._deselectMultiDrag(), I(ae, h2.selectedClass, !~ce.indexOf(ae)), ~ce.indexOf(ae))
19460                  ce.splice(ce.indexOf(ae), 1), ie = null, W({ sortable: i3, rootEl: n2, name: "deselect", targetEl: ae, originalEvent: e2 });
19461                else {
19462                  if (ce.push(ae), W({ sortable: i3, rootEl: n2, name: "select", targetEl: ae, originalEvent: e2 }), e2.shiftKey && ie && i3.el.contains(ie)) {
19463                    var p2 = B(ie), t3 = B(ae);
19464                    if (~p2 && ~t3 && p2 !== t3)
19465                      for (var g2, m2 = p2 < t3 ? (g2 = p2, t3) : (g2 = t3, p2 + 1); g2 < m2; g2++)
19466                        ~ce.indexOf(f2[g2]) || (I(f2[g2], h2.selectedClass, true), ce.push(f2[g2]), W({ sortable: i3, rootEl: n2, name: "select", targetEl: f2[g2], originalEvent: e2 }));
19467                  } else
19468                    ie = ae;
19469                  re2 = s2;
19470                }
19471              fe && this.isMultiDrag && (he = false, (o2[j].options.sort || o2 !== n2) && 1 < ce.length && (c2 = k(ae), u2 = B(ae, ":not(." + this.options.selectedClass + ")"), !de && h2.animation && (ae.thisAnimationDuration = null), s2.captureAnimationState(), de || (h2.animation && (ae.fromRect = c2, ce.forEach(function(t4) {
19472                var e3;
19473                t4.thisAnimationDuration = null, t4 !== ae && (e3 = he ? k(t4) : c2, t4.fromRect = e3, s2.addAnimationState({ target: t4, rect: e3 }));
19474              })), ge(), ce.forEach(function(t4) {
19475                f2[u2] ? o2.insertBefore(t4, f2[u2]) : o2.appendChild(t4), u2++;
19476              }), a2 === B(ae) && (d2 = false, ce.forEach(function(t4) {
19477                t4.sortableIndex !== B(t4) && (d2 = true);
19478              }), d2 && r2("update"))), ce.forEach(function(t4) {
19479                T(t4);
19480              }), s2.animateAll()), re2 = s2), (n2 === o2 || l2 && "clone" !== l2.lastPutMode) && ue.forEach(function(t4) {
19481                t4.parentNode && t4.parentNode.removeChild(t4);
19482              });
19483            }
19484          }, nullingGlobal: function() {
19485            this.isMultiDrag = fe = false, ue.length = 0;
19486          }, destroyGlobal: function() {
19487            this._deselectMultiDrag(), f(document, "pointerup", this._deselectMultiDrag), f(document, "mouseup", this._deselectMultiDrag), f(document, "touchend", this._deselectMultiDrag), f(document, "keydown", this._checkKeyDown), f(document, "keyup", this._checkKeyUp);
19488          }, _deselectMultiDrag: function(t3) {
19489            if (!(void 0 !== fe && fe || re2 !== this.sortable || t3 && N(t3.target, this.options.draggable, this.sortable.el, false) || t3 && 0 !== t3.button))
19490              for (; ce.length; ) {
19491                var e2 = ce[0];
19492                I(e2, this.options.selectedClass, false), ce.shift(), W({ sortable: this.sortable, rootEl: this.sortable.el, name: "deselect", targetEl: e2, originalEvent: t3 });
19493              }
19494          }, _checkKeyDown: function(t3) {
19495            t3.key === this.options.multiDragKey && (this.multiDragKeyDown = true);
19496          }, _checkKeyUp: function(t3) {
19497            t3.key === this.options.multiDragKey && (this.multiDragKeyDown = false);
19498          } }, a(t2, { pluginName: "multiDrag", utils: { select: function(t3) {
19499            var e2 = t3.parentNode[j];
19500            e2 && e2.options.multiDrag && !~ce.indexOf(t3) && (re2 && re2 !== e2 && (re2.multiDrag._deselectMultiDrag(), re2 = e2), I(t3, e2.options.selectedClass, true), ce.push(t3));
19501          }, deselect: function(t3) {
19502            var e2 = t3.parentNode[j], n2 = ce.indexOf(t3);
19503            e2 && e2.options.multiDrag && ~n2 && (I(t3, e2.options.selectedClass, false), ce.splice(n2, 1));
19504          } }, eventProperties: function() {
19505            var n2 = this, o2 = [], i3 = [];
19506            return ce.forEach(function(t3) {
19507              var e2;
19508              o2.push({ multiDragElement: t3, index: t3.sortableIndex }), e2 = he && t3 !== ae ? -1 : he ? B(t3, ":not(." + n2.options.selectedClass + ")") : B(t3), i3.push({ multiDragElement: t3, index: e2 });
19509            }), { items: r(ce), clones: [].concat(ue), oldIndicies: o2, newIndicies: i3 };
19510          }, optionListeners: { multiDragKey: function(t3) {
19511            return "ctrl" === (t3 = t3.toLowerCase()) ? t3 = "Control" : 1 < t3.length && (t3 = t3.charAt(0).toUpperCase() + t3.substr(1)), t3;
19512          } } });
19513        }()), Bt;
19514      });
19515    }
19516  });
19517
19518  
vendor: 1,770 bytes, lines 19518-19570
19518// node_modules/fast-deep-equal/index.js
19519  var require_fast_deep_equal = __commonJS({
19520    "node_modules/fast-deep-equal/index.js"(exports, module) {
19521      "use strict";
19522      var isArray = Array.isArray;
19523      var keyList = Object.keys;
19524      var hasProp = Object.prototype.hasOwnProperty;
19525      module.exports = function equal(a, b) {
19526        if (a === b)
19527          return true;
19528        if (a && b && typeof a == "object" && typeof b == "object") {
19529          var arrA = isArray(a), arrB = isArray(b), i2, length2, key;
19530          if (arrA && arrB) {
19531            length2 = a.length;
19532            if (length2 != b.length)
19533              return false;
19534            for (i2 = length2; i2-- !== 0; )
19535              if (!equal(a[i2], b[i2]))
19536                return false;
19537            return true;
19538          }
19539          if (arrA != arrB)
19540            return false;
19541          var dateA = a instanceof Date, dateB = b instanceof Date;
19542          if (dateA != dateB)
19543            return false;
19544          if (dateA && dateB)
19545            return a.getTime() == b.getTime();
19546          var regexpA = a instanceof RegExp, regexpB = b instanceof RegExp;
19547          if (regexpA != regexpB)
19548            return false;
19549          if (regexpA && regexpB)
19550            return a.toString() == b.toString();
19551          var keys = keyList(a);
19552          length2 = keys.length;
19553          if (length2 !== keyList(b).length)
19554            return false;
19555          for (i2 = length2; i2-- !== 0; )
19556            if (!hasProp.call(b, keys[i2]))
19557              return false;
19558          for (i2 = length2; i2-- !== 0; ) {
19559            key = keys[i2];
19560            if (!equal(a[key], b[key]))
19561              return false;
19562          }
19563          return true;
19564        }
19565        return a !== a && b !== b;
19566      };
19567    }
19568  });
19569
19570  
vendor: 297 bytes, lines 19570-19581
19570// node_modules/lodash/_listCacheClear.js
19571  var require_listCacheClear = __commonJS({
19572    "node_modules/lodash/_listCacheClear.js"(exports, module) {
19573      function listCacheClear() {
19574        this.__data__ = [];
19575        this.size = 0;
19576      }
19577      module.exports = listCacheClear;
19578    }
19579  });
19580
19581  
vendor: 270 bytes, lines 19581-19591
19581// node_modules/lodash/eq.js
19582  var require_eq = __commonJS({
19583    "node_modules/lodash/eq.js"(exports, module) {
19584      function eq(value2, other) {
19585        return value2 === other || value2 !== value2 && other !== other;
19586      }
19587      module.exports = eq;
19588    }
19589  });
19590
19591  
vendor: 452 bytes, lines 19591-19608
19591// node_modules/lodash/_assocIndexOf.js
19592  var require_assocIndexOf = __commonJS({
19593    "node_modules/lodash/_assocIndexOf.js"(exports, module) {
19594      var eq = require_eq();
19595      function assocIndexOf(array, key) {
19596        var length2 = array.length;
19597        while (length2--) {
19598          if (eq(array[length2][0], key)) {
19599            return length2;
19600          }
19601        }
19602        return -1;
19603      }
19604      module.exports = assocIndexOf;
19605    }
19606  });
19607
19608  
vendor: 712 bytes, lines 19608-19632
19608// node_modules/lodash/_listCacheDelete.js
19609  var require_listCacheDelete = __commonJS({
19610    "node_modules/lodash/_listCacheDelete.js"(exports, module) {
19611      var assocIndexOf = require_assocIndexOf();
19612      var arrayProto = Array.prototype;
19613      var splice = arrayProto.splice;
19614      function listCacheDelete(key) {
19615        var data = this.__data__, index = assocIndexOf(data, key);
19616        if (index < 0) {
19617          return false;
19618        }
19619        var lastIndex = data.length - 1;
19620        if (index == lastIndex) {
19621          data.pop();
19622        } else {
19623          splice.call(data, index, 1);
19624        }
19625        --this.size;
19626        return true;
19627      }
19628      module.exports = listCacheDelete;
19629    }
19630  });
19631
19632  
vendor: 407 bytes, lines 19632-19644
19632// node_modules/lodash/_listCacheGet.js
19633  var require_listCacheGet = __commonJS({
19634    "node_modules/lodash/_listCacheGet.js"(exports, module) {
19635      var assocIndexOf = require_assocIndexOf();
19636      function listCacheGet(key) {
19637        var data = this.__data__, index = assocIndexOf(data, key);
19638        return index < 0 ? void 0 : data[index][1];
19639      }
19640      module.exports = listCacheGet;
19641    }
19642  });
19643
19644  
vendor: 342 bytes, lines 19644-19655
19644// node_modules/lodash/_listCacheHas.js
19645  var require_listCacheHas = __commonJS({
19646    "node_modules/lodash/_listCacheHas.js"(exports, module) {
19647      var assocIndexOf = require_assocIndexOf();
19648      function listCacheHas(key) {
19649        return assocIndexOf(this.__data__, key) > -1;
19650      }
19651      module.exports = listCacheHas;
19652    }
19653  });
19654
19655  
vendor: 530 bytes, lines 19655-19673
19655// node_modules/lodash/_listCacheSet.js
19656  var require_listCacheSet = __commonJS({
19657    "node_modules/lodash/_listCacheSet.js"(exports, module) {
19658      var assocIndexOf = require_assocIndexOf();
19659      function listCacheSet(key, value2) {
19660        var data = this.__data__, index = assocIndexOf(data, key);
19661        if (index < 0) {
19662          ++this.size;
19663          data.push([key, value2]);
19664        } else {
19665          data[index][1] = value2;
19666        }
19667        return this;
19668      }
19669      module.exports = listCacheSet;
19670    }
19671  });
19672
19673  
vendor: 944 bytes, lines 19673-19698
19673// node_modules/lodash/_ListCache.js
19674  var require_ListCache = __commonJS({
19675    "node_modules/lodash/_ListCache.js"(exports, module) {
19676      var listCacheClear = require_listCacheClear();
19677      var listCacheDelete = require_listCacheDelete();
19678      var listCacheGet = require_listCacheGet();
19679      var listCacheHas = require_listCacheHas();
19680      var listCacheSet = require_listCacheSet();
19681      function ListCache(entries) {
19682        var index = -1, length2 = entries == null ? 0 : entries.length;
19683        this.clear();
19684        while (++index < length2) {
19685          var entry = entries[index];
19686          this.set(entry[0], entry[1]);
19687        }
19688      }
19689      ListCache.prototype.clear = listCacheClear;
19690      ListCache.prototype["delete"] = listCacheDelete;
19691      ListCache.prototype.get = listCacheGet;
19692      ListCache.prototype.has = listCacheHas;
19693      ListCache.prototype.set = listCacheSet;
19694      module.exports = ListCache;
19695    }
19696  });
19697
19698  
vendor: 333 bytes, lines 19698-19710
19698// node_modules/lodash/_stackClear.js
19699  var require_stackClear = __commonJS({
19700    "node_modules/lodash/_stackClear.js"(exports, module) {
19701      var ListCache = require_ListCache();
19702      function stackClear() {
19703        this.__data__ = new ListCache();
19704        this.size = 0;
19705      }
19706      module.exports = stackClear;
19707    }
19708  });
19709
19710  
vendor: 352 bytes, lines 19710-19722
19710// node_modules/lodash/_stackDelete.js
19711  var require_stackDelete = __commonJS({
19712    "node_modules/lodash/_stackDelete.js"(exports, module) {
19713      function stackDelete(key) {
19714        var data = this.__data__, result = data["delete"](key);
19715        this.size = data.size;
19716        return result;
19717      }
19718      module.exports = stackDelete;
19719    }
19720  });
19721
19722  
vendor: 258 bytes, lines 19722-19732
19722// node_modules/lodash/_stackGet.js
19723  var require_stackGet = __commonJS({
19724    "node_modules/lodash/_stackGet.js"(exports, module) {
19725      function stackGet(key) {
19726        return this.__data__.get(key);
19727      }
19728      module.exports = stackGet;
19729    }
19730  });
19731
19732  
vendor: 258 bytes, lines 19732-19742
19732// node_modules/lodash/_stackHas.js
19733  var require_stackHas = __commonJS({
19734    "node_modules/lodash/_stackHas.js"(exports, module) {
19735      function stackHas(key) {
19736        return this.__data__.has(key);
19737      }
19738      module.exports = stackHas;
19739    }
19740  });
19741
19742  
vendor: 286 bytes, lines 19742-19750
19742// node_modules/lodash/_freeGlobal.js
19743  var require_freeGlobal = __commonJS({
19744    "node_modules/lodash/_freeGlobal.js"(exports, module) {
19745      var freeGlobal = typeof global == "object" && global && global.Object === Object && global;
19746      module.exports = freeGlobal;
19747    }
19748  });
19749
19750  
vendor: 367 bytes, lines 19750-19760
19750// node_modules/lodash/_root.js
19751  var require_root = __commonJS({
19752    "node_modules/lodash/_root.js"(exports, module) {
19753      var freeGlobal = require_freeGlobal();
19754      var freeSelf = typeof self == "object" && self && self.Object === Object && self;
19755      var root = freeGlobal || freeSelf || Function("return this")();
19756      module.exports = root;
19757    }
19758  });
19759
19760  
vendor: 239 bytes, lines 19760-19769
19760// node_modules/lodash/_Symbol.js
19761  var require_Symbol = __commonJS({
19762    "node_modules/lodash/_Symbol.js"(exports, module) {
19763      var root = require_root();
19764      var Symbol2 = root.Symbol;
19765      module.exports = Symbol2;
19766    }
19767  });
19768
19769  
vendor: 951 bytes, lines 19769-19798
19769// node_modules/lodash/_getRawTag.js
19770  var require_getRawTag = __commonJS({
19771    "node_modules/lodash/_getRawTag.js"(exports, module) {
19772      var Symbol2 = require_Symbol();
19773      var objectProto = Object.prototype;
19774      var hasOwnProperty = objectProto.hasOwnProperty;
19775      var nativeObjectToString = objectProto.toString;
19776      var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;
19777      function getRawTag(value2) {
19778        var isOwn = hasOwnProperty.call(value2, symToStringTag), tag = value2[symToStringTag];
19779        try {
19780          value2[symToStringTag] = void 0;
19781          var unmasked = true;
19782        } catch (e) {
19783        }
19784        var result = nativeObjectToString.call(value2);
19785        if (unmasked) {
19786          if (isOwn) {
19787            value2[symToStringTag] = tag;
19788          } else {
19789            delete value2[symToStringTag];
19790          }
19791        }
19792        return result;
19793      }
19794      module.exports = getRawTag;
19795    }
19796  });
19797
19798  
vendor: 399 bytes, lines 19798-19810
19798// node_modules/lodash/_objectToString.js
19799  var require_objectToString = __commonJS({
19800    "node_modules/lodash/_objectToString.js"(exports, module) {
19801      var objectProto = Object.prototype;
19802      var nativeObjectToString = objectProto.toString;
19803      function objectToString(value2) {
19804        return nativeObjectToString.call(value2);
19805      }
19806      module.exports = objectToString;
19807    }
19808  });
19809
19810  
vendor: 730 bytes, lines 19810-19829
19810// node_modules/lodash/_baseGetTag.js
19811  var require_baseGetTag = __commonJS({
19812    "node_modules/lodash/_baseGetTag.js"(exports, module) {
19813      var Symbol2 = require_Symbol();
19814      var getRawTag = require_getRawTag();
19815      var objectToString = require_objectToString();
19816      var nullTag = "[object Null]";
19817      var undefinedTag = "[object Undefined]";
19818      var symToStringTag = Symbol2 ? Symbol2.toStringTag : void 0;
19819      function baseGetTag(value2) {
19820        if (value2 == null) {
19821          return value2 === void 0 ? undefinedTag : nullTag;
19822        }
19823        return symToStringTag && symToStringTag in Object(value2) ? getRawTag(value2) : objectToString(value2);
19824      }
19825      module.exports = baseGetTag;
19826    }
19827  });
19828
19829  
vendor: 334 bytes, lines 19829-19840
19829// node_modules/lodash/isObject.js
19830  var require_isObject = __commonJS({
19831    "node_modules/lodash/isObject.js"(exports, module) {
19832      function isObject2(value2) {
19833        var type2 = typeof value2;
19834        return value2 != null && (type2 == "object" || type2 == "function");
19835      }
19836      module.exports = isObject2;
19837    }
19838  });
19839
19840  
vendor: 685 bytes, lines 19840-19860
19840// node_modules/lodash/isFunction.js
19841  var require_isFunction = __commonJS({
19842    "node_modules/lodash/isFunction.js"(exports, module) {
19843      var baseGetTag = require_baseGetTag();
19844      var isObject2 = require_isObject();
19845      var asyncTag = "[object AsyncFunction]";
19846      var funcTag = "[object Function]";
19847      var genTag = "[object GeneratorFunction]";
19848      var proxyTag = "[object Proxy]";
19849      function isFunction(value2) {
19850        if (!isObject2(value2)) {
19851          return false;
19852        }
19853        var tag = baseGetTag(value2);
19854        return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
19855      }
19856      module.exports = isFunction;
19857    }
19858  });
19859
19860  
vendor: 272 bytes, lines 19860-19869
19860// node_modules/lodash/_coreJsData.js
19861  var require_coreJsData = __commonJS({
19862    "node_modules/lodash/_coreJsData.js"(exports, module) {
19863      var root = require_root();
19864      var coreJsData = root["__core-js_shared__"];
19865      module.exports = coreJsData;
19866    }
19867  });
19868
19869  
vendor: 511 bytes, lines 19869-19884
19869// node_modules/lodash/_isMasked.js
19870  var require_isMasked = __commonJS({
19871    "node_modules/lodash/_isMasked.js"(exports, module) {
19872      var coreJsData = require_coreJsData();
19873      var maskSrcKey = function() {
19874        var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || "");
19875        return uid ? "Symbol(src)_1." + uid : "";
19876      }();
19877      function isMasked(func) {
19878        return !!maskSrcKey && maskSrcKey in func;
19879      }
19880      module.exports = isMasked;
19881    }
19882  });
19883
19884  
vendor: 542 bytes, lines 19884-19906
19884// node_modules/lodash/_toSource.js
19885  var require_toSource = __commonJS({
19886    "node_modules/lodash/_toSource.js"(exports, module) {
19887      var funcProto = Function.prototype;
19888      var funcToString = funcProto.toString;
19889      function toSource(func) {
19890        if (func != null) {
19891          try {
19892            return funcToString.call(func);
19893          } catch (e) {
19894          }
19895          try {
19896            return func + "";
19897          } catch (e) {
19898          }
19899        }
19900        return "";
19901      }
19902      module.exports = toSource;
19903    }
19904  });
19905
19906  
vendor: 1,103 bytes, lines 19906-19933
19906// node_modules/lodash/_baseIsNative.js
19907  var require_baseIsNative = __commonJS({
19908    "node_modules/lodash/_baseIsNative.js"(exports, module) {
19909      var isFunction = require_isFunction();
19910      var isMasked = require_isMasked();
19911      var isObject2 = require_isObject();
19912      var toSource = require_toSource();
19913      var reRegExpChar = /[\\^$.*+?()[\]{}|]/g;
19914      var reIsHostCtor = /^\[object .+?Constructor\]$/;
19915      var funcProto = Function.prototype;
19916      var objectProto = Object.prototype;
19917      var funcToString = funcProto.toString;
19918      var hasOwnProperty = objectProto.hasOwnProperty;
19919      var reIsNative = RegExp(
19920        "^" + funcToString.call(hasOwnProperty).replace(reRegExpChar, "\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, "$1.*?") + "$"
19921      );
19922      function baseIsNative(value2) {
19923        if (!isObject2(value2) || isMasked(value2)) {
19924          return false;
19925        }
19926        var pattern = isFunction(value2) ? reIsNative : reIsHostCtor;
19927        return pattern.test(toSource(value2));
19928      }
19929      module.exports = baseIsNative;
19930    }
19931  });
19932
19933  
vendor: 281 bytes, lines 19933-19943
19933// node_modules/lodash/_getValue.js
19934  var require_getValue = __commonJS({
19935    "node_modules/lodash/_getValue.js"(exports, module) {
19936      function getValue(object, key) {
19937        return object == null ? void 0 : object[key];
19938      }
19939      module.exports = getValue;
19940    }
19941  });
19942
19943  
vendor: 421 bytes, lines 19943-19956
19943// node_modules/lodash/_getNative.js
19944  var require_getNative = __commonJS({
19945    "node_modules/lodash/_getNative.js"(exports, module) {
19946      var baseIsNative = require_baseIsNative();
19947      var getValue = require_getValue();
19948      function getNative(object, key) {
19949        var value2 = getValue(object, key);
19950        return baseIsNative(value2) ? value2 : void 0;
19951      }
19952      module.exports = getNative;
19953    }
19954  });
19955
19956  
vendor: 278 bytes, lines 19956-19966
19956// node_modules/lodash/_Map.js
19957  var require_Map = __commonJS({
19958    "node_modules/lodash/_Map.js"(exports, module) {
19959      var getNative = require_getNative();
19960      var root = require_root();
19961      var Map2 = getNative(root, "Map");
19962      module.exports = Map2;
19963    }
19964  });
19965
19966  
vendor: 293 bytes, lines 19966-19975
19966// node_modules/lodash/_nativeCreate.js
19967  var require_nativeCreate = __commonJS({
19968    "node_modules/lodash/_nativeCreate.js"(exports, module) {
19969      var getNative = require_getNative();
19970      var nativeCreate = getNative(Object, "create");
19971      module.exports = nativeCreate;
19972    }
19973  });
19974
19975  
vendor: 357 bytes, lines 19975-19987
19975// node_modules/lodash/_hashClear.js
19976  var require_hashClear = __commonJS({
19977    "node_modules/lodash/_hashClear.js"(exports, module) {
19978      var nativeCreate = require_nativeCreate();
19979      function hashClear() {
19980        this.__data__ = nativeCreate ? nativeCreate(null) : {};
19981        this.size = 0;
19982      }
19983      module.exports = hashClear;
19984    }
19985  });
19986
19987  
vendor: 354 bytes, lines 19987-19999
19987// node_modules/lodash/_hashDelete.js
19988  var require_hashDelete = __commonJS({
19989    "node_modules/lodash/_hashDelete.js"(exports, module) {
19990      function hashDelete(key) {
19991        var result = this.has(key) && delete this.__data__[key];
19992        this.size -= result ? 1 : 0;
19993        return result;
19994      }
19995      module.exports = hashDelete;
19996    }
19997  });
19998
19999  
vendor: 652 bytes, lines 19999-20018
19999// node_modules/lodash/_hashGet.js
20000  var require_hashGet = __commonJS({
20001    "node_modules/lodash/_hashGet.js"(exports, module) {
20002      var nativeCreate = require_nativeCreate();
20003      var HASH_UNDEFINED = "__lodash_hash_undefined__";
20004      var objectProto = Object.prototype;
20005      var hasOwnProperty = objectProto.hasOwnProperty;
20006      function hashGet(key) {
20007        var data = this.__data__;
20008        if (nativeCreate) {
20009          var result = data[key];
20010          return result === HASH_UNDEFINED ? void 0 : result;
20011        }
20012        return hasOwnProperty.call(data, key) ? data[key] : void 0;
20013      }
20014      module.exports = hashGet;
20015    }
20016  });
20017
20018  
vendor: 479 bytes, lines 20018-20032
20018// node_modules/lodash/_hashHas.js
20019  var require_hashHas = __commonJS({
20020    "node_modules/lodash/_hashHas.js"(exports, module) {
20021      var nativeCreate = require_nativeCreate();
20022      var objectProto = Object.prototype;
20023      var hasOwnProperty = objectProto.hasOwnProperty;
20024      function hashHas(key) {
20025        var data = this.__data__;
20026        return nativeCreate ? data[key] !== void 0 : hasOwnProperty.call(data, key);
20027      }
20028      module.exports = hashHas;
20029    }
20030  });
20031
20032  
vendor: 507 bytes, lines 20032-20047
20032// node_modules/lodash/_hashSet.js
20033  var require_hashSet = __commonJS({
20034    "node_modules/lodash/_hashSet.js"(exports, module) {
20035      var nativeCreate = require_nativeCreate();
20036      var HASH_UNDEFINED = "__lodash_hash_undefined__";
20037      function hashSet(key, value2) {
20038        var data = this.__data__;
20039        this.size += this.has(key) ? 0 : 1;
20040        data[key] = nativeCreate && value2 === void 0 ? HASH_UNDEFINED : value2;
20041        return this;
20042      }
20043      module.exports = hashSet;
20044    }
20045  });
20046
20047  
vendor: 819 bytes, lines 20047-20072
20047// node_modules/lodash/_Hash.js
20048  var require_Hash = __commonJS({
20049    "node_modules/lodash/_Hash.js"(exports, module) {
20050      var hashClear = require_hashClear();
20051      var hashDelete = require_hashDelete();
20052      var hashGet = require_hashGet();
20053      var hashHas = require_hashHas();
20054      var hashSet = require_hashSet();
20055      function Hash(entries) {
20056        var index = -1, length2 = entries == null ? 0 : entries.length;
20057        this.clear();
20058        while (++index < length2) {
20059          var entry = entries[index];
20060          this.set(entry[0], entry[1]);
20061        }
20062      }
20063      Hash.prototype.clear = hashClear;
20064      Hash.prototype["delete"] = hashDelete;
20065      Hash.prototype.get = hashGet;
20066      Hash.prototype.has = hashHas;
20067      Hash.prototype.set = hashSet;
20068      module.exports = Hash;
20069    }
20070  });
20071
20072  
vendor: 514 bytes, lines 20072-20090
20072// node_modules/lodash/_mapCacheClear.js
20073  var require_mapCacheClear = __commonJS({
20074    "node_modules/lodash/_mapCacheClear.js"(exports, module) {
20075      var Hash = require_Hash();
20076      var ListCache = require_ListCache();
20077      var Map2 = require_Map();
20078      function mapCacheClear() {
20079        this.size = 0;
20080        this.__data__ = {
20081          "hash": new Hash(),
20082          "map": new (Map2 || ListCache)(),
20083          "string": new Hash()
20084        };
20085      }
20086      module.exports = mapCacheClear;
20087    }
20088  });
20089
20090  
vendor: 403 bytes, lines 20090-20101
20090// node_modules/lodash/_isKeyable.js
20091  var require_isKeyable = __commonJS({
20092    "node_modules/lodash/_isKeyable.js"(exports, module) {
20093      function isKeyable(value2) {
20094        var type2 = typeof value2;
20095        return type2 == "string" || type2 == "number" || type2 == "symbol" || type2 == "boolean" ? value2 !== "__proto__" : value2 === null;
20096      }
20097      module.exports = isKeyable;
20098    }
20099  });
20100
20101  
vendor: 405 bytes, lines 20101-20113
20101// node_modules/lodash/_getMapData.js
20102  var require_getMapData = __commonJS({
20103    "node_modules/lodash/_getMapData.js"(exports, module) {
20104      var isKeyable = require_isKeyable();
20105      function getMapData(map2, key) {
20106        var data = map2.__data__;
20107        return isKeyable(key) ? data[typeof key == "string" ? "string" : "hash"] : data.map;
20108      }
20109      module.exports = getMapData;
20110    }
20111  });
20112
20113  
vendor: 413 bytes, lines 20113-20126
20113// node_modules/lodash/_mapCacheDelete.js
20114  var require_mapCacheDelete = __commonJS({
20115    "node_modules/lodash/_mapCacheDelete.js"(exports, module) {
20116      var getMapData = require_getMapData();
20117      function mapCacheDelete(key) {
20118        var result = getMapData(this, key)["delete"](key);
20119        this.size -= result ? 1 : 0;
20120        return result;
20121      }
20122      module.exports = mapCacheDelete;
20123    }
20124  });
20125
20126  
vendor: 326 bytes, lines 20126-20137
20126// node_modules/lodash/_mapCacheGet.js
20127  var require_mapCacheGet = __commonJS({
20128    "node_modules/lodash/_mapCacheGet.js"(exports, module) {
20129      var getMapData = require_getMapData();
20130      function mapCacheGet(key) {
20131        return getMapData(this, key).get(key);
20132      }
20133      module.exports = mapCacheGet;
20134    }
20135  });
20136
20137  
vendor: 326 bytes, lines 20137-20148
20137// node_modules/lodash/_mapCacheHas.js
20138  var require_mapCacheHas = __commonJS({
20139    "node_modules/lodash/_mapCacheHas.js"(exports, module) {
20140      var getMapData = require_getMapData();
20141      function mapCacheHas(key) {
20142        return getMapData(this, key).has(key);
20143      }
20144      module.exports = mapCacheHas;
20145    }
20146  });
20147
20148  
vendor: 447 bytes, lines 20148-20162
20148// node_modules/lodash/_mapCacheSet.js
20149  var require_mapCacheSet = __commonJS({
20150    "node_modules/lodash/_mapCacheSet.js"(exports, module) {
20151      var getMapData = require_getMapData();
20152      function mapCacheSet(key, value2) {
20153        var data = getMapData(this, key), size = data.size;
20154        data.set(key, value2);
20155        this.size += data.size == size ? 0 : 1;
20156        return this;
20157      }
20158      module.exports = mapCacheSet;
20159    }
20160  });
20161
20162  
vendor: 919 bytes, lines 20162-20187
20162// node_modules/lodash/_MapCache.js
20163  var require_MapCache = __commonJS({
20164    "node_modules/lodash/_MapCache.js"(exports, module) {
20165      var mapCacheClear = require_mapCacheClear();
20166      var mapCacheDelete = require_mapCacheDelete();
20167      var mapCacheGet = require_mapCacheGet();
20168      var mapCacheHas = require_mapCacheHas();
20169      var mapCacheSet = require_mapCacheSet();
20170      function MapCache(entries) {
20171        var index = -1, length2 = entries == null ? 0 : entries.length;
20172        this.clear();
20173        while (++index < length2) {
20174          var entry = entries[index];
20175          this.set(entry[0], entry[1]);
20176        }
20177      }
20178      MapCache.prototype.clear = mapCacheClear;
20179      MapCache.prototype["delete"] = mapCacheDelete;
20180      MapCache.prototype.get = mapCacheGet;
20181      MapCache.prototype.has = mapCacheHas;
20182      MapCache.prototype.set = mapCacheSet;
20183      module.exports = MapCache;
20184    }
20185  });
20186
20187  
vendor: 811 bytes, lines 20187-20213
20187// node_modules/lodash/_stackSet.js
20188  var require_stackSet = __commonJS({
20189    "node_modules/lodash/_stackSet.js"(exports, module) {
20190      var ListCache = require_ListCache();
20191      var Map2 = require_Map();
20192      var MapCache = require_MapCache();
20193      var LARGE_ARRAY_SIZE = 200;
20194      function stackSet(key, value2) {
20195        var data = this.__data__;
20196        if (data instanceof ListCache) {
20197          var pairs = data.__data__;
20198          if (!Map2 || pairs.length < LARGE_ARRAY_SIZE - 1) {
20199            pairs.push([key, value2]);
20200            this.size = ++data.size;
20201            return this;
20202          }
20203          data = this.__data__ = new MapCache(pairs);
20204        }
20205        data.set(key, value2);
20206        this.size = data.size;
20207        return this;
20208      }
20209      module.exports = stackSet;
20210    }
20211  });
20212
20213  
vendor: 759 bytes, lines 20213-20235
20213// node_modules/lodash/_Stack.js
20214  var require_Stack = __commonJS({
20215    "node_modules/lodash/_Stack.js"(exports, module) {
20216      var ListCache = require_ListCache();
20217      var stackClear = require_stackClear();
20218      var stackDelete = require_stackDelete();
20219      var stackGet = require_stackGet();
20220      var stackHas = require_stackHas();
20221      var stackSet = require_stackSet();
20222      function Stack(entries) {
20223        var data = this.__data__ = new ListCache(entries);
20224        this.size = data.size;
20225      }
20226      Stack.prototype.clear = stackClear;
20227      Stack.prototype["delete"] = stackDelete;
20228      Stack.prototype.get = stackGet;
20229      Stack.prototype.has = stackHas;
20230      Stack.prototype.set = stackSet;
20231      module.exports = Stack;
20232    }
20233  });
20234
20235  
vendor: 467 bytes, lines 20235-20251
20235// node_modules/lodash/_arrayEach.js
20236  var require_arrayEach = __commonJS({
20237    "node_modules/lodash/_arrayEach.js"(exports, module) {
20238      function arrayEach(array, iteratee) {
20239        var index = -1, length2 = array == null ? 0 : array.length;
20240        while (++index < length2) {
20241          if (iteratee(array[index], index, array) === false) {
20242            break;
20243          }
20244        }
20245        return array;
20246      }
20247      module.exports = arrayEach;
20248    }
20249  });
20250
20251  
vendor: 453 bytes, lines 20251-20267
20251// node_modules/lodash/_defineProperty.js
20252  var require_defineProperty = __commonJS({
20253    "node_modules/lodash/_defineProperty.js"(exports, module) {
20254      var getNative = require_getNative();
20255      var defineProperty = function() {
20256        try {
20257          var func = getNative(Object, "defineProperty");
20258          func({}, "", {});
20259          return func;
20260        } catch (e) {
20261        }
20262      }();
20263      module.exports = defineProperty;
20264    }
20265  });
20266
20267  
vendor: 612 bytes, lines 20267-20287
20267// node_modules/lodash/_baseAssignValue.js
20268  var require_baseAssignValue = __commonJS({
20269    "node_modules/lodash/_baseAssignValue.js"(exports, module) {
20270      var defineProperty = require_defineProperty();
20271      function baseAssignValue(object, key, value2) {
20272        if (key == "__proto__" && defineProperty) {
20273          defineProperty(object, key, {
20274            "configurable": true,
20275            "enumerable": true,
20276            "value": value2,
20277            "writable": true
20278          });
20279        } else {
20280          object[key] = value2;
20281        }
20282      }
20283      module.exports = baseAssignValue;
20284    }
20285  });
20286
20287  
vendor: 641 bytes, lines 20287-20304
20287// node_modules/lodash/_assignValue.js
20288  var require_assignValue = __commonJS({
20289    "node_modules/lodash/_assignValue.js"(exports, module) {
20290      var baseAssignValue = require_baseAssignValue();
20291      var eq = require_eq();
20292      var objectProto = Object.prototype;
20293      var hasOwnProperty = objectProto.hasOwnProperty;
20294      function assignValue(object, key, value2) {
20295        var objValue = object[key];
20296        if (!(hasOwnProperty.call(object, key) && eq(objValue, value2)) || value2 === void 0 && !(key in object)) {
20297          baseAssignValue(object, key, value2);
20298        }
20299      }
20300      module.exports = assignValue;
20301    }
20302  });
20303
20304  
vendor: 919 bytes, lines 20304-20331
20304// node_modules/lodash/_copyObject.js
20305  var require_copyObject = __commonJS({
20306    "node_modules/lodash/_copyObject.js"(exports, module) {
20307      var assignValue = require_assignValue();
20308      var baseAssignValue = require_baseAssignValue();
20309      function copyObject(source, props, object, customizer) {
20310        var isNew = !object;
20311        object || (object = {});
20312        var index = -1, length2 = props.length;
20313        while (++index < length2) {
20314          var key = props[index];
20315          var newValue = customizer ? customizer(object[key], source[key], key, object, source) : void 0;
20316          if (newValue === void 0) {
20317            newValue = source[key];
20318          }
20319          if (isNew) {
20320            baseAssignValue(object, key, newValue);
20321          } else {
20322            assignValue(object, key, newValue);
20323          }
20324        }
20325        return object;
20326      }
20327      module.exports = copyObject;
20328    }
20329  });
20330
20331  
vendor: 381 bytes, lines 20331-20345
20331// node_modules/lodash/_baseTimes.js
20332  var require_baseTimes = __commonJS({
20333    "node_modules/lodash/_baseTimes.js"(exports, module) {
20334      function baseTimes(n, iteratee) {
20335        var index = -1, result = Array(n);
20336        while (++index < n) {
20337          result[index] = iteratee(index);
20338        }
20339        return result;
20340      }
20341      module.exports = baseTimes;
20342    }
20343  });
20344
20345  
vendor: 300 bytes, lines 20345-20355
20345// node_modules/lodash/isObjectLike.js
20346  var require_isObjectLike = __commonJS({
20347    "node_modules/lodash/isObjectLike.js"(exports, module) {
20348      function isObjectLike(value2) {
20349        return value2 != null && typeof value2 == "object";
20350      }
20351      module.exports = isObjectLike;
20352    }
20353  });
20354
20355  
vendor: 463 bytes, lines 20355-20368
20355// node_modules/lodash/_baseIsArguments.js
20356  var require_baseIsArguments = __commonJS({
20357    "node_modules/lodash/_baseIsArguments.js"(exports, module) {
20358      var baseGetTag = require_baseGetTag();
20359      var isObjectLike = require_isObjectLike();
20360      var argsTag = "[object Arguments]";
20361      function baseIsArguments(value2) {
20362        return isObjectLike(value2) && baseGetTag(value2) == argsTag;
20363      }
20364      module.exports = baseIsArguments;
20365    }
20366  });
20367
20368  
vendor: 722 bytes, lines 20368-20385
20368// node_modules/lodash/isArguments.js
20369  var require_isArguments = __commonJS({
20370    "node_modules/lodash/isArguments.js"(exports, module) {
20371      var baseIsArguments = require_baseIsArguments();
20372      var isObjectLike = require_isObjectLike();
20373      var objectProto = Object.prototype;
20374      var hasOwnProperty = objectProto.hasOwnProperty;
20375      var propertyIsEnumerable = objectProto.propertyIsEnumerable;
20376      var isArguments = baseIsArguments(function() {
20377        return arguments;
20378      }()) ? baseIsArguments : function(value2) {
20379        return isObjectLike(value2) && hasOwnProperty.call(value2, "callee") && !propertyIsEnumerable.call(value2, "callee");
20380      };
20381      module.exports = isArguments;
20382    }
20383  });
20384
20385  
vendor: 209 bytes, lines 20385-20393
20385// node_modules/lodash/isArray.js
20386  var require_isArray = __commonJS({
20387    "node_modules/lodash/isArray.js"(exports, module) {
20388      var isArray = Array.isArray;
20389      module.exports = isArray;
20390    }
20391  });
20392
20393  
vendor: 241 bytes, lines 20393-20403
20393// node_modules/lodash/stubFalse.js
20394  var require_stubFalse = __commonJS({
20395    "node_modules/lodash/stubFalse.js"(exports, module) {
20396      function stubFalse() {
20397        return false;
20398      }
20399      module.exports = stubFalse;
20400    }
20401  });
20402
20403  
vendor: 702 bytes, lines 20403-20418
20403// node_modules/lodash/isBuffer.js
20404  var require_isBuffer = __commonJS({
20405    "node_modules/lodash/isBuffer.js"(exports, module) {
20406      var root = require_root();
20407      var stubFalse = require_stubFalse();
20408      var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
20409      var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
20410      var moduleExports = freeModule && freeModule.exports === freeExports;
20411      var Buffer2 = moduleExports ? root.Buffer : void 0;
20412      var nativeIsBuffer = Buffer2 ? Buffer2.isBuffer : void 0;
20413      var isBuffer = nativeIsBuffer || stubFalse;
20414      module.exports = isBuffer;
20415    }
20416  });
20417
20418  
vendor: 564 bytes, lines 20418-20432
20418// node_modules/lodash/_isIndex.js
20419  var require_isIndex = __commonJS({
20420    "node_modules/lodash/_isIndex.js"(exports, module) {
20421      var MAX_SAFE_INTEGER = 9007199254740991;
20422      var reIsUint = /^(?:0|[1-9]\d*)$/;
20423      function isIndex(value2, length2) {
20424        var type2 = typeof value2;
20425        length2 = length2 == null ? MAX_SAFE_INTEGER : length2;
20426        return !!length2 && (type2 == "number" || type2 != "symbol" && reIsUint.test(value2)) && (value2 > -1 && value2 % 1 == 0 && value2 < length2);
20427      }
20428      module.exports = isIndex;
20429    }
20430  });
20431
20432  
vendor: 373 bytes, lines 20432-20443
20432// node_modules/lodash/isLength.js
20433  var require_isLength = __commonJS({
20434    "node_modules/lodash/isLength.js"(exports, module) {
20435      var MAX_SAFE_INTEGER = 9007199254740991;
20436      function isLength(value2) {
20437        return typeof value2 == "number" && value2 > -1 && value2 % 1 == 0 && value2 <= MAX_SAFE_INTEGER;
20438      }
20439      module.exports = isLength;
20440    }
20441  });
20442
20443  
vendor: 2,255 bytes, lines 20443-20483
20443// node_modules/lodash/_baseIsTypedArray.js
20444  var require_baseIsTypedArray = __commonJS({
20445    "node_modules/lodash/_baseIsTypedArray.js"(exports, module) {
20446      var baseGetTag = require_baseGetTag();
20447      var isLength = require_isLength();
20448      var isObjectLike = require_isObjectLike();
20449      var argsTag = "[object Arguments]";
20450      var arrayTag = "[object Array]";
20451      var boolTag = "[object Boolean]";
20452      var dateTag = "[object Date]";
20453      var errorTag = "[object Error]";
20454      var funcTag = "[object Function]";
20455      var mapTag = "[object Map]";
20456      var numberTag = "[object Number]";
20457      var objectTag = "[object Object]";
20458      var regexpTag = "[object RegExp]";
20459      var setTag = "[object Set]";
20460      var stringTag = "[object String]";
20461      var weakMapTag = "[object WeakMap]";
20462      var arrayBufferTag = "[object ArrayBuffer]";
20463      var dataViewTag = "[object DataView]";
20464      var float32Tag = "[object Float32Array]";
20465      var float64Tag = "[object Float64Array]";
20466      var int8Tag = "[object Int8Array]";
20467      var int16Tag = "[object Int16Array]";
20468      var int32Tag = "[object Int32Array]";
20469      var uint8Tag = "[object Uint8Array]";
20470      var uint8ClampedTag = "[object Uint8ClampedArray]";
20471      var uint16Tag = "[object Uint16Array]";
20472      var uint32Tag = "[object Uint32Array]";
20473      var typedArrayTags = {};
20474      typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = typedArrayTags[uint32Tag] = true;
20475      typedArrayTags[argsTag] = typedArrayTags[arrayTag] = typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = typedArrayTags[dataViewTag] = typedArrayTags[dateTag] = typedArrayTags[errorTag] = typedArrayTags[funcTag] = typedArrayTags[mapTag] = typedArrayTags[numberTag] = typedArrayTags[objectTag] = typedArrayTags[regexpTag] = typedArrayTags[setTag] = typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false;
20476      function baseIsTypedArray(value2) {
20477        return isObjectLike(value2) && isLength(value2.length) && !!typedArrayTags[baseGetTag(value2)];
20478      }
20479      module.exports = baseIsTypedArray;
20480    }
20481  });
20482
20483  
vendor: 301 bytes, lines 20483-20495
20483// node_modules/lodash/_baseUnary.js
20484  var require_baseUnary = __commonJS({
20485    "node_modules/lodash/_baseUnary.js"(exports, module) {
20486      function baseUnary(func) {
20487        return function(value2) {
20488          return func(value2);
20489        };
20490      }
20491      module.exports = baseUnary;
20492    }
20493  });
20494
20495  
vendor: 890 bytes, lines 20495-20517
20495// node_modules/lodash/_nodeUtil.js
20496  var require_nodeUtil = __commonJS({
20497    "node_modules/lodash/_nodeUtil.js"(exports, module) {
20498      var freeGlobal = require_freeGlobal();
20499      var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
20500      var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
20501      var moduleExports = freeModule && freeModule.exports === freeExports;
20502      var freeProcess = moduleExports && freeGlobal.process;
20503      var nodeUtil = function() {
20504        try {
20505          var types = freeModule && freeModule.require && freeModule.require("util").types;
20506          if (types) {
20507            return types;
20508          }
20509          return freeProcess && freeProcess.binding && freeProcess.binding("util");
20510        } catch (e) {
20511        }
20512      }();
20513      module.exports = nodeUtil;
20514    }
20515  });
20516
20517  
vendor: 491 bytes, lines 20517-20529
20517// node_modules/lodash/isTypedArray.js
20518  var require_isTypedArray = __commonJS({
20519    "node_modules/lodash/isTypedArray.js"(exports, module) {
20520      var baseIsTypedArray = require_baseIsTypedArray();
20521      var baseUnary = require_baseUnary();
20522      var nodeUtil = require_nodeUtil();
20523      var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;
20524      var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;
20525      module.exports = isTypedArray;
20526    }
20527  });
20528
20529  
vendor: 1,300 bytes, lines 20529-20553
20529// node_modules/lodash/_arrayLikeKeys.js
20530  var require_arrayLikeKeys = __commonJS({
20531    "node_modules/lodash/_arrayLikeKeys.js"(exports, module) {
20532      var baseTimes = require_baseTimes();
20533      var isArguments = require_isArguments();
20534      var isArray = require_isArray();
20535      var isBuffer = require_isBuffer();
20536      var isIndex = require_isIndex();
20537      var isTypedArray = require_isTypedArray();
20538      var objectProto = Object.prototype;
20539      var hasOwnProperty = objectProto.hasOwnProperty;
20540      function arrayLikeKeys(value2, inherited) {
20541        var isArr = isArray(value2), isArg = !isArr && isArguments(value2), isBuff = !isArr && !isArg && isBuffer(value2), isType = !isArr && !isArg && !isBuff && isTypedArray(value2), skipIndexes = isArr || isArg || isBuff || isType, result = skipIndexes ? baseTimes(value2.length, String) : [], length2 = result.length;
20542        for (var key in value2) {
20543          if ((inherited || hasOwnProperty.call(value2, key)) && !(skipIndexes && (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || isIndex(key, length2)))) {
20544            result.push(key);
20545          }
20546        }
20547        return result;
20548      }
20549      module.exports = arrayLikeKeys;
20550    }
20551  });
20552
20553  
vendor: 429 bytes, lines 20553-20565
20553// node_modules/lodash/_isPrototype.js
20554  var require_isPrototype = __commonJS({
20555    "node_modules/lodash/_isPrototype.js"(exports, module) {
20556      var objectProto = Object.prototype;
20557      function isPrototype(value2) {
20558        var Ctor = value2 && value2.constructor, proto = typeof Ctor == "function" && Ctor.prototype || objectProto;
20559        return value2 === proto;
20560      }
20561      module.exports = isPrototype;
20562    }
20563  });
20564
20565  
vendor: 307 bytes, lines 20565-20577
20565// node_modules/lodash/_overArg.js
20566  var require_overArg = __commonJS({
20567    "node_modules/lodash/_overArg.js"(exports, module) {
20568      function overArg(func, transform) {
20569        return function(arg) {
20570          return func(transform(arg));
20571        };
20572      }
20573      module.exports = overArg;
20574    }
20575  });
20576
20577  
vendor: 280 bytes, lines 20577-20586
20577// node_modules/lodash/_nativeKeys.js
20578  var require_nativeKeys = __commonJS({
20579    "node_modules/lodash/_nativeKeys.js"(exports, module) {
20580      var overArg = require_overArg();
20581      var nativeKeys = overArg(Object.keys, Object);
20582      module.exports = nativeKeys;
20583    }
20584  });
20585
20586  
vendor: 710 bytes, lines 20586-20609
20586// node_modules/lodash/_baseKeys.js
20587  var require_baseKeys = __commonJS({
20588    "node_modules/lodash/_baseKeys.js"(exports, module) {
20589      var isPrototype = require_isPrototype();
20590      var nativeKeys = require_nativeKeys();
20591      var objectProto = Object.prototype;
20592      var hasOwnProperty = objectProto.hasOwnProperty;
20593      function baseKeys(object) {
20594        if (!isPrototype(object)) {
20595          return nativeKeys(object);
20596        }
20597        var result = [];
20598        for (var key in Object(object)) {
20599          if (hasOwnProperty.call(object, key) && key != "constructor") {
20600            result.push(key);
20601          }
20602        }
20603        return result;
20604      }
20605      module.exports = baseKeys;
20606    }
20607  });
20608
20609  
vendor: 402 bytes, lines 20609-20621
20609// node_modules/lodash/isArrayLike.js
20610  var require_isArrayLike = __commonJS({
20611    "node_modules/lodash/isArrayLike.js"(exports, module) {
20612      var isFunction = require_isFunction();
20613      var isLength = require_isLength();
20614      function isArrayLike(value2) {
20615        return value2 != null && isLength(value2.length) && !isFunction(value2);
20616      }
20617      module.exports = isArrayLike;
20618    }
20619  });
20620
20621  
vendor: 418 bytes, lines 20621-20634
20621// node_modules/lodash/keys.js
20622  var require_keys = __commonJS({
20623    "node_modules/lodash/keys.js"(exports, module) {
20624      var arrayLikeKeys = require_arrayLikeKeys();
20625      var baseKeys = require_baseKeys();
20626      var isArrayLike = require_isArrayLike();
20627      function keys(object) {
20628        return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
20629      }
20630      module.exports = keys;
20631    }
20632  });
20633
20634  
vendor: 385 bytes, lines 20634-20646
20634// node_modules/lodash/_baseAssign.js
20635  var require_baseAssign = __commonJS({
20636    "node_modules/lodash/_baseAssign.js"(exports, module) {
20637      var copyObject = require_copyObject();
20638      var keys = require_keys();
20639      function baseAssign(object, source) {
20640        return object && copyObject(source, keys(source), object);
20641      }
20642      module.exports = baseAssign;
20643    }
20644  });
20645
20646  
vendor: 416 bytes, lines 20646-20662
20646// node_modules/lodash/_nativeKeysIn.js
20647  var require_nativeKeysIn = __commonJS({
20648    "node_modules/lodash/_nativeKeysIn.js"(exports, module) {
20649      function nativeKeysIn(object) {
20650        var result = [];
20651        if (object != null) {
20652          for (var key in Object(object)) {
20653            result.push(key);
20654          }
20655        }
20656        return result;
20657      }
20658      module.exports = nativeKeysIn;
20659    }
20660  });
20661
20662  
vendor: 806 bytes, lines 20662-20686
20662// node_modules/lodash/_baseKeysIn.js
20663  var require_baseKeysIn = __commonJS({
20664    "node_modules/lodash/_baseKeysIn.js"(exports, module) {
20665      var isObject2 = require_isObject();
20666      var isPrototype = require_isPrototype();
20667      var nativeKeysIn = require_nativeKeysIn();
20668      var objectProto = Object.prototype;
20669      var hasOwnProperty = objectProto.hasOwnProperty;
20670      function baseKeysIn(object) {
20671        if (!isObject2(object)) {
20672          return nativeKeysIn(object);
20673        }
20674        var isProto = isPrototype(object), result = [];
20675        for (var key in object) {
20676          if (!(key == "constructor" && (isProto || !hasOwnProperty.call(object, key)))) {
20677            result.push(key);
20678          }
20679        }
20680        return result;
20681      }
20682      module.exports = baseKeysIn;
20683    }
20684  });
20685
20686  
vendor: 440 bytes, lines 20686-20699
20686// node_modules/lodash/keysIn.js
20687  var require_keysIn = __commonJS({
20688    "node_modules/lodash/keysIn.js"(exports, module) {
20689      var arrayLikeKeys = require_arrayLikeKeys();
20690      var baseKeysIn = require_baseKeysIn();
20691      var isArrayLike = require_isArrayLike();
20692      function keysIn(object) {
20693        return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);
20694      }
20695      module.exports = keysIn;
20696    }
20697  });
20698
20699  
vendor: 401 bytes, lines 20699-20711
20699// node_modules/lodash/_baseAssignIn.js
20700  var require_baseAssignIn = __commonJS({
20701    "node_modules/lodash/_baseAssignIn.js"(exports, module) {
20702      var copyObject = require_copyObject();
20703      var keysIn = require_keysIn();
20704      function baseAssignIn(object, source) {
20705        return object && copyObject(source, keysIn(source), object);
20706      }
20707      module.exports = baseAssignIn;
20708    }
20709  });
20710
20711  
vendor: 909 bytes, lines 20711-20732
20711// node_modules/lodash/_cloneBuffer.js
20712  var require_cloneBuffer = __commonJS({
20713    "node_modules/lodash/_cloneBuffer.js"(exports, module) {
20714      var root = require_root();
20715      var freeExports = typeof exports == "object" && exports && !exports.nodeType && exports;
20716      var freeModule = freeExports && typeof module == "object" && module && !module.nodeType && module;
20717      var moduleExports = freeModule && freeModule.exports === freeExports;
20718      var Buffer2 = moduleExports ? root.Buffer : void 0;
20719      var allocUnsafe = Buffer2 ? Buffer2.allocUnsafe : void 0;
20720      function cloneBuffer(buffer, isDeep) {
20721        if (isDeep) {
20722          return buffer.slice();
20723        }
20724        var length2 = buffer.length, result = allocUnsafe ? allocUnsafe(length2) : new buffer.constructor(length2);
20725        buffer.copy(result);
20726        return result;
20727      }
20728      module.exports = cloneBuffer;
20729    }
20730  });
20731
20732  
vendor: 434 bytes, lines 20732-20747
20732// node_modules/lodash/_copyArray.js
20733  var require_copyArray = __commonJS({
20734    "node_modules/lodash/_copyArray.js"(exports, module) {
20735      function copyArray(source, array) {
20736        var index = -1, length2 = source.length;
20737        array || (array = Array(length2));
20738        while (++index < length2) {
20739          array[index] = source[index];
20740        }
20741        return array;
20742      }
20743      module.exports = copyArray;
20744    }
20745  });
20746
20747  
vendor: 550 bytes, lines 20747-20764
20747// node_modules/lodash/_arrayFilter.js
20748  var require_arrayFilter = __commonJS({
20749    "node_modules/lodash/_arrayFilter.js"(exports, module) {
20750      function arrayFilter(array, predicate) {
20751        var index = -1, length2 = array == null ? 0 : array.length, resIndex = 0, result = [];
20752        while (++index < length2) {
20753          var value2 = array[index];
20754          if (predicate(value2, index, array)) {
20755            result[resIndex++] = value2;
20756          }
20757        }
20758        return result;
20759      }
20760      module.exports = arrayFilter;
20761    }
20762  });
20763
20764  
vendor: 238 bytes, lines 20764-20774
20764// node_modules/lodash/stubArray.js
20765  var require_stubArray = __commonJS({
20766    "node_modules/lodash/stubArray.js"(exports, module) {
20767      function stubArray() {
20768        return [];
20769      }
20770      module.exports = stubArray;
20771    }
20772  });
20773
20774  
vendor: 767 bytes, lines 20774-20795
20774// node_modules/lodash/_getSymbols.js
20775  var require_getSymbols = __commonJS({
20776    "node_modules/lodash/_getSymbols.js"(exports, module) {
20777      var arrayFilter = require_arrayFilter();
20778      var stubArray = require_stubArray();
20779      var objectProto = Object.prototype;
20780      var propertyIsEnumerable = objectProto.propertyIsEnumerable;
20781      var nativeGetSymbols = Object.getOwnPropertySymbols;
20782      var getSymbols = !nativeGetSymbols ? stubArray : function(object) {
20783        if (object == null) {
20784          return [];
20785        }
20786        object = Object(object);
20787        return arrayFilter(nativeGetSymbols(object), function(symbol) {
20788          return propertyIsEnumerable.call(object, symbol);
20789        });
20790      };
20791      module.exports = getSymbols;
20792    }
20793  });
20794
20795  
vendor: 398 bytes, lines 20795-20807
20795// node_modules/lodash/_copySymbols.js
20796  var require_copySymbols = __commonJS({
20797    "node_modules/lodash/_copySymbols.js"(exports, module) {
20798      var copyObject = require_copyObject();
20799      var getSymbols = require_getSymbols();
20800      function copySymbols(source, object) {
20801        return copyObject(source, getSymbols(source), object);
20802      }
20803      module.exports = copySymbols;
20804    }
20805  });
20806
20807  
vendor: 423 bytes, lines 20807-20821
20807// node_modules/lodash/_arrayPush.js
20808  var require_arrayPush = __commonJS({
20809    "node_modules/lodash/_arrayPush.js"(exports, module) {
20810      function arrayPush(array, values) {
20811        var index = -1, length2 = values.length, offset = array.length;
20812        while (++index < length2) {
20813          array[offset + index] = values[index];
20814        }
20815        return array;
20816      }
20817      module.exports = arrayPush;
20818    }
20819  });
20820
20821  
vendor: 300 bytes, lines 20821-20830
20821// node_modules/lodash/_getPrototype.js
20822  var require_getPrototype = __commonJS({
20823    "node_modules/lodash/_getPrototype.js"(exports, module) {
20824      var overArg = require_overArg();
20825      var getPrototype = overArg(Object.getPrototypeOf, Object);
20826      module.exports = getPrototype;
20827    }
20828  });
20829
20830  
vendor: 693 bytes, lines 20830-20850
20830// node_modules/lodash/_getSymbolsIn.js
20831  var require_getSymbolsIn = __commonJS({
20832    "node_modules/lodash/_getSymbolsIn.js"(exports, module) {
20833      var arrayPush = require_arrayPush();
20834      var getPrototype = require_getPrototype();
20835      var getSymbols = require_getSymbols();
20836      var stubArray = require_stubArray();
20837      var nativeGetSymbols = Object.getOwnPropertySymbols;
20838      var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {
20839        var result = [];
20840        while (object) {
20841          arrayPush(result, getSymbols(object));
20842          object = getPrototype(object);
20843        }
20844        return result;
20845      };
20846      module.exports = getSymbolsIn;
20847    }
20848  });
20849
20850  
vendor: 414 bytes, lines 20850-20862
20850// node_modules/lodash/_copySymbolsIn.js
20851  var require_copySymbolsIn = __commonJS({
20852    "node_modules/lodash/_copySymbolsIn.js"(exports, module) {
20853      var copyObject = require_copyObject();
20854      var getSymbolsIn = require_getSymbolsIn();
20855      function copySymbolsIn(source, object) {
20856        return copyObject(source, getSymbolsIn(source), object);
20857      }
20858      module.exports = copySymbolsIn;
20859    }
20860  });
20861
20862  
vendor: 478 bytes, lines 20862-20875
20862// node_modules/lodash/_baseGetAllKeys.js
20863  var require_baseGetAllKeys = __commonJS({
20864    "node_modules/lodash/_baseGetAllKeys.js"(exports, module) {
20865      var arrayPush = require_arrayPush();
20866      var isArray = require_isArray();
20867      function baseGetAllKeys(object, keysFunc, symbolsFunc) {
20868        var result = keysFunc(object);
20869        return isArray(object) ? result : arrayPush(result, symbolsFunc(object));
20870      }
20871      module.exports = baseGetAllKeys;
20872    }
20873  });
20874
20875  
vendor: 420 bytes, lines 20875-20888
20875// node_modules/lodash/_getAllKeys.js
20876  var require_getAllKeys = __commonJS({
20877    "node_modules/lodash/_getAllKeys.js"(exports, module) {
20878      var baseGetAllKeys = require_baseGetAllKeys();
20879      var getSymbols = require_getSymbols();
20880      var keys = require_keys();
20881      function getAllKeys(object) {
20882        return baseGetAllKeys(object, keys, getSymbols);
20883      }
20884      module.exports = getAllKeys;
20885    }
20886  });
20887
20888  
vendor: 442 bytes, lines 20888-20901
20888// node_modules/lodash/_getAllKeysIn.js
20889  var require_getAllKeysIn = __commonJS({
20890    "node_modules/lodash/_getAllKeysIn.js"(exports, module) {
20891      var baseGetAllKeys = require_baseGetAllKeys();
20892      var getSymbolsIn = require_getSymbolsIn();
20893      var keysIn = require_keysIn();
20894      function getAllKeysIn(object) {
20895        return baseGetAllKeys(object, keysIn, getSymbolsIn);
20896      }
20897      module.exports = getAllKeysIn;
20898    }
20899  });
20900
20901  
vendor: 308 bytes, lines 20901-20911
20901// node_modules/lodash/_DataView.js
20902  var require_DataView = __commonJS({
20903    "node_modules/lodash/_DataView.js"(exports, module) {
20904      var getNative = require_getNative();
20905      var root = require_root();
20906      var DataView2 = getNative(root, "DataView");
20907      module.exports = DataView2;
20908    }
20909  });
20910
20911  
vendor: 302 bytes, lines 20911-20921
20911// node_modules/lodash/_Promise.js
20912  var require_Promise = __commonJS({
20913    "node_modules/lodash/_Promise.js"(exports, module) {
20914      var getNative = require_getNative();
20915      var root = require_root();
20916      var Promise2 = getNative(root, "Promise");
20917      module.exports = Promise2;
20918    }
20919  });
20920
20921  
vendor: 278 bytes, lines 20921-20931
20921// node_modules/lodash/_Set.js
20922  var require_Set = __commonJS({
20923    "node_modules/lodash/_Set.js"(exports, module) {
20924      var getNative = require_getNative();
20925      var root = require_root();
20926      var Set2 = getNative(root, "Set");
20927      module.exports = Set2;
20928    }
20929  });
20930
20931  
vendor: 300 bytes, lines 20931-20941
20931// node_modules/lodash/_WeakMap.js
20932  var require_WeakMap = __commonJS({
20933    "node_modules/lodash/_WeakMap.js"(exports, module) {
20934      var getNative = require_getNative();
20935      var root = require_root();
20936      var WeakMap = getNative(root, "WeakMap");
20937      module.exports = WeakMap;
20938    }
20939  });
20940
20941  
vendor: 1,881 bytes, lines 20941-20987
20941// node_modules/lodash/_getTag.js
20942  var require_getTag = __commonJS({
20943    "node_modules/lodash/_getTag.js"(exports, module) {
20944      var DataView2 = require_DataView();
20945      var Map2 = require_Map();
20946      var Promise2 = require_Promise();
20947      var Set2 = require_Set();
20948      var WeakMap = require_WeakMap();
20949      var baseGetTag = require_baseGetTag();
20950      var toSource = require_toSource();
20951      var mapTag = "[object Map]";
20952      var objectTag = "[object Object]";
20953      var promiseTag = "[object Promise]";
20954      var setTag = "[object Set]";
20955      var weakMapTag = "[object WeakMap]";
20956      var dataViewTag = "[object DataView]";
20957      var dataViewCtorString = toSource(DataView2);
20958      var mapCtorString = toSource(Map2);
20959      var promiseCtorString = toSource(Promise2);
20960      var setCtorString = toSource(Set2);
20961      var weakMapCtorString = toSource(WeakMap);
20962      var getTag = baseGetTag;
20963      if (DataView2 && getTag(new DataView2(new ArrayBuffer(1))) != dataViewTag || Map2 && getTag(new Map2()) != mapTag || Promise2 && getTag(Promise2.resolve()) != promiseTag || Set2 && getTag(new Set2()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) {
20964        getTag = function(value2) {
20965          var result = baseGetTag(value2), Ctor = result == objectTag ? value2.constructor : void 0, ctorString = Ctor ? toSource(Ctor) : "";
20966          if (ctorString) {
20967            switch (ctorString) {
20968              case dataViewCtorString:
20969                return dataViewTag;
20970              case mapCtorString:
20971                return mapTag;
20972              case promiseCtorString:
20973                return promiseTag;
20974              case setCtorString:
20975                return setTag;
20976              case weakMapCtorString:
20977                return weakMapTag;
20978            }
20979          }
20980          return result;
20981        };
20982      }
20983      module.exports = getTag;
20984    }
20985  });
20986
20987  
vendor: 627 bytes, lines 20987-21004
20987// node_modules/lodash/_initCloneArray.js
20988  var require_initCloneArray = __commonJS({
20989    "node_modules/lodash/_initCloneArray.js"(exports, module) {
20990      var objectProto = Object.prototype;
20991      var hasOwnProperty = objectProto.hasOwnProperty;
20992      function initCloneArray(array) {
20993        var length2 = array.length, result = new array.constructor(length2);
20994        if (length2 && typeof array[0] == "string" && hasOwnProperty.call(array, "index")) {
20995          result.index = array.index;
20996          result.input = array.input;
20997        }
20998        return result;
20999      }
21000      module.exports = initCloneArray;
21001    }
21002  });
21003
21004  
vendor: 263 bytes, lines 21004-21013
21004// node_modules/lodash/_Uint8Array.js
21005  var require_Uint8Array = __commonJS({
21006    "node_modules/lodash/_Uint8Array.js"(exports, module) {
21007      var root = require_root();
21008      var Uint8Array2 = root.Uint8Array;
21009      module.exports = Uint8Array2;
21010    }
21011  });
21012
21013  
vendor: 477 bytes, lines 21013-21026
21013// node_modules/lodash/_cloneArrayBuffer.js
21014  var require_cloneArrayBuffer = __commonJS({
21015    "node_modules/lodash/_cloneArrayBuffer.js"(exports, module) {
21016      var Uint8Array2 = require_Uint8Array();
21017      function cloneArrayBuffer(arrayBuffer) {
21018        var result = new arrayBuffer.constructor(arrayBuffer.byteLength);
21019        new Uint8Array2(result).set(new Uint8Array2(arrayBuffer));
21020        return result;
21021      }
21022      module.exports = cloneArrayBuffer;
21023    }
21024  });
21025
21026  
vendor: 488 bytes, lines 21026-21038
21026// node_modules/lodash/_cloneDataView.js
21027  var require_cloneDataView = __commonJS({
21028    "node_modules/lodash/_cloneDataView.js"(exports, module) {
21029      var cloneArrayBuffer = require_cloneArrayBuffer();
21030      function cloneDataView(dataView, isDeep) {
21031        var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;
21032        return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);
21033      }
21034      module.exports = cloneDataView;
21035    }
21036  });
21037
21038  
vendor: 415 bytes, lines 21038-21051
21038// node_modules/lodash/_cloneRegExp.js
21039  var require_cloneRegExp = __commonJS({
21040    "node_modules/lodash/_cloneRegExp.js"(exports, module) {
21041      var reFlags = /\w*$/;
21042      function cloneRegExp(regexp) {
21043        var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));
21044        result.lastIndex = regexp.lastIndex;
21045        return result;
21046      }
21047      module.exports = cloneRegExp;
21048    }
21049  });
21050
21051  
vendor: 479 bytes, lines 21051-21064
21051// node_modules/lodash/_cloneSymbol.js
21052  var require_cloneSymbol = __commonJS({
21053    "node_modules/lodash/_cloneSymbol.js"(exports, module) {
21054      var Symbol2 = require_Symbol();
21055      var symbolProto = Symbol2 ? Symbol2.prototype : void 0;
21056      var symbolValueOf = symbolProto ? symbolProto.valueOf : void 0;
21057      function cloneSymbol(symbol) {
21058        return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};
21059      }
21060      module.exports = cloneSymbol;
21061    }
21062  });
21063
21064  
vendor: 506 bytes, lines 21064-21076
21064// node_modules/lodash/_cloneTypedArray.js
21065  var require_cloneTypedArray = __commonJS({
21066    "node_modules/lodash/_cloneTypedArray.js"(exports, module) {
21067      var cloneArrayBuffer = require_cloneArrayBuffer();
21068      function cloneTypedArray(typedArray, isDeep) {
21069        var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;
21070        return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);
21071      }
21072      module.exports = cloneTypedArray;
21073    }
21074  });
21075
21076  
vendor: 2,279 bytes, lines 21076-21140
21076// node_modules/lodash/_initCloneByTag.js
21077  var require_initCloneByTag = __commonJS({
21078    "node_modules/lodash/_initCloneByTag.js"(exports, module) {
21079      var cloneArrayBuffer = require_cloneArrayBuffer();
21080      var cloneDataView = require_cloneDataView();
21081      var cloneRegExp = require_cloneRegExp();
21082      var cloneSymbol = require_cloneSymbol();
21083      var cloneTypedArray = require_cloneTypedArray();
21084      var boolTag = "[object Boolean]";
21085      var dateTag = "[object Date]";
21086      var mapTag = "[object Map]";
21087      var numberTag = "[object Number]";
21088      var regexpTag = "[object RegExp]";
21089      var setTag = "[object Set]";
21090      var stringTag = "[object String]";
21091      var symbolTag = "[object Symbol]";
21092      var arrayBufferTag = "[object ArrayBuffer]";
21093      var dataViewTag = "[object DataView]";
21094      var float32Tag = "[object Float32Array]";
21095      var float64Tag = "[object Float64Array]";
21096      var int8Tag = "[object Int8Array]";
21097      var int16Tag = "[object Int16Array]";
21098      var int32Tag = "[object Int32Array]";
21099      var uint8Tag = "[object Uint8Array]";
21100      var uint8ClampedTag = "[object Uint8ClampedArray]";
21101      var uint16Tag = "[object Uint16Array]";
21102      var uint32Tag = "[object Uint32Array]";
21103      function initCloneByTag(object, tag, isDeep) {
21104        var Ctor = object.constructor;
21105        switch (tag) {
21106          case arrayBufferTag:
21107            return cloneArrayBuffer(object);
21108          case boolTag:
21109          case dateTag:
21110            return new Ctor(+object);
21111          case dataViewTag:
21112            return cloneDataView(object, isDeep);
21113          case float32Tag:
21114          case float64Tag:
21115          case int8Tag:
21116          case int16Tag:
21117          case int32Tag:
21118          case uint8Tag:
21119          case uint8ClampedTag:
21120          case uint16Tag:
21121          case uint32Tag:
21122            return cloneTypedArray(object, isDeep);
21123          case mapTag:
21124            return new Ctor();
21125          case numberTag:
21126          case stringTag:
21127            return new Ctor(object);
21128          case regexpTag:
21129            return cloneRegExp(object);
21130          case setTag:
21131            return new Ctor();
21132          case symbolTag:
21133            return cloneSymbol(object);
21134        }
21135      }
21136      module.exports = initCloneByTag;
21137    }
21138  });
21139
21140  
vendor: 686 bytes, lines 21140-21165
21140// node_modules/lodash/_baseCreate.js
21141  var require_baseCreate = __commonJS({
21142    "node_modules/lodash/_baseCreate.js"(exports, module) {
21143      var isObject2 = require_isObject();
21144      var objectCreate = Object.create;
21145      var baseCreate = function() {
21146        function object() {
21147        }
21148        return function(proto) {
21149          if (!isObject2(proto)) {
21150            return {};
21151          }
21152          if (objectCreate) {
21153            return objectCreate(proto);
21154          }
21155          object.prototype = proto;
21156          var result = new object();
21157          object.prototype = void 0;
21158          return result;
21159        };
21160      }();
21161      module.exports = baseCreate;
21162    }
21163  });
21164
21165  
vendor: 518 bytes, lines 21165-21178
21165// node_modules/lodash/_initCloneObject.js
21166  var require_initCloneObject = __commonJS({
21167    "node_modules/lodash/_initCloneObject.js"(exports, module) {
21168      var baseCreate = require_baseCreate();
21169      var getPrototype = require_getPrototype();
21170      var isPrototype = require_isPrototype();
21171      function initCloneObject(object) {
21172        return typeof object.constructor == "function" && !isPrototype(object) ? baseCreate(getPrototype(object)) : {};
21173      }
21174      module.exports = initCloneObject;
21175    }
21176  });
21177
21178  
vendor: 413 bytes, lines 21178-21191
21178// node_modules/lodash/_baseIsMap.js
21179  var require_baseIsMap = __commonJS({
21180    "node_modules/lodash/_baseIsMap.js"(exports, module) {
21181      var getTag = require_getTag();
21182      var isObjectLike = require_isObjectLike();
21183      var mapTag = "[object Map]";
21184      function baseIsMap(value2) {
21185        return isObjectLike(value2) && getTag(value2) == mapTag;
21186      }
21187      module.exports = baseIsMap;
21188    }
21189  });
21190
21191  
vendor: 407 bytes, lines 21191-21203
21191// node_modules/lodash/isMap.js
21192  var require_isMap = __commonJS({
21193    "node_modules/lodash/isMap.js"(exports, module) {
21194      var baseIsMap = require_baseIsMap();
21195      var baseUnary = require_baseUnary();
21196      var nodeUtil = require_nodeUtil();
21197      var nodeIsMap = nodeUtil && nodeUtil.isMap;
21198      var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;
21199      module.exports = isMap;
21200    }
21201  });
21202
21203  
vendor: 413 bytes, lines 21203-21216
21203// node_modules/lodash/_baseIsSet.js
21204  var require_baseIsSet = __commonJS({
21205    "node_modules/lodash/_baseIsSet.js"(exports, module) {
21206      var getTag = require_getTag();
21207      var isObjectLike = require_isObjectLike();
21208      var setTag = "[object Set]";
21209      function baseIsSet(value2) {
21210        return isObjectLike(value2) && getTag(value2) == setTag;
21211      }
21212      module.exports = baseIsSet;
21213    }
21214  });
21215
21216  
vendor: 407 bytes, lines 21216-21228
21216// node_modules/lodash/isSet.js
21217  var require_isSet = __commonJS({
21218    "node_modules/lodash/isSet.js"(exports, module) {
21219      var baseIsSet = require_baseIsSet();
21220      var baseUnary = require_baseUnary();
21221      var nodeUtil = require_nodeUtil();
21222      var nodeIsSet = nodeUtil && nodeUtil.isSet;
21223      var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;
21224      module.exports = isSet;
21225    }
21226  });
21227
21228  
vendor: 5,455 bytes, lines 21228-21349
21228// node_modules/lodash/_baseClone.js
21229  var require_baseClone = __commonJS({
21230    "node_modules/lodash/_baseClone.js"(exports, module) {
21231      var Stack = require_Stack();
21232      var arrayEach = require_arrayEach();
21233      var assignValue = require_assignValue();
21234      var baseAssign = require_baseAssign();
21235      var baseAssignIn = require_baseAssignIn();
21236      var cloneBuffer = require_cloneBuffer();
21237      var copyArray = require_copyArray();
21238      var copySymbols = require_copySymbols();
21239      var copySymbolsIn = require_copySymbolsIn();
21240      var getAllKeys = require_getAllKeys();
21241      var getAllKeysIn = require_getAllKeysIn();
21242      var getTag = require_getTag();
21243      var initCloneArray = require_initCloneArray();
21244      var initCloneByTag = require_initCloneByTag();
21245      var initCloneObject = require_initCloneObject();
21246      var isArray = require_isArray();
21247      var isBuffer = require_isBuffer();
21248      var isMap = require_isMap();
21249      var isObject2 = require_isObject();
21250      var isSet = require_isSet();
21251      var keys = require_keys();
21252      var keysIn = require_keysIn();
21253      var CLONE_DEEP_FLAG = 1;
21254      var CLONE_FLAT_FLAG = 2;
21255      var CLONE_SYMBOLS_FLAG = 4;
21256      var argsTag = "[object Arguments]";
21257      var arrayTag = "[object Array]";
21258      var boolTag = "[object Boolean]";
21259      var dateTag = "[object Date]";
21260      var errorTag = "[object Error]";
21261      var funcTag = "[object Function]";
21262      var genTag = "[object GeneratorFunction]";
21263      var mapTag = "[object Map]";
21264      var numberTag = "[object Number]";
21265      var objectTag = "[object Object]";
21266      var regexpTag = "[object RegExp]";
21267      var setTag = "[object Set]";
21268      var stringTag = "[object String]";
21269      var symbolTag = "[object Symbol]";
21270      var weakMapTag = "[object WeakMap]";
21271      var arrayBufferTag = "[object ArrayBuffer]";
21272      var dataViewTag = "[object DataView]";
21273      var float32Tag = "[object Float32Array]";
21274      var float64Tag = "[object Float64Array]";
21275      var int8Tag = "[object Int8Array]";
21276      var int16Tag = "[object Int16Array]";
21277      var int32Tag = "[object Int32Array]";
21278      var uint8Tag = "[object Uint8Array]";
21279      var uint8ClampedTag = "[object Uint8ClampedArray]";
21280      var uint16Tag = "[object Uint16Array]";
21281      var uint32Tag = "[object Uint32Array]";
21282      var cloneableTags = {};
21283      cloneableTags[argsTag] = cloneableTags[arrayTag] = cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] = cloneableTags[boolTag] = cloneableTags[dateTag] = cloneableTags[float32Tag] = cloneableTags[float64Tag] = cloneableTags[int8Tag] = cloneableTags[int16Tag] = cloneableTags[int32Tag] = cloneableTags[mapTag] = cloneableTags[numberTag] = cloneableTags[objectTag] = cloneableTags[regexpTag] = cloneableTags[setTag] = cloneableTags[stringTag] = cloneableTags[symbolTag] = cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;
21284      cloneableTags[errorTag] = cloneableTags[funcTag] = cloneableTags[weakMapTag] = false;
21285      function baseClone(value2, bitmask, customizer, key, object, stack) {
21286        var result, isDeep = bitmask & CLONE_DEEP_FLAG, isFlat = bitmask & CLONE_FLAT_FLAG, isFull = bitmask & CLONE_SYMBOLS_FLAG;
21287        if (customizer) {
21288          result = object ? customizer(value2, key, object, stack) : customizer(value2);
21289        }
21290        if (result !== void 0) {
21291          return result;
21292        }
21293        if (!isObject2(value2)) {
21294          return value2;
21295        }
21296        var isArr = isArray(value2);
21297        if (isArr) {
21298          result = initCloneArray(value2);
21299          if (!isDeep) {
21300            return copyArray(value2, result);
21301          }
21302        } else {
21303          var tag = getTag(value2), isFunc = tag == funcTag || tag == genTag;
21304          if (isBuffer(value2)) {
21305            return cloneBuffer(value2, isDeep);
21306          }
21307          if (tag == objectTag || tag == argsTag || isFunc && !object) {
21308            result = isFlat || isFunc ? {} : initCloneObject(value2);
21309            if (!isDeep) {
21310              return isFlat ? copySymbolsIn(value2, baseAssignIn(result, value2)) : copySymbols(value2, baseAssign(result, value2));
21311            }
21312          } else {
21313            if (!cloneableTags[tag]) {
21314              return object ? value2 : {};
21315            }
21316            result = initCloneByTag(value2, tag, isDeep);
21317          }
21318        }
21319        stack || (stack = new Stack());
21320        var stacked = stack.get(value2);
21321        if (stacked) {
21322          return stacked;
21323        }
21324        stack.set(value2, result);
21325        if (isSet(value2)) {
21326          value2.forEach(function(subValue) {
21327            result.add(baseClone(subValue, bitmask, customizer, subValue, value2, stack));
21328          });
21329        } else if (isMap(value2)) {
21330          value2.forEach(function(subValue, key2) {
21331            result.set(key2, baseClone(subValue, bitmask, customizer, key2, value2, stack));
21332          });
21333        }
21334        var keysFunc = isFull ? isFlat ? getAllKeysIn : getAllKeys : isFlat ? keysIn : keys;
21335        var props = isArr ? void 0 : keysFunc(value2);
21336        arrayEach(props || value2, function(subValue, key2) {
21337          if (props) {
21338            key2 = subValue;
21339            subValue = value2[key2];
21340          }
21341          assignValue(result, key2, baseClone(subValue, bitmask, customizer, key2, value2, stack));
21342        });
21343        return result;
21344      }
21345      module.exports = baseClone;
21346    }
21347  });
21348
21349  
vendor: 527 bytes, lines 21349-21363
21349// node_modules/lodash/cloneDeepWith.js
21350  var require_cloneDeepWith = __commonJS({
21351    "node_modules/lodash/cloneDeepWith.js"(exports, module) {
21352      var baseClone = require_baseClone();
21353      var CLONE_DEEP_FLAG = 1;
21354      var CLONE_SYMBOLS_FLAG = 4;
21355      function cloneDeepWith2(value2, customizer) {
21356        customizer = typeof customizer == "function" ? customizer : void 0;
21357        return baseClone(value2, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);
21358      }
21359      module.exports = cloneDeepWith2;
21360    }
21361  });
21362
21363  
vendor: 2,850 bytes, lines 21363-21435
21363// node_modules/crypt/crypt.js
21364  var require_crypt = __commonJS({
21365    "node_modules/crypt/crypt.js"(exports, module) {
21366      (function() {
21367        var base64map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", crypt = {
21368          rotl: function(n, b) {
21369            return n << b | n >>> 32 - b;
21370          },
21371          rotr: function(n, b) {
21372            return n << 32 - b | n >>> b;
21373          },
21374          endian: function(n) {
21375            if (n.constructor == Number) {
21376              return crypt.rotl(n, 8) & 16711935 | crypt.rotl(n, 24) & 4278255360;
21377            }
21378            for (var i2 = 0; i2 < n.length; i2++)
21379              n[i2] = crypt.endian(n[i2]);
21380            return n;
21381          },
21382          randomBytes: function(n) {
21383            for (var bytes = []; n > 0; n--)
21384              bytes.push(Math.floor(Math.random() * 256));
21385            return bytes;
21386          },
21387          bytesToWords: function(bytes) {
21388            for (var words = [], i2 = 0, b = 0; i2 < bytes.length; i2++, b += 8)
21389              words[b >>> 5] |= bytes[i2] << 24 - b % 32;
21390            return words;
21391          },
21392          wordsToBytes: function(words) {
21393            for (var bytes = [], b = 0; b < words.length * 32; b += 8)
21394              bytes.push(words[b >>> 5] >>> 24 - b % 32 & 255);
21395            return bytes;
21396          },
21397          bytesToHex: function(bytes) {
21398            for (var hex = [], i2 = 0; i2 < bytes.length; i2++) {
21399              hex.push((bytes[i2] >>> 4).toString(16));
21400              hex.push((bytes[i2] & 15).toString(16));
21401            }
21402            return hex.join("");
21403          },
21404          hexToBytes: function(hex) {
21405            for (var bytes = [], c = 0; c < hex.length; c += 2)
21406              bytes.push(parseInt(hex.substr(c, 2), 16));
21407            return bytes;
21408          },
21409          bytesToBase64: function(bytes) {
21410            for (var base64 = [], i2 = 0; i2 < bytes.length; i2 += 3) {
21411              var triplet = bytes[i2] << 16 | bytes[i2 + 1] << 8 | bytes[i2 + 2];
21412              for (var j = 0; j < 4; j++)
21413                if (i2 * 8 + j * 6 <= bytes.length * 8)
21414                  base64.push(base64map.charAt(triplet >>> 6 * (3 - j) & 63));
21415                else
21416                  base64.push("=");
21417            }
21418            return base64.join("");
21419          },
21420          base64ToBytes: function(base64) {
21421            base64 = base64.replace(/[^A-Z0-9+\/]/ig, "");
21422            for (var bytes = [], i2 = 0, imod4 = 0; i2 < base64.length; imod4 = ++i2 % 4) {
21423              if (imod4 == 0)
21424                continue;
21425              bytes.push((base64map.indexOf(base64.charAt(i2 - 1)) & Math.pow(2, -2 * imod4 + 8) - 1) << imod4 * 2 | base64map.indexOf(base64.charAt(i2)) >>> 6 - imod4 * 2);
21426            }
21427            return bytes;
21428          }
21429        };
21430        module.exports = crypt;
21431      })();
21432    }
21433  });
21434
21435  
vendor: 934 bytes, lines 21435-21464
21435// node_modules/charenc/charenc.js
21436  var require_charenc = __commonJS({
21437    "node_modules/charenc/charenc.js"(exports, module) {
21438      var charenc = {
21439        utf8: {
21440          stringToBytes: function(str) {
21441            return charenc.bin.stringToBytes(unescape(encodeURIComponent(str)));
21442          },
21443          bytesToString: function(bytes) {
21444            return decodeURIComponent(escape(charenc.bin.bytesToString(bytes)));
21445          }
21446        },
21447        bin: {
21448          stringToBytes: function(str) {
21449            for (var bytes = [], i2 = 0; i2 < str.length; i2++)
21450              bytes.push(str.charCodeAt(i2) & 255);
21451            return bytes;
21452          },
21453          bytesToString: function(bytes) {
21454            for (var str = [], i2 = 0; i2 < bytes.length; i2++)
21455              str.push(String.fromCharCode(bytes[i2]));
21456            return str.join("");
21457          }
21458        }
21459      };
21460      module.exports = charenc;
21461    }
21462  });
21463
21464  
vendor: 598 bytes, lines 21464-21479
21464// node_modules/is-buffer/index.js
21465  var require_is_buffer = __commonJS({
21466    "node_modules/is-buffer/index.js"(exports, module) {
21467      module.exports = function(obj) {
21468        return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);
21469      };
21470      function isBuffer(obj) {
21471        return !!obj.constructor && typeof obj.constructor.isBuffer === "function" && obj.constructor.isBuffer(obj);
21472      }
21473      function isSlowBuffer(obj) {
21474        return typeof obj.readFloatLE === "function" && typeof obj.slice === "function" && isBuffer(obj.slice(0, 0));
21475      }
21476    }
21477  });
21478
21479  
vendor: 6,403 bytes, lines 21479-21601
21479// node_modules/md5/md5.js
21480  var require_md5 = __commonJS({
21481    "node_modules/md5/md5.js"(exports, module) {
21482      (function() {
21483        var crypt = require_crypt(), utf8 = require_charenc().utf8, isBuffer = require_is_buffer(), bin = require_charenc().bin, md52 = function(message, options) {
21484          if (message.constructor == String)
21485            if (options && options.encoding === "binary")
21486              message = bin.stringToBytes(message);
21487            else
21488              message = utf8.stringToBytes(message);
21489          else if (isBuffer(message))
21490            message = Array.prototype.slice.call(message, 0);
21491          else if (!Array.isArray(message) && message.constructor !== Uint8Array)
21492            message = message.toString();
21493          var m = crypt.bytesToWords(message), l = message.length * 8, a = 1732584193, b = -271733879, c = -1732584194, d = 271733878;
21494          for (var i2 = 0; i2 < m.length; i2++) {
21495            m[i2] = (m[i2] << 8 | m[i2] >>> 24) & 16711935 | (m[i2] << 24 | m[i2] >>> 8) & 4278255360;
21496          }
21497          m[l >>> 5] |= 128 << l % 32;
21498          m[(l + 64 >>> 9 << 4) + 14] = l;
21499          var FF = md52._ff, GG = md52._gg, HH = md52._hh, II = md52._ii;
21500          for (var i2 = 0; i2 < m.length; i2 += 16) {
21501            var aa = a, bb = b, cc = c, dd = d;
21502            a = FF(a, b, c, d, m[i2 + 0], 7, -680876936);
21503            d = FF(d, a, b, c, m[i2 + 1], 12, -389564586);
21504            c = FF(c, d, a, b, m[i2 + 2], 17, 606105819);
21505            b = FF(b, c, d, a, m[i2 + 3], 22, -1044525330);
21506            a = FF(a, b, c, d, m[i2 + 4], 7, -176418897);
21507            d = FF(d, a, b, c, m[i2 + 5], 12, 1200080426);
21508            c = FF(c, d, a, b, m[i2 + 6], 17, -1473231341);
21509            b = FF(b, c, d, a, m[i2 + 7], 22, -45705983);
21510            a = FF(a, b, c, d, m[i2 + 8], 7, 1770035416);
21511            d = FF(d, a, b, c, m[i2 + 9], 12, -1958414417);
21512            c = FF(c, d, a, b, m[i2 + 10], 17, -42063);
21513            b = FF(b, c, d, a, m[i2 + 11], 22, -1990404162);
21514            a = FF(a, b, c, d, m[i2 + 12], 7, 1804603682);
21515            d = FF(d, a, b, c, m[i2 + 13], 12, -40341101);
21516            c = FF(c, d, a, b, m[i2 + 14], 17, -1502002290);
21517            b = FF(b, c, d, a, m[i2 + 15], 22, 1236535329);
21518            a = GG(a, b, c, d, m[i2 + 1], 5, -165796510);
21519            d = GG(d, a, b, c, m[i2 + 6], 9, -1069501632);
21520            c = GG(c, d, a, b, m[i2 + 11], 14, 643717713);
21521            b = GG(b, c, d, a, m[i2 + 0], 20, -373897302);
21522            a = GG(a, b, c, d, m[i2 + 5], 5, -701558691);
21523            d = GG(d, a, b, c, m[i2 + 10], 9, 38016083);
21524            c = GG(c, d, a, b, m[i2 + 15], 14, -660478335);
21525            b = GG(b, c, d, a, m[i2 + 4], 20, -405537848);
21526            a = GG(a, b, c, d, m[i2 + 9], 5, 568446438);
21527            d = GG(d, a, b, c, m[i2 + 14], 9, -1019803690);
21528            c = GG(c, d, a, b, m[i2 + 3], 14, -187363961);
21529            b = GG(b, c, d, a, m[i2 + 8], 20, 1163531501);
21530            a = GG(a, b, c, d, m[i2 + 13], 5, -1444681467);
21531            d = GG(d, a, b, c, m[i2 + 2], 9, -51403784);
21532            c = GG(c, d, a, b, m[i2 + 7], 14, 1735328473);
21533            b = GG(b, c, d, a, m[i2 + 12], 20, -1926607734);
21534            a = HH(a, b, c, d, m[i2 + 5], 4, -378558);
21535            d = HH(d, a, b, c, m[i2 + 8], 11, -2022574463);
21536            c = HH(c, d, a, b, m[i2 + 11], 16, 1839030562);
21537            b = HH(b, c, d, a, m[i2 + 14], 23, -35309556);
21538            a = HH(a, b, c, d, m[i2 + 1], 4, -1530992060);
21539            d = HH(d, a, b, c, m[i2 + 4], 11, 1272893353);
21540            c = HH(c, d, a, b, m[i2 + 7], 16, -155497632);
21541            b = HH(b, c, d, a, m[i2 + 10], 23, -1094730640);
21542            a = HH(a, b, c, d, m[i2 + 13], 4, 681279174);
21543            d = HH(d, a, b, c, m[i2 + 0], 11, -358537222);
21544            c = HH(c, d, a, b, m[i2 + 3], 16, -722521979);
21545            b = HH(b, c, d, a, m[i2 + 6], 23, 76029189);
21546            a = HH(a, b, c, d, m[i2 + 9], 4, -640364487);
21547            d = HH(d, a, b, c, m[i2 + 12], 11, -421815835);
21548            c = HH(c, d, a, b, m[i2 + 15], 16, 530742520);
21549            b = HH(b, c, d, a, m[i2 + 2], 23, -995338651);
21550            a = II(a, b, c, d, m[i2 + 0], 6, -198630844);
21551            d = II(d, a, b, c, m[i2 + 7], 10, 1126891415);
21552            c = II(c, d, a, b, m[i2 + 14], 15, -1416354905);
21553            b = II(b, c, d, a, m[i2 + 5], 21, -57434055);
21554            a = II(a, b, c, d, m[i2 + 12], 6, 1700485571);
21555            d = II(d, a, b, c, m[i2 + 3], 10, -1894986606);
21556            c = II(c, d, a, b, m[i2 + 10], 15, -1051523);
21557            b = II(b, c, d, a, m[i2 + 1], 21, -2054922799);
21558            a = II(a, b, c, d, m[i2 + 8], 6, 1873313359);
21559            d = II(d, a, b, c, m[i2 + 15], 10, -30611744);
21560            c = II(c, d, a, b, m[i2 + 6], 15, -1560198380);
21561            b = II(b, c, d, a, m[i2 + 13], 21, 1309151649);
21562            a = II(a, b, c, d, m[i2 + 4], 6, -145523070);
21563            d = II(d, a, b, c, m[i2 + 11], 10, -1120210379);
21564            c = II(c, d, a, b, m[i2 + 2], 15, 718787259);
21565            b = II(b, c, d, a, m[i2 + 9], 21, -343485551);
21566            a = a + aa >>> 0;
21567            b = b + bb >>> 0;
21568            c = c + cc >>> 0;
21569            d = d + dd >>> 0;
21570          }
21571          return crypt.endian([a, b, c, d]);
21572        };
21573        md52._ff = function(a, b, c, d, x, s, t) {
21574          var n = a + (b & c | ~b & d) + (x >>> 0) + t;
21575          return (n << s | n >>> 32 - s) + b;
21576        };
21577        md52._gg = function(a, b, c, d, x, s, t) {
21578          var n = a + (b & d | c & ~d) + (x >>> 0) + t;
21579          return (n << s | n >>> 32 - s) + b;
21580        };
21581        md52._hh = function(a, b, c, d, x, s, t) {
21582          var n = a + (b ^ c ^ d) + (x >>> 0) + t;
21583          return (n << s | n >>> 32 - s) + b;
21584        };
21585        md52._ii = function(a, b, c, d, x, s, t) {
21586          var n = a + (c ^ (b | ~d)) + (x >>> 0) + t;
21587          return (n << s | n >>> 32 - s) + b;
21588        };
21589        md52._blocksize = 16;
21590        md52._digestsize = 16;
21591        module.exports = function(message, options) {
21592          if (message === void 0 || message === null)
21593            throw new Error("Illegal argument " + message);
21594          var digestbytes = crypt.wordsToBytes(md52(message, options));
21595          return options && options.asBytes ? digestbytes : options && options.asString ? bin.bytesToString(digestbytes) : crypt.bytesToHex(digestbytes);
21596        };
21597      })();
21598    }
21599  });
21600
21601  
vendor: 50,736 bytes, lines 21601-23055
21601// node_modules/highlight.js/lib/core.js
21602  var require_core = __commonJS({
21603    "node_modules/highlight.js/lib/core.js"(exports, module) {
21604      function deepFreeze(obj) {
21605        if (obj instanceof Map) {
21606          obj.clear = obj.delete = obj.set = function() {
21607            throw new Error("map is read-only");
21608          };
21609        } else if (obj instanceof Set) {
21610          obj.add = obj.clear = obj.delete = function() {
21611            throw new Error("set is read-only");
21612          };
21613        }
21614        Object.freeze(obj);
21615        Object.getOwnPropertyNames(obj).forEach(function(name2) {
21616          var prop = obj[name2];
21617          if (typeof prop == "object" && !Object.isFrozen(prop)) {
21618            deepFreeze(prop);
21619          }
21620        });
21621        return obj;
21622      }
21623      var deepFreezeEs6 = deepFreeze;
21624      var _default = deepFreeze;
21625      deepFreezeEs6.default = _default;
21626      var Response = class {
21627        constructor(mode) {
21628          if (mode.data === void 0)
21629            mode.data = {};
21630          this.data = mode.data;
21631          this.isMatchIgnored = false;
21632        }
21633        ignoreMatch() {
21634          this.isMatchIgnored = true;
21635        }
21636      };
21637      function escapeHTML(value2) {
21638        return value2.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#x27;");
21639      }
21640      function inherit(original, ...objects) {
21641        const result = /* @__PURE__ */ Object.create(null);
21642        for (const key in original) {
21643          result[key] = original[key];
21644        }
21645        objects.forEach(function(obj) {
21646          for (const key in obj) {
21647            result[key] = obj[key];
21648          }
21649        });
21650        return result;
21651      }
21652      var SPAN_CLOSE = "</span>";
21653      var emitsWrappingTags = (node) => {
21654        return !!node.kind;
21655      };
21656      var HTMLRenderer = class {
21657        constructor(parseTree, options) {
21658          this.buffer = "";
21659          this.classPrefix = options.classPrefix;
21660          parseTree.walk(this);
21661        }
21662        addText(text) {
21663          this.buffer += escapeHTML(text);
21664        }
21665        openNode(node) {
21666          if (!emitsWrappingTags(node))
21667            return;
21668          let className = node.kind;
21669          if (!node.sublanguage) {
21670            className = `${this.classPrefix}${className}`;
21671          }
21672          this.span(className);
21673        }
21674        closeNode(node) {
21675          if (!emitsWrappingTags(node))
21676            return;
21677          this.buffer += SPAN_CLOSE;
21678        }
21679        value() {
21680          return this.buffer;
21681        }
21682        span(className) {
21683          this.buffer += `<span class="${className}">`;
21684        }
21685      };
21686      var TokenTree = class {
21687        constructor() {
21688          this.rootNode = { children: [] };
21689          this.stack = [this.rootNode];
21690        }
21691        get top() {
21692          return this.stack[this.stack.length - 1];
21693        }
21694        get root() {
21695          return this.rootNode;
21696        }
21697        add(node) {
21698          this.top.children.push(node);
21699        }
21700        openNode(kind) {
21701          const node = { kind, children: [] };
21702          this.add(node);
21703          this.stack.push(node);
21704        }
21705        closeNode() {
21706          if (this.stack.length > 1) {
21707            return this.stack.pop();
21708          }
21709          return void 0;
21710        }
21711        closeAllNodes() {
21712          while (this.closeNode())
21713            ;
21714        }
21715        toJSON() {
21716          return JSON.stringify(this.rootNode, null, 4);
21717        }
21718        walk(builder) {
21719          return this.constructor._walk(builder, this.rootNode);
21720        }
21721        static _walk(builder, node) {
21722          if (typeof node === "string") {
21723            builder.addText(node);
21724          } else if (node.children) {
21725            builder.openNode(node);
21726            node.children.forEach((child) => this._walk(builder, child));
21727            builder.closeNode(node);
21728          }
21729          return builder;
21730        }
21731        static _collapse(node) {
21732          if (typeof node === "string")
21733            return;
21734          if (!node.children)
21735            return;
21736          if (node.children.every((el) => typeof el === "string")) {
21737            node.children = [node.children.join("")];
21738          } else {
21739            node.children.forEach((child) => {
21740              TokenTree._collapse(child);
21741            });
21742          }
21743        }
21744      };
21745      var TokenTreeEmitter = class extends TokenTree {
21746        constructor(options) {
21747          super();
21748          this.options = options;
21749        }
21750        addKeyword(text, kind) {
21751          if (text === "") {
21752            return;
21753          }
21754          this.openNode(kind);
21755          this.addText(text);
21756          this.closeNode();
21757        }
21758        addText(text) {
21759          if (text === "") {
21760            return;
21761          }
21762          this.add(text);
21763        }
21764        addSublanguage(emitter, name2) {
21765          const node = emitter.root;
21766          node.kind = name2;
21767          node.sublanguage = true;
21768          this.add(node);
21769        }
21770        toHTML() {
21771          const renderer = new HTMLRenderer(this, this.options);
21772          return renderer.value();
21773        }
21774        finalize() {
21775          return true;
21776        }
21777      };
21778      function escape2(value2) {
21779        return new RegExp(value2.replace(/[-/\\^$*+?.()|[\]{}]/g, "\\$&"), "m");
21780      }
21781      function source(re2) {
21782        if (!re2)
21783          return null;
21784        if (typeof re2 === "string")
21785          return re2;
21786        return re2.source;
21787      }
21788      function concat(...args) {
21789        const joined = args.map((x) => source(x)).join("");
21790        return joined;
21791      }
21792      function either(...args) {
21793        const joined = "(" + args.map((x) => source(x)).join("|") + ")";
21794        return joined;
21795      }
21796      function countMatchGroups(re2) {
21797        return new RegExp(re2.toString() + "|").exec("").length - 1;
21798      }
21799      function startsWith(re2, lexeme) {
21800        const match = re2 && re2.exec(lexeme);
21801        return match && match.index === 0;
21802      }
21803      var BACKREF_RE = /\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;
21804      function join(regexps, separator = "|") {
21805        let numCaptures = 0;
21806        return regexps.map((regex) => {
21807          numCaptures += 1;
21808          const offset = numCaptures;
21809          let re2 = source(regex);
21810          let out = "";
21811          while (re2.length > 0) {
21812            const match = BACKREF_RE.exec(re2);
21813            if (!match) {
21814              out += re2;
21815              break;
21816            }
21817            out += re2.substring(0, match.index);
21818            re2 = re2.substring(match.index + match[0].length);
21819            if (match[0][0] === "\\" && match[1]) {
21820              out += "\\" + String(Number(match[1]) + offset);
21821            } else {
21822              out += match[0];
21823              if (match[0] === "(") {
21824                numCaptures++;
21825              }
21826            }
21827          }
21828          return out;
21829        }).map((re2) => `(${re2})`).join(separator);
21830      }
21831      var MATCH_NOTHING_RE = /\b\B/;
21832      var IDENT_RE = "[a-zA-Z]\\w*";
21833      var UNDERSCORE_IDENT_RE = "[a-zA-Z_]\\w*";
21834      var NUMBER_RE = "\\b\\d+(\\.\\d+)?";
21835      var C_NUMBER_RE = "(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";
21836      var BINARY_NUMBER_RE = "\\b(0b[01]+)";
21837      var RE_STARTERS_RE = "!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";
21838      var SHEBANG = (opts = {}) => {
21839        const beginShebang = /^#![ ]*\//;
21840        if (opts.binary) {
21841          opts.begin = concat(
21842            beginShebang,
21843            /.*\b/,
21844            opts.binary,
21845            /\b.*/
21846          );
21847        }
21848        return inherit({
21849          className: "meta",
21850          begin: beginShebang,
21851          end: /$/,
21852          relevance: 0,
21853          "on:begin": (m, resp) => {
21854            if (m.index !== 0)
21855              resp.ignoreMatch();
21856          }
21857        }, opts);
21858      };
21859      var BACKSLASH_ESCAPE = {
21860        begin: "\\\\[\\s\\S]",
21861        relevance: 0
21862      };
21863      var APOS_STRING_MODE = {
21864        className: "string",
21865        begin: "'",
21866        end: "'",
21867        illegal: "\\n",
21868        contains: [BACKSLASH_ESCAPE]
21869      };
21870      var QUOTE_STRING_MODE = {
21871        className: "string",
21872        begin: '"',
21873        end: '"',
21874        illegal: "\\n",
21875        contains: [BACKSLASH_ESCAPE]
21876      };
21877      var PHRASAL_WORDS_MODE = {
21878        begin: /\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
21879      };
21880      var COMMENT = function(begin, end, modeOptions = {}) {
21881        const mode = inherit(
21882          {
21883            className: "comment",
21884            begin,
21885            end,
21886            contains: []
21887          },
21888          modeOptions
21889        );
21890        mode.contains.push(PHRASAL_WORDS_MODE);
21891        mode.contains.push({
21892          className: "doctag",
21893          begin: "(?:TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):",
21894          relevance: 0
21895        });
21896        return mode;
21897      };
21898      var C_LINE_COMMENT_MODE = COMMENT("//", "$");
21899      var C_BLOCK_COMMENT_MODE = COMMENT("/\\*", "\\*/");
21900      var HASH_COMMENT_MODE = COMMENT("#", "$");
21901      var NUMBER_MODE = {
21902        className: "number",
21903        begin: NUMBER_RE,
21904        relevance: 0
21905      };
21906      var C_NUMBER_MODE = {
21907        className: "number",
21908        begin: C_NUMBER_RE,
21909        relevance: 0
21910      };
21911      var BINARY_NUMBER_MODE = {
21912        className: "number",
21913        begin: BINARY_NUMBER_RE,
21914        relevance: 0
21915      };
21916      var CSS_NUMBER_MODE = {
21917        className: "number",
21918        begin: NUMBER_RE + "(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",
21919        relevance: 0
21920      };
21921      var REGEXP_MODE = {
21922        begin: /(?=\/[^/\n]*\/)/,
21923        contains: [{
21924          className: "regexp",
21925          begin: /\//,
21926          end: /\/[gimuy]*/,
21927          illegal: /\n/,
21928          contains: [
21929            BACKSLASH_ESCAPE,
21930            {
21931              begin: /\[/,
21932              end: /\]/,
21933              relevance: 0,
21934              contains: [BACKSLASH_ESCAPE]
21935            }
21936          ]
21937        }]
21938      };
21939      var TITLE_MODE = {
21940        className: "title",
21941        begin: IDENT_RE,
21942        relevance: 0
21943      };
21944      var UNDERSCORE_TITLE_MODE = {
21945        className: "title",
21946        begin: UNDERSCORE_IDENT_RE,
21947        relevance: 0
21948      };
21949      var METHOD_GUARD = {
21950        begin: "\\.\\s*" + UNDERSCORE_IDENT_RE,
21951        relevance: 0
21952      };
21953      var END_SAME_AS_BEGIN = function(mode) {
21954        return Object.assign(
21955          mode,
21956          {
21957            "on:begin": (m, resp) => {
21958              resp.data._beginMatch = m[1];
21959            },
21960            "on:end": (m, resp) => {
21961              if (resp.data._beginMatch !== m[1])
21962                resp.ignoreMatch();
21963            }
21964          }
21965        );
21966      };
21967      var MODES = /* @__PURE__ */ Object.freeze({
21968        __proto__: null,
21969        MATCH_NOTHING_RE,
21970        IDENT_RE,
21971        UNDERSCORE_IDENT_RE,
21972        NUMBER_RE,
21973        C_NUMBER_RE,
21974        BINARY_NUMBER_RE,
21975        RE_STARTERS_RE,
21976        SHEBANG,
21977        BACKSLASH_ESCAPE,
21978        APOS_STRING_MODE,
21979        QUOTE_STRING_MODE,
21980        PHRASAL_WORDS_MODE,
21981        COMMENT,
21982        C_LINE_COMMENT_MODE,
21983        C_BLOCK_COMMENT_MODE,
21984        HASH_COMMENT_MODE,
21985        NUMBER_MODE,
21986        C_NUMBER_MODE,
21987        BINARY_NUMBER_MODE,
21988        CSS_NUMBER_MODE,
21989        REGEXP_MODE,
21990        TITLE_MODE,
21991        UNDERSCORE_TITLE_MODE,
21992        METHOD_GUARD,
21993        END_SAME_AS_BEGIN
21994      });
21995      function skipIfhasPrecedingDot(match, response) {
21996        const before = match.input[match.index - 1];
21997        if (before === ".") {
21998          response.ignoreMatch();
21999        }
22000      }
22001      function beginKeywords(mode, parent) {
22002        if (!parent)
22003          return;
22004        if (!mode.beginKeywords)
22005          return;
22006        mode.begin = "\\b(" + mode.beginKeywords.split(" ").join("|") + ")(?!\\.)(?=\\b|\\s)";
22007        mode.__beforeBegin = skipIfhasPrecedingDot;
22008        mode.keywords = mode.keywords || mode.beginKeywords;
22009        delete mode.beginKeywords;
22010        if (mode.relevance === void 0)
22011          mode.relevance = 0;
22012      }
22013      function compileIllegal(mode, _parent) {
22014        if (!Array.isArray(mode.illegal))
22015          return;
22016        mode.illegal = either(...mode.illegal);
22017      }
22018      function compileMatch(mode, _parent) {
22019        if (!mode.match)
22020          return;
22021        if (mode.begin || mode.end)
22022          throw new Error("begin & end are not supported with match");
22023        mode.begin = mode.match;
22024        delete mode.match;
22025      }
22026      function compileRelevance(mode, _parent) {
22027        if (mode.relevance === void 0)
22028          mode.relevance = 1;
22029      }
22030      var COMMON_KEYWORDS = [
22031        "of",
22032        "and",
22033        "for",
22034        "in",
22035        "not",
22036        "or",
22037        "if",
22038        "then",
22039        "parent",
22040        "list",
22041        "value"
22042      ];
22043      var DEFAULT_KEYWORD_CLASSNAME = "keyword";
22044      function compileKeywords(rawKeywords, caseInsensitive, className = DEFAULT_KEYWORD_CLASSNAME) {
22045        const compiledKeywords = {};
22046        if (typeof rawKeywords === "string") {
22047          compileList(className, rawKeywords.split(" "));
22048        } else if (Array.isArray(rawKeywords)) {
22049          compileList(className, rawKeywords);
22050        } else {
22051          Object.keys(rawKeywords).forEach(function(className2) {
22052            Object.assign(
22053              compiledKeywords,
22054              compileKeywords(rawKeywords[className2], caseInsensitive, className2)
22055            );
22056          });
22057        }
22058        return compiledKeywords;
22059        function compileList(className2, keywordList) {
22060          if (caseInsensitive) {
22061            keywordList = keywordList.map((x) => x.toLowerCase());
22062          }
22063          keywordList.forEach(function(keyword) {
22064            const pair = keyword.split("|");
22065            compiledKeywords[pair[0]] = [className2, scoreForKeyword(pair[0], pair[1])];
22066          });
22067        }
22068      }
22069      function scoreForKeyword(keyword, providedScore) {
22070        if (providedScore) {
22071          return Number(providedScore);
22072        }
22073        return commonKeyword(keyword) ? 0 : 1;
22074      }
22075      function commonKeyword(keyword) {
22076        return COMMON_KEYWORDS.includes(keyword.toLowerCase());
22077      }
22078      function compileLanguage(language, { plugins }) {
22079        function langRe(value2, global2) {
22080          return new RegExp(
22081            source(value2),
22082            "m" + (language.case_insensitive ? "i" : "") + (global2 ? "g" : "")
22083          );
22084        }
22085        class MultiRegex {
22086          constructor() {
22087            this.matchIndexes = {};
22088            this.regexes = [];
22089            this.matchAt = 1;
22090            this.position = 0;
22091          }
22092          addRule(re2, opts) {
22093            opts.position = this.position++;
22094            this.matchIndexes[this.matchAt] = opts;
22095            this.regexes.push([opts, re2]);
22096            this.matchAt += countMatchGroups(re2) + 1;
22097          }
22098          compile() {
22099            if (this.regexes.length === 0) {
22100              this.exec = () => null;
22101            }
22102            const terminators = this.regexes.map((el) => el[1]);
22103            this.matcherRe = langRe(join(terminators), true);
22104            this.lastIndex = 0;
22105          }
22106          exec(s) {
22107            this.matcherRe.lastIndex = this.lastIndex;
22108            const match = this.matcherRe.exec(s);
22109            if (!match) {
22110              return null;
22111            }
22112            const i2 = match.findIndex((el, i3) => i3 > 0 && el !== void 0);
22113            const matchData = this.matchIndexes[i2];
22114            match.splice(0, i2);
22115            return Object.assign(match, matchData);
22116          }
22117        }
22118        class ResumableMultiRegex {
22119          constructor() {
22120            this.rules = [];
22121            this.multiRegexes = [];
22122            this.count = 0;
22123            this.lastIndex = 0;
22124            this.regexIndex = 0;
22125          }
22126          getMatcher(index) {
22127            if (this.multiRegexes[index])
22128              return this.multiRegexes[index];
22129            const matcher = new MultiRegex();
22130            this.rules.slice(index).forEach(([re2, opts]) => matcher.addRule(re2, opts));
22131            matcher.compile();
22132            this.multiRegexes[index] = matcher;
22133            return matcher;
22134          }
22135          resumingScanAtSamePosition() {
22136            return this.regexIndex !== 0;
22137          }
22138          considerAll() {
22139            this.regexIndex = 0;
22140          }
22141          addRule(re2, opts) {
22142            this.rules.push([re2, opts]);
22143            if (opts.type === "begin")
22144              this.count++;
22145          }
22146          exec(s) {
22147            const m = this.getMatcher(this.regexIndex);
22148            m.lastIndex = this.lastIndex;
22149            let result = m.exec(s);
22150            if (this.resumingScanAtSamePosition()) {
22151              if (result && result.index === this.lastIndex)
22152                ;
22153              else {
22154                const m2 = this.getMatcher(0);
22155                m2.lastIndex = this.lastIndex + 1;
22156                result = m2.exec(s);
22157              }
22158            }
22159            if (result) {
22160              this.regexIndex += result.position + 1;
22161              if (this.regexIndex === this.count) {
22162                this.considerAll();
22163              }
22164            }
22165            return result;
22166          }
22167        }
22168        function buildModeRegex(mode) {
22169          const mm = new ResumableMultiRegex();
22170          mode.contains.forEach((term) => mm.addRule(term.begin, { rule: term, type: "begin" }));
22171          if (mode.terminatorEnd) {
22172            mm.addRule(mode.terminatorEnd, { type: "end" });
22173          }
22174          if (mode.illegal) {
22175            mm.addRule(mode.illegal, { type: "illegal" });
22176          }
22177          return mm;
22178        }
22179        function compileMode(mode, parent) {
22180          const cmode = mode;
22181          if (mode.isCompiled)
22182            return cmode;
22183          [
22184            compileMatch
22185          ].forEach((ext) => ext(mode, parent));
22186          language.compilerExtensions.forEach((ext) => ext(mode, parent));
22187          mode.__beforeBegin = null;
22188          [
22189            beginKeywords,
22190            compileIllegal,
22191            compileRelevance
22192          ].forEach((ext) => ext(mode, parent));
22193          mode.isCompiled = true;
22194          let keywordPattern = null;
22195          if (typeof mode.keywords === "object") {
22196            keywordPattern = mode.keywords.$pattern;
22197            delete mode.keywords.$pattern;
22198          }
22199          if (mode.keywords) {
22200            mode.keywords = compileKeywords(mode.keywords, language.case_insensitive);
22201          }
22202          if (mode.lexemes && keywordPattern) {
22203            throw new Error("ERR: Prefer `keywords.$pattern` to `mode.lexemes`, BOTH are not allowed. (see mode reference) ");
22204          }
22205          keywordPattern = keywordPattern || mode.lexemes || /\w+/;
22206          cmode.keywordPatternRe = langRe(keywordPattern, true);
22207          if (parent) {
22208            if (!mode.begin)
22209              mode.begin = /\B|\b/;
22210            cmode.beginRe = langRe(mode.begin);
22211            if (mode.endSameAsBegin)
22212              mode.end = mode.begin;
22213            if (!mode.end && !mode.endsWithParent)
22214              mode.end = /\B|\b/;
22215            if (mode.end)
22216              cmode.endRe = langRe(mode.end);
22217            cmode.terminatorEnd = source(mode.end) || "";
22218            if (mode.endsWithParent && parent.terminatorEnd) {
22219              cmode.terminatorEnd += (mode.end ? "|" : "") + parent.terminatorEnd;
22220            }
22221          }
22222          if (mode.illegal)
22223            cmode.illegalRe = langRe(mode.illegal);
22224          if (!mode.contains)
22225            mode.contains = [];
22226          mode.contains = [].concat(...mode.contains.map(function(c) {
22227            return expandOrCloneMode(c === "self" ? mode : c);
22228          }));
22229          mode.contains.forEach(function(c) {
22230            compileMode(c, cmode);
22231          });
22232          if (mode.starts) {
22233            compileMode(mode.starts, parent);
22234          }
22235          cmode.matcher = buildModeRegex(cmode);
22236          return cmode;
22237        }
22238        if (!language.compilerExtensions)
22239          language.compilerExtensions = [];
22240        if (language.contains && language.contains.includes("self")) {
22241          throw new Error("ERR: contains `self` is not supported at the top-level of a language.  See documentation.");
22242        }
22243        language.classNameAliases = inherit(language.classNameAliases || {});
22244        return compileMode(language);
22245      }
22246      function dependencyOnParent(mode) {
22247        if (!mode)
22248          return false;
22249        return mode.endsWithParent || dependencyOnParent(mode.starts);
22250      }
22251      function expandOrCloneMode(mode) {
22252        if (mode.variants && !mode.cachedVariants) {
22253          mode.cachedVariants = mode.variants.map(function(variant) {
22254            return inherit(mode, { variants: null }, variant);
22255          });
22256        }
22257        if (mode.cachedVariants) {
22258          return mode.cachedVariants;
22259        }
22260        if (dependencyOnParent(mode)) {
22261          return inherit(mode, { starts: mode.starts ? inherit(mode.starts) : null });
22262        }
22263        if (Object.isFrozen(mode)) {
22264          return inherit(mode);
22265        }
22266        return mode;
22267      }
22268      var version = "10.7.3";
22269      function hasValueOrEmptyAttribute(value2) {
22270        return Boolean(value2 || value2 === "");
22271      }
22272      function BuildVuePlugin(hljs2) {
22273        const Component = {
22274          props: ["language", "code", "autodetect"],
22275          data: function() {
22276            return {
22277              detectedLanguage: "",
22278              unknownLanguage: false
22279            };
22280          },
22281          computed: {
22282            className() {
22283              if (this.unknownLanguage)
22284                return "";
22285              return "hljs " + this.detectedLanguage;
22286            },
22287            highlighted() {
22288              if (!this.autoDetect && !hljs2.getLanguage(this.language)) {
22289                console.warn(`The language "${this.language}" you specified could not be found.`);
22290                this.unknownLanguage = true;
22291                return escapeHTML(this.code);
22292              }
22293              let result = {};
22294              if (this.autoDetect) {
22295                result = hljs2.highlightAuto(this.code);
22296                this.detectedLanguage = result.language;
22297              } else {
22298                result = hljs2.highlight(this.language, this.code, this.ignoreIllegals);
22299                this.detectedLanguage = this.language;
22300              }
22301              return result.value;
22302            },
22303            autoDetect() {
22304              return !this.language || hasValueOrEmptyAttribute(this.autodetect);
22305            },
22306            ignoreIllegals() {
22307              return true;
22308            }
22309          },
22310          render(createElement) {
22311            return createElement("pre", {}, [
22312              createElement("code", {
22313                class: this.className,
22314                domProps: { innerHTML: this.highlighted }
22315              })
22316            ]);
22317          }
22318        };
22319        const VuePlugin = {
22320          install(Vue) {
22321            Vue.component("highlightjs", Component);
22322          }
22323        };
22324        return { Component, VuePlugin };
22325      }
22326      var mergeHTMLPlugin = {
22327        "after:highlightElement": ({ el, result, text }) => {
22328          const originalStream = nodeStream(el);
22329          if (!originalStream.length)
22330            return;
22331          const resultNode = document.createElement("div");
22332          resultNode.innerHTML = result.value;
22333          result.value = mergeStreams(originalStream, nodeStream(resultNode), text);
22334        }
22335      };
22336      function tag(node) {
22337        return node.nodeName.toLowerCase();
22338      }
22339      function nodeStream(node) {
22340        const result = [];
22341        (function _nodeStream(node2, offset) {
22342          for (let child = node2.firstChild; child; child = child.nextSibling) {
22343            if (child.nodeType === 3) {
22344              offset += child.nodeValue.length;
22345            } else if (child.nodeType === 1) {
22346              result.push({
22347                event: "start",
22348                offset,
22349                node: child
22350              });
22351              offset = _nodeStream(child, offset);
22352              if (!tag(child).match(/br|hr|img|input/)) {
22353                result.push({
22354                  event: "stop",
22355                  offset,
22356                  node: child
22357                });
22358              }
22359            }
22360          }
22361          return offset;
22362        })(node, 0);
22363        return result;
22364      }
22365      function mergeStreams(original, highlighted, value2) {
22366        let processed = 0;
22367        let result = "";
22368        const nodeStack = [];
22369        function selectStream() {
22370          if (!original.length || !highlighted.length) {
22371            return original.length ? original : highlighted;
22372          }
22373          if (original[0].offset !== highlighted[0].offset) {
22374            return original[0].offset < highlighted[0].offset ? original : highlighted;
22375          }
22376          return highlighted[0].event === "start" ? original : highlighted;
22377        }
22378        function open(node) {
22379          function attributeString(attr) {
22380            return " " + attr.nodeName + '="' + escapeHTML(attr.value) + '"';
22381          }
22382          result += "<" + tag(node) + [].map.call(node.attributes, attributeString).join("") + ">";
22383        }
22384        function close(node) {
22385          result += "</" + tag(node) + ">";
22386        }
22387        function render(event) {
22388          (event.event === "start" ? open : close)(event.node);
22389        }
22390        while (original.length || highlighted.length) {
22391          let stream = selectStream();
22392          result += escapeHTML(value2.substring(processed, stream[0].offset));
22393          processed = stream[0].offset;
22394          if (stream === original) {
22395            nodeStack.reverse().forEach(close);
22396            do {
22397              render(stream.splice(0, 1)[0]);
22398              stream = selectStream();
22399            } while (stream === original && stream.length && stream[0].offset === processed);
22400            nodeStack.reverse().forEach(open);
22401          } else {
22402            if (stream[0].event === "start") {
22403              nodeStack.push(stream[0].node);
22404            } else {
22405              nodeStack.pop();
22406            }
22407            render(stream.splice(0, 1)[0]);
22408          }
22409        }
22410        return result + escapeHTML(value2.substr(processed));
22411      }
22412      var seenDeprecations = {};
22413      var error = (message) => {
22414        console.error(message);
22415      };
22416      var warn = (message, ...args) => {
22417        console.log(`WARN: ${message}`, ...args);
22418      };
22419      var deprecated = (version2, message) => {
22420        if (seenDeprecations[`${version2}/${message}`])
22421          return;
22422        console.log(`Deprecated as of ${version2}. ${message}`);
22423        seenDeprecations[`${version2}/${message}`] = true;
22424      };
22425      var escape$1 = escapeHTML;
22426      var inherit$1 = inherit;
22427      var NO_MATCH = Symbol("nomatch");
22428      var HLJS = function(hljs2) {
22429        const languages = /* @__PURE__ */ Object.create(null);
22430        const aliases = /* @__PURE__ */ Object.create(null);
22431        const plugins = [];
22432        let SAFE_MODE = true;
22433        const fixMarkupRe = /(^(<[^>]+>|\t|)+|\n)/gm;
22434        const LANGUAGE_NOT_FOUND = "Could not find the language '{}', did you forget to load/include a language module?";
22435        const PLAINTEXT_LANGUAGE = { disableAutodetect: true, name: "Plain text", contains: [] };
22436        let options = {
22437          noHighlightRe: /^(no-?highlight)$/i,
22438          languageDetectRe: /\blang(?:uage)?-([\w-]+)\b/i,
22439          classPrefix: "hljs-",
22440          tabReplace: null,
22441          useBR: false,
22442          languages: null,
22443          __emitter: TokenTreeEmitter
22444        };
22445        function shouldNotHighlight(languageName) {
22446          return options.noHighlightRe.test(languageName);
22447        }
22448        function blockLanguage(block) {
22449          let classes = block.className + " ";
22450          classes += block.parentNode ? block.parentNode.className : "";
22451          const match = options.languageDetectRe.exec(classes);
22452          if (match) {
22453            const language = getLanguage(match[1]);
22454            if (!language) {
22455              warn(LANGUAGE_NOT_FOUND.replace("{}", match[1]));
22456              warn("Falling back to no-highlight mode for this block.", block);
22457            }
22458            return language ? match[1] : "no-highlight";
22459          }
22460          return classes.split(/\s+/).find((_class) => shouldNotHighlight(_class) || getLanguage(_class));
22461        }
22462        function highlight2(codeOrlanguageName, optionsOrCode, ignoreIllegals, continuation) {
22463          let code = "";
22464          let languageName = "";
22465          if (typeof optionsOrCode === "object") {
22466            code = codeOrlanguageName;
22467            ignoreIllegals = optionsOrCode.ignoreIllegals;
22468            languageName = optionsOrCode.language;
22469            continuation = void 0;
22470          } else {
22471            deprecated("10.7.0", "highlight(lang, code, ...args) has been deprecated.");
22472            deprecated("10.7.0", "Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277");
22473            languageName = codeOrlanguageName;
22474            code = optionsOrCode;
22475          }
22476          const context = {
22477            code,
22478            language: languageName
22479          };
22480          fire("before:highlight", context);
22481          const result = context.result ? context.result : _highlight(context.language, context.code, ignoreIllegals, continuation);
22482          result.code = context.code;
22483          fire("after:highlight", result);
22484          return result;
22485        }
22486        function _highlight(languageName, codeToHighlight, ignoreIllegals, continuation) {
22487          function keywordData(mode, match) {
22488            const matchText = language.case_insensitive ? match[0].toLowerCase() : match[0];
22489            return Object.prototype.hasOwnProperty.call(mode.keywords, matchText) && mode.keywords[matchText];
22490          }
22491          function processKeywords() {
22492            if (!top.keywords) {
22493              emitter.addText(modeBuffer);
22494              return;
22495            }
22496            let lastIndex = 0;
22497            top.keywordPatternRe.lastIndex = 0;
22498            let match = top.keywordPatternRe.exec(modeBuffer);
22499            let buf = "";
22500            while (match) {
22501              buf += modeBuffer.substring(lastIndex, match.index);
22502              const data = keywordData(top, match);
22503              if (data) {
22504                const [kind, keywordRelevance] = data;
22505                emitter.addText(buf);
22506                buf = "";
22507                relevance += keywordRelevance;
22508                if (kind.startsWith("_")) {
22509                  buf += match[0];
22510                } else {
22511                  const cssClass = language.classNameAliases[kind] || kind;
22512                  emitter.addKeyword(match[0], cssClass);
22513                }
22514              } else {
22515                buf += match[0];
22516              }
22517              lastIndex = top.keywordPatternRe.lastIndex;
22518              match = top.keywordPatternRe.exec(modeBuffer);
22519            }
22520            buf += modeBuffer.substr(lastIndex);
22521            emitter.addText(buf);
22522          }
22523          function processSubLanguage() {
22524            if (modeBuffer === "")
22525              return;
22526            let result2 = null;
22527            if (typeof top.subLanguage === "string") {
22528              if (!languages[top.subLanguage]) {
22529                emitter.addText(modeBuffer);
22530                return;
22531              }
22532              result2 = _highlight(top.subLanguage, modeBuffer, true, continuations[top.subLanguage]);
22533              continuations[top.subLanguage] = result2.top;
22534            } else {
22535              result2 = highlightAuto(modeBuffer, top.subLanguage.length ? top.subLanguage : null);
22536            }
22537            if (top.relevance > 0) {
22538              relevance += result2.relevance;
22539            }
22540            emitter.addSublanguage(result2.emitter, result2.language);
22541          }
22542          function processBuffer() {
22543            if (top.subLanguage != null) {
22544              processSubLanguage();
22545            } else {
22546              processKeywords();
22547            }
22548            modeBuffer = "";
22549          }
22550          function startNewMode(mode) {
22551            if (mode.className) {
22552              emitter.openNode(language.classNameAliases[mode.className] || mode.className);
22553            }
22554            top = Object.create(mode, { parent: { value: top } });
22555            return top;
22556          }
22557          function endOfMode(mode, match, matchPlusRemainder) {
22558            let matched = startsWith(mode.endRe, matchPlusRemainder);
22559            if (matched) {
22560              if (mode["on:end"]) {
22561                const resp = new Response(mode);
22562                mode["on:end"](match, resp);
22563                if (resp.isMatchIgnored)
22564                  matched = false;
22565              }
22566              if (matched) {
22567                while (mode.endsParent && mode.parent) {
22568                  mode = mode.parent;
22569                }
22570                return mode;
22571              }
22572            }
22573            if (mode.endsWithParent) {
22574              return endOfMode(mode.parent, match, matchPlusRemainder);
22575            }
22576          }
22577          function doIgnore(lexeme) {
22578            if (top.matcher.regexIndex === 0) {
22579              modeBuffer += lexeme[0];
22580              return 1;
22581            } else {
22582              resumeScanAtSamePosition = true;
22583              return 0;
22584            }
22585          }
22586          function doBeginMatch(match) {
22587            const lexeme = match[0];
22588            const newMode = match.rule;
22589            const resp = new Response(newMode);
22590            const beforeCallbacks = [newMode.__beforeBegin, newMode["on:begin"]];
22591            for (const cb of beforeCallbacks) {
22592              if (!cb)
22593                continue;
22594              cb(match, resp);
22595              if (resp.isMatchIgnored)
22596                return doIgnore(lexeme);
22597            }
22598            if (newMode && newMode.endSameAsBegin) {
22599              newMode.endRe = escape2(lexeme);
22600            }
22601            if (newMode.skip) {
22602              modeBuffer += lexeme;
22603            } else {
22604              if (newMode.excludeBegin) {
22605                modeBuffer += lexeme;
22606              }
22607              processBuffer();
22608              if (!newMode.returnBegin && !newMode.excludeBegin) {
22609                modeBuffer = lexeme;
22610              }
22611            }
22612            startNewMode(newMode);
22613            return newMode.returnBegin ? 0 : lexeme.length;
22614          }
22615          function doEndMatch(match) {
22616            const lexeme = match[0];
22617            const matchPlusRemainder = codeToHighlight.substr(match.index);
22618            const endMode = endOfMode(top, match, matchPlusRemainder);
22619            if (!endMode) {
22620              return NO_MATCH;
22621            }
22622            const origin = top;
22623            if (origin.skip) {
22624              modeBuffer += lexeme;
22625            } else {
22626              if (!(origin.returnEnd || origin.excludeEnd)) {
22627                modeBuffer += lexeme;
22628              }
22629              processBuffer();
22630              if (origin.excludeEnd) {
22631                modeBuffer = lexeme;
22632              }
22633            }
22634            do {
22635              if (top.className) {
22636                emitter.closeNode();
22637              }
22638              if (!top.skip && !top.subLanguage) {
22639                relevance += top.relevance;
22640              }
22641              top = top.parent;
22642            } while (top !== endMode.parent);
22643            if (endMode.starts) {
22644              if (endMode.endSameAsBegin) {
22645                endMode.starts.endRe = endMode.endRe;
22646              }
22647              startNewMode(endMode.starts);
22648            }
22649            return origin.returnEnd ? 0 : lexeme.length;
22650          }
22651          function processContinuations() {
22652            const list = [];
22653            for (let current = top; current !== language; current = current.parent) {
22654              if (current.className) {
22655                list.unshift(current.className);
22656              }
22657            }
22658            list.forEach((item) => emitter.openNode(item));
22659          }
22660          let lastMatch = {};
22661          function processLexeme(textBeforeMatch, match) {
22662            const lexeme = match && match[0];
22663            modeBuffer += textBeforeMatch;
22664            if (lexeme == null) {
22665              processBuffer();
22666              return 0;
22667            }
22668            if (lastMatch.type === "begin" && match.type === "end" && lastMatch.index === match.index && lexeme === "") {
22669              modeBuffer += codeToHighlight.slice(match.index, match.index + 1);
22670              if (!SAFE_MODE) {
22671                const err = new Error("0 width match regex");
22672                err.languageName = languageName;
22673                err.badRule = lastMatch.rule;
22674                throw err;
22675              }
22676              return 1;
22677            }
22678            lastMatch = match;
22679            if (match.type === "begin") {
22680              return doBeginMatch(match);
22681            } else if (match.type === "illegal" && !ignoreIllegals) {
22682              const err = new Error('Illegal lexeme "' + lexeme + '" for mode "' + (top.className || "<unnamed>") + '"');
22683              err.mode = top;
22684              throw err;
22685            } else if (match.type === "end") {
22686              const processed = doEndMatch(match);
22687              if (processed !== NO_MATCH) {
22688                return processed;
22689              }
22690            }
22691            if (match.type === "illegal" && lexeme === "") {
22692              return 1;
22693            }
22694            if (iterations > 1e5 && iterations > match.index * 3) {
22695              const err = new Error("potential infinite loop, way more iterations than matches");
22696              throw err;
22697            }
22698            modeBuffer += lexeme;
22699            return lexeme.length;
22700          }
22701          const language = getLanguage(languageName);
22702          if (!language) {
22703            error(LANGUAGE_NOT_FOUND.replace("{}", languageName));
22704            throw new Error('Unknown language: "' + languageName + '"');
22705          }
22706          const md = compileLanguage(language, { plugins });
22707          let result = "";
22708          let top = continuation || md;
22709          const continuations = {};
22710          const emitter = new options.__emitter(options);
22711          processContinuations();
22712          let modeBuffer = "";
22713          let relevance = 0;
22714          let index = 0;
22715          let iterations = 0;
22716          let resumeScanAtSamePosition = false;
22717          try {
22718            top.matcher.considerAll();
22719            for (; ; ) {
22720              iterations++;
22721              if (resumeScanAtSamePosition) {
22722                resumeScanAtSamePosition = false;
22723              } else {
22724                top.matcher.considerAll();
22725              }
22726              top.matcher.lastIndex = index;
22727              const match = top.matcher.exec(codeToHighlight);
22728              if (!match)
22729                break;
22730              const beforeMatch = codeToHighlight.substring(index, match.index);
22731              const processedCount = processLexeme(beforeMatch, match);
22732              index = match.index + processedCount;
22733            }
22734            processLexeme(codeToHighlight.substr(index));
22735            emitter.closeAllNodes();
22736            emitter.finalize();
22737            result = emitter.toHTML();
22738            return {
22739              relevance: Math.floor(relevance),
22740              value: result,
22741              language: languageName,
22742              illegal: false,
22743              emitter,
22744              top
22745            };
22746          } catch (err) {
22747            if (err.message && err.message.includes("Illegal")) {
22748              return {
22749                illegal: true,
22750                illegalBy: {
22751                  msg: err.message,
22752                  context: codeToHighlight.slice(index - 100, index + 100),
22753                  mode: err.mode
22754                },
22755                sofar: result,
22756                relevance: 0,
22757                value: escape$1(codeToHighlight),
22758                emitter
22759              };
22760            } else if (SAFE_MODE) {
22761              return {
22762                illegal: false,
22763                relevance: 0,
22764                value: escape$1(codeToHighlight),
22765                emitter,
22766                language: languageName,
22767                top,
22768                errorRaised: err
22769              };
22770            } else {
22771              throw err;
22772            }
22773          }
22774        }
22775        function justTextHighlightResult(code) {
22776          const result = {
22777            relevance: 0,
22778            emitter: new options.__emitter(options),
22779            value: escape$1(code),
22780            illegal: false,
22781            top: PLAINTEXT_LANGUAGE
22782          };
22783          result.emitter.addText(code);
22784          return result;
22785        }
22786        function highlightAuto(code, languageSubset) {
22787          languageSubset = languageSubset || options.languages || Object.keys(languages);
22788          const plaintext = justTextHighlightResult(code);
22789          const results = languageSubset.filter(getLanguage).filter(autoDetection).map(
22790            (name2) => _highlight(name2, code, false)
22791          );
22792          results.unshift(plaintext);
22793          const sorted = results.sort((a, b) => {
22794            if (a.relevance !== b.relevance)
22795              return b.relevance - a.relevance;
22796            if (a.language && b.language) {
22797              if (getLanguage(a.language).supersetOf === b.language) {
22798                return 1;
22799              } else if (getLanguage(b.language).supersetOf === a.language) {
22800                return -1;
22801              }
22802            }
22803            return 0;
22804          });
22805          const [best, secondBest] = sorted;
22806          const result = best;
22807          result.second_best = secondBest;
22808          return result;
22809        }
22810        function fixMarkup(html) {
22811          if (!(options.tabReplace || options.useBR)) {
22812            return html;
22813          }
22814          return html.replace(fixMarkupRe, (match) => {
22815            if (match === "\n") {
22816              return options.useBR ? "<br>" : match;
22817            } else if (options.tabReplace) {
22818              return match.replace(/\t/g, options.tabReplace);
22819            }
22820            return match;
22821          });
22822        }
22823        function updateClassName(element, currentLang, resultLang) {
22824          const language = currentLang ? aliases[currentLang] : resultLang;
22825          element.classList.add("hljs");
22826          if (language)
22827            element.classList.add(language);
22828        }
22829        const brPlugin = {
22830          "before:highlightElement": ({ el }) => {
22831            if (options.useBR) {
22832              el.innerHTML = el.innerHTML.replace(/\n/g, "").replace(/<br[ /]*>/g, "\n");
22833            }
22834          },
22835          "after:highlightElement": ({ result }) => {
22836            if (options.useBR) {
22837              result.value = result.value.replace(/\n/g, "<br>");
22838            }
22839          }
22840        };
22841        const TAB_REPLACE_RE = /^(<[^>]+>|\t)+/gm;
22842        const tabReplacePlugin = {
22843          "after:highlightElement": ({ result }) => {
22844            if (options.tabReplace) {
22845              result.value = result.value.replace(
22846                TAB_REPLACE_RE,
22847                (m) => m.replace(/\t/g, options.tabReplace)
22848              );
22849            }
22850          }
22851        };
22852        function highlightElement(element) {
22853          let node = null;
22854          const language = blockLanguage(element);
22855          if (shouldNotHighlight(language))
22856            return;
22857          fire(
22858            "before:highlightElement",
22859            { el: element, language }
22860          );
22861          node = element;
22862          const text = node.textContent;
22863          const result = language ? highlight2(text, { language, ignoreIllegals: true }) : highlightAuto(text);
22864          fire("after:highlightElement", { el: element, result, text });
22865          element.innerHTML = result.value;
22866          updateClassName(element, language, result.language);
22867          element.result = {
22868            language: result.language,
22869            re: result.relevance,
22870            relavance: result.relevance
22871          };
22872          if (result.second_best) {
22873            element.second_best = {
22874              language: result.second_best.language,
22875              re: result.second_best.relevance,
22876              relavance: result.second_best.relevance
22877            };
22878          }
22879        }
22880        function configure(userOptions) {
22881          if (userOptions.useBR) {
22882            deprecated("10.3.0", "'useBR' will be removed entirely in v11.0");
22883            deprecated("10.3.0", "Please see https://github.com/highlightjs/highlight.js/issues/2559");
22884          }
22885          options = inherit$1(options, userOptions);
22886        }
22887        const initHighlighting = () => {
22888          if (initHighlighting.called)
22889            return;
22890          initHighlighting.called = true;
22891          deprecated("10.6.0", "initHighlighting() is deprecated.  Use highlightAll() instead.");
22892          const blocks = document.querySelectorAll("pre code");
22893          blocks.forEach(highlightElement);
22894        };
22895        function initHighlightingOnLoad() {
22896          deprecated("10.6.0", "initHighlightingOnLoad() is deprecated.  Use highlightAll() instead.");
22897          wantsHighlight = true;
22898        }
22899        let wantsHighlight = false;
22900        function highlightAll() {
22901          if (document.readyState === "loading") {
22902            wantsHighlight = true;
22903            return;
22904          }
22905          const blocks = document.querySelectorAll("pre code");
22906          blocks.forEach(highlightElement);
22907        }
22908        function boot() {
22909          if (wantsHighlight)
22910            highlightAll();
22911        }
22912        if (typeof window !== "undefined" && window.addEventListener) {
22913          window.addEventListener("DOMContentLoaded", boot, false);
22914        }
22915        function registerLanguage(languageName, languageDefinition) {
22916          let lang = null;
22917          try {
22918            lang = languageDefinition(hljs2);
22919          } catch (error$1) {
22920            error("Language definition for '{}' could not be registered.".replace("{}", languageName));
22921            if (!SAFE_MODE) {
22922              throw error$1;
22923            } else {
22924              error(error$1);
22925            }
22926            lang = PLAINTEXT_LANGUAGE;
22927          }
22928          if (!lang.name)
22929            lang.name = languageName;
22930          languages[languageName] = lang;
22931          lang.rawDefinition = languageDefinition.bind(null, hljs2);
22932          if (lang.aliases) {
22933            registerAliases(lang.aliases, { languageName });
22934          }
22935        }
22936        function unregisterLanguage(languageName) {
22937          delete languages[languageName];
22938          for (const alias of Object.keys(aliases)) {
22939            if (aliases[alias] === languageName) {
22940              delete aliases[alias];
22941            }
22942          }
22943        }
22944        function listLanguages() {
22945          return Object.keys(languages);
22946        }
22947        function requireLanguage(name2) {
22948          deprecated("10.4.0", "requireLanguage will be removed entirely in v11.");
22949          deprecated("10.4.0", "Please see https://github.com/highlightjs/highlight.js/pull/2844");
22950          const lang = getLanguage(name2);
22951          if (lang) {
22952            return lang;
22953          }
22954          const err = new Error("The '{}' language is required, but not loaded.".replace("{}", name2));
22955          throw err;
22956        }
22957        function getLanguage(name2) {
22958          name2 = (name2 || "").toLowerCase();
22959          return languages[name2] || languages[aliases[name2]];
22960        }
22961        function registerAliases(aliasList, { languageName }) {
22962          if (typeof aliasList === "string") {
22963            aliasList = [aliasList];
22964          }
22965          aliasList.forEach((alias) => {
22966            aliases[alias.toLowerCase()] = languageName;
22967          });
22968        }
22969        function autoDetection(name2) {
22970          const lang = getLanguage(name2);
22971          return lang && !lang.disableAutodetect;
22972        }
22973        function upgradePluginAPI(plugin) {
22974          if (plugin["before:highlightBlock"] && !plugin["before:highlightElement"]) {
22975            plugin["before:highlightElement"] = (data) => {
22976              plugin["before:highlightBlock"](
22977                Object.assign({ block: data.el }, data)
22978              );
22979            };
22980          }
22981          if (plugin["after:highlightBlock"] && !plugin["after:highlightElement"]) {
22982            plugin["after:highlightElement"] = (data) => {
22983              plugin["after:highlightBlock"](
22984                Object.assign({ block: data.el }, data)
22985              );
22986            };
22987          }
22988        }
22989        function addPlugin(plugin) {
22990          upgradePluginAPI(plugin);
22991          plugins.push(plugin);
22992        }
22993        function fire(event, args) {
22994          const cb = event;
22995          plugins.forEach(function(plugin) {
22996            if (plugin[cb]) {
22997              plugin[cb](args);
22998            }
22999          });
23000        }
23001        function deprecateFixMarkup(arg) {
23002          deprecated("10.2.0", "fixMarkup will be removed entirely in v11.0");
23003          deprecated("10.2.0", "Please see https://github.com/highlightjs/highlight.js/issues/2534");
23004          return fixMarkup(arg);
23005        }
23006        function deprecateHighlightBlock(el) {
23007          deprecated("10.7.0", "highlightBlock will be removed entirely in v12.0");
23008          deprecated("10.7.0", "Please use highlightElement now.");
23009          return highlightElement(el);
23010        }
23011        Object.assign(hljs2, {
23012          highlight: highlight2,
23013          highlightAuto,
23014          highlightAll,
23015          fixMarkup: deprecateFixMarkup,
23016          highlightElement,
23017          highlightBlock: deprecateHighlightBlock,
23018          configure,
23019          initHighlighting,
23020          initHighlightingOnLoad,
23021          registerLanguage,
23022          unregisterLanguage,
23023          listLanguages,
23024          getLanguage,
23025          registerAliases,
23026          requireLanguage,
23027          autoDetection,
23028          inherit: inherit$1,
23029          addPlugin,
23030          vuePlugin: BuildVuePlugin(hljs2).VuePlugin
23031        });
23032        hljs2.debugMode = function() {
23033          SAFE_MODE = false;
23034        };
23035        hljs2.safeMode = function() {
23036          SAFE_MODE = true;
23037        };
23038        hljs2.versionString = version;
23039        for (const key in MODES) {
23040          if (typeof MODES[key] === "object") {
23041            deepFreezeEs6(MODES[key]);
23042          }
23043        }
23044        Object.assign(hljs2, MODES);
23045        hljs2.addPlugin(brPlugin);
23046        hljs2.addPlugin(mergeHTMLPlugin);
23047        hljs2.addPlugin(tabReplacePlugin);
23048        return hljs2;
23049      };
23050      var highlight = HLJS({});
23051      module.exports = highlight;
23052    }
23053  });
23054
23055  
vendor: 13,542 bytes, lines 23055-23551
23055// node_modules/highlight.js/lib/languages/javascript.js
23056  var require_javascript = __commonJS({
23057    "node_modules/highlight.js/lib/languages/javascript.js"(exports, module) {
23058      var IDENT_RE = "[A-Za-z$_][0-9A-Za-z$_]*";
23059      var KEYWORDS = [
23060        "as",
23061        "in",
23062        "of",
23063        "if",
23064        "for",
23065        "while",
23066        "finally",
23067        "var",
23068        "new",
23069        "function",
23070        "do",
23071        "return",
23072        "void",
23073        "else",
23074        "break",
23075        "catch",
23076        "instanceof",
23077        "with",
23078        "throw",
23079        "case",
23080        "default",
23081        "try",
23082        "switch",
23083        "continue",
23084        "typeof",
23085        "delete",
23086        "let",
23087        "yield",
23088        "const",
23089        "class",
23090        "debugger",
23091        "async",
23092        "await",
23093        "static",
23094        "import",
23095        "from",
23096        "export",
23097        "extends"
23098      ];
23099      var LITERALS = [
23100        "true",
23101        "false",
23102        "null",
23103        "undefined",
23104        "NaN",
23105        "Infinity"
23106      ];
23107      var TYPES = [
23108        "Intl",
23109        "DataView",
23110        "Number",
23111        "Math",
23112        "Date",
23113        "String",
23114        "RegExp",
23115        "Object",
23116        "Function",
23117        "Boolean",
23118        "Error",
23119        "Symbol",
23120        "Set",
23121        "Map",
23122        "WeakSet",
23123        "WeakMap",
23124        "Proxy",
23125        "Reflect",
23126        "JSON",
23127        "Promise",
23128        "Float64Array",
23129        "Int16Array",
23130        "Int32Array",
23131        "Int8Array",
23132        "Uint16Array",
23133        "Uint32Array",
23134        "Float32Array",
23135        "Array",
23136        "Uint8Array",
23137        "Uint8ClampedArray",
23138        "ArrayBuffer",
23139        "BigInt64Array",
23140        "BigUint64Array",
23141        "BigInt"
23142      ];
23143      var ERROR_TYPES = [
23144        "EvalError",
23145        "InternalError",
23146        "RangeError",
23147        "ReferenceError",
23148        "SyntaxError",
23149        "TypeError",
23150        "URIError"
23151      ];
23152      var BUILT_IN_GLOBALS = [
23153        "setInterval",
23154        "setTimeout",
23155        "clearInterval",
23156        "clearTimeout",
23157        "require",
23158        "exports",
23159        "eval",
23160        "isFinite",
23161        "isNaN",
23162        "parseFloat",
23163        "parseInt",
23164        "decodeURI",
23165        "decodeURIComponent",
23166        "encodeURI",
23167        "encodeURIComponent",
23168        "escape",
23169        "unescape"
23170      ];
23171      var BUILT_IN_VARIABLES = [
23172        "arguments",
23173        "this",
23174        "super",
23175        "console",
23176        "window",
23177        "document",
23178        "localStorage",
23179        "module",
23180        "global"
23181      ];
23182      var BUILT_INS = [].concat(
23183        BUILT_IN_GLOBALS,
23184        BUILT_IN_VARIABLES,
23185        TYPES,
23186        ERROR_TYPES
23187      );
23188      function source(re2) {
23189        if (!re2)
23190          return null;
23191        if (typeof re2 === "string")
23192          return re2;
23193        return re2.source;
23194      }
23195      function lookahead(re2) {
23196        return concat("(?=", re2, ")");
23197      }
23198      function concat(...args) {
23199        const joined = args.map((x) => source(x)).join("");
23200        return joined;
23201      }
23202      function javascript(hljs2) {
23203        const hasClosingTag = (match, { after }) => {
23204          const tag = "</" + match[0].slice(1);
23205          const pos = match.input.indexOf(tag, after);
23206          return pos !== -1;
23207        };
23208        const IDENT_RE$1 = IDENT_RE;
23209        const FRAGMENT = {
23210          begin: "<>",
23211          end: "</>"
23212        };
23213        const XML_TAG = {
23214          begin: /<[A-Za-z0-9\\._:-]+/,
23215          end: /\/[A-Za-z0-9\\._:-]+>|\/>/,
23216          isTrulyOpeningTag: (match, response) => {
23217            const afterMatchIndex = match[0].length + match.index;
23218            const nextChar = match.input[afterMatchIndex];
23219            if (nextChar === "<") {
23220              response.ignoreMatch();
23221              return;
23222            }
23223            if (nextChar === ">") {
23224              if (!hasClosingTag(match, { after: afterMatchIndex })) {
23225                response.ignoreMatch();
23226              }
23227            }
23228          }
23229        };
23230        const KEYWORDS$1 = {
23231          $pattern: IDENT_RE,
23232          keyword: KEYWORDS,
23233          literal: LITERALS,
23234          built_in: BUILT_INS
23235        };
23236        const decimalDigits = "[0-9](_?[0-9])*";
23237        const frac = `\\.(${decimalDigits})`;
23238        const decimalInteger = `0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;
23239        const NUMBER = {
23240          className: "number",
23241          variants: [
23242            { begin: `(\\b(${decimalInteger})((${frac})|\\.)?|(${frac}))[eE][+-]?(${decimalDigits})\\b` },
23243            { begin: `\\b(${decimalInteger})\\b((${frac})\\b|\\.)?|(${frac})\\b` },
23244            { begin: `\\b(0|[1-9](_?[0-9])*)n\\b` },
23245            { begin: "\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b" },
23246            { begin: "\\b0[bB][0-1](_?[0-1])*n?\\b" },
23247            { begin: "\\b0[oO][0-7](_?[0-7])*n?\\b" },
23248            { begin: "\\b0[0-7]+n?\\b" }
23249          ],
23250          relevance: 0
23251        };
23252        const SUBST = {
23253          className: "subst",
23254          begin: "\\$\\{",
23255          end: "\\}",
23256          keywords: KEYWORDS$1,
23257          contains: []
23258        };
23259        const HTML_TEMPLATE = {
23260          begin: "html`",
23261          end: "",
23262          starts: {
23263            end: "`",
23264            returnEnd: false,
23265            contains: [
23266              hljs2.BACKSLASH_ESCAPE,
23267              SUBST
23268            ],
23269            subLanguage: "xml"
23270          }
23271        };
23272        const CSS_TEMPLATE = {
23273          begin: "css`",
23274          end: "",
23275          starts: {
23276            end: "`",
23277            returnEnd: false,
23278            contains: [
23279              hljs2.BACKSLASH_ESCAPE,
23280              SUBST
23281            ],
23282            subLanguage: "css"
23283          }
23284        };
23285        const TEMPLATE_STRING = {
23286          className: "string",
23287          begin: "`",
23288          end: "`",
23289          contains: [
23290            hljs2.BACKSLASH_ESCAPE,
23291            SUBST
23292          ]
23293        };
23294        const JSDOC_COMMENT = hljs2.COMMENT(
23295          /\/\*\*(?!\/)/,
23296          "\\*/",
23297          {
23298            relevance: 0,
23299            contains: [
23300              {
23301                className: "doctag",
23302                begin: "@[A-Za-z]+",
23303                contains: [
23304                  {
23305                    className: "type",
23306                    begin: "\\{",
23307                    end: "\\}",
23308                    relevance: 0
23309                  },
23310                  {
23311                    className: "variable",
23312                    begin: IDENT_RE$1 + "(?=\\s*(-)|$)",
23313                    endsParent: true,
23314                    relevance: 0
23315                  },
23316                  {
23317                    begin: /(?=[^\n])\s/,
23318                    relevance: 0
23319                  }
23320                ]
23321              }
23322            ]
23323          }
23324        );
23325        const COMMENT = {
23326          className: "comment",
23327          variants: [
23328            JSDOC_COMMENT,
23329            hljs2.C_BLOCK_COMMENT_MODE,
23330            hljs2.C_LINE_COMMENT_MODE
23331          ]
23332        };
23333        const SUBST_INTERNALS = [
23334          hljs2.APOS_STRING_MODE,
23335          hljs2.QUOTE_STRING_MODE,
23336          HTML_TEMPLATE,
23337          CSS_TEMPLATE,
23338          TEMPLATE_STRING,
23339          NUMBER,
23340          hljs2.REGEXP_MODE
23341        ];
23342        SUBST.contains = SUBST_INTERNALS.concat({
23343          begin: /\{/,
23344          end: /\}/,
23345          keywords: KEYWORDS$1,
23346          contains: [
23347            "self"
23348          ].concat(SUBST_INTERNALS)
23349        });
23350        const SUBST_AND_COMMENTS = [].concat(COMMENT, SUBST.contains);
23351        const PARAMS_CONTAINS = SUBST_AND_COMMENTS.concat([
23352          {
23353            begin: /\(/,
23354            end: /\)/,
23355            keywords: KEYWORDS$1,
23356            contains: ["self"].concat(SUBST_AND_COMMENTS)
23357          }
23358        ]);
23359        const PARAMS = {
23360          className: "params",
23361          begin: /\(/,
23362          end: /\)/,
23363          excludeBegin: true,
23364          excludeEnd: true,
23365          keywords: KEYWORDS$1,
23366          contains: PARAMS_CONTAINS
23367        };
23368        return {
23369          name: "Javascript",
23370          aliases: ["js", "jsx", "mjs", "cjs"],
23371          keywords: KEYWORDS$1,
23372          exports: { PARAMS_CONTAINS },
23373          illegal: /#(?![$_A-z])/,
23374          contains: [
23375            hljs2.SHEBANG({
23376              label: "shebang",
23377              binary: "node",
23378              relevance: 5
23379            }),
23380            {
23381              label: "use_strict",
23382              className: "meta",
23383              relevance: 10,
23384              begin: /^\s*['"]use (strict|asm)['"]/
23385            },
23386            hljs2.APOS_STRING_MODE,
23387            hljs2.QUOTE_STRING_MODE,
23388            HTML_TEMPLATE,
23389            CSS_TEMPLATE,
23390            TEMPLATE_STRING,
23391            COMMENT,
23392            NUMBER,
23393            {
23394              begin: concat(
23395                /[{,\n]\s*/,
23396                lookahead(concat(
23397                  /(((\/\/.*$)|(\/\*(\*[^/]|[^*])*\*\/))\s*)*/,
23398                  IDENT_RE$1 + "\\s*:"
23399                ))
23400              ),
23401              relevance: 0,
23402              contains: [
23403                {
23404                  className: "attr",
23405                  begin: IDENT_RE$1 + lookahead("\\s*:"),
23406                  relevance: 0
23407                }
23408              ]
23409            },
23410            {
23411              begin: "(" + hljs2.RE_STARTERS_RE + "|\\b(case|return|throw)\\b)\\s*",
23412              keywords: "return throw case",
23413              contains: [
23414                COMMENT,
23415                hljs2.REGEXP_MODE,
23416                {
23417                  className: "function",
23418                  begin: "(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|" + hljs2.UNDERSCORE_IDENT_RE + ")\\s*=>",
23419                  returnBegin: true,
23420                  end: "\\s*=>",
23421                  contains: [
23422                    {
23423                      className: "params",
23424                      variants: [
23425                        {
23426                          begin: hljs2.UNDERSCORE_IDENT_RE,
23427                          relevance: 0
23428                        },
23429                        {
23430                          className: null,
23431                          begin: /\(\s*\)/,
23432                          skip: true
23433                        },
23434                        {
23435                          begin: /\(/,
23436                          end: /\)/,
23437                          excludeBegin: true,
23438                          excludeEnd: true,
23439                          keywords: KEYWORDS$1,
23440                          contains: PARAMS_CONTAINS
23441                        }
23442                      ]
23443                    }
23444                  ]
23445                },
23446                {
23447                  begin: /,/,
23448                  relevance: 0
23449                },
23450                {
23451                  className: "",
23452                  begin: /\s/,
23453                  end: /\s*/,
23454                  skip: true
23455                },
23456                {
23457                  variants: [
23458                    { begin: FRAGMENT.begin, end: FRAGMENT.end },
23459                    {
23460                      begin: XML_TAG.begin,
23461                      "on:begin": XML_TAG.isTrulyOpeningTag,
23462                      end: XML_TAG.end
23463                    }
23464                  ],
23465                  subLanguage: "xml",
23466                  contains: [
23467                    {
23468                      begin: XML_TAG.begin,
23469                      end: XML_TAG.end,
23470                      skip: true,
23471                      contains: ["self"]
23472                    }
23473                  ]
23474                }
23475              ],
23476              relevance: 0
23477            },
23478            {
23479              className: "function",
23480              beginKeywords: "function",
23481              end: /[{;]/,
23482              excludeEnd: true,
23483              keywords: KEYWORDS$1,
23484              contains: [
23485                "self",
23486                hljs2.inherit(hljs2.TITLE_MODE, { begin: IDENT_RE$1 }),
23487                PARAMS
23488              ],
23489              illegal: /%/
23490            },
23491            {
23492              beginKeywords: "while if switch catch for"
23493            },
23494            {
23495              className: "function",
23496              begin: hljs2.UNDERSCORE_IDENT_RE + "\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
23497              returnBegin: true,
23498              contains: [
23499                PARAMS,
23500                hljs2.inherit(hljs2.TITLE_MODE, { begin: IDENT_RE$1 })
23501              ]
23502            },
23503            {
23504              variants: [
23505                { begin: "\\." + IDENT_RE$1 },
23506                { begin: "\\$" + IDENT_RE$1 }
23507              ],
23508              relevance: 0
23509            },
23510            {
23511              className: "class",
23512              beginKeywords: "class",
23513              end: /[{;=]/,
23514              excludeEnd: true,
23515              illegal: /[:"[\]]/,
23516              contains: [
23517                { beginKeywords: "extends" },
23518                hljs2.UNDERSCORE_TITLE_MODE
23519              ]
23520            },
23521            {
23522              begin: /\b(?=constructor)/,
23523              end: /[{;]/,
23524              excludeEnd: true,
23525              contains: [
23526                hljs2.inherit(hljs2.TITLE_MODE, { begin: IDENT_RE$1 }),
23527                "self",
23528                PARAMS
23529              ]
23530            },
23531            {
23532              begin: "(get|set)\\s+(?=" + IDENT_RE$1 + "\\()",
23533              end: /\{/,
23534              keywords: "get set",
23535              contains: [
23536                hljs2.inherit(hljs2.TITLE_MODE, { begin: IDENT_RE$1 }),
23537                { begin: /\(\)/ },
23538                PARAMS
23539              ]
23540            },
23541            {
23542              begin: /\$[(.]/
23543            }
23544          ]
23545        };
23546      }
23547      module.exports = javascript;
23548    }
23549  });
23550
23551  
vendor: 9,092 bytes, lines 23551-23937
23551// node_modules/highlight.js/lib/languages/python.js
23552  var require_python = __commonJS({
23553    "node_modules/highlight.js/lib/languages/python.js"(exports, module) {
23554      function source(re2) {
23555        if (!re2)
23556          return null;
23557        if (typeof re2 === "string")
23558          return re2;
23559        return re2.source;
23560      }
23561      function lookahead(re2) {
23562        return concat("(?=", re2, ")");
23563      }
23564      function concat(...args) {
23565        const joined = args.map((x) => source(x)).join("");
23566        return joined;
23567      }
23568      function python(hljs2) {
23569        const RESERVED_WORDS = [
23570          "and",
23571          "as",
23572          "assert",
23573          "async",
23574          "await",
23575          "break",
23576          "class",
23577          "continue",
23578          "def",
23579          "del",
23580          "elif",
23581          "else",
23582          "except",
23583          "finally",
23584          "for",
23585          "from",
23586          "global",
23587          "if",
23588          "import",
23589          "in",
23590          "is",
23591          "lambda",
23592          "nonlocal|10",
23593          "not",
23594          "or",
23595          "pass",
23596          "raise",
23597          "return",
23598          "try",
23599          "while",
23600          "with",
23601          "yield"
23602        ];
23603        const BUILT_INS = [
23604          "__import__",
23605          "abs",
23606          "all",
23607          "any",
23608          "ascii",
23609          "bin",
23610          "bool",
23611          "breakpoint",
23612          "bytearray",
23613          "bytes",
23614          "callable",
23615          "chr",
23616          "classmethod",
23617          "compile",
23618          "complex",
23619          "delattr",
23620          "dict",
23621          "dir",
23622          "divmod",
23623          "enumerate",
23624          "eval",
23625          "exec",
23626          "filter",
23627          "float",
23628          "format",
23629          "frozenset",
23630          "getattr",
23631          "globals",
23632          "hasattr",
23633          "hash",
23634          "help",
23635          "hex",
23636          "id",
23637          "input",
23638          "int",
23639          "isinstance",
23640          "issubclass",
23641          "iter",
23642          "len",
23643          "list",
23644          "locals",
23645          "map",
23646          "max",
23647          "memoryview",
23648          "min",
23649          "next",
23650          "object",
23651          "oct",
23652          "open",
23653          "ord",
23654          "pow",
23655          "print",
23656          "property",
23657          "range",
23658          "repr",
23659          "reversed",
23660          "round",
23661          "set",
23662          "setattr",
23663          "slice",
23664          "sorted",
23665          "staticmethod",
23666          "str",
23667          "sum",
23668          "super",
23669          "tuple",
23670          "type",
23671          "vars",
23672          "zip"
23673        ];
23674        const LITERALS = [
23675          "__debug__",
23676          "Ellipsis",
23677          "False",
23678          "None",
23679          "NotImplemented",
23680          "True"
23681        ];
23682        const TYPES = [
23683          "Any",
23684          "Callable",
23685          "Coroutine",
23686          "Dict",
23687          "List",
23688          "Literal",
23689          "Generic",
23690          "Optional",
23691          "Sequence",
23692          "Set",
23693          "Tuple",
23694          "Type",
23695          "Union"
23696        ];
23697        const KEYWORDS = {
23698          $pattern: /[A-Za-z]\w+|__\w+__/,
23699          keyword: RESERVED_WORDS,
23700          built_in: BUILT_INS,
23701          literal: LITERALS,
23702          type: TYPES
23703        };
23704        const PROMPT = {
23705          className: "meta",
23706          begin: /^(>>>|\.\.\.) /
23707        };
23708        const SUBST = {
23709          className: "subst",
23710          begin: /\{/,
23711          end: /\}/,
23712          keywords: KEYWORDS,
23713          illegal: /#/
23714        };
23715        const LITERAL_BRACKET = {
23716          begin: /\{\{/,
23717          relevance: 0
23718        };
23719        const STRING = {
23720          className: "string",
23721          contains: [hljs2.BACKSLASH_ESCAPE],
23722          variants: [
23723            {
23724              begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,
23725              end: /'''/,
23726              contains: [
23727                hljs2.BACKSLASH_ESCAPE,
23728                PROMPT
23729              ],
23730              relevance: 10
23731            },
23732            {
23733              begin: /([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,
23734              end: /"""/,
23735              contains: [
23736                hljs2.BACKSLASH_ESCAPE,
23737                PROMPT
23738              ],
23739              relevance: 10
23740            },
23741            {
23742              begin: /([fF][rR]|[rR][fF]|[fF])'''/,
23743              end: /'''/,
23744              contains: [
23745                hljs2.BACKSLASH_ESCAPE,
23746                PROMPT,
23747                LITERAL_BRACKET,
23748                SUBST
23749              ]
23750            },
23751            {
23752              begin: /([fF][rR]|[rR][fF]|[fF])"""/,
23753              end: /"""/,
23754              contains: [
23755                hljs2.BACKSLASH_ESCAPE,
23756                PROMPT,
23757                LITERAL_BRACKET,
23758                SUBST
23759              ]
23760            },
23761            {
23762              begin: /([uU]|[rR])'/,
23763              end: /'/,
23764              relevance: 10
23765            },
23766            {
23767              begin: /([uU]|[rR])"/,
23768              end: /"/,
23769              relevance: 10
23770            },
23771            {
23772              begin: /([bB]|[bB][rR]|[rR][bB])'/,
23773              end: /'/
23774            },
23775            {
23776              begin: /([bB]|[bB][rR]|[rR][bB])"/,
23777              end: /"/
23778            },
23779            {
23780              begin: /([fF][rR]|[rR][fF]|[fF])'/,
23781              end: /'/,
23782              contains: [
23783                hljs2.BACKSLASH_ESCAPE,
23784                LITERAL_BRACKET,
23785                SUBST
23786              ]
23787            },
23788            {
23789              begin: /([fF][rR]|[rR][fF]|[fF])"/,
23790              end: /"/,
23791              contains: [
23792                hljs2.BACKSLASH_ESCAPE,
23793                LITERAL_BRACKET,
23794                SUBST
23795              ]
23796            },
23797            hljs2.APOS_STRING_MODE,
23798            hljs2.QUOTE_STRING_MODE
23799          ]
23800        };
23801        const digitpart = "[0-9](_?[0-9])*";
23802        const pointfloat = `(\\b(${digitpart}))?\\.(${digitpart})|\\b(${digitpart})\\.`;
23803        const NUMBER = {
23804          className: "number",
23805          relevance: 0,
23806          variants: [
23807            {
23808              begin: `(\\b(${digitpart})|(${pointfloat}))[eE][+-]?(${digitpart})[jJ]?\\b`
23809            },
23810            {
23811              begin: `(${pointfloat})[jJ]?`
23812            },
23813            {
23814              begin: "\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?\\b"
23815            },
23816            {
23817              begin: "\\b0[bB](_?[01])+[lL]?\\b"
23818            },
23819            {
23820              begin: "\\b0[oO](_?[0-7])+[lL]?\\b"
23821            },
23822            {
23823              begin: "\\b0[xX](_?[0-9a-fA-F])+[lL]?\\b"
23824            },
23825            {
23826              begin: `\\b(${digitpart})[jJ]\\b`
23827            }
23828          ]
23829        };
23830        const COMMENT_TYPE = {
23831          className: "comment",
23832          begin: lookahead(/# type:/),
23833          end: /$/,
23834          keywords: KEYWORDS,
23835          contains: [
23836            {
23837              begin: /# type:/
23838            },
23839            {
23840              begin: /#/,
23841              end: /\b\B/,
23842              endsWithParent: true
23843            }
23844          ]
23845        };
23846        const PARAMS = {
23847          className: "params",
23848          variants: [
23849            {
23850              className: "",
23851              begin: /\(\s*\)/,
23852              skip: true
23853            },
23854            {
23855              begin: /\(/,
23856              end: /\)/,
23857              excludeBegin: true,
23858              excludeEnd: true,
23859              keywords: KEYWORDS,
23860              contains: [
23861                "self",
23862                PROMPT,
23863                NUMBER,
23864                STRING,
23865                hljs2.HASH_COMMENT_MODE
23866              ]
23867            }
23868          ]
23869        };
23870        SUBST.contains = [
23871          STRING,
23872          NUMBER,
23873          PROMPT
23874        ];
23875        return {
23876          name: "Python",
23877          aliases: [
23878            "py",
23879            "gyp",
23880            "ipython"
23881          ],
23882          keywords: KEYWORDS,
23883          illegal: /(<\/|->|\?)|=>/,
23884          contains: [
23885            PROMPT,
23886            NUMBER,
23887            {
23888              begin: /\bself\b/
23889            },
23890            {
23891              beginKeywords: "if",
23892              relevance: 0
23893            },
23894            STRING,
23895            COMMENT_TYPE,
23896            hljs2.HASH_COMMENT_MODE,
23897            {
23898              variants: [
23899                {
23900                  className: "function",
23901                  beginKeywords: "def"
23902                },
23903                {
23904                  className: "class",
23905                  beginKeywords: "class"
23906                }
23907              ],
23908              end: /:/,
23909              illegal: /[${=;\n,]/,
23910              contains: [
23911                hljs2.UNDERSCORE_TITLE_MODE,
23912                PARAMS,
23913                {
23914                  begin: /->/,
23915                  endsWithParent: true,
23916                  keywords: KEYWORDS
23917                }
23918              ]
23919            },
23920            {
23921              className: "meta",
23922              begin: /^[\t ]*@/,
23923              end: /(?=#)|$/,
23924              contains: [
23925                NUMBER,
23926                PARAMS,
23927                STRING
23928              ]
23929            }
23930          ]
23931        };
23932      }
23933      module.exports = python;
23934    }
23935  });
23936
23937  
vendor: 6,440 bytes, lines 23937-24176
23937// node_modules/highlight.js/lib/languages/xml.js
23938  var require_xml = __commonJS({
23939    "node_modules/highlight.js/lib/languages/xml.js"(exports, module) {
23940      function source(re2) {
23941        if (!re2)
23942          return null;
23943        if (typeof re2 === "string")
23944          return re2;
23945        return re2.source;
23946      }
23947      function lookahead(re2) {
23948        return concat("(?=", re2, ")");
23949      }
23950      function optional(re2) {
23951        return concat("(", re2, ")?");
23952      }
23953      function concat(...args) {
23954        const joined = args.map((x) => source(x)).join("");
23955        return joined;
23956      }
23957      function either(...args) {
23958        const joined = "(" + args.map((x) => source(x)).join("|") + ")";
23959        return joined;
23960      }
23961      function xml(hljs2) {
23962        const TAG_NAME_RE = concat(/[A-Z_]/, optional(/[A-Z0-9_.-]*:/), /[A-Z0-9_.-]*/);
23963        const XML_IDENT_RE = /[A-Za-z0-9._:-]+/;
23964        const XML_ENTITIES = {
23965          className: "symbol",
23966          begin: /&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/
23967        };
23968        const XML_META_KEYWORDS = {
23969          begin: /\s/,
23970          contains: [
23971            {
23972              className: "meta-keyword",
23973              begin: /#?[a-z_][a-z1-9_-]+/,
23974              illegal: /\n/
23975            }
23976          ]
23977        };
23978        const XML_META_PAR_KEYWORDS = hljs2.inherit(XML_META_KEYWORDS, {
23979          begin: /\(/,
23980          end: /\)/
23981        });
23982        const APOS_META_STRING_MODE = hljs2.inherit(hljs2.APOS_STRING_MODE, {
23983          className: "meta-string"
23984        });
23985        const QUOTE_META_STRING_MODE = hljs2.inherit(hljs2.QUOTE_STRING_MODE, {
23986          className: "meta-string"
23987        });
23988        const TAG_INTERNALS = {
23989          endsWithParent: true,
23990          illegal: /</,
23991          relevance: 0,
23992          contains: [
23993            {
23994              className: "attr",
23995              begin: XML_IDENT_RE,
23996              relevance: 0
23997            },
23998            {
23999              begin: /=\s*/,
24000              relevance: 0,
24001              contains: [
24002                {
24003                  className: "string",
24004                  endsParent: true,
24005                  variants: [
24006                    {
24007                      begin: /"/,
24008                      end: /"/,
24009                      contains: [XML_ENTITIES]
24010                    },
24011                    {
24012                      begin: /'/,
24013                      end: /'/,
24014                      contains: [XML_ENTITIES]
24015                    },
24016                    {
24017                      begin: /[^\s"'=<>`]+/
24018                    }
24019                  ]
24020                }
24021              ]
24022            }
24023          ]
24024        };
24025        return {
24026          name: "HTML, XML",
24027          aliases: [
24028            "html",
24029            "xhtml",
24030            "rss",
24031            "atom",
24032            "xjb",
24033            "xsd",
24034            "xsl",
24035            "plist",
24036            "wsf",
24037            "svg"
24038          ],
24039          case_insensitive: true,
24040          contains: [
24041            {
24042              className: "meta",
24043              begin: /<![a-z]/,
24044              end: />/,
24045              relevance: 10,
24046              contains: [
24047                XML_META_KEYWORDS,
24048                QUOTE_META_STRING_MODE,
24049                APOS_META_STRING_MODE,
24050                XML_META_PAR_KEYWORDS,
24051                {
24052                  begin: /\[/,
24053                  end: /\]/,
24054                  contains: [
24055                    {
24056                      className: "meta",
24057                      begin: /<![a-z]/,
24058                      end: />/,
24059                      contains: [
24060                        XML_META_KEYWORDS,
24061                        XML_META_PAR_KEYWORDS,
24062                        QUOTE_META_STRING_MODE,
24063                        APOS_META_STRING_MODE
24064                      ]
24065                    }
24066                  ]
24067                }
24068              ]
24069            },
24070            hljs2.COMMENT(
24071              /<!--/,
24072              /-->/,
24073              {
24074                relevance: 10
24075              }
24076            ),
24077            {
24078              begin: /<!\[CDATA\[/,
24079              end: /\]\]>/,
24080              relevance: 10
24081            },
24082            XML_ENTITIES,
24083            {
24084              className: "meta",
24085              begin: /<\?xml/,
24086              end: /\?>/,
24087              relevance: 10
24088            },
24089            {
24090              className: "tag",
24091              begin: /<style(?=\s|>)/,
24092              end: />/,
24093              keywords: {
24094                name: "style"
24095              },
24096              contains: [TAG_INTERNALS],
24097              starts: {
24098                end: /<\/style>/,
24099                returnEnd: true,
24100                subLanguage: [
24101                  "css",
24102                  "xml"
24103                ]
24104              }
24105            },
24106            {
24107              className: "tag",
24108              begin: /<script(?=\s|>)/,
24109              end: />/,
24110              keywords: {
24111                name: "script"
24112              },
24113              contains: [TAG_INTERNALS],
24114              starts: {
24115                end: /<\/script>/,
24116                returnEnd: true,
24117                subLanguage: [
24118                  "javascript",
24119                  "handlebars",
24120                  "xml"
24121                ]
24122              }
24123            },
24124            {
24125              className: "tag",
24126              begin: /<>|<\/>/
24127            },
24128            {
24129              className: "tag",
24130              begin: concat(
24131                /</,
24132                lookahead(concat(
24133                  TAG_NAME_RE,
24134                  either(/\/>/, />/, /\s/)
24135                ))
24136              ),
24137              end: /\/?>/,
24138              contains: [
24139                {
24140                  className: "name",
24141                  begin: TAG_NAME_RE,
24142                  relevance: 0,
24143                  starts: TAG_INTERNALS
24144                }
24145              ]
24146            },
24147            {
24148              className: "tag",
24149              begin: concat(
24150                /<\//,
24151                lookahead(concat(
24152                  TAG_NAME_RE,
24153                  />/
24154                ))
24155              ),
24156              contains: [
24157                {
24158                  className: "name",
24159                  begin: TAG_NAME_RE,
24160                  relevance: 0
24161                },
24162                {
24163                  begin: />/,
24164                  relevance: 0,
24165                  endsParent: true
24166                }
24167              ]
24168            }
24169          ]
24170        };
24171      }
24172      module.exports = xml;
24173    }
24174  });
24175
24176  
vendor: 2,632 bytes, lines 24176-24229
24176// node_modules/highlight.js/lib/languages/django.js
24177  var require_django = __commonJS({
24178    "node_modules/highlight.js/lib/languages/django.js"(exports, module) {
24179      function django(hljs2) {
24180        const FILTER = {
24181          begin: /\|[A-Za-z]+:?/,
24182          keywords: {
24183            name: "truncatewords removetags linebreaksbr yesno get_digit timesince random striptags filesizeformat escape linebreaks length_is ljust rjust cut urlize fix_ampersands title floatformat capfirst pprint divisibleby add make_list unordered_list urlencode timeuntil urlizetrunc wordcount stringformat linenumbers slice date dictsort dictsortreversed default_if_none pluralize lower join center default truncatewords_html upper length phone2numeric wordwrap time addslashes slugify first escapejs force_escape iriencode last safe safeseq truncatechars localize unlocalize localtime utc timezone"
24184          },
24185          contains: [
24186            hljs2.QUOTE_STRING_MODE,
24187            hljs2.APOS_STRING_MODE
24188          ]
24189        };
24190        return {
24191          name: "Django",
24192          aliases: ["jinja"],
24193          case_insensitive: true,
24194          subLanguage: "xml",
24195          contains: [
24196            hljs2.COMMENT(/\{%\s*comment\s*%\}/, /\{%\s*endcomment\s*%\}/),
24197            hljs2.COMMENT(/\{#/, /#\}/),
24198            {
24199              className: "template-tag",
24200              begin: /\{%/,
24201              end: /%\}/,
24202              contains: [{
24203                className: "name",
24204                begin: /\w+/,
24205                keywords: {
24206                  name: "comment endcomment load templatetag ifchanged endifchanged if endif firstof for endfor ifnotequal endifnotequal widthratio extends include spaceless endspaceless regroup ifequal endifequal ssi now with cycle url filter endfilter debug block endblock else autoescape endautoescape csrf_token empty elif endwith static trans blocktrans endblocktrans get_static_prefix get_media_prefix plural get_current_language language get_available_languages get_current_language_bidi get_language_info get_language_info_list localize endlocalize localtime endlocaltime timezone endtimezone get_current_timezone verbatim"
24207                },
24208                starts: {
24209                  endsWithParent: true,
24210                  keywords: "in by as",
24211                  contains: [FILTER],
24212                  relevance: 0
24213                }
24214              }]
24215            },
24216            {
24217              className: "template-variable",
24218              begin: /\{\{/,
24219              end: /\}\}/,
24220              contains: [FILTER]
24221            }
24222          ]
24223        };
24224      }
24225      module.exports = django;
24226    }
24227  });
24228
24229  
vendor: 4,099 bytes, lines 24229-24362
24229// node_modules/highlight.js/lib/languages/bash.js
24230  var require_bash = __commonJS({
24231    "node_modules/highlight.js/lib/languages/bash.js"(exports, module) {
24232      function source(re2) {
24233        if (!re2)
24234          return null;
24235        if (typeof re2 === "string")
24236          return re2;
24237        return re2.source;
24238      }
24239      function concat(...args) {
24240        const joined = args.map((x) => source(x)).join("");
24241        return joined;
24242      }
24243      function bash(hljs2) {
24244        const VAR = {};
24245        const BRACED_VAR = {
24246          begin: /\$\{/,
24247          end: /\}/,
24248          contains: [
24249            "self",
24250            {
24251              begin: /:-/,
24252              contains: [VAR]
24253            }
24254          ]
24255        };
24256        Object.assign(VAR, {
24257          className: "variable",
24258          variants: [
24259            { begin: concat(
24260              /\$[\w\d#@][\w\d_]*/,
24261              `(?![\\w\\d])(?![$])`
24262            ) },
24263            BRACED_VAR
24264          ]
24265        });
24266        const SUBST = {
24267          className: "subst",
24268          begin: /\$\(/,
24269          end: /\)/,
24270          contains: [hljs2.BACKSLASH_ESCAPE]
24271        };
24272        const HERE_DOC = {
24273          begin: /<<-?\s*(?=\w+)/,
24274          starts: {
24275            contains: [
24276              hljs2.END_SAME_AS_BEGIN({
24277                begin: /(\w+)/,
24278                end: /(\w+)/,
24279                className: "string"
24280              })
24281            ]
24282          }
24283        };
24284        const QUOTE_STRING = {
24285          className: "string",
24286          begin: /"/,
24287          end: /"/,
24288          contains: [
24289            hljs2.BACKSLASH_ESCAPE,
24290            VAR,
24291            SUBST
24292          ]
24293        };
24294        SUBST.contains.push(QUOTE_STRING);
24295        const ESCAPED_QUOTE = {
24296          className: "",
24297          begin: /\\"/
24298        };
24299        const APOS_STRING = {
24300          className: "string",
24301          begin: /'/,
24302          end: /'/
24303        };
24304        const ARITHMETIC = {
24305          begin: /\$\(\(/,
24306          end: /\)\)/,
24307          contains: [
24308            { begin: /\d+#[0-9a-f]+/, className: "number" },
24309            hljs2.NUMBER_MODE,
24310            VAR
24311          ]
24312        };
24313        const SH_LIKE_SHELLS = [
24314          "fish",
24315          "bash",
24316          "zsh",
24317          "sh",
24318          "csh",
24319          "ksh",
24320          "tcsh",
24321          "dash",
24322          "scsh"
24323        ];
24324        const KNOWN_SHEBANG = hljs2.SHEBANG({
24325          binary: `(${SH_LIKE_SHELLS.join("|")})`,
24326          relevance: 10
24327        });
24328        const FUNCTION = {
24329          className: "function",
24330          begin: /\w[\w\d_]*\s*\(\s*\)\s*\{/,
24331          returnBegin: true,
24332          contains: [hljs2.inherit(hljs2.TITLE_MODE, { begin: /\w[\w\d_]*/ })],
24333          relevance: 0
24334        };
24335        return {
24336          name: "Bash",
24337          aliases: ["sh", "zsh"],
24338          keywords: {
24339            $pattern: /\b[a-z._-]+\b/,
24340            keyword: "if then else elif fi for while in do done case esac function",
24341            literal: "true false",
24342            built_in: "break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp"
24343          },
24344          contains: [
24345            KNOWN_SHEBANG,
24346            hljs2.SHEBANG(),
24347            FUNCTION,
24348            ARITHMETIC,
24349            hljs2.HASH_COMMENT_MODE,
24350            HERE_DOC,
24351            QUOTE_STRING,
24352            ESCAPED_QUOTE,
24353            APOS_STRING,
24354            VAR
24355          ]
24356        };
24357      }
24358      module.exports = bash;
24359    }
24360  });
24361
24362  
vendor: 13,351 bytes, lines 24362-24921
24362// node_modules/highlight.js/lib/languages/css.js
24363  var require_css = __commonJS({
24364    "node_modules/highlight.js/lib/languages/css.js"(exports, module) {
24365      var MODES = (hljs2) => {
24366        return {
24367          IMPORTANT: {
24368            className: "meta",
24369            begin: "!important"
24370          },
24371          HEXCOLOR: {
24372            className: "number",
24373            begin: "#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"
24374          },
24375          ATTRIBUTE_SELECTOR_MODE: {
24376            className: "selector-attr",
24377            begin: /\[/,
24378            end: /\]/,
24379            illegal: "$",
24380            contains: [
24381              hljs2.APOS_STRING_MODE,
24382              hljs2.QUOTE_STRING_MODE
24383            ]
24384          }
24385        };
24386      };
24387      var TAGS = [
24388        "a",
24389        "abbr",
24390        "address",
24391        "article",
24392        "aside",
24393        "audio",
24394        "b",
24395        "blockquote",
24396        "body",
24397        "button",
24398        "canvas",
24399        "caption",
24400        "cite",
24401        "code",
24402        "dd",
24403        "del",
24404        "details",
24405        "dfn",
24406        "div",
24407        "dl",
24408        "dt",
24409        "em",
24410        "fieldset",
24411        "figcaption",
24412        "figure",
24413        "footer",
24414        "form",
24415        "h1",
24416        "h2",
24417        "h3",
24418        "h4",
24419        "h5",
24420        "h6",
24421        "header",
24422        "hgroup",
24423        "html",
24424        "i",
24425        "iframe",
24426        "img",
24427        "input",
24428        "ins",
24429        "kbd",
24430        "label",
24431        "legend",
24432        "li",
24433        "main",
24434        "mark",
24435        "menu",
24436        "nav",
24437        "object",
24438        "ol",
24439        "p",
24440        "q",
24441        "quote",
24442        "samp",
24443        "section",
24444        "span",
24445        "strong",
24446        "summary",
24447        "sup",
24448        "table",
24449        "tbody",
24450        "td",
24451        "textarea",
24452        "tfoot",
24453        "th",
24454        "thead",
24455        "time",
24456        "tr",
24457        "ul",
24458        "var",
24459        "video"
24460      ];
24461      var MEDIA_FEATURES = [
24462        "any-hover",
24463        "any-pointer",
24464        "aspect-ratio",
24465        "color",
24466        "color-gamut",
24467        "color-index",
24468        "device-aspect-ratio",
24469        "device-height",
24470        "device-width",
24471        "display-mode",
24472        "forced-colors",
24473        "grid",
24474        "height",
24475        "hover",
24476        "inverted-colors",
24477        "monochrome",
24478        "orientation",
24479        "overflow-block",
24480        "overflow-inline",
24481        "pointer",
24482        "prefers-color-scheme",
24483        "prefers-contrast",
24484        "prefers-reduced-motion",
24485        "prefers-reduced-transparency",
24486        "resolution",
24487        "scan",
24488        "scripting",
24489        "update",
24490        "width",
24491        "min-width",
24492        "max-width",
24493        "min-height",
24494        "max-height"
24495      ];
24496      var PSEUDO_CLASSES = [
24497        "active",
24498        "any-link",
24499        "blank",
24500        "checked",
24501        "current",
24502        "default",
24503        "defined",
24504        "dir",
24505        "disabled",
24506        "drop",
24507        "empty",
24508        "enabled",
24509        "first",
24510        "first-child",
24511        "first-of-type",
24512        "fullscreen",
24513        "future",
24514        "focus",
24515        "focus-visible",
24516        "focus-within",
24517        "has",
24518        "host",
24519        "host-context",
24520        "hover",
24521        "indeterminate",
24522        "in-range",
24523        "invalid",
24524        "is",
24525        "lang",
24526        "last-child",
24527        "last-of-type",
24528        "left",
24529        "link",
24530        "local-link",
24531        "not",
24532        "nth-child",
24533        "nth-col",
24534        "nth-last-child",
24535        "nth-last-col",
24536        "nth-last-of-type",
24537        "nth-of-type",
24538        "only-child",
24539        "only-of-type",
24540        "optional",
24541        "out-of-range",
24542        "past",
24543        "placeholder-shown",
24544        "read-only",
24545        "read-write",
24546        "required",
24547        "right",
24548        "root",
24549        "scope",
24550        "target",
24551        "target-within",
24552        "user-invalid",
24553        "valid",
24554        "visited",
24555        "where"
24556      ];
24557      var PSEUDO_ELEMENTS = [
24558        "after",
24559        "backdrop",
24560        "before",
24561        "cue",
24562        "cue-region",
24563        "first-letter",
24564        "first-line",
24565        "grammar-error",
24566        "marker",
24567        "part",
24568        "placeholder",
24569        "selection",
24570        "slotted",
24571        "spelling-error"
24572      ];
24573      var ATTRIBUTES = [
24574        "align-content",
24575        "align-items",
24576        "align-self",
24577        "animation",
24578        "animation-delay",
24579        "animation-direction",
24580        "animation-duration",
24581        "animation-fill-mode",
24582        "animation-iteration-count",
24583        "animation-name",
24584        "animation-play-state",
24585        "animation-timing-function",
24586        "auto",
24587        "backface-visibility",
24588        "background",
24589        "background-attachment",
24590        "background-clip",
24591        "background-color",
24592        "background-image",
24593        "background-origin",
24594        "background-position",
24595        "background-repeat",
24596        "background-size",
24597        "border",
24598        "border-bottom",
24599        "border-bottom-color",
24600        "border-bottom-left-radius",
24601        "border-bottom-right-radius",
24602        "border-bottom-style",
24603        "border-bottom-width",
24604        "border-collapse",
24605        "border-color",
24606        "border-image",
24607        "border-image-outset",
24608        "border-image-repeat",
24609        "border-image-slice",
24610        "border-image-source",
24611        "border-image-width",
24612        "border-left",
24613        "border-left-color",
24614        "border-left-style",
24615        "border-left-width",
24616        "border-radius",
24617        "border-right",
24618        "border-right-color",
24619        "border-right-style",
24620        "border-right-width",
24621        "border-spacing",
24622        "border-style",
24623        "border-top",
24624        "border-top-color",
24625        "border-top-left-radius",
24626        "border-top-right-radius",
24627        "border-top-style",
24628        "border-top-width",
24629        "border-width",
24630        "bottom",
24631        "box-decoration-break",
24632        "box-shadow",
24633        "box-sizing",
24634        "break-after",
24635        "break-before",
24636        "break-inside",
24637        "caption-side",
24638        "clear",
24639        "clip",
24640        "clip-path",
24641        "color",
24642        "column-count",
24643        "column-fill",
24644        "column-gap",
24645        "column-rule",
24646        "column-rule-color",
24647        "column-rule-style",
24648        "column-rule-width",
24649        "column-span",
24650        "column-width",
24651        "columns",
24652        "content",
24653        "counter-increment",
24654        "counter-reset",
24655        "cursor",
24656        "direction",
24657        "display",
24658        "empty-cells",
24659        "filter",
24660        "flex",
24661        "flex-basis",
24662        "flex-direction",
24663        "flex-flow",
24664        "flex-grow",
24665        "flex-shrink",
24666        "flex-wrap",
24667        "float",
24668        "font",
24669        "font-display",
24670        "font-family",
24671        "font-feature-settings",
24672        "font-kerning",
24673        "font-language-override",
24674        "font-size",
24675        "font-size-adjust",
24676        "font-smoothing",
24677        "font-stretch",
24678        "font-style",
24679        "font-variant",
24680        "font-variant-ligatures",
24681        "font-variation-settings",
24682        "font-weight",
24683        "height",
24684        "hyphens",
24685        "icon",
24686        "image-orientation",
24687        "image-rendering",
24688        "image-resolution",
24689        "ime-mode",
24690        "inherit",
24691        "initial",
24692        "justify-content",
24693        "left",
24694        "letter-spacing",
24695        "line-height",
24696        "list-style",
24697        "list-style-image",
24698        "list-style-position",
24699        "list-style-type",
24700        "margin",
24701        "margin-bottom",
24702        "margin-left",
24703        "margin-right",
24704        "margin-top",
24705        "marks",
24706        "mask",
24707        "max-height",
24708        "max-width",
24709        "min-height",
24710        "min-width",
24711        "nav-down",
24712        "nav-index",
24713        "nav-left",
24714        "nav-right",
24715        "nav-up",
24716        "none",
24717        "normal",
24718        "object-fit",
24719        "object-position",
24720        "opacity",
24721        "order",
24722        "orphans",
24723        "outline",
24724        "outline-color",
24725        "outline-offset",
24726        "outline-style",
24727        "outline-width",
24728        "overflow",
24729        "overflow-wrap",
24730        "overflow-x",
24731        "overflow-y",
24732        "padding",
24733        "padding-bottom",
24734        "padding-left",
24735        "padding-right",
24736        "padding-top",
24737        "page-break-after",
24738        "page-break-before",
24739        "page-break-inside",
24740        "perspective",
24741        "perspective-origin",
24742        "pointer-events",
24743        "position",
24744        "quotes",
24745        "resize",
24746        "right",
24747        "src",
24748        "tab-size",
24749        "table-layout",
24750        "text-align",
24751        "text-align-last",
24752        "text-decoration",
24753        "text-decoration-color",
24754        "text-decoration-line",
24755        "text-decoration-style",
24756        "text-indent",
24757        "text-overflow",
24758        "text-rendering",
24759        "text-shadow",
24760        "text-transform",
24761        "text-underline-position",
24762        "top",
24763        "transform",
24764        "transform-origin",
24765        "transform-style",
24766        "transition",
24767        "transition-delay",
24768        "transition-duration",
24769        "transition-property",
24770        "transition-timing-function",
24771        "unicode-bidi",
24772        "vertical-align",
24773        "visibility",
24774        "white-space",
24775        "widows",
24776        "width",
24777        "word-break",
24778        "word-spacing",
24779        "word-wrap",
24780        "z-index"
24781      ].reverse();
24782      function source(re2) {
24783        if (!re2)
24784          return null;
24785        if (typeof re2 === "string")
24786          return re2;
24787        return re2.source;
24788      }
24789      function lookahead(re2) {
24790        return concat("(?=", re2, ")");
24791      }
24792      function concat(...args) {
24793        const joined = args.map((x) => source(x)).join("");
24794        return joined;
24795      }
24796      function css(hljs2) {
24797        const modes = MODES(hljs2);
24798        const FUNCTION_DISPATCH = {
24799          className: "built_in",
24800          begin: /[\w-]+(?=\()/
24801        };
24802        const VENDOR_PREFIX = {
24803          begin: /-(webkit|moz|ms|o)-(?=[a-z])/
24804        };
24805        const AT_MODIFIERS = "and or not only";
24806        const AT_PROPERTY_RE = /@-?\w[\w]*(-\w+)*/;
24807        const IDENT_RE = "[a-zA-Z-][a-zA-Z0-9_-]*";
24808        const STRINGS = [
24809          hljs2.APOS_STRING_MODE,
24810          hljs2.QUOTE_STRING_MODE
24811        ];
24812        return {
24813          name: "CSS",
24814          case_insensitive: true,
24815          illegal: /[=|'\$]/,
24816          keywords: {
24817            keyframePosition: "from to"
24818          },
24819          classNameAliases: {
24820            keyframePosition: "selector-tag"
24821          },
24822          contains: [
24823            hljs2.C_BLOCK_COMMENT_MODE,
24824            VENDOR_PREFIX,
24825            hljs2.CSS_NUMBER_MODE,
24826            {
24827              className: "selector-id",
24828              begin: /#[A-Za-z0-9_-]+/,
24829              relevance: 0
24830            },
24831            {
24832              className: "selector-class",
24833              begin: "\\." + IDENT_RE,
24834              relevance: 0
24835            },
24836            modes.ATTRIBUTE_SELECTOR_MODE,
24837            {
24838              className: "selector-pseudo",
24839              variants: [
24840                {
24841                  begin: ":(" + PSEUDO_CLASSES.join("|") + ")"
24842                },
24843                {
24844                  begin: "::(" + PSEUDO_ELEMENTS.join("|") + ")"
24845                }
24846              ]
24847            },
24848            {
24849              className: "attribute",
24850              begin: "\\b(" + ATTRIBUTES.join("|") + ")\\b"
24851            },
24852            {
24853              begin: ":",
24854              end: "[;}]",
24855              contains: [
24856                modes.HEXCOLOR,
24857                modes.IMPORTANT,
24858                hljs2.CSS_NUMBER_MODE,
24859                ...STRINGS,
24860                {
24861                  begin: /(url|data-uri)\(/,
24862                  end: /\)/,
24863                  relevance: 0,
24864                  keywords: {
24865                    built_in: "url data-uri"
24866                  },
24867                  contains: [
24868                    {
24869                      className: "string",
24870                      begin: /[^)]/,
24871                      endsWithParent: true,
24872                      excludeEnd: true
24873                    }
24874                  ]
24875                },
24876                FUNCTION_DISPATCH
24877              ]
24878            },
24879            {
24880              begin: lookahead(/@/),
24881              end: "[{;]",
24882              relevance: 0,
24883              illegal: /:/,
24884              contains: [
24885                {
24886                  className: "keyword",
24887                  begin: AT_PROPERTY_RE
24888                },
24889                {
24890                  begin: /\s/,
24891                  endsWithParent: true,
24892                  excludeEnd: true,
24893                  relevance: 0,
24894                  keywords: {
24895                    $pattern: /[a-z-]+/,
24896                    keyword: AT_MODIFIERS,
24897                    attribute: MEDIA_FEATURES.join(" ")
24898                  },
24899                  contains: [
24900                    {
24901                      begin: /[a-z-]+(?=:)/,
24902                      className: "attribute"
24903                    },
24904                    ...STRINGS,
24905                    hljs2.CSS_NUMBER_MODE
24906                  ]
24907                }
24908              ]
24909            },
24910            {
24911              className: "selector-tag",
24912              begin: "\\b(" + TAGS.join("|") + ")\\b"
24913            }
24914          ]
24915        };
24916      }
24917      module.exports = css;
24918    }
24919  });
24920
24921  
vendor: 5,581 bytes, lines 24921-25147
24921// node_modules/highlight.js/lib/languages/markdown.js
24922  var require_markdown = __commonJS({
24923    "node_modules/highlight.js/lib/languages/markdown.js"(exports, module) {
24924      function source(re2) {
24925        if (!re2)
24926          return null;
24927        if (typeof re2 === "string")
24928          return re2;
24929        return re2.source;
24930      }
24931      function concat(...args) {
24932        const joined = args.map((x) => source(x)).join("");
24933        return joined;
24934      }
24935      function markdown(hljs2) {
24936        const INLINE_HTML = {
24937          begin: /<\/?[A-Za-z_]/,
24938          end: ">",
24939          subLanguage: "xml",
24940          relevance: 0
24941        };
24942        const HORIZONTAL_RULE = {
24943          begin: "^[-\\*]{3,}",
24944          end: "$"
24945        };
24946        const CODE = {
24947          className: "code",
24948          variants: [
24949            {
24950              begin: "(`{3,})[^`](.|\\n)*?\\1`*[ ]*"
24951            },
24952            {
24953              begin: "(~{3,})[^~](.|\\n)*?\\1~*[ ]*"
24954            },
24955            {
24956              begin: "```",
24957              end: "```+[ ]*$"
24958            },
24959            {
24960              begin: "~~~",
24961              end: "~~~+[ ]*$"
24962            },
24963            {
24964              begin: "`.+?`"
24965            },
24966            {
24967              begin: "(?=^( {4}|\\t))",
24968              contains: [
24969                {
24970                  begin: "^( {4}|\\t)",
24971                  end: "(\\n)$"
24972                }
24973              ],
24974              relevance: 0
24975            }
24976          ]
24977        };
24978        const LIST = {
24979          className: "bullet",
24980          begin: "^[ 	]*([*+-]|(\\d+\\.))(?=\\s+)",
24981          end: "\\s+",
24982          excludeEnd: true
24983        };
24984        const LINK_REFERENCE = {
24985          begin: /^\[[^\n]+\]:/,
24986          returnBegin: true,
24987          contains: [
24988            {
24989              className: "symbol",
24990              begin: /\[/,
24991              end: /\]/,
24992              excludeBegin: true,
24993              excludeEnd: true
24994            },
24995            {
24996              className: "link",
24997              begin: /:\s*/,
24998              end: /$/,
24999              excludeBegin: true
25000            }
25001          ]
25002        };
25003        const URL_SCHEME = /[A-Za-z][A-Za-z0-9+.-]*/;
25004        const LINK = {
25005          variants: [
25006            {
25007              begin: /\[.+?\]\[.*?\]/,
25008              relevance: 0
25009            },
25010            {
25011              begin: /\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
25012              relevance: 2
25013            },
25014            {
25015              begin: concat(/\[.+?\]\(/, URL_SCHEME, /:\/\/.*?\)/),
25016              relevance: 2
25017            },
25018            {
25019              begin: /\[.+?\]\([./?&#].*?\)/,
25020              relevance: 1
25021            },
25022            {
25023              begin: /\[.+?\]\(.*?\)/,
25024              relevance: 0
25025            }
25026          ],
25027          returnBegin: true,
25028          contains: [
25029            {
25030              className: "string",
25031              relevance: 0,
25032              begin: "\\[",
25033              end: "\\]",
25034              excludeBegin: true,
25035              returnEnd: true
25036            },
25037            {
25038              className: "link",
25039              relevance: 0,
25040              begin: "\\]\\(",
25041              end: "\\)",
25042              excludeBegin: true,
25043              excludeEnd: true
25044            },
25045            {
25046              className: "symbol",
25047              relevance: 0,
25048              begin: "\\]\\[",
25049              end: "\\]",
25050              excludeBegin: true,
25051              excludeEnd: true
25052            }
25053          ]
25054        };
25055        const BOLD = {
25056          className: "strong",
25057          contains: [],
25058          variants: [
25059            {
25060              begin: /_{2}/,
25061              end: /_{2}/
25062            },
25063            {
25064              begin: /\*{2}/,
25065              end: /\*{2}/
25066            }
25067          ]
25068        };
25069        const ITALIC = {
25070          className: "emphasis",
25071          contains: [],
25072          variants: [
25073            {
25074              begin: /\*(?!\*)/,
25075              end: /\*/
25076            },
25077            {
25078              begin: /_(?!_)/,
25079              end: /_/,
25080              relevance: 0
25081            }
25082          ]
25083        };
25084        BOLD.contains.push(ITALIC);
25085        ITALIC.contains.push(BOLD);
25086        let CONTAINABLE = [
25087          INLINE_HTML,
25088          LINK
25089        ];
25090        BOLD.contains = BOLD.contains.concat(CONTAINABLE);
25091        ITALIC.contains = ITALIC.contains.concat(CONTAINABLE);
25092        CONTAINABLE = CONTAINABLE.concat(BOLD, ITALIC);
25093        const HEADER = {
25094          className: "section",
25095          variants: [
25096            {
25097              begin: "^#{1,6}",
25098              end: "$",
25099              contains: CONTAINABLE
25100            },
25101            {
25102              begin: "(?=^.+?\\n[=-]{2,}$)",
25103              contains: [
25104                {
25105                  begin: "^[=-]*$"
25106                },
25107                {
25108                  begin: "^",
25109                  end: "\\n",
25110                  contains: CONTAINABLE
25111                }
25112              ]
25113            }
25114          ]
25115        };
25116        const BLOCKQUOTE = {
25117          className: "quote",
25118          begin: "^>\\s+",
25119          contains: CONTAINABLE,
25120          end: "$"
25121        };
25122        return {
25123          name: "Markdown",
25124          aliases: [
25125            "md",
25126            "mkdown",
25127            "mkd"
25128          ],
25129          contains: [
25130            HEADER,
25131            INLINE_HTML,
25132            LIST,
25133            BOLD,
25134            ITALIC,
25135            BLOCKQUOTE,
25136            CODE,
25137            HORIZONTAL_RULE,
25138            LINK,
25139            LINK_REFERENCE
25140          ]
25141        };
25142      }
25143      module.exports = markdown;
25144    }
25145  });
25146
25147  
vendor: 1,982 bytes, lines 25147-25228
25147// node_modules/highlight.js/lib/languages/diff.js
25148  var require_diff = __commonJS({
25149    "node_modules/highlight.js/lib/languages/diff.js"(exports, module) {
25150      function diff(hljs2) {
25151        return {
25152          name: "Diff",
25153          aliases: ["patch"],
25154          contains: [
25155            {
25156              className: "meta",
25157              relevance: 10,
25158              variants: [
25159                {
25160                  begin: /^@@ +-\d+,\d+ +\+\d+,\d+ +@@/
25161                },
25162                {
25163                  begin: /^\*\*\* +\d+,\d+ +\*\*\*\*$/
25164                },
25165                {
25166                  begin: /^--- +\d+,\d+ +----$/
25167                }
25168              ]
25169            },
25170            {
25171              className: "comment",
25172              variants: [
25173                {
25174                  begin: /Index: /,
25175                  end: /$/
25176                },
25177                {
25178                  begin: /^index/,
25179                  end: /$/
25180                },
25181                {
25182                  begin: /={3,}/,
25183                  end: /$/
25184                },
25185                {
25186                  begin: /^-{3}/,
25187                  end: /$/
25188                },
25189                {
25190                  begin: /^\*{3} /,
25191                  end: /$/
25192                },
25193                {
25194                  begin: /^\+{3}/,
25195                  end: /$/
25196                },
25197                {
25198                  begin: /^\*{15}$/
25199                },
25200                {
25201                  begin: /^diff --git/,
25202                  end: /$/
25203                }
25204              ]
25205            },
25206            {
25207              className: "addition",
25208              begin: /^\+/,
25209              end: /$/
25210            },
25211            {
25212              className: "deletion",
25213              begin: /^-/,
25214              end: /$/
25215            },
25216            {
25217              className: "addition",
25218              begin: /^!/,
25219              end: /$/
25220            }
25221          ]
25222        };
25223      }
25224      module.exports = diff;
25225    }
25226  });
25227
25228  
vendor: 1,575 bytes, lines 25228-25288
25228// node_modules/highlight.js/lib/languages/json.js
25229  var require_json = __commonJS({
25230    "node_modules/highlight.js/lib/languages/json.js"(exports, module) {
25231      function json(hljs2) {
25232        const LITERALS = {
25233          literal: "true false null"
25234        };
25235        const ALLOWED_COMMENTS = [
25236          hljs2.C_LINE_COMMENT_MODE,
25237          hljs2.C_BLOCK_COMMENT_MODE
25238        ];
25239        const TYPES = [
25240          hljs2.QUOTE_STRING_MODE,
25241          hljs2.C_NUMBER_MODE
25242        ];
25243        const VALUE_CONTAINER = {
25244          end: ",",
25245          endsWithParent: true,
25246          excludeEnd: true,
25247          contains: TYPES,
25248          keywords: LITERALS
25249        };
25250        const OBJECT = {
25251          begin: /\{/,
25252          end: /\}/,
25253          contains: [
25254            {
25255              className: "attr",
25256              begin: /"/,
25257              end: /"/,
25258              contains: [hljs2.BACKSLASH_ESCAPE],
25259              illegal: "\\n"
25260            },
25261            hljs2.inherit(VALUE_CONTAINER, {
25262              begin: /:/
25263            })
25264          ].concat(ALLOWED_COMMENTS),
25265          illegal: "\\S"
25266        };
25267        const ARRAY = {
25268          begin: "\\[",
25269          end: "\\]",
25270          contains: [hljs2.inherit(VALUE_CONTAINER)],
25271          illegal: "\\S"
25272        };
25273        TYPES.push(OBJECT, ARRAY);
25274        ALLOWED_COMMENTS.forEach(function(rule) {
25275          TYPES.push(rule);
25276        });
25277        return {
25278          name: "JSON",
25279          contains: TYPES,
25280          keywords: LITERALS,
25281          illegal: "\\S"
25282        };
25283      }
25284      module.exports = json;
25285    }
25286  });
25287
25288  
vendor: 15,149 bytes, lines 25288-25907
25288// node_modules/highlight.js/lib/languages/less.js
25289  var require_less = __commonJS({
25290    "node_modules/highlight.js/lib/languages/less.js"(exports, module) {
25291      var MODES = (hljs2) => {
25292        return {
25293          IMPORTANT: {
25294            className: "meta",
25295            begin: "!important"
25296          },
25297          HEXCOLOR: {
25298            className: "number",
25299            begin: "#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"
25300          },
25301          ATTRIBUTE_SELECTOR_MODE: {
25302            className: "selector-attr",
25303            begin: /\[/,
25304            end: /\]/,
25305            illegal: "$",
25306            contains: [
25307              hljs2.APOS_STRING_MODE,
25308              hljs2.QUOTE_STRING_MODE
25309            ]
25310          }
25311        };
25312      };
25313      var TAGS = [
25314        "a",
25315        "abbr",
25316        "address",
25317        "article",
25318        "aside",
25319        "audio",
25320        "b",
25321        "blockquote",
25322        "body",
25323        "button",
25324        "canvas",
25325        "caption",
25326        "cite",
25327        "code",
25328        "dd",
25329        "del",
25330        "details",
25331        "dfn",
25332        "div",
25333        "dl",
25334        "dt",
25335        "em",
25336        "fieldset",
25337        "figcaption",
25338        "figure",
25339        "footer",
25340        "form",
25341        "h1",
25342        "h2",
25343        "h3",
25344        "h4",
25345        "h5",
25346        "h6",
25347        "header",
25348        "hgroup",
25349        "html",
25350        "i",
25351        "iframe",
25352        "img",
25353        "input",
25354        "ins",
25355        "kbd",
25356        "label",
25357        "legend",
25358        "li",
25359        "main",
25360        "mark",
25361        "menu",
25362        "nav",
25363        "object",
25364        "ol",
25365        "p",
25366        "q",
25367        "quote",
25368        "samp",
25369        "section",
25370        "span",
25371        "strong",
25372        "summary",
25373        "sup",
25374        "table",
25375        "tbody",
25376        "td",
25377        "textarea",
25378        "tfoot",
25379        "th",
25380        "thead",
25381        "time",
25382        "tr",
25383        "ul",
25384        "var",
25385        "video"
25386      ];
25387      var MEDIA_FEATURES = [
25388        "any-hover",
25389        "any-pointer",
25390        "aspect-ratio",
25391        "color",
25392        "color-gamut",
25393        "color-index",
25394        "device-aspect-ratio",
25395        "device-height",
25396        "device-width",
25397        "display-mode",
25398        "forced-colors",
25399        "grid",
25400        "height",
25401        "hover",
25402        "inverted-colors",
25403        "monochrome",
25404        "orientation",
25405        "overflow-block",
25406        "overflow-inline",
25407        "pointer",
25408        "prefers-color-scheme",
25409        "prefers-contrast",
25410        "prefers-reduced-motion",
25411        "prefers-reduced-transparency",
25412        "resolution",
25413        "scan",
25414        "scripting",
25415        "update",
25416        "width",
25417        "min-width",
25418        "max-width",
25419        "min-height",
25420        "max-height"
25421      ];
25422      var PSEUDO_CLASSES = [
25423        "active",
25424        "any-link",
25425        "blank",
25426        "checked",
25427        "current",
25428        "default",
25429        "defined",
25430        "dir",
25431        "disabled",
25432        "drop",
25433        "empty",
25434        "enabled",
25435        "first",
25436        "first-child",
25437        "first-of-type",
25438        "fullscreen",
25439        "future",
25440        "focus",
25441        "focus-visible",
25442        "focus-within",
25443        "has",
25444        "host",
25445        "host-context",
25446        "hover",
25447        "indeterminate",
25448        "in-range",
25449        "invalid",
25450        "is",
25451        "lang",
25452        "last-child",
25453        "last-of-type",
25454        "left",
25455        "link",
25456        "local-link",
25457        "not",
25458        "nth-child",
25459        "nth-col",
25460        "nth-last-child",
25461        "nth-last-col",
25462        "nth-last-of-type",
25463        "nth-of-type",
25464        "only-child",
25465        "only-of-type",
25466        "optional",
25467        "out-of-range",
25468        "past",
25469        "placeholder-shown",
25470        "read-only",
25471        "read-write",
25472        "required",
25473        "right",
25474        "root",
25475        "scope",
25476        "target",
25477        "target-within",
25478        "user-invalid",
25479        "valid",
25480        "visited",
25481        "where"
25482      ];
25483      var PSEUDO_ELEMENTS = [
25484        "after",
25485        "backdrop",
25486        "before",
25487        "cue",
25488        "cue-region",
25489        "first-letter",
25490        "first-line",
25491        "grammar-error",
25492        "marker",
25493        "part",
25494        "placeholder",
25495        "selection",
25496        "slotted",
25497        "spelling-error"
25498      ];
25499      var ATTRIBUTES = [
25500        "align-content",
25501        "align-items",
25502        "align-self",
25503        "animation",
25504        "animation-delay",
25505        "animation-direction",
25506        "animation-duration",
25507        "animation-fill-mode",
25508        "animation-iteration-count",
25509        "animation-name",
25510        "animation-play-state",
25511        "animation-timing-function",
25512        "auto",
25513        "backface-visibility",
25514        "background",
25515        "background-attachment",
25516        "background-clip",
25517        "background-color",
25518        "background-image",
25519        "background-origin",
25520        "background-position",
25521        "background-repeat",
25522        "background-size",
25523        "border",
25524        "border-bottom",
25525        "border-bottom-color",
25526        "border-bottom-left-radius",
25527        "border-bottom-right-radius",
25528        "border-bottom-style",
25529        "border-bottom-width",
25530        "border-collapse",
25531        "border-color",
25532        "border-image",
25533        "border-image-outset",
25534        "border-image-repeat",
25535        "border-image-slice",
25536        "border-image-source",
25537        "border-image-width",
25538        "border-left",
25539        "border-left-color",
25540        "border-left-style",
25541        "border-left-width",
25542        "border-radius",
25543        "border-right",
25544        "border-right-color",
25545        "border-right-style",
25546        "border-right-width",
25547        "border-spacing",
25548        "border-style",
25549        "border-top",
25550        "border-top-color",
25551        "border-top-left-radius",
25552        "border-top-right-radius",
25553        "border-top-style",
25554        "border-top-width",
25555        "border-width",
25556        "bottom",
25557        "box-decoration-break",
25558        "box-shadow",
25559        "box-sizing",
25560        "break-after",
25561        "break-before",
25562        "break-inside",
25563        "caption-side",
25564        "clear",
25565        "clip",
25566        "clip-path",
25567        "color",
25568        "column-count",
25569        "column-fill",
25570        "column-gap",
25571        "column-rule",
25572        "column-rule-color",
25573        "column-rule-style",
25574        "column-rule-width",
25575        "column-span",
25576        "column-width",
25577        "columns",
25578        "content",
25579        "counter-increment",
25580        "counter-reset",
25581        "cursor",
25582        "direction",
25583        "display",
25584        "empty-cells",
25585        "filter",
25586        "flex",
25587        "flex-basis",
25588        "flex-direction",
25589        "flex-flow",
25590        "flex-grow",
25591        "flex-shrink",
25592        "flex-wrap",
25593        "float",
25594        "font",
25595        "font-display",
25596        "font-family",
25597        "font-feature-settings",
25598        "font-kerning",
25599        "font-language-override",
25600        "font-size",
25601        "font-size-adjust",
25602        "font-smoothing",
25603        "font-stretch",
25604        "font-style",
25605        "font-variant",
25606        "font-variant-ligatures",
25607        "font-variation-settings",
25608        "font-weight",
25609        "height",
25610        "hyphens",
25611        "icon",
25612        "image-orientation",
25613        "image-rendering",
25614        "image-resolution",
25615        "ime-mode",
25616        "inherit",
25617        "initial",
25618        "justify-content",
25619        "left",
25620        "letter-spacing",
25621        "line-height",
25622        "list-style",
25623        "list-style-image",
25624        "list-style-position",
25625        "list-style-type",
25626        "margin",
25627        "margin-bottom",
25628        "margin-left",
25629        "margin-right",
25630        "margin-top",
25631        "marks",
25632        "mask",
25633        "max-height",
25634        "max-width",
25635        "min-height",
25636        "min-width",
25637        "nav-down",
25638        "nav-index",
25639        "nav-left",
25640        "nav-right",
25641        "nav-up",
25642        "none",
25643        "normal",
25644        "object-fit",
25645        "object-position",
25646        "opacity",
25647        "order",
25648        "orphans",
25649        "outline",
25650        "outline-color",
25651        "outline-offset",
25652        "outline-style",
25653        "outline-width",
25654        "overflow",
25655        "overflow-wrap",
25656        "overflow-x",
25657        "overflow-y",
25658        "padding",
25659        "padding-bottom",
25660        "padding-left",
25661        "padding-right",
25662        "padding-top",
25663        "page-break-after",
25664        "page-break-before",
25665        "page-break-inside",
25666        "perspective",
25667        "perspective-origin",
25668        "pointer-events",
25669        "position",
25670        "quotes",
25671        "resize",
25672        "right",
25673        "src",
25674        "tab-size",
25675        "table-layout",
25676        "text-align",
25677        "text-align-last",
25678        "text-decoration",
25679        "text-decoration-color",
25680        "text-decoration-line",
25681        "text-decoration-style",
25682        "text-indent",
25683        "text-overflow",
25684        "text-rendering",
25685        "text-shadow",
25686        "text-transform",
25687        "text-underline-position",
25688        "top",
25689        "transform",
25690        "transform-origin",
25691        "transform-style",
25692        "transition",
25693        "transition-delay",
25694        "transition-duration",
25695        "transition-property",
25696        "transition-timing-function",
25697        "unicode-bidi",
25698        "vertical-align",
25699        "visibility",
25700        "white-space",
25701        "widows",
25702        "width",
25703        "word-break",
25704        "word-spacing",
25705        "word-wrap",
25706        "z-index"
25707      ].reverse();
25708      var PSEUDO_SELECTORS = PSEUDO_CLASSES.concat(PSEUDO_ELEMENTS);
25709      function less(hljs2) {
25710        const modes = MODES(hljs2);
25711        const PSEUDO_SELECTORS$1 = PSEUDO_SELECTORS;
25712        const AT_MODIFIERS = "and or not only";
25713        const IDENT_RE = "[\\w-]+";
25714        const INTERP_IDENT_RE = "(" + IDENT_RE + "|@\\{" + IDENT_RE + "\\})";
25715        const RULES = [];
25716        const VALUE_MODES = [];
25717        const STRING_MODE = function(c) {
25718          return {
25719            className: "string",
25720            begin: "~?" + c + ".*?" + c
25721          };
25722        };
25723        const IDENT_MODE = function(name2, begin, relevance) {
25724          return {
25725            className: name2,
25726            begin,
25727            relevance
25728          };
25729        };
25730        const AT_KEYWORDS = {
25731          $pattern: /[a-z-]+/,
25732          keyword: AT_MODIFIERS,
25733          attribute: MEDIA_FEATURES.join(" ")
25734        };
25735        const PARENS_MODE = {
25736          begin: "\\(",
25737          end: "\\)",
25738          contains: VALUE_MODES,
25739          keywords: AT_KEYWORDS,
25740          relevance: 0
25741        };
25742        VALUE_MODES.push(
25743          hljs2.C_LINE_COMMENT_MODE,
25744          hljs2.C_BLOCK_COMMENT_MODE,
25745          STRING_MODE("'"),
25746          STRING_MODE('"'),
25747          hljs2.CSS_NUMBER_MODE,
25748          {
25749            begin: "(url|data-uri)\\(",
25750            starts: {
25751              className: "string",
25752              end: "[\\)\\n]",
25753              excludeEnd: true
25754            }
25755          },
25756          modes.HEXCOLOR,
25757          PARENS_MODE,
25758          IDENT_MODE("variable", "@@?" + IDENT_RE, 10),
25759          IDENT_MODE("variable", "@\\{" + IDENT_RE + "\\}"),
25760          IDENT_MODE("built_in", "~?`[^`]*?`"),
25761          {
25762            className: "attribute",
25763            begin: IDENT_RE + "\\s*:",
25764            end: ":",
25765            returnBegin: true,
25766            excludeEnd: true
25767          },
25768          modes.IMPORTANT
25769        );
25770        const VALUE_WITH_RULESETS = VALUE_MODES.concat({
25771          begin: /\{/,
25772          end: /\}/,
25773          contains: RULES
25774        });
25775        const MIXIN_GUARD_MODE = {
25776          beginKeywords: "when",
25777          endsWithParent: true,
25778          contains: [
25779            {
25780              beginKeywords: "and not"
25781            }
25782          ].concat(VALUE_MODES)
25783        };
25784        const RULE_MODE = {
25785          begin: INTERP_IDENT_RE + "\\s*:",
25786          returnBegin: true,
25787          end: /[;}]/,
25788          relevance: 0,
25789          contains: [
25790            {
25791              begin: /-(webkit|moz|ms|o)-/
25792            },
25793            {
25794              className: "attribute",
25795              begin: "\\b(" + ATTRIBUTES.join("|") + ")\\b",
25796              end: /(?=:)/,
25797              starts: {
25798                endsWithParent: true,
25799                illegal: "[<=$]",
25800                relevance: 0,
25801                contains: VALUE_MODES
25802              }
25803            }
25804          ]
25805        };
25806        const AT_RULE_MODE = {
25807          className: "keyword",
25808          begin: "@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",
25809          starts: {
25810            end: "[;{}]",
25811            keywords: AT_KEYWORDS,
25812            returnEnd: true,
25813            contains: VALUE_MODES,
25814            relevance: 0
25815          }
25816        };
25817        const VAR_RULE_MODE = {
25818          className: "variable",
25819          variants: [
25820            {
25821              begin: "@" + IDENT_RE + "\\s*:",
25822              relevance: 15
25823            },
25824            {
25825              begin: "@" + IDENT_RE
25826            }
25827          ],
25828          starts: {
25829            end: "[;}]",
25830            returnEnd: true,
25831            contains: VALUE_WITH_RULESETS
25832          }
25833        };
25834        const SELECTOR_MODE = {
25835          variants: [
25836            {
25837              begin: "[\\.#:&\\[>]",
25838              end: "[;{}]"
25839            },
25840            {
25841              begin: INTERP_IDENT_RE,
25842              end: /\{/
25843            }
25844          ],
25845          returnBegin: true,
25846          returnEnd: true,
25847          illegal: `[<='$"]`,
25848          relevance: 0,
25849          contains: [
25850            hljs2.C_LINE_COMMENT_MODE,
25851            hljs2.C_BLOCK_COMMENT_MODE,
25852            MIXIN_GUARD_MODE,
25853            IDENT_MODE("keyword", "all\\b"),
25854            IDENT_MODE("variable", "@\\{" + IDENT_RE + "\\}"),
25855            {
25856              begin: "\\b(" + TAGS.join("|") + ")\\b",
25857              className: "selector-tag"
25858            },
25859            IDENT_MODE("selector-tag", INTERP_IDENT_RE + "%?", 0),
25860            IDENT_MODE("selector-id", "#" + INTERP_IDENT_RE),
25861            IDENT_MODE("selector-class", "\\." + INTERP_IDENT_RE, 0),
25862            IDENT_MODE("selector-tag", "&", 0),
25863            modes.ATTRIBUTE_SELECTOR_MODE,
25864            {
25865              className: "selector-pseudo",
25866              begin: ":(" + PSEUDO_CLASSES.join("|") + ")"
25867            },
25868            {
25869              className: "selector-pseudo",
25870              begin: "::(" + PSEUDO_ELEMENTS.join("|") + ")"
25871            },
25872            {
25873              begin: "\\(",
25874              end: "\\)",
25875              contains: VALUE_WITH_RULESETS
25876            },
25877            {
25878              begin: "!important"
25879            }
25880          ]
25881        };
25882        const PSEUDO_SELECTOR_MODE = {
25883          begin: IDENT_RE + `:(:)?(${PSEUDO_SELECTORS$1.join("|")})`,
25884          returnBegin: true,
25885          contains: [SELECTOR_MODE]
25886        };
25887        RULES.push(
25888          hljs2.C_LINE_COMMENT_MODE,
25889          hljs2.C_BLOCK_COMMENT_MODE,
25890          AT_RULE_MODE,
25891          VAR_RULE_MODE,
25892          PSEUDO_SELECTOR_MODE,
25893          RULE_MODE,
25894          SELECTOR_MODE
25895        );
25896        return {
25897          name: "Less",
25898          case_insensitive: true,
25899          illegal: `[=>'/<($"]`,
25900          contains: RULES
25901        };
25902      }
25903      module.exports = less;
25904    }
25905  });
25906
25907  
vendor: 3,461 bytes, lines 25907-26035
25907// node_modules/highlight.js/lib/languages/nginx.js
25908  var require_nginx = __commonJS({
25909    "node_modules/highlight.js/lib/languages/nginx.js"(exports, module) {
25910      function nginx(hljs2) {
25911        const VAR = {
25912          className: "variable",
25913          variants: [
25914            {
25915              begin: /\$\d+/
25916            },
25917            {
25918              begin: /\$\{/,
25919              end: /\}/
25920            },
25921            {
25922              begin: /[$@]/ + hljs2.UNDERSCORE_IDENT_RE
25923            }
25924          ]
25925        };
25926        const DEFAULT = {
25927          endsWithParent: true,
25928          keywords: {
25929            $pattern: "[a-z/_]+",
25930            literal: "on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"
25931          },
25932          relevance: 0,
25933          illegal: "=>",
25934          contains: [
25935            hljs2.HASH_COMMENT_MODE,
25936            {
25937              className: "string",
25938              contains: [
25939                hljs2.BACKSLASH_ESCAPE,
25940                VAR
25941              ],
25942              variants: [
25943                {
25944                  begin: /"/,
25945                  end: /"/
25946                },
25947                {
25948                  begin: /'/,
25949                  end: /'/
25950                }
25951              ]
25952            },
25953            {
25954              begin: "([a-z]+):/",
25955              end: "\\s",
25956              endsWithParent: true,
25957              excludeEnd: true,
25958              contains: [VAR]
25959            },
25960            {
25961              className: "regexp",
25962              contains: [
25963                hljs2.BACKSLASH_ESCAPE,
25964                VAR
25965              ],
25966              variants: [
25967                {
25968                  begin: "\\s\\^",
25969                  end: "\\s|\\{|;",
25970                  returnEnd: true
25971                },
25972                {
25973                  begin: "~\\*?\\s+",
25974                  end: "\\s|\\{|;",
25975                  returnEnd: true
25976                },
25977                {
25978                  begin: "\\*(\\.[a-z\\-]+)+"
25979                },
25980                {
25981                  begin: "([a-z\\-]+\\.)+\\*"
25982                }
25983              ]
25984            },
25985            {
25986              className: "number",
25987              begin: "\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"
25988            },
25989            {
25990              className: "number",
25991              begin: "\\b\\d+[kKmMgGdshdwy]*\\b",
25992              relevance: 0
25993            },
25994            VAR
25995          ]
25996        };
25997        return {
25998          name: "Nginx config",
25999          aliases: ["nginxconf"],
26000          contains: [
26001            hljs2.HASH_COMMENT_MODE,
26002            {
26003              begin: hljs2.UNDERSCORE_IDENT_RE + "\\s+\\{",
26004              returnBegin: true,
26005              end: /\{/,
26006              contains: [
26007                {
26008                  className: "section",
26009                  begin: hljs2.UNDERSCORE_IDENT_RE
26010                }
26011              ],
26012              relevance: 0
26013            },
26014            {
26015              begin: hljs2.UNDERSCORE_IDENT_RE + "\\s",
26016              end: ";|\\{",
26017              returnBegin: true,
26018              contains: [
26019                {
26020                  className: "attribute",
26021                  begin: hljs2.UNDERSCORE_IDENT_RE,
26022                  starts: DEFAULT
26023                }
26024              ],
26025              relevance: 0
26026            }
26027          ],
26028          illegal: "[^\\s\\}]"
26029        };
26030      }
26031      module.exports = nginx;
26032    }
26033  });
26034
26035  
vendor: 13,554 bytes, lines 26035-26559
26035// node_modules/highlight.js/lib/languages/scss.js
26036  var require_scss = __commonJS({
26037    "node_modules/highlight.js/lib/languages/scss.js"(exports, module) {
26038      var MODES = (hljs2) => {
26039        return {
26040          IMPORTANT: {
26041            className: "meta",
26042            begin: "!important"
26043          },
26044          HEXCOLOR: {
26045            className: "number",
26046            begin: "#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})"
26047          },
26048          ATTRIBUTE_SELECTOR_MODE: {
26049            className: "selector-attr",
26050            begin: /\[/,
26051            end: /\]/,
26052            illegal: "$",
26053            contains: [
26054              hljs2.APOS_STRING_MODE,
26055              hljs2.QUOTE_STRING_MODE
26056            ]
26057          }
26058        };
26059      };
26060      var TAGS = [
26061        "a",
26062        "abbr",
26063        "address",
26064        "article",
26065        "aside",
26066        "audio",
26067        "b",
26068        "blockquote",
26069        "body",
26070        "button",
26071        "canvas",
26072        "caption",
26073        "cite",
26074        "code",
26075        "dd",
26076        "del",
26077        "details",
26078        "dfn",
26079        "div",
26080        "dl",
26081        "dt",
26082        "em",
26083        "fieldset",
26084        "figcaption",
26085        "figure",
26086        "footer",
26087        "form",
26088        "h1",
26089        "h2",
26090        "h3",
26091        "h4",
26092        "h5",
26093        "h6",
26094        "header",
26095        "hgroup",
26096        "html",
26097        "i",
26098        "iframe",
26099        "img",
26100        "input",
26101        "ins",
26102        "kbd",
26103        "label",
26104        "legend",
26105        "li",
26106        "main",
26107        "mark",
26108        "menu",
26109        "nav",
26110        "object",
26111        "ol",
26112        "p",
26113        "q",
26114        "quote",
26115        "samp",
26116        "section",
26117        "span",
26118        "strong",
26119        "summary",
26120        "sup",
26121        "table",
26122        "tbody",
26123        "td",
26124        "textarea",
26125        "tfoot",
26126        "th",
26127        "thead",
26128        "time",
26129        "tr",
26130        "ul",
26131        "var",
26132        "video"
26133      ];
26134      var MEDIA_FEATURES = [
26135        "any-hover",
26136        "any-pointer",
26137        "aspect-ratio",
26138        "color",
26139        "color-gamut",
26140        "color-index",
26141        "device-aspect-ratio",
26142        "device-height",
26143        "device-width",
26144        "display-mode",
26145        "forced-colors",
26146        "grid",
26147        "height",
26148        "hover",
26149        "inverted-colors",
26150        "monochrome",
26151        "orientation",
26152        "overflow-block",
26153        "overflow-inline",
26154        "pointer",
26155        "prefers-color-scheme",
26156        "prefers-contrast",
26157        "prefers-reduced-motion",
26158        "prefers-reduced-transparency",
26159        "resolution",
26160        "scan",
26161        "scripting",
26162        "update",
26163        "width",
26164        "min-width",
26165        "max-width",
26166        "min-height",
26167        "max-height"
26168      ];
26169      var PSEUDO_CLASSES = [
26170        "active",
26171        "any-link",
26172        "blank",
26173        "checked",
26174        "current",
26175        "default",
26176        "defined",
26177        "dir",
26178        "disabled",
26179        "drop",
26180        "empty",
26181        "enabled",
26182        "first",
26183        "first-child",
26184        "first-of-type",
26185        "fullscreen",
26186        "future",
26187        "focus",
26188        "focus-visible",
26189        "focus-within",
26190        "has",
26191        "host",
26192        "host-context",
26193        "hover",
26194        "indeterminate",
26195        "in-range",
26196        "invalid",
26197        "is",
26198        "lang",
26199        "last-child",
26200        "last-of-type",
26201        "left",
26202        "link",
26203        "local-link",
26204        "not",
26205        "nth-child",
26206        "nth-col",
26207        "nth-last-child",
26208        "nth-last-col",
26209        "nth-last-of-type",
26210        "nth-of-type",
26211        "only-child",
26212        "only-of-type",
26213        "optional",
26214        "out-of-range",
26215        "past",
26216        "placeholder-shown",
26217        "read-only",
26218        "read-write",
26219        "required",
26220        "right",
26221        "root",
26222        "scope",
26223        "target",
26224        "target-within",
26225        "user-invalid",
26226        "valid",
26227        "visited",
26228        "where"
26229      ];
26230      var PSEUDO_ELEMENTS = [
26231        "after",
26232        "backdrop",
26233        "before",
26234        "cue",
26235        "cue-region",
26236        "first-letter",
26237        "first-line",
26238        "grammar-error",
26239        "marker",
26240        "part",
26241        "placeholder",
26242        "selection",
26243        "slotted",
26244        "spelling-error"
26245      ];
26246      var ATTRIBUTES = [
26247        "align-content",
26248        "align-items",
26249        "align-self",
26250        "animation",
26251        "animation-delay",
26252        "animation-direction",
26253        "animation-duration",
26254        "animation-fill-mode",
26255        "animation-iteration-count",
26256        "animation-name",
26257        "animation-play-state",
26258        "animation-timing-function",
26259        "auto",
26260        "backface-visibility",
26261        "background",
26262        "background-attachment",
26263        "background-clip",
26264        "background-color",
26265        "background-image",
26266        "background-origin",
26267        "background-position",
26268        "background-repeat",
26269        "background-size",
26270        "border",
26271        "border-bottom",
26272        "border-bottom-color",
26273        "border-bottom-left-radius",
26274        "border-bottom-right-radius",
26275        "border-bottom-style",
26276        "border-bottom-width",
26277        "border-collapse",
26278        "border-color",
26279        "border-image",
26280        "border-image-outset",
26281        "border-image-repeat",
26282        "border-image-slice",
26283        "border-image-source",
26284        "border-image-width",
26285        "border-left",
26286        "border-left-color",
26287        "border-left-style",
26288        "border-left-width",
26289        "border-radius",
26290        "border-right",
26291        "border-right-color",
26292        "border-right-style",
26293        "border-right-width",
26294        "border-spacing",
26295        "border-style",
26296        "border-top",
26297        "border-top-color",
26298        "border-top-left-radius",
26299        "border-top-right-radius",
26300        "border-top-style",
26301        "border-top-width",
26302        "border-width",
26303        "bottom",
26304        "box-decoration-break",
26305        "box-shadow",
26306        "box-sizing",
26307        "break-after",
26308        "break-before",
26309        "break-inside",
26310        "caption-side",
26311        "clear",
26312        "clip",
26313        "clip-path",
26314        "color",
26315        "column-count",
26316        "column-fill",
26317        "column-gap",
26318        "column-rule",
26319        "column-rule-color",
26320        "column-rule-style",
26321        "column-rule-width",
26322        "column-span",
26323        "column-width",
26324        "columns",
26325        "content",
26326        "counter-increment",
26327        "counter-reset",
26328        "cursor",
26329        "direction",
26330        "display",
26331        "empty-cells",
26332        "filter",
26333        "flex",
26334        "flex-basis",
26335        "flex-direction",
26336        "flex-flow",
26337        "flex-grow",
26338        "flex-shrink",
26339        "flex-wrap",
26340        "float",
26341        "font",
26342        "font-display",
26343        "font-family",
26344        "font-feature-settings",
26345        "font-kerning",
26346        "font-language-override",
26347        "font-size",
26348        "font-size-adjust",
26349        "font-smoothing",
26350        "font-stretch",
26351        "font-style",
26352        "font-variant",
26353        "font-variant-ligatures",
26354        "font-variation-settings",
26355        "font-weight",
26356        "height",
26357        "hyphens",
26358        "icon",
26359        "image-orientation",
26360        "image-rendering",
26361        "image-resolution",
26362        "ime-mode",
26363        "inherit",
26364        "initial",
26365        "justify-content",
26366        "left",
26367        "letter-spacing",
26368        "line-height",
26369        "list-style",
26370        "list-style-image",
26371        "list-style-position",
26372        "list-style-type",
26373        "margin",
26374        "margin-bottom",
26375        "margin-left",
26376        "margin-right",
26377        "margin-top",
26378        "marks",
26379        "mask",
26380        "max-height",
26381        "max-width",
26382        "min-height",
26383        "min-width",
26384        "nav-down",
26385        "nav-index",
26386        "nav-left",
26387        "nav-right",
26388        "nav-up",
26389        "none",
26390        "normal",
26391        "object-fit",
26392        "object-position",
26393        "opacity",
26394        "order",
26395        "orphans",
26396        "outline",
26397        "outline-color",
26398        "outline-offset",
26399        "outline-style",
26400        "outline-width",
26401        "overflow",
26402        "overflow-wrap",
26403        "overflow-x",
26404        "overflow-y",
26405        "padding",
26406        "padding-bottom",
26407        "padding-left",
26408        "padding-right",
26409        "padding-top",
26410        "page-break-after",
26411        "page-break-before",
26412        "page-break-inside",
26413        "perspective",
26414        "perspective-origin",
26415        "pointer-events",
26416        "position",
26417        "quotes",
26418        "resize",
26419        "right",
26420        "src",
26421        "tab-size",
26422        "table-layout",
26423        "text-align",
26424        "text-align-last",
26425        "text-decoration",
26426        "text-decoration-color",
26427        "text-decoration-line",
26428        "text-decoration-style",
26429        "text-indent",
26430        "text-overflow",
26431        "text-rendering",
26432        "text-shadow",
26433        "text-transform",
26434        "text-underline-position",
26435        "top",
26436        "transform",
26437        "transform-origin",
26438        "transform-style",
26439        "transition",
26440        "transition-delay",
26441        "transition-duration",
26442        "transition-property",
26443        "transition-timing-function",
26444        "unicode-bidi",
26445        "vertical-align",
26446        "visibility",
26447        "white-space",
26448        "widows",
26449        "width",
26450        "word-break",
26451        "word-spacing",
26452        "word-wrap",
26453        "z-index"
26454      ].reverse();
26455      function scss(hljs2) {
26456        const modes = MODES(hljs2);
26457        const PSEUDO_ELEMENTS$1 = PSEUDO_ELEMENTS;
26458        const PSEUDO_CLASSES$1 = PSEUDO_CLASSES;
26459        const AT_IDENTIFIER = "@[a-z-]+";
26460        const AT_MODIFIERS = "and or not only";
26461        const IDENT_RE = "[a-zA-Z-][a-zA-Z0-9_-]*";
26462        const VARIABLE = {
26463          className: "variable",
26464          begin: "(\\$" + IDENT_RE + ")\\b"
26465        };
26466        return {
26467          name: "SCSS",
26468          case_insensitive: true,
26469          illegal: "[=/|']",
26470          contains: [
26471            hljs2.C_LINE_COMMENT_MODE,
26472            hljs2.C_BLOCK_COMMENT_MODE,
26473            {
26474              className: "selector-id",
26475              begin: "#[A-Za-z0-9_-]+",
26476              relevance: 0
26477            },
26478            {
26479              className: "selector-class",
26480              begin: "\\.[A-Za-z0-9_-]+",
26481              relevance: 0
26482            },
26483            modes.ATTRIBUTE_SELECTOR_MODE,
26484            {
26485              className: "selector-tag",
26486              begin: "\\b(" + TAGS.join("|") + ")\\b",
26487              relevance: 0
26488            },
26489            {
26490              className: "selector-pseudo",
26491              begin: ":(" + PSEUDO_CLASSES$1.join("|") + ")"
26492            },
26493            {
26494              className: "selector-pseudo",
26495              begin: "::(" + PSEUDO_ELEMENTS$1.join("|") + ")"
26496            },
26497            VARIABLE,
26498            {
26499              begin: /\(/,
26500              end: /\)/,
26501              contains: [hljs2.CSS_NUMBER_MODE]
26502            },
26503            {
26504              className: "attribute",
26505              begin: "\\b(" + ATTRIBUTES.join("|") + ")\\b"
26506            },
26507            {
26508              begin: "\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"
26509            },
26510            {
26511              begin: ":",
26512              end: ";",
26513              contains: [
26514                VARIABLE,
26515                modes.HEXCOLOR,
26516                hljs2.CSS_NUMBER_MODE,
26517                hljs2.QUOTE_STRING_MODE,
26518                hljs2.APOS_STRING_MODE,
26519                modes.IMPORTANT
26520              ]
26521            },
26522            {
26523              begin: "@(page|font-face)",
26524              lexemes: AT_IDENTIFIER,
26525              keywords: "@page @font-face"
26526            },
26527            {
26528              begin: "@",
26529              end: "[{;]",
26530              returnBegin: true,
26531              keywords: {
26532                $pattern: /[a-z-]+/,
26533                keyword: AT_MODIFIERS,
26534                attribute: MEDIA_FEATURES.join(" ")
26535              },
26536              contains: [
26537                {
26538                  begin: AT_IDENTIFIER,
26539                  className: "keyword"
26540                },
26541                {
26542                  begin: /[a-z-]+(?=:)/,
26543                  className: "attribute"
26544                },
26545                VARIABLE,
26546                hljs2.QUOTE_STRING_MODE,
26547                hljs2.APOS_STRING_MODE,
26548                modes.HEXCOLOR,
26549                hljs2.CSS_NUMBER_MODE
26550              ]
26551            }
26552          ]
26553        };
26554      }
26555      module.exports = scss;
26556    }
26557  });
26558
26559  
vendor: 601 bytes, lines 26559-26582
26559// node_modules/highlight.js/lib/languages/shell.js
26560  var require_shell = __commonJS({
26561    "node_modules/highlight.js/lib/languages/shell.js"(exports, module) {
26562      function shell(hljs2) {
26563        return {
26564          name: "Shell Session",
26565          aliases: ["console"],
26566          contains: [
26567            {
26568              className: "meta",
26569              begin: /^\s{0,3}[/~\w\d[\]()@-]*[>%$#]/,
26570              starts: {
26571                end: /[^\\](?=\s*$)/,
26572                subLanguage: "bash"
26573              }
26574            }
26575          ]
26576        };
26577      }
26578      module.exports = shell;
26579    }
26580  });
26581
26582  
vendor: 14,769 bytes, lines 26582-27231
26582// node_modules/highlight.js/lib/languages/sql.js
26583  var require_sql = __commonJS({
26584    "node_modules/highlight.js/lib/languages/sql.js"(exports, module) {
26585      function source(re2) {
26586        if (!re2)
26587          return null;
26588        if (typeof re2 === "string")
26589          return re2;
26590        return re2.source;
26591      }
26592      function concat(...args) {
26593        const joined = args.map((x) => source(x)).join("");
26594        return joined;
26595      }
26596      function either(...args) {
26597        const joined = "(" + args.map((x) => source(x)).join("|") + ")";
26598        return joined;
26599      }
26600      function sql(hljs2) {
26601        const COMMENT_MODE = hljs2.COMMENT("--", "$");
26602        const STRING = {
26603          className: "string",
26604          variants: [
26605            {
26606              begin: /'/,
26607              end: /'/,
26608              contains: [
26609                { begin: /''/ }
26610              ]
26611            }
26612          ]
26613        };
26614        const QUOTED_IDENTIFIER = {
26615          begin: /"/,
26616          end: /"/,
26617          contains: [{ begin: /""/ }]
26618        };
26619        const LITERALS = [
26620          "true",
26621          "false",
26622          "unknown"
26623        ];
26624        const MULTI_WORD_TYPES = [
26625          "double precision",
26626          "large object",
26627          "with timezone",
26628          "without timezone"
26629        ];
26630        const TYPES = [
26631          "bigint",
26632          "binary",
26633          "blob",
26634          "boolean",
26635          "char",
26636          "character",
26637          "clob",
26638          "date",
26639          "dec",
26640          "decfloat",
26641          "decimal",
26642          "float",
26643          "int",
26644          "integer",
26645          "interval",
26646          "nchar",
26647          "nclob",
26648          "national",
26649          "numeric",
26650          "real",
26651          "row",
26652          "smallint",
26653          "time",
26654          "timestamp",
26655          "varchar",
26656          "varying",
26657          "varbinary"
26658        ];
26659        const NON_RESERVED_WORDS = [
26660          "add",
26661          "asc",
26662          "collation",
26663          "desc",
26664          "final",
26665          "first",
26666          "last",
26667          "view"
26668        ];
26669        const RESERVED_WORDS = [
26670          "abs",
26671          "acos",
26672          "all",
26673          "allocate",
26674          "alter",
26675          "and",
26676          "any",
26677          "are",
26678          "array",
26679          "array_agg",
26680          "array_max_cardinality",
26681          "as",
26682          "asensitive",
26683          "asin",
26684          "asymmetric",
26685          "at",
26686          "atan",
26687          "atomic",
26688          "authorization",
26689          "avg",
26690          "begin",
26691          "begin_frame",
26692          "begin_partition",
26693          "between",
26694          "bigint",
26695          "binary",
26696          "blob",
26697          "boolean",
26698          "both",
26699          "by",
26700          "call",
26701          "called",
26702          "cardinality",
26703          "cascaded",
26704          "case",
26705          "cast",
26706          "ceil",
26707          "ceiling",
26708          "char",
26709          "char_length",
26710          "character",
26711          "character_length",
26712          "check",
26713          "classifier",
26714          "clob",
26715          "close",
26716          "coalesce",
26717          "collate",
26718          "collect",
26719          "column",
26720          "commit",
26721          "condition",
26722          "connect",
26723          "constraint",
26724          "contains",
26725          "convert",
26726          "copy",
26727          "corr",
26728          "corresponding",
26729          "cos",
26730          "cosh",
26731          "count",
26732          "covar_pop",
26733          "covar_samp",
26734          "create",
26735          "cross",
26736          "cube",
26737          "cume_dist",
26738          "current",
26739          "current_catalog",
26740          "current_date",
26741          "current_default_transform_group",
26742          "current_path",
26743          "current_role",
26744          "current_row",
26745          "current_schema",
26746          "current_time",
26747          "current_timestamp",
26748          "current_path",
26749          "current_role",
26750          "current_transform_group_for_type",
26751          "current_user",
26752          "cursor",
26753          "cycle",
26754          "date",
26755          "day",
26756          "deallocate",
26757          "dec",
26758          "decimal",
26759          "decfloat",
26760          "declare",
26761          "default",
26762          "define",
26763          "delete",
26764          "dense_rank",
26765          "deref",
26766          "describe",
26767          "deterministic",
26768          "disconnect",
26769          "distinct",
26770          "double",
26771          "drop",
26772          "dynamic",
26773          "each",
26774          "element",
26775          "else",
26776          "empty",
26777          "end",
26778          "end_frame",
26779          "end_partition",
26780          "end-exec",
26781          "equals",
26782          "escape",
26783          "every",
26784          "except",
26785          "exec",
26786          "execute",
26787          "exists",
26788          "exp",
26789          "external",
26790          "extract",
26791          "false",
26792          "fetch",
26793          "filter",
26794          "first_value",
26795          "float",
26796          "floor",
26797          "for",
26798          "foreign",
26799          "frame_row",
26800          "free",
26801          "from",
26802          "full",
26803          "function",
26804          "fusion",
26805          "get",
26806          "global",
26807          "grant",
26808          "group",
26809          "grouping",
26810          "groups",
26811          "having",
26812          "hold",
26813          "hour",
26814          "identity",
26815          "in",
26816          "indicator",
26817          "initial",
26818          "inner",
26819          "inout",
26820          "insensitive",
26821          "insert",
26822          "int",
26823          "integer",
26824          "intersect",
26825          "intersection",
26826          "interval",
26827          "into",
26828          "is",
26829          "join",
26830          "json_array",
26831          "json_arrayagg",
26832          "json_exists",
26833          "json_object",
26834          "json_objectagg",
26835          "json_query",
26836          "json_table",
26837          "json_table_primitive",
26838          "json_value",
26839          "lag",
26840          "language",
26841          "large",
26842          "last_value",
26843          "lateral",
26844          "lead",
26845          "leading",
26846          "left",
26847          "like",
26848          "like_regex",
26849          "listagg",
26850          "ln",
26851          "local",
26852          "localtime",
26853          "localtimestamp",
26854          "log",
26855          "log10",
26856          "lower",
26857          "match",
26858          "match_number",
26859          "match_recognize",
26860          "matches",
26861          "max",
26862          "member",
26863          "merge",
26864          "method",
26865          "min",
26866          "minute",
26867          "mod",
26868          "modifies",
26869          "module",
26870          "month",
26871          "multiset",
26872          "national",
26873          "natural",
26874          "nchar",
26875          "nclob",
26876          "new",
26877          "no",
26878          "none",
26879          "normalize",
26880          "not",
26881          "nth_value",
26882          "ntile",
26883          "null",
26884          "nullif",
26885          "numeric",
26886          "octet_length",
26887          "occurrences_regex",
26888          "of",
26889          "offset",
26890          "old",
26891          "omit",
26892          "on",
26893          "one",
26894          "only",
26895          "open",
26896          "or",
26897          "order",
26898          "out",
26899          "outer",
26900          "over",
26901          "overlaps",
26902          "overlay",
26903          "parameter",
26904          "partition",
26905          "pattern",
26906          "per",
26907          "percent",
26908          "percent_rank",
26909          "percentile_cont",
26910          "percentile_disc",
26911          "period",
26912          "portion",
26913          "position",
26914          "position_regex",
26915          "power",
26916          "precedes",
26917          "precision",
26918          "prepare",
26919          "primary",
26920          "procedure",
26921          "ptf",
26922          "range",
26923          "rank",
26924          "reads",
26925          "real",
26926          "recursive",
26927          "ref",
26928          "references",
26929          "referencing",
26930          "regr_avgx",
26931          "regr_avgy",
26932          "regr_count",
26933          "regr_intercept",
26934          "regr_r2",
26935          "regr_slope",
26936          "regr_sxx",
26937          "regr_sxy",
26938          "regr_syy",
26939          "release",
26940          "result",
26941          "return",
26942          "returns",
26943          "revoke",
26944          "right",
26945          "rollback",
26946          "rollup",
26947          "row",
26948          "row_number",
26949          "rows",
26950          "running",
26951          "savepoint",
26952          "scope",
26953          "scroll",
26954          "search",
26955          "second",
26956          "seek",
26957          "select",
26958          "sensitive",
26959          "session_user",
26960          "set",
26961          "show",
26962          "similar",
26963          "sin",
26964          "sinh",
26965          "skip",
26966          "smallint",
26967          "some",
26968          "specific",
26969          "specifictype",
26970          "sql",
26971          "sqlexception",
26972          "sqlstate",
26973          "sqlwarning",
26974          "sqrt",
26975          "start",
26976          "static",
26977          "stddev_pop",
26978          "stddev_samp",
26979          "submultiset",
26980          "subset",
26981          "substring",
26982          "substring_regex",
26983          "succeeds",
26984          "sum",
26985          "symmetric",
26986          "system",
26987          "system_time",
26988          "system_user",
26989          "table",
26990          "tablesample",
26991          "tan",
26992          "tanh",
26993          "then",
26994          "time",
26995          "timestamp",
26996          "timezone_hour",
26997          "timezone_minute",
26998          "to",
26999          "trailing",
27000          "translate",
27001          "translate_regex",
27002          "translation",
27003          "treat",
27004          "trigger",
27005          "trim",
27006          "trim_array",
27007          "true",
27008          "truncate",
27009          "uescape",
27010          "union",
27011          "unique",
27012          "unknown",
27013          "unnest",
27014          "update   ",
27015          "upper",
27016          "user",
27017          "using",
27018          "value",
27019          "values",
27020          "value_of",
27021          "var_pop",
27022          "var_samp",
27023          "varbinary",
27024          "varchar",
27025          "varying",
27026          "versioning",
27027          "when",
27028          "whenever",
27029          "where",
27030          "width_bucket",
27031          "window",
27032          "with",
27033          "within",
27034          "without",
27035          "year"
27036        ];
27037        const RESERVED_FUNCTIONS = [
27038          "abs",
27039          "acos",
27040          "array_agg",
27041          "asin",
27042          "atan",
27043          "avg",
27044          "cast",
27045          "ceil",
27046          "ceiling",
27047          "coalesce",
27048          "corr",
27049          "cos",
27050          "cosh",
27051          "count",
27052          "covar_pop",
27053          "covar_samp",
27054          "cume_dist",
27055          "dense_rank",
27056          "deref",
27057          "element",
27058          "exp",
27059          "extract",
27060          "first_value",
27061          "floor",
27062          "json_array",
27063          "json_arrayagg",
27064          "json_exists",
27065          "json_object",
27066          "json_objectagg",
27067          "json_query",
27068          "json_table",
27069          "json_table_primitive",
27070          "json_value",
27071          "lag",
27072          "last_value",
27073          "lead",
27074          "listagg",
27075          "ln",
27076          "log",
27077          "log10",
27078          "lower",
27079          "max",
27080          "min",
27081          "mod",
27082          "nth_value",
27083          "ntile",
27084          "nullif",
27085          "percent_rank",
27086          "percentile_cont",
27087          "percentile_disc",
27088          "position",
27089          "position_regex",
27090          "power",
27091          "rank",
27092          "regr_avgx",
27093          "regr_avgy",
27094          "regr_count",
27095          "regr_intercept",
27096          "regr_r2",
27097          "regr_slope",
27098          "regr_sxx",
27099          "regr_sxy",
27100          "regr_syy",
27101          "row_number",
27102          "sin",
27103          "sinh",
27104          "sqrt",
27105          "stddev_pop",
27106          "stddev_samp",
27107          "substring",
27108          "substring_regex",
27109          "sum",
27110          "tan",
27111          "tanh",
27112          "translate",
27113          "translate_regex",
27114          "treat",
27115          "trim",
27116          "trim_array",
27117          "unnest",
27118          "upper",
27119          "value_of",
27120          "var_pop",
27121          "var_samp",
27122          "width_bucket"
27123        ];
27124        const POSSIBLE_WITHOUT_PARENS = [
27125          "current_catalog",
27126          "current_date",
27127          "current_default_transform_group",
27128          "current_path",
27129          "current_role",
27130          "current_schema",
27131          "current_transform_group_for_type",
27132          "current_user",
27133          "session_user",
27134          "system_time",
27135          "system_user",
27136          "current_time",
27137          "localtime",
27138          "current_timestamp",
27139          "localtimestamp"
27140        ];
27141        const COMBOS = [
27142          "create table",
27143          "insert into",
27144          "primary key",
27145          "foreign key",
27146          "not null",
27147          "alter table",
27148          "add constraint",
27149          "grouping sets",
27150          "on overflow",
27151          "character set",
27152          "respect nulls",
27153          "ignore nulls",
27154          "nulls first",
27155          "nulls last",
27156          "depth first",
27157          "breadth first"
27158        ];
27159        const FUNCTIONS = RESERVED_FUNCTIONS;
27160        const KEYWORDS = [...RESERVED_WORDS, ...NON_RESERVED_WORDS].filter((keyword) => {
27161          return !RESERVED_FUNCTIONS.includes(keyword);
27162        });
27163        const VARIABLE = {
27164          className: "variable",
27165          begin: /@[a-z0-9]+/
27166        };
27167        const OPERATOR = {
27168          className: "operator",
27169          begin: /[-+*/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?/,
27170          relevance: 0
27171        };
27172        const FUNCTION_CALL = {
27173          begin: concat(/\b/, either(...FUNCTIONS), /\s*\(/),
27174          keywords: {
27175            built_in: FUNCTIONS
27176          }
27177        };
27178        function reduceRelevancy(list, { exceptions, when } = {}) {
27179          const qualifyFn = when;
27180          exceptions = exceptions || [];
27181          return list.map((item) => {
27182            if (item.match(/\|\d+$/) || exceptions.includes(item)) {
27183              return item;
27184            } else if (qualifyFn(item)) {
27185              return `${item}|0`;
27186            } else {
27187              return item;
27188            }
27189          });
27190        }
27191        return {
27192          name: "SQL",
27193          case_insensitive: true,
27194          illegal: /[{}]|<\//,
27195          keywords: {
27196            $pattern: /\b[\w\.]+/,
27197            keyword: reduceRelevancy(KEYWORDS, { when: (x) => x.length < 3 }),
27198            literal: LITERALS,
27199            type: TYPES,
27200            built_in: POSSIBLE_WITHOUT_PARENS
27201          },
27202          contains: [
27203            {
27204              begin: either(...COMBOS),
27205              keywords: {
27206                $pattern: /[\w\.]+/,
27207                keyword: KEYWORDS.concat(COMBOS),
27208                literal: LITERALS,
27209                type: TYPES
27210              }
27211            },
27212            {
27213              className: "type",
27214              begin: either(...MULTI_WORD_TYPES)
27215            },
27216            FUNCTION_CALL,
27217            VARIABLE,
27218            STRING,
27219            QUOTED_IDENTIFIER,
27220            hljs2.C_NUMBER_MODE,
27221            hljs2.C_BLOCK_COMMENT_MODE,
27222            COMMENT_MODE,
27223            OPERATOR
27224          ]
27225        };
27226      }
27227      module.exports = sql;
27228    }
27229  });
27230
27231  
27231// frappe/website/js/syntax_highlight.js
27232  var require_syntax_highlight = __commonJS({
27233    "frappe/website/js/syntax_highlight.js"(exports, module) {
27234      var hljs2 = require_core();
27235      hljs2.registerLanguage("javascript", require_javascript());
27236      hljs2.registerLanguage("python", require_python());
27237      hljs2.registerLanguage("xml", require_xml());
27238      hljs2.registerLanguage("django", require_django());
27239      hljs2.registerLanguage("bash", require_bash());
27240      hljs2.registerLanguage("css", require_css());
27241      hljs2.registerLanguage("markdown", require_markdown());
27242      hljs2.registerLanguage("diff", require_diff());
27243      hljs2.registerLanguage("json", require_json());
27244      hljs2.registerLanguage("less", require_less());
27245      hljs2.registerLanguage("nginx", require_nginx());
27246      hljs2.registerLanguage("scss", require_scss());
27247      hljs2.registerLanguage("shell", require_shell());
27248      hljs2.registerLanguage("sql", require_sql());
27249      module.exports = hljs2;
27250    }
27251  });
27252
27253  
27253// frappe/public/js/jquery-bootstrap.js
27254  var import_jquery = __toESM(require_jquery());
27255  var import_alert = __toESM(require_alert());
27256  var import_button = __toESM(require_button());
27257  var import_carousel = __toESM(require_carousel());
27258  var import_collapse = __toESM(require_collapse());
27259  var import_dropdown = __toESM(require_dropdown());
27260  var import_modal = __toESM(require_modal());
27261  var import_popover = __toESM(require_popover());
27262  var import_scrollspy = __toESM(require_scrollspy());
27263  var import_tab = __toESM(require_tab());
27264  var import_toast = __toESM(require_toast());
27265  var import_tooltip = __toESM(require_tooltip());
27266  var import_util = __toESM(require_util());
27267  window.jQuery = import_jquery.default;
27268  window.$ = import_jquery.default;
27269
27270  
27270// frappe/public/js/lib/moment.js
27271  var import_moment_timezone_with_data_10_year_range_min = __toESM(require_moment_timezone_with_data_10_year_range_min());
27272  window.moment = import_moment_timezone_with_data_10_year_range_min.default;
27273
27274  
27274// frappe/public/js/libs.bundle.js
27275  var import_leaflet = __toESM(require_leaflet());
27276
27277  
27277// frappe/public/js/lib/leaflet_easy_button/easy-button.js
27278  (function() {
27279    L.Control.EasyBar = L.Control.extend({
27280      options: {
27281        position: "topleft",
27282        id: null,
27283        leafletClasses: true
27284      },
27285      initialize: function(buttons, options) {
27286        if (options) {
27287          L.Util.setOptions(this, options);
27288        }
27289        this._buildContainer();
27290        this._buttons = [];
27291        for (var i2 = 0; i2 < buttons.length; i2++) {
27292          buttons[i2]._bar = this;
27293          buttons[i2]._container = buttons[i2].button;
27294          this._buttons.push(buttons[i2]);
27295          this.container.appendChild(buttons[i2].button);
27296        }
27297      },
27298      _buildContainer: function() {
27299        this._container = this.container = L.DomUtil.create("div", "");
27300        this.options.leafletClasses && L.DomUtil.addClass(this.container, "leaflet-bar easy-button-container leaflet-control");
27301        this.options.id && (this.container.id = this.options.id);
27302      },
27303      enable: function() {
27304        L.DomUtil.addClass(this.container, "enabled");
27305        L.DomUtil.removeClass(this.container, "disabled");
27306        this.container.setAttribute("aria-hidden", "false");
27307        return this;
27308      },
27309      disable: function() {
27310        L.DomUtil.addClass(this.container, "disabled");
27311        L.DomUtil.removeClass(this.container, "enabled");
27312        this.container.setAttribute("aria-hidden", "true");
27313        return this;
27314      },
27315      onAdd: function() {
27316        return this.container;
27317      },
27318      addTo: function(map2) {
27319        this._map = map2;
27320        for (var i2 = 0; i2 < this._buttons.length; i2++) {
27321          this._buttons[i2]._map = map2;
27322        }
27323        var container = this._container = this.onAdd(map2), pos = this.getPosition(), corner = map2._controlCorners[pos];
27324        L.DomUtil.addClass(container, "leaflet-control");
27325        if (pos.indexOf("bottom") !== -1) {
27326          corner.insertBefore(container, corner.firstChild);
27327        } else {
27328          corner.appendChild(container);
27329        }
27330        return this;
27331      }
27332    });
27333    L.easyBar = function() {
27334      var args = [L.Control.EasyBar];
27335      for (var i2 = 0; i2 < arguments.length; i2++) {
27336        args.push(arguments[i2]);
27337      }
27338      return new (Function.prototype.bind.apply(L.Control.EasyBar, args))();
27339    };
27340    L.Control.EasyButton = L.Control.extend({
27341      options: {
27342        position: "topleft",
27343        id: null,
27344        type: "replace",
27345        states: [],
27346        leafletClasses: true,
27347        tagName: "button"
27348      },
27349      initialize: function(icon, onClick, title, id) {
27350        this.options.states = [];
27351        if (id != null) {
27352          this.options.id = id;
27353        }
27354        this.storage = {};
27355        if (typeof arguments[arguments.length - 1] === "object") {
27356          L.Util.setOptions(this, arguments[arguments.length - 1]);
27357        }
27358        if (this.options.states.length === 0 && typeof icon === "string" && typeof onClick === "function") {
27359          this.options.states.push({
27360            icon,
27361            onClick,
27362            title: typeof title === "string" ? title : ""
27363          });
27364        }
27365        this._states = [];
27366        for (var i2 = 0; i2 < this.options.states.length; i2++) {
27367          this._states.push(new State(this.options.states[i2], this));
27368        }
27369        this._buildButton();
27370        this._activateState(this._states[0]);
27371      },
27372      _buildButton: function() {
27373        this.button = L.DomUtil.create(this.options.tagName, "");
27374        if (this.options.tagName === "button") {
27375          this.button.setAttribute("type", "button");
27376        }
27377        if (this.options.id) {
27378          this.button.id = this.options.id;
27379        }
27380        if (this.options.leafletClasses) {
27381          L.DomUtil.addClass(this.button, "easy-button-button leaflet-bar-part leaflet-interactive");
27382        }
27383        L.DomEvent.addListener(this.button, "dblclick", L.DomEvent.stop);
27384        L.DomEvent.addListener(this.button, "mousedown", L.DomEvent.stop);
27385        L.DomEvent.addListener(this.button, "click", function(e) {
27386          L.DomEvent.stop(e);
27387          this._currentState.onClick(this, this._map ? this._map : null);
27388          this._map && this._map.getContainer().focus();
27389        }, this);
27390        if (this.options.type == "replace") {
27391          this.button.appendChild(this._currentState.icon);
27392        } else {
27393          for (var i2 = 0; i2 < this._states.length; i2++) {
27394            this.button.appendChild(this._states[i2].icon);
27395          }
27396        }
27397      },
27398      _currentState: {
27399        stateName: "unnamed",
27400        icon: function() {
27401          return document.createElement("span");
27402        }()
27403      },
27404      _states: null,
27405      state: function(newState) {
27406        if (typeof newState == "string") {
27407          this._activateStateNamed(newState);
27408        } else if (typeof newState == "number") {
27409          this._activateState(this._states[newState]);
27410        }
27411        return this;
27412      },
27413      _activateStateNamed: function(stateName) {
27414        for (var i2 = 0; i2 < this._states.length; i2++) {
27415          if (this._states[i2].stateName == stateName) {
27416            this._activateState(this._states[i2]);
27417          }
27418        }
27419      },
27420      _activateState: function(newState) {
27421        if (newState === this._currentState) {
27422          return;
27423        } else {
27424          if (this.options.type == "replace") {
27425            this.button.appendChild(newState.icon);
27426            this.button.removeChild(this._currentState.icon);
27427          }
27428          if (newState.title) {
27429            this.button.title = newState.title;
27430          } else {
27431            this.button.removeAttribute("title");
27432          }
27433          for (var i2 = 0; i2 < this._states.length; i2++) {
27434            L.DomUtil.removeClass(this._states[i2].icon, this._currentState.stateName + "-active");
27435            L.DomUtil.addClass(this._states[i2].icon, newState.stateName + "-active");
27436          }
27437          L.DomUtil.removeClass(this.button, this._currentState.stateName + "-active");
27438          L.DomUtil.addClass(this.button, newState.stateName + "-active");
27439          this._currentState = newState;
27440        }
27441      },
27442      enable: function() {
27443        L.DomUtil.addClass(this.button, "enabled");
27444        L.DomUtil.removeClass(this.button, "disabled");
27445        this.button.setAttribute("aria-hidden", "false");
27446        return this;
27447      },
27448      disable: function() {
27449        L.DomUtil.addClass(this.button, "disabled");
27450        L.DomUtil.removeClass(this.button, "enabled");
27451        this.button.setAttribute("aria-hidden", "true");
27452        return this;
27453      },
27454      onAdd: function(map2) {
27455        var bar = L.easyBar([this], {
27456          position: this.options.position,
27457          leafletClasses: this.options.leafletClasses
27458        });
27459        this._anonymousBar = bar;
27460        this._container = bar.container;
27461        return this._anonymousBar.container;
27462      },
27463      removeFrom: function(map2) {
27464        if (this._map === map2)
27465          this.remove();
27466        return this;
27467      }
27468    });
27469    L.easyButton = function() {
27470      var args = Array.prototype.concat.apply([L.Control.EasyButton], arguments);
27471      return new (Function.prototype.bind.apply(L.Control.EasyButton, args))();
27472    };
27473    function State(template, easyButton) {
27474      this.title = template.title;
27475      this.stateName = template.stateName ? template.stateName : "unnamed-state";
27476      this.icon = L.DomUtil.create("span", "");
27477      L.DomUtil.addClass(this.icon, "button-state state-" + this.stateName.replace(/(^\s*|\s*$)/g, ""));
27478      this.icon.innerHTML = buildIcon(template.icon);
27479      this.onClick = L.Util.bind(template.onClick ? template.onClick : function() {
27480      }, easyButton);
27481    }
27482    function buildIcon(ambiguousIconString) {
27483      var tmpIcon;
27484      if (ambiguousIconString.match(/[&;=<>"']/)) {
27485        tmpIcon = ambiguousIconString;
27486      } else {
27487        ambiguousIconString = ambiguousIconString.replace(/(^\s*|\s*$)/g, "");
27488        tmpIcon = L.DomUtil.create("span", "");
27489        if (ambiguousIconString.indexOf("fa-") === 0) {
27490          L.DomUtil.addClass(tmpIcon, "fa " + ambiguousIconString);
27491        } else if (ambiguousIconString.indexOf("glyphicon-") === 0) {
27492          L.DomUtil.addClass(tmpIcon, "glyphicon " + ambiguousIconString);
27493        } else {
27494          L.DomUtil.addClass(tmpIcon, ambiguousIconString);
27495        }
27496        tmpIcon = tmpIcon.outerHTML;
27497      }
27498      return tmpIcon;
27499    }
27500  })();
27501
27502  
27502// frappe/public/js/lib/leaflet_draw/leaflet.draw.js
27503  !function(t, e, i2) {
27504    function o(t2, e2) {
27505      for (; (t2 = t2.parentElement) && !t2.classList.contains(e2); )
27506        ;
27507      return t2;
27508    }
27509    L.drawVersion = "0.4.12", L.Draw = {}, L.drawLocal = {
27510      draw: {
27511        toolbar: {
27512          actions: {
27513            title: "Cancel drawing",
27514            text: "Cancel"
27515          },
27516          finish: {
27517            title: "Finish drawing",
27518            text: "Finish"
27519          },
27520          undo: {
27521            title: "Delete last point drawn",
27522            text: "Delete last point"
27523          },
27524          buttons: {
27525            polyline: "Draw a polyline",
27526            polygon: "Draw a polygon",
27527            rectangle: "Draw a rectangle",
27528            circle: "Draw a circle",
27529            marker: "Draw a marker",
27530            circlemarker: "Draw a circlemarker"
27531          }
27532        },
27533        handlers: {
27534          circle: {
27535            tooltip: {
27536              start: "Click and drag to draw circle."
27537            },
27538            radius: "Radius"
27539          },
27540          circlemarker: {
27541            tooltip: {
27542              start: "Click map to place circle marker."
27543            }
27544          },
27545          marker: {
27546            tooltip: {
27547              start: "Click map to place marker."
27548            }
27549          },
27550          polygon: {
27551            tooltip: {
27552              start: "Click to start drawing shape.",
27553              cont: "Click to continue drawing shape.",
27554              end: "Click first point to close this shape."
27555            }
27556          },
27557          polyline: {
27558            error: "<strong>Error:</strong> shape edges cannot cross!",
27559            tooltip: {
27560              start: "Click to start drawing line.",
27561              cont: "Click to continue drawing line.",
27562              end: "Click last point to finish line."
27563            }
27564          },
27565          rectangle: {
27566            tooltip: {
27567              start: "Click and drag to draw rectangle."
27568            }
27569          },
27570          simpleshape: {
27571            tooltip: {
27572              end: "Release mouse to finish drawing."
27573            }
27574          }
27575        }
27576      },
27577      edit: {
27578        toolbar: {
27579          actions: {
27580            save: {
27581              title: "Save changes",
27582              text: "Save"
27583            },
27584            cancel: {
27585              title: "Cancel editing, discards all changes",
27586              text: "Cancel"
27587            },
27588            clearAll: {
27589              title: "Clear all layers",
27590              text: "Clear All"
27591            }
27592          },
27593          buttons: {
27594            edit: "Edit layers",
27595            editDisabled: "No layers to edit",
27596            remove: "Delete layers",
27597            removeDisabled: "No layers to delete"
27598          }
27599        },
27600        handlers: {
27601          edit: {
27602            tooltip: {
27603              text: "Drag handles or markers to edit features.",
27604              subtext: "Click cancel to undo changes."
27605            }
27606          },
27607          remove: {
27608            tooltip: {
27609              text: "Click on a feature to remove."
27610            }
27611          }
27612        }
27613      }
27614    }, L.Draw.Event = {}, L.Draw.Event.CREATED = "draw:created", L.Draw.Event.EDITED = "draw:edited", L.Draw.Event.DELETED = "draw:deleted", L.Draw.Event.DRAWSTART = "draw:drawstart", L.Draw.Event.DRAWSTOP = "draw:drawstop", L.Draw.Event.DRAWVERTEX = "draw:drawvertex", L.Draw.Event.EDITSTART = "draw:editstart", L.Draw.Event.EDITMOVE = "draw:editmove", L.Draw.Event.EDITRESIZE = "draw:editresize", L.Draw.Event.EDITVERTEX = "draw:editvertex", L.Draw.Event.EDITSTOP = "draw:editstop", L.Draw.Event.DELETESTART = "draw:deletestart", L.Draw.Event.DELETESTOP = "draw:deletestop", L.Draw = L.Draw || {}, L.Draw.Feature = L.Handler.extend({
27615      initialize: function(t2, e2) {
27616        this._map = t2, this._container = t2._container, this._overlayPane = t2._panes.overlayPane, this._popupPane = t2._panes.popupPane, e2 && e2.shapeOptions && (e2.shapeOptions = L.Util.extend({}, this.options.shapeOptions, e2.shapeOptions)), L.setOptions(this, e2);
27617        var version = L.version.split(".");
27618        if (parseInt(version[0], 10) === 1 && parseInt(version[1], 10) >= 2) {
27619          L.Draw.Feature.include(L.Evented.prototype);
27620        } else {
27621          L.Draw.Feature.include(L.Mixin.Events);
27622        }
27623      },
27624      enable: function() {
27625        this._enabled || (L.Handler.prototype.enable.call(this), this.fire("enabled", {
27626          handler: this.type
27627        }), this._map.fire(L.Draw.Event.DRAWSTART, {
27628          layerType: this.type
27629        }));
27630      },
27631      disable: function() {
27632        this._enabled && (L.Handler.prototype.disable.call(this), this._map.fire(L.Draw.Event.DRAWSTOP, {
27633          layerType: this.type
27634        }), this.fire("disabled", {
27635          handler: this.type
27636        }));
27637      },
27638      addHooks: function() {
27639        var t2 = this._map;
27640        t2 && (L.DomUtil.disableTextSelection(), t2.getContainer().focus(), this._tooltip = new L.Draw.Tooltip(this._map), L.DomEvent.on(this._container, "keyup", this._cancelDrawing, this));
27641      },
27642      removeHooks: function() {
27643        this._map && (L.DomUtil.enableTextSelection(), this._tooltip.dispose(), this._tooltip = null, L.DomEvent.off(this._container, "keyup", this._cancelDrawing, this));
27644      },
27645      setOptions: function(t2) {
27646        L.setOptions(this, t2);
27647      },
27648      _fireCreatedEvent: function(t2) {
27649        this._map.fire(L.Draw.Event.CREATED, {
27650          layer: t2,
27651          layerType: this.type
27652        });
27653      },
27654      _cancelDrawing: function(t2) {
27655        27 === t2.keyCode && (this._map.fire("draw:canceled", {
27656          layerType: this.type
27657        }), this.disable());
27658      }
27659    }), L.Draw.Polyline = L.Draw.Feature.extend({
27660      statics: {
27661        TYPE: "polyline"
27662      },
27663      Poly: L.Polyline,
27664      options: {
27665        allowIntersection: true,
27666        repeatMode: false,
27667        drawError: {
27668          color: "#b00b00",
27669          timeout: 2500
27670        },
27671        icon: new L.DivIcon({
27672          iconSize: new L.Point(8, 8),
27673          className: "leaflet-div-icon leaflet-editing-icon"
27674        }),
27675        touchIcon: new L.DivIcon({
27676          iconSize: new L.Point(20, 20),
27677          className: "leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"
27678        }),
27679        guidelineDistance: 20,
27680        maxGuideLineLength: 4e3,
27681        shapeOptions: {
27682          stroke: true,
27683          color: "#3388ff",
27684          weight: 4,
27685          opacity: 0.5,
27686          fill: false,
27687          clickable: true
27688        },
27689        metric: true,
27690        feet: true,
27691        nautic: false,
27692        showLength: true,
27693        zIndexOffset: 2e3,
27694        factor: 1
27695      },
27696      initialize: function(t2, e2) {
27697        L.Browser.touch && (this.options.icon = this.options.touchIcon), this.options.drawError.message = L.drawLocal.draw.handlers.polyline.error, e2 && e2.drawError && (e2.drawError = L.Util.extend({}, this.options.drawError, e2.drawError)), this.type = L.Draw.Polyline.TYPE, L.Draw.Feature.prototype.initialize.call(this, t2, e2);
27698      },
27699      addHooks: function() {
27700        L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._markers = [], this._markerGroup = new L.LayerGroup(), this._map.addLayer(this._markerGroup), this._poly = new L.Polyline([], this.options.shapeOptions), this._tooltip.updateContent(this._getTooltipText()), this._mouseMarker || (this._mouseMarker = L.marker(this._map.getCenter(), {
27701          icon: L.divIcon({
27702            className: "leaflet-mouse-marker",
27703            iconAnchor: [20, 20],
27704            iconSize: [40, 40]
27705          }),
27706          opacity: 0,
27707          zIndexOffset: this.options.zIndexOffset
27708        })), this._mouseMarker.on("mouseout", this._onMouseOut, this).on("mousemove", this._onMouseMove, this).on("mousedown", this._onMouseDown, this).on("mouseup", this._onMouseUp, this).addTo(this._map), this._map.on("mouseup", this._onMouseUp, this).on("mousemove", this._onMouseMove, this).on("zoomlevelschange", this._onZoomEnd, this).on("touchstart", this._onTouch, this).on("zoomend", this._onZoomEnd, this));
27709      },
27710      removeHooks: function() {
27711        L.Draw.Feature.prototype.removeHooks.call(this), this._clearHideErrorTimeout(), this._cleanUpShape(), this._map.removeLayer(this._markerGroup), delete this._markerGroup, delete this._markers, this._map.removeLayer(this._poly), delete this._poly, this._mouseMarker.off("mousedown", this._onMouseDown, this).off("mouseout", this._onMouseOut, this).off("mouseup", this._onMouseUp, this).off("mousemove", this._onMouseMove, this), this._map.removeLayer(this._mouseMarker), delete this._mouseMarker, this._clearGuides(), this._map.off("mouseup", this._onMouseUp, this).off("mousemove", this._onMouseMove, this).off("zoomlevelschange", this._onZoomEnd, this).off("zoomend", this._onZoomEnd, this).off("touchstart", this._onTouch, this).off("click", this._onTouch, this);
27712      },
27713      deleteLastVertex: function() {
27714        if (!(this._markers.length <= 1)) {
27715          var t2 = this._markers.pop(), e2 = this._poly, i3 = e2.getLatLngs(), o2 = i3.splice(-1, 1)[0];
27716          this._poly.setLatLngs(i3), this._markerGroup.removeLayer(t2), e2.getLatLngs().length < 2 && this._map.removeLayer(e2), this._vertexChanged(o2, false);
27717        }
27718      },
27719      addVertex: function(t2) {
27720        if (this._markers.length >= 2 && !this.options.allowIntersection && this._poly.newLatLngIntersects(t2))
27721          return void this._showErrorTooltip();
27722        this._errorShown && this._hideErrorTooltip(), this._markers.push(this._createMarker(t2)), this._poly.addLatLng(t2), 2 === this._poly.getLatLngs().length && this._map.addLayer(this._poly), this._vertexChanged(t2, true);
27723      },
27724      completeShape: function() {
27725        this._markers.length <= 1 || (this._fireCreatedEvent(), this.disable(), this.options.repeatMode && this.enable());
27726      },
27727      _finishShape: function() {
27728        var t2 = this._poly._defaultShape ? this._poly._defaultShape() : this._poly.getLatLngs(), e2 = this._poly.newLatLngIntersects(t2[t2.length - 1]);
27729        if (!this.options.allowIntersection && e2 || !this._shapeIsValid())
27730          return void this._showErrorTooltip();
27731        this._fireCreatedEvent(), this.disable(), this.options.repeatMode && this.enable();
27732      },
27733      _shapeIsValid: function() {
27734        return true;
27735      },
27736      _onZoomEnd: function() {
27737        null !== this._markers && this._updateGuide();
27738      },
27739      _onMouseMove: function(t2) {
27740        var e2 = this._map.mouseEventToLayerPoint(t2.originalEvent), i3 = this._map.layerPointToLatLng(e2);
27741        this._currentLatLng = i3, this._updateTooltip(i3), this._updateGuide(e2), this._mouseMarker.setLatLng(i3), L.DomEvent.preventDefault(t2.originalEvent);
27742      },
27743      _vertexChanged: function(t2, e2) {
27744        this._map.fire(L.Draw.Event.DRAWVERTEX, {
27745          layers: this._markerGroup
27746        }), this._updateFinishHandler(), this._updateRunningMeasure(t2, e2), this._clearGuides(), this._updateTooltip();
27747      },
27748      _onMouseDown: function(t2) {
27749        if (!this._clickHandled && !this._touchHandled && !this._disableMarkers) {
27750          this._onMouseMove(t2), this._clickHandled = true, this._disableNewMarkers();
27751          var e2 = t2.originalEvent, i3 = e2.clientX, o2 = e2.clientY;
27752          this._startPoint.call(this, i3, o2);
27753        }
27754      },
27755      _startPoint: function(t2, e2) {
27756        this._mouseDownOrigin = L.point(t2, e2);
27757      },
27758      _onMouseUp: function(t2) {
27759        var e2 = t2.originalEvent, i3 = e2.clientX, o2 = e2.clientY;
27760        this._endPoint.call(this, i3, o2, t2), this._clickHandled = null;
27761      },
27762      _endPoint: function(e2, i3, o2) {
27763        if (this._mouseDownOrigin) {
27764          var n = L.point(e2, i3).distanceTo(this._mouseDownOrigin);
27765          this._calculateFinishDistance(o2.latlng) < 10 && L.Browser.touch ? this._finishShape() : Math.abs(n) < 9 * (t.devicePixelRatio || 1) && this.addVertex(o2.latlng), this._enableNewMarkers();
27766        }
27767        this._mouseDownOrigin = null;
27768      },
27769      _onTouch: function(t2) {
27770        var e2, i3, o2 = t2.originalEvent;
27771        !o2.touches || !o2.touches[0] || this._clickHandled || this._touchHandled || this._disableMarkers || (e2 = o2.touches[0].clientX, i3 = o2.touches[0].clientY, this._disableNewMarkers(), this._touchHandled = true, this._startPoint.call(this, e2, i3), this._endPoint.call(this, e2, i3, t2), this._touchHandled = null), this._clickHandled = null;
27772      },
27773      _onMouseOut: function() {
27774        this._tooltip && this._tooltip._onMouseOut.call(this._tooltip);
27775      },
27776      _calculateFinishDistance: function(t2) {
27777        var e2;
27778        if (this._markers.length > 0) {
27779          var i3;
27780          if (this.type === L.Draw.Polyline.TYPE)
27781            i3 = this._markers[this._markers.length - 1];
27782          else {
27783            if (this.type !== L.Draw.Polygon.TYPE)
27784              return 1 / 0;
27785            i3 = this._markers[0];
27786          }
27787          var o2 = this._map.latLngToContainerPoint(i3.getLatLng()), n = new L.Marker(t2, {
27788            icon: this.options.icon,
27789            zIndexOffset: 2 * this.options.zIndexOffset
27790          }), a = this._map.latLngToContainerPoint(n.getLatLng());
27791          e2 = o2.distanceTo(a);
27792        } else
27793          e2 = 1 / 0;
27794        return e2;
27795      },
27796      _updateFinishHandler: function() {
27797        var t2 = this._markers.length;
27798        t2 > 1 && this._markers[t2 - 1].on("click", this._finishShape, this), t2 > 2 && this._markers[t2 - 2].off("click", this._finishShape, this);
27799      },
27800      _createMarker: function(t2) {
27801        var e2 = new L.Marker(t2, {
27802          icon: this.options.icon,
27803          zIndexOffset: 2 * this.options.zIndexOffset
27804        });
27805        return this._markerGroup.addLayer(e2), e2;
27806      },
27807      _updateGuide: function(t2) {
27808        var e2 = this._markers ? this._markers.length : 0;
27809        e2 > 0 && (t2 = t2 || this._map.latLngToLayerPoint(this._currentLatLng), this._clearGuides(), this._drawGuide(this._map.latLngToLayerPoint(this._markers[e2 - 1].getLatLng()), t2));
27810      },
27811      _updateTooltip: function(t2) {
27812        var e2 = this._getTooltipText();
27813        t2 && this._tooltip.updatePosition(t2), this._errorShown || this._tooltip.updateContent(e2);
27814      },
27815      _drawGuide: function(t2, e2) {
27816        var i3, o2, n, a = Math.floor(Math.sqrt(Math.pow(e2.x - t2.x, 2) + Math.pow(e2.y - t2.y, 2))), s = this.options.guidelineDistance, r = this.options.maxGuideLineLength, l = a > r ? a - r : s;
27817        for (this._guidesContainer || (this._guidesContainer = L.DomUtil.create("div", "leaflet-draw-guides", this._overlayPane)); l < a; l += this.options.guidelineDistance)
27818          i3 = l / a, o2 = {
27819            x: Math.floor(t2.x * (1 - i3) + i3 * e2.x),
27820            y: Math.floor(t2.y * (1 - i3) + i3 * e2.y)
27821          }, n = L.DomUtil.create("div", "leaflet-draw-guide-dash", this._guidesContainer), n.style.backgroundColor = this._errorShown ? this.options.drawError.color : this.options.shapeOptions.color, L.DomUtil.setPosition(n, o2);
27822      },
27823      _updateGuideColor: function(t2) {
27824        if (this._guidesContainer)
27825          for (var e2 = 0, i3 = this._guidesContainer.childNodes.length; e2 < i3; e2++)
27826            this._guidesContainer.childNodes[e2].style.backgroundColor = t2;
27827      },
27828      _clearGuides: function() {
27829        if (this._guidesContainer)
27830          for (; this._guidesContainer.firstChild; )
27831            this._guidesContainer.removeChild(this._guidesContainer.firstChild);
27832      },
27833      _getTooltipText: function() {
27834        var t2, e2, i3 = this.options.showLength;
27835        return L.Browser.touch && (i3 = false), 0 === this._markers.length ? t2 = {
27836          text: L.drawLocal.draw.handlers.polyline.tooltip.start
27837        } : (e2 = i3 ? this._getMeasurementString() : "", t2 = 1 === this._markers.length ? {
27838          text: L.drawLocal.draw.handlers.polyline.tooltip.cont,
27839          subtext: e2
27840        } : {
27841          text: L.drawLocal.draw.handlers.polyline.tooltip.end,
27842          subtext: e2
27843        }), t2;
27844      },
27845      _updateRunningMeasure: function(t2, e2) {
27846        var i3, o2, n = this._markers.length;
27847        1 === this._markers.length ? this._measurementRunningTotal = 0 : (i3 = n - (e2 ? 2 : 1), o2 = this._map.distance(t2, this._markers[i3].getLatLng()) * (this.options.factor || 1), this._measurementRunningTotal += o2 * (e2 ? 1 : -1));
27848      },
27849      _getMeasurementString: function() {
27850        var t2, e2 = this._currentLatLng, i3 = this._markers[this._markers.length - 1].getLatLng();
27851        return t2 = i3 && e2 ? this._measurementRunningTotal + this._map.distance(e2, i3) * (this.options.factor || 1) : this._measurementRunningTotal || 0, L.GeometryUtil.readableDistance(t2, this.options.metric, this.options.feet, this.options.nautic, this.options.precision);
27852      },
27853      _showErrorTooltip: function() {
27854        this._errorShown = true, this._tooltip.showAsError().updateContent({
27855          text: this.options.drawError.message
27856        }), this._updateGuideColor(this.options.drawError.color), this._poly.setStyle({
27857          color: this.options.drawError.color
27858        }), this._clearHideErrorTimeout(), this._hideErrorTimeout = setTimeout(L.Util.bind(this._hideErrorTooltip, this), this.options.drawError.timeout);
27859      },
27860      _hideErrorTooltip: function() {
27861        this._errorShown = false, this._clearHideErrorTimeout(), this._tooltip.removeError().updateContent(this._getTooltipText()), this._updateGuideColor(this.options.shapeOptions.color), this._poly.setStyle({
27862          color: this.options.shapeOptions.color
27863        });
27864      },
27865      _clearHideErrorTimeout: function() {
27866        this._hideErrorTimeout && (clearTimeout(this._hideErrorTimeout), this._hideErrorTimeout = null);
27867      },
27868      _disableNewMarkers: function() {
27869        this._disableMarkers = true;
27870      },
27871      _enableNewMarkers: function() {
27872        setTimeout(function() {
27873          this._disableMarkers = false;
27874        }.bind(this), 50);
27875      },
27876      _cleanUpShape: function() {
27877        this._markers.length > 1 && this._markers[this._markers.length - 1].off("click", this._finishShape, this);
27878      },
27879      _fireCreatedEvent: function() {
27880        var t2 = new this.Poly(this._poly.getLatLngs(), this.options.shapeOptions);
27881        L.Draw.Feature.prototype._fireCreatedEvent.call(this, t2);
27882      }
27883    }), L.Draw.Polygon = L.Draw.Polyline.extend({
27884      statics: {
27885        TYPE: "polygon"
27886      },
27887      Poly: L.Polygon,
27888      options: {
27889        showArea: false,
27890        showLength: false,
27891        shapeOptions: {
27892          stroke: true,
27893          color: "#3388ff",
27894          weight: 4,
27895          opacity: 0.5,
27896          fill: true,
27897          fillColor: null,
27898          fillOpacity: 0.2,
27899          clickable: true
27900        },
27901        metric: true,
27902        feet: true,
27903        nautic: false,
27904        precision: {}
27905      },
27906      initialize: function(t2, e2) {
27907        L.Draw.Polyline.prototype.initialize.call(this, t2, e2), this.type = L.Draw.Polygon.TYPE;
27908      },
27909      _updateFinishHandler: function() {
27910        var t2 = this._markers.length;
27911        1 === t2 && this._markers[0].on("click", this._finishShape, this), t2 > 2 && (this._markers[t2 - 1].on("dblclick", this._finishShape, this), t2 > 3 && this._markers[t2 - 2].off("dblclick", this._finishShape, this));
27912      },
27913      _getTooltipText: function() {
27914        var t2, e2;
27915        return 0 === this._markers.length ? t2 = L.drawLocal.draw.handlers.polygon.tooltip.start : this._markers.length < 3 ? (t2 = L.drawLocal.draw.handlers.polygon.tooltip.cont, e2 = this._getMeasurementString()) : (t2 = L.drawLocal.draw.handlers.polygon.tooltip.end, e2 = this._getMeasurementString()), {
27916          text: t2,
27917          subtext: e2
27918        };
27919      },
27920      _getMeasurementString: function() {
27921        var t2 = this._area, e2 = "";
27922        return t2 || this.options.showLength ? (this.options.showLength && (e2 = L.Draw.Polyline.prototype._getMeasurementString.call(this)), t2 && (e2 += "<br>" + L.GeometryUtil.readableArea(t2, this.options.metric, this.options.precision)), e2) : null;
27923      },
27924      _shapeIsValid: function() {
27925        return this._markers.length >= 3;
27926      },
27927      _vertexChanged: function(t2, e2) {
27928        var i3;
27929        !this.options.allowIntersection && this.options.showArea && (i3 = this._poly.getLatLngs(), this._area = L.GeometryUtil.geodesicArea(i3)), L.Draw.Polyline.prototype._vertexChanged.call(this, t2, e2);
27930      },
27931      _cleanUpShape: function() {
27932        var t2 = this._markers.length;
27933        t2 > 0 && (this._markers[0].off("click", this._finishShape, this), t2 > 2 && this._markers[t2 - 1].off("dblclick", this._finishShape, this));
27934      }
27935    }), L.SimpleShape = {}, L.Draw.SimpleShape = L.Draw.Feature.extend({
27936      options: {
27937        repeatMode: false
27938      },
27939      initialize: function(t2, e2) {
27940        this._endLabelText = L.drawLocal.draw.handlers.simpleshape.tooltip.end, L.Draw.Feature.prototype.initialize.call(this, t2, e2);
27941      },
27942      addHooks: function() {
27943        L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._mapDraggable = this._map.dragging.enabled(), this._mapDraggable && this._map.dragging.disable(), this._container.style.cursor = "crosshair", this._tooltip.updateContent({
27944          text: this._initialLabelText
27945        }), this._map.on("mousedown", this._onMouseDown, this).on("mousemove", this._onMouseMove, this).on("touchstart", this._onMouseDown, this).on("touchmove", this._onMouseMove, this));
27946      },
27947      removeHooks: function() {
27948        L.Draw.Feature.prototype.removeHooks.call(this), this._map && (this._mapDraggable && this._map.dragging.enable(), this._container.style.cursor = "", this._map.off("mousedown", this._onMouseDown, this).off("mousemove", this._onMouseMove, this).off("touchstart", this._onMouseDown, this).off("touchmove", this._onMouseMove, this), L.DomEvent.off(e, "mouseup", this._onMouseUp, this), L.DomEvent.off(e, "touchend", this._onMouseUp, this), this._shape && (this._map.removeLayer(this._shape), delete this._shape)), this._isDrawing = false;
27949      },
27950      _getTooltipText: function() {
27951        return {
27952          text: this._endLabelText
27953        };
27954      },
27955      _onMouseDown: function(t2) {
27956        this._isDrawing = true, this._startLatLng = t2.latlng, L.DomEvent.on(e, "mouseup", this._onMouseUp, this).on(e, "touchend", this._onMouseUp, this).preventDefault(t2.originalEvent);
27957      },
27958      _onMouseMove: function(t2) {
27959        var e2 = t2.latlng;
27960        this._tooltip.updatePosition(e2), this._isDrawing && (this._tooltip.updateContent(this._getTooltipText()), this._drawShape(e2));
27961      },
27962      _onMouseUp: function() {
27963        this._shape && this._fireCreatedEvent(), this.disable(), this.options.repeatMode && this.enable();
27964      }
27965    }), L.Draw.Rectangle = L.Draw.SimpleShape.extend({
27966      statics: {
27967        TYPE: "rectangle"
27968      },
27969      options: {
27970        shapeOptions: {
27971          stroke: true,
27972          color: "#3388ff",
27973          weight: 4,
27974          opacity: 0.5,
27975          fill: true,
27976          fillColor: null,
27977          fillOpacity: 0.2,
27978          showArea: true,
27979          clickable: true
27980        },
27981        metric: true
27982      },
27983      initialize: function(t2, e2) {
27984        this.type = L.Draw.Rectangle.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.rectangle.tooltip.start, L.Draw.SimpleShape.prototype.initialize.call(this, t2, e2);
27985      },
27986      disable: function() {
27987        this._enabled && (this._isCurrentlyTwoClickDrawing = false, L.Draw.SimpleShape.prototype.disable.call(this));
27988      },
27989      _onMouseUp: function(t2) {
27990        if (!this._shape && !this._isCurrentlyTwoClickDrawing)
27991          return void (this._isCurrentlyTwoClickDrawing = true);
27992        this._isCurrentlyTwoClickDrawing && !o(t2.target, "leaflet-pane") || L.Draw.SimpleShape.prototype._onMouseUp.call(this);
27993      },
27994      _drawShape: function(t2) {
27995        this._shape ? this._shape.setBounds(new L.LatLngBounds(this._startLatLng, t2)) : (this._shape = new L.Rectangle(new L.LatLngBounds(this._startLatLng, t2), this.options.shapeOptions), this._map.addLayer(this._shape));
27996      },
27997      _fireCreatedEvent: function() {
27998        var t2 = new L.Rectangle(this._shape.getBounds(), this.options.shapeOptions);
27999        L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, t2);
28000      },
28001      _getTooltipText: function() {
28002        var t2, e2, i3, o2 = L.Draw.SimpleShape.prototype._getTooltipText.call(this), n = this._shape, a = this.options.showArea;
28003        return n && (t2 = this._shape._defaultShape ? this._shape._defaultShape() : this._shape.getLatLngs(), e2 = L.GeometryUtil.geodesicArea(t2), i3 = a ? L.GeometryUtil.readableArea(e2, this.options.metric) : ""), {
28004          text: o2.text,
28005          subtext: i3
28006        };
28007      }
28008    }), L.Draw.Marker = L.Draw.Feature.extend({
28009      statics: {
28010        TYPE: "marker"
28011      },
28012      options: {
28013        icon: new L.Icon.Default(),
28014        repeatMode: false,
28015        zIndexOffset: 2e3
28016      },
28017      initialize: function(t2, e2) {
28018        this.type = L.Draw.Marker.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.marker.tooltip.start, L.Draw.Feature.prototype.initialize.call(this, t2, e2);
28019      },
28020      addHooks: function() {
28021        L.Draw.Feature.prototype.addHooks.call(this), this._map && (this._tooltip.updateContent({
28022          text: this._initialLabelText
28023        }), this._mouseMarker || (this._mouseMarker = L.marker(this._map.getCenter(), {
28024          icon: L.divIcon({
28025            className: "leaflet-mouse-marker",
28026            iconAnchor: [20, 20],
28027            iconSize: [40, 40]
28028          }),
28029          opacity: 0,
28030          zIndexOffset: this.options.zIndexOffset
28031        })), this._mouseMarker.on("click", this._onClick, this).addTo(this._map), this._map.on("mousemove", this._onMouseMove, this), this._map.on("click", this._onTouch, this));
28032      },
28033      removeHooks: function() {
28034        L.Draw.Feature.prototype.removeHooks.call(this), this._map && (this._marker && (this._marker.off("click", this._onClick, this), this._map.off("click", this._onClick, this).off("click", this._onTouch, this).removeLayer(this._marker), delete this._marker), this._mouseMarker.off("click", this._onClick, this), this._map.removeLayer(this._mouseMarker), delete this._mouseMarker, this._map.off("mousemove", this._onMouseMove, this));
28035      },
28036      _onMouseMove: function(t2) {
28037        var e2 = t2.latlng;
28038        this._tooltip.updatePosition(e2), this._mouseMarker.setLatLng(e2), this._marker ? (e2 = this._mouseMarker.getLatLng(), this._marker.setLatLng(e2)) : (this._marker = this._createMarker(e2), this._marker.on("click", this._onClick, this), this._map.on("click", this._onClick, this).addLayer(this._marker));
28039      },
28040      _createMarker: function(t2) {
28041        return new L.Marker(t2, {
28042          icon: this.options.icon,
28043          zIndexOffset: this.options.zIndexOffset
28044        });
28045      },
28046      _onClick: function() {
28047        this._fireCreatedEvent(), this.disable(), this.options.repeatMode && this.enable();
28048      },
28049      _onTouch: function(t2) {
28050        this._onMouseMove(t2), this._onClick();
28051      },
28052      _fireCreatedEvent: function() {
28053        var t2 = new L.Marker.Touch(this._marker.getLatLng(), {
28054          icon: this.options.icon
28055        });
28056        L.Draw.Feature.prototype._fireCreatedEvent.call(this, t2);
28057      }
28058    }), L.Draw.CircleMarker = L.Draw.Marker.extend({
28059      statics: {
28060        TYPE: "circlemarker"
28061      },
28062      options: {
28063        stroke: true,
28064        color: "#3388ff",
28065        weight: 4,
28066        opacity: 0.5,
28067        fill: true,
28068        fillColor: null,
28069        fillOpacity: 0.2,
28070        clickable: true,
28071        zIndexOffset: 2e3
28072      },
28073      initialize: function(t2, e2) {
28074        this.type = L.Draw.CircleMarker.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.circlemarker.tooltip.start, L.Draw.Feature.prototype.initialize.call(this, t2, e2);
28075      },
28076      _fireCreatedEvent: function() {
28077        var t2 = new L.CircleMarker(this._marker.getLatLng(), this.options);
28078        L.Draw.Feature.prototype._fireCreatedEvent.call(this, t2);
28079      },
28080      _createMarker: function(t2) {
28081        return new L.CircleMarker(t2, this.options);
28082      }
28083    }), L.Draw.Circle = L.Draw.SimpleShape.extend({
28084      statics: {
28085        TYPE: "circle"
28086      },
28087      options: {
28088        shapeOptions: {
28089          stroke: true,
28090          color: "#3388ff",
28091          weight: 4,
28092          opacity: 0.5,
28093          fill: true,
28094          fillColor: null,
28095          fillOpacity: 0.2,
28096          clickable: true
28097        },
28098        showRadius: true,
28099        metric: true,
28100        feet: true,
28101        nautic: false
28102      },
28103      initialize: function(t2, e2) {
28104        this.type = L.Draw.Circle.TYPE, this._initialLabelText = L.drawLocal.draw.handlers.circle.tooltip.start, L.Draw.SimpleShape.prototype.initialize.call(this, t2, e2);
28105      },
28106      _drawShape: function(t2) {
28107        var e2 = this._map.distance(this._startLatLng, t2);
28108        this._shape ? this._shape.setRadius(e2) : (this._shape = new L.Circle(this._startLatLng, e2, this.options.shapeOptions), this._map.addLayer(this._shape));
28109      },
28110      _fireCreatedEvent: function() {
28111        var t2 = new L.Circle(this._startLatLng, this._shape.getRadius(), this.options.shapeOptions);
28112        L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this, t2);
28113      },
28114      _onMouseMove: function(t2) {
28115        var e2, i3 = t2.latlng, o2 = this.options.showRadius, n = this.options.metric;
28116        if (this._tooltip.updatePosition(i3), this._isDrawing) {
28117          this._drawShape(i3), e2 = this._shape.getRadius().toFixed(1);
28118          var a = "";
28119          o2 && (a = L.drawLocal.draw.handlers.circle.radius + ": " + L.GeometryUtil.readableDistance(e2, n, this.options.feet, this.options.nautic)), this._tooltip.updateContent({
28120            text: this._endLabelText,
28121            subtext: a
28122          });
28123        }
28124      }
28125    }), L.Edit = L.Edit || {}, L.Edit.Marker = L.Handler.extend({
28126      initialize: function(t2, e2) {
28127        this._marker = t2, L.setOptions(this, e2);
28128      },
28129      addHooks: function() {
28130        var t2 = this._marker;
28131        t2.dragging.enable(), t2.on("dragend", this._onDragEnd, t2), this._toggleMarkerHighlight();
28132      },
28133      removeHooks: function() {
28134        var t2 = this._marker;
28135        t2.dragging.disable(), t2.off("dragend", this._onDragEnd, t2), this._toggleMarkerHighlight();
28136      },
28137      _onDragEnd: function(t2) {
28138        var e2 = t2.target;
28139        e2.edited = true, this._map.fire(L.Draw.Event.EDITMOVE, {
28140          layer: e2
28141        });
28142      },
28143      _toggleMarkerHighlight: function() {
28144        var t2 = this._marker._icon;
28145        t2 && (t2.style.display = "none", L.DomUtil.hasClass(t2, "leaflet-edit-marker-selected") ? (L.DomUtil.removeClass(t2, "leaflet-edit-marker-selected"), this._offsetMarker(t2, -4)) : (L.DomUtil.addClass(t2, "leaflet-edit-marker-selected"), this._offsetMarker(t2, 4)), t2.style.display = "");
28146      },
28147      _offsetMarker: function(t2, e2) {
28148        var i3 = parseInt(t2.style.marginTop, 10) - e2, o2 = parseInt(t2.style.marginLeft, 10) - e2;
28149        t2.style.marginTop = i3 + "px", t2.style.marginLeft = o2 + "px";
28150      }
28151    }), L.Marker.addInitHook(function() {
28152      L.Edit.Marker && (this.editing = new L.Edit.Marker(this), this.options.editable && this.editing.enable());
28153    }), L.Edit = L.Edit || {}, L.Edit.Poly = L.Handler.extend({
28154      options: {},
28155      initialize: function(t2, e2) {
28156        this.latlngs = [t2._latlngs], t2._holes && (this.latlngs = this.latlngs.concat(t2._holes)), this._poly = t2, L.setOptions(this, e2), this._poly.on("revert-edited", this._updateLatLngs, this);
28157      },
28158      _defaultShape: function() {
28159        return L.Polyline._flat ? L.Polyline._flat(this._poly._latlngs) ? this._poly._latlngs : this._poly._latlngs[0] : this._poly._latlngs;
28160      },
28161      _eachVertexHandler: function(t2) {
28162        for (var e2 = 0; e2 < this._verticesHandlers.length; e2++)
28163          t2(this._verticesHandlers[e2]);
28164      },
28165      addHooks: function() {
28166        this._initHandlers(), this._eachVertexHandler(function(t2) {
28167          t2.addHooks();
28168        });
28169      },
28170      removeHooks: function() {
28171        this._eachVertexHandler(function(t2) {
28172          t2.removeHooks();
28173        });
28174      },
28175      updateMarkers: function() {
28176        this._eachVertexHandler(function(t2) {
28177          t2.updateMarkers();
28178        });
28179      },
28180      _initHandlers: function() {
28181        this._verticesHandlers = [];
28182        for (var t2 = 0; t2 < this.latlngs.length; t2++)
28183          this._verticesHandlers.push(new L.Edit.PolyVerticesEdit(this._poly, this.latlngs[t2], this.options));
28184      },
28185      _updateLatLngs: function(t2) {
28186        this.latlngs = [t2.layer._latlngs], t2.layer._holes && (this.latlngs = this.latlngs.concat(t2.layer._holes));
28187      }
28188    }), L.Edit.PolyVerticesEdit = L.Handler.extend({
28189      options: {
28190        icon: new L.DivIcon({
28191          iconSize: new L.Point(8, 8),
28192          className: "leaflet-div-icon leaflet-editing-icon"
28193        }),
28194        touchIcon: new L.DivIcon({
28195          iconSize: new L.Point(20, 20),
28196          className: "leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"
28197        }),
28198        drawError: {
28199          color: "#b00b00",
28200          timeout: 1e3
28201        }
28202      },
28203      initialize: function(t2, e2, i3) {
28204        L.Browser.touch && (this.options.icon = this.options.touchIcon), this._poly = t2, i3 && i3.drawError && (i3.drawError = L.Util.extend({}, this.options.drawError, i3.drawError)), this._latlngs = e2, L.setOptions(this, i3);
28205      },
28206      _defaultShape: function() {
28207        return L.Polyline._flat ? L.Polyline._flat(this._latlngs) ? this._latlngs : this._latlngs[0] : this._latlngs;
28208      },
28209      addHooks: function() {
28210        var t2 = this._poly;
28211        t2 instanceof L.Polygon || (t2.options.fill = false, t2.options.editing && (t2.options.editing.fill = false)), t2.setStyle(t2.options.editing), this._poly._map && (this._map = this._poly._map, this._markerGroup || this._initMarkers(), this._poly._map.addLayer(this._markerGroup));
28212      },
28213      removeHooks: function() {
28214        var t2 = this._poly;
28215        t2.setStyle(t2.options.original), t2._map && (t2._map.removeLayer(this._markerGroup), delete this._markerGroup, delete this._markers);
28216      },
28217      updateMarkers: function() {
28218        this._markerGroup.clearLayers(), this._initMarkers();
28219      },
28220      _initMarkers: function() {
28221        this._markerGroup || (this._markerGroup = new L.LayerGroup()), this._markers = [];
28222        var t2, e2, i3, o2, n = this._defaultShape();
28223        for (t2 = 0, i3 = n.length; t2 < i3; t2++)
28224          o2 = this._createMarker(n[t2], t2), o2.on("click", this._onMarkerClick, this), this._markers.push(o2);
28225        var a, s;
28226        for (t2 = 0, e2 = i3 - 1; t2 < i3; e2 = t2++)
28227          (0 !== t2 || L.Polygon && this._poly instanceof L.Polygon) && (a = this._markers[e2], s = this._markers[t2], this._createMiddleMarker(a, s), this._updatePrevNext(a, s));
28228      },
28229      _createMarker: function(t2, e2) {
28230        var i3 = new L.Marker.Touch(t2, {
28231          draggable: true,
28232          icon: this.options.icon
28233        });
28234        return i3._origLatLng = t2, i3._index = e2, i3.on("dragstart", this._onMarkerDragStart, this).on("drag", this._onMarkerDrag, this).on("dragend", this._fireEdit, this).on("touchmove", this._onTouchMove, this).on("touchend", this._fireEdit, this).on("MSPointerMove", this._onTouchMove, this).on("MSPointerUp", this._fireEdit, this), this._markerGroup.addLayer(i3), i3;
28235      },
28236      _onMarkerDragStart: function() {
28237        this._poly.fire("editstart");
28238      },
28239      _spliceLatLngs: function() {
28240        var t2 = this._defaultShape(), e2 = [].splice.apply(t2, arguments);
28241        return this._poly._convertLatLngs(t2, true), this._poly.redraw(), e2;
28242      },
28243      _removeMarker: function(t2) {
28244        var e2 = t2._index;
28245        this._markerGroup.removeLayer(t2), this._markers.splice(e2, 1), this._spliceLatLngs(e2, 1), this._updateIndexes(e2, -1), t2.off("dragstart", this._onMarkerDragStart, this).off("drag", this._onMarkerDrag, this).off("dragend", this._fireEdit, this).off("touchmove", this._onMarkerDrag, this).off("touchend", this._fireEdit, this).off("click", this._onMarkerClick, this).off("MSPointerMove", this._onTouchMove, this).off("MSPointerUp", this._fireEdit, this);
28246      },
28247      _fireEdit: function() {
28248        this._poly.edited = true, this._poly.fire("edit"), this._poly._map.fire(L.Draw.Event.EDITVERTEX, {
28249          layers: this._markerGroup,
28250          poly: this._poly
28251        });
28252      },
28253      _onMarkerDrag: function(t2) {
28254        var e2 = t2.target, i3 = this._poly;
28255        if (L.extend(e2._origLatLng, e2._latlng), e2._middleLeft && e2._middleLeft.setLatLng(this._getMiddleLatLng(e2._prev, e2)), e2._middleRight && e2._middleRight.setLatLng(this._getMiddleLatLng(e2, e2._next)), i3.options.poly) {
28256          var o2 = i3._map._editTooltip;
28257          if (!i3.options.poly.allowIntersection && i3.intersects()) {
28258            var n = i3.options.color;
28259            i3.setStyle({
28260              color: this.options.drawError.color
28261            }), 0 !== L.version.indexOf("0.7") && e2.dragging._draggable._onUp(t2), this._onMarkerClick(t2), o2 && o2.updateContent({
28262              text: L.drawLocal.draw.handlers.polyline.error
28263            }), setTimeout(function() {
28264              i3.setStyle({
28265                color: n
28266              }), o2 && o2.updateContent({
28267                text: L.drawLocal.edit.handlers.edit.tooltip.text,
28268                subtext: L.drawLocal.edit.handlers.edit.tooltip.subtext
28269              });
28270            }, 1e3);
28271          }
28272        }
28273        this._poly.redraw(), this._poly.fire("editdrag");
28274      },
28275      _onMarkerClick: function(t2) {
28276        var e2 = L.Polygon && this._poly instanceof L.Polygon ? 4 : 3, i3 = t2.target;
28277        this._defaultShape().length < e2 || (this._removeMarker(i3), this._updatePrevNext(i3._prev, i3._next), i3._middleLeft && this._markerGroup.removeLayer(i3._middleLeft), i3._middleRight && this._markerGroup.removeLayer(i3._middleRight), i3._prev && i3._next ? this._createMiddleMarker(i3._prev, i3._next) : i3._prev ? i3._next || (i3._prev._middleRight = null) : i3._next._middleLeft = null, this._fireEdit());
28278      },
28279      _onTouchMove: function(t2) {
28280        var e2 = this._map.mouseEventToLayerPoint(t2.originalEvent.touches[0]), i3 = this._map.layerPointToLatLng(e2), o2 = t2.target;
28281        L.extend(o2._origLatLng, i3), o2._middleLeft && o2._middleLeft.setLatLng(this._getMiddleLatLng(o2._prev, o2)), o2._middleRight && o2._middleRight.setLatLng(this._getMiddleLatLng(o2, o2._next)), this._poly.redraw(), this.updateMarkers();
28282      },
28283      _updateIndexes: function(t2, e2) {
28284        this._markerGroup.eachLayer(function(i3) {
28285          i3._index > t2 && (i3._index += e2);
28286        });
28287      },
28288      _createMiddleMarker: function(t2, e2) {
28289        var i3, o2, n, a = this._getMiddleLatLng(t2, e2), s = this._createMarker(a);
28290        s.setOpacity(0.6), t2._middleRight = e2._middleLeft = s, o2 = function() {
28291          s.off("touchmove", o2, this);
28292          var n2 = e2._index;
28293          s._index = n2, s.off("click", i3, this).on("click", this._onMarkerClick, this), a.lat = s.getLatLng().lat, a.lng = s.getLatLng().lng, this._spliceLatLngs(n2, 0, a), this._markers.splice(n2, 0, s), s.setOpacity(1), this._updateIndexes(n2, 1), e2._index++, this._updatePrevNext(t2, s), this._updatePrevNext(s, e2), this._poly.fire("editstart");
28294        }, n = function() {
28295          s.off("dragstart", o2, this), s.off("dragend", n, this), s.off("touchmove", o2, this), this._createMiddleMarker(t2, s), this._createMiddleMarker(s, e2);
28296        }, i3 = function() {
28297          o2.call(this), n.call(this), this._fireEdit();
28298        }, s.on("click", i3, this).on("dragstart", o2, this).on("dragend", n, this).on("touchmove", o2, this), this._markerGroup.addLayer(s);
28299      },
28300      _updatePrevNext: function(t2, e2) {
28301        t2 && (t2._next = e2), e2 && (e2._prev = t2);
28302      },
28303      _getMiddleLatLng: function(t2, e2) {
28304        var i3 = this._poly._map, o2 = i3.project(t2.getLatLng()), n = i3.project(e2.getLatLng());
28305        return i3.unproject(o2._add(n)._divideBy(2));
28306      }
28307    }), L.Polyline.addInitHook(function() {
28308      this.editing || (L.Edit.Poly && (this.editing = new L.Edit.Poly(this, this.options.poly), this.options.editable && this.editing.enable()), this.on("add", function() {
28309        this.editing && this.editing.enabled() && this.editing.addHooks();
28310      }), this.on("remove", function() {
28311        this.editing && this.editing.enabled() && this.editing.removeHooks();
28312      }));
28313    }), L.Edit = L.Edit || {}, L.Edit.SimpleShape = L.Handler.extend({
28314      options: {
28315        moveIcon: new L.DivIcon({
28316          iconSize: new L.Point(8, 8),
28317          className: "leaflet-div-icon leaflet-editing-icon leaflet-edit-move"
28318        }),
28319        resizeIcon: new L.DivIcon({
28320          iconSize: new L.Point(8, 8),
28321          className: "leaflet-div-icon leaflet-editing-icon leaflet-edit-resize"
28322        }),
28323        touchMoveIcon: new L.DivIcon({
28324          iconSize: new L.Point(20, 20),
28325          className: "leaflet-div-icon leaflet-editing-icon leaflet-edit-move leaflet-touch-icon"
28326        }),
28327        touchResizeIcon: new L.DivIcon({
28328          iconSize: new L.Point(20, 20),
28329          className: "leaflet-div-icon leaflet-editing-icon leaflet-edit-resize leaflet-touch-icon"
28330        })
28331      },
28332      initialize: function(t2, e2) {
28333        L.Browser.touch && (this.options.moveIcon = this.options.touchMoveIcon, this.options.resizeIcon = this.options.touchResizeIcon), this._shape = t2, L.Util.setOptions(this, e2);
28334      },
28335      addHooks: function() {
28336        var t2 = this._shape;
28337        this._shape._map && (this._map = this._shape._map, t2.setStyle(t2.options.editing), t2._map && (this._map = t2._map, this._markerGroup || this._initMarkers(), this._map.addLayer(this._markerGroup)));
28338      },
28339      removeHooks: function() {
28340        var t2 = this._shape;
28341        if (t2.setStyle(t2.options.original), t2._map) {
28342          this._unbindMarker(this._moveMarker);
28343          for (var e2 = 0, i3 = this._resizeMarkers.length; e2 < i3; e2++)
28344            this._unbindMarker(this._resizeMarkers[e2]);
28345          this._resizeMarkers = null, this._map.removeLayer(this._markerGroup), delete this._markerGroup;
28346        }
28347        this._map = null;
28348      },
28349      updateMarkers: function() {
28350        this._markerGroup.clearLayers(), this._initMarkers();
28351      },
28352      _initMarkers: function() {
28353        this._markerGroup || (this._markerGroup = new L.LayerGroup()), this._createMoveMarker(), this._createResizeMarker();
28354      },
28355      _createMoveMarker: function() {
28356      },
28357      _createResizeMarker: function() {
28358      },
28359      _createMarker: function(t2, e2) {
28360        var i3 = new L.Marker.Touch(t2, {
28361          draggable: true,
28362          icon: e2,
28363          zIndexOffset: 10
28364        });
28365        return this._bindMarker(i3), this._markerGroup.addLayer(i3), i3;
28366      },
28367      _bindMarker: function(t2) {
28368        t2.on("dragstart", this._onMarkerDragStart, this).on("drag", this._onMarkerDrag, this).on("dragend", this._onMarkerDragEnd, this).on("touchstart", this._onTouchStart, this).on("touchmove", this._onTouchMove, this).on("MSPointerMove", this._onTouchMove, this).on("touchend", this._onTouchEnd, this).on("MSPointerUp", this._onTouchEnd, this);
28369      },
28370      _unbindMarker: function(t2) {
28371        t2.off("dragstart", this._onMarkerDragStart, this).off("drag", this._onMarkerDrag, this).off("dragend", this._onMarkerDragEnd, this).off("touchstart", this._onTouchStart, this).off("touchmove", this._onTouchMove, this).off("MSPointerMove", this._onTouchMove, this).off("touchend", this._onTouchEnd, this).off("MSPointerUp", this._onTouchEnd, this);
28372      },
28373      _onMarkerDragStart: function(t2) {
28374        t2.target.setOpacity(0), this._shape.fire("editstart");
28375      },
28376      _fireEdit: function() {
28377        this._shape.edited = true, this._shape.fire("edit");
28378      },
28379      _onMarkerDrag: function(t2) {
28380        var e2 = t2.target, i3 = e2.getLatLng();
28381        e2 === this._moveMarker ? this._move(i3) : this._resize(i3), this._shape.redraw(), this._shape.fire("editdrag");
28382      },
28383      _onMarkerDragEnd: function(t2) {
28384        t2.target.setOpacity(1), this._fireEdit();
28385      },
28386      _onTouchStart: function(t2) {
28387        if (L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this, t2), "function" == typeof this._getCorners) {
28388          var e2 = this._getCorners(), i3 = t2.target, o2 = i3._cornerIndex;
28389          i3.setOpacity(0), this._oppositeCorner = e2[(o2 + 2) % 4], this._toggleCornerMarkers(0, o2);
28390        }
28391        this._shape.fire("editstart");
28392      },
28393      _onTouchMove: function(t2) {
28394        var e2 = this._map.mouseEventToLayerPoint(t2.originalEvent.touches[0]), i3 = this._map.layerPointToLatLng(e2);
28395        return t2.target === this._moveMarker ? this._move(i3) : this._resize(i3), this._shape.redraw(), false;
28396      },
28397      _onTouchEnd: function(t2) {
28398        t2.target.setOpacity(1), this.updateMarkers(), this._fireEdit();
28399      },
28400      _move: function() {
28401      },
28402      _resize: function() {
28403      }
28404    }), L.Edit = L.Edit || {}, L.Edit.Rectangle = L.Edit.SimpleShape.extend({
28405      _createMoveMarker: function() {
28406        var t2 = this._shape.getBounds(), e2 = t2.getCenter();
28407        this._moveMarker = this._createMarker(e2, this.options.moveIcon);
28408      },
28409      _createResizeMarker: function() {
28410        var t2 = this._getCorners();
28411        this._resizeMarkers = [];
28412        for (var e2 = 0, i3 = t2.length; e2 < i3; e2++)
28413          this._resizeMarkers.push(this._createMarker(t2[e2], this.options.resizeIcon)), this._resizeMarkers[e2]._cornerIndex = e2;
28414      },
28415      _onMarkerDragStart: function(t2) {
28416        L.Edit.SimpleShape.prototype._onMarkerDragStart.call(this, t2);
28417        var e2 = this._getCorners(), i3 = t2.target, o2 = i3._cornerIndex;
28418        this._oppositeCorner = e2[(o2 + 2) % 4], this._toggleCornerMarkers(0, o2);
28419      },
28420      _onMarkerDragEnd: function(t2) {
28421        var e2, i3, o2 = t2.target;
28422        o2 === this._moveMarker && (e2 = this._shape.getBounds(), i3 = e2.getCenter(), o2.setLatLng(i3)), this._toggleCornerMarkers(1), this._repositionCornerMarkers(), L.Edit.SimpleShape.prototype._onMarkerDragEnd.call(this, t2);
28423      },
28424      _move: function(t2) {
28425        for (var e2, i3 = this._shape._defaultShape ? this._shape._defaultShape() : this._shape.getLatLngs(), o2 = this._shape.getBounds(), n = o2.getCenter(), a = [], s = 0, r = i3.length; s < r; s++)
28426          e2 = [i3[s].lat - n.lat, i3[s].lng - n.lng], a.push([t2.lat + e2[0], t2.lng + e2[1]]);
28427        this._shape.setLatLngs(a), this._repositionCornerMarkers(), this._map.fire(L.Draw.Event.EDITMOVE, {
28428          layer: this._shape
28429        });
28430      },
28431      _resize: function(t2) {
28432        var e2;
28433        this._shape.setBounds(L.latLngBounds(t2, this._oppositeCorner)), e2 = this._shape.getBounds(), this._moveMarker.setLatLng(e2.getCenter()), this._map.fire(L.Draw.Event.EDITRESIZE, {
28434          layer: this._shape
28435        });
28436      },
28437      _getCorners: function() {
28438        var t2 = this._shape.getBounds();
28439        return [t2.getNorthWest(), t2.getNorthEast(), t2.getSouthEast(), t2.getSouthWest
28439()];
28440      },
28441      _toggleCornerMarkers: function(t2) {
28442        for (var e2 = 0, i3 = this._resizeMarkers.length; e2 < i3; e2++)
28443          this._resizeMarkers[e2].setOpacity(t2);
28444      },
28445      _repositionCornerMarkers: function() {
28446        for (var t2 = this._getCorners(), e2 = 0, i3 = this._resizeMarkers.length; e2 < i3; e2++)
28447          this._resizeMarkers[e2].setLatLng(t2[e2]);
28448      }
28449    }), L.Rectangle.addInitHook(function() {
28450      L.Edit.Rectangle && (this.editing = new L.Edit.Rectangle(this), this.options.editable && this.editing.enable());
28451    }), L.Edit = L.Edit || {}, L.Edit.CircleMarker = L.Edit.SimpleShape.extend({
28452      _createMoveMarker: function() {
28453        var t2 = this._shape.getLatLng();
28454        this._moveMarker = this._createMarker(t2, this.options.moveIcon);
28455      },
28456      _createResizeMarker: function() {
28457        this._resizeMarkers = [];
28458      },
28459      _move: function(t2) {
28460        if (this._resizeMarkers.length) {
28461          var e2 = this._getResizeMarkerPoint(t2);
28462          this._resizeMarkers[0].setLatLng(e2);
28463        }
28464        this._shape.setLatLng(t2), this._map.fire(L.Draw.Event.EDITMOVE, {
28465          layer: this._shape
28466        });
28467      }
28468    }), L.CircleMarker.addInitHook(function() {
28469      L.Edit.CircleMarker && (this.editing = new L.Edit.CircleMarker(this), this.options.editable && this.editing.enable()), this.on("add", function() {
28470        this.editing && this.editing.enabled() && this.editing.addHooks();
28471      }), this.on("remove", function() {
28472        this.editing && this.editing.enabled() && this.editing.removeHooks();
28473      });
28474    }), L.Edit = L.Edit || {}, L.Edit.Circle = L.Edit.CircleMarker.extend({
28475      _createResizeMarker: function() {
28476        var t2 = this._shape.getLatLng(), e2 = this._getResizeMarkerPoint(t2);
28477        this._resizeMarkers = [], this._resizeMarkers.push(this._createMarker(e2, this.options.resizeIcon));
28478      },
28479      _getResizeMarkerPoint: function(t2) {
28480        var e2 = this._shape._radius * Math.cos(Math.PI / 4), i3 = this._map.project(t2);
28481        return this._map.unproject([i3.x + e2, i3.y - e2]);
28482      },
28483      _resize: function(t2) {
28484        var e2 = this._moveMarker.getLatLng(), i3 = this._map.distance(e2, t2);
28485        this._shape.setRadius(i3), this._map.fire(L.Draw.Event.EDITRESIZE, {
28486          layer: this._shape
28487        });
28488      }
28489    }), L.Circle.addInitHook(function() {
28490      L.Edit.Circle && (this.editing = new L.Edit.Circle(this), this.options.editable && this.editing.enable()), this.on("add", function() {
28491        this.editing && this.editing.enabled() && this.editing.addHooks();
28492      }), this.on("remove", function() {
28493        this.editing && this.editing.enabled() && this.editing.removeHooks();
28494      });
28495    }), L.Map.mergeOptions({
28496      touchExtend: true
28497    }), L.Map.TouchExtend = L.Handler.extend({
28498      initialize: function(t2) {
28499        this._map = t2, this._container = t2._container, this._pane = t2._panes.overlayPane;
28500      },
28501      addHooks: function() {
28502        L.DomEvent.on(this._container, "touchstart", this._onTouchStart, this), L.DomEvent.on(this._container, "touchend", this._onTouchEnd, this), L.DomEvent.on(this._container, "touchmove", this._onTouchMove, this), this._detectIE() ? (L.DomEvent.on(this._container, "MSPointerDown", this._onTouchStart, this), L.DomEvent.on(this._container, "MSPointerUp", this._onTouchEnd, this), L.DomEvent.on(this._container, "MSPointerMove", this._onTouchMove, this), L.DomEvent.on(this._container, "MSPointerCancel", this._onTouchCancel, this)) : (L.DomEvent.on(this._container, "touchcancel", this._onTouchCancel, this), L.DomEvent.on(this._container, "touchleave", this._onTouchLeave, this));
28503      },
28504      removeHooks: function() {
28505        L.DomEvent.off(this._container, "touchstart", this._onTouchStart), L.DomEvent.off(this._container, "touchend", this._onTouchEnd), L.DomEvent.off(this._container, "touchmove", this._onTouchMove), this._detectIE() ? (L.DomEvent.off(this._container, "MSPointerDowm", this._onTouchStart), L.DomEvent.off(this._container, "MSPointerUp", this._onTouchEnd), L.DomEvent.off(this._container, "MSPointerMove", this._onTouchMove), L.DomEvent.off(this._container, "MSPointerCancel", this._onTouchCancel)) : (L.DomEvent.off(this._container, "touchcancel", this._onTouchCancel), L.DomEvent.off(this._container, "touchleave", this._onTouchLeave));
28506      },
28507      _touchEvent: function(t2, e2) {
28508        var i3 = {};
28509        if (void 0 !== t2.touches) {
28510          if (!t2.touches.length)
28511            return;
28512          i3 = t2.touches[0];
28513        } else {
28514          if ("touch" !== t2.pointerType)
28515            return;
28516          if (i3 = t2, !this._filterClick(t2))
28517            return;
28518        }
28519        var o2 = this._map.mouseEventToContainerPoint(i3), n = this._map.mouseEventToLayerPoint(i3), a = this._map.layerPointToLatLng(n);
28520        this._map.fire(e2, {
28521          latlng: a,
28522          layerPoint: n,
28523          containerPoint: o2,
28524          pageX: i3.pageX,
28525          pageY: i3.pageY,
28526          originalEvent: t2
28527        });
28528      },
28529      _filterClick: function(t2) {
28530        var e2 = t2.timeStamp || t2.originalEvent.timeStamp, i3 = L.DomEvent._lastClick && e2 - L.DomEvent._lastClick;
28531        return i3 && i3 > 100 && i3 < 500 || t2.target._simulatedClick && !t2._simulated ? (L.DomEvent.stop(t2), false) : (L.DomEvent._lastClick = e2, true);
28532      },
28533      _onTouchStart: function(t2) {
28534        if (this._map._loaded) {
28535          this._touchEvent(t2, "touchstart");
28536        }
28537      },
28538      _onTouchEnd: function(t2) {
28539        if (this._map._loaded) {
28540          this._touchEvent(t2, "touchend");
28541        }
28542      },
28543      _onTouchCancel: function(t2) {
28544        if (this._map._loaded) {
28545          var e2 = "touchcancel";
28546          this._detectIE() && (e2 = "pointercancel"), this._touchEvent(t2, e2);
28547        }
28548      },
28549      _onTouchLeave: function(t2) {
28550        if (this._map._loaded) {
28551          this._touchEvent(t2, "touchleave");
28552        }
28553      },
28554      _onTouchMove: function(t2) {
28555        if (this._map._loaded) {
28556          this._touchEvent(t2, "touchmove");
28557        }
28558      },
28559      _detectIE: function() {
28560        var e2 = t.navigator.userAgent, i3 = e2.indexOf("MSIE ");
28561        if (i3 > 0)
28562          return parseInt(e2.substring(i3 + 5, e2.indexOf(".", i3)), 10);
28563        if (e2.indexOf("Trident/") > 0) {
28564          var o2 = e2.indexOf("rv:");
28565          return parseInt(e2.substring(o2 + 3, e2.indexOf(".", o2)), 10);
28566        }
28567        var n = e2.indexOf("Edge/");
28568        return n > 0 && parseInt(e2.substring(n + 5, e2.indexOf(".", n)), 10);
28569      }
28570    }), L.Map.addInitHook("addHandler", "touchExtend", L.Map.TouchExtend), L.Marker.Touch = L.Marker.extend({
28571      _initInteraction: function() {
28572        return this.addInteractiveTarget ? L.Marker.prototype._initInteraction.apply(this) : this._initInteractionLegacy();
28573      },
28574      _initInteractionLegacy: function() {
28575        if (this.options.clickable) {
28576          var t2 = this._icon, e2 = ["dblclick", "mousedown", "mouseover", "mouseout", "contextmenu", "touchstart", "touchend", "touchmove"];
28577          this._detectIE ? e2.concat(["MSPointerDown", "MSPointerUp", "MSPointerMove", "MSPointerCancel"]) : e2.concat(["touchcancel"]), L.DomUtil.addClass(t2, "leaflet-clickable"), L.DomEvent.on(t2, "click", this._onMouseClick, this), L.DomEvent.on(t2, "keypress", this._onKeyPress, this);
28578          for (var i3 = 0; i3 < e2.length; i3++)
28579            L.DomEvent.on(t2, e2[i3], this._fireMouseEvent, this);
28580          L.Handler.MarkerDrag && (this.dragging = new L.Handler.MarkerDrag(this), this.options.draggable && this.dragging.enable());
28581        }
28582      },
28583      _detectIE: function() {
28584        var e2 = t.navigator.userAgent, i3 = e2.indexOf("MSIE ");
28585        if (i3 > 0)
28586          return parseInt(e2.substring(i3 + 5, e2.indexOf(".", i3)), 10);
28587        if (e2.indexOf("Trident/") > 0) {
28588          var o2 = e2.indexOf("rv:");
28589          return parseInt(e2.substring(o2 + 3, e2.indexOf(".", o2)), 10);
28590        }
28591        var n = e2.indexOf("Edge/");
28592        return n > 0 && parseInt(e2.substring(n + 5, e2.indexOf(".", n)), 10);
28593      }
28594    }), L.LatLngUtil = {
28595      cloneLatLngs: function(t2) {
28596        for (var e2 = [], i3 = 0, o2 = t2.length; i3 < o2; i3++)
28597          Array.isArray(t2[i3]) ? e2.push(L.LatLngUtil.cloneLatLngs(t2[i3])) : e2.push(this.cloneLatLng(t2[i3]));
28598        return e2;
28599      },
28600      cloneLatLng: function(t2) {
28601        return L.latLng(t2.lat, t2.lng);
28602      }
28603    }, function() {
28604      var t2 = {
28605        km: 2,
28606        ha: 2,
28607        m: 0,
28608        mi: 2,
28609        ac: 2,
28610        yd: 0,
28611        ft: 0,
28612        nm: 2
28613      };
28614      L.GeometryUtil = L.extend(L.GeometryUtil || {}, {
28615        geodesicArea: function(t3) {
28616          var e2, i3, o2 = t3.length, n = 0, a = Math.PI / 180;
28617          if (o2 > 2) {
28618            for (var s = 0; s < o2; s++)
28619              e2 = t3[s], i3 = t3[(s + 1) % o2], n += (i3.lng - e2.lng) * a * (2 + Math.sin(e2.lat * a) + Math.sin(i3.lat * a));
28620            n = 6378137 * n * 6378137 / 2;
28621          }
28622          return Math.abs(n);
28623        },
28624        formattedNumber: function(t3, e2) {
28625          var i3 = parseFloat(t3).toFixed(e2), o2 = L.drawLocal.format && L.drawLocal.format.numeric, n = o2 && o2.delimiters, a = n && n.thousands, s = n && n.decimal;
28626          if (a || s) {
28627            var r = i3.split(".");
28628            i3 = a ? r[0].replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1" + a) : r[0], s = s || ".", r.length > 1 && (i3 = i3 + s + r[1]);
28629          }
28630          return i3;
28631        },
28632        readableArea: function(e2, i3, o2) {
28633          var n, a, o2 = L.Util.extend({}, t2, o2);
28634          return i3 ? (a = ["ha", "m"], type = typeof i3, "string" === type ? a = [i3] : "boolean" !== type && (a = i3), n = e2 >= 1e6 && -1 !== a.indexOf("km") ? L.GeometryUtil.formattedNumber(1e-6 * e2, o2.km) + " km\xB2" : e2 >= 1e4 && -1 !== a.indexOf("ha") ? L.GeometryUtil.formattedNumber(1e-4 * e2, o2.ha) + " ha" : L.GeometryUtil.formattedNumber(e2, o2.m) + " m\xB2") : (e2 /= 0.836127, n = e2 >= 3097600 ? L.GeometryUtil.formattedNumber(e2 / 3097600, o2.mi) + " mi\xB2" : e2 >= 4840 ? L.GeometryUtil.formattedNumber(e2 / 4840, o2.ac) + " acres" : L.GeometryUtil.formattedNumber(e2, o2.yd) + " yd\xB2"), n;
28635        },
28636        readableDistance: function(e2, i3, o2, n, a) {
28637          var s, a = L.Util.extend({}, t2, a);
28638          switch (i3 ? "string" == typeof i3 ? i3 : "metric" : o2 ? "feet" : n ? "nauticalMile" : "yards") {
28639            case "metric":
28640              s = e2 > 1e3 ? L.GeometryUtil.formattedNumber(e2 / 1e3, a.km) + " km" : L.GeometryUtil.formattedNumber(e2, a.m) + " m";
28641              break;
28642            case "feet":
28643              e2 *= 3.28083, s = L.GeometryUtil.formattedNumber(e2, a.ft) + " ft";
28644              break;
28645            case "nauticalMile":
28646              e2 *= 0.53996, s = L.GeometryUtil.formattedNumber(e2 / 1e3, a.nm) + " nm";
28647              break;
28648            case "yards":
28649            default:
28650              e2 *= 1.09361, s = e2 > 1760 ? L.GeometryUtil.formattedNumber(e2 / 1760, a.mi) + " miles" : L.GeometryUtil.formattedNumber(e2, a.yd) + " yd";
28651          }
28652          return s;
28653        }
28654      });
28655    }(), L.Util.extend(L.LineUtil, {
28656      segmentsIntersect: function(t2, e2, i3, o2) {
28657        return this._checkCounterclockwise(t2, i3, o2) !== this._checkCounterclockwise(e2, i3, o2) && this._checkCounterclockwise(t2, e2, i3) !== this._checkCounterclockwise(t2, e2, o2);
28658      },
28659      _checkCounterclockwise: function(t2, e2, i3) {
28660        return (i3.y - t2.y) * (e2.x - t2.x) > (e2.y - t2.y) * (i3.x - t2.x);
28661      }
28662    }), L.Polyline.include({
28663      intersects: function() {
28664        var t2, e2, i3, o2 = this._getProjectedPoints(), n = o2 ? o2.length : 0;
28665        if (this._tooFewPointsForIntersection())
28666          return false;
vendor: 16,384 bytes, lines 28667-28972
28667        for (t2 = n - 1; t2 >= 3; t2--)
28668          if (e2 = o2[t2 - 1], i3 = o2[t2], this._lineSegmentsIntersectsRange(e2, i3, t2 - 2))
28669            return true;
28670        return false;
28671      },
28672      newLatLngIntersects: function(t2, e2) {
28673        return !!this._map && this.newPointIntersects(this._map.latLngToLayerPoint(t2), e2);
28674      },
28675      newPointIntersects: function(t2, e2) {
28676        var i3 = this._getProjectedPoints(), o2 = i3 ? i3.length : 0, n = i3 ? i3[o2 - 1] : null, a = o2 - 2;
28677        return !this._tooFewPointsForIntersection(1) && this._lineSegmentsIntersectsRange(n, t2, a, e2 ? 1 : 0);
28678      },
28679      _tooFewPointsForIntersection: function(t2) {
28680        var e2 = this._getProjectedPoints(), i3 = e2 ? e2.length : 0;
28681        return i3 += t2 || 0, !e2 || i3 <= 3;
28682      },
28683      _lineSegmentsIntersectsRange: function(t2, e2, i3, o2) {
28684        var n, a, s = this._getProjectedPoints();
28685        o2 = o2 || 0;
28686        for (var r = i3; r > o2; r--)
28687          if (n = s[r - 1], a = s[r], L.LineUtil.segmentsIntersect(t2, e2, n, a))
28688            return true;
28689        return false;
28690      },
28691      _getProjectedPoints: function() {
28692        if (!this._defaultShape)
28693          return this._originalPoints;
28694        for (var t2 = [], e2 = this._defaultShape(), i3 = 0; i3 < e2.length; i3++)
28695          t2.push(this._map.latLngToLayerPoint(e2[i3]));
28696        return t2;
28697      }
28698    }), L.Polygon.include({
28699      intersects: function() {
28700        var t2, e2, i3, o2, n = this._getProjectedPoints();
28701        return !this._tooFewPointsForIntersection() && (!!L.Polyline.prototype.intersects.call(this) || (t2 = n.length, e2 = n[0], i3 = n[t2 - 1], o2 = t2 - 2, this._lineSegmentsIntersectsRange(i3, e2, o2, 1)));
28702      }
28703    }), L.Control.Draw = L.Control.extend({
28704      options: {
28705        position: "topleft",
28706        draw: {},
28707        edit: false
28708      },
28709      initialize: function(t2) {
28710        if (L.version < "0.7")
28711          throw new Error("Leaflet.draw 0.2.3+ requires Leaflet 0.7.0+. Download latest from https://github.com/Leaflet/Leaflet/");
28712        L.Control.prototype.initialize.call(this, t2);
28713        var e2;
28714        this._toolbars = {}, L.DrawToolbar && this.options.draw && (e2 = new L.DrawToolbar(this.options.draw), this._toolbars[L.DrawToolbar.TYPE] = e2, this._toolbars[L.DrawToolbar.TYPE].on("enable", this._toolbarEnabled, this)), L.EditToolbar && this.options.edit && (e2 = new L.EditToolbar(this.options.edit), this._toolbars[L.EditToolbar.TYPE] = e2, this._toolbars[L.EditToolbar.TYPE].on("enable", this._toolbarEnabled, this)), L.toolbar = this;
28715      },
28716      onAdd: function(t2) {
28717        var e2, i3 = L.DomUtil.create("div", "leaflet-draw"), o2 = false;
28718        for (var n in this._toolbars)
28719          this._toolbars.hasOwnProperty(n) && (e2 = this._toolbars[n].addToolbar(t2)) && (o2 || (L.DomUtil.hasClass(e2, "leaflet-draw-toolbar-top") || L.DomUtil.addClass(e2.childNodes[0], "leaflet-draw-toolbar-top"), o2 = true), i3.appendChild(e2));
28720        return i3;
28721      },
28722      onRemove: function() {
28723        for (var t2 in this._toolbars)
28724          this._toolbars.hasOwnProperty(t2) && this._toolbars[t2].removeToolbar();
28725      },
28726      setDrawingOptions: function(t2) {
28727        for (var e2 in this._toolbars)
28728          this._toolbars[e2] instanceof L.DrawToolbar && this._toolbars[e2].setOptions(t2);
28729      },
28730      _toolbarEnabled: function(t2) {
28731        var e2 = t2.target;
28732        for (var i3 in this._toolbars)
28733          this._toolbars[i3] !== e2 && this._toolbars[i3].disable();
28734      }
28735    }), L.Map.mergeOptions({
28736      drawControlTooltips: true,
28737      drawControl: false
28738    }), L.Map.addInitHook(function() {
28739      this.options.drawControl && (this.drawControl = new L.Control.Draw(), this.addControl(this.drawControl));
28740    }), L.Toolbar = L.Class.extend({
28741      initialize: function(t2) {
28742        L.setOptions(this, t2);
28743        this._modes = {};
28744        this._actionButtons = [];
28745        this._activeMode = null;
28746        var version = L.version.split(".");
28747        if (parseInt(version[0], 10) === 1 && parseInt(version[1], 10) >= 2) {
28748          L.Toolbar.include(L.Evented.prototype);
28749        } else {
28750          L.Toolbar.include(L.Mixin.Events);
28751        }
28752      },
28753      enabled: function() {
28754        return this._activeMode !== null;
28755      },
28756      disable: function() {
28757        this.enabled() && this._activeMode.handler.disable();
28758      },
28759      addToolbar: function(t2) {
28760        var e2, i3 = L.DomUtil.create("div", "leaflet-draw-section"), o2 = 0, n = this._toolbarClass || "", a = this.getModeHandlers(t2);
28761        for (this._toolbarContainer = L.DomUtil.create("div", "leaflet-draw-toolbar leaflet-bar"), this._map = t2, e2 = 0; e2 < a.length; e2++)
28762          a[e2].enabled && this._initModeHandler(a[e2].handler, this._toolbarContainer, o2++, n, a[e2].title);
28763        if (o2)
28764          return this._lastButtonIndex = --o2, this._actionsContainer = L.DomUtil.create("ul", "leaflet-draw-actions"), i3.appendChild(this._toolbarContainer), i3.appendChild(this._actionsContainer), i3;
28765      },
28766      removeToolbar: function() {
28767        for (var t2 in this._modes)
28768          this._modes.hasOwnProperty(t2) && (this._disposeButton(this._modes[t2].button, this._modes[t2].handler.enable, this._modes[t2].handler), this._modes[t2].handler.disable(), this._modes[t2].handler.off("enabled", this._handlerActivated, this).off("disabled", this._handlerDeactivated, this));
28769        this._modes = {};
28770        for (var e2 = 0, i3 = this._actionButtons.length; e2 < i3; e2++)
28771          this._disposeButton(this._actionButtons[e2].button, this._actionButtons[e2].callback, this);
28772        this._actionButtons = [], this._actionsContainer = null;
28773      },
28774      _initModeHandler: function(t2, e2, i3, o2, n) {
28775        var a = t2.type;
28776        this._modes[a] = {}, this._modes[a].handler = t2, this._modes[a].button = this._createButton({
28777          type: a,
28778          title: n,
28779          className: o2 + "-" + a,
28780          container: e2,
28781          callback: this._modes[a].handler.enable,
28782          context: this._modes[a].handler
28783        }), this._modes[a].buttonIndex = i3, this._modes[a].handler.on("enabled", this._handlerActivated, this).on("disabled", this._handlerDeactivated, this);
28784      },
28785      _detectIOS: function() {
28786        return /iPad|iPhone|iPod/.test(navigator.userAgent) && !t.MSStream;
28787      },
28788      _createButton: function(t2) {
28789        var e2 = L.DomUtil.create("a", t2.className || "", t2.container), i3 = L.DomUtil.create("span", "sr-only", t2.container);
28790        e2.href = "#", e2.appendChild(i3), t2.title && (e2.title = t2.title, i3.innerHTML = t2.title), t2.text && (e2.innerHTML = t2.text, i3.innerHTML = t2.text);
28791        var o2 = this._detectIOS() ? "touchstart" : "click";
28792        return L.DomEvent.on(e2, "click", L.DomEvent.stopPropagation).on(e2, "mousedown", L.DomEvent.stopPropagation).on(e2, "dblclick", L.DomEvent.stopPropagation).on(e2, "touchstart", L.DomEvent.stopPropagation).on(e2, "click", L.DomEvent.preventDefault).on(e2, o2, t2.callback, t2.context), e2;
28793      },
28794      _disposeButton: function(t2, e2) {
28795        var i3 = this._detectIOS() ? "touchstart" : "click";
28796        L.DomEvent.off(t2, "click", L.DomEvent.stopPropagation).off(t2, "mousedown", L.DomEvent.stopPropagation).off(t2, "dblclick", L.DomEvent.stopPropagation).off(t2, "touchstart", L.DomEvent.stopPropagation).off(t2, "click", L.DomEvent.preventDefault).off(t2, i3, e2);
28797      },
28798      _handlerActivated: function(t2) {
28799        this.disable(), this._activeMode = this._modes[t2.handler], L.DomUtil.addClass(this._activeMode.button, "leaflet-draw-toolbar-button-enabled"), this._showActionsToolbar(), this.fire("enable");
28800      },
28801      _handlerDeactivated: function() {
28802        this._hideActionsToolbar(), L.DomUtil.removeClass(this._activeMode.button, "leaflet-draw-toolbar-button-enabled"), this._activeMode = null, this.fire("disable");
28803      },
28804      _createActions: function(t2) {
28805        var e2, i3, o2, n, a = this._actionsContainer, s = this.getActions(t2), r = s.length;
28806        for (i3 = 0, o2 = this._actionButtons.length; i3 < o2; i3++)
28807          this._disposeButton(this._actionButtons[i3].button, this._actionButtons[i3].callback);
28808        for (this._actionButtons = []; a.firstChild; )
28809          a.removeChild(a.firstChild);
28810        for (var l = 0; l < r; l++)
28811          "enabled" in s[l] && !s[l].enabled || (e2 = L.DomUtil.create("li", "", a), n = this._createButton({
28812            title: s[l].title,
28813            text: s[l].text,
28814            container: e2,
28815            callback: s[l].callback,
28816            context: s[l].context
28817          }), this._actionButtons.push({
28818            button: n,
28819            callback: s[l].callback
28820          }));
28821      },
28822      _showActionsToolbar: function() {
28823        var t2 = this._activeMode.buttonIndex, e2 = this._lastButtonIndex, i3 = this._activeMode.button.offsetTop - 1;
28824        this._createActions(this._activeMode.handler), this._actionsContainer.style.top = i3 + "px", 0 === t2 && (L.DomUtil.addClass(this._toolbarContainer, "leaflet-draw-toolbar-notop"), L.DomUtil.addClass(this._actionsContainer, "leaflet-draw-actions-top")), t2 === e2 && (L.DomUtil.addClass(this._toolbarContainer, "leaflet-draw-toolbar-nobottom"), L.DomUtil.addClass(this._actionsContainer, "leaflet-draw-actions-bottom")), this._actionsContainer.style.display = "block";
28825      },
28826      _hideActionsToolbar: function() {
28827        this._actionsContainer.style.display = "none", L.DomUtil.removeClass(this._toolbarContainer, "leaflet-draw-toolbar-notop"), L.DomUtil.removeClass(this._toolbarContainer, "leaflet-draw-toolbar-nobottom"), L.DomUtil.removeClass(this._actionsContainer, "leaflet-draw-actions-top"), L.DomUtil.removeClass(this._actionsContainer, "leaflet-draw-actions-bottom");
28828      }
28829    }), L.Draw = L.Draw || {}, L.Draw.Tooltip = L.Class.extend({
28830      initialize: function(t2) {
28831        this._map = t2, this._popupPane = t2._panes.popupPane, this._visible = false, this._container = t2.options.drawControlTooltips ? L.DomUtil.create("div", "leaflet-draw-tooltip", this._popupPane) : null, this._singleLineLabel = false, this._map.on("mouseout", this._onMouseOut, this);
28832      },
28833      dispose: function() {
28834        this._map.off("mouseout", this._onMouseOut, this), this._container && (this._popupPane.removeChild(this._container), this._container = null);
28835      },
28836      updateContent: function(t2) {
28837        return this._container ? (t2.subtext = t2.subtext || "", 0 !== t2.subtext.length || this._singleLineLabel ? t2.subtext.length > 0 && this._singleLineLabel && (L.DomUtil.removeClass(this._container, "leaflet-draw-tooltip-single"), this._singleLineLabel = false) : (L.DomUtil.addClass(this._container, "leaflet-draw-tooltip-single"), this._singleLineLabel = true), this._container.innerHTML = (t2.subtext.length > 0 ? '<span class="leaflet-draw-tooltip-subtext">' + t2.subtext + "</span><br />" : "") + "<span>" + t2.text + "</span>", t2.text || t2.subtext ? (this._visible = true, this._container.style.visibility = "inherit") : (this._visible = false, this._container.style.visibility = "hidden"), this) : this;
28838      },
28839      updatePosition: function(t2) {
28840        var e2 = this._map.latLngToLayerPoint(t2), i3 = this._container;
28841        return this._container && (this._visible && (i3.style.visibility = "inherit"), L.DomUtil.setPosition(i3, e2)), this;
28842      },
28843      showAsError: function() {
28844        return this._container && L.DomUtil.addClass(this._container, "leaflet-error-draw-tooltip"), this;
28845      },
28846      removeError: function() {
28847        return this._container && L.DomUtil.removeClass(this._container, "leaflet-error-draw-tooltip"), this;
28848      },
28849      _onMouseOut: function() {
28850        this._container && (this._container.style.visibility = "hidden");
28851      }
28852    }), L.DrawToolbar = L.Toolbar.extend({
28853      statics: {
28854        TYPE: "draw"
28855      },
28856      options: {
28857        polyline: {},
28858        polygon: {},
28859        rectangle: {},
28860        circle: {},
28861        marker: {},
28862        circlemarker: {}
28863      },
28864      initialize: function(t2) {
28865        for (var e2 in this.options)
28866          this.options.hasOwnProperty(e2) && t2[e2] && (t2[e2] = L.extend({}, this.options[e2], t2[e2]));
28867        this._toolbarClass = "leaflet-draw-draw", L.Toolbar.prototype.initialize.call(this, t2);
28868      },
28869      getModeHandlers: function(t2) {
28870        return [{
28871          enabled: this.options.polyline,
28872          handler: new L.Draw.Polyline(t2, this.options.polyline),
28873          title: L.drawLocal.draw.toolbar.buttons.polyline
28874        }, {
28875          enabled: this.options.polygon,
28876          handler: new L.Draw.Polygon(t2, this.options.polygon),
28877          title: L.drawLocal.draw.toolbar.buttons.polygon
28878        }, {
28879          enabled: this.options.rectangle,
28880          handler: new L.Draw.Rectangle(t2, this.options.rectangle),
28881          title: L.drawLocal.draw.toolbar.buttons.rectangle
28882        }, {
28883          enabled: this.options.circle,
28884          handler: new L.Draw.Circle(t2, this.options.circle),
28885          title: L.drawLocal.draw.toolbar.buttons.circle
28886        }, {
28887          enabled: this.options.marker,
28888          handler: new L.Draw.Marker(t2, this.options.marker),
28889          title: L.drawLocal.draw.toolbar.buttons.marker
28890        }, {
28891          enabled: this.options.circlemarker,
28892          handler: new L.Draw.CircleMarker(t2, this.options.circlemarker),
28893          title: L.drawLocal.draw.toolbar.buttons.circlemarker
28894        }];
28895      },
28896      getActions: function(t2) {
28897        return [{
28898          enabled: t2.completeShape,
28899          title: L.drawLocal.draw.toolbar.finish.title,
28900          text: L.drawLocal.draw.toolbar.finish.text,
28901          callback: t2.completeShape,
28902          context: t2
28903        }, {
28904          enabled: t2.deleteLastVertex,
28905          title: L.drawLocal.draw.toolbar.undo.title,
28906          text: L.drawLocal.draw.toolbar.undo.text,
28907          callback: t2.deleteLastVertex,
28908          context: t2
28909        }, {
28910          title: L.drawLocal.draw.toolbar.actions.title,
28911          text: L.drawLocal.draw.toolbar.actions.text,
28912          callback: this.disable,
28913          context: this
28914        }];
28915      },
28916      setOptions: function(t2) {
28917        L.setOptions(this, t2);
28918        for (var e2 in this._modes)
28919          this._modes.hasOwnProperty(e2) && t2.hasOwnProperty(e2) && this._modes[e2].handler.setOptions(t2[e2]);
28920      }
28921    }), L.EditToolbar = L.Toolbar.extend({
28922      statics: {
28923        TYPE: "edit"
28924      },
28925      options: {
28926        edit: {
28927          selectedPathOptions: {
28928            dashArray: "10, 10",
28929            fill: true,
28930            fillColor: "#fe57a1",
28931            fillOpacity: 0.1,
28932            maintainColor: false
28933          }
28934        },
28935        remove: {},
28936        poly: null,
28937        featureGroup: null
28938      },
28939      initialize: function(t2) {
28940        t2.edit && (void 0 === t2.edit.selectedPathOptions && (t2.edit.selectedPathOptions = this.options.edit.selectedPathOptions), t2.edit.selectedPathOptions = L.extend({}, this.options.edit.selectedPathOptions, t2.edit.selectedPathOptions)), t2.remove && (t2.remove = L.extend({}, this.options.remove, t2.remove)), t2.poly && (t2.poly = L.extend({}, this.options.poly, t2.poly)), this._toolbarClass = "leaflet-draw-edit", L.Toolbar.prototype.initialize.call(this, t2), this._selectedFeatureCount = 0;
28941      },
28942      getModeHandlers: function(t2) {
28943        var e2 = this.options.featureGroup;
28944        return [{
28945          enabled: this.options.edit,
28946          handler: new L.EditToolbar.Edit(t2, {
28947            featureGroup: e2,
28948            selectedPathOptions: this.options.edit.selectedPathOptions,
28949            poly: this.options.poly
28950          }),
28951          title: L.drawLocal.edit.toolbar.buttons.edit
28952        }, {
28953          enabled: this.options.remove,
28954          handler: new L.EditToolbar.Delete(t2, {
28955            featureGroup: e2
28956          }),
28957          title: L.drawLocal.edit.toolbar.buttons.remove
28958        }];
28959      },
28960      getActions: function(t2) {
28961        var e2 = [{
28962          title: L.drawLocal.edit.toolbar.actions.save.title,
28963          text: L.drawLocal.edit.toolbar.actions.save.text,
28964          callback: this._save,
28965          context: this
28966        }, {
28967          title: L.drawLocal.edit.toolbar.actions.cancel.title,
28968          text: L.drawLocal.edit.toolbar.actions.cancel.text,
28969          callback: this.disable,
28970          context: this
28971        }];
28972    
28972    return t2.removeAllLayers && e2.push({
28973          title: L.drawLocal.edit.toolbar.actions.clearAll.title,
28974          text: L.drawLocal.edit.toolbar.actions.clearAll.text,
28975          callback: this._clearAllLayers,
28976          context: this
28977        }), e2;
28978      },
28979      addToolbar: function(t2) {
28980        var e2 = L.Toolbar.prototype.addToolbar.call(this, t2);
28981        return this._checkDisabled(), this.options.featureGroup.on("layeradd layerremove", this._checkDisabled, this), e2;
28982      },
28983      removeToolbar: function() {
28984        this.options.featureGroup.off("layeradd layerremove", this._checkDisabled, this), L.Toolbar.prototype.removeToolbar.call(this);
28985      },
28986      disable: function() {
28987        this.enabled() && (this._activeMode.handler.revertLayers(), L.Toolbar.prototype.disable.call(this));
28988      },
28989      _save: function() {
28990        this._activeMode.handler.save(), this._activeMode && this._activeMode.handler.disable();
28991      },
28992      _clearAllLayers: function() {
28993        this._activeMode.handler.removeAllLayers(), this._activeMode && this._activeMode.handler.disable();
28994      },
28995      _checkDisabled: function() {
28996        var t2, e2 = this.options.featureGroup, i3 = 0 !== e2.getLayers().length;
28997        this.options.edit && (t2 = this._modes[L.EditToolbar.Edit.TYPE].button, i3 ? L.DomUtil.removeClass(t2, "leaflet-disabled") : L.DomUtil.addClass(t2, "leaflet-disabled"), t2.setAttribute("title", i3 ? L.drawLocal.edit.toolbar.buttons.edit : L.drawLocal.edit.toolbar.buttons.editDisabled)), this.options.remove && (t2 = this._modes[L.EditToolbar.Delete.TYPE].button, i3 ? L.DomUtil.removeClass(t2, "leaflet-disabled") : L.DomUtil.addClass(t2, "leaflet-disabled"), t2.setAttribute("title", i3 ? L.drawLocal.edit.toolbar.buttons.remove : L.drawLocal.edit.toolbar.buttons.removeDisabled));
28998      }
28999    }), L.EditToolbar.Edit = L.Handler.extend({
29000      statics: {
29001        TYPE: "edit"
29002      },
29003      initialize: function(t2, e2) {
29004        if (L.Handler.prototype.initialize.call(this, t2), L.setOptions(this, e2), this._featureGroup = e2.featureGroup, !(this._featureGroup instanceof L.FeatureGroup))
29005          throw new Error("options.featureGroup must be a L.FeatureGroup");
29006        this._uneditedLayerProps = {}, this.type = L.EditToolbar.Edit.TYPE;
29007        var version = L.version.split(".");
29008        if (parseInt(version[0], 10) === 1 && parseInt(version[1], 10) >= 2) {
29009          L.EditToolbar.Edit.include(L.Evented.prototype);
29010        } else {
29011          L.EditToolbar.Edit.include(L.Mixin.Events);
29012        }
29013      },
29014      enable: function() {
29015        !this._enabled && this._hasAvailableLayers() && (this.fire("enabled", {
29016          handler: this.type
29017        }), this._map.fire(L.Draw.Event.EDITSTART, {
29018          handler: this.type
29019        }), L.Handler.prototype.enable.call(this), this._featureGroup.on("layeradd", this._enableLayerEdit, this).on("layerremove", this._disableLayerEdit, this));
29020      },
29021      disable: function() {
29022        this._enabled && (this._featureGroup.off("layeradd", this._enableLayerEdit, this).off("layerremove", this._disableLayerEdit, this), L.Handler.prototype.disable.call(this), this._map.fire(L.Draw.Event.EDITSTOP, {
29023          handler: this.type
29024        }), this.fire("disabled", {
29025          handler: this.type
29026        }));
29027      },
29028      addHooks: function() {
29029        var t2 = this._map;
29030        t2 && (t2.getContainer().focus(), this._featureGroup.eachLayer(this._enableLayerEdit, this), this._tooltip = new L.Draw.Tooltip(this._map), this._tooltip.updateContent({
29031          text: L.drawLocal.edit.handlers.edit.tooltip.text,
29032          subtext: L.drawLocal.edit.handlers.edit.tooltip.subtext
29033        }), t2._editTooltip = this._tooltip, this._updateTooltip(), this._map.on("mousemove", this._onMouseMove, this).on("touchmove", this._onMouseMove, this).on("MSPointerMove", this._onMouseMove, this).on(L.Draw.Event.EDITVERTEX, this._updateTooltip, this));
29034      },
29035      removeHooks: function() {
29036        this._map && (this._featureGroup.eachLayer(this._disableLayerEdit, this), this._uneditedLayerProps = {}, this._tooltip.dispose(), this._tooltip = null, this._map.off("mousemove", this._onMouseMove, this).off("touchmove", this._onMouseMove, this).off("MSPointerMove", this._onMouseMove, this).off(L.Draw.Event.EDITVERTEX, this._updateTooltip, this));
29037      },
29038      revertLayers: function() {
29039        this._featureGroup.eachLayer(function(t2) {
29040          this._revertLayer(t2);
29041        }, this);
29042      },
29043      save: function() {
29044        var t2 = new L.LayerGroup();
29045        this._featureGroup.eachLayer(function(e2) {
29046          e2.edited && (t2.addLayer(e2), e2.edited = false);
29047        }), this._map.fire(L.Draw.Event.EDITED, {
29048          layers: t2
29049        });
29050      },
29051      _backupLayer: function(t2) {
29052        var e2 = L.Util.stamp(t2);
29053        this._uneditedLayerProps[e2] || (t2 instanceof L.Polyline || t2 instanceof L.Polygon || t2 instanceof L.Rectangle ? this._uneditedLayerProps[e2] = {
29054          latlngs: L.LatLngUtil.cloneLatLngs(t2.getLatLngs())
29055        } : t2 instanceof L.Circle ? this._uneditedLayerProps[e2] = {
29056          latlng: L.LatLngUtil.cloneLatLng(t2.getLatLng()),
29057          radius: t2.getRadius()
29058        } : (t2 instanceof L.Marker || t2 instanceof L.CircleMarker) && (this._uneditedLayerProps[e2] = {
29059          latlng: L.LatLngUtil.cloneLatLng(t2.getLatLng())
29060        }));
29061      },
29062      _getTooltipText: function() {
29063        return {
29064          text: L.drawLocal.edit.handlers.edit.tooltip.text,
29065          subtext: L.drawLocal.edit.handlers.edit.tooltip.subtext
29066        };
29067      },
29068      _updateTooltip: function() {
29069        this._tooltip.updateContent(this._getTooltipText());
29070      },
29071      _revertLayer: function(t2) {
29072        var e2 = L.Util.stamp(t2);
29073        t2.edited = false, this._uneditedLayerProps.hasOwnProperty(e2) && (t2 instanceof L.Polyline || t2 instanceof L.Polygon || t2 instanceof L.Rectangle ? t2.setLatLngs(this._uneditedLayerProps[e2].latlngs) : t2 instanceof L.Circle ? (t2.setLatLng(this._uneditedLayerProps[e2].latlng), t2.setRadius(this._uneditedLayerProps[e2].radius)) : (t2 instanceof L.Marker || t2 instanceof L.CircleMarker) && t2.setLatLng(this._uneditedLayerProps[e2].latlng), t2.fire("revert-edited", {
29074          layer: t2
29075        }));
29076      },
29077      _enableLayerEdit: function(t2) {
29078        var e2, i3, o2 = t2.layer || t2.target || t2;
29079        this._backupLayer(o2), this.options.poly && (i3 = L.Util.extend({}, this.options.poly), o2.options.poly = i3), this.options.selectedPathOptions && (e2 = L.Util.extend({}, this.options.selectedPathOptions), e2.maintainColor && (e2.color = o2.options.color, e2.fillColor = o2.options.fillColor), o2.options.original = L.extend({}, o2.options), o2.options.editing = e2), o2 instanceof L.Marker ? (o2.editing && o2.editing.enable(), o2.dragging.enable(), o2.on("dragend", this._onMarkerDragEnd).on("touchmove", this._onTouchMove, this).on("MSPointerMove", this._onTouchMove, this).on("touchend", this._onMarkerDragEnd, this).on("MSPointerUp", this._onMarkerDragEnd, this)) : o2.editing.enable();
29080      },
29081      _disableLayerEdit: function(t2) {
29082        var e2 = t2.layer || t2.target || t2;
29083        e2.edited = false, e2.editing && e2.editing.disable(), delete e2.options.editing, delete e2.options.original, this._selectedPathOptions && (e2 instanceof L.Marker ? this._toggleMarkerHighlight(e2) : (e2.setStyle(e2.options.previousOptions), delete e2.options.previousOptions)), e2 instanceof L.Marker ? (e2.dragging.disable(), e2.off("dragend", this._onMarkerDragEnd, this).off("touchmove", this._onTouchMove, this).off("MSPointerMove", this._onTouchMove, this).off("touchend", this._onMarkerDragEnd, this).off("MSPointerUp", this._onMarkerDragEnd, this)) : e2.editing.disable();
29084      },
29085      _onMouseMove: function(t2) {
29086        this._tooltip.updatePosition(t2.latlng);
29087      },
29088      _onMarkerDragEnd: function(t2) {
29089        var e2 = t2.target;
29090        e2.edited = true, this._map.fire(L.Draw.Event.EDITMOVE, {
29091          layer: e2
29092        });
29093      },
29094      _onTouchMove: function(t2) {
29095        var e2 = t2.originalEvent.changedTouches[0], i3 = this._map.mouseEventToLayerPoint(e2), o2 = this._map.layerPointToLatLng(i3);
29096        t2.target.setLatLng(o2);
29097      },
29098      _hasAvailableLayers: function() {
29099        return 0 !== this._featureGroup.getLayers().length;
29100      }
29101    }), L.EditToolbar.Delete = L.Handler.extend({
29102      statics: {
29103        TYPE: "remove"
29104      },
29105      initialize: function(t2, e2) {
29106        if (L.Handler.prototype.initialize.call(this, t2), L.Util.setOptions(this, e2), this._deletableLayers = this.options.featureGroup, !(this._deletableLayers instanceof L.FeatureGroup))
29107          throw new Error("options.featureGroup must be a L.FeatureGroup");
29108        this.type = L.EditToolbar.Delete.TYPE;
29109        var version = L.version.split(".");
29110        if (parseInt(version[0], 10) === 1 && parseInt(version[1], 10) >= 2) {
29111          L.EditToolbar.Delete.include(L.Evented.prototype);
29112        } else {
29113          L.EditToolbar.Delete.include(L.Mixin.Events);
29114        }
29115      },
29116      enable: function() {
29117        !this._enabled && this._hasAvailableLayers() && (this.fire("enabled", {
29118          handler: this.type
29119        }), this._map.fire(L.Draw.Event.DELETESTART, {
29120          handler: this.type
29121        }), L.Handler.prototype.enable.call(this), this._deletableLayers.on("layeradd", this._enableLayerDelete, this).on("layerremove", this._disableLayerDelete, this));
29122      },
29123      disable: function() {
29124        this._enabled && (this._deletableLayers.off("layeradd", this._enableLayerDelete, this).off("layerremove", this._disableLayerDelete, this), L.Handler.prototype.disable.call(this), this._map.fire(L.Draw.Event.DELETESTOP, {
29125          handler: this.type
29126        }), this.fire("disabled", {
29127          handler: this.type
29128        }));
29129      },
29130      addHooks: function() {
29131        var t2 = this._map;
29132        t2 && (t2.getContainer().focus(), this._deletableLayers.eachLayer(this._enableLayerDelete, this), this._deletedLayers = new L.LayerGroup(), this._tooltip = new L.Draw.Tooltip(this._map), this._tooltip.updateContent({
29133          text: L.drawLocal.edit.handlers.remove.tooltip.text
29134        }), this._map.on("mousemove", this._onMouseMove, this));
29135      },
29136      removeHooks: function() {
29137        this._map && (this._deletableLayers.eachLayer(this._disableLayerDelete, this), this._deletedLayers = null, this._tooltip.dispose(), this._tooltip = null, this._map.off("mousemove", this._onMouseMove, this));
29138      },
29139      revertLayers: function() {
29140        this._deletedLayers.eachLayer(function(t2) {
29141          this._deletableLayers.addLayer(t2), t2.fire("revert-deleted", {
29142            layer: t2
29143          });
29144        }, this);
29145      },
29146      save: function() {
29147        this._map.fire(L.Draw.Event.DELETED, {
29148          layers: this._deletedLayers
29149        });
29150      },
29151      removeAllLayers: function() {
29152        this._deletableLayers.eachLayer(function(t2) {
29153          this._removeLayer({
29154            layer: t2
29155          });
29156        }, this), this.save();
29157      },
29158      _enableLayerDelete: function(t2) {
29159        (t2.layer || t2.target || t2).on("click", this._removeLayer, this);
29160      },
29161      _disableLayerDelete: function(t2) {
29162        var e2 = t2.layer || t2.target || t2;
29163        e2.off("click", this._removeLayer, this), this._deletedLayers.removeLayer(e2);
29164      },
29165      _removeLayer: function(t2) {
29166        var e2 = t2.layer || t2.target || t2;
29167        this._deletableLayers.removeLayer(e2), this._deletedLayers.addLayer(e2), e2.fire("deleted");
29168      },
29169      _onMouseMove: function(t2) {
29170        this._tooltip.updatePosition(t2.latlng);
29171      },
29172      _hasAvailableLayers: function() {
29173        return 0 !== this._deletableLayers.getLayers().length;
29174      }
29175    });
29176  }(window, document);
29177
29178  
29178// frappe/public/js/libs.bundle.js
29179  var import_L_Control_Locate = __toESM(require_L_Control_Locate());
29180  var import_sortablejs = __toESM(require_Sortable_min());
29181  window.SetVueGlobals = (app) => {
29182    app.config.globalProperties.__ = window.__;
29183    app.config.globalProperties.frappe = window.frappe;
29184  };
29185  window.Sortable = import_sortablejs.default;
29186
29187  
29187// frappe/public/js/frappe/class.js
29188  (function(global2) {
29189    "use strict";
29190    var fnTest = /xyz/.test(function() {
29191      xyz;
29192    }) ? /\b_super\b/ : /.*/;
29193    function Class() {
29194    }
29195    Class.extend = function(props) {
29196      var _super = this.prototype;
29197      var proto = Object.create(_super);
29198      for (var name2 in props) {
29199        proto[name2] = typeof props[name2] === "function" && typeof _super[name2] == "function" && fnTest.test(props[name2]) ? function(name3, fn) {
29200          return function() {
29201            var tmp = this._super;
29202            this._super = _super[name3];
29203            var ret = fn.apply(this, arguments);
29204            this._super = tmp;
29205            return ret;
29206          };
29207        }(name2, props[name2]) : props[name2];
29208      }
29209      var newClass = typeof proto.init === "function" ? proto.hasOwnProperty("init") ? proto.init : function SubClass() {
29210        _super.init.apply(this, arguments);
29211      } : function EmptyClass() {
29212      };
29213      newClass.prototype = proto;
29214      proto.constructor = newClass;
29215      newClass.extend = Class.extend;
29216      return newClass;
29217    };
29218    global2.Class = Class;
29219  })(window);
29220
29221  
29221// frappe/public/js/frappe/polyfill.js
29222  if (!String.prototype.includes) {
29223    String.prototype.includes = function(search, start) {
29224      "use strict";
29225      if (typeof start !== "number") {
29226        start = 0;
29227      }
29228      if (start + search.length > this.length) {
29229        return false;
29230      } else {
29231        return this.indexOf(search, start) !== -1;
29232      }
29233    };
29234  }
29235  if (!Array.prototype.includes) {
29236    Object.defineProperty(Array.prototype, "includes", {
29237      value: function(searchElement, fromIndex) {
29238        if (this == null) {
29239          throw new TypeError('"this" is null or not defined');
29240        }
29241        var o = Object(this);
29242        var len = o.length >>> 0;
29243        if (len === 0) {
29244          return false;
29245        }
29246        var n = fromIndex | 0;
29247        var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);
29248        while (k < len) {
29249          if (o[k] === searchElement) {
29250            return true;
29251          }
29252          k++;
29253        }
29254        return false;
29255      }
29256    });
29257  }
29258  if (typeof String.prototype.trimLeft !== "function") {
29259    String.prototype.trimLeft = function() {
29260      return this.replace(/^\s+/, "");
29261    };
29262  }
29263  if (typeof String.prototype.trimRight !== "function") {
29264    String.prototype.trimRight = function() {
29265      return this.replace(/\s+$/, "");
29266    };
29267  }
29268  if (typeof Object.assign != "function") {
29269    Object.defineProperty(Object, "assign", {
29270      value: function assign(target) {
29271        "use strict";
29272        if (target == null) {
29273          throw new TypeError("Cannot convert undefined or null to object");
29274        }
29275        var to = Object(target);
29276        for (var index = 1; index < arguments.length; index++) {
29277          var nextSource = arguments[index];
29278          if (nextSource != null) {
29279            for (var nextKey in nextSource) {
29280              if (Object.prototype.hasOwnProperty.call(nextSource, nextKey)) {
29281                to[nextKey] = nextSource[nextKey];
29282              }
29283            }
29284          }
29285        }
29286        return to;
29287      },
29288      writable: true,
29289      configurable: true
29290    });
29291  }
29292
29293  
29293// frappe/public/js/frappe/provide.js
29294  if (!window.frappe)
29295    window.frappe = {};
29296  frappe.provide = function(namespace) {
29297    var nsl = namespace.split(".");
29298    var parent = window;
29299    for (var i2 = 0; i2 < nsl.length; i2++) {
29300      var n = nsl[i2];
29301      if (!parent[n]) {
29302        parent[n] = {};
29303      }
29304      parent = parent[n];
29305    }
29306    return parent;
29307  };
29308  frappe.provide("locals");
29309  frappe.provide("frappe.flags");
29310  frappe.provide("frappe.settings");
29311  frappe.provide("frappe.utils");
29312  frappe.provide("frappe.ui.form");
29313  frappe.provide("frappe.modules");
29314  frappe.provide("frappe.templates");
29315  frappe.provide("frappe.test_data");
29316  frappe.provide("frappe.utils");
29317  frappe.provide("frappe.model");
29318  frappe.provide("frappe.user");
29319  frappe.provide("frappe.session");
29320  frappe.provide("frappe._messages");
29321  frappe.provide("locals.DocType");
29322  frappe.provide("frappe.listview_settings");
29323  frappe.provide("frappe.tour");
29324  frappe.provide("frappe.listview_parent_route");
29325  window.NEWLINE = "\n";
29326  window.TAB = 9;
29327  window.UP_ARROW = 38;
29328  window.DOWN_ARROW = 40;
29329  window.cur_frm = null;
29330
29331  
29331// frappe/public/js/frappe/translate.js
29332  frappe._ = function(txt, replace, context = null) {
29333    if (!txt)
29334      return txt;
29335    if (typeof txt != "string")
29336      return txt;
29337    let translated_text = "";
29338    let key = txt;
29339    if (context) {
29340      translated_text = frappe._messages[`${key}:${context}`];
29341    }
29342    if (!translated_text) {
29343      translated_text = frappe._messages[key] || txt;
29344    }
29345    if (replace && typeof replace === "object") {
29346      translated_text = $.format(translated_text, replace);
29347    }
29348    return translated_text;
29349  };
29350  window.__ = frappe._;
29351  frappe.get_languages = function() {
29352    if (!frappe.languages) {
29353      frappe.languages = [];
29354      $.each(frappe.boot.lang_dict, function(lang, value2) {
29355        frappe.languages.push({ label: lang, value: value2 });
29356      });
29357      frappe.languages = frappe.languages.sort(function(a, b) {
29358        return a.value < b.value ? -1 : 1;
29359      });
29360    }
29361    return frappe.languages;
29362  };
29363
29364  
29364// frappe/public/js/frappe/form/formatters.js
29365  frappe.provide("frappe.form.formatters");
29366  frappe.form.link_formatters = {};
29367  frappe.form.formatters = {
29368    _right: function(value2, options) {
29369      if (options && (options.inline || options.only_value)) {
29370        return value2;
29371      } else {
29372        return "<div style='text-align: right'>" + value2 + "</div>";
29373      }
29374    },
29375    _apply_custom_formatter: function(value2, df) {
29376      if (df) {
29377        const std_df = frappe.meta.docfield_map[df.parent] && frappe.meta.docfield_map[df.parent][df.fieldname];
29378        if (std_df && std_df.formatter && typeof std_df.formatter === "function") {
29379          value2 = std_df.formatter(value2, df);
29380        }
29381      }
29382      return value2;
29383    },
29384    Data: function(value2, df) {
29385      if (df && df.options == "URL") {
29386        if (!value2)
29387          return;
29388        return `<a href="${value2}" title="Open Link" target="_blank">${value2}</a>`;
29389      }
29390      value2 = value2 == null ? "" : value2;
29391      return frappe.form.formatters._apply_custom_formatter(value2, df);
29392    },
29393    Autocomplete: function(value2, df) {
29394      return __(frappe.form.formatters["Data"](value2, df));
29395    },
29396    Select: function(value2, df) {
29397      return __(frappe.form.formatters["Data"](value2, df));
29398    },
29399    Float: function(value2, docfield, options, doc) {
29400      if (value2 === null) {
29401        return "";
29402      }
29403      var precision3 = docfield.precision || cint(frappe.boot.sysdefaults && frappe.boot.sysdefaults.float_precision) || null;
29404      if (docfield.options && docfield.options.trim()) {
29405        docfield.precision = precision3;
29406        return frappe.form.formatters.Currency(value2, docfield, options, doc);
29407      } else {
29408        if (!(options || {}).always_show_decimals && !is_null(value2)) {
29409          var temp = cstr(value2).split(".");
29410          if (temp[1] == void 0 || cint(temp[1]) === 0) {
29411            precision3 = 0;
29412          }
29413        }
29414        value2 = value2 == null || value2 === "" ? "" : value2;
29415        return frappe.form.formatters._right(format_number(value2, null, precision3), options);
29416      }
29417    },
29418    Int: function(value2, docfield, options) {
29419      if (value2 === null) {
29420        return "";
29421      }
29422      if (cstr(docfield.options).trim() === "File Size") {
29423        return frappe.form.formatters.FileSize(value2);
29424      }
29425      return frappe.form.formatters._right(value2 == null ? "" : cint(value2), options);
29426    },
29427    Percent: function(value2, docfield, options) {
29428      if (value2 === null) {
29429        return "";
29430      }
29431      const precision3 = docfield.precision || cint(frappe.boot.sysdefaults && frappe.boot.sysdefaults.float_precision) || 2;
29432      return frappe.form.formatters._right(flt(value2, precision3) + "%", options);
29433    },
29434    Rating: function(value2, docfield) {
29435      let rating_html = "";
29436      let number_of_stars = docfield.options || 5;
29437      value2 = value2 * number_of_stars;
29438      value2 = Math.round(value2 * 2) / 2;
29439      Array.from({ length: cint(number_of_stars) }, (_, i2) => i2 + 1).forEach((i2) => {
29440        rating_html += `<svg class="icon icon-md" data-rating=${i2} viewBox="0 0 24 24" fill="none">
29441				<path class="right-half ${i2 <= (value2 || 0) ? "star-click" : ""}" d="M11.9987 3.00011C12.177 3.00011 12.3554 3.09303 12.4471 3.27888L14.8213 8.09112C14.8941 8.23872 15.0349 8.34102 15.1978 8.3647L20.5069 9.13641C20.917 9.19602 21.0807 9.69992 20.7841 9.9892L16.9421 13.7354C16.8243 13.8503 16.7706 14.0157 16.7984 14.1779L17.7053 19.4674C17.7753 19.8759 17.3466 20.1874 16.9798 19.9945L12.2314 17.4973C12.1586 17.459 12.0786 17.4398 11.9987 17.4398V3.00011Z" fill="var(--star-fill)" stroke="var(--star-fill)"/>
29442				<path class="left-half ${i2 <= (value2 || 0) || i2 - 0.5 == value2 ? "star-click" : ""}" d="M11.9987 3.00011C11.8207 3.00011 11.6428 3.09261 11.5509 3.27762L9.15562 8.09836C9.08253 8.24546 8.94185 8.34728 8.77927 8.37075L3.42887 9.14298C3.01771 9.20233 2.85405 9.70811 3.1525 9.99707L7.01978 13.7414C7.13858 13.8564 7.19283 14.0228 7.16469 14.1857L6.25116 19.4762C6.18071 19.8842 6.6083 20.1961 6.97531 20.0045L11.7672 17.5022C11.8397 17.4643 11.9192 17.4454 11.9987 17.4454V3.00011Z" fill="var(--star-fill)" stroke="var(--star-fill)"/>
29443			</svg>`;
29444      });
29445      return `<div class="rating">
29446			${rating_html}
29447		</div>`;
29448    },
29449    Currency: function(value2, docfield, options, doc) {
29450      if (value2 === null) {
29451        return "";
29452      }
29453      var currency = frappe.meta.get_field_currency(docfield, doc);
29454      let precision3;
29455      if (typeof docfield.precision == "number") {
29456        precision3 = docfield.precision;
29457      } else {
29458        precision3 = cint(
29459          docfield.precision || frappe.boot.sysdefaults.currency_precision || 2
29460        );
29461      }
29462      if (precision3 > 2) {
29463        var parts2 = cstr(value2).split(".");
29464        var decimals = parts2.length > 1 ? parts2[1] : "";
29465        if (decimals.length < 3 || decimals.length < precision3) {
29466          const fraction = frappe.model.get_value(":Currency", currency, "fraction_units") || 100;
29467          if (decimals.length < cstr(fraction).length) {
29468            precision3 = cstr(fraction).length - 1;
29469          }
29470        }
29471      }
29472      value2 = value2 == null || value2 === "" ? "" : value2;
29473      value2 = format_currency(value2, currency, precision3);
29474      if (options && options.only_value) {
29475        return value2;
29476      } else {
29477        return frappe.form.formatters._right(value2, options);
29478      }
29479    },
29480    Check: function(value2) {
29481      return `<input type="checkbox" disabled
29482			class="disabled-${value2 ? "selected" : "deselected"}">`;
29483    },
29484    Link: function(value2, docfield, options, doc) {
29485      var doctype = docfield._options || docfield.options;
29486      var original_value = value2;
29487      let link_title = frappe.utils.get_link_title(doctype, value2);
29488      if (link_title === value2) {
29489        link_title = null;
29490      }
29491      if (value2 && value2.match && value2.match(/^['"].*['"]$/)) {
29492        value2.replace(/^.(.*).$/, "$1");
29493      }
29494      if (options && (options.for_print || options.only_value)) {
29495        return link_title || value2;
29496      }
29497      if (frappe.form.link_formatters[doctype]) {
29498        if (doc && doctype !== doc.doctype) {
29499          value2 = frappe.form.link_formatters[doctype](value2, doc, docfield);
29500        }
29501      }
29502      if (!value2) {
29503        return "";
29504      }
29505      if (value2[0] == "'" && value2[value2.length - 1] == "'") {
29506        return value2.substring(1, value2.length - 1);
29507      }
29508      if (docfield && docfield.link_onclick) {
29509        return repl('<a onclick="%(onclick)s" href="#">%(value)s</a>', {
29510          onclick: docfield.link_onclick.replace(/"/g, "&quot;") + "; return false;",
29511          value: value2
29512        });
29513      } else if (docfield && doctype) {
29514        if (frappe.model.can_read(doctype)) {
29515          const a = document.createElement("a");
29516          a.href = `/app/${encodeURIComponent(
29517            frappe.router.slug(doctype)
29518          )}/${encodeURIComponent(original_value)}`;
29519          a.dataset.doctype = doctype;
29520          a.dataset.name = original_value;
29521          a.dataset.value = original_value;
29522          a.innerText = __(options && options.label || link_title || value2);
29523          return a.outerHTML;
29524        } else {
29525          return link_title || value2;
29526        }
29527      } else {
29528        return link_title || value2;
29529      }
29530    },
29531    Date: function(value2) {
29532      if (!frappe.datetime.str_to_user) {
29533        return value2;
29534      }
29535      if (value2) {
29536        value2 = frappe.datetime.str_to_user(value2, false, true);
29537        if (value2 === "Invalid date") {
29538          value2 = null;
29539        }
29540      }
29541      return value2 || "";
29542    },
29543    DateRange: function(value2) {
29544      if (Array.isArray(value2)) {
29545        return __("{0} to {1}", [
29546          frappe.datetime.str_to_user(value2[0]),
29547          frappe.datetime.str_to_user(value2[1])
29548        ]);
29549      } else {
29550        return value2 || "";
29551      }
29552    },
29553    Datetime: function(value2) {
29554      if (value2) {
29555        return moment(frappe.datetime.convert_to_user_tz(value2)).format(
29556          frappe.boot.sysdefaults.date_format.toUpperCase() + " " + (frappe.boot.sysdefaults.time_format || "HH:mm:ss")
29557        );
29558      } else {
29559        return "";
29560      }
29561    },
29562    Text: function(value2, df) {
29563      if (value2) {
29564        var tags = ["<p", "<div", "<br", "<table"];
29565        var match = false;
29566        for (var i2 = 0; i2 < tags.length; i2++) {
29567          if (value2.match(tags[i2])) {
29568            match = true;
29569            break;
29570          }
29571        }
29572        if (!match) {
29573          value2 = frappe.utils.replace_newlines(value2);
29574        }
29575      }
29576      return frappe.form.formatters.Data(value2, df);
29577    },
29578    Time: function(value2) {
29579      if (value2) {
29580        value2 = frappe.datetime.str_to_user(value2, true);
29581      }
29582      return value2 || "";
29583    },
29584    Duration: function(value2, docfield) {
29585      if (value2) {
29586        let duration_options = frappe.utils.get_duration_options(docfield);
29587        value2 = frappe.utils.get_formatted_duration(value2, duration_options);
29588      }
29589      return value2 || "0s";
29590    },
29591    LikedBy: function(value2) {
29592      var html = "";
29593      $.each(JSON.parse(value2 || "[]"), function(i2, v) {
29594        if (v)
29595          html += frappe.avatar(v);
29596      });
29597      return html;
29598    },
29599    Tag: function(value2) {
29600      var html = "";
29601      $.each((value2 || "").split(","), function(i2, v) {
29602        if (v)
29603          html += `
29604				<span
29605					class="data-pill btn-xs align-center ellipsis"
29606					style="background-color: var(--control-bg); box-shadow: none; margin-right: 4px;"
29607					data-field="_user_tags" data-label="${v}'">
29608					${v}
29609				</span>`;
29610      });
29611      return html;
29612    },
29613    Comment: function(value2) {
29614      return value2;
29615    },
29616    Assign: function(value2) {
29617      var html = "";
29618      $.each(JSON.parse(value2 || "[]"), function(i2, v) {
29619        if (v)
29620          html += '<span class="label label-warning" 				style="margin-right: 7px;"				data-field="_assign">' + v + "</span>";
29621      });
29622      return html;
29623    },
29624    SmallText: function(value2) {
29625      return frappe.form.formatters.Text(value2);
29626    },
29627    TextEditor: function(value2) {
29628      let formatted_value = frappe.form.formatters.Text(value2);
29629      try {
29630        if (!$(formatted_value).find(".ql-editor").length && !$(formatted_value).hasClass("ql-editor")) {
29631          formatted_value = `<div class="ql-editor read-mode">${formatted_value}</div>`;
29632        }
29633      } catch (e) {
29634        formatted_value = `<div class="ql-editor read-mode">${formatted_value}</div>`;
29635      }
29636      return formatted_value;
29637    },
29638    Code: function(value2) {
29639      return "<pre>" + (value2 == null ? "" : $("<div>").text(value2).html()) + "</pre>";
29640    },
29641    WorkflowState: function(value2) {
29642      var workflow_state = frappe.get_doc("Workflow State", value2);
29643      if (workflow_state) {
29644        return repl(
29645          "<span class='label label-%(style)s' 				data-workflow-state='%(value)s'				style='padding-bottom: 4px; cursor: pointer;'>				<i class='fa fa-small fa-white fa-%(icon)s'></i> %(value)s</span>",
29646          {
29647            value: value2,
29648            style: workflow_state.style.toLowerCase(),
29649            icon: workflow_state.icon
29650          }
29651        );
29652      } else {
29653        return "<span class='label'>" + value2 + "</span>";
29654      }
29655    },
29656    Email: function(value2) {
29657      return $("<div></div>").text(value2).html();
29658    },
29659    FileSize: function(value2) {
29660      value2 = cint(value2);
29661      if (value2 > 1048576) {
29662        return (value2 / 1048576).toFixed(2) + "M";
29663      } else if (value2 > 1024) {
29664        return (value2 / 1024).toFixed(2) + "K";
29665      }
29666      return value2;
29667    },
29668    TableMultiSelect: function(rows, df, options) {
29669      rows = rows || [];
29670      const meta = frappe.get_meta(df.options);
29671      const link_field = meta.fields.find((df2) => df2.fieldtype === "Link");
29672      const formatted_values = rows.map((row) => {
29673        const value2 = row[link_field.fieldname];
29674        return `<span class="text-nowrap">
29675				${frappe.format(value2, link_field, options, row)}
29676			</span>`;
29677      });
29678      return formatted_values.join(", ");
29679    },
29680    Color: (value2) => {
29681      return value2 ? `<div>
29682			<div class="selected-color" style="background-color: ${value2}"></div>
29683			<span class="color-value">${value2}</span>
29684		</div>` : "";
29685    },
29686    Icon: (value2) => {
29687      return value2 ? `<div>
29688			<div class="selected-icon">${frappe.utils.icon(value2, "md")}</div>
29689			<span class="icon-value">${value2}</span>
29690		</div>` : "";
29691    },
29692    Attach: format_attachment_url,
29693    AttachImage: format_attachment_url
29694  };
29695  function format_attachment_url(url2) {
29696    return url2 ? `<a href="${url2}" target="_blank">${url2}</a>` : "";
29697  }
29698  frappe.form.get_formatter = function(fieldtype) {
29699    if (!fieldtype)
29700      fieldtype = "Data";
29701    return frappe.form.formatters[fieldtype.replace(/ /g, "")] || frappe.form.formatters.Data;
29702  };
29703  frappe.format = function(value2, df, options, doc) {
29704    if (!df)
29705      df = { fieldtype: "Data" };
29706    if (df.fieldname == "_user_tags")
29707      df = __spreadProps(__spreadValues({}, df), { fieldtype: "Tag" });
29708    var fieldtype = df.fieldtype || "Data";
29709    if (fieldtype === "Dynamic Link") {
29710      fieldtype = "Link";
29711      df._options = doc ? doc[df.options] : null;
29712    }
29713    var formatter = df.formatter || frappe.form.get_formatter(fieldtype);
29714    var formatted = formatter(value2, df, options, doc);
29715    if (typeof formatted == "string")
29716      formatted = frappe.dom.remove_script_and_style(formatted);
29717    return formatted;
29718  };
29719  frappe.get_format_helper = function(doc) {
29720    var helper = {
29721      get_formatted: function(fieldname) {
29722        var df = frappe.meta.get_docfield(doc.doctype, fieldname);
29723        if (!df) {
29724          console.log("fieldname not found: " + fieldname);
29725        }
29726        return frappe.format(doc[fieldname], df, { inline: 1 }, doc);
29727      }
29728    };
29729    $.extend(helper, doc);
29730    return helper;
29731  };
29732  frappe.form.link_formatters["User"] = function(value2, doc, docfield) {
29733    let full_name = doc && (doc.full_name || docfield && doc[`${docfield.fieldname}_full_name`]);
29734    return full_name || value2;
29735  };
29736
29737  
29737// frappe/public/js/frappe/format.js
29738  function format(str, args) {
29739    if (str == void 0)
29740      return str;
29741    this.unkeyed_index = 0;
29742    return str.replace(
29743      /\{(\w*)\}/g,
29744      function(match, key) {
29745        if (key === "") {
29746          key = this.unkeyed_index;
29747          this.unkeyed_index++;
29748        }
29749        if (key == +key) {
29750          return args[key] !== void 0 ? args[key] : match;
29751        }
29752      }.bind(this)
29753    );
29754  }
29755  if (jQuery) {
29756    jQuery.format = format;
29757  }
29758
29759  
29759// frappe/public/js/frappe/utils/datatype.js
29760  window.cstr = function(s) {
29761    if (s == null)
29762      return "";
29763    return s + "";
29764  };
29765  window.cint = function(v, def) {
29766    if (v === true)
29767      return 1;
29768    if (v === false)
29769      return 0;
29770    v = v + "";
29771    if (v !== "0")
29772      v = lstrip(v, ["0"]);
29773    v = parseInt(v);
29774    if (isNaN(v))
29775      v = def === void 0 ? 0 : def;
29776    return v;
29777  };
29778  window.toTitle = function(str) {
29779    var word_in = str.split(" ");
29780    var word_out = [];
29781    for (var w in word_in) {
29782      word_out[w] = word_in[w].charAt(0).toUpperCase() + word_in[w].slice(1);
29783    }
29784    return word_out.join(" ");
29785  };
29786  window.is_null = function(v) {
29787    if (v === null || v === void 0 || cstr(v).trim() === "")
29788      return true;
29789  };
29790  window.copy_dict = function(d) {
29791    var n = {};
29792    for (var k in d)
29793      n[k] = d[k];
29794    return n;
29795  };
29796  window.validate_email = function(txt) {
29797    return frappe.utils.validate_type(txt, "email");
29798  };
29799  window.validate_phone = function(txt) {
29800    return frappe.utils.validate_type(txt, "phone");
29801  };
29802  window.validate_name = function(txt) {
29803    return frappe.utils.validate_type(txt, "name");
29804  };
29805  window.validate_url = function(txt) {
29806    return frappe.utils.validate_type(txt, "url");
29807  };
29808  window.nth = function(number) {
29809    number = cint(number);
29810    var s = "th";
29811    if ((number + "").substr(-1) == "1")
29812      s = "st";
29813    if ((number + "").substr(-1) == "2")
29814      s = "nd";
29815    if ((number + "").substr(-1) == "3")
29816      s = "rd";
29817    return number + s;
29818  };
29819  window.has_words = function(list, item) {
29820    if (!item)
29821      return true;
29822    if (!list)
29823      return false;
29824    for (var i2 = 0, j = list.length; i2 < j; i2++) {
29825      if (item.indexOf(list[i2]) != -1)
29826        return true;
29827    }
29828    return false;
29829  };
29830  window.has_common = function(list1, list2) {
29831    if (!list1 || !list2)
29832      return false;
29833    for (var i2 = 0, j = list1.length; i2 < j; i2++) {
29834      if (list2.includes(list1[i2]))
29835        return true;
29836    }
29837    return false;
29838  };
29839
29840  
29840// frappe/public/js/frappe/utils/number_format.js
29841  if (!window.frappe)
29842    window.frappe = {};
29843  function flt2(v, decimals, number_format, rounding_method) {
29844    if (v == null || v == "")
29845      return 0;
29846    if (typeof v !== "number") {
29847      v = v + "";
29848      if (v.indexOf(" ") != -1) {
29849        var parts2 = v.split(" ");
29850        v = isNaN(parseFloat(parts2[0])) ? parts2.slice(parts2.length - 1).join(" ") : v;
29851      }
29852      v = strip_number_groups(v, number_format);
29853      v = parseFloat(v);
29854      if (isNaN(v))
29855        v = 0;
29856    }
29857    if (decimals != null)
29858      return _round(v, decimals, rounding_method);
29859    return v;
29860  }
29861  function strip_number_groups(v, number_format) {
29862    if (!number_format)
29863      number_format = get_number_format2();
29864    var info = get_number_format_info2(number_format);
29865    var group_regex = new RegExp(info.group_sep === "." ? "\\." : info.group_sep, "g");
29866    v = v.replace(group_regex, "");
29867    if (info.decimal_str !== "." && info.decimal_str !== "") {
29868      var decimal_regex = new RegExp(info.decimal_str, "g");
29869      v = v.replace(decimal_regex, ".");
29870    }
29871    return v;
29872  }
29873  function convert_old_to_new_number_format(v, old_number_format, new_number_format) {
29874    if (!new_number_format)
29875      new_number_format = get_number_format2();
29876    let new_info = get_number_format_info2(new_number_format);
29877    if (!old_number_format)
29878      old_number_format = "#,###.##";
29879    let old_info = get_number_format_info2(old_number_format);
29880    if (old_number_format === new_number_format)
29881      return v;
29882    if (new_info.decimal_str == "") {
29883      return strip_number_groups(v);
29884    }
29885    let v_parts = v.split(old_info.decimal_str);
29886    let v_before_decimal = v_parts[0];
29887    let v_after_decimal = v_parts[1] || "";
29888    let old_group_regex = new RegExp(old_info.group_sep === "." ? "\\." : old_info.group_sep, "g");
29889    v_before_decimal = v_before_decimal.replace(old_group_regex, new_info.group_sep);
29890    v = v_before_decimal;
29891    if (v_after_decimal) {
29892      v = v + new_info.decimal_str + v_after_decimal;
29893    }
29894    return v;
29895  }
29896  frappe.number_format_info = {
29897    "#,###.##": { decimal_str: ".", group_sep: "," },
29898    "#.###,##": { decimal_str: ",", group_sep: "." },
29899    "# ###.##": { decimal_str: ".", group_sep: " " },
29900    "# ###,##": { decimal_str: ",", group_sep: " " },
29901    "#'###.##": { decimal_str: ".", group_sep: "'" },
29902    "#, ###.##": { decimal_str: ".", group_sep: ", " },
29903    "#,##,###.##": { decimal_str: ".", group_sep: "," },
29904    "#,###.###": { decimal_str: ".", group_sep: "," },
29905    "#.###": { decimal_str: "", group_sep: "." },
29906    "#,###": { decimal_str: "", group_sep: "," }
29907  };
29908  window.format_number = function(v, format2, decimals) {
29909    if (!format2) {
29910      format2 = get_number_format2();
29911      if (decimals == null)
29912        decimals = cint(frappe.defaults.get_default("float_precision")) || 3;
29913    }
29914    var info = get_number_format_info2(format2);
29915    if (decimals == null)
29916      decimals = info.precision;
29917    v = flt2(v, decimals, format2);
29918    let is_negative = false;
29919    if (v < 0)
29920      is_negative = true;
29921    v = Math.abs(v);
29922    v = v.toFixed(decimals);
29923    var part = v.split(".");
29924    var group_position = info.group_sep ? 3 : 0;
29925    if (group_position) {
29926      var integer = part[0];
29927      var str = "";
29928      var offset = integer.length % group_position;
29929      for (var i2 = integer.length; i2 >= 0; i2--) {
29930        var l = replace_all(str, info.group_sep, "").length;
29931        if (format2 == "#,##,###.##" && str.indexOf(",") != -1) {
29932          group_position = 2;
29933          l += 1;
29934        }
29935        str += integer.charAt(i2);
29936        if (l && !((l + 1) % group_position) && i2 != 0) {
29937          str += info.group_sep;
29938        }
29939      }
29940      part[0] = str.split("").reverse().join("");
29941    }
29942    if (part[0] + "" == "") {
29943      part[0] = "0";
29944    }
29945    part[1] = part[1] && info.decimal_str ? info.decimal_str + part[1] : "";
29946    return (is_negative ? "-" : "") + part[0] + part[1];
29947  };
29948  function format_currency2(v, currency, decimals) {
29949    var _a;
29950    const format2 = get_number_format2(currency);
29951    const symbol = get_currency_symbol(currency);
29952    const show_symbol_on_right = (_a = frappe.model.get_value(":Currency", currency, "symbol_on_right")) != null ? _a : false;
29953    if (decimals === void 0) {
29954      decimals = frappe.boot.sysdefaults.currency_precision || null;
29955    }
29956    if (symbol) {
29957      if (show_symbol_on_right) {
29958        return format_number(v, format2, decimals) + " " + __(symbol);
29959      }
29960      return __(symbol) + " " + format_number(v, format2, decimals);
29961    }
29962    return format_number(v, format2, decimals);
29963  }
29964  function get_currency_symbol(currency) {
29965    if (frappe.boot) {
29966      if (frappe.boot.sysdefaults && frappe.boot.sysdefaults.hide_currency_symbol == "Yes")
29967        return null;
29968      if (!currency)
29969        currency = frappe.boot.sysdefaults.currency;
29970      return frappe.model.get_value(":Currency", currency, "symbol") || currency;
29971    } else {
29972      return frappe.currency_symbols[currency];
29973    }
29974  }
29975  function get_number_format2(currency) {
29976    var _a;
29977    let sysdefaults = (_a = frappe == null ? void 0 : frappe.boot) == null ? void 0 : _a.sysdefaults;
29978    return cint(sysdefaults == null ? void 0 : sysdefaults.use_number_format_from_currency) && currency && frappe.model.get_value(":Currency", currency, "number_format") || sysdefaults.number_format || "#,###.##";
29979  }
29980  function get_number_format_info2(format2) {
29981    var info = frappe.number_format_info[format2];
29982    if (!info) {
29983      info = { decimal_str: ".", group_sep: "," };
29984    }
29985    info.precision = format2.split(info.decimal_str).slice(1)[0].length;
29986    return info;
29987  }
29988  function _round(num, precision3, rounding_method) {
29989    rounding_method = rounding_method || frappe.boot.sysdefaults.rounding_method || "Banker's Rounding (legacy)";
29990    let is_negative = num < 0 ? true : false;
29991    if (rounding_method == "Banker's Rounding (legacy)") {
29992      var d = cint(precision3);
29993      var m = Math.pow(10, d);
29994      var n = +(d ? Math.abs(num) * m : Math.abs(num)).toFixed(8);
29995      var i2 = Math.floor(n), f = n - i2;
29996      var r = !precision3 && f == 0.5 ? i2 % 2 == 0 ? i2 : i2 + 1 : Math.round(n);
29997      r = d ? r / m : r;
29998      return is_negative ? -r : r;
29999    } else if (rounding_method == "Banker's Rounding") {
30000      if (num == 0)
30001        return 0;
30002      precision3 = cint(precision3);
30003      let multiplier = Math.pow(10, precision3);
30004      num = Math.abs(num) * multiplier;
30005      let floor_num = Math.floor(num);
30006      let decimal_part = num - floor_num;
30007      let epsilon = 2 ** (Math.log2(Math.abs(num)) - 52);
30008      if (Math.abs(decimal_part - 0.5) < epsilon) {
30009        num = floor_num % 2 == 0 ? floor_num : floor_num + 1;
30010      } else {
30011        num = Math.round(num);
30012      }
30013      num = num / multiplier;
30014      return is_negative ? -num : num;
30015    } else if (rounding_method == "Commercial Rounding") {
30016      if (num == 0)
30017        return 0;
30018      let digits = cint(precision3);
30019      let multiplier = Math.pow(10, digits);
30020      num = num * multiplier;
30021      let epsilon = 2 ** (Math.log2(Math.abs(num)) - 52);
30022      if (is_negative) {
30023        epsilon = -1 * epsilon;
30024      }
30025      num = Math.round(num + epsilon);
30026      return num / multiplier;
30027    } else {
30028      throw new Error(`Unknown rounding method ${rounding_method}`);
30029    }
30030  }
30031  function roundNumber(num, precision3) {
30032    return _round(num, precision3);
30033  }
30034  function precision2(fieldname, doc) {
30035    if (cur_frm) {
30036      if (!doc)
30037        doc = cur_frm.doc;
30038      var df = frappe.meta.get_docfield(doc.doctype, fieldname, doc.parent || doc.name);
30039      if (!df)
30040        console.log(fieldname + ": could not find docfield in method precision()");
30041      return frappe.meta.get_field_precision(df, doc);
30042    } else {
30043      return frappe.boot.sysdefaults.float_precision;
30044    }
30045  }
30046  function in_list(list, item) {
30047    return list.includes(item);
30048  }
30049  function remainder(numerator, denominator, precision3) {
30050    precision3 = cint(precision3);
30051    var multiplier = Math.pow(10, precision3);
30052    let _remainder;
30053    if (precision3) {
30054      _remainder = numerator * multiplier % (denominator * multiplier) / multiplier;
30055    } else {
30056      _remainder = numerator % denominator;
30057    }
30058    return flt2(_remainder, precision3);
30059  }
30060  function round_based_on_smallest_currency_fraction(value2, currency, precision3) {
30061    var smallest_currency_fraction_value = flt2(
30062      frappe.model.get_value(":Currency", currency, "smallest_currency_fraction_value")
30063    );
30064    if (smallest_currency_fraction_value) {
30065      var remainder_val = remainder(value2, smallest_currency_fraction_value, precision3);
30066      if (remainder_val > smallest_currency_fraction_value / 2) {
30067        value2 += smallest_currency_fraction_value - remainder_val;
30068      } else {
30069        value2 -= remainder_val;
30070      }
30071    } else {
30072      value2 = _round(value2);
30073    }
30074    return value2;
30075  }
30076  function fmt_money(v, format2) {
30077    return format_currency2(v, format2);
30078  }
30079  Object.assign(window, {
30080    flt: flt2,
30081    cint,
30082    strip_number_groups,
30083    convert_old_to_new_number_format,
30084    format_currency: format_currency2,
30085    fmt_money,
30086    get_currency_symbol,
30087    get_number_format: get_number_format2,
30088    get_number_format_info: get_number_format_info2,
30089    _round,
30090    roundNumber,
30091    precision: precision2,
30092    remainder,
30093    round_based_on_smallest_currency_fraction,
30094    in_list
30095  });
30096
30097  
30097// frappe/public/js/frappe/utils/utils.js
30098  var import_fast_deep_equal = __toESM(require_fast_deep_equal());
30099
30100  
30100// frappe/public/js/frappe/utils/number_systems.js
30101  var number_systems_default = {
30102    default: [
30103      {
30104        divisor: 1e12,
30105        symbol: __("T", null, "Number system")
30106      },
30107      {
30108        divisor: 1e9,
30109        symbol: __("B", null, "Number system")
30110      },
30111      {
30112        divisor: 1e6,
30113        symbol: __("M", null, "Number system")
30114      },
30115      {
30116        divisor: 1e3,
30117        symbol: __("K", null, "Number system")
30118      }
30119    ],
30120    indian: [
30121      {
30122        divisor: 1e7,
30123        symbol: __("Cr", null, "Number system")
30124      },
30125      {
30126        divisor: 1e5,
30127        symbol: __("L", null, "Number system")
30128      },
30129      {
30130        divisor: 1e3,
30131        symbol: __("K", null, "Number system")
30132      }
30133    ],
30134    nepalese: [
30135      {
30136        divisor: 1e11,
30137        symbol: __("Kh", null, "Number system")
30138      },
30139      {
30140        divisor: 1e9,
30141        symbol: __("Ar", null, "Number system")
30142      },
30143      {
30144        divisor: 1e7,
30145        symbol: __("Cr", null, "Number system")
30146      },
30147      {
30148        divisor: 1e5,
30149        symbol: __("L", null, "Number system")
30150      },
30151      {
30152        divisor: 1e3,
30153        symbol: __("K", null, "Number system")
30154      }
30155    ]
30156  };
30157
30158  
30158// frappe/public/js/frappe/utils/utils.js
30159  var import_cloneDeepWith = __toESM(require_cloneDeepWith());
30160  frappe.provide("frappe.utils");
30161  if (!Array.prototype.uniqBy) {
30162    Object.defineProperty(Array.prototype, "uniqBy", {
30163      value: function(key) {
30164        var seen = {};
30165        return this.filter(function(item) {
30166          var k = key(item);
30167          return k in seen ? false : seen[k] = true;
30168        });
30169      }
30170    });
30171    Object.defineProperty(Array.prototype, "move", {
30172      value: function(from, to) {
30173        this.splice(to, 0, this.splice(from, 1)[0]);
30174      }
30175    });
30176  }
30177  Object.defineProperty(Object.prototype, "setDefault", {
30178    value: function(key, default_value) {
30179      if (!(key in this))
30180        this[key] = default_value;
30181      return this[key];
30182    },
30183    writable: true
30184  });
30185  String.prototype.plural = function(revert) {
30186    const plural = {
30187      "(quiz)$": "$1zes",
30188      "^(ox)$": "$1en",
30189      "([m|l])ouse$": "$1ice",
30190      "(matr|vert|ind)ix|ex$": "$1ices",
30191      "(x|ch|ss|sh)$": "$1es",
30192      "([^aeiouy]|qu)y$": "$1ies",
30193      "(hive)$": "$1s",
30194      "(?:([^f])fe|([lr])f)$": "$1$2ves",
30195      "(shea|lea|loa|thie)f$": "$1ves",
30196      sis$: "ses",
30197      "([ti])um$": "$1a",
30198      "(tomat|potat|ech|her|vet)o$": "$1oes",
30199      "(bu)s$": "$1ses",
30200      "(alias)$": "$1es",
30201      "(octop)us$": "$1i",
30202      "(ax|test)is$": "$1es",
30203      "(us)$": "$1es",
30204      "([^s]+)$": "$1s"
30205    };
30206    const singular = {
30207      "(quiz)zes$": "$1",
30208      "(matr)ices$": "$1ix",
30209      "(vert|ind)ices$": "$1ex",
30210      "^(ox)en$": "$1",
30211      "(alias)es$": "$1",
30212      "(octop|vir)i$": "$1us",
30213      "(cris|ax|test)es$": "$1is",
30214      "(shoe)s$": "$1",
30215      "(o)es$": "$1",
30216      "(bus)es$": "$1",
30217      "([m|l])ice$": "$1ouse",
30218      "(x|ch|ss|sh)es$": "$1",
30219      "(m)ovies$": "$1ovie",
30220      "(s)eries$": "$1eries",
30221      "([^aeiouy]|qu)ies$": "$1y",
30222      "([lr])ves$": "$1f",
30223      "(tive)s$": "$1",
30224      "(hive)s$": "$1",
30225      "(li|wi|kni)ves$": "$1fe",
30226      "(shea|loa|lea|thie)ves$": "$1f",
30227      "(^analy)ses$": "$1sis",
30228      "((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$": "$1$2sis",
30229      "([ti])a$": "$1um",
30230      "(n)ews$": "$1ews",
30231      "(h|bl)ouses$": "$1ouse",
30232      "(corpse)s$": "$1",
30233      "(us)es$": "$1",
30234      s$: ""
30235    };
30236    const irregular = {
30237      move: "moves",
30238      foot: "feet",
30239      goose: "geese",
30240      sex: "sexes",
30241      child: "children",
30242      man: "men",
30243      tooth: "teeth",
30244      person: "people"
30245    };
30246    const uncountable = [
30247      "sheep",
30248      "fish",
30249      "deer",
30250      "moose",
30251      "series",
30252      "species",
30253      "money",
30254      "rice",
30255      "information",
30256      "equipment"
30257    ];
30258    if (uncountable.indexOf(this.toLowerCase()) >= 0)
30259      return this;
30260    let word;
30261    let pattern;
30262    let replace;
30263    for (word in irregular) {
30264      if (revert) {
30265        pattern = new RegExp(irregular[word] + "$", "i");
30266        replace = word;
30267      } else {
30268        pattern = new RegExp(word + "$", "i");
30269        replace = irregular[word];
30270      }
30271      if (pattern.test(this))
30272        return this.replace(pattern, replace);
30273    }
30274    let array;
30275    if (revert)
30276      array = singular;
30277    else
30278      array = plural;
30279    let reg;
30280    for (reg in array) {
30281      pattern = new RegExp(reg, "i");
30282      if (pattern.test(this))
30283        return this.replace(pattern, array[reg]);
30284    }
30285    return this;
30286  };
30287  Object.assign(frappe.utils, {
30288    get_random: function(len) {
30289      var text = "";
30290      var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
30291      for (var i2 = 0; i2 < len; i2++)
30292        text += possible.charAt(Math.floor(Math.random() * possible.length));
30293      return text;
30294    },
30295    get_file_link: function(filename) {
30296      filename = cstr(filename);
30297      if (frappe.utils.is_url(filename)) {
30298        return filename;
30299      } else if (filename.indexOf("/") === -1) {
30300        return "files/" + filename;
30301      } else {
30302        return filename;
30303      }
30304    },
30305    replace_newlines(t) {
30306      return t ? t.replace(/\n/g, "<br>") : "";
30307    },
30308    is_html: function(txt) {
30309      if (!txt)
30310        return false;
30311      if (txt.indexOf("<br>") == -1 && txt.indexOf("<p") == -1 && txt.indexOf("<img") == -1 && txt.indexOf("<div") == -1 && !txt.includes("<span")) {
30312        return false;
30313      }
30314      return true;
30315    },
30316    is_mac: function() {
30317      return window.navigator.platform === "MacIntel";
30318    },
30319    is_xs: function() {
30320      return $(document).width() < 768;
30321    },
30322    is_sm: function() {
30323      return $(document).width() < 991 && $(document).width() >= 768;
30324    },
30325    is_md: function() {
30326      return $(document).width() < 1199 && $(document).width() >= 991;
30327    },
30328    is_json: function(str) {
30329      try {
30330        JSON.parse(str);
30331      } catch (e) {
30332        return false;
30333      }
30334      return true;
30335    },
30336    parse_json: function(str) {
30337      let parsed_json = "";
30338      try {
30339        parsed_json = JSON.parse(str);
30340      } catch (e) {
30341        return str;
30342      }
30343      return parsed_json;
30344    },
30345    strip_whitespace: function(html) {
30346      return (html || "").replace(/<p>\s*<\/p>/g, "").replace(/<br>(\s*<br>\s*)+/g, "<br><br>");
30347    },
30348    encode_tags: function(html) {
30349      var tagsToReplace = {
30350        "&": "&amp;",
30351        "<": "&lt;",
30352        ">": "&gt;"
30353      };
30354      function replaceTag(tag) {
30355        return tagsToReplace[tag] || tag;
30356      }
30357      return html.replace(/[&<>]/g, replaceTag);
30358    },
30359    strip_original_content: function(txt) {
30360      var out = [], part = [], newline = txt.indexOf("<br>") === -1 ? "\n" : "<br>";
30361      $.each(txt.split(newline), function(i2, t) {
30362        var tt = strip(t);
30363        if (tt && (tt.substr(0, 1) === ">" || tt.substr(0, 4) === "&gt;")) {
30364          part.push(t);
30365        } else {
30366          out = out.concat(part);
30367          out.push(t);
30368          part = [];
30369        }
30370      });
30371      return out.join(newline);
30372    },
30373    escape_html: function(txt) {
30374      if (!txt)
30375        return "";
30376      let escape_html_mapping = {
30377        "&": "&amp;",
30378        "<": "&lt;",
30379        ">": "&gt;",
30380        '"': "&quot;",
30381        "'": "&#39;",
30382        "`": "&#x60;",
30383        "=": "&#x3D;"
30384      };
30385      return String(txt).replace(/[&<>"'`=]/g, (char) => escape_html_mapping[char] || char);
30386    },
30387    unescape_html: function(txt) {
30388      let unescape_html_mapping = {
30389        "&amp;": "&",
30390        "&lt;": "<",
30391        "&gt;": ">",
30392        "&quot;": '"',
30393        "&#39;": "'",
30394        "&#x60;": "`",
30395        "&#x3D;": "="
30396      };
30397      return String(txt).replace(
30398        /&amp;|&lt;|&gt;|&quot;|&#39;|&#x60;|&#x3D;/g,
30399        (char) => unescape_html_mapping[char] || char
30400      );
30401    },
30402    html2text: function(html) {
30403      const parser = new DOMParser();
30404      const dom = parser.parseFromString(html, "text/html");
30405      return dom.body.textContent;
30406    },
30407    is_url: function(txt) {
30408      return txt.toLowerCase().substr(0, 7) == "http://" || txt.toLowerCase().substr(0, 8) == "https://";
30409    },
30410    to_title_case: function(string, with_space = false) {
30411      let titlecased_string = string.toLowerCase().replace(/(?:^|[\s-/])\w/g, function(match) {
30412        return match.toUpperCase();
30413      });
30414      let replace_with = with_space ? " " : "";
30415      return titlecased_string.replace(/-|_/g, replace_with);
30416    },
30417    toggle_blockquote: function(txt) {
30418      if (!txt)
30419        return txt;
30420      var content = $("<div></div>").html(txt);
30421      content.find("blockquote").parent("blockquote").addClass("hidden").before(
30422        '<p><a class="text-muted btn btn-default toggle-blockquote" style="padding: 2px 7px 0px; line-height: 1;"> 					\u2022 \u2022 \u2022 				</a></p>'
30423      );
30424      return content.html();
30425    },
30426    scroll_to: function(element, animate = true, additional_offset, element_to_be_scrolled, callback, highlight_element = false) {
30427      if (frappe.flags.disable_auto_scroll)
30428        return;
30429      element_to_be_scrolled = element_to_be_scrolled || $("html, body");
30430      let scroll_top = 0;
30431      if (element) {
30432        scroll_top = typeof element == "number" ? element - cint(additional_offset) : this.get_scroll_position(element, additional_offset);
30433      }
30434      if (scroll_top < 0) {
30435        scroll_top = 0;
30436      }
30437      const highlight = () => {
30438        if (highlight_element) {
30439          $(element).addClass("highlight");
30440          document.addEventListener(
30441            "click",
30442            function() {
30443              $(element).removeClass("highlight");
30444            },
30445            { once: true }
30446          );
30447        }
30448      };
30449      if (scroll_top == element_to_be_scrolled.scrollTop()) {
30450        return highlight();
30451      }
30452      if (animate) {
30453        element_to_be_scrolled.animate({
30454          scrollTop: scroll_top
30455        }).promise().then(() => {
30456          highlight();
30457          callback && callback();
30458        });
30459      } else {
30460        element_to_be_scrolled.scrollTop(scroll_top);
30461      }
30462    },
30463    get_scroll_position: function(element, additional_offset) {
30464      let header_offset = $(".navbar").height() + $(".page-head:visible").height() || $(".navbar").height();
30465      return $(element).offset().top - header_offset - cint(additional_offset);
30466    },
30467    filter_dict: function(dict, filters) {
30468      var ret = [];
30469      if (typeof filters == "string") {
30470        return [dict[filters]];
30471      }
30472      $.each(dict, function(i2, d) {
30473        for (var key in filters) {
30474          if ($.isArray(filters[key])) {
30475            if (filters[key][0] == "in") {
30476              if (filters[key][1].indexOf(d[key]) == -1)
30477                return;
30478            } else if (filters[key][0] == "not in") {
30479              if (filters[key][1].indexOf(d[key]) != -1)
30480                return;
30481            } else if (filters[key][0] == "<") {
30482              if (!(d[key] < filters[key]))
30483                return;
30484            } else if (filters[key][0] == "<=") {
30485              if (!(d[key] <= filters[key]))
30486                return;
30487            } else if (filters[key][0] == ">") {
30488              if (!(d[key] > filters[key]))
30489                return;
30490            } else if (filters[key][0] == ">=") {
30491              if (!(d[key] >= filters[key]))
30492                return;
30493            }
30494          } else {
30495            if (d[key] != filters[key])
30496              return;
30497          }
30498        }
30499        ret.push(d);
30500      });
30501      return ret;
30502    },
30503    comma_or: function(list) {
30504      return frappe.utils.comma_sep(list, " " + __("or") + " ");
30505    },
30506    comma_and: function(list) {
30507      return frappe.utils.comma_sep(list, " " + __("and") + " ");
30508    },
30509    comma_sep: function(list, sep) {
30510      if (list instanceof Array) {
30511        if (list.length == 0) {
30512          return "";
30513        } else if (list.length == 1) {
30514          return list[0];
30515        } else {
30516          return list.slice(0, list.length - 1).join(", ") + sep + list.slice(-1)[0];
30517        }
30518      } else {
30519        return list;
30520      }
30521    },
30522    set_footnote: function(footnote_area, wrapper, txt) {
30523      if (!footnote_area) {
30524        footnote_area = $('<div class="text-muted footnote-area level">').appendTo(wrapper);
30525      }
30526      if (txt) {
30527        footnote_area.html(txt);
30528      } else {
30529        footnote_area.remove();
30530        footnote_area = null;
30531      }
30532      return footnote_area;
30533    },
30534    get_args_dict_from_url: function(txt) {
30535      var args = {};
30536      $.each(decodeURIComponent(txt).split("&"), function(i2, arg) {
30537        arg = arg.split("=");
30538        args[arg[0]] = arg[1];
30539      });
30540      return args;
30541    },
30542    get_url_from_dict: function(args) {
30543      return $.map(args, function(val, key) {
30544        if (val !== null)
30545          return encodeURIComponent(key) + "=" + encodeURIComponent(val);
30546        else
30547          return null;
30548      }).join("&") || "";
30549    },
30550    validate_type: function(val, type2) {
30551      var regExp;
30552      switch (type2) {
30553        case "phone":
30554          regExp = /^([0-9 +_\-,.*#()]){1,20}$/;
30555          break;
30556        case "name":
30557          regExp = /^[\w][\w'-]*([ \w][\w'-]+)*$/;
30558          break;
30559        case "number":
30560          regExp = /^-?(?:\d+|\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/;
30561          break;
30562        case "digits":
30563          regExp = /^\d+$/;
30564          break;
30565        case "alphanum":
30566          regExp = /^\w+$/;
30567          break;
30568        case "email":
30569          regExp = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
30570          break;
30571        case "url":
30572          regExp = /^((([A-Za-z0-9.+-]+:(?:\/\/)?)(?:[-;:&=\+\,\w]@)?[A-Za-z0-9.-]+(:[0-9]+)?|(?:www.|[-;
30572:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/i;
30573          break;
30574        case "dateIso":
30575          regExp = /^(\d{4})\D?(0[1-9]|1[0-2])\D?([12]\d|0[1-9]|3[01])$/;
30576          break;
30577        default:
30578          return false;
30579      }
30580      return "" !== val ? regExp.test(val) : false;
30581    },
30582    guess_style: function(text, default_style, _colour) {
30583      var style = default_style || "default";
30584      var colour = "gray";
30585      if (text) {
30586        text = cstr(text);
30587        if (has_words(["Pending", "Review", "Medium", "Not Approved"], text)) {
30588          style = "warning";
30589          colour = "orange";
30590        } else if (has_words(["Open", "Urgent", "High", "Failed", "Rejected", "Error"], text)) {
30591          style = "danger";
30592          colour = "red";
30593        } else if (has_words(
30594          [
30595            "Closed",
30596            "Finished",
30597            "Converted",
30598            "Completed",
30599            "Complete",
30600            "Confirmed",
30601            "Approved",
30602            "Yes",
30603            "Active",
30604            "Available",
30605            "Paid",
30606            "Success"
30607          ],
30608          text
30609        )) {
30610          style = "success";
30611          colour = "green";
30612        } else if (has_words(["Submitted"], text)) {
30613          style = "info";
30614          colour = "blue";
30615        }
30616      }
30617      return _colour ? colour : style;
30618    },
30619    guess_colour: function(text) {
30620      return frappe.utils.guess_style(text, null, true);
30621    },
30622    get_indicator_color: function(state) {
30623      return frappe.db.get_list("Workflow State", { filters: { name: state }, fields: ["name", "style"] }).then((res) => {
30624        const state2 = res[0];
30625        if (!state2.style) {
30626          return frappe.utils.guess_colour(state2.name);
30627        }
30628        const style = state2.style;
30629        const colour_map = {
30630          Success: "green",
30631          Warning: "orange",
30632          Danger: "red",
30633          Primary: "blue"
30634        };
30635        return colour_map[style];
30636      });
30637    },
30638    sort: function(list, key, compare_type, reverse) {
30639      if (!list || list.length < 2)
30640        return list || [];
30641      var sort_fn = {
30642        string: function(a, b) {
30643          return cstr(a[key]).localeCompare(cstr(b[key]));
30644        },
30645        number: function(a, b) {
30646          return flt(a[key]) - flt(b[key]);
30647        }
30648      };
30649      if (!compare_type)
30650        compare_type = typeof list[0][key] === "string" ? "string" : "number";
30651      list.sort(sort_fn[compare_type]);
30652      if (reverse) {
30653        list.reverse();
30654      }
30655      return list;
30656    },
30657    unique: function(list) {
30658      var dict = {}, arr = [];
30659      for (var i2 = 0, l = list.length; i2 < l; i2++) {
30660        if (!(list[i2] in dict)) {
30661          dict[list[i2]] = null;
30662          arr.push(list[i2]);
30663        }
30664      }
30665      return arr;
30666    },
30667    remove_nulls: function(list) {
30668      var new_list = [];
30669      for (var i2 = 0, l = list.length; i2 < l; i2++) {
30670        if (!is_null(list[i2])) {
30671          new_list.push(list[i2]);
30672        }
30673      }
30674      return new_list;
30675    },
30676    all: function(lst) {
30677      for (var i2 = 0, l = lst.length; i2 < l; i2++) {
30678        if (!lst[i2]) {
30679          return false;
30680        }
30681      }
30682      return true;
30683    },
30684    dict: function(keys, values) {
30685      var out = [];
30686      $.each(values, function(row_idx, row) {
30687        var new_row = {};
30688        $.each(keys, function(key_idx, key) {
30689          new_row[key] = row[key_idx];
30690        });
30691        out.push(new_row);
30692      });
30693      return out;
30694    },
30695    sum: function(list) {
30696      return list.reduce(function(previous_value, current_value) {
30697        return flt(previous_value) + flt(current_value);
30698      }, 0);
30699    },
30700    arrays_equal: function(arr1, arr2) {
30701      if (!arr1 || !arr2) {
30702        return false;
30703      }
30704      if (arr1.length != arr2.length) {
30705        return false;
30706      }
30707      for (var i2 = 0; i2 < arr1.length; i2++) {
30708        if ($.isArray(arr1[i2])) {
30709          if (!frappe.utils.arrays_equal(arr1[i2], arr2[i2])) {
30710            return false;
30711          }
30712        } else if (arr1[i2] !== arr2[i2]) {
30713          return false;
30714        }
30715      }
30716      return true;
30717    },
30718    intersection: function(a, b) {
30719      var ai = 0, bi = 0;
30720      var result = new Array();
30721      a = [].concat(a).sort();
30722      b = [].concat(b).sort();
30723      while (ai < a.length && bi < b.length) {
30724        if (a[ai] < b[bi]) {
30725          ai++;
30726        } else if (a[ai] > b[bi]) {
30727          bi++;
30728        } else {
30729          result.push(a[ai]);
30730          ai++;
30731          bi++;
30732        }
30733      }
30734      return result;
30735    },
30736    resize_image: function(reader, callback, max_width, max_height) {
30737      var tempImg = new Image();
30738      if (!max_width)
30739        max_width = 600;
30740      if (!max_height)
30741        max_height = 400;
30742      tempImg.src = reader.result;
30743      tempImg.onload = function() {
30744        var tempW = tempImg.width;
30745        var tempH = tempImg.height;
30746        if (tempW > tempH) {
30747          if (tempW > max_width) {
30748            tempH *= max_width / tempW;
30749            tempW = max_width;
30750          }
30751        } else {
30752          if (tempH > max_height) {
30753            tempW *= max_height / tempH;
30754            tempH = max_height;
30755          }
30756        }
30757        var canvas = document.createElement("canvas");
30758        canvas.width = tempW;
30759        canvas.height = tempH;
30760        var ctx = canvas.getContext("2d");
30761        ctx.drawImage(this, 0, 0, tempW, tempH);
30762        var dataURL = canvas.toDataURL("image/jpeg");
30763        setTimeout(function() {
30764          callback(dataURL);
30765        }, 10);
30766      };
30767    },
30768    csv_to_array: function(strData, strDelimiter) {
30769      strDelimiter = strDelimiter || ",";
30770      var objPattern = new RegExp(
30771        "(\\" + strDelimiter + '|\\r?\\n|\\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^"\\' + strDelimiter + "\\r\\n]*))",
30772        "gi"
30773      );
30774      var arrData = [[]];
30775      var arrMatches = null;
30776      while (arrMatches = objPattern.exec(strData)) {
30777        var strMatchedDelimiter = arrMatches[1];
30778        if (strMatchedDelimiter.length && strMatchedDelimiter !== strDelimiter) {
30779          arrData.push([]);
30780        }
30781        var strMatchedValue;
30782        if (arrMatches[2]) {
30783          strMatchedValue = arrMatches[2].replace(new RegExp('""', "g"), '"');
30784        } else {
30785          strMatchedValue = arrMatches[3];
30786        }
30787        arrData[arrData.length - 1].push(strMatchedValue);
30788      }
30789      return arrData;
30790    },
30791    warn_page_name_change: function() {
30792      frappe.msgprint(__("Note: Changing the Page Name will break previous URL to this page."));
30793    },
30794    set_title: function(title) {
30795      frappe._original_title = title;
30796      if (frappe._title_prefix) {
30797        title = frappe._title_prefix + " " + title.replace(/<[^>]*>/g, "");
30798      }
30799      document.title = title;
30800      const sub_path = frappe.router.get_sub_path();
30801      frappe.route_titles[sub_path] = title;
30802    },
30803    set_title_prefix: function(prefix) {
30804      frappe._title_prefix = prefix;
30805      frappe.utils.set_title(frappe._original_title);
30806    },
30807    is_image_file: function(filename) {
30808      if (!filename)
30809        return false;
30810      filename = filename.split("?")[0];
30811      return /\.(gif|jpg|jpeg|tiff|png|svg)$/i.test(filename);
30812    },
30813    is_video_file: function(filename) {
30814      if (!filename)
30815        return false;
30816      filename = filename.split("?")[0];
30817      return /\.(mov|mp4|mkv|webm)$/i.test(filename);
30818    },
30819    play_sound: function(name2) {
30820      try {
30821        if (frappe.boot.user.mute_sounds) {
30822          return;
30823        }
30824        var audio = $("#sound-" + name2)[0];
30825        audio.volume = audio.getAttribute("volume");
30826        audio.play();
30827      } catch (e) {
30828        console.log("Cannot play sound", name2, e);
30829      }
30830    },
30831    split_emails: function(txt) {
30832      var email_list = [];
30833      if (!txt) {
30834        return email_list;
30835      }
30836      txt.split(/[,\n](?=(?:[^"]|"[^"]*")*$)/g).forEach(function(email) {
30837        email = email.trim();
30838        if (email) {
30839          email_list.push(email);
30840        }
30841      });
30842      return email_list;
30843    },
30844    supportsES6: function() {
30845      try {
30846        new Function("(a = 0) => a");
30847        return true;
30848      } catch (err) {
30849        return false;
30850      }
30851    }(),
30852    throttle: function(func, wait, options) {
30853      var context, args, result;
30854      var timeout = null;
30855      var previous = 0;
30856      if (!options)
30857        options = {};
30858      let later = function() {
30859        previous = options.leading === false ? 0 : Date.now();
30860        timeout = null;
30861        result = func.apply(context, args);
30862        if (!timeout)
30863          context = args = null;
30864      };
30865      return function() {
30866        var now = Date.now();
30867        if (!previous && options.leading === false)
30868          previous = now;
30869        let remaining = wait - (now - previous);
30870        context = this;
30871        args = arguments;
30872        if (remaining <= 0 || remaining > wait) {
30873          if (timeout) {
30874            clearTimeout(timeout);
30875            timeout = null;
30876          }
30877          previous = now;
30878          result = func.apply(context, args);
30879          if (!timeout)
30880            context = args = null;
30881        } else if (!timeout && options.trailing !== false) {
30882          timeout = setTimeout(later, remaining);
30883        }
30884        return result;
30885      };
30886    },
30887    debounce: function(func, wait, immediate) {
30888      var timeout;
30889      return function() {
30890        var context = this, args = arguments;
30891        var later = function() {
30892          timeout = null;
30893          if (!immediate)
30894            func.apply(context, args);
30895        };
30896        var callNow = immediate && !timeout;
30897        clearTimeout(timeout);
30898        timeout = setTimeout(later, wait);
30899        if (callNow)
30900          func.apply(context, args);
30901      };
30902    },
30903    get_form_link: function(doctype, name2, html = false, display_text = null, query_params_obj = null) {
30904      display_text = display_text || name2;
30905      name2 = encodeURIComponent(name2);
30906      let route = `/app/${encodeURIComponent(doctype.toLowerCase().replace(/ /g, "-"))}/${name2}`;
30907      if (query_params_obj) {
30908        route += frappe.utils.make_query_string(query_params_obj);
30909      }
30910      if (html) {
30911        return `<a href="${route}">${display_text}</a>`;
30912      }
30913      return route;
30914    },
30915    get_route_label(route_str) {
30916      let route = route_str.split("/");
30917      if (route[2] === "Report" || route[0] === "query-report") {
30918        return __("{0} Report", [__(route[3]) || __(route[1])]);
30919      }
30920      if (route[0] === "List") {
30921        return __("{0} List", [__(route[1])]);
30922      }
30923      if (route[0] === "modules") {
30924        return __("{0} Modules", [__(route[1])]);
30925      }
30926      if (route[0] === "dashboard") {
30927        return __("{0} Dashboard", [__(route[1])]);
30928      }
30929      return __(frappe.utils.to_title_case(__(route[0]), true));
30930    },
30931    report_column_total: function(values, column, type2) {
30932      if (column.column.disable_total) {
30933        return "";
30934      } else if (values.length > 0) {
30935        if (column.column.fieldtype == "Percent" || type2 === "mean") {
30936          return values.reduce((a, b) => flt(a) + flt(b)) / values.length;
30937        } else if (column.column.fieldtype == "Int") {
30938          return values.reduce((a, b) => cint(a) + cint(b));
30939        } else if (frappe.model.is_numeric_field(column.column.fieldtype)) {
30940          return values.reduce((a, b) => flt(a) + flt(b));
30941        } else {
30942          return null;
30943        }
30944      } else {
30945        return null;
30946      }
30947    },
30948    setup_search($wrapper, el_class, text_class, data_attr) {
30949      const $search_input = $wrapper.find('[data-element="search"]').show();
30950      $search_input.focus().val("");
30951      const $elements = $wrapper.find(el_class).show();
30952      $search_input.off("keyup").on("keyup", () => {
30953        let text_filter = $search_input.val().toLowerCase();
30954        text_filter = text_filter.replace(/^\s+|\s+$/g, "");
30955        for (let i2 = 0; i2 < $elements.length; i2++) {
30956          const text_element = $elements.eq(i2).find(text_class);
30957          const text = text_element.text().toLowerCase();
30958          let name2 = "";
30959          if (data_attr && text_element.attr(data_attr)) {
30960            name2 = text_element.attr(data_attr).toLowerCase();
30961          }
30962          if (text.includes(text_filter) || name2.includes(text_filter)) {
30963            $elements.eq(i2).css("display", "");
30964          } else {
30965            $elements.eq(i2).css("display", "none");
30966          }
30967        }
30968      });
30969    },
30970    setup_timer(start, end, $element) {
30971      const increment = end > start;
30972      let counter = start;
30973      let interval = setInterval(() => {
30974        increment ? counter++ : counter--;
30975        if (increment ? counter > end : counter < end) {
30976          clearInterval(interval);
30977          return;
30978        }
30979        $element.text(counter);
30980      }, 1e3);
30981    },
30982    deep_equal(a, b) {
30983      return (0, import_fast_deep_equal.default)(a, b);
30984    },
30985    deep_clone(obj, customizer) {
30986      return (0, import_cloneDeepWith.default)(obj, customizer);
30987    },
30988    file_name_ellipsis(filename, length2) {
30989      let first_part_length = length2 * 2 / 3;
30990      let last_part_length = length2 - first_part_length;
30991      let parts2 = filename.split(".");
30992      let extn = parts2.pop();
30993      let name2 = parts2.join("");
30994      let first_part = name2.slice(0, first_part_length);
30995      let last_part = name2.slice(-last_part_length);
30996      if (name2.length > length2) {
30997        return `${first_part}...${last_part}.${extn}`;
30998      } else {
30999        return filename;
31000      }
31001    },
31002    get_decoded_string(dataURI) {
31003      let parts2 = dataURI.split(",");
31004      const encoded_data = parts2[1];
31005      let decoded = atob(encoded_data);
31006      try {
31007        const escaped = escape(decoded);
31008        decoded = decodeURIComponent(escaped);
31009      } catch (e) {
31010      }
31011      return decoded;
31012    },
31013    copy_to_clipboard(string) {
31014      const show_success_alert = () => {
31015        frappe.show_alert({
31016          indicator: "green",
31017          message: __("Copied to clipboard.")
31018        });
31019      };
31020      if (navigator.clipboard && window.isSecureContext) {
31021        navigator.clipboard.writeText(string).then(show_success_alert);
31022      } else {
31023        let input = $("<textarea>");
31024        $("body").append(input);
31025        input.val(string).select();
31026        document.execCommand("copy");
31027        show_success_alert();
31028        input.remove();
31029      }
31030    },
31031    is_rtl(lang = null) {
31032      return ["ar", "he", "fa", "ps"].includes(lang || frappe.boot.lang);
31033    },
31034    bind_actions_with_object($el, object) {
31035      $($el).off("click.class_actions");
31036      $($el).on("click.class_actions", "[data-action]", (e) => {
31037        let $target = $(e.currentTarget);
31038        let action = $target.data("action");
31039        let method = object[action];
31040        method ? object[action](e, $target) : null;
31041      });
31042      return $el;
31043    },
31044    eval(code, context = {}) {
31045      let variable_names = Object.keys(context);
31046      let variables = Object.values(context);
31047      code = `let out = ${code}; return out`;
31048      try {
31049        let expression_function = new Function(...variable_names, code);
31050        return expression_function(...variables);
31051      } catch (error) {
31052        console.log("Error evaluating the following expression:");
31053        console.error(code);
31054        throw error;
31055      }
31056    },
31057    get_browser() {
31058      let ua = navigator.userAgent;
31059      let tem;
31060      let M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
31061      if (/trident/i.test(M[1])) {
31062        tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
31063        return { name: "IE", version: tem[1] || "" };
31064      }
31065      if (M[1] === "Chrome") {
31066        tem = ua.match(/\bOPR|Edge\/(\d+)/);
31067        if (tem != null) {
31068          return { name: "Opera", version: tem[1] };
31069        }
31070      }
31071      M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, "-?"];
31072      if ((tem = ua.match(/version\/(\d+)/i)) != null) {
31073        M.splice(1, 1, tem[1]);
31074      }
31075      return {
31076        name: M[0],
31077        version: M[1]
31078      };
31079    },
31080    get_formatted_duration(value2, duration_options = null) {
31081      let duration = "";
31082      if (!duration_options) {
31083        duration_options = {
31084          hide_days: 0,
31085          hide_seconds: 0
31086        };
31087      }
31088      if (value2) {
31089        let total_duration = frappe.utils.seconds_to_duration(value2, duration_options);
31090        if (total_duration.days) {
31091          duration += total_duration.days + __("d", null, "Days (Field: Duration)");
31092        }
31093        if (total_duration.hours) {
31094          duration += duration.length ? " " : "";
31095          duration += total_duration.hours + __("h", null, "Hours (Field: Duration)");
31096        }
31097        if (total_duration.minutes) {
31098          duration += duration.length ? " " : "";
31099          duration += total_duration.minutes + __("m", null, "Minutes (Field: Duration)");
31100        }
31101        if (total_duration.seconds) {
31102          duration += duration.length ? " " : "";
31103          duration += total_duration.seconds + __("s", null, "Seconds (Field: Duration)");
31104        }
31105      }
31106      return duration;
31107    },
31108    seconds_to_duration(seconds, duration_options) {
31109      const round = seconds > 0 ? Math.floor : Math.ceil;
31110      const total_duration = {
31111        days: round(seconds / 86400),
31112        hours: round(seconds % 86400 / 3600),
31113        minutes: round(seconds % 3600 / 60),
31114        seconds: round(seconds % 60)
31115      };
31116      if (duration_options && duration_options.hide_days) {
31117        total_duration.hours = round(seconds / 3600);
31118        total_duration.days = 0;
31119      }
31120      return total_duration;
31121    },
31122    duration_to_seconds(days = 0, hours = 0, minutes = 0, seconds = 0) {
31123      let value2 = 0;
31124      if (days) {
31125        value2 += days * 24 * 60 * 60;
31126      }
31127      if (hours) {
31128        value2 += hours * 60 * 60;
31129      }
31130      if (minutes) {
31131        value2 += minutes * 60;
31132      }
31133      if (seconds) {
31134        value2 += seconds;
31135      }
31136      return value2;
31137    },
31138    get_duration_options: function(docfield) {
31139      return {
31140        hide_days: docfield.hide_days,
31141        hide_seconds: docfield.hide_seconds
31142      };
31143    },
31144    get_number_system: function(country) {
31145      if (["Bangladesh", "India", "Myanmar", "Pakistan"].includes(country)) {
31146        return number_systems_default.indian;
31147      } else if (country == "Nepal") {
31148        return number_systems_default.nepalese;
31149      } else {
31150        return number_systems_default.default;
31151      }
31152    },
31153    map_defaults: {
31154      center: [19.08, 72.8961],
31155      zoom: 13,
31156      tiles: "https://tile.openstreetmap.org/{z}/{x}/{y}.png",
31157      options: {
31158        attribution: '&copy; <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
31159      },
31160      image_path: "/assets/frappe/images/leaflet/"
31161    },
31162    icon(icon_name, size = "sm", icon_class = "", icon_style = "", svg_class = "") {
31163      let size_class = "";
31164      let is_espresso = icon_name.startsWith("es-");
31165      icon_name = is_espresso ? `${"#" + icon_name}` : `${"#icon-" + icon_name}`;
31166      if (typeof size == "object") {
31167        icon_style += ` width: ${size.width}; height: ${size.height}`;
31168      } else {
31169        size_class = `icon-${size}`;
31170      }
31171      return `<svg class="${is_espresso ? icon_name.startsWith("es-solid") ? "es-icon es-solid" : "es-icon es-line" : "icon"} ${svg_class} ${size_class}" style="${icon_style}" aria-hidden="true">
31172			<use class="${icon_class}" href="${icon_name}"></use>
31173		</svg>`;
31174    },
31175    flag(country_code) {
31176      return `<img
31177		src="https://flagcdn.com/${country_code}.svg"
31178		width="20" height="15">`;
31179    },
31180    make_chart(wrapper, custom_options = {}) {
31181      let chart_args = {
31182        type: "bar",
31183        colors: ["light-blue"],
31184        axisOptions: {
31185          xIsSeries: 1,
31186          shortenYAxisNumbers: 1,
31187          xAxisMode: "tick",
31188          numberFormatter: frappe.utils.format_chart_axis_number
31189        }
31190      };
31191      for (let key in custom_options) {
31192        if (typeof chart_args[key] === "object" && typeof custom_options[key] === "object") {
31193          chart_args[key] = Object.assign(chart_args[key], custom_options[key]);
31194        } else {
31195          chart_args[key] = custom_options[key];
31196        }
31197      }
31198      return new frappe.Chart(wrapper, chart_args);
31199    },
31200    format_chart_axis_number(label, country) {
31201      const default_country = frappe.sys_defaults.country;
31202      return frappe.utils.shorten_number(label, country || default_country, 3);
31203    },
31204    generate_route(item) {
31205      const type2 = item.type.toLowerCase();
31206      if (type2 === "doctype") {
31207        item.doctype = item.name;
31208      }
31209      let route = "";
31210      if (!item.route) {
31211        if (item.link) {
31212          route = strip(item.link, "#");
31213        } else if (type2 === "doctype") {
31214          let doctype_slug = frappe.router.slug(item.doctype);
31215          if (frappe.model.is_single(item.doctype)) {
31216            route = doctype_slug;
31217          } else {
31218            switch (item.doc_view) {
31219              case "List":
31220                if (item.filters) {
31221                  frappe.route_options = item.filters;
31222                }
31223                route = `${doctype_slug}/view/list`;
31224                break;
31225              case "Tree":
31226                route = `${doctype_slug}/view/tree`;
31227                break;
31228              case "Report Builder":
31229                route = `${doctype_slug}/view/report`;
31230                break;
31231              case "Dashboard":
31232                route = `${doctype_slug}/view/dashboard`;
31233                break;
31234              case "New":
31235                route = `${doctype_slug}/new`;
31236                break;
31237              case "Calendar":
31238                route = `${doctype_slug}/view/calendar/default`;
31239                break;
31240              case "Kanban":
31241                route = `${doctype_slug}/view/kanban`;
31242                if (item.kanban_board) {
31243                  route += `/${item.kanban_board}`;
31244                }
31245                break;
31246              default:
31247                route = doctype_slug;
31248            }
31249          }
31250        } else if (type2 === "report") {
31251          if (item.is_query_report) {
31252            route = "query-report/" + item.name;
31253          } else if (!item.is_query_report && item.report_ref_doctype) {
31254            route = frappe.router.slug(item.report_ref_doctype) + "/view/report/" + item.name;
31255          } else {
31256            route = "/report/" + item.name;
31257          }
31258        } else if (type2 === "page") {
31259          route = item.name;
31260        } else if (type2 === "dashboard") {
31261          route = `dashboard-view/${item.name}`;
31262        }
31263      } else {
31264        route = item.route;
31265      }
31266      if (item.route_options) {
31267        route += "?" + $.map(item.route_options, function(value2, key) {
31268          return encodeURIComponent(key) + "=" + encodeURIComponent(value2);
31269        }).join("&");
31270      }
31271      return `/app/${route}`;
31272    },
31273    shorten_number: function(number, country, min_length = 4, max_no_of_decimals = 2) {
31274      const len = String(number).match(/\d/g).length;
31275      if (len < min_length) {
31276        return number.toString();
31277      }
31278      const number_system = this.get_number_system(country);
31279      let x = Math.abs(Math.round(number));
31280      const x_string = x.toString();
31281      if (x_string.length < min_length) {
31282        return x_string;
31283      }
31284      for (const map2 of number_system) {
31285        if (x >= map2.divisor) {
31286          let result = number / map2.divisor;
31287          const no_of_decimals = this.get_number_of_decimals(result);
31288          result = no_of_decimals > max_no_of_decimals ? result.toFixed(max_no_of_decimals) : result;
31289          return result + " " + map2.symbol;
31290        }
31291      }
31292      return number.toFixed(max_no_of_decimals);
31293    },
31294    get_number_of_decimals: function(number) {
31295      if (Math.floor(number) === number)
31296        return 0;
31297      return number.toString().split(".")[1].length || 0;
31298    },
31299    build_summary_item(summary) {
31300      if (summary.type == "separator") {
31301        return $(`<div class="summary-separator">
31302				<div class="summary-value ${summary.color ? summary.color.toLowerCase() : "text-muted"}">${summary.value}</div>
31303			</div>`);
31304      }
31305      let df = { fieldtype: summary.datatype };
31306      let doc = null;
31307      if (summary.datatype == "Currency") {
31308        df.options = "currency";
31309        doc = { currency: summary.currency };
31310      }
31311      let value2 = frappe.format(summary.value, df, { only_value: true }, doc);
31312      let color = summary.indicator ? summary.indicator.toLowerCase() : summary.color ? summary.color.toLowerCase() : "";
31313      return $(`<div class="summary-item">
31314			<span class="summary-label">${__(summary.label)}</span>
31315			<div class="summary-value ${color}">${value2}</div>
31316		</div>`);
31317    },
31318    print(doctype, docname, print_format, letterhead, lang_code) {
31319      let w = window.open(
31320        frappe.urllib.get_full_url(
31321          "/printview?doctype=" + encodeURIComponent(doctype) + "&name=" + encodeURIComponent(docname) + "&trigger_print=1&format=" + encodeURIComponent(print_format) + "&no_letterhead=" + (letterhead ? "0" : "1") + "&letterhead=" + encodeURIComponent(letterhead) + (lang_code ? "&_lang=" + lang_code : "")
31322        )
31323      );
31324      if (!w) {
31325        frappe.msgprint(__("Please enable pop-ups"));
31326        return;
31327      }
31328    },
31329    get_clipboard_data(clipboard_paste_event) {
31330      let e = clipboard_paste_event;
31331      let clipboard_data = e.clipboardData || window.clipboardData || e.originalEvent.clipboardData;
31332      return clipboard_data.getData("Text");
31333    },
31334    add_custom_button(html, action, class_name = "", title = "", btn_type, wrapper, prepend) {
31335      if (!btn_type)
31336        btn_type = "btn-secondary";
31337      let button = $(
31338        `<button class="btn ${btn_type} btn-xs ${class_name}" title="${title}">${html}</button>`
31339      );
31340      button.click((event) => {
31341        event.stopPropagation();
31342        action && action(event);
31343      });
31344      !prepend && button.appendTo(wrapper);
31345      prepend && wrapper.prepend(button);
31346    },
31347    add_select_group_button(wrapper, actions, btn_type, icon = "", prepend) {
31348      let selected_action = actions[0];
31349      let $select_group_button = $(`
31350			<div class="btn-group select-group-btn">
31351				<button type="button" class="btn ${btn_type} btn-sm selected-button">
31352					<span class="left-icon">${icon && frappe.utils.icon(icon, "xs")}</span>
31353					<span class="label">${selected_action.label}</span>
31354				</button>
31355
31356				<button type="button" class="btn ${btn_type} btn-sm dropdown-toggle dropdown-toggle-split" data-toggle="dropdown">
31357					${frappe.utils.icon("down", "xs")}
31358				</button>
31359
31360				<ul class="dropdown-menu dropdown-menu-right" role="menu"></ul>
31361			</div>
31362		`);
31363      actions.forEach((action) => {
31364        $(`<li>
31365				<a class="dropdown-item flex">
31366					<div class="tick-icon mr-2">${frappe.utils.icon("check", "xs")}</div>
31367					<div>
31368						<div class="item-label">${action.label}</div>
31369						<div class="item-description text-muted small">${action.description || ""}</div>
31370					</div>
31371				</a>
31372			</li>`).appendTo($select_group_button.find(".dropdown-menu")).click((e) => {
31373          selected_action = action;
31374          $select_group_button.find(".selected-button .label").text(action.label);
31375          $(e.currentTarget).find(".tick-icon").addClass("selected");
31376          $(e.currentTarget).siblings().find(".tick-icon").removeClass("selected");
31377        });
31378      });
31379      $select_group_button.find(".dropdown-menu li:first-child .tick-icon").addClass("selected");
31380      $select_group_button.find(".selected-button").click((event) => {
31381        event.stopPropagation();
31382        selected_action.action && selected_action.action(event);
31383      });
31384      !prepend && $select_group_button.appendTo(wrapper);
31385      prepend && wrapper.prepend($select_group_button);
31386      return $select_group_button;
31387    },
31388    sleep(time) {
31389      return new Promise((resolve) => setTimeout(resolve, time));
31390    },
31391    parse_array(array) {
31392      if (array && array.length !== 0) {
31393        return array;
31394      }
31395      return void 0;
31396    },
31397    range(start, end) {
31398      if (!end) {
31399        end = start;
31400        start = 0;
31401      }
31402      let arr = [];
31403      for (let i2 = start; i2 < end; i2++) {
31404        arr.push(i2);
31405      }
31406      return arr;
31407    },
31408    get_link_title(doctype, name2) {
31409      if (!doctype || !name2 || !frappe._link_titles) {
31410        return;
31411      }
31412      return frappe._link_titles[doctype + "::" + name2];
31413    },
31414    add_link_title(doctype, name2, value2) {
31415      if (!doctype || !name2) {
31416        return;
31417      }
31418      if (!frappe._link_titles) {
31419        frappe._link_titles = {};
31420      }
31421      frappe._link_titles[doctype + "::" + name2] = value2;
31422    },
31423    fetch_link_title(doctype, name2) {
31424      if (!doctype || !name2) {
31425        return;
31426      }
31427      try {
31428        return frappe.xcall("frappe.desk.search.get_link_title", {
31429          doctype,
31430          docname: name2
31431        }).then((title) => {
31432          frappe.utils.add_link_title(doctype, name2, title);
31433          return title;
31434        });
31435      } catch (error) {
31436        console.log("Error while fetching link title.");
31437        console.log(error);
31438        return Promise.resolve(name2);
31439      }
31440    },
31441    only_allow_num_decimal(input) {
31442      input.on("input", (e) => {
31443        let self2 = $(e.target);
31444        self2.val(self2.val().replace(/[^0-9.\-]/g, ""));
31445        if ((e.which != 46 || self2.val().indexOf(".") != -1) && (e.which < 48 || e.which > 57)) {
31446          e.preventDefault();
31447        }
31448      });
31449    },
31450    string_to_boolean(string) {
31451      switch (string.toLowerCase().trim()) {
31452        case "t":
31453        case "true":
31454        case "y":
31455        case "yes":
31456        case "1":
31457          return true;
31458        case "f":
31459        case "false":
31460        case "n":
31461        case "no":
31462        case "0":
31463        case null:
31464          return false;
31465        default:
31466          return string;
31467      }
31468    },
31469    get_filter_as_json(filters) {
31470      let filter = null;
31471      if (filters.length) {
31472        filter = {};
31473        filters.forEach((arr) => {
31474          filter[arr[1]] = [arr[2], arr[3]];
31475        });
31476        filter = JSON.stringify(filter);
31477      }
31478      return filter;
31479    },
31480    process_filter_expression(filter) {
31481      return new Function(`return ${filter}`)();
31482    },
31483    get_filter_from_json(filter_json, doctype) {
31484      if (filter_json) {
31485        if (!filter_json.length) {
31486          return [];
31487        }
31488        const filters_json = this.process_filter_expression(filter_json);
31489        if (!doctype) {
31490          if (Array.isArray(filters_json)) {
31491            let filter = {};
31492            filters_json.forEach((arr) => {
31493              filter[arr[1]] = [arr[2], arr[3]];
31494            });
31495            return filter || [];
31496          }
31497          return filters_json || [];
31498        }
31499        if (Array.isArray(filters_json)) {
31500          return filters_json;
31501        }
31502        return Object.keys(filters_json).map((filter) => {
31503          let val = filters_json[filter];
31504          return [doctype, filter, val[0], val[1], false];
31505        });
31506      }
31507    },
31508    load_video_player() {
31509      return frappe.require("video_player.bundle.js");
31510    },
31511    is_current_user(user) {
31512      return user === frappe.session.user;
31513    },
31514    debug: {
31515      watch_property(obj, prop, callback = console.trace) {
31516        if (!frappe.boot.developer_mode) {
31517          return;
31518        }
31519        console.warn("Adding property watcher, make sure to remove it after debugging.");
31520        const private_prop = "$_" + prop + "_$";
31521        obj[private_prop] = obj[prop];
31522        Object.defineProperty(obj, prop, {
31523          get: function() {
31524            return obj[private_prop];
31525          },
31526          set: function(value2) {
31527            callback();
31528            obj[private_prop] = value2;
31529          }
31530        });
31531      }
31532    },
31533    generate_tracking_url() {
31534      frappe.prompt(
31535        [
31536          {
31537            fieldname: "url",
31538            label: __("Web Page URL"),
31539            fieldtype: "Data",
31540            options: "URL",
31541            reqd: 1,
31542            default: localStorage.getItem("tracker_url:url")
31543          },
31544          {
31545            fieldname: "source",
31546            label: __("Source"),
31547            fieldtype: "Data",
31548            default: localStorage.getItem("tracker_url:source")
31549          },
31550          {
31551            fieldname: "campaign",
31552            label: __("Campaign"),
31553            fieldtype: "Link",
31554            ignore_link_validation: 1,
31555            options: "Marketing Campaign",
31556            default: localStorage.getItem("tracker_url:campaign")
31557          },
31558          {
31559            fieldname: "medium",
31560            label: __("Medium"),
31561            fieldtype: "Data",
31562            default: localStorage.getItem("tracker_url:medium")
31563          }
31564        ],
31565        function(data) {
31566          let url2 = data.url;
31567          localStorage.setItem("tracker_url:url", data.url);
31568          if (data.source) {
31569            url2 += "?source=" + data.source;
31570            localStorage.setItem("tracker_url:source", data.source);
31571          }
31572          if (data.campaign) {
31573            url2 += "&campaign=" + data.campaign;
31574            localStorage.setItem("tracker_url:campaign", data.campaign);
31575          }
31576          if (data.medium) {
31577            url2 += "&medium=" + data.medium.toLowerCase();
31578            localStorage.setItem("tracker_url:medium", data.medium);
31579          }
31580          frappe.utils.copy_to_clipboard(url2);
31581          frappe.msgprint(
31582            __("Tracking URL generated and copied to clipboard") + `: <br><a href="${url2}">${url2.bold()}</a>`,
31583            __("Here's your tracking URL")
31584          );
31585        },
31586        __("Generate Tracking URL")
31587      );
31588    }
31589  });
31590
31591  
31591// frappe/public/js/frappe/utils/common.js
31592  var import_md5 = __toESM(require_md5());
31593  frappe.avatar = function(user, css_class, title, image_url = null, remove_color = false, filterable = false) {
31594    let user_info;
31595    if (user) {
31596      user_info = frappe.user_info(user);
31597    } else {
31598      let full_name = title || frappe.get_cookie("full_name");
31599      user_info = {
31600        image: image_url === null ? frappe.get_cookie("user_image") : image_url,
31601        fullname: full_name,
31602        abbr: frappe.get_abbr(full_name),
31603        color: frappe.get_palette(full_name)
31604      };
31605    }
31606    if (!title) {
31607      title = user_info.fullname;
31608    }
31609    let data_attr = "";
31610    if (filterable) {
31611      css_class += " filterable";
31612      data_attr = `data-filter="_assign,like,%${user}%"`;
31613    }
31614    return frappe.get_avatar(
31615      css_class,
31616      title,
31617      image_url || user_info.image,
31618      remove_color,
31619      data_attr
31620    );
31621  };
31622  frappe.get_avatar = function(css_class, title, image_url = null, remove_color, data_attributes) {
31623    if (!css_class) {
31624      css_class = "avatar-small";
31625    }
31626    let el = document.createElement("div");
31627    if (image_url) {
31628      el.innerHTML = `
31629			<span class="avatar ${css_class}" ${data_attributes}>
31630				<span class="avatar-frame" style='background-image: url("${image_url}")'</span>
31631			</span>`;
31632    } else {
31633      let abbr = frappe.get_abbr(title);
31634      let style = "";
31635      if (!remove_color) {
31636        let color = frappe.get_palette(title);
31637        style = `background-color: var(${color[0]}); color: var(${color[1]})`;
31638      }
31639      if (css_class === "avatar-small" || css_class == "avatar-xs") {
31640        abbr = abbr.substr(0, 1);
31641      }
31642      el.innerHTML = `<span class="avatar ${css_class}" ${data_attributes}>
31643			<div class="avatar-frame standard-image"
31644				style="${style}">
31645					${abbr}
31646			</div>
31647		</span>`;
31648    }
31649    el.querySelector(".avatar").setAttribute("title", title);
31650    el.querySelector(".avatar-frame").setAttribute("title", title);
31651    return el.innerHTML;
31652  };
31653  frappe.avatar_group = function(users, limit = 4, options = {}) {
31654    let avatar_action_html = "";
31655    const display_users = users.slice(0, limit);
31656    const extra_users = users.slice(limit);
31657    const css_class = options.css_class || "";
31658    let html = display_users.map(
31659      (user) => frappe.avatar(user, "avatar-small " + css_class, null, null, false, options.filterable)
31660    ).join("");
31661    if (extra_users.length === 1) {
31662      html += frappe.avatar(
31663        extra_users[0],
31664        "avatar-small " + css_class,
31665        null,
31666        null,
31667        false,
31668        options.filterable
31669      );
31670    } else if (extra_users.length > 1) {
31671      html = `
31672			${html}
31673			<span class="avatar avatar-small ${css_class}">
31674				<div class="avatar-frame standard-image avatar-extra-count"
31675					title="${extra_users.map((u) => frappe.user_info(u).fullname).join(", ")}">
31676					+${extra_users.length}
31677				</div>
31678			</span>
31679		`;
31680    }
31681    if (options.action_icon) {
31682      avatar_action_html = `
31683			<span class="avatar avatar-small">
31684				<div class="avatar-frame avatar-action">
31685					${frappe.utils.icon(options.action_icon, "sm")}
31686				</div>
31687			</span>
31688		`;
31689    }
31690    const $avatar_group = $(`<div class="avatar-group ${options.align || "right"} ${options.overlap != false ? "overlap" : ""}">
31691			${html}
31692			${avatar_action_html}
31693		</div>`);
31694    $avatar_group.find(".avatar-action").on("click", options.action);
31695    return $avatar_group;
31696  };
31697  frappe.ui.scroll = function(element, animate, additional_offset) {
31698    var header_offset = $(".navbar").height() + $(".page-head").height();
31699    var top = $(element).offset().top - header_offset - cint(additional_offset);
31700    if (animate) {
31701      $("html, body").animate({ scrollTop: top });
31702    } else {
31703      $(window).scrollTop(top);
31704    }
31705  };
31706  frappe.palette = [
31707    ["--orange-avatar-bg", "--orange-avatar-color"],
31708    ["--pink-avatar-bg", "--pink-avatar-color"],
31709    ["--blue-avatar-bg", "--blue-avatar-color"],
31710    ["--green-avatar-bg", "--green-avatar-color"],
31711    ["--dark-green-avatar-bg", "--dark-green-avatar-color"],
31712    ["--red-avatar-bg", "--red-avatar-color"],
31713    ["--yellow-avatar-bg", "--yellow-avatar-color"],
31714    ["--purple-avatar-bg", "--purple-avatar-color"],
31715    ["--gray-avatar-bg", "--gray-avatar-color0"]
31716  ];
31717  frappe.get_palette = function(txt) {
31718    if (!txt)
31719      return frappe.palette[8];
31720    var idx = cint((parseInt((0, import_md5.default)(txt).substr(4, 2), 16) + 1) / 5.33);
31721    return frappe.palette[idx % 8];
31722  };
31723  frappe.get_abbr = function(txt, max_length) {
31724    if (!txt)
31725      return "";
31726    var abbr = "";
31727    $.each(txt.split(" "), function(i2, w) {
31728      if (abbr.length >= (max_length || 2)) {
31729        return false;
31730      } else if (!w.trim().length) {
31731        return true;
31732      }
31733      abbr += w.trim()[0];
31734    });
31735    return abbr || "?";
31736  };
31737  frappe.gravatars = {};
31738  frappe.get_gravatar = function(email_id, size = 0) {
31739    var param = size ? "s=" + size : "d=retro";
31740    if (!frappe.gravatars[email_id]) {
31741      frappe.gravatars[email_id] = "https://secure.gravatar.com/avatar/" + (0, import_md5.default)(email_id) + "?" + param;
31742    }
31743    return frappe.gravatars[email_id];
31744  };
31745  window.repl = function repl2(s, dict) {
31746    if (s == null)
31747      return "";
31748    for (var key in dict) {
31749      s = s.split("%(" + key + ")s").join(dict[key]);
31750    }
31751    return s;
31752  };
31753  window.replace_all = function(s, t1, t2) {
31754    return s.split(t1).join(t2);
31755  };
31756  window.strip_html = function(txt) {
31757    return cstr(txt).replace(/<[^>]*>/g, "");
31758  };
31759  window.strip = function(s, chars2) {
31760    if (s) {
31761      s = lstrip(s, chars2);
31762      s = rstrip(s, chars2);
31763      return s;
31764    }
31765  };
31766  window.lstrip = function lstrip2(s, chars2) {
31767    if (!chars2)
31768      chars2 = ["\n", "	", " "];
31769    let first_char = s.substr(0, 1);
31770    while (chars2.includes(first_char)) {
31771      s = s.substr(1);
31772      first_char = s.substr(0, 1);
31773    }
31774    return s;
31775  };
31776  window.rstrip = function(s, chars2) {
31777    if (!chars2)
31778      chars2 = ["\n", "	", " "];
31779    let last_char = s.substr(s.length - 1);
31780    while (chars2.includes(last_char)) {
31781      s = s.substr(0, s.length - 1);
31782      last_char = s.substr(s.length - 1);
31783    }
31784    return s;
31785  };
31786  frappe.get_cookie = function getCookie(name2) {
31787    return frappe.get_cookies()[name2];
31788  };
31789  frappe.get_cookies = function getCookies() {
31790    var c = document.cookie, v = 0, cookies = {};
31791    if (document.cookie.match(/^\s*\$Version=(?:"1"|1);\s*(.*)/)) {
31792      c = RegExp.$1;
31793      v = 1;
31794    }
31795    if (v === 0) {
31796      c.split(/[,;]/).map(function(cookie) {
31797        var parts2 = cookie.split(/=/, 2), name2 = decodeURIComponent(parts2[0].trimLeft()), value2 = parts2.length > 1 ? decodeURIComponent(parts2[1].trimRight()) : null;
31798        if (value2 && value2.charAt(0) === '"') {
31799          value2 = value2.substr(1, value2.length - 2);
31800        }
31801        cookies[name2] = value2;
31802      });
31803    } else {
31804      c.match(
31805        /(?:^|\s+)([!#$%&'*+\-.0-9A-Z^`a-z|~]+)=([!#$%&'*+\-.0-9A-Z^`a-z|~]*|"(?:[\x20-\x7E\x80\xFF]|\\[\x00-\x7F])*")(?=\s*[,;]|$)/g
31806      ).map(function($0, $1) {
31807        var name2 = $0, value2 = $1.charAt(0) === '"' ? $1.substr(1, -1).replace(/\\(.)/g, "$1") : $1;
31808        cookies[name2] = value2;
31809      });
31810    }
31811    return cookies;
31812  };
31813  frappe.is_mobile = function() {
31814    return $(document).width() < 768;
31815  };
31816  frappe.is_large_screen = function() {
31817    return $(document).height() > 1180;
31818  };
31819  frappe.utils.xss_sanitise = function(string, options) {
31820    let sanitised = string;
31821    const DEFAULT_OPTIONS = {
31822      strategies: ["html", "js"]
31823    };
31824    const HTML_ESCAPE_MAP = {
31825      "<": "&lt;",
31826      ">": "&gt;",
31827      '"': "&quot;",
31828      "'": "&#x27;",
31829      "/": "&#x2F;"
31830    };
31831    const REGEX_SCRIPT = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;
31832    const REGEX_ALERT = /confirm\(.*\)|alert\(.*\)|prompt\(.*\)/gi;
31833    options = Object.assign({}, DEFAULT_OPTIONS, options);
31834    if (options.strategies.includes("js")) {
31835      sanitised = sanitised.replace(REGEX_SCRIPT, "");
31836      sanitised = sanitised.replace(REGEX_ALERT, "");
31837    }
31838    if (options.strategies.includes("html")) {
31839      for (let char in HTML_ESCAPE_MAP) {
31840        const escape2 = HTML_ESCAPE_MAP[char];
31841        const regex = new RegExp(char, "g");
31842        sanitised = sanitised.replace(regex, escape2);
31843      }
31844    }
31845    return sanitised;
31846  };
31847  frappe.utils.sanitise_redirect = (url2) => {
31848    const is_external = (() => {
31849      return (url3) => {
31850        function domain(url4) {
31851          let base_domain = /^(?:https?:\/\/)?(?:[^@\n]+@)?(?:www\.)?([^:/\n?]+)/gim.exec(
31852            url4
31853          );
31854          return base_domain == null ? "" : base_domain[1];
31855        }
31856        function is_absolute(url4) {
31857          return /^(?:[a-z]+:)?\/\//i.test(url4);
31858        }
31859        return is_absolute(url3) ? domain(location.href) !== domain(url3) : false;
31860      };
31861    })();
31862    const sanitise_javascript = (url3) => {
31863      const REGEX_ESC_UNIT = /\s*(&#x.{1,7})?/;
31864      const REGEX_SCRIPT = new RegExp(
31865        Array.from("javascript").join(REGEX_ESC_UNIT.source),
31866        "gi"
31867      );
31868      return url3.replace(REGEX_SCRIPT, "");
31869    };
31870    url2 = frappe.utils.strip_url(url2);
31871    return is_external(url2) ? "" : sanitise_javascript(frappe.utils.xss_sanitise(url2, { strategies: ["js"] }));
31872  };
31873  frappe.utils.strip_url = (url2) => {
31874    return url2.replace(/^[^A-Za-z0-9(//)#]+/g, "");
31875  };
31876  frappe.utils.new_auto_repeat_prompt = function(frm) {
31877    const fields = [
31878      {
31879        fieldname: "frequency",
31880        fieldtype: "Select",
31881        label: __("Frequency"),
31882        reqd: 1,
31883        options: [
31884          { label: __("Daily"), value: "Daily" },
31885          { label: __("Weekly"), value: "Weekly" },
31886          { label: __("Monthly"), value: "Monthly" },
31887          { label: __("Quarterly"), value: "Quarterly" },
31888          { label: __("Half-yearly"), value: "Half-yearly" },
31889          { label: __("Yearly"), value: "Yearly" }
31890        ]
31891      },
31892      {
31893        fieldname: "start_date",
31894        fieldtype: "Date",
31895        label: __("Start Date"),
31896        reqd: 1,
31897        default: frappe.datetime.nowdate()
31898      },
31899      {
31900        fieldname: "end_date",
31901        fieldtype: "Date",
31902        label: __("End Date")
31903      }
31904    ];
31905    frappe.prompt(
31906      fields,
31907      function(values) {
31908        frappe.call({
31909          method: "frappe.automation.doctype.auto_repeat.auto_repeat.make_auto_repeat",
31910          args: {
31911            doctype: frm.doc.doctype,
31912            docname: frm.doc.name,
31913            frequency: values["frequency"],
31914            start_date: values["start_date"],
31915            end_date: values["end_date"]
31916          },
31917          callback: function(r) {
31918            if (r.message) {
31919              frappe.show_alert({
31920                message: __("Auto Repeat created for this document"),
31921                indicator: "green"
31922              });
31923              frm.reload_doc();
31924            }
31925          }
31926        });
31927      },
31928      __("Auto Repeat"),
31929      __("Save")
31930    );
31931  };
31932  frappe.utils.get_page_view_count = function(route) {
31933    return frappe.call("frappe.website.doctype.web_page_view.web_page_view.get_page_view_count", {
31934      path: route
31935    });
31936  };
31937
31938  
31938// frappe/public/js/frappe/form/section.js
31939  var Section = class {
31940    constructor(parent, df, card_layout, layout) {
31941      this.layout = layout;
31942      this.card_layout = card_layout;
31943      this.parent = parent;
31944      this.df = df || {};
31945      this.columns = [];
31946      this.fields_list = [];
31947      this.fields_dict = {};
31948      this.make();
31949      if (this.df.label && this.df.collapsible && localStorage.getItem(df.css_class + "-closed")) {
31950        this.collapse();
31951      }
31952      this.row = {
31953        wrapper: this.wrapper
31954      };
31955      this.refresh();
31956    }
31957    make() {
31958      let make_card = this.card_layout;
31959      this.wrapper = $(`<div class="row
31960				${this.df.is_dashboard_section ? "form-dashboard-section" : "form-section"}
31961				${make_card ? "card-section" : ""}" data-fieldname="${this.df.fieldname}">
31962			`).appendTo(this.parent);
31963      if (this.df) {
31964        if (this.df.label) {
31965          this.make_head();
31966        }
31967        if (this.df.description) {
31968          this.description_wrapper = $(
31969            `<div class="col-sm-12 form-section-description">
31970						${__(this.df.description)}
31971					</div>`
31972          );
31973          this.wrapper.append(this.description_wrapper);
31974        }
31975        if (this.df.css_class) {
31976          this.wrapper.addClass(this.df.css_class);
31977        }
31978        if (this.df.hide_border) {
31979          this.wrapper.toggleClass("hide-border", true);
31980        }
31981      }
31982      this.body = $('<div class="section-body">').appendTo(this.wrapper);
31983      if (this.df.body_html) {
31984        this.body.append(this.df.body_html);
31985      }
31986    }
31987    make_head() {
31988      this.head = $(`
31989			<div class="section-head">
31990				${__(this.df.label, null, this.df.parent)}
31991				<span class="ml-2 collapse-indicator mb-1"></span>
31992			</div>
31993		`);
31994      this.head.appendTo(this.wrapper);
31995      this.indicator = this.head.find(".collapse-indicator");
31996      this.indicator.hide();
31997      if (this.df.collapsible) {
31998        this.head.addClass("collapsible");
31999        this.collapse_link = this.head.on("click", () => {
32000          this.collapse();
32001        });
32002        this.set_icon();
32003        this.indicator.show();
32004      }
32005    }
32006    replace_field(fieldname, fieldobj) {
32007      var _a;
32008      if ((_a = this.fields_dict[fieldname]) == null ? void 0 : _a.df) {
32009        const olfldobj = this.fields_dict[fieldname];
32010        const idx = this.fields_list.findIndex((e) => e == olfldobj);
32011        this.fields_list.splice(idx, 1, fieldobj);
32012        this.fields_dict[fieldname] = fieldobj;
32013        fieldobj.section = this;
32014      }
32015    }
32016    add_field(fieldobj) {
32017      this.fields_list.push(fieldobj);
32018      this.fields_dict[fieldobj.df.fieldname] = fieldobj;
32019      fieldobj.section = this;
32020    }
32021    refresh(hide) {
32022      if (!this.df)
32023        return;
32024      hide = hide || this.df.hidden || this.df.hidden_due_to_dependency;
32025      this.wrapper.toggleClass("hide-control", !!hide);
32026    }
32027    collapse(hide) {
32028      if (!(this.head && this.body)) {
32029        return;
32030      }
32031      if (hide === void 0) {
32032        hide = !this.body.hasClass("hide");
32033      }
32034      this.body.toggleClass("hide", hide);
32035      this.head && this.head.toggleClass("collapsed", hide);
32036      this.set_icon(hide);
32037      this.fields_list.forEach((f) => f.on_section_collapse && f.on_section_collapse(hide));
32038      if (this.df.css_class)
32039        localStorage.setItem(this.df.css_class + "-closed", hide ? "1" : "");
32040    }
32041    set_icon(hide) {
32042      let indicator_icon = hide ? "es-line-down" : "es-line-up";
32043      this.indicator && this.indicator.html(frappe.utils.icon(indicator_icon, "sm", "mb-1"));
32044    }
32045    is_collapsed() {
32046      return this.body.hasClass("hide");
32047    }
32048    has_missing_mandatory() {
32049      let missing_mandatory = false;
32050      for (let j = 0, l = this.fields_list.length; j < l; j++) {
32051        const section_df = this.fields_list[j].df;
32052        if (section_df.reqd && this.layout.doc[section_df.fieldname] == null) {
32053          missing_mandatory = true;
32054          break;
32055        }
32056      }
32057      return missing_mandatory;
32058    }
32059    hide() {
32060      this.on_section_toggle(false);
32061    }
32062    show() {
32063      this.on_section_toggle(true);
32064    }
32065    on_section_toggle(show) {
32066      this.wrapper.toggleClass("hide-control", !show);
32067    }
32068  };
32069
32070  
32070// frappe/public/js/frappe/form/tab.js
32071  var Tab2 = class {
32072    constructor(layout, df, frm, tab_link_container, tabs_content) {
32073      var _a, _b;
32074      this.layout = layout;
32075      this.df = df || {};
32076      this.frm = frm;
32077      this.doctype = (_b = (_a = this.frm) == null ? void 0 : _a.doctype) != null ? _b : this.df.parent;
32078      this.label = this.df && this.df.label;
32079      this.tab_link_container = tab_link_container;
32080      this.tabs_content = tabs_content;
32081      this.make();
32082      this.setup_listeners();
32083      this.refresh();
32084    }
32085    make() {
32086      const id = `${frappe.scrub(this.doctype, "-")}-${this.df.fieldname}`;
32087      this.tab_link = $(`
32088			<li class="nav-item">
32089				<a class="nav-link ${this.df.active ? "active" : ""}" id="${id}-tab"
32090					data-toggle="tab"
32091					data-fieldname="${this.df.fieldname}"
32092					href="#${id}"
32093					role="tab"
32094					aria-controls="${id}">
32095						${__(this.label)}
32096				</a>
32097			</li>
32098		`).appendTo(this.tab_link_container);
32099      this.wrapper = $(`<div class="tab-pane fade show ${this.df.active ? "active" : ""}"
32100			id="${id}" role="tabpanel" aria-labelledby="${id}-tab">`).appendTo(this.tabs_content);
32101    }
32102    refresh() {
32103      if (!this.df)
32104        return;
32105      let hide = this.df.hidden || this.df.hidden_due_to_dependency;
32106      if (!hide && this.frm && !this.frm.get_perm(this.df.permlevel || 0, "read")) {
32107        hide = true;
32108      }
32109      if (!hide) {
32110        hide = true;
32111        if (this.wrapper.find(
32112          ".form-section:not(.hide-control, .empty-section), .form-dashboard-section:not(.hide-control, .empty-section)"
32113        ).length) {
32114          hide = false;
32115        }
32116      }
32117      this.toggle(!hide);
32118    }
32119    toggle(show) {
32120      this.tab_link.toggleClass("hide", !show);
32121      this.wrapper.toggleClass("hide", !show);
32122      this.tab_link.toggleClass("show", show);
32123      this.wrapper.toggleClass("show", show);
32124      this.hidden = !show;
32125    }
32126    show() {
32127      this.tab_link.show();
32128    }
32129    hide() {
32130      this.tab_link.hide();
32131    }
32132    add_field(fieldobj) {
32133      fieldobj.tab = this;
32134    }
32135    replace_field(fieldobj) {
32136      fieldobj.tab = this;
32137    }
32138    set_active() {
32139      var _a, _b;
32140      this.tab_link.find(".nav-link").tab("show");
32141      this.wrapper.addClass("show");
32142      (_b = (_a = this.frm) == null ? void 0 : _a.set_active_tab) == null ? void 0 : _b.call(_a, this);
32143    }
32144    is_active() {
32145      return this.wrapper.hasClass("active");
32146    }
32147    is_hidden() {
32148      return this.wrapper.hasClass("hide") && this.tab_link.hasClass("hide");
32149    }
32150    setup_listeners() {
32151      this.tab_link.find(".nav-link").on("shown.bs.tab", () => {
32152        var _a, _b;
32153        (_b = this == null ? void 0 : (_a = this.frm).set_active_tab) == null ? void 0 : _b.call(_a, this);
32154      });
32155    }
32156  };
32157
32158  
32158// frappe/public/js/frappe/form/column.js
32159  var Column = class {
32160    constructor(section, df) {
32161      if (!df)
32162        df = {};
32163      this.df = df;
32164      this.section = section;
32165      this.section.columns.push(this);
32166      this.make();
32167      this.resize_all_columns();
32168    }
32169    make() {
32170      this.wrapper = $(`
32171			<div class="form-column" data-fieldname="${this.df.fieldname}">
32172				<form>
32173				</form>
32174			</div>
32175		`).appendTo(this.section.body);
32176      this.form = this.wrapper.find("form").on("submit", () => false);
32177      if (this.df.description) {
32178        $(`
32179				<p class="col-sm-12 form-column-description">
32180					${__(this.df.description)}
32181				</p>
32182			`).prependTo(this.wrapper);
32183      }
32184      if (this.df.label) {
32185        $(`
32186				<label class="column-label">
32187					${__(this.df.label, null, this.df.parent)}
32188				</label>
32189			`).prependTo(this.wrapper);
32190      }
32191    }
32192    resize_all_columns() {
32193      let columns = this.section.wrapper.find(".form-column").length;
32194      let colspan = cint(12 / columns);
32195      if (columns == 5) {
32196        colspan = 20;
32197      }
32198      this.section.wrapper.find(".form-column").removeClass().addClass("form-column").addClass("col-sm-" + colspan);
32199    }
32200    add_field() {
32201    }
32202    refresh() {
32203      this.section.refresh();
32204    }
32205  };
32206
32207  
32207// frappe/public/js/frappe/form/layout.js
32208  frappe.ui.form.Layout = class Layout {
32209    constructor(opts) {
32210      this.views = {};
32211      this.pages = [];
32212      this.tabs = [];
32213      this.sections = [];
32214      this.page_breaks = [];
32215      this.sections_dict = {};
32216      this.fields_list = [];
32217      this.fields_dict = {};
32218      this.section_count = 0;
32219      this.column_count = 0;
32220      $.extend(this, opts);
32221    }
32222    make() {
32223      if (!this.parent && this.body) {
32224        this.parent = this.body;
32225      }
32226      this.wrapper = $('<div class="form-layout">').appendTo(this.parent);
32227      this.message = $('<div class="form-message hidden"></div>').appendTo(this.wrapper);
32228      this.page = $('<div class="form-page"></div>').appendTo(this.wrapper);
32229      if (!this.fields) {
32230        this.fields = this.get_doctype_fields();
32231      }
32232      if (this.is_tabbed_layout()) {
32233        this.setup_tabbed_layout();
32234      }
32235      this.setup_tab_events();
32236      this.frm && this.setup_tooltip_events();
32237      this.render();
32238    }
32239    setup_tabbed_layout() {
32240      $(`
32241			<div class="form-tabs-list">
32242				<ul class="nav form-tabs" id="form-tabs" role="tablist"></ul>
32243			</div>
32244		`).appendTo(this.page);
32245      this.tab_link_container = this.page.find(".form-tabs");
32246      this.tabs_content = $(`<div class="form-tab-content tab-content"></div>`).appendTo(
32247        this.page
32248      );
32249      this.setup_events();
32250    }
32251    get_doctype_fields() {
32252      let fields = [this.get_new_name_field()];
32253      if (this.doctype_layout) {
32254        fields = fields.concat(this.get_fields_from_layout());
32255      } else {
32256        fields = fields.concat(
32257          frappe.meta.sort_docfields(frappe.meta.docfield_map[this.doctype])
32258        );
32259      }
32260      return fields;
32261    }
32262    get_new_name_field() {
32263      return {
32264        parent: this.frm.doctype,
32265        fieldtype: "Data",
32266        fieldname: "__newname",
32267        reqd: 1,
32268        hidden: 1,
32269        label: __("Name"),
32270        get_status: function(field) {
32271          if (field.frm && field.frm.is_new() && field.frm.meta.autoname && ["prompt", "name"].includes(field.frm.meta.autoname.toLowerCase())) {
32272            return "Write";
32273          }
32274          return "None";
32275        }
32276      };
32277    }
32278    get_fields_from_layout() {
32279      const fields = [];
32280      for (let f of this.doctype_layout.fields) {
32281        const docfield = copy_dict(frappe.meta.docfield_map[this.doctype][f.fieldname]);
32282        docfield.label = f.label;
32283        fields.push(docfield);
32284      }
32285      return fields;
32286    }
32287    show_message(html, color) {
32288      if (this.message_color) {
32289        this.message.removeClass(this.message_color);
32290      }
32291      let close_message = $(`<div class="close-message">${frappe.utils.icon("close")}</div>`);
32292      this.message_color = color && ["yellow", "blue", "red", "green", "orange"].includes(color) ? color : "blue";
32293      if (html) {
32294        if (html.substr(0, 1) !== "<") {
32295          html = "<div>" + html + "</div>";
32296        }
32297        this.message.removeClass("hidden").addClass(this.message_color);
32298        $(html).appendTo(this.message);
32299        close_message.appendTo(this.message);
32300        close_message.on("click", () => this.message.empty().addClass("hidden"));
32301      } else {
32302        this.message.empty().addClass("hidden");
32303      }
32304    }
32305    render(new_fields) {
32306      let fields = new_fields || this.fields;
32307      this.section = null;
32308      this.column = null;
32309      if (this.no_opening_section() && !this.is_tabbed_layout()) {
32310        this.fields.unshift({ fieldtype: "Section Break" });
32311      }
32312      if (this.is_tabbed_layout()) {
32313        let default_tab = {
32314          label: __("Details"),
32315          fieldtype: "Tab Break",
32316          fieldname: "__details"
32317        };
32318        let first_field_visible = this.fields.find((element) => element.hidden == false);
32319        let first_tab = (first_field_visible == null ? void 0 : first_field_visible.fieldtype) === "Tab Break" ? first_field_visible : null;
32320        if (!first_tab) {
32321          this.fields.splice(0, 0, default_tab);
32322        } else {
32323          let newname_field = this.fields.find((df) => df.fieldname === "__newname");
32324          if (newname_field && newname_field.get_status(this) === "Write") {
32325            this.fields.splice(0, 1);
32326            this.fields.splice(1, 0, newname_field);
32327          }
32328        }
32329      }
32330      fields.forEach((df) => {
32331        switch (df.fieldtype) {
32332          case "Fold":
32333            this.make_page(df);
32334            break;
32335          case "Page Break":
32336            this.make_page_break();
32337            this.make_section(df);
32338            break;
32339          case "Section Break":
32340            this.make_section(df);
32341            break;
32342          case "Column Break":
32343            this.make_column(df);
32344            break;
32345          case "Tab Break":
32346            this.make_tab(df);
32347            break;
32348          default:
32349            this.make_field(df);
32350        }
32351      });
32352    }
32353    no_opening_section() {
32354      return this.fields[0] && this.fields[0].fieldtype != "Section Break" || !this.fields.length;
32355    }
32356    no_opening_tab() {
32357      return this.fields[1] && this.fields[1].fieldtype != "Tab Break" || !this.fields.length;
32358    }
32359    is_tabbed_layout() {
32360      return this.fields.find((f) => f.fieldtype === "Tab Break");
32361    }
32362    replace_field(fieldname, df, render) {
32363      var _a;
32364      df.fieldname = fieldname;
32365      if (this.fields_dict[fieldname] && this.fields_dict[fieldname].df) {
32366        const prev_fieldobj = this.fields_dict[fieldname];
32367        const fieldobj = this.init_field(df, prev_fieldobj.parent, render);
32368        prev_fieldobj.$wrapper.replaceWith(fieldobj.$wrapper);
32369        const idx = this.fields_list.findIndex((e) => e == prev_fieldobj);
32370        this.fields_list.splice(idx, 1, fieldobj);
32371        this.fields_dict[fieldname] = fieldobj;
32372        this.sections.forEach((section) => section.replace_field(fieldname, fieldobj));
32373        (_a = prev_fieldobj.tab) == null ? void 0 : _a.replace_field(fieldobj);
32374        this.refresh_fields([df]);
32375      }
32376    }
32377    make_field(df, colspan, render) {
32378      !this.section && this.make_section();
32379      !this.column && this.make_column();
32380      const parent = this.column.form.get(0);
32381      const fieldobj = this.init_field(df, parent, render);
32382      if (!fieldobj)
32383        return;
32384      this.fields_list.push(fieldobj);
32385      this.fields_dict[df.fieldname] = fieldobj;
32386      this.section.add_field(fieldobj);
32387      this.column.add_field(fieldobj);
32388      if (this.current_tab) {
32389        this.current_tab.add_field(fieldobj);
32390      }
32391    }
32392    init_field(df, parent, render = false) {
32393      const fieldobj = frappe.ui.form.make_control({
32394        df,
32395        doctype: this.doctype,
32396        parent,
32397        frm: this.frm,
32398        render_input: render,
32399        doc: this.doc,
32400        layout: this
32401      });
32402      if (fieldobj) {
32403        fieldobj.layout = this;
32404      }
32405      return fieldobj;
32406    }
32407    make_page_break() {
32408      this.page = $('<div class="form-page page-break"></div>').appendTo(this.wrapper);
32409    }
32410    make_page(df) {
32411      let me = this;
32412      let head = $(`
32413			<div class="form-clickable-section text-center">
32414				<a class="btn-fold h6 text-muted">
32415					${__("Show more details")}
32416				</a>
32417			</div>
32418		`).appendTo(this.wrapper);
32419      this.page = $('<div class="form-page second-page hide"></div>').appendTo(this.wrapper);
32420      this.fold_btn = head.find(".btn-fold").on("click", function() {
32421        let page = $(this).parent().next();
32422        if (page.hasClass("hide")) {
32423          $(this).removeClass("btn-fold").html(__("Hide details"));
32424          page.removeClass("hide");
32425          frappe.utils.scroll_to($(this), true, 30);
32426          me.folded = false;
32427        } else {
32428          $(this).addClass("btn-fold").html(__("Show more details"));
32429          page.addClass("hide");
32430          me.folded = true;
32431        }
32432      });
32433      this.section = null;
32434      this.folded = true;
32435    }
32436    unfold() {
32437      this.fold_btn.trigger("click");
32438    }
32439    make_section(df = {}) {
32440      this.section_count++;
32441      if (!df.fieldname) {
32442        df.fieldname = `__section_${this.section_count}`;
32443        df.fieldtype = "Section Break";
32444      }
32445      this.section = new Section(
32446        this.current_tab ? this.current_tab.wrapper : this.page,
32447        df,
32448        this.card_layout,
32449        this
32450      );
32451      this.sections.push(this.section);
32452      this.sections_dict[df.fieldname] = this.section;
32453      if (df) {
32454        this.fields_dict[df.fieldname] = this.section;
32455        this.fields_list.push(this.section);
32456      }
32457      this.column = null;
32458    }
32459    make_column(df = {}) {
32460      this.column_count++;
32461      if (!df.fieldname) {
32462        df.fieldname = `__column_${this.section_count}`;
32463        df.fieldtype = "Column Break";
32464      }
32465      this.column = new Column(this.section, df);
32466      if (df && df.fieldname) {
32467        this.fields_list.push(this.column);
32468      }
32469    }
32470    make_tab(df) {
32471      this.section = null;
32472      let tab = new Tab2(this, df, this.frm, this.tab_link_container, this.tabs_content);
32473      this.current_tab = tab;
32474      this.make_section({ fieldtype: "Section Break" });
32475      this.tabs.push(tab);
32476      return tab;
32477    }
32478    refresh(doc) {
32479      if (doc)
32480        this.doc = doc;
32481      if (this.frm) {
32482        this.wrapper.find(".empty-form-alert").remove();
32483      }
32484      this.attach_doc_and_docfields(true);
32485      if (this.frm && this.frm.wrapper) {
32486        $(this.frm.wrapper).trigger("refresh-fields");
32487      }
32488      this.refresh_dependency();
32489      this.refresh_sections();
32490      if (this.frm) {
32491        this.refresh_section_collapse();
32492      }
32493      if (document.activeElement) {
32494        if (document.activeElement.tagName == "INPUT" && this.is_numeric_field_active()) {
32495          document.activeElement.select();
32496        }
32497      }
32498    }
32499    is_numeric_field_active() {
32500      const control = $(document.activeElement).closest(".frappe-control");
32501      const fieldtype = (control.data() || {}).fieldtype;
32502      return frappe.model.numeric_fieldtypes.includes(fieldtype);
32503    }
32504    refresh_sections() {
32505      this.wrapper.find(".form-section:not(.hide-control)").each(function() {
32506        const section = $(this).removeClass("empty-section visible-section");
32507        if (section.find(".frappe-control:not(.hide-control)").length) {
32508          section.addClass("visible-section");
32509        } else if (section.parent().hasClass("tab-pane") || section.parent().hasClass("form-page")) {
32510          section.addClass("empty-section");
32511        }
32512      });
32513      this.is_tabbed_layout() && this.refresh_tabs();
32514    }
32515    refresh_tabs() {
32516      for (let tab of this.tabs) {
32517        tab.refresh();
32518      }
32519      const visible_tabs = this.tabs.filter((tab) => !tab.hidden);
32520      if (visible_tabs && visible_tabs.length == 1) {
32521        visible_tabs[0].tab_link.toggleClass("hide show");
32522      }
32523      this.set_tab_as_active();
32524    }
32525    select_tab(label_or_fieldname) {
32526      var _a;
32527      for (let tab of this.tabs) {
32528        if (tab.label.toLowerCase() === label_or_fieldname.toLowerCase() || ((_a = tab.df.fieldname) == null ? void 0 : _a.toLowerCase()) === label_or_fieldname.toLowerCase()) {
32529          tab.set_active();
32530          return;
32531        }
32532      }
32533    }
32534    set_tab_as_active() {
32535      var _a, _b;
32536      let frm_active_tab = (_b = (_a = this.frm) == null ? void 0 : _a.get_active_tab) == null ? void 0 : _b.call(_a);
32537      if (frm_active_tab) {
32538        frm_active_tab.set_active();
32539      } else if (this.tabs.length) {
32540        let first_visible_tab = this.tabs.find((tab) => !tab.is_hidden());
32541        first_visible_tab && first_visible_tab.set_active();
32542      }
32543    }
32544    refresh_fields(fields) {
32545      let fieldnames = fields.map((field) => {
32546        if (field.fieldname)
32547          return field.fieldname;
32548      });
32549      this.fields_list.map((fieldobj) => {
32550        if (fieldnames.includes(fieldobj.df.fieldname)) {
32551          fieldobj.refresh();
32552          if (fieldobj.df["default"]) {
32553            fieldobj.set_input(fieldobj.df["default"]);
32554          }
32555        }
32556      });
32557    }
32558    add_fields(fields) {
32559      this.render(fields);
32560      this.refresh_fields(fields);
32561    }
32562    refresh_section_collapse() {
32563      if (!(this.sections && this.sections.length))
32564        return;
32565      for (let i2 = 0; i2 < this.sections.length; i2++) {
32566        let section = this.sections[i2];
32567        let df = section.df;
32568        if (df && df.collapsible) {
32569          let collapse = true;
32570          if (df.collapsible_depends_on) {
32571            collapse = !this.evaluate_depends_on_value(df.collapsible_depends_on);
32572          }
32573          if (collapse && section.has_missing_mandatory()) {
32574            collapse = false;
32575          }
32576          section.collapse(collapse);
32577        }
32578      }
32579    }
32580    attach_doc_and_docfields(refresh) {
32581      let me = this;
32582      for (let i2 = 0, l = this.fields_list.length; i2 < l; i2++) {
32583        let fieldobj = this.fields_list[i2];
32584        if (me.doc) {
32585          fieldobj.doc = me.doc;
32586          fieldobj.doctype = me.doc.doctype;
32587          fieldobj.docname = me.doc.name;
32588          fieldobj.df = frappe.meta.get_docfield(me.doc.doctype, fieldobj.df.fieldname, me.doc.name) || fieldobj.df;
32589        }
32590        refresh && fieldobj.df && fieldobj.refresh && fieldobj.refresh();
32591      }
32592    }
32593    refresh_section_count() {
32594      this.wrapper.find(".section-count-label:visible").each(function(i2) {
32595        $(this).html(i2 + 1);
32596      });
32597    }
32598    setup_events() {
32599      let last_scroll = 0;
32600      let tabs_list = $(".form-tabs-list");
32601      let tabs_content = this.tabs_content[0];
32602      if (!tabs_list.length)
32603        return;
32604      $(window).scroll(
32605        frappe.utils.throttle(() => {
32606          let current_scroll = document.documentElement.scrollTop;
32607          if (current_scroll > 0 && last_scroll <= current_scroll) {
32608            tabs_list.removeClass("form-tabs-sticky-down");
32609            tabs_list.addClass("form-tabs-sticky-up");
32610          } else {
32611            tabs_list.removeClass("form-tabs-sticky-up");
32612            tabs_list.addClass("form-tabs-sticky-down");
32613          }
32614          last_scroll = current_scroll;
32615        }, 500)
32616      );
32617      this.tab_link_container.off("click").on("click", ".nav-link", (e) => {
32618        e.preventDefault();
32619        e.stopImmediatePropagation();
32620        $(e.currentTarget).tab("show");
32621        if (tabs_content.getBoundingClientRect().top < 100) {
32622          tabs_content.scrollIntoView();
32623          setTimeout(() => {
32624            $(".page-head").css("top", "-15px");
32625            $(".form-tabs-list").removeClass("form-tabs-sticky-down");
32626            $(".form-tabs-list").addClass("form-tabs-sticky-up");
32627          }, 3);
32628        }
32629      });
32630    }
32631    setup_tab_events() {
32632      this.wrapper.on("keydown", (ev) => {
32633        if (ev.which == 9) {
32634          let current = $(ev.target);
32635          let doctype = current.attr("data-doctype");
32636          let fieldname = current.attr("data-fieldname");
32637          if (doctype) {
32638            return this.handle_tab(doctype, fieldname, ev.shiftKey);
32639          }
32640        }
32641      });
32642    }
32643    setup_tooltip_events() {
32644      $(document).on("keydown", (e) => {
32645        if (e.altKey) {
32646          this.wrapper.addClass("show-tooltip");
32647        }
32648      });
32649      $(document).on("keyup", (e) => {
32650        if (!e.altKey) {
32651          this.wrapper.removeClass("show-tooltip");
32652        }
32653      });
32654      this.frm.page && frappe.ui.keys.add_shortcut({
32655        shortcut: "alt+hover",
32656        page: this.frm.page,
32657        description: __("Show Fieldname (click to copy on clipboard)")
32658      });
32659    }
32660    handle_tab(doctype, fieldname, shift) {
32661      let grid_row = null, prev2 = null, fields = this.fields_list, focused = false;
32662      if (doctype != this.doctype) {
32663        grid_row = this.get_open_grid_row();
32664        if (!grid_row || !grid_row.layout) {
32665          return;
32666        }
32667        fields = grid_row.layout.fields_list;
32668      }
32669      for (let i2 = 0, len = fields.length; i2 < len; i2++) {
32670        if (fields[i2].df.fieldname == fieldname) {
32671          if (shift) {
32672            if (prev2) {
32673              this.set_focus(prev2);
32674            } else {
32675              $(this.primary_button).focus();
32676            }
32677            break;
32678          }
32679          if (i2 < len - 1) {
32680            focused = this.focus_on_next_field(i2, fields);
32681          }
32682          if (focused) {
32683            break;
32684          }
32685        }
32686        if (this.is_visible(fields[i2]))
32687          prev2 = fields[i2];
32688      }
32689      if (!focused) {
32690        if (grid_row) {
32691          if (grid_row.doc.idx == grid_row.grid.grid_rows.length) {
32692            grid_row.toggle_view(false, function() {
32693              grid_row.grid.frm.layout.handle_tab(
32694                grid_row.grid.df.parent,
32695                grid_row.grid.df.fieldname
32696              );
32697            });
32698          } else {
32699            grid_row.grid.grid_rows[grid_row.doc.idx].toggle_view(true);
32700          }
32701        } else if (!shift) {
32702          $(this.primary_button).focus();
32703        }
32704      }
32705      return false;
32706    }
32707    focus_on_next_field(start_idx, fields) {
32708      for (let i2 = start_idx + 1, len = fields.length; i2 < len; i2++) {
32709        let field = fields[i2];
32710        if (this.is_visible(field)) {
32711          if (field.df.fieldtype === "Table") {
32712            if (!(field.grid.grid_rows && field.grid.grid_rows.length)) {
32713              field.grid.add_new_row();
32714            }
32715            field.grid.grid_rows[0].show_form();
32716            return true;
32717          } else if (field.df.fieldtype === "Table MultiSelect" || !frappe.model.no_value_type.includes(field.df.fieldtype)) {
32718            this.set_focus(field);
32719            return true;
32720          }
32721        }
32722      }
32723    }
32724    is_visible(field) {
32725      return field.disp_status === "Write" && field.df && "hidden" in field.df && !field.df.hidden;
32726    }
32727    set_focus(field) {
32728      if (field.tab) {
32729        field.tab.set_active();
32730      }
32731      if (field.df.fieldtype == "Table") {
32732        if (!field.grid.grid_rows.length) {
32733          field.grid.add_new_row(1);
32734        } else {
32735          field.grid.grid_rows[0].toggle_view(true);
32736        }
32737      } else if (field.editor) {
32738        field.editor.set_focus();
32739      } else if (field.$input) {
32740        field.$input.focus();
32741      }
32742    }
32743    get_open_grid_row() {
32744      return $(".grid-row-open").data("grid_row");
32745    }
32746    refresh_dependency() {
32747      let has_dep = false;
32748      const fields = this.fields_list.concat(this.tabs);
32749      for (let fkey in fields) {
32750        let f = fields[fkey];
32751        if (f.df.depends_on || f.df.mandatory_depends_on || f.df.read_only_depen
32751ds_on) {
32752          has_dep = true;
32753          break;
32754        }
32755      }
32756      if (!has_dep)
32757        return;
32758      for (let i2 = fields.length - 1; i2 >= 0; i2--) {
32759        let f = fields[i2];
32760        f.guardian_has_value = true;
32761        if (f.df.depends_on) {
32762          f.guardian_has_value = this.evaluate_depends_on_value(f.df.depends_on);
32763          if (f.guardian_has_value) {
32764            if (f.df.hidden_due_to_dependency) {
32765              f.df.hidden_due_to_dependency = false;
32766              f.refresh();
32767            }
32768          } else {
32769            if (!f.df.hidden_due_to_dependency) {
32770              f.df.hidden_due_to_dependency = true;
32771              f.refresh();
32772            }
32773          }
32774        }
32775        if (f.df.mandatory_depends_on) {
32776          this.set_dependant_property(f.df.mandatory_depends_on, f.df.fieldname, "reqd");
32777        }
32778        if (f.df.read_only_depends_on) {
32779          this.set_dependant_property(
32780            f.df.read_only_depends_on,
32781            f.df.fieldname,
32782            "read_only"
32783          );
32784        }
32785      }
32786      this.refresh_section_count();
32787    }
32788    set_dependant_property(condition, fieldname, property) {
32789      let set_property = this.evaluate_depends_on_value(condition);
32790      let value2 = set_property ? 1 : 0;
32791      let form_obj;
32792      if (this.frm) {
32793        form_obj = this.frm;
32794      } else if (this.is_dialog || this.doctype === "Web Form") {
32795        form_obj = this;
32796      }
32797      if (form_obj) {
32798        if (this.doc && this.doc.parent && this.doc.parentfield) {
32799          form_obj.setting_dependency = true;
32800          form_obj.set_df_property(
32801            this.doc.parentfield,
32802            property,
32803            value2,
32804            this.doc.parent,
32805            fieldname,
32806            this.doc.name
32807          );
32808          form_obj.setting_dependency = false;
32809          this.fields_dict[fieldname] && this.fields_dict[fieldname].refresh();
32810        } else {
32811          form_obj.set_df_property(fieldname, property, value2);
32812        }
32813      }
32814    }
32815    evaluate_depends_on_value(expression) {
32816      let out = null;
32817      let doc = this.doc;
32818      if (!doc && this.get_values) {
32819        doc = this.get_values(true);
32820      }
32821      if (!doc) {
32822        return;
32823      }
32824      let parent = this.frm ? this.frm.doc : this.doc || null;
32825      if (typeof expression === "boolean") {
32826        out = expression;
32827      } else if (typeof expression === "function") {
32828        out = expression(doc);
32829      } else if (expression.substr(0, 5) == "eval:") {
32830        try {
32831          out = frappe.utils.eval(expression.substr(5), { doc, parent });
32832          if (parent && parent.istable && expression.includes("is_submittable")) {
32833            out = true;
32834          }
32835        } catch (e) {
32836          frappe.throw(__('Invalid "depends_on" expression'));
32837        }
32838      } else if (expression.substr(0, 3) == "fn:" && this.frm) {
32839        out = this.frm.script_manager.trigger(
32840          expression.substr(3),
32841          this.doctype,
32842          this.docname
32843        );
32844      } else {
32845        var value2 = doc[expression];
32846        if ($.isArray(value2)) {
32847          out = !!value2.length;
32848        } else {
32849          out = !!value2;
32850        }
32851      }
32852      return out;
32853    }
32854  };
32855
32856  
32856// frappe/public/js/frappe/ui/field_group.js
32857  frappe.provide("frappe.ui");
32858  frappe.ui.FieldGroup = class FieldGroup extends frappe.ui.form.Layout {
32859    constructor(opts) {
32860      super(opts);
32861      this.dirty = false;
32862      $.each(this.fields || [], function(i2, f) {
32863        if (!f.fieldname && f.label) {
32864          f.fieldname = f.label.replace(/ /g, "_").toLowerCase();
32865        }
32866      });
32867      if (this.values) {
32868        this.set_values(this.values);
32869      }
32870    }
32871    make() {
32872      let me = this;
32873      if (this.fields) {
32874        super.make();
32875        this.refresh();
32876        $.each(this.fields_list, function(i2, field) {
32877          if (field.df["default"]) {
32878            let def_value = field.df["default"];
32879            if (def_value == "Today" && field.df["fieldtype"] == "Date") {
32880              def_value = frappe.datetime.get_today();
32881            }
32882            field.set_input(def_value);
32883            me.refresh_dependency();
32884          }
32885        });
32886        if (!this.no_submit_on_enter) {
32887          this.catch_enter_as_submit();
32888        }
32889        $(this.wrapper).find("input, select").on("change awesomplete-selectcomplete", () => {
32890          this.dirty = true;
32891          frappe.run_serially([
32892            () => frappe.timeout(0.1),
32893            () => me.refresh_dependency()
32894          ]);
32895        });
32896      }
32897    }
32898    focus_on_first_input() {
32899      if (this.no_focus)
32900        return;
32901      $.each(this.fields_list, function(i2, f) {
32902        if (!["Date", "Datetime", "Time", "Check"].includes(f.df.fieldtype) && f.set_focus) {
32903          f.set_focus();
32904          return false;
32905        }
32906      });
32907    }
32908    catch_enter_as_submit() {
32909      let me = this;
32910      $(this.body).find('input[type="text"], input[type="password"], select').keypress(function(e) {
32911        if (e.which == 13) {
32912          if (me.has_primary_action) {
32913            e.preventDefault();
32914            me.get_primary_btn().trigger("click");
32915          }
32916        }
32917      });
32918    }
32919    get_input(fieldname) {
32920      let field = this.fields_dict[fieldname];
32921      if (!field)
32922        return "";
32923      return $(field.txt ? field.txt : field.input);
32924    }
32925    get_field(fieldname) {
32926      return this.fields_dict[fieldname];
32927    }
32928    get_values(ignore_errors, check_invalid) {
32929      let ret = {};
32930      let errors = [];
32931      let invalid = [];
32932      for (let key in this.fields_dict) {
32933        let f = this.fields_dict[key];
32934        if (f.get_value) {
32935          let v = f.get_value();
32936          if (f.df.reqd && is_null(typeof v === "string" ? strip_html(v) : v))
32937            errors.push(__(f.df.label));
32938          if (f.df.reqd && f.df.fieldtype === "Text Editor" && is_null(strip_html(cstr(v))))
32939            errors.push(__(f.df.label));
32940          if (!is_null(v))
32941            ret[f.df.fieldname] = v;
32942        }
32943        if (this.is_dialog && f.df.reqd && !f.value) {
32944          f.refresh_input();
32945        }
32946        if (f.df.invalid) {
32947          invalid.push(__(f.df.label));
32948        }
32949      }
32950      if (errors.length && !ignore_errors) {
32951        frappe.msgprint({
32952          title: __("Missing Values Required"),
32953          message: __("Following fields have missing values:") + "<br><br><ul><li>" + errors.join("<li>") + "</ul>",
32954          indicator: "orange"
32955        });
32956        return null;
32957      }
32958      if (invalid.length && check_invalid) {
32959        frappe.msgprint({
32960          title: __("Invalid Values"),
32961          message: __("Following fields have invalid values:") + "<br><br><ul><li>" + invalid.join("<li>") + "</ul>",
32962          indicator: "orange"
32963        });
32964        return null;
32965      }
32966      return ret;
32967    }
32968    get_value(key) {
32969      let f = this.fields_dict[key];
32970      return f && (f.get_value ? f.get_value() : null);
32971    }
32972    set_value(key, val) {
32973      return new Promise((resolve) => {
32974        let f = this.fields_dict[key];
32975        if (f) {
32976          f.set_value(val).then(() => {
32977            var _a;
32978            (_a = f.set_input) == null ? void 0 : _a.call(f, val);
32979            this.refresh_dependency();
32980            resolve();
32981          });
32982        } else {
32983          resolve();
32984        }
32985      });
32986    }
32987    has_field(fieldname) {
32988      return !!this.fields_dict[fieldname];
32989    }
32990    set_input(key, val) {
32991      return this.set_value(key, val);
32992    }
32993    set_values(dict) {
32994      let promises = [];
32995      for (let key in dict) {
32996        if (this.fields_dict[key]) {
32997          promises.push(this.set_value(key, dict[key]));
32998        }
32999      }
33000      return Promise.all(promises);
33001    }
33002    clear() {
33003      for (let key in this.fields_dict) {
33004        let f = this.fields_dict[key];
33005        if (f && f.set_input) {
33006          f.set_input(f.df["default"] || "");
33007        }
33008      }
33009    }
33010    set_df_property(fieldname, prop, value2) {
33011      if (!fieldname) {
33012        return;
33013      }
33014      const field = this.get_field(fieldname);
33015      field.df[prop] = value2;
33016      field.refresh();
33017    }
33018  };
33019
33020  
33020// frappe/public/js/frappe/dom.js
33021  frappe.provide("frappe.dom");
33022  frappe.dom = {
33023    id_count: 0,
33024    freeze_count: 0,
33025    by_id: function(id) {
33026      return document.getElementById(id);
33027    },
33028    get_unique_id: function() {
33029      const id = "unique-" + frappe.dom.id_count;
33030      frappe.dom.id_count++;
33031      return id;
33032    },
33033    set_unique_id: function(ele) {
33034      var $ele = $(ele);
33035      if ($ele.attr("id")) {
33036        return $ele.attr("id");
33037      }
33038      var id = "unique-" + frappe.dom.id_count;
33039      $ele.attr("id", id);
33040      frappe.dom.id_count++;
33041      return id;
33042    },
33043    eval: function(txt) {
33044      if (!txt)
33045        return;
33046      var el = document.createElement("script");
33047      el.appendChild(document.createTextNode(txt));
33048      document.getElementsByTagName("head")[0].appendChild(el);
33049    },
33050    remove_script_and_style: function(txt) {
33051      const evil_tags = ["script", "style", "noscript", "title", "meta", "base", "head"];
33052      const parser = new DOMParser();
33053      const doc = parser.parseFromString(txt, "text/html");
33054      const body = doc.body;
33055      let found = !!doc.head.innerHTML;
33056      for (const tag of evil_tags) {
33057        for (const element of body.getElementsByTagName(tag)) {
33058          found = true;
33059          element.parentNode.removeChild(element);
33060        }
33061      }
33062      for (const element of body.getElementsByTagName("link")) {
33063        const relation = element.getAttribute("rel");
33064        if (relation && relation.toLowerCase().trim() === "stylesheet") {
33065          found = true;
33066          element.parentNode.removeChild(element);
33067        }
33068      }
33069      if (found) {
33070        return body.innerHTML;
33071      } else {
33072        return txt;
33073      }
33074    },
33075    is_element_in_viewport: function(el, tolerance = 0) {
33076      if (typeof jQuery === "function" && el instanceof jQuery) {
33077        el = el[0];
33078      }
33079      var rect = el.getBoundingClientRect();
33080      return rect.top + tolerance >= 0 && rect.left + tolerance >= 0 && rect.bottom - tolerance <= $(window).height() && rect.right - tolerance <= $(window).width();
33081    },
33082    is_element_in_modal(element) {
33083      return Boolean($(element).parents(".modal").length);
33084    },
33085    set_style: function(txt, id) {
33086      if (!txt)
33087        return;
33088      var se = document.createElement("style");
33089      se.type = "text/css";
33090      if (id) {
33091        var element = document.getElementById(id);
33092        if (element) {
33093          element.parentNode.removeChild(element);
33094        }
33095        se.id = id;
33096      }
33097      if (se.styleSheet) {
33098        se.styleSheet.cssText = txt;
33099      } else {
33100        se.appendChild(document.createTextNode(txt));
33101      }
33102      document.getElementsByTagName("head")[0].appendChild(se);
33103      return se;
33104    },
33105    add: function(parent, newtag, className, cs, innerHTML, onclick) {
33106      if (parent && parent.substr)
33107        parent = frappe.dom.by_id(parent);
33108      var c = document.createElement(newtag);
33109      if (parent)
33110        parent.appendChild(c);
33111      if (className) {
33112        if (newtag.toLowerCase() == "img")
33113          c.src = className;
33114        else
33115          c.className = className;
33116      }
33117      if (cs)
33118        frappe.dom.css(c, cs);
33119      if (innerHTML)
33120        c.innerHTML = innerHTML;
33121      if (onclick)
33122        c.onclick = onclick;
33123      return c;
33124    },
33125    css: function(ele, s) {
33126      if (ele && s) {
33127        $.extend(ele.style, s);
33128      }
33129      return ele;
33130    },
33131    activate: function($parent, $child, common_class, active_class = "active") {
33132      $parent.find(`.${common_class}.${active_class}`).removeClass(active_class);
33133      $child.addClass(active_class);
33134    },
33135    freeze: function(msg, css_class) {
33136      if (!$("#freeze").length) {
33137        var freeze = $('<div id="freeze" class="modal-backdrop fade"></div>').on("click", function() {
33138          if (cur_frm && cur_frm.cur_grid) {
33139            cur_frm.cur_grid.toggle_view();
33140            return false;
33141          }
33142        }).appendTo("#body");
33143        freeze.html(
33144          repl(
33145            '<div class="freeze-message-container"><div class="freeze-message"><p class="lead">%(msg)s</p></div></div>',
33146            { msg: msg || "" }
33147          )
33148        );
33149        setTimeout(function() {
33150          freeze.addClass("in");
33151        }, 1);
33152      } else {
33153        $("#freeze").addClass("in");
33154      }
33155      if (css_class) {
33156        $("#freeze").addClass(css_class);
33157      }
33158      frappe.dom.freeze_count++;
33159    },
33160    unfreeze: function() {
33161      if (!frappe.dom.freeze_count)
33162        return;
33163      frappe.dom.freeze_count--;
33164      if (!frappe.dom.freeze_count) {
33165        var freeze = $("#freeze").removeClass("in").remove();
33166      }
33167    },
33168    save_selection: function() {
33169      if (window.getSelection) {
33170        var sel = window.getSelection();
33171        if (sel.getRangeAt && sel.rangeCount) {
33172          var ranges = [];
33173          for (var i2 = 0, len = sel.rangeCount; i2 < len; ++i2) {
33174            ranges.push(sel.getRangeAt(i2));
33175          }
33176          return ranges;
33177        }
33178      } else if (document.selection && document.selection.createRange) {
33179        return document.selection.createRange();
33180      }
33181      return null;
33182    },
33183    restore_selection: function(savedSel) {
33184      if (savedSel) {
33185        if (window.getSelection) {
33186          var sel = window.getSelection();
33187          sel.removeAllRanges();
33188          for (var i2 = 0, len = savedSel.length; i2 < len; ++i2) {
33189            sel.addRange(savedSel[i2]);
33190          }
33191        } else if (document.selection && savedSel.select) {
33192          savedSel.select();
33193        }
33194      }
33195    },
33196    is_touchscreen: function() {
33197      return "ontouchstart" in window;
33198    },
33199    handle_broken_images(container) {
33200      $(container).find("img").on("error", (e) => {
33201        const $img = $(e.currentTarget);
33202        $img.addClass("no-image");
33203      });
33204    },
33205    scroll_to_bottom(container) {
33206      const $container = $(container);
33207      $container.scrollTop($container[0].scrollHeight);
33208    },
33209    file_to_base64(file_obj) {
33210      return new Promise((resolve) => {
33211        const reader = new FileReader();
33212        reader.onload = function() {
33213          resolve(reader.result);
33214        };
33215        reader.readAsDataURL(file_obj);
33216      });
33217    },
33218    scroll_to_section(section_name) {
33219      setTimeout(() => {
33220        const section = $(`a:contains("${section_name}")`);
33221        if (section.length) {
33222          if (section.parent().hasClass("collapsed")) {
33223            section.click();
33224          }
33225          frappe.ui.scroll(section.parent().parent());
33226        }
33227      }, 200);
33228    },
33229    pixel_to_inches(pixels) {
33230      const div = $(
33231        '<div id="dpi" style="height: 1in; width: 1in; left: 100%; position: fixed; top: 100%;"></div>'
33232      );
33233      div.appendTo(document.body);
33234      const dpi_x = document.getElementById("dpi").offsetWidth;
33235      const inches = pixels / dpi_x;
33236      div.remove();
33237      return inches;
33238    }
33239  };
33240  frappe.ellipsis = function(text, max) {
33241    if (!max)
33242      max = 20;
33243    text = cstr(text);
33244    if (text.length > max) {
33245      text = text.substr(0, max) + "...";
33246    }
33247    return text;
33248  };
33249  frappe.run_serially = function(tasks) {
33250    var result = Promise.resolve();
33251    tasks.forEach((task) => {
33252      if (task) {
33253        result = result.then ? result.then(task) : Promise.resolve();
33254      }
33255    });
33256    return result;
33257  };
33258  frappe.load_image = (src, onload, onerror, preprocess = () => {
33259  }) => {
33260    var tester = new Image();
33261    tester.onload = function() {
33262      onload(this);
33263    };
33264    tester.onerror = onerror;
33265    preprocess(tester);
33266    tester.src = src;
33267  };
33268  frappe.timeout = (seconds) => {
33269    return new Promise((resolve) => {
33270      setTimeout(() => resolve(), seconds * 1e3);
33271    });
33272  };
33273  frappe.scrub = function(text, spacer = "_") {
33274    return text.replace(/ /g, spacer).toLowerCase();
33275  };
33276  frappe.unscrub = function(txt) {
33277    return frappe.model.unscrub(txt);
33278  };
33279  frappe.get_data_pill = (label, target_id = null, remove_action = null, image = null, colored = false) => {
33280    let color = "", style = "";
33281    if (colored) {
33282      color = frappe.get_palette(label);
33283    }
33284    style = `background-color: var(${color[0]}); color: var(${color[1]})`;
33285    let data_pill_wrapper = $(`
33286		<button class="data-pill btn" style="${style}">
33287			<div class="flex align-center ellipsis">
33288				${image ? image : ""}
33289				<span class="pill-label">${label} </span>
33290			</div>
33291		</button>
33292	`);
33293    if (remove_action) {
33294      let remove_btn = $(`
33295			<span class="remove-btn cursor-pointer">
33296				${frappe.utils.icon("close", "sm")}
33297			</span>
33298		`);
33299      if (typeof remove_action === "function") {
33300        remove_btn.click(() => {
33301          remove_action(target_id || label, data_pill_wrapper);
33302        });
33303      }
33304      data_pill_wrapper.append(remove_btn);
33305    }
33306    return data_pill_wrapper;
33307  };
33308  frappe.get_modal = function(title, content) {
33309    return $(`<div class="modal fade" style="overflow: auto;" tabindex="-1">
33310		<div class="modal-dialog">
33311			<div class="modal-content">
33312				<div class="modal-header">
33313					<div class="fill-width flex title-section">
33314						<span class="indicator hidden"></span>
33315						<h4 class="modal-title">${title}</h4>
33316					</div>
33317					<div class="modal-actions">
33318						<button class="btn btn-modal-minimize btn-link hide">
33319							${frappe.utils.icon("collapse")}
33320						</button>
33321						<button class="btn btn-modal-close btn-link" data-dismiss="modal">
33322							${frappe.utils.icon("close-alt", "sm", "close-alt")}
33323						</button>
33324					</div>
33325				</div>
33326				<div class="modal-body ui-front">${content}</div>
33327				<div class="modal-footer hide">
33328					<div class="custom-actions"></div>
33329					<div class="standard-actions">
33330						<button type="button" class="btn btn-secondary btn-sm hide btn-modal-secondary">
33331						</button>
33332						<button type="button" class="btn btn-primary btn-sm hide btn-modal-primary">
33333							${__("Confirm")}
33334						</button>
33335					</div>
33336				</div>
33337			</div>
33338		</div>
33339	</div>`);
33340  };
33341  frappe.is_online = function() {
33342    if (frappe.boot.developer_mode == 1) {
33343      return true;
33344    }
33345    if ("onLine" in navigator) {
33346      return navigator.onLine;
33347    }
33348    return true;
33349  };
33350  frappe.create_shadow_element = function(wrapper, html, css, js) {
33351    let random_id = "custom-block-" + frappe.utils.get_random(5).toLowerCase();
33352    class CustomBlock extends HTMLElement {
33353      constructor() {
33354        var _a, _b, _c, _d;
33355        super();
33356        let div = document.createElement("div");
33357        div.innerHTML = frappe.dom.remove_script_and_style(html);
33358        let link = document.createElement("link");
33359        link.rel = "stylesheet";
33360        link.href = frappe.assets.bundled_asset("desk.bundle.css");
33361        let style = document.createElement("style");
33362        style.textContent = css;
33363        let script = document.createElement("script");
33364        script.textContent = `
33365				(function() {
33366					let cname = ${JSON.stringify(random_id)};
33367					let root_element = document.querySelector(cname).shadowRoot;
33368					${js}
33369				})();
33370			`;
33371        this.attachShadow({ mode: "open" });
33372        (_a = this.shadowRoot) == null ? void 0 : _a.appendChild(link);
33373        (_b = this.shadowRoot) == null ? void 0 : _b.appendChild(div);
33374        (_c = this.shadowRoot) == null ? void 0 : _c.appendChild(style);
33375        (_d = this.shadowRoot) == null ? void 0 : _d.appendChild(script);
33376      }
33377    }
33378    if (!customElements.get(random_id)) {
33379      customElements.define(random_id, CustomBlock);
33380    }
33381    wrapper.innerHTML = `<${random_id}></${random_id}>`;
33382  };
33383  $(window).on("online", function() {
33384    if (document.hidden)
33385      return;
33386    frappe.show_alert({
33387      indicator: "green",
33388      message: __("You are connected to internet.")
33389    });
33390  });
33391  $(window).on("offline", function() {
33392    if (document.hidden)
33393      return;
33394    frappe.show_alert({
33395      indicator: "orange",
33396      message: __("Connection lost. Some features might not work.")
33397    });
33398  });
33399
33400  
33400// frappe/public/js/frappe/ui/dialog.js
33401  frappe.provide("frappe.ui");
33402  window.cur_dialog = null;
33403  frappe.ui.open_dialogs = [];
33404  frappe.ui.Dialog = class Dialog extends frappe.ui.FieldGroup {
33405    constructor(opts) {
33406      super();
33407      this.display = false;
33408      this.is_dialog = true;
33409      $.extend(this, { animate: true, size: null }, opts);
33410      this.make();
33411    }
33412    make() {
33413      this.$wrapper = frappe.get_modal("", "");
33414      if (this.static) {
33415        this.$wrapper.modal({
33416          backdrop: "static",
33417          keyboard: false
33418        });
33419        this.get_close_btn().hide();
33420      }
33421      if (!this.size)
33422        this.set_modal_size();
33423      this.wrapper = this.$wrapper.find(".modal-dialog").get(0);
33424      if (this.size == "small")
33425        $(this.wrapper).addClass("modal-sm");
33426      else if (this.size == "large")
33427        $(this.wrapper).addClass("modal-lg");
33428      else if (this.size == "extra-large")
33429        $(this.wrapper).addClass("modal-xl");
33430      this.make_head();
33431      this.modal_body = this.$wrapper.find(".modal-body");
33432      this.$body = $("<div></div>").appendTo(this.modal_body);
33433      this.body = this.$body.get(0);
33434      this.$message = $('<div class="hide modal-message"></div>').appendTo(this.modal_body);
33435      this.header = this.$wrapper.find(".modal-header");
33436      this.footer = this.$wrapper.find(".modal-footer");
33437      this.standard_actions = this.footer.find(".standard-actions");
33438      this.custom_actions = this.footer.find(".custom-actions");
33439      this.set_indicator();
33440      super.make();
33441      this.refresh_section_collapse();
33442      this.action = this.action || { primary: {}, secondary: {} };
33443      if (this.primary_action || this.action.primary && this.action.primary.onsubmit) {
33444        this.set_primary_action(
33445          this.primary_action_label || this.action.primary.label || __("Submit", null, "Primary action in dialog"),
33446          this.primary_action || this.action.primary.onsubmit
33447        );
33448      }
33449      if (this.secondary_action) {
33450        this.set_secondary_action(this.secondary_action);
33451      }
33452      if (this.secondary_action_label || this.action.secondary && this.action.secondary.label) {
33453        this.set_secondary_action_label(
33454          this.secondary_action_label || this.action.secondary.label
33455        );
33456      }
33457      if (this.minimizable) {
33458        this.header.find(".title-section").click(() => this.is_minimized && this.toggle_minimize());
33459        this.get_minimize_btn().removeClass("hide").on("click", () => this.toggle_minimize());
33460      }
33461      var me = this;
33462      this.$wrapper.on("hide.bs.modal", function() {
33463        var _a, _b, _c;
33464        me.display = false;
33465        me.is_minimized = false;
33466        me.hide_scrollbar(false);
33467        (_c = (_b = (_a = frappe.ui.form).get_open_grid_form) == null ? void 0 : _b.call(_a)) == null ? void 0 : _c.hide_form();
33468        if (frappe.ui.open_dialogs[frappe.ui.open_dialogs.length - 1] === me) {
33469          frappe.ui.open_dialogs.pop();
33470          if (frappe.ui.open_dialogs.length) {
33471            window.cur_dialog = frappe.ui.open_dialogs[frappe.ui.open_dialogs.length - 1];
33472          } else {
33473            window.cur_dialog = null;
33474          }
33475        }
33476        me.onhide && me.onhide();
33477        me.on_hide && me.on_hide();
33478      }).on("shown.bs.modal", function() {
33479        me.display = true;
33480        window.cur_dialog = me;
33481        frappe.ui.open_dialogs.push(me);
33482        me.focus_on_first_input();
33483        me.hide_scrollbar(true);
33484        me.on_page_show && me.on_page_show();
33485        $(document).trigger("frappe.ui.Dialog:shown");
33486        $(document).off("focusin.modal");
33487      }).on("scroll", function() {
33488        var $input = $("input:focus");
33489        if ($input.length && ["Date", "Datetime", "Time"].includes($input.attr("data-fieldtype"))) {
33490          $input.blur();
33491        }
33492      });
33493    }
33494    set_modal_size() {
33495      if (!this.fields) {
33496        this.size = "";
33497        return;
33498      }
33499      let col_brk = 0;
33500      let cur_col_brk = 0;
33501      this.fields.forEach((field) => {
33502        if (field.fieldtype == "Column Break") {
33503          cur_col_brk++;
33504          if (cur_col_brk > col_brk) {
33505            col_brk = cur_col_brk;
33506          }
33507        } else if (field.fieldtype == "Section Break") {
33508          cur_col_brk = 0;
33509        }
33510      });
33511      this.size = col_brk >= 4 ? "extra-large" : col_brk >= 2 ? "large" : "";
33512    }
33513    get_primary_btn() {
33514      return this.standard_actions.find(".btn-primary");
33515    }
33516    get_minimize_btn() {
33517      return this.$wrapper.find(".modal-header .btn-modal-minimize");
33518    }
33519    set_message(text) {
33520      this.$message.removeClass("hide");
33521      this.$body.addClass("hide");
33522      this.$message.text(text);
33523    }
33524    clear_message() {
33525      this.$message.addClass("hide");
33526      this.$body.removeClass("hide");
33527    }
33528    clear() {
33529      super.clear();
33530      this.clear_message();
33531    }
33532    set_primary_action(label, click) {
33533      this.footer.removeClass("hide");
33534      this.has_primary_action = true;
33535      var me = this;
33536      const primary_btn = this.get_primary_btn().removeClass("hide").html(label);
33537      if (typeof click == "function") {
33538        primary_btn.off("click").on("click", function() {
33539          me.primary_action_fulfilled = true;
33540          var values = me.get_values();
33541          if (!values)
33542            return;
33543          click && click.apply(me, [values]);
33544        });
33545      }
33546      return primary_btn;
33547    }
33548    set_secondary_action(click) {
33549      this.footer.removeClass("hide");
33550      return this.get_secondary_btn().removeClass("hide").off("click").on("click", click);
33551    }
33552    set_secondary_action_label(label) {
33553      this.get_secondary_btn().removeClass("hide").html(label);
33554    }
33555    disable_primary_action() {
33556      this.get_primary_btn().addClass("disabled");
33557    }
33558    enable_primary_action() {
33559      this.get_primary_btn().removeClass("disabled");
33560    }
33561    make_head() {
33562      this.set_title(this.title);
33563    }
33564    set_title(t) {
33565      this.$wrapper.find(".modal-title").html(t);
33566    }
33567    set_indicator() {
33568      if (this.indicator) {
33569        this.header.find(".indicator").removeClass().addClass("indicator " + this.indicator);
33570      }
33571    }
33572    show() {
33573      if (this.animate) {
33574        this.$wrapper.addClass("fade");
33575      } else {
33576        this.$wrapper.removeClass("fade");
33577      }
33578      this.$wrapper.modal("show");
33579      this.$wrapper.removeClass("modal-minimize");
33580      if (this.minimizable && this.is_minimized) {
33581        $(".modal-backdrop").toggle();
33582        this.is_minimized = false;
33583      }
33584      this.clear_message();
33585      this.primary_action_fulfilled = false;
33586      this.is_visible = true;
33587      return this;
33588    }
33589    hide() {
33590      this.$wrapper.modal("hide");
33591      this.is_visible = false;
33592    }
33593    get_close_btn() {
33594      return this.$wrapper.find(".btn-modal-close");
33595    }
33596    get_secondary_btn() {
33597      return this.standard_actions.find(".btn-modal-secondary");
33598    }
33599    no_cancel() {
33600      this.get_close_btn().toggle(false);
33601    }
33602    cancel() {
33603      this.get_close_btn().trigger("click");
33604    }
33605    toggle_minimize() {
33606      $(".modal-backdrop").toggle();
33607      let modal = this.$wrapper.closest(".modal").toggleClass("modal-minimize");
33608      modal.attr("tabindex") ? modal.removeAttr("tabindex") : modal.attr("tabindex", -1);
33609      this.is_minimized = !this.is_minimized;
33610      const icon = this.is_minimized ? "expand" : "collapse";
33611      this.get_minimize_btn().html(frappe.utils.icon(icon));
33612      this.on_minimize_toggle && this.on_minimize_toggle(this.is_minimized);
33613      this.header.find(".modal-title").toggleClass("cursor-pointer");
33614      this.hide_scrollbar(!this.is_minimized);
33615    }
33616    hide_scrollbar(bool) {
33617      $("body").css("overflow", bool ? "hidden" : "auto");
33618    }
33619    add_custom_action(label, action, css_class = null) {
33620      this.footer.removeClass("hide");
33621      let action_button = $(`
33622			<button class="btn btn-secondary btn-sm ${css_class || ""}">
33623				${label}
33624			</button>
33625		`);
33626      this.custom_actions.append(action_button);
33627      action && action_button.click(action);
33628    }
33629  };
33630  frappe.ui.hide_open_dialog = () => {
33631    if (window.cur_dialog) {
33632      if (!cur_dialog.minimizable) {
33633        cur_dialog.hide();
33634      } else if (!cur_dialog.is_minimized) {
33635        cur_dialog.toggle_minimize();
33636      }
33637    }
33638  };
33639
33640  
33640// frappe/public/js/frappe/ui/messages.js
33641  frappe.provide("frappe.messages");
33642  frappe.messages.waiting = function(parent, msg) {
33643    return $(frappe.messages.get_waiting_message(msg)).appendTo(parent);
33644  };
33645  frappe.messages.get_waiting_message = function(msg) {
33646    return repl(
33647      '<div class="msg-box" style="width: 63%; margin: 30px auto;">		<p class="text-center">%(msg)s</p></div>',
33648      { msg }
33649    );
33650  };
33651  frappe.throw = function(msg) {
33652    if (typeof msg === "string") {
33653      msg = { message: msg, title: __("Error") };
33654    }
33655    if (!msg.indicator)
33656      msg.indicator = "red";
33657    frappe.msgprint(msg);
33658    throw new Error(msg.message);
33659  };
33660  frappe.confirm = function(message, confirm_action, reject_action) {
33661    var d = new frappe.ui.Dialog({
33662      title: __("Confirm", null, "Title of confirmation dialog"),
33663      primary_action_label: __("Yes", null, "Approve confirmation dialog"),
33664      primary_action: () => {
33665        confirm_action && confirm_action();
33666        d.hide();
33667      },
33668      secondary_action_label: __("No", null, "Dismiss confirmation dialog"),
33669      secondary_action: () => d.hide()
33670    });
33671    d.$body.append(`<p class="frappe-confirm-message">${message}</p>`);
33672    d.show();
33673    d.confirm_dialog = true;
33674    if (reject_action) {
33675      d.onhide = () => {
33676        if (!d.primary_action_fulfilled) {
33677          reject_action();
33678        }
33679      };
33680    }
33681    return d;
33682  };
33683  frappe.warn = function(title, message_html, proceed_action, primary_label, is_minimizable) {
33684    const d = new frappe.ui.Dialog({
33685      title,
33686      indicator: "red",
33687      primary_action_label: primary_label,
33688      primary_action: () => {
33689        if (proceed_action)
33690          proceed_action();
33691        d.hide();
33692      },
33693      secondary_action_label: __("Cancel", null, "Secondary button in warning dialog"),
33694      secondary_action: () => d.hide(),
33695      minimizable: is_minimizable
33696    });
33697    d.$body.append(`<div class="frappe-confirm-message">${message_html}</div>`);
33698    d.standard_actions.find(".btn-primary").removeClass("btn-primary").addClass("btn-danger");
33699    d.show();
33700    return d;
33701  };
33702  frappe.prompt = function(fields, callback, title, primary_label) {
33703    if (typeof fields === "string") {
33704      fields = [
33705        {
33706          label: fields,
33707          fieldname: "value",
33708          fieldtype: "Data",
33709          reqd: 1
33710        }
33711      ];
33712    }
33713    if (!$.isArray(fields))
33714      fields = [fields];
33715    var d = new frappe.ui.Dialog({
33716      fields,
33717      title: title || __("Enter Value", null, "Title of prompt dialog")
33718    });
33719    d.set_primary_action(
33720      primary_label || __("Submit", null, "Primary action of prompt dialog"),
33721      function() {
33722        var values = d.get_values();
33723        if (!values) {
33724          return;
33725        }
33726        d.hide();
33727        callback(values);
33728      }
33729    );
33730    d.show();
33731    return d;
33732  };
33733  frappe.msgprint = function(msg, title, is_minimizable) {
33734    if (!msg)
33735      return;
33736    let data;
33737    if ($.isPlainObject(msg)) {
33738      data = msg;
33739    } else {
33740      if (typeof msg === "string" && msg.substr(0, 1) === "{") {
33741        data = JSON.parse(msg);
33742      } else {
33743        data = { message: msg, title };
33744      }
33745    }
33746    if (!data.indicator) {
33747      data.indicator = "blue";
33748    }
33749    if (data.as_list) {
33750      const list_rows = data.message.map((m) => `<li>${m}</li>`).join("");
33751      data.message = `<ul style="padding-left: 20px">${list_rows}</ul>`;
33752    }
33753    if (data.as_table) {
33754      const rows = data.message.map((row) => {
33755        const cols = row.map((col) => `<td>${col}</td>`).join("");
33756        return `<tr>${cols}</tr>`;
33757      }).join("");
33758      data.message = `<table class="table table-bordered" style="margin: 0;">${rows}</table>`;
33759    }
33760    if (data.message instanceof Array) {
33761      let messages = data.message;
33762      const exceptions = messages.map((m) => {
33763        if (typeof m == "string") {
33764          return JSON.parse(m);
33765        } else {
33766          return m;
33767        }
33768      }).filter((m) => m.raise_exception);
33769      if (exceptions.length) {
33770        messages = exceptions;
33771      }
33772      messages.forEach(function(m) {
33773        frappe.msgprint(m);
33774      });
33775      return;
33776    }
33777    if (data.alert || data.toast) {
33778      frappe.show_alert(data);
33779      return;
33780    }
33781    if (!frappe.msg_dialog) {
33782      frappe.msg_dialog = new frappe.ui.Dialog({
33783        title: __("Message"),
33784        onhide: function() {
33785          if (frappe.msg_dialog.custom_onhide) {
33786            frappe.msg_dialog.custom_onhide();
33787          }
33788          frappe.msg_dialog.msg_area.empty();
33789        },
33790        minimizable: data.is_minimizable || is_minimizable
33791      });
33792      frappe.msg_dialog.msg_area = $('<div class="msgprint">').appendTo(frappe.msg_dialog.body);
33793      frappe.msg_dialog.clear = function() {
33794        frappe.msg_dialog.msg_area.empty();
33795      };
33796      frappe.msg_dialog.indicator = frappe.msg_dialog.header.find(".indicator");
33797    }
33798    if (data.primary_action) {
33799      if (data.primary_action.server_action && typeof data.primary_action.server_action === "string") {
33800        data.primary_action.action = () => {
33801          frappe.call({
33802            method: data.primary_action.server_action,
33803            args: {
33804              args: data.primary_action.args
33805            },
33806            callback() {
33807              if (data.primary_action.hide_on_success) {
33808                frappe.hide_msgprint();
33809              }
33810            }
33811          });
33812        };
33813      }
33814      if (data.primary_action.client_action && typeof data.primary_action.client_action === "string") {
33815        let parts2 = data.primary_action.client_action.split(".");
33816        let obj = window;
33817        for (let part of parts2) {
33818          obj = obj[part];
33819        }
33820        data.primary_action.action = () => {
33821          if (typeof obj === "function") {
33822            obj(data.primary_action.args);
33823          }
33824        };
33825      }
33826      frappe.msg_dialog.set_primary_action(
33827        __(data.primary_action.label) || __(data.primary_action_label) || __("Done"),
33828        data.primary_action.action
33829      );
33830    } else {
33831      if (frappe.msg_dialog.has_primary_action) {
33832        frappe.msg_dialog.get_primary_btn().addClass("hide");
33833        frappe.msg_dialog.has_primary_action = false;
33834      }
33835    }
33836    if (data.secondary_action) {
33837      frappe.msg_dialog.set_secondary_action(data.secondary_action.action);
33838      frappe.msg_dialog.set_secondary_action_label(
33839        __(data.secondary_action.label) || __("Close")
33840      );
33841    }
33842    if (data.message == null) {
33843      data.message = "";
33844    }
33845    if (data.message.search(/<br>|<p>|<li>/) == -1) {
33846      msg = frappe.utils.replace_newlines(data.message);
33847    }
33848    var msg_exists = false;
33849    if (data.clear) {
33850      frappe.msg_dialog.msg_area.empty();
33851    } else {
33852      msg_exists = frappe.msg_dialog.msg_area.html();
33853    }
33854    if (data.title || !msg_exists) {
33855      frappe.msg_dialog.set_title(
33856        data.title || __("Message", null, "Default title of the message dialog")
33857      );
33858    }
33859    if (data.indicator) {
33860      frappe.msg_dialog.indicator.removeClass().addClass("indicator " + data.indicator);
33861    } else {
33862      frappe.msg_dialog.indicator.removeClass().addClass("hidden");
33863    }
33864    if (data.wide) {
33865      if (frappe.msg_dialog.wrapper.classList.contains("msgprint-dialog")) {
33866        frappe.msg_dialog.wrapper.classList.remove("msgprint-dialog");
33867      }
33868    } else {
33869      frappe.msg_dialog.wrapper.classList.add("msgprint-dialog");
33870    }
33871    if (msg_exists) {
33872      frappe.msg_dialog.msg_area.append("<hr>");
33873    }
33874    frappe.msg_dialog.msg_area.append(data.message);
33875    frappe.msg_dialog.$wrapper.css("z-index", 2e3);
33876    frappe.msg_dialog.show();
33877    return frappe.msg_dialog;
33878  };
33879  window.msgprint = frappe.msgprint;
33880  frappe.hide_msgprint = function(instant) {
33881    if (frappe.msg_dialog && frappe.msg_dialog.msg_area) {
33882      frappe.msg_dialog.msg_area.empty();
33883    }
33884    if (frappe.msg_dialog && frappe.msg_dialog.$wrapper.is(":visible")) {
33885      if (instant) {
33886        frappe.msg_dialog.$wrapper.removeClass("fade");
33887      }
33888      frappe.msg_dialog.hide();
33889      if (instant) {
33890        frappe.msg_dialog.$wrapper.addClass("fade");
33891      }
33892    }
33893  };
33894  frappe.update_msgprint = function(html) {
33895    if (!frappe.msg_dialog || frappe.msg_dialog && !frappe.msg_dialog.$wrapper.is(":visible")) {
33896      frappe.msgprint(html);
33897    } else {
33898      frappe.msg_dialog.msg_area.html(html);
33899    }
33900  };
33901  frappe.verify_password = function(callback) {
33902    frappe.prompt(
33903      {
33904        fieldname: "password",
33905        label: __("Enter your password"),
33906        fieldtype: "Password",
33907        reqd: 1
33908      },
33909      function(data) {
33910        frappe.call({
33911          method: "frappe.core.doctype.user.user.verify_password",
33912          args: {
33913            password: data.password
33914          },
33915          callback: function(r) {
33916            if (!r.exc) {
33917              callback();
33918            }
33919          }
33920        });
33921      },
33922      __("Verify Password"),
33923      __("Verify")
33924    );
33925  };
33926  frappe.show_progress = (title, count, total = 100, description, hide_on_completion = false) => {
33927    let dialog;
33928    if (frappe.cur_progress && frappe.cur_progress.title === title && frappe.cur_progress.is_visible) {
33929      dialog = frappe.cur_progress;
33930    } else {
33931      dialog = new frappe.ui.Dialog({
33932        title
33933      });
33934      dialog.progress = $(`<div>
33935			<div class="progress">
33936				<div class="progress-bar"></div>
33937			</div>
33938			<p class="description text-muted small"></p>
33939		</div`).appendTo(dialog.body);
33940      dialog.progress_bar = dialog.progress.css({ "margin-top": "10px" }).find(".progress-bar");
33941      dialog.$wrapper.removeClass("fade");
33942      dialog.show();
33943      frappe.cur_progress = dialog;
33944    }
33945    if (description) {
33946      dialog.progress.find(".description").text(description);
33947    }
33948    dialog.percent = cint(flt(count) * 100 / total);
33949    dialog.progress_bar.css({ width: dialog.percent + "%" });
33950    if (hide_on_completion && dialog.percent === 100) {
33951      setTimeout(frappe.hide_progress, 500);
33952    }
33953    frappe.cur_progress.$wrapper.css("z-index", 2e3);
33954    return dialog;
33955  };
33956  frappe.hide_progress = function() {
33957    if (frappe.cur_progress) {
33958      frappe.cur_progress.hide();
33959      frappe.cur_progress = null;
33960    }
33961  };
33962  frappe.show_alert = frappe.toast = function(message, seconds = 7, actions = {}) {
33963    let indicator_icon_map = {
33964      orange: "solid-warning",
33965      yellow: "solid-warning",
33966      blue: "solid-info",
33967      green: "solid-success",
33968      red: "solid-error"
33969    };
33970    if (typeof message === "string") {
33971      message = {
33972        message
33973      };
33974    }
33975    if (!$("#dialog-container").length) {
33976      $('<div id="dialog-container"><div id="alert-container"></div></div>').appendTo("body");
33977    }
33978    let icon;
33979    if (message.indicator) {
33980      icon = indicator_icon_map[message.indicator.toLowerCase()] || "solid-" + message.indicator;
33981    } else {
33982      icon = "solid-info";
33983    }
33984    const indicator = message.indicator || "blue";
33985    const div = $(`
33986		<div class="alert desk-alert ${indicator}" role="alert">
33987			<div class="alert-message-container">
33988				<div class="alert-title-container">
33989					<div>${frappe.utils.icon(icon, "lg")}</div>
33990					<div class="alert-message">${message.message}</div>
33991				</div>
33992				<div class="alert-subtitle">${message.subtitle || ""}</div>
33993			</div>
33994			<div class="alert-body" style="display: none"></div>
33995			<a class="close">${frappe.utils.icon("close-alt")}</a>
33996		</div>
33997	`);
33998    div.hide().appendTo("#alert-container").show();
33999    if (message.body) {
34000      div.find(".alert-body").show().html(message.body);
34001    }
34002    div.find(".close, button").click(function() {
34003      div.addClass("out");
34004      setTimeout(() => div.remove(), 800);
34005      return false;
34006    });
34007    Object.keys(actions).map((key) => {
34008      div.find(`[data-action=${key}]`).on("click", actions[key]);
34009    });
34010    if (seconds > 2) {
34011      seconds = seconds - 0.8;
34012    }
34013    setTimeout(() => {
34014      div.addClass("out");
34015      setTimeout(() => div.remove(), 800);
34016      return false;
34017    }, seconds * 1e3);
34018    return div;
34019  };
34020
34021  
34021// frappe/public/js/frappe/utils/pretty_date.js
34022  function prettyDate(date, mini) {
34023    if (!date)
34024      return "";
34025    if (typeof date == "string") {
34026      date = frappe.datetime.convert_to_user_tz(date);
34027      date = new Date(
34028        (date || "").replace(/-/g, "/").replace(/[TZ]/g, " ").replace(/\.[0-9]*/, "")
34029      );
34030    }
34031    let diff = (new Date(frappe.datetime.now_datetime().replace(/-/g, "/")).getTime() - date.getTime()) / 1e3;
34032    let day_diff = Math.floor(diff / 86400);
34033    if (isNaN(day_diff) || day_diff < 0)
34034      return "";
34035    if (mini) {
34036      if (day_diff == 0) {
34037        if (diff < 60) {
34038          return __("now");
34039        } else if (diff < 3600) {
34040          return __("{0} m", [Math.floor(diff / 60)]);
34041        } else if (diff < 86400) {
34042          return __("{0} h", [Math.floor(diff / 3600)]);
34043        }
34044      } else {
34045        if (day_diff < 7) {
34046          return __("{0} d", [day_diff]);
34047        } else if (day_diff < 31) {
34048          return __("{0} w", [Math.floor(day_diff / 7)]);
34049        } else if (day_diff < 365) {
34050          return __("{0} M", [Math.floor(day_diff / 30)]);
34051        } else {
34052          return __("{0} y", [Math.floor(day_diff / 365)]);
34053        }
34054      }
34055    } else {
34056      if (day_diff == 0) {
34057        if (diff < 60) {
34058          return __("just now");
34059        } else if (diff < 120) {
34060          return __("1 minute ago");
34061        } else if (diff < 3600) {
34062          return __("{0} minutes ago", [Math.floor(diff / 60)]);
34063        } else if (diff < 7200) {
34064          return __("1 hour ago");
34065        } else if (diff < 86400) {
34066          return __("{0} hours ago", [Math.floor(diff / 3600)]);
34067        }
34068      } else {
34069        if (day_diff == 1) {
34070          return __("yesterday");
34071        } else if (day_diff < 7) {
34072          return __("{0} days ago", [day_diff]);
34073        } else if (day_diff < 14) {
34074          return __("1 week ago");
34075        } else if (day_diff < 31) {
34076          return __("{0} weeks ago", [Math.floor(day_diff / 7)]);
34077        } else if (day_diff < 62) {
34078          return __("1 month ago");
34079        } else if (day_diff < 365) {
34080          return __("{0} months ago", [Math.floor(day_diff / 30)]);
34081        } else if (day_diff < 730) {
34082          return __("1 year ago");
34083        } else {
34084          return __("{0} years ago", [Math.floor(day_diff / 365)]);
34085        }
34086      }
34087    }
34088  }
34089  frappe.provide("frappe.datetime");
34090  window.comment_when = function(datetime, mini) {
34091    var timestamp = frappe.datetime.str_to_user ? frappe.datetime.str_to_user(datetime) : datetime;
34092    return '<span class="frappe-timestamp ' + (mini ? " mini" : "") + '" data-timestamp="' + datetime + '" title="' + timestamp + '">' + prettyDate(datetime, mini) + "</span>";
34093  };
34094  frappe.datetime.comment_when = comment_when;
34095  frappe.datetime.prettyDate = prettyDate;
34096  frappe.datetime.refresh_when = function() {
34097    if (jQuery) {
34098      $(".frappe-timestamp").each(function() {
34099        $(this).html(prettyDate($(this).attr("data-timestamp"), $(this).hasClass("mini")));
34100      });
34101    }
34102  };
34103  setInterval(function() {
34104    frappe.datetime.refresh_when();
34105  }, 6e4);
34106
34107  
34107// frappe/public/js/frappe/utils/datetime.js
34108  frappe.provide("frappe.datetime");
34109  frappe.defaultDateFormat = "YYYY-MM-DD";
34110  frappe.defaultTimeFormat = "HH:mm:ss";
34111  frappe.defaultDatetimeFormat = frappe.defaultDateFormat + " " + frappe.defaultTimeFormat;
34112  moment.defaultFormat = frappe.defaultDateFormat;
34113  frappe.provide("frappe.datetime");
34114  $.extend(frappe.datetime, {
34115    convert_to_user_tz: function(date, format2) {
34116      let date_obj = null;
34117      if (frappe.boot.time_zone && frappe.boot.time_zone.system && frappe.boot.time_zone.user) {
34118        date_obj = moment.tz(date, frappe.boot.time_zone.system).clone().tz(frappe.boot.time_zone.user);
34119      } else {
34120        date_obj = moment(date);
34121      }
34122      return format2 === false ? date_obj : date_obj.format(frappe.defaultDatetimeFormat);
34123    },
34124    convert_to_system_tz: function(date, format2) {
34125      let date_obj = null;
34126      if (frappe.boot.time_zone && frappe.boot.time_zone.system && frappe.boot.time_zone.user) {
34127        date_obj = moment.tz(date, frappe.boot.time_zone.user).clone().tz(frappe.boot.time_zone.system);
34128      } else {
34129        date_obj = moment(date);
34130      }
34131      return format2 === false ? date_obj : date_obj.format(frappe.defaultDatetimeFormat);
34132    },
34133    is_system_time_zone: function() {
34134      if (frappe.boot.time_zone && frappe.boot.time_zone.system && frappe.boot.time_zone.user) {
34135        return moment().tz(frappe.boot.time_zone.system).utcOffset() === moment().tz(frappe.boot.time_zone.user).utcOffset();
34136      }
34137      return true;
34138    },
34139    is_timezone_same: function() {
34140      return frappe.datetime.is_system_time_zone();
34141    },
34142    str_to_obj: function(d) {
34143      return moment(d, frappe.defaultDatetimeFormat)._d;
34144    },
34145    obj_to_str: function(d) {
34146      return moment(d).locale("en").format();
34147    },
34148    obj_to_user: function(d) {
34149      return moment(d).format(frappe.datetime.get_user_date_fmt().toUpperCase());
34150    },
34151    get_diff: function(d1, d2) {
34152      return moment(d1).diff(d2, "days");
34153    },
34154    get_hour_diff: function(d1, d2) {
34155      return moment(d1).diff(d2, "hours");
34156    },
34157    get_minute_diff: function(d1, d2) {
34158      return moment(d1).diff(d2, "minutes");
34159    },
34160    get_day_diff: function(d1, d2) {
34161      return moment(d1).diff(d2, "days");
34162    },
34163    add_days: function(d, days) {
34164      return moment(d).add(days, "days").format();
34165    },
34166    add_months: function(d, months) {
34167      return moment(d).add(months, "months").format();
34168    },
34169    week_start: function() {
34170      return moment().startOf("week").format();
34171    },
34172    week_end: function() {
34173      return moment().endOf("week").format();
34174    },
34175    month_start: function() {
34176      return moment().startOf("month").format();
34177    },
34178    month_end: function() {
34179      return moment().endOf("month").format();
34180    },
34181    quarter_start: function() {
34182      return moment().startOf("quarter").format();
34183    },
34184    quarter_end: function() {
34185      return moment().endOf("quarter").format();
34186    },
34187    year_start: function() {
34188      return moment().startOf("year").format();
34189    },
34190    year_end: function() {
34191      return moment().endOf("year").format();
34192    },
34193    get_user_time_fmt: function() {
34194      return frappe.sys_defaults && frappe.sys_defaults.time_format || "HH:mm:ss";
34195    },
34196    get_user_date_fmt: function() {
34197      return frappe.sys_defaults && frappe.sys_defaults.date_format || "yyyy-mm-dd";
34198    },
34199    get_user_fmt: function() {
34200      return frappe.sys_defaults && frappe.sys_defaults.date_format || "yyyy-mm-dd";
34201    },
34202    str_to_user: function(val, only_time = false, only_date = false) {
34203      if (!val) {
34204        return "";
34205      }
34206      const user_date_fmt = frappe.datetime.get_user_date_fmt().toUpperCase();
34207      const user_time_fmt = frappe.datetime.get_user_time_fmt();
34208      if (only_time) {
34209        let date_obj = moment(val, frappe.defaultTimeFormat);
34210        return date_obj.format(user_time_fmt);
34211      } else if (only_date || typeof val === "string" && val.indexOf(" ") === -1) {
34212        let date_obj = moment(val, frappe.defaultDateFormat);
34213        return date_obj.format(user_date_fmt);
34214      } else {
34215        const system_datetime = moment.tz(
34216          val,
34217          frappe.defaultDatetimeFormat,
34218          frappe.boot.time_zone.system
34219        );
34220        const user_datetime = system_datetime.clone().tz(frappe.boot.time_zone.user);
34221        return user_datetime.format(user_date_fmt + " " + user_time_fmt);
34222      }
34223    },
34224    get_datetime_as_string: function(d) {
34225      return moment(d).format("YYYY-MM-DD HH:mm:ss");
34226    },
34227    user_to_str: function(val, only_time = false) {
34228      var user_time_fmt = frappe.datetime.get_user_time_fmt();
34229      if (only_time) {
34230        return moment(val, user_time_fmt).format(frappe.defaultTimeFormat);
34231      }
34232      var user_fmt = frappe.datetime.get_user_date_fmt().toUpperCase();
34233      var system_fmt = "YYYY-MM-DD";
34234      if (val.indexOf(" ") !== -1) {
34235        user_fmt += " " + user_time_fmt;
34236        system_fmt += " HH:mm:ss";
34237      }
34238      return moment(val, [user_fmt.replace("YYYY", "YY"), user_fmt]).locale("en").format(system_fmt);
34239    },
34240    user_to_obj: function(d) {
34241      return frappe.datetime.str_to_obj(frappe.datetime.user_to_str(d));
34242    },
34243    global_date_format: function(d) {
34244      var m = moment(d);
34245      if (m._f && m._f.indexOf("HH") !== -1) {
34246        return m.format("Do MMMM YYYY, hh:mm A");
34247      } else {
34248        return m.format("Do MMMM YYYY");
34249      }
34250    },
34251    now_date: function(as_obj = false) {
34252      return frappe.datetime._date(frappe.defaultDateFormat, as_obj);
34253    },
34254    now_time: function(as_obj = false) {
34255      return frappe.datetime._date(frappe.defaultTimeFormat, as_obj);
34256    },
34257    now_datetime: function(as_obj = false) {
34258      return frappe.datetime._date(frappe.defaultDatetimeFormat, as_obj);
34259    },
34260    system_datetime: function(as_obj = false) {
34261      return frappe.datetime._date(frappe.defaultDatetimeFormat, as_obj, true);
34262    },
34263    _date: function(format2, as_obj = false, system_time = false) {
34264      var _a, _b;
34265      let time_zone = ((_a = frappe.boot.time_zone) == null ? void 0 : _a.system) || frappe.sys_defaults.time_zone;
34266      if (!system_time) {
34267        time_zone = ((_b = frappe.boot.time_zone) == null ? void 0 : _b.user) || time_zone;
34268      }
34269      let date = moment.tz(time_zone);
34270      return as_obj ? frappe.datetime.moment_to_date_obj(date) : date.format(format2);
34271    },
34272    moment_to_date_obj: function(moment_obj) {
34273      const date_obj = new Date();
34274      const date_array = moment_obj.toArray();
34275      date_obj.setFullYear(date_array[0]);
34276      date_obj.setMonth(date_array[1]);
34277      date_obj.setDate(date_array[2]);
34278      date_obj.setHours(date_array[3]);
34279      date_obj.setMinutes(date_array[4]);
34280      date_obj.setSeconds(date_array[5]);
34281      date_obj.setMilliseconds(date_array[6]);
34282      return date_obj;
34283    },
34284    nowdate: function() {
34285      return frappe.datetime.now_date();
34286    },
34287    get_today: function() {
34288      return frappe.datetime.now_date();
34289    },
34290    get_time: (timestamp) => {
34291      return moment(timestamp).format("hh:mm A");
34292    },
34293    validate: function(d) {
34294      return moment(
34295        d,
34296        [frappe.defaultDateFormat, frappe.defaultDatetimeFormat, frappe.defaultTimeFormat],
34297        true
34298      ).isValid();
34299    },
34300    get_first_day_of_the_week_index() {
34301      const first_day_of_the_week = frappe.sys_defaults.first_day_of_the_week || "Sunday";
34302      return moment.weekdays().indexOf(first_day_of_the_week);
34303    }
34304  });
34305
34306  
34306// frappe/public/js/frappe/microtemplate.js
34307  frappe.template = { compiled: {}, debug: {} };
34308  frappe.template.compile = function(str, name2) {
34309    var key = name2 || str;
34310    if (!frappe.template.compiled[key]) {
34311      let replacer2 = function(match, p1, p2, offset, string) {
34312        var i2 = frappe.utils.get_random(3);
34313        var len = frappe.utils.get_random(3);
34314        return "{% for (var " + i2 + "=0, " + len + "=" + p2 + ".length; " + i2 + "<" + len + "; " + i2 + "++) { var " + p1 + " = " + p2 + "[" + i2 + "]; " + p1 + "._index = " + i2 + "; %}";
34315      };
34316      var replacer = replacer2;
34317      if (str.indexOf("'") !== -1) {
34318        str.replace(/'/g, "\\'");
34319      }
34320      str = str.replace(/{{/g, "{%=").replace(/}}/g, "%}");
34321      str = str.replace(/{%\s?if\s?\s?not\s?([^\(][^%{]+)\s?%}/g, "{% if (! $1) { %}");
34322      str = str.replace(/{%\s?if\s?([^\(][^%{]+)\s?%}/g, "{% if ($1) { %}");
34323      str = str.replace(/{%\s?for\s([a-z._]+)\sin\s([a-z._]+)\s?%}/g, replacer2);
34324      str = str.replace(/{%\s?endif\s?%}/g, "{% }; %}");
34325      str = str.replace(/{%\s?else\s?%}/g, "{% } else { %}");
34326      str = str.replace(/{%\s?endfor\s?%}/g, "{% }; %}");
34327      var fn_str = "var _p=[],print=function(){_p.push.apply(_p,arguments)};with(obj){\n_p.push('" + str.replace(/[\r\t\n]/g, " ").split("{%").join("	").replace(/((^|%})[^\t]*)'/g, "$1\r").replace(/\t=(.*?)%}/g, "',$1,'").split("	").join("');\n").split("%}").join("\n_p.push('").split("\r").join("\\'") + "');}return _p.join('');";
34328      frappe.template.debug[name2] = fn_str;
34329      try {
34330        frappe.template.compiled[key] = new Function("obj", fn_str);
34331      } catch (e) {
34332        console.log("Error in Template:");
34333        console.log(fn_str);
34334        if (e.lineNumber) {
34335          console.log("Error in Line " + e.lineNumber + ", Col " + e.columnNumber + ":");
34336          console.log(fn_str.split("\n")[e.lineNumber - 1]);
34337        }
34338      }
34339    }
34340    return frappe.template.compiled[key];
34341  };
34342  frappe.render = function(str, data, name2) {
34343    return frappe.template.compile(str, name2)(data);
34344  };
34345  frappe.render_template = function(name2, data) {
34346    let template;
34347    if (name2.indexOf(" ") !== -1) {
34348      template = name2;
34349    } else {
34350      template = frappe.templates[name2];
34351    }
34352    if (data === void 0) {
34353      data = {};
34354    }
34355    if (!template) {
34356      frappe.throw(`Template <b>${name2}</b> not found.`);
34357    }
34358    return frappe.render(template, data, name2);
34359  };
34360  frappe.render_grid = function(opts) {
34361    if (opts.grid) {
34362      opts.columns = opts.grid.getColumns();
34363      opts.data = opts.grid.getData().getItems();
34364    }
34365    if (opts.print_settings && opts.print_settings.orientation && opts.print_settings.orientation.toLowerCase() === "landscape") {
34366      opts.landscape = true;
34367    }
34368    if (opts.landscape == null) {
34369      if (opts.columns && opts.columns.length > 10) {
34370        opts.landscape = true;
34371      } else {
34372        opts.landscape = false;
34373      }
34374    }
34375    if (!opts.content) {
34376      opts.content = frappe.render_template(opts.template || "print_grid", opts);
34377    }
34378    opts.base_url = frappe.urllib.get_base_url();
34379    opts.print_css = frappe.boot.print_css;
34380    opts.lang = opts.lang || frappe.boot.lang, opts.layout_direction = opts.layout_direction || frappe.utils.is_rtl() ? "rtl" : "ltr";
34381    var html = frappe.render_template("print_template", opts);
34382    var w = window.open();
34383    if (!w) {
34384      frappe.msgprint(__("Please enable pop-ups in your browser"));
34385    }
34386    w.document.write(html);
34387    w.document.close();
34388  }, frappe.render_tree = function(opts) {
34389    opts.base_url = frappe.urllib.get_base_url();
34390    opts.landscape = false;
34391    opts.print_css = frappe.boot.print_css;
34392    opts.print_format_css_path = frappe.assets.bundled_asset("print_format.bundle.css");
34393    var tree = frappe.render_template("print_tree", opts);
34394    var w = window.open();
34395    if (!w) {
34396      frappe.msgprint(__("Please enable pop-ups in your browser"));
34397    }
34398    w.document.write(tree);
34399    w.document.close();
34400  };
34401  frappe.render_pdf = function(html, opts = {}) {
34402    var formData = new FormData();
34403    formData.append("html", html);
34404    if (opts.orientation) {
34405      formData.append("orientation", opts.orientation);
34406    }
34407    var blob = new Blob([], { type: "text/xml" });
34408    formData.append("blob", blob);
34409    var xhr = new XMLHttpRequest();
34410    xhr.open("POST", "/api/method/frappe.utils.print_format.report_to_pdf");
34411    xhr.setRequestHeader("X-Frappe-CSRF-Token", frappe.csrf_token);
34412    xhr.responseType = "arraybuffer";
34413    xhr.onload = function(success) {
34414      if (this.status === 200) {
34415        var blob2 = new Blob([success.currentTarget.response], { type: "application/pdf" });
34416        var objectUrl = URL.createObjectURL(blob2);
34417        let hidden_a_tag = document.createElement("a");
34418        document.body.appendChild(hidden_a_tag);
34419        hidden_a_tag.style = "display: none";
34420        hidden_a_tag.href = objectUrl;
34421        hidden_a_tag.download = opts.report_name || "report.pdf";
34422        hidden_a_tag.click();
34423        window.URL.revokeObjectURL(objectUrl);
34424      }
34425    };
34426    xhr.send(formData);
34427  };
34428
34429  
34429// frappe/public/js/frappe/query_string.js
34430  frappe.provide("frappe.utils");
34431  function get_url_arg(name2) {
34432    return get_query_params()[name2] || "";
34433  }
34434  function get_query_string(url2) {
34435    if (url2.includes("?")) {
34436      return url2.slice(url2.indexOf("?") + 1);
34437    } else {
34438      return "";
34439    }
34440  }
34441  function get_query_params(query_string) {
34442    var query_params = {};
34443    if (!query_string) {
34444      query_string = location.search.substring(1);
34445    }
34446    var query_list = query_string.split("&");
34447    for (var i2 = 0, l = query_list.length; i2 < l; i2++) {
34448      var pair = query_list[i2].split(/=(.+)/);
34449      var key = pair[0];
34450      if (!key) {
34451        continue;
34452      }
34453      var value2 = pair[1];
34454      if (typeof value2 === "string") {
34455        value2 = value2.replace(/\+/g, "%20");
34456        try {
34457          value2 = decodeURIComponent(value2);
34458        } catch (e) {
34459        }
34460      }
34461      if (key in query_params) {
34462        if (typeof query_params[key] === "undefined") {
34463          query_params[key] = [];
34464        } else if (typeof query_params[key] === "string") {
34465          query_params[key] = [query_params[key]];
34466        }
34467        query_params[key].push(value2);
34468      } else {
34469        query_params[key] = value2;
34470      }
34471    }
34472    return query_params;
34473  }
34474  function make_query_string(obj, encode3 = true) {
34475    let query_params = [];
34476    for (let key in obj) {
34477      let value2 = obj[key];
34478      if (value2 === void 0 || value2 === "" || value2 === null) {
34479        continue;
34480      }
34481      if (typeof value2 === "object") {
34482        value2 = JSON.stringify(value2);
34483      }
34484      if (encode3) {
34485        key = encodeURIComponent(key);
34486        value2 = encodeURIComponent(value2);
34487      }
34488      query_params.push(`${key}=${value2}`);
34489    }
34490    return "?" + query_params.join("&");
34491  }
34492  Object.assign(frappe.utils, {
34493    get_url_arg,
34494    get_query_string,
34495    get_query_params,
34496    make_query_string
34497  });
34498
34499  
34499// frappe/public/js/frappe/upload.js
34500  if (frappe.require) {
34501    frappe.require("file_uploader.bundle.js");
34502  } else {
34503    frappe.ready(function() {
34504      frappe.require("file_uploader.bundle.js");
34505    });
34506  }
34507
34508  
34508// frappe/public/js/frappe/model/meta.js
34509  frappe.provide("frappe.meta.docfield_map");
34510  frappe.provide("frappe.meta.docfield_copy");
34511  frappe.provide("frappe.meta.docfield_list");
34512  frappe.provide("frappe.meta.doctypes");
34513  frappe.provide("frappe.meta.precision_map");
34514  frappe.get_meta = function(doctype) {
34515    return locals["DocType"] ? locals["DocType"][doctype] : null;
34516  };
34517  $.extend(frappe.meta, {
34518    sync: function(doc) {
34519      $.each(doc.fields, function(i2, df) {
34520        frappe.meta.add_field(df);
34521      });
34522      frappe.meta.sync_messages(doc);
34523      if (doc.__print_formats)
34524        frappe.model.sync(doc.__print_formats);
34525      if (doc.__workflow_docs)
34526        frappe.model.sync(doc.__workflow_docs);
34527    },
34528    add_field: function(df) {
34529      frappe.provide("frappe.meta.docfield_map." + df.parent);
34530      frappe.meta.docfield_map[df.parent][df.fieldname || df.label] = df;
34531      if (!frappe.meta.docfield_list[df.parent])
34532        frappe.meta.docfield_list[df.parent] = [];
34533      for (var i2 in frappe.meta.docfield_list[df.parent]) {
34534        var d = frappe.meta.docfield_list[df.parent][i2];
34535        if (df.fieldname == d.fieldname)
34536          return;
34537      }
34538      frappe.meta.docfield_list[df.parent].push(df);
34539    },
34540    make_docfield_copy_for: function(doctype, docname, docfield_list = null) {
34541      var c = frappe.meta.docfield_copy;
34542      if (!c[doctype])
34543        c[doctype] = {};
34544      if (!c[doctype][docname])
34545        c[doctype][docname] = {};
34546      docfield_list = docfield_list || frappe.meta.docfield_list[doctype] || [];
34547      for (var i2 = 0, j = docfield_list.length; i2 < j; i2++) {
34548        var df = docfield_list[i2];
34549        c[doctype][docname][df.fieldname || df.label] = copy_dict(df);
34550      }
34551    },
34552    get_field: function(doctype, fieldname, name2) {
34553      var out = frappe.meta.get_docfield(doctype, fieldname, name2);
34554      if (!out) {
34555        frappe.model.std_fields.every(function(d) {
34556          if (d.fieldname === fieldname) {
34557            out = d;
34558            return false;
34559          } else {
34560            return true;
34561          }
34562        });
34563      }
34564      return out;
34565    },
34566    get_docfield: function(doctype, fieldname, name2) {
34567      var fields_dict = frappe.meta.get_docfield_copy(doctype, name2);
34568      return fields_dict ? fields_dict[fieldname] : null;
34569    },
34570    set_formatter: function(doctype, fieldname, name2, formatter) {
34571      frappe.meta.get_docfield(doctype, fieldname, name2).formatter = formatter;
34572    },
34573    set_indicator_formatter: function(doctype, fieldname, name2, get_text, get_color) {
34574      frappe.meta.get_docfield(doctype, fieldname, name2).formatter = function(value2, df, options, doc) {
34575        return repl('<span class="indicator %(color)s">%(name)s</span>', {
34576          color: get_color(),
34577          name: get_text()
34578        });
34579      };
34580    },
34581    get_docfields: function(doctype, name2, filters) {
34582      var docfield_map = frappe.meta.get_docfield_copy(doctype, name2);
34583      var docfields = frappe.meta.sort_docfields(docfield_map);
34584      if (filters) {
34585        docfields = frappe.utils.filter_dict(docfields, filters);
34586      }
34587      return docfields;
34588    },
34589    get_linked_fields: function(doctype) {
34590      return $.map(frappe.get_meta(doctype).fields, function(d) {
34591        return d.fieldtype == "Link" ? d.options : null;
34592      });
34593    },
34594    get_fields_to_check_permissions: function(doctype) {
34595      var fields = $.map(frappe.meta.get_docfields(doctype, name), function(df) {
34596        return df.fieldtype === "Link" && df.ignore_user_permissions !== 1 ? df : null;
34597      });
34598      fields = fields.concat({ label: "ID", fieldname: name, options: doctype });
34599      return fields;
34600    },
34601    sort_docfields: function(docs) {
34602      return $.map(docs, function(d) {
34603        return d;
34604      }).sort(function(a, b) {
34605        return a.idx - b.idx;
34606      });
34607    },
34608    get_docfield_copy: function(doctype, name2) {
34609      if (!name2)
34610        return frappe.meta.docfield_map[doctype];
34611      if (!(frappe.meta.docfield_copy[doctype] && frappe.meta.docfield_copy[doctype][name2])) {
34612        frappe.meta.make_docfield_copy_for(doctype, name2);
34613      }
34614      return frappe.meta.docfield_copy[doctype][name2];
34615    },
34616    get_fieldnames: function(doctype, name2, filters) {
34617      return $.map(
34618        frappe.utils.filter_dict(frappe.meta.docfield_map[doctype], filters),
34619        function(df) {
34620          return df.fieldname;
34621        }
34622      );
34623    },
34624    has_field: function(dt, fn) {
34625      let docfield_map = frappe.meta.docfield_map[dt];
34626      return docfield_map && docfield_map[fn];
34627    },
34628    get_table_fields: function(dt) {
34629      return $.map(frappe.meta.docfield_list[dt], function(d) {
34630        return frappe.model.table_fields.includes(d.fieldtype) ? d : null;
34631      });
34632    },
34633    get_doctype_for_field: function(doctype, key) {
34634      var out = null;
34635      if (frappe.model.std_fields_list.includes(key)) {
34636        out = doctype;
34637      } else if (frappe.meta.has_field(doctype, key)) {
34638        out = doctype;
34639      } else {
34640        frappe.meta.get_table_fields(doctype).every(function(d) {
34641          if (frappe.meta.has_field(d.options, key) || frappe.model.child_table_field_list.includes(key)) {
34642            out = d.options;
34643            return false;
34644          }
34645          return true;
34646        });
34647        if (!out) {
34648          console.log(
34649            __("Warning: Unable to find {0} in any table related to {1}", [
34650              key,
34651              __(doctype)
34652            ])
34653          );
34654        }
34655      }
34656      return out;
34657    },
34658    get_parentfield: function(parent_dt, child_dt) {
34659      var df = (frappe.get_doc("DocType", parent_dt).fields || []).filter(
34660        (df2) => frappe.model.table_fields.includes(df2.fieldtype) && df2.options === child_dt
34661      );
34662      if (!df.length)
34663        throw "parentfield not found for " + parent_dt + ", " + child_dt;
34664      return df[0].fieldname;
34665    },
34666    get_label: function(dt, fn, dn) {
34667      var standard = {
34668        name: __("ID"),
34669        creation: __("Created On"),
34670        docstatus: __("Document Status"),
34671        idx: __("Index"),
34672        modified: __("Last Updated On"),
34673        modified_by: __("Last Updated By"),
34674        owner: __("Created By"),
34675        _user_tags: __("Tags"),
34676        _liked_by: __("Liked By"),
34677        _comments: __("Comments"),
34678        _assign: __("Assigned To")
34679      };
34680      if (standard[fn]) {
34681        return standard[fn];
34682      } else {
34683        var df = this.get_docfield(dt, fn, dn);
34684        return (df ? df.label : "") || fn;
34685      }
34686    },
34687    get_print_sizes: function() {
34688      return [
34689        "A0",
34690        "A1",
34691        "A2",
34692        "A3",
34693        "A4",
34694        "A5",
34695        "A6",
34696        "A7",
34697        "A8",
34698        "A9",
34699        "B0",
34700        "B1",
34701        "B2",
34702        "B3",
34703        "B4",
34704        "B5",
34705        "B6",
34706        "B7",
34707        "B8",
34708        "B9",
34709        "B10",
34710        "C5E",
34711        "Comm10E",
34712        "DLE",
34713        "Executive",
34714        "Folio",
34715        "Ledger",
34716        "Legal",
34717        "Letter",
34718        "Tabloid",
34719        "Custom"
34720      ];
34721    },
34722    get_print_formats: function(doctype) {
34723      var print_format_list = ["Standard"];
34724      var default_print_format = locals.DocType[doctype].default_print_format;
34725      let enable_raw_printing = frappe.model.get_doc(
34726        ":Print Settings",
34727        "Print Settings"
34728      ).enable_raw_printing;
34729      var print_formats = frappe.get_list("Print Format", { doc_type: doctype }).sort(function(a, b) {
34730        return a > b ? 1 : -1;
34731      });
34732      $.each(print_formats, function(i2, d) {
34733        if (!print_format_list.includes(d.name) && d.print_format_type !== "JS" && (cint(enable_raw_printing) || !d.raw_printing)) {
34734          print_format_list.push(d.name);
34735        }
34736      });
34737      if (default_print_format && default_print_format != "Standard") {
34738        var index = print_format_list.indexOf(default_print_format);
34739        print_format_list.splice(index, 1).sort();
34740        print_format_list.unshift(default_print_format);
34741      }
34742      return print_format_list;
34743    },
34744    sync_messages: function(doc) {
34745      if (doc.__messages) {
34746        $.extend(frappe._messages, doc.__messages);
34747      }
34748    },
34749    get_field_currency: function(df, doc) {
34750      var currency = frappe.boot.sysdefaults.currency || "USD";
34751      if (!doc && cur_frm)
34752        doc = cur_frm.doc;
34753      if (df && df.options) {
34754        if (df.options.indexOf(":") != -1) {
34755          var options = df.options.split(":");
34756          if (options.length == 3) {
34757            let docname = null;
34758            if (doc) {
34759              docname = doc[options[1]];
34760              if (!docname && cur_frm) {
34761                docname = cur_frm.doc[options[1]];
34762              }
34763            } else {
34764              docname = frappe.defaults.get_user_default(options[1]);
34765            }
34766            currency = frappe.model.get_value(options[0], docname, options[2]) || frappe.model.get_value(":" + options[0], docname, options[2]) || currency;
34767          }
34768        } else if (doc && doc[df.options]) {
34769          currency = doc[df.options];
34770        } else if (cur_frm && cur_frm.doc[df.options]) {
34771          currency = cur_frm.doc[df.options];
34772        }
34773      }
34774      return currency;
34775    },
34776    get_field_precision: function(df, doc) {
34777      var precision3 = null;
34778      if (df && df.precision) {
34779        precision3 = cint(df.precision);
34780      } else if (df && df.fieldtype === "Currency") {
34781        precision3 = cint(frappe.defaults.get_default("currency_precision"));
34782        if (!precision3) {
34783          var number_format = get_number_format();
34784          var number_format_info = get_number_format_info(number_format);
34785          precision3 = number_format_info.precision;
34786        }
34787      } else {
34788        precision3 = cint(frappe.defaults.get_default("float_precision")) || 3;
34789      }
34790      return precision3;
34791    }
34792  });
34793
34794  
34794// frappe/public/js/frappe/model/model.js
34795  frappe.provide("frappe.model");
34796  $.extend(frappe.model, {
34797    all_fieldtypes: [
34798      "Autocomplete",
34799      "Attach",
34800      "Attach Image",
34801      "Barcode",
34802      "Button",
34803      "Check",
34804      "Code",
34805      "Color",
34806      "Currency",
34807      "Data",
34808      "Date",
34809      "Datetime",
34810      "Duration",
34811      "Dynamic Link",
34812      "Float",
34813      "Geolocation",
34814      "Heading",
34815      "HTML",
34816      "HTML Editor",
34817      "Icon",
34818      "Image",
34819      "Int",
34820      "JSON",
34821      "Link",
34822      "Long Text",
34823      "Markdown Editor",
34824      "Password",
34825      "Percent",
34826      "Phone",
34827      "Read Only",
34828      "Rating",
34829      "Select",
34830      "Signature",
34831      "Small Text",
34832      "Table",
34833      "Table MultiSelect",
34834      "Text",
34835      "Text Editor",
34836      "Time"
34837    ],
34838    no_value_type: [
34839      "Section Break",
34840      "Column Break",
34841      "Tab Break",
34842      "HTML",
34843      "Table",
34844      "Table MultiSelect",
34845      "Button",
34846      "Image",
34847      "Fold",
34848      "Heading"
34849    ],
34850    layout_fields: ["Section Break", "Column Break", "Tab Break", "Fold"],
34851    std_fields_list: [
34852      "name",
34853      "owner",
34854      "creation",
34855      "modified",
34856      "modified_by",
34857      "_user_tags",
34858      "_comments",
34859      "_assign",
34860      "_liked_by",
34861      "docstatus",
34862      "idx"
34863    ],
34864    child_table_field_list: ["parent", "parenttype", "parentfield"],
34865    core_doctypes_list: [
34866      "DocType",
34867      "DocField",
34868      "DocPerm",
34869      "User",
34870      "Role",
34871      "Has Role",
34872      "Page",
34873      "Module Def",
34874      "Print Format",
34875      "Report",
34876      "Customize Form",
34877      "Customize Form Field",
34878      "Property Setter",
34879      "Custom Field",
34880      "Client Script"
34881    ],
34882    restricted_fields: [
34883      "name",
34884      "parent",
34885      "creation",
34886      "modified",
34887      "modified_by",
34888      "parentfield",
34889      "parenttype",
34890      "file_list",
34891      "flags",
34892      "docstatus"
34893    ],
34894    html_fieldtypes: [
34895      "Text Editor",
34896      "Text",
34897      "Small Text",
34898      "Long Text",
34899      "HTML Editor",
34900      "Markdown Editor",
34901      "Code"
34902    ],
34903    std_fields: [
34904      { fieldname: "name", fieldtype: "Link", label: __("ID") },
34905      { fieldname: "owner", fieldtype: "Link", label: __("Created By"), options: "User" },
34906      { fieldname: "idx", fieldtype: "Int", label: __("Index") },
34907      { fieldname: "creation", fieldtype: "Datetime", label: __("Created On") },
34908      { fieldname: "modified", fieldtype: "Datetime", label: __("Last Updated On") },
34909      {
34910        fieldname: "modified_by",
34911        fieldtype: "Link",
34912        label: __("Last Updated By"),
34913        options: "User"
34914      },
34915      { fieldname: "_user_tags", fieldtype: "Data", label: __("Tags") },
34916      { fieldname: "_liked_by", fieldtype: "Data", label: __("Liked By") },
34917      { fieldname: "_comments", fieldtype: "Text", label: __("Comments") },
34918      { fieldname: "_assign", fieldtype: "Text", label: __("Assigned To") },
34919      { fieldname: "docstatus", fieldtype: "Int", label: __("Document Status") }
34920    ],
34921    numeric_fieldtypes: ["Int", "Float", "Currency", "Percent", "Duration"],
34922    std_fields_table: [{ fieldname: "parent", fieldtype: "Data", label: __("Parent") }],
34923    table_fields: ["Table", "Table MultiSelect"],
34924    new_names: {},
34925    events: {},
34926    user_settings: {},
34927    init: function() {
34928      frappe.realtime.on("doc_update", function(data) {
34929        var doc = locals[data.doctype] && locals[data.doctype][data.name];
34930        if (doc) {
34931          if (frappe.get_route()[0] === "Form" && cur_frm.doc.doctype === doc.doctype && cur_frm.doc.name === doc.name) {
34932            if (data.modified !== cur_frm.doc.modified && !frappe.ui.form.is_saving) {
34933              if (!cur_frm.is_dirty()) {
34934                cur_frm.debounced_reload_doc();
34935              } else {
34936                doc.__needs_refresh = true;
34937                cur_frm.show_conflict_message();
34938              }
34939            }
34940          } else {
34941            if (!doc.__unsaved) {
34942              frappe.model.remove_from_locals(doc.doctype, doc.name);
34943            } else {
34944              doc.__needs_refresh = true;
34945            }
34946          }
34947        }
34948      });
34949    },
34950    is_value_type: function(fieldtype) {
34951      if (typeof fieldtype == "object") {
34952        fieldtype = fieldtype.fieldtype;
34953      }
34954      return frappe.model.no_value_type.indexOf(fieldtype) === -1;
34955    },
34956    is_non_std_field: function(fieldname) {
34957      return ![...frappe.model.std_fields_list, ...frappe.model.child_table_field_list].includes(
34958        fieldname
34959      );
34960    },
34961    get_std_field: function(fieldname, ignore = false) {
34962      var docfield = $.map(
34963        [].concat(frappe.model.std_fields).concat(frappe.model.std_fields_table),
34964        function(d) {
34965          if (d.fieldname == fieldname)
34966            return d;
34967        }
34968      );
34969      if (!docfield.length) {
34970        if (ignore) {
34971          return { fieldname };
34972        } else {
34973          frappe.msgprint(__("Unknown Column: {0}", [fieldname]));
34974        }
34975      }
34976      return docfield[0];
34977    },
34978    get_from_localstorage: function(doctype) {
34979      if (localStorage["_doctype:" + doctype]) {
34980        return JSON.parse(localStorage["_doctype:" + doctype]);
34981      }
34982    },
34983    set_in_localstorage: function(doctype, docs) {
34984      try {
34985        localStorage["_doctype:" + doctype] = JSON.stringify(docs);
34986      } catch (e) {
34987        console.warn("localStorage quota exceeded, clearing doctype cache");
34988        frappe.model.clear_local_storage();
34989        localStorage["_doctype:" + doctype] = JSON.stringify(docs);
34990      }
34991    },
34992    clear_local_storage: function() {
34993      for (var key in localStorage) {
34994        if (key.startsWith("_doctype:")) {
34995          localStorage.removeItem(key);
34996        }
34997      }
34998    },
34999    with_doctype: function(doctype, callback, async) {
35000      if (locals.DocType[doctype]) {
35001        callback && callback();
35002        return Promise.resolve();
35003      } else {
35004        let cached_timestamp = null;
35005        let cached_doc = null;
35006        let cached_docs = frappe.model.get_from_localstorage(doctype);
35007        if (cached_docs) {
35008          cached_doc = cached_docs.filter((doc) => doc.name === doctype)[0];
35009          if (cached_doc) {
35010            cached_timestamp = cached_doc.modified;
35011          }
35012        }
35013        return frappe.call({
35014          method: "frappe.desk.form.load.getdoctype",
35015          type: "GET",
35016          args: {
35017            doctype,
35018            with_parent: 1,
35019            cached_timestamp
35020          },
35021          async,
35022          callback: function(r) {
35023            if (r.exc) {
35024              frappe.msgprint(__("Unable to load: {0}", [__(doctype)]));
35025              throw "No doctype";
35026            }
35027            if (r.message == "use_cache") {
35028              frappe.model.sync(cached_doc);
35029            } else {
35030              frappe.model.set_in_localstorage(doctype, r.docs);
35031            }
35032            frappe.model.init_doctype(doctype);
35033            if (r.user_settings) {
35034              frappe.model.user_settings[doctype] = JSON.parse(r.user_settings);
35035              frappe.model.user_settings[doctype].updated_on = moment().toString();
35036            }
35037            callback && callback(r);
35038          }
35039        });
35040      }
35041    },
35042    init_doctype: function(doctype) {
35043      var meta = locals.DocType[doctype];
35044      for (const asset_key of [
35045        "__list_js",
35046        "__custom_list_js",
35047        "__calendar_js",
35048        "__map_js",
35049        "__tree_js"
35050      ]) {
35051        if (meta[asset_key]) {
35052          new Function(meta[asset_key])();
35053        }
35054      }
35055      if (meta.__templates) {
35056        $.extend(frappe.templates, meta.__templates);
35057      }
35058    },
35059    with_doc: function(doctype, name2, callback) {
35060      return new Promise((resolve) => {
35061        if (!name2)
35062          name2 = doctype;
35063        if (locals[doctype] && locals[doctype][name2] && frappe.model.get_docinfo(doctype, name2)) {
35064          callback && callback(name2);
35065          resolve(frappe.get_doc(doctype, name2));
35066        } else {
35067          return frappe.call({
35068            method: "frappe.desk.form.load.getdoc",
35069            type: "GET",
35070            args: {
35071              doctype,
35072              name: name2
35073            },
35074            callback: function(r) {
35075              callback && callback(name2, r);
35076              resolve(frappe.get_doc(doctype, name2));
35077            }
35078          });
35079        }
35080      });
35081    },
35082    get_docinfo: function(doctype, name2) {
35083      return frappe.model.docinfo[doctype] && frappe.model.docinfo[doctype][name2] || null;
35084    },
35085    set_docinfo: function(doctype, name2, key, value2) {
35086      if (frappe.model.docinfo[doctype] && frappe.model.docinfo[doctype][name2]) {
35087        frappe.model.docinfo[doctype][name2][key] = value2;
35088      }
35089    },
35090    get_shared: function(doctype, name2) {
35091      return frappe.model.get_docinfo(doctype, name2).shared;
35092    },
35093    get_server_module_name: function(doctype) {
35094      var dt = frappe.model.scrub(doctype);
35095      var module = frappe.model.scrub(locals.DocType[doctype].module);
35096      var app = frappe.boot.module_app[module];
35097      return app + "." + module + ".doctype." + dt + "." + dt;
35098    },
35099    scrub: function(txt) {
35100      return txt.replace(/ /g, "_").toLowerCase();
35101    },
35102    unscrub: function(txt) {
35103      return (txt || "").replace(/-|_/g, " ").replace(/\w*/g, function(keywords) {
35104        return keywords.charAt(0).toUpperCase() + keywords.substr(1).toLowerCase();
35105      });
35106    },
35107    can_create: function(doctype) {
35108      return frappe.boot.user.can_create.indexOf(doctype) !== -1;
35109    },
35110    can_select: function(doctype) {
35111      if (frappe.boot.user) {
35112        return frappe.boot.user.can_select.indexOf(doctype) !== -1;
35113      }
35114    },
35115    can_read: function(doctype) {
35116      if (frappe.boot.user) {
35117        return frappe.boot.user.can_read.indexOf(doctype) !== -1;
35118      }
35119    },
35120    can_write: function(doctype) {
35121      return frappe.boot.user.can_write.indexOf(doctype) !== -1;
35122    },
35123    can_get_report: function(doctype) {
35124      return frappe.boot.user.can_get_report.indexOf(doctype) !== -1;
35125    },
35126    can_delete: function(doctype) {
35127      if (!doctype)
35128        return false;
35129      return frappe.boot.user.can_delete.indexOf(doctype) !== -1;
35130    },
35131    can_submit: function(doctype) {
35132      if (!doctype)
35133        return false;
35134      return frappe.boot.user.can_submit.indexOf(doctype) !== -1;
35135    },
35136    can_cancel: function(doctype) {
35137      if (!doctype)
35138        return false;
35139      return frappe.boot.user.can_cancel.indexOf(doctype) !== -1;
35140    },
35141    has_workflow: function(doctype) {
35142      return frappe.get_list("Workflow", { document_type: doctype, is_active: 1 }).length;
35143    },
35144    is_submittable: function(doctype) {
35145      if (!doctype)
35146        return false;
35147      return locals.DocType[doctype] && locals.DocType[doctype].is_submittable;
35148    },
35149    is_table: function(doctype) {
35150      if (!doctype)
35151        return false;
35152      return locals.DocType[doctype] && locals.DocType[doctype].istable;
35153    },
35154    is_single: function(doctype) {
35155      if (!doctype)
35156        return false;
35157      return frappe.boot.single_types.indexOf(doctype) != -1;
35158    },
35159    is_tree: function(doctype) {
35160      if (!doctype)
35161        return false;
35162      return locals.DocType[doctype] && locals.DocType[doctype].is_tree;
35163    },
35164    is_fresh(doc) {
35165      return doc && doc.__last_sync_on && new Date() - doc.__last_sync_on < 5e3;
35166    },
35167    can_import: function(doctype, frm, meta = null) {
35168      if (meta && !meta.allow_import)
35169        return false;
35170      if (frappe.user_roles.includes("System Manager"))
35171        return true;
35172      if (frm)
35173        return frm.perm[0].import === 1;
35174      return frappe.boot.user.can_import.indexOf(doctype) !== -1;
35175    },
35176    can_export: function(doctype, frm) {
35177      if (frappe.user_roles.includes("System Manager"))
35178        return true;
35179      if (frm)
35180        return frm.perm[0].export === 1;
35181      return frappe.boot.user.can_export.indexOf(doctype) !== -1;
35182    },
35183    can_print: function(doctype, frm) {
35184      if (frm)
35185        return frm.perm[0].print === 1;
35186      return frappe.boot.user.can_print.indexOf(doctype) !== -1;
35187    },
35188    can_email: function(doctype, frm) {
35189      if (frm)
35190        return frm.perm[0].email === 1;
35191      return frappe.boot.user.can_email.indexOf(doctype) !== -1;
35192    },
35193    can_share: function(doctype, frm) {
35194      let disable_sharing = cint(frappe.sys_defaults.disable_document_sharing);
35195      if (disable_sharing && frappe.session.user !== "Administrator") {
35196        return false;
35197      }
35198      if (frm) {
35199        return frm.perm[0].share === 1;
35200      }
35201      return frappe.boot.user.can_share.indexOf(doctype) !== -1;
35202    },
35203    has_value: function(dt, dn, fn) {
35204      var val = locals[dt] && locals[dt][dn] && locals[dt][dn][fn];
35205      var df = frappe.meta.get_docfield(dt, fn, dn);
35206      let ret;
35207      if (frappe.model.table_fields.includes(df.fieldtype)) {
35208        ret = false;
35209        $.each(locals[df.options] || {}, function(k, d) {
35210          if (d.parent == dn && d.parenttype == dt && d.parentfield == df.fieldname) {
35211            ret = true;
35212            return false;
35213          }
35214        });
35215      } else {
35216        ret = !is_null(val);
35217      }
35218      return ret ? true : false;
35219    },
35220    get_list: function(doctype, filters) {
35221      var docsdict = locals[doctype] || locals[":" + doctype] || {};
35222      if ($.isEmptyObject(docsdict))
35223        return [];
35224      return frappe.utils.filter_dict(docsdict, filters);
35225    },
35226    get_value: function(doctype, filters, fieldname, callback) {
35227      if (callback) {
35228        frappe.call({
35229          method: "frappe.client.get_value",
35230          args: {
35231            doctype,
35232            fieldname,
35233            filters
35234          },
35235          callback: function(r) {
35236            if (!r.exc) {
35237              callback(r.message);
35238            }
35239          }
35240        });
35241      } else {
35242        if (["number", "string"].includes(typeof filters) && locals[doctype] && locals[doctype][filters]) {
35243          return locals[doctype][filters][fieldname];
35244        } else {
35245          var l = frappe.get_list(doctype, filters);
35246          return l.length && l[0] ? l[0][fieldname] : null;
35247        }
35248      }
35249    },
35250    set_value: function(doctype, docname, fieldname, value2, fieldtype, skip_dirty_trigger = false) {
35251      var doc;
35252      if ($.isPlainObject(doctype)) {
35253        doc = doctype;
35254        fieldname = docname;
35255        value2 = fieldname;
35256      } else {
35257        doc = locals[doctype] && locals[doctype][docname];
35258      }
35259      let to_update = fieldname;
35260      let tasks = [];
35261      if (!$.isPlainObject(to_update)) {
35262        to_update = {};
35263        to_update[fieldname] = value2;
35264      }
35265      $.each(to_update, (key, value3) => {
35266        if (doc && doc[key] !== value3) {
35267          if (doc.__unedited && !(!doc[key] && !value3)) {
35268            doc.__unedited = false;
35269          }
35270          doc[key] = value3;
35271          tasks.push(() => frappe.model.trigger(key, value3, doc, skip_dirty_trigger));
35272        } else {
35273          if (["Link", "Dynamic Link"].includes(fieldtype) && doc) {
35274            tasks.push(() => frappe.model.trigger(key, value3, doc, skip_dirty_trigger));
35275          }
35276        }
35277      });
35278      return frappe.run_serially(tasks);
35279    },
35280    on: function(doctype, fieldname, fn) {
35281      frappe.provide("frappe.model.events." + doctype);
35282      if (!frappe.model.events[doctype][fieldname]) {
35283        frappe.model.events[doctype][fieldname] = [];
35284      }
35285      frappe.model.events[doctype][fieldname].push(fn);
35286    },
35287    trigger: function(fieldname, value2, doc, skip_dirty_trigger = false) {
35288      const tasks = [];
35289      function enqueue_events(events) {
35290        if (!events)
35291          return;
35292        for (const fn of events) {
35293          if (!fn)
35294            continue;
35295          tasks.push(() => {
35296            const return_value = fn(fieldname, value2, doc, skip_dirty_trigger);
35297            if (return_value && return_value.then) {
35298              return return_value;
35299            } else {
35300              return frappe.after_server_call();
35301            }
35302          });
35303        }
35304      }
35305      if (frappe.model.events[doc.doctype]) {
35306        enqueue_events(frappe.model.events[doc.doctype][fieldname]);
35307        enqueue_events(frappe.model.events[doc.doctype]["*"]);
35308      }
35309      return frappe.run_serially(tasks);
35310    },
35311    get_doc: function(doctype, name2) {
35312      if (!name2)
35313        name2 = doctype;
35314      if ($.isPlainObject(name2)) {
35315        var doc = frappe.get_list(doctype, name2);
35316        return doc && doc.length ? doc[0] : null;
35317      }
35318      return locals[doctype] ? locals[doctype][name2] : null;
35319    },
35320    get_children: function(doctype, parent, parentfield, filters) {
35321      let doc;
35322      if ($.isPlainObject(doctype)) {
35323        doc = doctype;
35324        filters = parentfield;
35325        parentfield = parent;
35326      } else {
35327        doc = frappe.get_doc(doctype, parent);
35328      }
35329      var children = doc[parentfield] || [];
35330      if (filters) {
35331        return frappe.utils.filter_dict(children, filters);
35332      } else {
35333        return children;
35334      }
35335    },
35336    clear_table: function(doc, parentfield) {
35337      for (const d of doc[parentfield] || []) {
35338        delete locals[d.doctype][d.name];
35339      }
35340      doc[parentfield] = [];
35341    },
35342    remove_from_locals: function(doctype, name2) {
35343      this.clear_doc(doctype, name2);
35344      if (frappe.views.formview[doctype]) {
35345        delete frappe.views.formview[doctype].frm.opendocs[name2];
35346      }
35347    },
35348    clear_doc: function(doctype, name2) {
35349      var doc = locals[doctype] && locals[doctype][name2];
35350      if (!doc)
35351        return;
35352      var parent = null;
35353      if (doc.parenttype) {
35354        parent = doc.parent;
35355        var parenttype = doc.parenttype, parentfield = doc.parentfield;
35356      }
35357      delete locals[doctype][name2];
35358      if (parent) {
35359        var parent_doc = locals[parenttype][parent];
35360        var newlist = [], idx = 1;
35361        $.each(parent_doc[parentfield], function(i2, d) {
35362          if (d.name != name2) {
35363            newlist.push(d);
35364            d.idx = idx;
35365            idx++;
35366          }
35367          parent_doc[parentfield] = newlist;
35368        });
35369      }
35370    },
35371    get_no_copy_list: function(doctype) {
35372      var no_copy_list = ["name", "amended_from", "amendment_date", "cancel_reason"];
35373      var docfields = frappe.get_doc("DocType", doctype).fields || [];
35374      for (var i2 = 0, j = docfields.length; i2 < j; i2++) {
35375        var df = docfields[i2];
35376        if (cint(df.no_copy))
35377          no_copy_list.push(df.fieldname);
35378      }
35379      return no_copy_list;
35380    },
35381    delete_doc: function(doctype, docname, callback) {
35382      let title = docname;
35383      const title_field = frappe.get_meta(doctype).title_field;
35384      if (frappe.get_meta(doctype).autoname == "hash" && title_field) {
35385        const value2 = frappe.model.get_value(doctype, docname, title_field);
35386        if (value2) {
35387          title = `${value2} (${docname})`;
35388        }
35389      }
35390      frappe.confirm(__("Permanently delete {0}?", [title.bold()]), function() {
35391        return frappe.call({
35392          method: "frappe.client.delete",
35393          args: {
35394            doctype,
35395            name: docname
35396          },
35397          freeze: true,
35398          freeze_message: __("Deleting {0}...", [title]),
35399          callback: function(r, rt) {
35400            if (!r.exc) {
35401              frappe.utils.play_sound("delete");
35402              frappe.model.clear_doc(doctype, docname);
35403              if (callback)
35404                callback(r, rt);
35405            }
35406          }
35407        });
35408      });
35409    },
35410    rename_doc: function(doctype, docname, callback) {
35411      let message = __("Merge with existing");
35412      let warning = __("This cannot be undone");
35413      let merge_label = message + " <b>(" + warning + ")</b>";
35414      var d = new frappe.ui.Dialog({
35415        title: __("Rename {0}", [__(docname)]),
35416        fields: [
35417          {
35418            label: __("New Name"),
35419            fieldname: "new_name",
35420            fieldtype: "Data",
35421            reqd: 1,
35422            default: docname
35423          },
35424          { label: merge_label, fieldtype: "Check", fieldname: "merge" }
35425        ]
35426      });
35427      d.set_primary_action(__("Rename"), function() {
35428        d.hide();
35429        var args = d.get_values();
35430        if (!args)
35431          return;
35432        return frappe.call({
35433          method: "frappe.rename_doc",
35434          freeze: true,
35435          freeze_message: "Updating related fields...",
35436          args: {
35437            doctype,
35438            old: docname,
35439            new: args.new_name,
35440            merge: args.merge
35441          },
35442          btn: d.get_primary_btn(),
35443          callback: function(r, rt) {
35444            if (!r.exc) {
35445              $(document).trigger("rename", [
35446                doctype,
35447                docname,
35448                r.message || args.new_name
35449              ]);
35450              if (locals[doctype] && locals[doctype][docname])
35451                delete locals[doctype][docname];
35452              d.hide();
35453              if (callback)
35454                callback(r.message);
35455            }
35456          }
35457        });
35458      });
35459      d.show();
35460    },
35461    round_floats_in: function(doc, fieldnames) {
35462      if (!doc) {
35463        return;
35464      }
35465      if (!fieldnames) {
35466        fieldnames = frappe.meta.get_fieldnames(doc.doctype, doc.parent, {
35467          fieldtype: ["in", ["Currency", "Float"]]
35468        });
35469      }
35470      for (var i2 = 0, j = fieldnames.length; i2 < j; i2++) {
35471        var fieldname = fieldnames[i2];
35472        doc[fieldname] = flt(doc[fieldname], precision(fieldname, doc));
35473      }
35474    },
35475    validate_missing: function(doc, fieldname) {
35476      if (!doc[fieldname]) {
35477        frappe.throw(
35478          __("Please specify") + ": " + __(frappe.meta.get_label(doc.doctype, fieldname, doc.parent || doc.name))
35479        );
35480      }
35481    },
35482    get_all_docs: function(doc) {
35483      var all = [doc];
35484      for (var key in doc) {
35485        if ($.isArray(doc[key]) && !key.startsWith("_")) {
35486          var children = doc[key];
35487          for (var i2 = 0, l = children.length; i2 < l; i2++) {
35488            all.push(children[i2]);
35489          }
35490        }
35491      }
35492      return all;
35493    },
35494    get_full_column_name: function(fieldname, doctype) {
35495      if (fieldname.includes("`tab"))
35496        return fieldname;
35497      return "`tab" + doctype + "`.`" + fieldname + "`";
35498    },
35499    is_numeric_field: function(fieldtype) {
35500      if (!fieldtype)
35501        return;
35502      if (typeof fieldtype === "object") {
35503        fieldtype = fieldtype.fieldtype;
35504      }
35505      return frappe.model.numeric_fieldtypes.includes(fieldtype);
35506    },
35507    set_default_views_for_doctype(doctype, frm) {
35508      frappe.model.with_doctype(doctype, () => {
35509        var _a, _b, _c;
35510        let meta = frappe.get_meta(doctype);
35511        let default_views = ["List", "Report", "Dashboard", "Kanban"];
35512        if (meta.is_calendar_and_gantt && frappe.views.calendar[doctype]) {
35513          let views = ["Calendar", "Gantt"];
35514          default_views.push(...views);
35515        }
35516        if (meta.is_tree) {
35517          default_views.push("Tree");
35518        }
35519        if (frm.doc.image_field) {
35520          default_views.push("Image");
35521        }
35522        if (doctype === "Communication" && frappe.boot.email_accounts.length) {
35523          default_views.push("Inbox");
35524        }
35525        if (((_a = frm.doc.fields) == null ? void 0 : _a.find((i2) => i2.fieldname === "latitude")) && ((_b = frm.doc.fields) == null ? void 0 : _b.find((i2) => i2.fieldname === "longitude")) || ((_c = frm.doc.fields) == null ? void 0 : _c.find(
35526          (i2) => i2.fieldname === "location" && i2.fieldtype == "Geolocation"
35527        ))) {
35528          default_views.push("Map");
35529        }
35530        frm.set_df_property("default_view", "options", default_views);
35531      });
35532    }
35533  });
35534  frappe.get_doc = frappe.model.get_doc;
35535  frappe.get_children = frappe.model.get_children;
35536  frappe.get_list = frappe.model.get_list;
35537
35538  
35538// frappe/public/js/frappe/model/perm.js
35539  frappe.provide("frappe.perm");
35540  Object.assign(window, {
35541    READ: "read",
35542    WRITE: "write",
35543    CREATE: "create",
35544    DELETE: "delete",
35545    SUBMIT: "submit",
35546    CANCEL: "cancel",
35547    AMEND: "amend"
35548  });
35549  $.extend(frappe.perm, {
35550    rights: [
35551      "select",
35552      "read",
35553      "write",
35554      "create",
35555      "delete",
35556      "submit",
35557      "cancel",
35558      "amend",
35559      "report",
35560      "import",
35561      "export",
35562      "print",
35563      "email",
35564      "share"
35565    ],
35566    doctype_perm: {},
35567    has_perm: (doctype, permlevel = 0, ptype = "read", doc) => {
35568      var _a;
35569      const perms = frappe.perm.get_perm(doctype, doc);
35570      return !!((_a = perms == null ? void 0 : perms[permlevel]) == null ? void 0 : _a[ptype]);
35571    },
35572    get_perm: (doctype, doc) => {
35573      var _a, _b;
35574      if (doc && !doc.__islocal) {
35575        return frappe.perm._get_perm(doctype, doc);
35576      }
35577      return (_b = (_a = frappe.perm.doctype_perm)[doctype]) != null ? _b : _a[doctype] = frappe.perm._get_perm(doctype);
35578    },
35579    _get_perm: (doctype, doc) => {
35580      let perm = [{ read: 0, permlevel: 0 }];
35581      let meta = frappe.get_doc("DocType", doctype);
35582      const user = frappe.session.user;
35583      if (user === "Administrator" || frappe.user_roles.includes("Administrator")) {
35584        perm[0].read = 1;
35585      }
35586      if (!meta)
35587        return perm;
35588      perm = frappe.perm.get_role_permissions(meta);
35589      const base_perm = perm[0];
35590      if (doc) {
35591        let docinfo = frappe.model.get_docinfo(doctype, doc.name);
35592        if (docinfo && docinfo.permissions) {
35593          Object.keys(docinfo.permissions).forEach((ptype) => {
35594            base_perm[ptype] = docinfo.permissions[ptype];
35595          });
35596        }
35597        if (doc.owner !== user) {
35598          for (const right of frappe.perm.rights) {
35599            if (base_perm[right] && !base_perm.rights_without_if_owner.has(right)) {
35600              base_perm[right] = 0;
35601            }
35602          }
35603        }
35604        if (docinfo && docinfo.shared) {
35605          for (const s of docinfo.shared) {
35606            if (s.user !== user)
35607              continue;
35608            for (const right of ["read", "write", "submit", "share"]) {
35609              if (!base_perm[right])
35610                base_perm[right] = s[right];
35611            }
35612            if (s.read) {
35613              base_perm.email = frappe.boot.user.can_email.indexOf(doctype) !== -1 ? 1 : 0;
35614              base_perm.print = frappe.boot.user.can_print.indexOf(doctype) !== -1 ? 1 : 0;
35615            }
35616          }
35617        }
35618      }
35619      if (!base_perm.read && frappe.model.can_read(doctype)) {
35620        base_perm.read = 1;
35621      }
35622      return perm;
35623    },
35624    get_role_permissions: (meta) => {
35625      let perm = [{ read: 0, permlevel: 0 }];
35626      (meta.permissions || []).forEach((p) => {
35627        var _a, _b;
35628        const permlevel = cint(p.permlevel);
35629        const current_perm = (_a = perm[permlevel]) != null ? _a : perm[permlevel] = { permlevel };
35630        if (permlevel === 0) {
35631          (_b = current_perm.rights_without_if_owner) != null ? _b : current_perm.rights_without_if_owner = /* @__PURE__ */ new Set();
35632        }
35633        if (frappe.user_roles.includes(p.role)) {
35634          frappe.perm.rights.forEach((right) => {
35635            if (!p[right])
35636              return;
35637            current_perm[right] = 1;
35638            if (permlevel === 0 && !p.if_owner) {
35639              current_perm.rights_without_if_owner.add(right);
35640            }
35641          });
35642        }
35643      });
35644      perm = perm.map((p) => p || {});
35645      return perm;
35646    },
35647    get_match_rules: (doctype, ptype) => {
35648      let match_rules = [];
35649      if (!ptype)
35650        ptype = "read";
35651      let perm = frappe.perm.get_perm(doctype);
35652      let user_permissions = frappe.defaults.get_user_permissions();
35653      if (user_permissions && !$.isEmptyObject(user_permissions)) {
35654        let rules = {};
35655        let fields_to_check = frappe.meta.get_fields_to_check_permissions(doctype);
35656        $.each(fields_to_check, (i2, df) => {
35657          const user_permissions_for_doctype = user_permissions[df.options] || [];
35658          const allowed_records = frappe.perm.get_allowed_docs_for_doctype(
35659            user_permissions_for_doctype,
35660            doctype
35661          );
35662          if (allowed_records.length) {
35663            rules[df.label] = allowed_records;
35664          }
35665        });
35666        if (!$.isEmptyObject(rules)) {
35667          match_rules.push(rules);
35668        }
35669      }
35670      const base_perm = perm[0];
35671      if (base_perm.read && !base_perm.rights_without_if_owner.has("read")) {
35672        match_rules.push({ Owner: frappe.session.user });
35673      }
35674      return match_rules;
35675    },
35676    get_field_display_status: (df, doc, perm, explain) => {
35677      if (!perm && doc) {
35678        perm = frappe.perm.get_perm(doc.doctype, doc);
35679      }
35680      if (!perm) {
35681        let is_hidden = df && (cint(df.hidden) || cint(df.hidden_due_to_dependency));
35682        let is_read_only = df && (cint(df.read_only) || cint(df.is_virtual));
35683        return is_hidden ? "None" : is_read_only ? "Read" : "Write";
35684      }
35685      if (!df.permlevel)
35686        df.permlevel = 0;
35687      let p = perm[df.permlevel];
35688      let status = "None";
35689      if (p) {
35690        if (p.write && !df.disabled && !df.is_virtual) {
35691          status = "Write";
35692        } else if (p.read) {
35693          status = "Read";
35694        }
35695      }
35696      if (explain)
35697        console.log("By Permission:" + status);
35698      if (cint(df.hidden))
35699        status = "None";
35700      if (explain)
35701        console.log("By Hidden:" + status);
35702      if (cint(df.hidden_due_to_dependency))
35703        status = "None";
35704      if (explain)
35705        console.log("By Hidden Due To Dependency:" + status);
35706      if (!doc) {
35707        return status;
35708      }
35709      if (status === "Write" && cint(doc.docstatus) > 0)
35710        status = "Read";
35711      if (explain)
35712        console.log("By Submit:" + status);
35713      let allow_on_submit = cint(df.allow_on_submit);
35714      if (status === "Read" && allow_on_submit && cint(doc.docstatus) === 1 && p.write) {
35715        status = "Write";
35716      }
35717      if (explain)
35718        console.log("By Allow on Submit:" + status);
35719      if (status === "Read" && cur_frm && cur_frm.state_fieldname) {
35720        if (cint(cur_frm.read_only) || cur_frm.states.update_fields.includes(df.fieldname) || df.fieldname == cur_frm.state_fieldname) {
35721          status = "Read";
35722        }
35723      }
35724      if (explain)
35725        console.log("By Workflow:" + status);
35726      if (status === "Write" && (cint(df.read_only) || df.fieldtype === "Read Only")) {
35727        status = "Read";
35728      }
35729      if (explain)
35730        console.log("By Read Only:" + status);
35731      if (status === "Write" && df.set_only_once && !doc.__islocal) {
35732        status = "Read";
35733      }
35734      if (explain)
35735        console.log("By Set Only Once:" + status);
35736      return status;
35737    },
35738    is_visible: (df, doc, perm) => {
35739      if (typeof df === "string") {
35740        df = frappe.meta.get_docfield(doc.doctype, df, doc.parent || doc.name);
35741      }
35742      let status = frappe.perm.get_field_display_status(df, doc, perm);
35743      return status === "None" ? false : true;
35744    },
35745    get_allowed_docs_for_doctype: (user_permissions, doctype) => {
35746      return frappe.perm.filter_allowed_docs_for_doctype(user_permissions, doctype, false);
35747    },
35748    filter_allowed_docs_for_doctype: (user_permissions, doctype, with_default_doc = true) => {
35749      const filtered_perms = (user_permissions || []).filter((perm) => {
35750        return perm.applicable_for === doctype || !perm.applicable_for;
35751      });
35752      const allowed_docs = filtered_perms.map((perm) => perm.doc);
35753      if (with_default_doc) {
35754        const default_doc = filtered_perms.filter((perm) => perm.is_default).map((record) => record.doc);
35755        return {
35756          allowed_records: allowed_docs,
35757          default_doc: default_doc[0]
35758        };
35759      } else {
35760        return allowed_docs;
35761      }
35762    }
35763  });
35764
35765  
35765// frappe/public/js/bootstrap-4-web.bundle.js
35766  $(".dropdown-menu a.dropdown-toggle").on("click", function(e) {
35767    e.preventDefault();
35768    e.stopImmediatePropagation();
35769    if (!$(this).next().hasClass("show")) {
35770      $(this).parents(".dropdown-menu").first().find(".show").removeClass("show");
35771    }
35772    var $subMenu = $(this).next(".dropdown-menu");
35773    $subMenu.toggleClass("show");
35774    $(this).parents("li.nav-item.dropdown.show").on("hidden.bs.dropdown", function() {
35775      $(".dropdown-submenu .show").removeClass("show");
35776    });
35777    return false;
35778  });
35779  frappe.get_modal = function(title, content) {
35780    return $(
35781      `<div class="modal" tabindex="-1" role="dialog">
35782			<div class="modal-dialog modal-dialog-scrollable" role="document">
35783				<div class="modal-content">
35784					<div class="modal-header">
35785						<h5 class="modal-title">${title}</h5>
35786						<button type="button" class="close" data-dismiss="modal" aria-label="Close">
35787						${frappe.utils.icon("close-alt", "sm", "close-alt")}
35788						</button>
35789					</div>
35790					<div class="modal-body">
35791						${content}
35792					</div>
35793					<div class="modal-footer hidden">
35794						<button type="button" class="btn btn-sm btn-secondary hidden"></button>
35795						<button type="button" class="btn btn-sm btn-primary hidden"></button>
35796					</div>
35797				</div>
35798			</div>
35799		</div>`
35800    );
35801  };
35802  frappe.ui.Dialog = class Dialog2 extends frappe.ui.Dialog {
35803    get_primary_btn() {
35804      return this.$wrapper.find(".modal-footer .btn-primary");
35805    }
35806    get_secondary_btn() {
35807      return this.$wrapper.find(".modal-footer .btn-secondary");
35808    }
35809    set_primary_action(label, click) {
35810      this.$wrapper.find(".modal-footer").removeClass("hidden");
35811      return super.set_primary_action(label, click).removeClass("hidden");
35812    }
35813    set_secondary_action(click) {
35814      return super.set_secondary_action(click).removeClass("hidden");
35815    }
35816    make() {
35817      super.make();
35818      if (this.fields) {
35819        this.$wrapper.find(".section-body").addClass("w-100");
35820      }
35821    }
35822  };
35823
35824  
35824// frappe/website/js/website.js
35825  var import_syntax_highlight = __toESM(require_syntax_highlight());
35826  frappe.provide("website");
35827  frappe.provide("frappe.awesome_bar_path");
35828  window.cur_frm = null;
35829  $.extend(frappe, {
35830    _assets_loaded: [],
35831    require: async function(links, callback) {
35832      if (typeof links === "string") {
35833        links = [links];
35834      }
35835      links = links.map((link) => frappe.bundled_asset(link));
35836      for (let link of links) {
35837        await this.add_asset_to_head(link);
35838      }
35839      callback && callback();
35840    },
35841    bundled_asset(path, is_rtl = null) {
35842      if (!path.startsWith("/assets") && path.includes(".bundle.")) {
35843        if (path.endsWith(".css") && is_rtl) {
35844          path = `rtl_${path}`;
35845        }
35846        path = frappe.boot.assets_json[path] || path;
35847        return path;
35848      }
35849      return path;
35850    },
35851    add_asset_to_head(link) {
35852      return new Promise((resolve) => {
35853        if (frappe._assets_loaded.includes(link))
35854          return resolve();
35855        let el;
35856        if (link.split(".").pop() === "js") {
35857          el = document.createElement("script");
35858          el.type = "text/javascript";
35859          el.src = link;
35860        } else {
35861          el = document.createElement("link");
35862          el.type = "text/css";
35863          el.rel = "stylesheet";
35864          el.href = link;
35865        }
35866        document.getElementsByTagName("head")[0].appendChild(el);
35867        el.onload = () => {
35868          frappe._assets_loaded.push(link);
35869          resolve();
35870        };
35871      });
35872    },
35873    hide_message: function() {
35874      $(".message-overlay").remove();
35875    },
35876    xcall: function(method, params) {
35877      return new Promise((resolve, reject) => {
35878        frappe.call({
35879          method,
35880          args: params,
35881          callback: (r) => {
35882            resolve(r.message);
35883          },
35884          error: (r) => {
35885            reject(r.message);
35886          }
35887        });
35888      });
35889    },
35890    call: function(opts) {
35891      if (typeof arguments[0] === "string") {
35892        opts = {
35893          method: arguments[0],
35894          args: arguments[1],
35895          callback: arguments[2]
35896        };
35897      }
35898      frappe.prepare_call(opts);
35899      if (opts.freeze) {
35900        frappe.freeze();
35901      }
35902      return $.ajax({
35903        type: opts.type || "POST",
35904        url: opts.url || "/",
35905        data: opts.args,
35906        dataType: "json",
35907        headers: {
35908          "X-Frappe-CSRF-Token": frappe.csrf_token,
35909          "X-Frappe-CMD": opts.args && opts.args.cmd || "" || ""
35910        },
35911        statusCode: opts.statusCode || {
35912          404: function() {
35913            frappe.msgprint(__("Not found"));
35914          },
35915          403: function() {
35916            frappe.msgprint(__("Not permitted"));
35917          },
35918          200: function(data) {
35919            if (opts.callback)
35920              opts.callback(data);
35921            if (opts.success)
35922              opts.success(data);
35923          }
35924        }
35925      }).always(function(data) {
35926        if (opts.freeze) {
35927          frappe.unfreeze();
35928        }
35929        if (data.responseText) {
35930          try {
35931            data = JSON.parse(data.responseText);
35932          } catch (e) {
35933            data = {};
35934          }
35935        }
35936        frappe.process_response(opts, data);
35937      });
35938    },
35939    prepare_call: function(opts) {
35940      if (opts.btn) {
35941        $(opts.btn).prop("disabled", true);
35942      }
35943      if (opts.msg) {
35944        $(opts.msg).toggle(false);
35945      }
35946      if (!opts.args)
35947        opts.args = {};
35948      if (opts.method) {
35949        opts.args.cmd = opts.method;
35950      }
35951      $.each(opts.args, function(key, val) {
35952        if (typeof val != "string" && val !== null) {
35953          opts.args[key] = JSON.stringify(val);
35954        }
35955      });
35956      if (!opts.no_spinner) {
35957      }
35958    },
35959    process_response: function(opts, data) {
35960      if (opts.btn) {
35961        $(opts.btn).prop("disabled", false);
35962      }
35963      if (data._server_messages) {
35964        var server_messages = JSON.parse(data._server_messages || "[]");
35965        server_messages.map((msg) => {
35966          try {
35967            return JSON.parse(msg);
35968          } catch (e) {
35969            return msg;
35970          }
35971        }).join("<br>");
35972        if (opts.error_msg) {
35973          $(opts.error_msg).html(server_messages).toggle(true);
35974        } else {
35975          frappe.msgprint(server_messages);
35976        }
35977      }
35978      if (data.exc) {
35979        try {
35980          var err = JSON.parse(data.exc);
35981          if ($.isArray(err)) {
35982            err = err.join("\n");
35983          }
35984          console.error ? console.error(err) : console.log(err);
35985        } catch (e) {
35986          console.log(data.exc);
35987        }
35988      } else {
35989      }
35990      if (opts.msg && data.message) {
35991        $(opts.msg).html(data.message).toggle(true);
35992      }
35993      if (opts.always) {
35994        opts.always(data);
35995      }
35996    },
35997    show_message: function(text, icon) {
35998      if (!icon)
35999        icon = "fa fa-refresh fa-spin";
36000      frappe.hide_message();
36001      $('<div class="message-overlay"></div>').html(
36002        '<div class="content"><i class="' + icon + ' text-muted"></i><br>
36002' + text + "</div>"
36003      ).appendTo(document.body);
36004    },
36005    has_permission: function(doctype, docname, perm_type, callback) {
36006      return frappe.call({
36007        type: "GET",
36008        method: "frappe.client.has_permission",
36009        no_spinner: true,
36010        args: { doctype, docname, perm_type },
36011        callback: function(r) {
36012          if (!r.exc && r.message.has_permission) {
36013            if (callback) {
36014              return callback(r);
36015            }
36016          }
36017        }
36018      });
36019    },
36020    render_user: function() {
36021      if (frappe.is_user_logged_in()) {
36022        $(".btn-login-area").toggle(false);
36023        $(".logged-in").toggle(true);
36024        $(".user-image").attr("src", frappe.get_cookie("user_image"));
36025        $(".user-image-wrapper").html(
36026          frappe.avatar(null, "avatar-medium", null, null, null, true)
36027        );
36028        $(".user-image-sidebar").html(
36029          frappe.avatar(null, "avatar-medium", null, null, null, true)
36030        );
36031        $(".user-image-myaccount").html(
36032          frappe.avatar(null, "avatar-large", null, null, null, true)
36033        );
36034      }
36035    },
36036    freeze_count: 0,
36037    freeze: function(msg) {
36038      if (!$("#freeze").length) {
36039        var freeze = $('<div id="freeze" class="modal-backdrop fade"></div>').appendTo("body");
36040        freeze.html(
36041          repl(
36042            '<div class="freeze-message-container"><div class="freeze-message">%(msg)s</div></div>',
36043            { msg: msg || "" }
36044          )
36045        );
36046        setTimeout(function() {
36047          freeze.addClass("in");
36048        }, 1);
36049      } else {
36050        $("#freeze").addClass("in");
36051      }
36052      frappe.freeze_count++;
36053    },
36054    unfreeze: function() {
36055      if (!frappe.freeze_count)
36056        return;
36057      frappe.freeze_count--;
36058      if (!frappe.freeze_count) {
36059        var freeze = $("#freeze").removeClass("in");
36060        setTimeout(function() {
36061          if (!frappe.freeze_count) {
36062            freeze.remove();
36063          }
36064        }, 150);
36065      }
36066    },
36067    trigger_ready: function() {
36068      frappe.ready_events.forEach(function(fn) {
36069        fn();
36070      });
36071    },
36072    highlight_code_blocks: function() {
36073      import_syntax_highlight.default.initHighlighting();
36074    },
36075    bind_filters: function() {
36076      $(".filter").each(function() {
36077        var key = $(this).attr("data-key");
36078        var val = frappe.utils.get_url_arg(key).replace(/\+/g, " ");
36079        if (val)
36080          $(this).val(val);
36081      });
36082      var search = function() {
36083        var args = {};
36084        $(".filter").each(function() {
36085          var val = $(this).val();
36086          if (val)
36087            args[$(this).attr("data-key")] = val;
36088        });
36089        window.location.href = location.pathname + "?" + $.param(args);
36090      };
36091      $(".filter").on("change", function() {
36092        search();
36093      });
36094    },
36095    bind_navbar_search: function() {
36096      frappe.get_navbar_search().on("keypress", function(e) {
36097        var val = $(this).val();
36098        if (e.which === 13 && val) {
36099          $(this).val("").blur();
36100          frappe.do_search(val);
36101          return false;
36102        }
36103      });
36104    },
36105    do_search: function(val) {
36106      var path = frappe.awesome_bar_path && frappe.awesome_bar_path[location.pathname] || window.search_path || location.pathname;
36107      window.location.href = path + "?txt=" + encodeURIComponent(val);
36108    },
36109    set_search_path: function(path) {
36110      frappe.awesome_bar_path[location.pathname] = path;
36111    },
36112    make_navbar_active: function() {
36113      var pathname = window.location.pathname;
36114      $(".navbar-nav li.active").removeClass("active");
36115      $(".navbar-nav li").each(function() {
36116        var href = $(this.getElementsByTagName("a")).attr("href");
36117        if (href === pathname) {
36118          $(this).addClass("active");
36119          return false;
36120        }
36121      });
36122    },
36123    get_navbar_search: function() {
36124      return $(".navbar .search, .sidebar .search");
36125    },
36126    is_user_logged_in: function() {
36127      return frappe.get_cookie("user_id") !== "Guest" && frappe.session.user !== "Guest";
36128    },
36129    add_switch_to_desk: function() {
36130      $(".switch-to-desk").removeClass("hidden");
36131    },
36132    add_apps: function(obj) {
36133      $(".logged-in .apps").attr("href", obj.route).text(obj.label);
36134      $(".logged-in .apps").removeClass("hidden");
36135    },
36136    add_link_to_headings: function() {
36137      $(".doc-content .from-markdown").find("h2, h3, h4, h5, h6").each((i2, $heading) => {
36138        let id = $heading.id;
36139        let $a = $('<a class="no-underline">').prop("href", "#" + id).attr("aria-hidden", "true").html(`
36140					<svg xmlns="http://www.w3.org/2000/svg" style="width: 0.8em; height: 0.8em;" viewBox="0 0 24 24" fill="none" stroke="currentColor"
36141						stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="feather feather-link">
36142						<path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path>
36143						<path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path>
36144					</svg>
36145				`);
36146        $($heading).append($a);
36147      });
36148    },
36149    show_language_picker() {
36150      if (frappe.session.user === "Guest" && window.show_language_picker) {
36151        frappe.call("frappe.translate.get_all_languages", {
36152          with_language_name: true
36153        }).then((res) => {
36154          let language_list = res.message;
36155          let language = frappe.get_cookie("preferred_language");
36156          let language_codes = [];
36157          let language_switcher = $("#language-switcher .form-control");
36158          language_list.forEach((language_doc) => {
36159            language_codes.push(language_doc.language_code);
36160            language_switcher.append(
36161              $("<option></option>").attr("value", language_doc.language_code).text(language_doc.language_name)
36162            );
36163          });
36164          $("#language-switcher").removeClass("hide");
36165          language = language || (language_codes.includes(navigator.language) ? navigator.language : "en");
36166          language_switcher.val(language);
36167          document.documentElement.lang = language;
36168          language_switcher.change(() => {
36169            const lang = language_switcher.val();
36170            document.cookie = `preferred_language=${lang}`;
36171            window.location.reload();
36172          });
36173        });
36174      }
36175    },
36176    setup_videos: () => {
36177      $(".section-video-wrapper").on("click", (e) => {
36178        let $video = $(e.currentTarget);
36179        let id = $video.data("youtubeId");
36180        console.log(id);
36181        $video.find(".video-thumbnail").hide();
36182        $video.append(`
36183				<iframe allowfullscreen="" class="section-video" f;rameborder="0" src="//youtube.com/embed/${id}?autoplay=1"></iframe>
36184			`);
36185      });
36186    }
36187  });
36188  frappe.setup_search = function(target, search_scope) {
36189    if (typeof target === "string") {
36190      target = $(target);
36191    }
36192    let $search_input = $(`<div class="dropdown" id="dropdownMenuSearch">
36193			<input type="search" class="form-control" placeholder="Search the docs (Press / to focus)" />
36194			<div class="overflow-hidden shadow dropdown-menu w-100" aria-labelledby="dropdownMenuSearch">
36195			</div>
36196			<div class="search-icon">
36197				<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24"
36198					fill="none"
36199					stroke="currentColor" stroke-width="2" stroke-linecap="round"
36200					stroke-linejoin="round"
36201					class="feather feather-search">
36202					<circle cx="11" cy="11" r="8"></circle>
36203					<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
36204				</svg>
36205			</div>
36206		</div>`);
36207    target.empty();
36208    $search_input.appendTo(target);
36209    let $dropdown_menu = $search_input.find(".dropdown-menu");
36210    let $input = $search_input.find("input");
36211    let dropdownItems;
36212    let offsetIndex = 0;
36213    $(document).on("keypress", (e) => {
36214      if ($(e.target).is("textarea, input, select")) {
36215        return;
36216      }
36217      if (e.key === "/") {
36218        e.preventDefault();
36219        $input.focus();
36220      }
36221    });
36222    $input.on(
36223      "input",
36224      frappe.utils.debounce(() => {
36225        if (!$input.val()) {
36226          clear_dropdown();
36227          return;
36228        }
36229        frappe.call({
36230          method: "frappe.search.web_search",
36231          args: {
36232            scope: search_scope || null,
36233            query: $input.val(),
36234            limit: 5
36235          }
36236        }).then((r) => {
36237          let results = r.message || [];
36238          let dropdown_html;
36239          if (results.length == 0) {
36240            dropdown_html = `<div class="dropdown-item">No results found</div>`;
36241          } else {
36242            dropdown_html = results.map((r2) => {
36243              return `<a class="dropdown-item" href="/${r2.path}">
36244						<h6>${r2.title_highlights || r2.title}</h6>
36245						<div style="white-space: normal;">${r2.content_highlights}</div>
36246					</a>`;
36247            }).join("");
36248          }
36249          $dropdown_menu.html(dropdown_html);
36250          $dropdown_menu.addClass("show");
36251          dropdownItems = $dropdown_menu.find(".dropdown-item");
36252        });
36253      }, 500)
36254    );
36255    $input.on("focus", () => {
36256      if (!$input.val()) {
36257        clear_dropdown();
36258      } else {
36259        $input.trigger("input");
36260      }
36261    });
36262    $input.keydown(function(e) {
36263      if (e.which == 40) {
36264        navigate(0);
36265      }
36266    });
36267    $dropdown_menu.keydown(function(e) {
36268      if (e.which == 38) {
36269        navigate(-1);
36270      } else if (e.which == 40) {
36271        navigate(1);
36272      } else if (e.which == 27) {
36273        setTimeout(() => {
36274          clear_dropdown();
36275        }, 300);
36276      }
36277    });
36278    $(window).click(function() {
36279      clear_dropdown();
36280    });
36281    $search_input.click(function(event) {
36282      event.stopPropagation();
36283    });
36284    var navigate = function(diff) {
36285      offsetIndex += diff;
36286      if (offsetIndex >= dropdownItems.length)
36287        offsetIndex = 0;
36288      if (offsetIndex < 0)
36289        offsetIndex = dropdownItems.length - 1;
36290      $input.off("blur");
36291      dropdownItems.eq(offsetIndex).focus();
36292    };
36293    function clear_dropdown() {
36294      offsetIndex = 0;
36295      $dropdown_menu.html("");
36296      $dropdown_menu.removeClass("show");
36297      dropdownItems = void 0;
36298    }
36299    $dropdown_menu.mouseover(function() {
36300      dropdownItems.blur();
36301    });
36302  };
36303  window.valid_email = function(id) {
36304    return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/.test(
36305      id.toLowerCase()
36306    );
36307  };
36308  window.validate_email = window.valid_email;
36309  window.cstr = function(s) {
36310    return s == null ? "" : s + "";
36311  };
36312  window.is_null = function is_null2(v) {
36313    if (v === null || v === void 0 || cstr(v).trim() === "")
36314      return true;
36315  };
36316  window.is_html = function is_html(txt) {
36317    if (txt.indexOf("<br>
36317") == -1 && txt.indexOf("<p") == -1 && txt.indexOf("<img") == -1 && txt.indexOf("<div") == -1) {
36318      return false;
36319    }
36320    return true;
36321  };
36322  window.ask_to_login = function ask_to_login() {
36323    if (!frappe.is_user_logged_in()) {
36324      if (localStorage) {
36325        localStorage.setItem(
36326          "last_visited",
36327          window.location.href.replace(window.location.origin, "")
36328        );
36329      }
36330      window.location.href = "login";
36331    }
36332  };
36333  $(document).ready(function() {
36334    var _a, _b, _c, _d;
36335    window.full_name = frappe.get_cookie("full_name");
36336    var logged_in = frappe.is_user_logged_in();
36337    $("#website-login").toggleClass("hide", logged_in ? true : false);
36338    $("#website-post-login").toggleClass("hide", logged_in ? false : true);
36339    $(".logged-in").toggleClass("hide", logged_in ? false : true);
36340    frappe.bind_navbar_search();
36341    let apps = (_b = (_a = frappe.boot) == null ? void 0 : _a.apps_data) == null ? void 0 : _b.apps;
36342    let obj = {
36343      label: __("Apps"),
36344      route: "/apps"
36345    };
36346    if (apps == null ? void 0 : apps.length) {
36347      if (apps.length == 1) {
36348        obj = {
36349          label: __(apps[0].title),
36350          route: apps[0].route
36351        };
36352      }
36353      let is_desk_apps = (_d = (_c = frappe.boot) == null ? void 0 : _c.apps_data) == null ? void 0 : _d.is_desk_apps;
36354      !is_desk_apps && frappe.add_apps(obj);
36355    }
36356    if (frappe.get_cookie("system_user") === "yes" && logged_in) {
36357      frappe.add_switch_to_desk();
36358    }
36359    frappe.render_user();
36360    $(document).trigger("page-change");
36361  });
36362  $(document).on("page-change", function() {
36363    $(document).trigger("apply_permissions");
36364    $(".dropdown-toggle").dropdown();
36365    $(".dropdown-menu .dropdown-submenu .dropdown-toggle").on("click", function(e) {
36366      e.stopPropagation();
36367      $(this).parent().parent().parent().addClass("open");
36368    });
36369    $.extend(frappe, frappe.get_cookies());
36370    frappe.session = { user: frappe.user_id };
36371    frappe.datetime.refresh_when();
36372    frappe.trigger_ready();
36373    frappe.bind_filters();
36374    frappe.highlight_code_blocks();
36375    frappe.add_link_to_headings();
36376    frappe.make_navbar_active();
36377    if (window.location.hash) {
36378      var element = document.getElementById(window.location.hash.substring(1));
36379      element && element.scrollIntoView(true);
36380    }
36381  });
36382  frappe.ready(function() {
36383    frappe.show_language_picker();
36384    frappe.setup_videos();
36385    frappe.realtime.init(window.socketio_port, true);
36386  });
36387
36388  
vendor: 564 bytes, lines 36388-36403
36388// node_modules/engine.io-parser/build/esm/commons.js
36389  var PACKET_TYPES = /* @__PURE__ */ Object.create(null);
36390  PACKET_TYPES["open"] = "0";
36391  PACKET_TYPES["close"] = "1";
36392  PACKET_TYPES["ping"] = "2";
36393  PACKET_TYPES["pong"] = "3";
36394  PACKET_TYPES["message"] = "4";
36395  PACKET_TYPES["upgrade"] = "5";
36396  PACKET_TYPES["noop"] = "6";
36397  var PACKET_TYPES_REVERSE = /* @__PURE__ */ Object.create(null);
36398  Object.keys(PACKET_TYPES).forEach((key) => {
36399    PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;
36400  });
36401  var ERROR_PACKET = { type: "error", data: "parser error" };
36402
36403  
vendor: 2,076 bytes, lines 36403-36457
36403// node_modules/engine.io-parser/build/esm/encodePacket.browser.js
36404  var withNativeBlob = typeof Blob === "function" || typeof Blob !== "undefined" && Object.prototype.toString.call(Blob) === "[object BlobConstructor]";
36405  var withNativeArrayBuffer = typeof ArrayBuffer === "function";
36406  var isView = (obj) => {
36407    return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj && obj.buffer instanceof ArrayBuffer;
36408  };
36409  var encodePacket = ({ type: type2, data }, supportsBinary, callback) => {
36410    if (withNativeBlob && data instanceof Blob) {
36411      if (supportsBinary) {
36412        return callback(data);
36413      } else {
36414        return encodeBlobAsBase64(data, callback);
36415      }
36416    } else if (withNativeArrayBuffer && (data instanceof ArrayBuffer || isView(data))) {
36417      if (supportsBinary) {
36418        return callback(data);
36419      } else {
36420        return encodeBlobAsBase64(new Blob([data]), callback);
36421      }
36422    }
36423    return callback(PACKET_TYPES[type2] + (data || ""));
36424  };
36425  var encodeBlobAsBase64 = (data, callback) => {
36426    const fileReader = new FileReader();
36427    fileReader.onload = function() {
36428      const content = fileReader.result.split(",")[1];
36429      callback("b" + (content || ""));
36430    };
36431    return fileReader.readAsDataURL(data);
36432  };
36433  function toArray(data) {
36434    if (data instanceof Uint8Array) {
36435      return data;
36436    } else if (data instanceof ArrayBuffer) {
36437      return new Uint8Array(data);
36438    } else {
36439      return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);
36440    }
36441  }
36442  var TEXT_ENCODER;
36443  function encodePacketToBinary(packet, callback) {
36444    if (withNativeBlob && packet.data instanceof Blob) {
36445      return packet.data.arrayBuffer().then(toArray).then(callback);
36446    } else if (withNativeArrayBuffer && (packet.data instanceof ArrayBuffer || isView(packet.data))) {
36447      return callback(toArray(packet.data));
36448    }
36449    encodePacket(packet, false, (encoded) => {
36450      if (!TEXT_ENCODER) {
36451        TEXT_ENCODER = new TextEncoder();
36452      }
36453      callback(TEXT_ENCODER.encode(encoded));
36454    });
36455  }
36456
36457  
vendor: 1,154 bytes, lines 36457-36484
36457// node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js
36458  var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
36459  var lookup = typeof Uint8Array === "undefined" ? [] : new Uint8Array(256);
36460  for (let i2 = 0; i2 < chars.length; i2++) {
36461    lookup[chars.charCodeAt(i2)] = i2;
36462  }
36463  var decode = (base64) => {
36464    let bufferLength = base64.length * 0.75, len = base64.length, i2, p = 0, encoded1, encoded2, encoded3, encoded4;
36465    if (base64[base64.length - 1] === "=") {
36466      bufferLength--;
36467      if (base64[base64.length - 2] === "=") {
36468        bufferLength--;
36469      }
36470    }
36471    const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);
36472    for (i2 = 0; i2 < len; i2 += 4) {
36473      encoded1 = lookup[base64.charCodeAt(i2)];
36474      encoded2 = lookup[base64.charCodeAt(i2 + 1)];
36475      encoded3 = lookup[base64.charCodeAt(i2 + 2)];
36476      encoded4 = lookup[base64.charCodeAt(i2 + 3)];
36477      bytes[p++] = encoded1 << 2 | encoded2 >> 4;
36478      bytes[p++] = (encoded2 & 15) << 4 | encoded3 >> 2;
36479      bytes[p++] = (encoded3 & 3) << 6 | encoded4 & 63;
36480    }
36481    return arraybuffer;
36482  };
36483
36484  
vendor: 1,437 bytes, lines 36484-36537
36484// node_modules/engine.io-parser/build/esm/decodePacket.browser.js
36485  var withNativeArrayBuffer2 = typeof ArrayBuffer === "function";
36486  var decodePacket = (encodedPacket, binaryType) => {
36487    if (typeof encodedPacket !== "string") {
36488      return {
36489        type: "message",
36490        data: mapBinary(encodedPacket, binaryType)
36491      };
36492    }
36493    const type2 = encodedPacket.charAt(0);
36494    if (type2 === "b") {
36495      return {
36496        type: "message",
36497        data: decodeBase64Packet(encodedPacket.substring(1), binaryType)
36498      };
36499    }
36500    const packetType = PACKET_TYPES_REVERSE[type2];
36501    if (!packetType) {
36502      return ERROR_PACKET;
36503    }
36504    return encodedPacket.length > 1 ? {
36505      type: PACKET_TYPES_REVERSE[type2],
36506      data: encodedPacket.substring(1)
36507    } : {
36508      type: PACKET_TYPES_REVERSE[type2]
36509    };
36510  };
36511  var decodeBase64Packet = (data, binaryType) => {
36512    if (withNativeArrayBuffer2) {
36513      const decoded = decode(data);
36514      return mapBinary(decoded, binaryType);
36515    } else {
36516      return { base64: true, data };
36517    }
36518  };
36519  var mapBinary = (data, binaryType) => {
36520    switch (binaryType) {
36521      case "blob":
36522        if (data instanceof Blob) {
36523          return data;
36524        } else {
36525          return new Blob([data]);
36526        }
36527      case "arraybuffer":
36528      default:
36529        if (data instanceof ArrayBuffer) {
36530          return data;
36531        } else {
36532          return data.buffer;
36533        }
36534    }
36535  };
36536
36537  
vendor: 4,697 bytes, lines 36537-36679
36537// node_modules/engine.io-parser/build/esm/index.js
36538  var SEPARATOR = String.fromCharCode(30);
36539  var encodePayload = (packets, callback) => {
36540    const length2 = packets.length;
36541    const encodedPackets = new Array(length2);
36542    let count = 0;
36543    packets.forEach((packet, i2) => {
36544      encodePacket(packet, false, (encodedPacket) => {
36545        encodedPackets[i2] = encodedPacket;
36546        if (++count === length2) {
36547          callback(encodedPackets.join(SEPARATOR));
36548        }
36549      });
36550    });
36551  };
36552  var decodePayload = (encodedPayload, binaryType) => {
36553    const encodedPackets = encodedPayload.split(SEPARATOR);
36554    const packets = [];
36555    for (let i2 = 0; i2 < encodedPackets.length; i2++) {
36556      const decodedPacket = decodePacket(encodedPackets[i2], binaryType);
36557      packets.push(decodedPacket);
36558      if (decodedPacket.type === "error") {
36559        break;
36560      }
36561    }
36562    return packets;
36563  };
36564  function createPacketEncoderStream() {
36565    return new TransformStream({
36566      transform(packet, controller) {
36567        encodePacketToBinary(packet, (encodedPacket) => {
36568          const payloadLength = encodedPacket.length;
36569          let header;
36570          if (payloadLength < 126) {
36571            header = new Uint8Array(1);
36572            new DataView(header.buffer).setUint8(0, payloadLength);
36573          } else if (payloadLength < 65536) {
36574            header = new Uint8Array(3);
36575            const view = new DataView(header.buffer);
36576            view.setUint8(0, 126);
36577            view.setUint16(1, payloadLength);
36578          } else {
36579            header = new Uint8Array(9);
36580            const view = new DataView(header.buffer);
36581            view.setUint8(0, 127);
36582            view.setBigUint64(1, BigInt(payloadLength));
36583          }
36584          if (packet.data && typeof packet.data !== "string") {
36585            header[0] |= 128;
36586          }
36587          controller.enqueue(header);
36588          controller.enqueue(encodedPacket);
36589        });
36590      }
36591    });
36592  }
36593  var TEXT_DECODER;
36594  function totalLength(chunks) {
36595    return chunks.reduce((acc, chunk) => acc + chunk.length, 0);
36596  }
36597  function concatChunks(chunks, size) {
36598    if (chunks[0].length === size) {
36599      return chunks.shift();
36600    }
36601    const buffer = new Uint8Array(size);
36602    let j = 0;
36603    for (let i2 = 0; i2 < size; i2++) {
36604      buffer[i2] = chunks[0][j++];
36605      if (j === chunks[0].length) {
36606        chunks.shift();
36607        j = 0;
36608      }
36609    }
36610    if (chunks.length && j < chunks[0].length) {
36611      chunks[0] = chunks[0].slice(j);
36612    }
36613    return buffer;
36614  }
36615  function createPacketDecoderStream(maxPayload, binaryType) {
36616    if (!TEXT_DECODER) {
36617      TEXT_DECODER = new TextDecoder();
36618    }
36619    const chunks = [];
36620    let state = 0;
36621    let expectedLength = -1;
36622    let isBinary2 = false;
36623    return new TransformStream({
36624      transform(chunk, controller) {
36625        chunks.push(chunk);
36626        while (true) {
36627          if (state === 0) {
36628            if (totalLength(chunks) < 1) {
36629              break;
36630            }
36631            const header = concatChunks(chunks, 1);
36632            isBinary2 = (header[0] & 128) === 128;
36633            expectedLength = header[0] & 127;
36634            if (expectedLength < 126) {
36635              state = 3;
36636            } else if (expectedLength === 126) {
36637              state = 1;
36638            } else {
36639              state = 2;
36640            }
36641          } else if (state === 1) {
36642            if (totalLength(chunks) < 2) {
36643              break;
36644            }
36645            const headerArray = concatChunks(chunks, 2);
36646            expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);
36647            state = 3;
36648          } else if (state === 2) {
36649            if (totalLength(chunks) < 8) {
36650              break;
36651            }
36652            const headerArray = concatChunks(chunks, 8);
36653            const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);
36654            const n = view.getUint32(0);
36655            if (n > Math.pow(2, 53 - 32) - 1) {
36656              controller.enqueue(ERROR_PACKET);
36657              break;
36658            }
36659            expectedLength = n * Math.pow(2, 32) + view.getUint32(4);
36660            state = 3;
36661          } else {
36662            if (totalLength(chunks) < expectedLength) {
36663              break;
36664            }
36665            const data = concatChunks(chunks, expectedLength);
36666            controller.enqueue(decodePacket(isBinary2 ? data : TEXT_DECODER.decode(data), binaryType));
36667            state = 0;
36668          }
36669          if (expectedLength === 0 || expectedLength > maxPayload) {
36670            controller.enqueue(ERROR_PACKET);
36671            break;
36672          }
36673        }
36674      }
36675    });
36676  }
36677  var protocol = 4;
36678
36679  
vendor: 2,253 bytes, lines 36679-36753
36679// node_modules/@socket.io/component-emitter/index.mjs
36680  function Emitter(obj) {
36681    if (obj)
36682      return mixin(obj);
36683  }
36684  function mixin(obj) {
36685    for (var key in Emitter.prototype) {
36686      obj[key] = Emitter.prototype[key];
36687    }
36688    return obj;
36689  }
36690  Emitter.prototype.on = Emitter.prototype.addEventListener = function(event, fn) {
36691    this._callbacks = this._callbacks || {};
36692    (this._callbacks["$" + event] = this._callbacks["$" + event] || []).push(fn);
36693    return this;
36694  };
36695  Emitter.prototype.once = function(event, fn) {
36696    function on2() {
36697      this.off(event, on2);
36698      fn.apply(this, arguments);
36699    }
36700    on2.fn = fn;
36701    this.on(event, on2);
36702    return this;
36703  };
36704  Emitter.prototype.off = Emitter.prototype.removeListener = Emitter.prototype.removeAllListeners = Emitter.prototype.removeEventListener = function(event, fn) {
36705    this._callbacks = this._callbacks || {};
36706    if (0 == arguments.length) {
36707      this._callbacks = {};
36708      return this;
36709    }
36710    var callbacks = this._callbacks["$" + event];
36711    if (!callbacks)
36712      return this;
36713    if (1 == arguments.length) {
36714      delete this._callbacks["$" + event];
36715      return this;
36716    }
36717    var cb;
36718    for (var i2 = 0; i2 < callbacks.length; i2++) {
36719      cb = callbacks[i2];
36720      if (cb === fn || cb.fn === fn) {
36721        callbacks.splice(i2, 1);
36722        break;
36723      }
36724    }
36725    if (callbacks.length === 0) {
36726      delete this._callbacks["$" + event];
36727    }
36728    return this;
36729  };
36730  Emitter.prototype.emit = function(event) {
36731    this._callbacks = this._callbacks || {};
36732    var args = new Array(arguments.length - 1), callbacks = this._callbacks["$" + event];
36733    for (var i2 = 1; i2 < arguments.length; i2++) {
36734      args[i2 - 1] = arguments[i2];
36735    }
36736    if (callbacks) {
36737      callbacks = callbacks.slice(0);
36738      for (var i2 = 0, len = callbacks.length; i2 < len; ++i2) {
36739        callbacks[i2].apply(this, args);
36740      }
36741    }
36742    return this;
36743  };
36744  Emitter.prototype.emitReserved = Emitter.prototype.emit;
36745  Emitter.prototype.listeners = function(event) {
36746    this._callbacks = this._callbacks || {};
36747    return this._callbacks["$" + event] || [];
36748  };
36749  Emitter.prototype.hasListeners = function(event) {
36750    return !!this.listeners(event).length;
36751  };
36752
36753  
vendor: 294 bytes, lines 36753-36764
36753// node_modules/engine.io-client/build/esm/globalThis.browser.js
36754  var globalThisShim = (() => {
36755    if (typeof self !== "undefined") {
36756      return self;
36757    } else if (typeof window !== "undefined") {
36758      return window;
36759    } else {
36760      return Function("return this")();
36761    }
36762  })();
36763
36764  
vendor: 1,317 bytes, lines 36764-36809
36764// node_modules/engine.io-client/build/esm/util.js
36765  function pick(obj, ...attr) {
36766    return attr.reduce((acc, k) => {
36767      if (obj.hasOwnProperty(k)) {
36768        acc[k] = obj[k];
36769      }
36770      return acc;
36771    }, {});
36772  }
36773  var NATIVE_SET_TIMEOUT = globalThisShim.setTimeout;
36774  var NATIVE_CLEAR_TIMEOUT = globalThisShim.clearTimeout;
36775  function installTimerFunctions(obj, opts) {
36776    if (opts.useNativeTimers) {
36777      obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThisShim);
36778      obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThisShim);
36779    } else {
36780      obj.setTimeoutFn = globalThisShim.setTimeout.bind(globalThisShim);
36781      obj.clearTimeoutFn = globalThisShim.clearTimeout.bind(globalThisShim);
36782    }
36783  }
36784  var BASE64_OVERHEAD = 1.33;
36785  function byteLength(obj) {
36786    if (typeof obj === "string") {
36787      return utf8Length(obj);
36788    }
36789    return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);
36790  }
36791  function utf8Length(str) {
36792    let c = 0, length2 = 0;
36793    for (let i2 = 0, l = str.length; i2 < l; i2++) {
36794      c = str.charCodeAt(i2);
36795      if (c < 128) {
36796        length2 += 1;
36797      } else if (c < 2048) {
36798        length2 += 2;
36799      } else if (c < 55296 || c >= 57344) {
36800        length2 += 3;
36801      } else {
36802        i2++;
36803        length2 += 4;
36804      }
36805    }
36806    return length2;
36807  }
36808
36809  
vendor: 589 bytes, lines 36809-36831
36809// node_modules/engine.io-client/build/esm/contrib/parseqs.js
36810  function encode(obj) {
36811    let str = "";
36812    for (let i2 in obj) {
36813      if (obj.hasOwnProperty(i2)) {
36814        if (str.length)
36815          str += "&";
36816        str += encodeURIComponent(i2) + "=" + encodeURIComponent(obj[i2]);
36817      }
36818    }
36819    return str;
36820  }
36821  function decode2(qs) {
36822    let qry = {};
36823    let pairs = qs.split("&");
36824    for (let i2 = 0, l = pairs.length; i2 < l; i2++) {
36825      let pair = pairs[i2].split("=");
36826      qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);
36827    }
36828    return qry;
36829  }
36830
36831  
vendor: 2,165 bytes, lines 36831-36909
36831// node_modules/engine.io-client/build/esm/transport.js
36832  var TransportError = class extends Error {
36833    constructor(reason, description, context) {
36834      super(reason);
36835      this.description = description;
36836      this.context = context;
36837      this.type = "TransportError";
36838    }
36839  };
36840  var Transport = class extends Emitter {
36841    constructor(opts) {
36842      super();
36843      this.writable = false;
36844      installTimerFunctions(this, opts);
36845      this.opts = opts;
36846      this.query = opts.query;
36847      this.socket = opts.socket;
36848    }
36849    onError(reason, description, context) {
36850      super.emitReserved("error", new TransportError(reason, description, context));
36851      return this;
36852    }
36853    open() {
36854      this.readyState = "opening";
36855      this.doOpen();
36856      return this;
36857    }
36858    close() {
36859      if (this.readyState === "opening" || this.readyState === "open") {
36860        this.doClose();
36861        this.onClose();
36862      }
36863      return this;
36864    }
36865    send(packets) {
36866      if (this.readyState === "open") {
36867        this.write(packets);
36868      } else {
36869      }
36870    }
36871    onOpen() {
36872      this.readyState = "open";
36873      this.writable = true;
36874      super.emitReserved("open");
36875    }
36876    onData(data) {
36877      const packet = decodePacket(data, this.socket.binaryType);
36878      this.onPacket(packet);
36879    }
36880    onPacket(packet) {
36881      super.emitReserved("packet", packet);
36882    }
36883    onClose(details) {
36884      this.readyState = "closed";
36885      super.emitReserved("close", details);
36886    }
36887    pause(onPause) {
36888    }
36889    createUri(schema, query = {}) {
36890      return schema + "://" + this._hostname() + this._port() + this.opts.path + this._query(query);
36891    }
36892    _hostname() {
36893      const hostname = this.opts.hostname;
36894      return hostname.indexOf(":") === -1 ? hostname : "[" + hostname + "]";
36895    }
36896    _port() {
36897      if (this.opts.port && (this.opts.secure && Number(this.opts.port !== 443) || !this.opts.secure && Number(this.opts.port) !== 80)) {
36898        return ":" + this.opts.port;
36899      } else {
36900        return "";
36901      }
36902    }
36903    _query(query) {
36904      const encodedQuery = encode(query);
36905      return encodedQuery.length ? "?" + encodedQuery : "";
36906    }
36907  };
36908
36909  
vendor: 638 bytes, lines 36909-36933
36909// node_modules/engine.io-client/build/esm/contrib/yeast.js
36910  var alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split("");
36911  var length = 64;
36912  var map = {};
36913  var seed = 0;
36914  var i = 0;
36915  var prev;
36916  function encode2(num) {
36917    let encoded = "";
36918    do {
36919      encoded = alphabet[num % length] + encoded;
36920      num = Math.floor(num / length);
36921    } while (num > 0);
36922    return encoded;
36923  }
36924  function yeast() {
36925    const now = encode2(+new Date());
36926    if (now !== prev)
36927      return seed = 0, prev = now;
36928    return now + "." + encode2(seed++);
36929  }
36930  for (; i < length; i++)
36931    map[alphabet[i]] = i;
36932
36933  
vendor: 236 bytes, lines 36933-36941
36933// node_modules/engine.io-client/build/esm/contrib/has-cors.js
36934  var value = false;
36935  try {
36936    value = typeof XMLHttpRequest !== "undefined" && "withCredentials" in new XMLHttpRequest();
36937  } catch (err) {
36938  }
36939  var hasCORS = value;
36940
36941  
vendor: 495 bytes, lines 36941-36960
36941// node_modules/engine.io-client/build/esm/transports/xmlhttprequest.browser.js
36942  function XHR(opts) {
36943    const xdomain = opts.xdomain;
36944    try {
36945      if ("undefined" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {
36946        return new XMLHttpRequest();
36947      }
36948    } catch (e) {
36949    }
36950    if (!xdomain) {
36951      try {
36952        return new globalThisShim[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP");
36953      } catch (e) {
36954      }
36955    }
36956  }
36957  function createCookieJar() {
36958  }
36959
36960  
vendor: 7,401 bytes, lines 36960-37218
36960// node_modules/engine.io-client/build/esm/transports/polling.js
36961  function empty() {
36962  }
36963  var hasXHR2 = function() {
36964    const xhr = new XHR({
36965      xdomain: false
36966    });
36967    return null != xhr.responseType;
36968  }();
36969  var Polling = class extends Transport {
36970    constructor(opts) {
36971      super(opts);
36972      this.polling = false;
36973      if (typeof location !== "undefined") {
36974        const isSSL = "https:" === location.protocol;
36975        let port = location.port;
36976        if (!port) {
36977          port = isSSL ? "443" : "80";
36978        }
36979        this.xd = typeof location !== "undefined" && opts.hostname !== location.hostname || port !== opts.port;
36980      }
36981      const forceBase64 = opts && opts.forceBase64;
36982      this.supportsBinary = hasXHR2 && !forceBase64;
36983      if (this.opts.withCredentials) {
36984        this.cookieJar = createCookieJar();
36985      }
36986    }
36987    get name() {
36988      return "polling";
36989    }
36990    doOpen() {
36991      this.poll();
36992    }
36993    pause(onPause) {
36994      this.readyState = "pausing";
36995      const pause = () => {
36996        this.readyState = "paused";
36997        onPause();
36998      };
36999      if (this.polling || !this.writable) {
37000        let total = 0;
37001        if (this.polling) {
37002          total++;
37003          this.once("pollComplete", function() {
37004            --total || pause();
37005          });
37006        }
37007        if (!this.writable) {
37008          total++;
37009          this.once("drain", function() {
37010            --total || pause();
37011          });
37012        }
37013      } else {
37014        pause();
37015      }
37016    }
37017    poll() {
37018      this.polling = true;
37019      this.doPoll();
37020      this.emitReserved("poll");
37021    }
37022    onData(data) {
37023      const callback = (packet) => {
37024        if ("opening" === this.readyState && packet.type === "open") {
37025          this.onOpen();
37026        }
37027        if ("close" === packet.type) {
37028          this.onClose({ description: "transport closed by the server" });
37029          return false;
37030        }
37031        this.onPacket(packet);
37032      };
37033      decodePayload(data, this.socket.binaryType).forEach(callback);
37034      if ("closed" !== this.readyState) {
37035        this.polling = false;
37036        this.emitReserved("pollComplete");
37037        if ("open" === this.readyState) {
37038          this.poll();
37039        } else {
37040        }
37041      }
37042    }
37043    doClose() {
37044      const close = () => {
37045        this.write([{ type: "close" }]);
37046      };
37047      if ("open" === this.readyState) {
37048        close();
37049      } else {
37050        this.once("open", close);
37051      }
37052    }
37053    write(packets) {
37054      this.writable = false;
37055      encodePayload(packets, (data) => {
37056        this.doWrite(data, () => {
37057          this.writable = true;
37058          this.emitReserved("drain");
37059        });
37060      });
37061    }
37062    uri() {
37063      const schema = this.opts.secure ? "https" : "http";
37064      const query = this.query || {};
37065      if (false !== this.opts.timestampRequests) {
37066        query[this.opts.timestampParam] = yeast();
37067      }
37068      if (!this.supportsBinary && !query.sid) {
37069        query.b64 = 1;
37070      }
37071      return this.createUri(schema, query);
37072    }
37073    request(opts = {}) {
37074      Object.assign(opts, { xd: this.xd, cookieJar: this.cookieJar }, this.opts);
37075      return new Request(this.uri(), opts);
37076    }
37077    doWrite(data, fn) {
37078      const req = this.request({
37079        method: "POST",
37080        data
37081      });
37082      req.on("success", fn);
37083      req.on("error", (xhrStatus, context) => {
37084        this.onError("xhr post error", xhrStatus, context);
37085      });
37086    }
37087    doPoll() {
37088      const req = this.request();
37089      req.on("data", this.onData.bind(this));
37090      req.on("error", (xhrStatus, context) => {
37091        this.onError("xhr poll error", xhrStatus, context);
37092      });
37093      this.pollXhr = req;
37094    }
37095  };
37096  var Request = class extends Emitter {
37097    constructor(uri, opts) {
37098      super();
37099      installTimerFunctions(this, opts);
37100      this.opts = opts;
37101      this.method = opts.method || "GET";
37102      this.uri = uri;
37103      this.data = void 0 !== opts.data ? opts.data : null;
37104      this.create();
37105    }
37106    create() {
37107      var _a;
37108      const opts = pick(this.opts, "agent", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "autoUnref");
37109      opts.xdomain = !!this.opts.xd;
37110      const xhr = this.xhr = new XHR(opts);
37111      try {
37112        xhr.open(this.method, this.uri, true);
37113        try {
37114          if (this.opts.extraHeaders) {
37115            xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);
37116            for (let i2 in this.opts.extraHeaders) {
37117              if (this.opts.extraHeaders.hasOwnProperty(i2)) {
37118                xhr.setRequestHeader(i2, this.opts.extraHeaders[i2]);
37119              }
37120            }
37121          }
37122        } catch (e) {
37123        }
37124        if ("POST" === this.method) {
37125          try {
37126            xhr.setRequestHeader("Content-type", "text/plain;charset=UTF-8");
37127          } catch (e) {
37128          }
37129        }
37130        try {
37131          xhr.setRequestHeader("Accept", "*/*");
37132        } catch (e) {
37133        }
37134        (_a = this.opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);
37135        if ("withCredentials" in xhr) {
37136          xhr.withCredentials = this.opts.withCredentials;
37137        }
37138        if (this.opts.requestTimeout) {
37139          xhr.timeout = this.opts.requestTimeout;
37140        }
37141        xhr.onreadystatechange = () => {
37142          var _a2;
37143          if (xhr.readyState === 3) {
37144            (_a2 = this.opts.cookieJar) === null || _a2 === void 0 ? void 0 : _a2.parseCookies(xhr);
37145          }
37146          if (4 !== xhr.readyState)
37147            return;
37148          if (200 === xhr.status || 1223 === xhr.status) {
37149            this.onLoad();
37150          } else {
37151            this.setTimeoutFn(() => {
37152              this.onError(typeof xhr.status === "number" ? xhr.status : 0);
37153            }, 0);
37154          }
37155        };
37156        xhr.send(this.data);
37157      } catch (e) {
37158        this.setTimeoutFn(() => {
37159          this.onError(e);
37160        }, 0);
37161        return;
37162      }
37163      if (typeof document !== "undefined") {
37164        this.index = Request.requestsCount++;
37165        Request.requests[this.index] = this;
37166      }
37167    }
37168    onError(err) {
37169      this.emitReserved("error", err, this.xhr);
37170      this.cleanup(true);
37171    }
37172    cleanup(fromError) {
37173      if ("undefined" === typeof this.xhr || null === this.xhr) {
37174        return;
37175      }
37176      this.xhr.onreadystatechange = empty;
37177      if (fromError) {
37178        try {
37179          this.xhr.abort();
37180        } catch (e) {
37181        }
37182      }
37183      if (typeof document !== "undefined") {
37184        delete Request.requests[this.index];
37185      }
37186      this.xhr = null;
37187    }
37188    onLoad() {
37189      const data = this.xhr.responseText;
37190      if (data !== null) {
37191        this.emitReserved("data", data);
37192        this.emitReserved("success");
37193        this.cleanup();
37194      }
37195    }
37196    abort() {
37197      this.cleanup();
37198    }
37199  };
37200  Request.requestsCount = 0;
37201  Request.requests = {};
37202  if (typeof document !== "undefined") {
37203    if (typeof attachEvent === "function") {
37204      attachEvent("onunload", unloadHandler);
37205    } else if (typeof addEventListener === "function") {
37206      const terminationEvent = "onpagehide" in globalThisShim ? "pagehide" : "unload";
37207      addEventListener(terminationEvent, unloadHandler, false);
37208    }
37209  }
37210  function unloadHandler() {
37211    for (let i2 in Request.requests) {
37212      if (Request.requests.hasOwnProperty(i2)) {
37213        Request.requests[i2].abort();
37214      }
37215    }
37216  }
37217
37218  
vendor: 533 bytes, lines 37218-37231
37218// node_modules/engine.io-client/build/esm/transports/websocket-constructor.browser.js
37219  var nextTick = (() => {
37220    const isPromiseAvailable = typeof Promise === "function" && typeof Promise.resolve === "function";
37221    if (isPromiseAvailable) {
37222      return (cb) => Promise.resolve().then(cb);
37223    } else {
37224      return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);
37225    }
37226  })();
37227  var WebSocket = globalThisShim.WebSocket || globalThisShim.MozWebSocket;
37228  var usingBrowserWebSocket = true;
37229  var defaultBinaryType = "arraybuffer";
37230
37231  
vendor: 3,284 bytes, lines 37231-37330
37231// node_modules/engine.io-client/build/esm/transports/websocket.js
37232  var isReactNative = typeof navigator !== "undefined" && typeof navigator.product === "string" && navigator.product.toLowerCase() === "reactnative";
37233  var WS = class extends Transport {
37234    constructor(opts) {
37235      super(opts);
37236      this.supportsBinary = !opts.forceBase64;
37237    }
37238    get name() {
37239      return "websocket";
37240    }
37241    doOpen() {
37242      if (!this.check()) {
37243        return;
37244      }
37245      const uri = this.uri();
37246      const protocols = this.opts.protocols;
37247      const opts = isReactNative ? {} : pick(this.opts, "agent", "perMessageDeflate", "pfx", "key", "passphrase", "cert", "ca", "ciphers", "rejectUnauthorized", "localAddress", "protocolVersion", "origin", "maxPayload", "family", "checkServerIdentity");
37248      if (this.opts.extraHeaders) {
37249        opts.headers = this.opts.extraHeaders;
37250      }
37251      try {
37252        this.ws = usingBrowserWebSocket && !isReactNative ? protocols ? new WebSocket(uri, protocols) : new WebSocket(uri) : new WebSocket(uri, protocols, opts);
37253      } catch (err) {
37254        return this.emitReserved("error", err);
37255      }
37256      this.ws.binaryType = this.socket.binaryType;
37257      this.addEventListeners();
37258    }
37259    addEventListeners() {
37260      this.ws.onopen = () => {
37261        if (this.opts.autoUnref) {
37262          this.ws._socket.unref();
37263        }
37264        this.onOpen();
37265      };
37266      this.ws.onclose = (closeEvent) => this.onClose({
37267        description: "websocket connection closed",
37268        context: closeEvent
37269      });
37270      this.ws.onmessage = (ev) => this.onData(ev.data);
37271      this.ws.onerror = (e) => this.onError("websocket error", e);
37272    }
37273    write(packets) {
37274      this.writable = false;
37275      for (let i2 = 0; i2 < packets.length; i2++) {
37276        const packet = packets[i2];
37277        const lastPacket = i2 === packets.length - 1;
37278        encodePacket(packet, this.supportsBinary, (data) => {
37279          const opts = {};
37280          if (!usingBrowserWebSocket) {
37281            if (packet.options) {
37282              opts.compress = packet.options.compress;
37283            }
37284            if (this.opts.perMessageDeflate) {
37285              const len = "string" === typeof data ? Buffer.byteLength(data) : data.length;
37286              if (len < this.opts.perMessageDeflate.threshold) {
37287                opts.compress = false;
37288              }
37289            }
37290          }
37291          try {
37292            if (usingBrowserWebSocket) {
37293              this.ws.send(data);
37294            } else {
37295              this.ws.send(data, opts);
37296            }
37297          } catch (e) {
37298          }
37299          if (lastPacket) {
37300            nextTick(() => {
37301              this.writable = true;
37302              this.emitReserved("drain");
37303            }, this.setTimeoutFn);
37304          }
37305        });
37306      }
37307    }
37308    doClose() {
37309      if (typeof this.ws !== "undefined") {
37310        this.ws.close();
37311        this.ws = null;
37312      }
37313    }
37314    uri() {
37315      const schema = this.opts.secure ? "wss" : "ws";
37316      const query = this.query || {};
37317      if (this.opts.timestampRequests) {
37318        query[this.opts.timestampParam] = yeast();
37319      }
37320      if (!this.supportsBinary) {
37321        query.b64 = 1;
37322      }
37323      return this.createUri(schema, query);
37324    }
37325    check() {
37326      return !!WebSocket;
37327    }
37328  };
37329
37330  
vendor: 2,079 bytes, lines 37330-37392
37330// node_modules/engine.io-client/build/esm/transports/webtransport.js
37331  var WT = class extends Transport {
37332    get name() {
37333      return "webtransport";
37334    }
37335    doOpen() {
37336      if (typeof WebTransport !== "function") {
37337        return;
37338      }
37339      this.transport = new WebTransport(this.createUri("https"), this.opts.transportOptions[this.name]);
37340      this.transport.closed.then(() => {
37341        this.onClose();
37342      }).catch((err) => {
37343        this.onError("webtransport error", err);
37344      });
37345      this.transport.ready.then(() => {
37346        this.transport.createBidirectionalStream().then((stream) => {
37347          const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);
37348          const reader = stream.readable.pipeThrough(decoderStream).getReader();
37349          const encoderStream = createPacketEncoderStream();
37350          encoderStream.readable.pipeTo(stream.writable);
37351          this.writer = encoderStream.writable.getWriter();
37352          const read = () => {
37353            reader.read().then(({ done, value: value2 }) => {
37354              if (done) {
37355                return;
37356              }
37357              this.onPacket(value2);
37358              read();
37359            }).catch((err) => {
37360            });
37361          };
37362          read();
37363          const packet = { type: "open" };
37364          if (this.query.sid) {
37365            packet.data = `{"sid":"${this.query.sid}"}`;
37366          }
37367          this.writer.write(packet).then(() => this.onOpen());
37368        });
37369      });
37370    }
37371    write(packets) {
37372      this.writable = false;
37373      for (let i2 = 0; i2 < packets.length; i2++) {
37374        const packet = packets[i2];
37375        const lastPacket = i2 === packets.length - 1;
37376        this.writer.write(packet).then(() => {
37377          if (lastPacket) {
37378            nextTick(() => {
37379              this.writable = true;
37380              this.emitReserved("drain");
37381            }, this.setTimeoutFn);
37382          }
37383        });
37384      }
37385    }
37386    doClose() {
37387      var _a;
37388      (_a = this.transport) === null || _a === void 0 ? void 0 : _a.close();
37389    }
37390  };
37391
37392  
vendor: 154 bytes, lines 37392-37399
37392// node_modules/engine.io-client/build/esm/transports/index.js
37393  var transports = {
37394    websocket: WS,
37395    webtransport: WT,
37396    polling: Polling
37397  };
37398
37399  
vendor: 1,818 bytes, lines 37399-37459
37399// node_modules/engine.io-client/build/esm/contrib/parseuri.js
37400  var re = /^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/;
37401  var parts = [
37402    "source",
37403    "protocol",
37404    "authority",
37405    "userInfo",
37406    "user",
37407    "password",
37408    "host",
37409    "port",
37410    "relative",
37411    "path",
37412    "directory",
37413    "file",
37414    "query",
37415    "anchor"
37416  ];
37417  function parse(str) {
37418    if (str.length > 2e3) {
37419      throw "URI too long";
37420    }
37421    const src = str, b = str.indexOf("["), e = str.indexOf("]");
37422    if (b != -1 && e != -1) {
37423      str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ";") + str.substring(e, str.length);
37424    }
37425    let m = re.exec(str || ""), uri = {}, i2 = 14;
37426    while (i2--) {
37427      uri[parts[i2]] = m[i2] || "";
37428    }
37429    if (b != -1 && e != -1) {
37430      uri.source = src;
37431      uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ":");
37432      uri.authority = uri.authority.replace("[", "").replace("]", "").replace(/;/g, ":");
37433      uri.ipv6uri = true;
37434    }
37435    uri.pathNames = pathNames(uri, uri["path"]);
37436    uri.queryKey = queryKey(uri, uri["query"]);
37437    return uri;
37438  }
37439  function pathNames(obj, path) {
37440    const regx = /\/{2,9}/g, names = path.replace(regx, "/").split("/");
37441    if (path.slice(0, 1) == "/" || path.length === 0) {
37442      names.splice(0, 1);
37443    }
37444    if (path.slice(-1) == "/") {
37445      names.splice(names.length - 1, 1);
37446    }
37447    return names;
37448  }
37449  function queryKey(uri, query) {
37450    const data = {};
37451    query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function($0, $1, $2) {
37452      if ($1) {
37453        data[$1] = $2;
37454      }
37455    });
37456    return data;
37457  }
37458
37459  
vendor: 13,184 bytes, lines 37459-37864
37459// node_modules/engine.io-client/build/esm/socket.js
37460  var Socket = class extends Emitter {
37461    constructor(uri, opts = {}) {
37462      super();
37463      this.binaryType = defaultBinaryType;
37464      this.writeBuffer = [];
37465      if (uri && "object" === typeof uri) {
37466        opts = uri;
37467        uri = null;
37468      }
37469      if (uri) {
37470        uri = parse(uri);
37471        opts.hostname = uri.host;
37472        opts.secure = uri.protocol === "https" || uri.protocol === "wss";
37473        opts.port = uri.port;
37474        if (uri.query)
37475          opts.query = uri.query;
37476      } else if (opts.host) {
37477        opts.hostname = parse(opts.host).host;
37478      }
37479      installTimerFunctions(this, opts);
37480      this.secure = null != opts.secure ? opts.secure : typeof location !== "undefined" && "https:" === location.protocol;
37481      if (opts.hostname && !opts.port) {
37482        opts.port = this.secure ? "443" : "80";
37483      }
37484      this.hostname = opts.hostname || (typeof location !== "undefined" ? location.hostname : "localhost");
37485      this.port = opts.port || (typeof location !== "undefined" && location.port ? location.port : this.secure ? "443" : "80");
37486      this.transports = opts.transports || [
37487        "polling",
37488        "websocket",
37489        "webtransport"
37490      ];
37491      this.writeBuffer = [];
37492      this.prevBufferLen = 0;
37493      this.opts = Object.assign({
37494        path: "/engine.io",
37495        agent: false,
37496        withCredentials: false,
37497        upgrade: true,
37498        timestampParam: "t",
37499        rememberUpgrade: false,
37500        addTrailingSlash: true,
37501        rejectUnauthorized: true,
37502        perMessageDeflate: {
37503          threshold: 1024
37504        },
37505        transportOptions: {},
37506        closeOnBeforeunload: false
37507      }, opts);
37508      this.opts.path = this.opts.path.replace(/\/$/, "") + (this.opts.addTrailingSlash ? "/" : "");
37509      if (typeof this.opts.query === "string") {
37510        this.opts.query = decode2(this.opts.query);
37511      }
37512      this.id = null;
37513      this.upgrades = null;
37514      this.pingInterval = null;
37515      this.pingTimeout = null;
37516      this.pingTimeoutTimer = null;
37517      if (typeof addEventListener === "function") {
37518        if (this.opts.closeOnBeforeunload) {
37519          this.beforeunloadEventListener = () => {
37520            if (this.transport) {
37521              this.transport.removeAllListeners();
37522              this.transport.close();
37523            }
37524          };
37525          addEventListener("beforeunload", this.beforeunloadEventListener, false);
37526        }
37527        if (this.hostname !== "localhost") {
37528          this.offlineEventListener = () => {
37529            this.onClose("transport close", {
37530              description: "network connection lost"
37531            });
37532          };
37533          addEventListener("offline", this.offlineEventListener, false);
37534        }
37535      }
37536      this.open();
37537    }
37538    createTransport(name2) {
37539      const query = Object.assign({}, this.opts.query);
37540      query.EIO = protocol;
37541      query.transport = name2;
37542      if (this.id)
37543        query.sid = this.id;
37544      const opts = Object.assign({}, this.opts, {
37545        query,
37546        socket: this,
37547        hostname: this.hostname,
37548        secure: this.secure,
37549        port: this.port
37550      }, this.opts.transportOptions[name2]);
37551      return new transports[name2](opts);
37552    }
37553    open() {
37554      let transport;
37555      if (this.opts.rememberUpgrade && Socket.priorWebsocketSuccess && this.transports.indexOf("websocket") !== -1) {
37556        transport = "websocket";
37557      } else if (0 === this.transports.length) {
37558        this.setTimeoutFn(() => {
37559          this.emitReserved("error", "No transports available");
37560        }, 0);
37561        return;
37562      } else {
37563        transport = this.transports[0];
37564      }
37565      this.readyState = "opening";
37566      try {
37567        transport = this.createTransport(transport);
37568      } catch (e) {
37569        this.transports.shift();
37570        this.open();
37571        return;
37572      }
37573      transport.open();
37574      this.setTransport(transport);
37575    }
37576    setTransport(transport) {
37577      if (this.transport) {
37578        this.transport.removeAllListeners();
37579      }
37580      this.transport = transport;
37581      transport.on("drain", this.onDrain.bind(this)).on("packet", this.onPacket.bind(this)).on("error", this.onError.bind(this)).on("close", (reason) => this.onClose("transport close", reason));
37582    }
37583    probe(name2) {
37584      let transport = this.createTransport(name2);
37585      let failed = false;
37586      Socket.priorWebsocketSuccess = false;
37587      const onTransportOpen = () => {
37588        if (failed)
37589          return;
37590        transport.send([{ type: "ping", data: "probe" }]);
37591        transport.once("packet", (msg) => {
37592          if (failed)
37593            return;
37594          if ("pong" === msg.type && "probe" === msg.data) {
37595            this.upgrading = true;
37596            this.emitReserved("upgrading", transport);
37597            if (!transport)
37598              return;
37599            Socket.priorWebsocketSuccess = "websocket" === transport.name;
37600            this.transport.pause(() => {
37601              if (failed)
37602                return;
37603              if ("closed" === this.readyState)
37604                return;
37605              cleanup();
37606              this.setTransport(transport);
37607              transport.send([{ type: "upgrade" }]);
37608              this.emitReserved("upgrade", transport);
37609              transport = null;
37610              this.upgrading = false;
37611              this.flush();
37612            });
37613          } else {
37614            const err = new Error("probe error");
37615            err.transport = transport.name;
37616            this.emitReserved("upgradeError", err);
37617          }
37618        });
37619      };
37620      function freezeTransport() {
37621        if (failed)
37622          return;
37623        failed = true;
37624        cleanup();
37625        transport.close();
37626        transport = null;
37627      }
37628      const onerror = (err) => {
37629        const error = new Error("probe error: " + err);
37630        error.transport = transport.name;
37631        freezeTransport();
37632        this.emitReserved("upgradeError", error);
37633      };
37634      function onTransportClose() {
37635        onerror("transport closed");
37636      }
37637      function onclose() {
37638        onerror("socket closed");
37639      }
37640      function onupgrade(to) {
37641        if (transport && to.name !== transport.name) {
37642          freezeTransport();
37643        }
37644      }
37645      const cleanup = () => {
37646        transport.removeListener("open", onTransportOpen);
37647        transport.removeListener("error", onerror);
37648        transport.removeListener("close", onTransportClose);
37649        this.off("close", onclose);
37650        this.off("upgrading", onupgrade);
37651      };
37652      transport.once("open", onTransportOpen);
37653      transport.once("error", onerror);
37654      transport.once("close", onTransportClose);
37655      this.once("close", onclose);
37656      this.once("upgrading", onupgrade);
37657      if (this.upgrades.indexOf("webtransport") !== -1 && name2 !== "webtransport") {
37658        this.setTimeoutFn(() => {
37659          if (!failed) {
37660            transport.open();
37661          }
37662        }, 200);
37663      } else {
37664        transport.open();
37665      }
37666    }
37667    onOpen() {
37668      this.readyState = "open";
37669      Socket.priorWebsocketSuccess = "websocket" === this.transport.name;
37670      this.emitReserved("open");
37671      this.flush();
37672      if ("open" === this.readyState && this.opts.upgrade) {
37673        let i2 = 0;
37674        const l = this.upgrades.length;
37675        for (; i2 < l; i2++) {
37676          this.probe(this.upgrades[i2]);
37677        }
37678      }
37679    }
37680    onPacket(packet) {
37681      if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
37682        this.emitReserved("packet", packet);
37683        this.emitReserved("heartbeat");
37684        this.resetPingTimeout();
37685        switch (packet.type) {
37686          case "open":
37687            this.onHandshake(JSON.parse(packet.data));
37688            break;
37689          case "ping":
37690            this.sendPacket("pong");
37691            this.emitReserved("ping");
37692            this.emitReserved("pong");
37693            break;
37694          case "error":
37695            const err = new Error("server error");
37696            err.code = packet.data;
37697            this.onError(err);
37698            break;
37699          case "message":
37700            this.emitReserved("data", packet.data);
37701            this.emitReserved("message", packet.data);
37702            break;
37703        }
37704      } else {
37705      }
37706    }
37707    onHandshake(data) {
37708      this.emitReserved("handshake", data);
37709      this.id = data.sid;
37710      this.transport.query.sid = data.sid;
37711      this.upgrades = this.filterUpgrades(data.upgrades);
37712      this.pingInterval = data.pingInterval;
37713      this.pingTimeout = data.pingTimeout;
37714      this.maxPayload = data.maxPayload;
37715      this.onOpen();
37716      if ("closed" === this.readyState)
37717        return;
37718      this.resetPingTimeout();
37719    }
37720    resetPingTimeout() {
37721      this.clearTimeoutFn(this.pingTimeoutTimer);
37722      this.pingTimeoutTimer = this.setTimeoutFn(() => {
37723        this.onClose("ping timeout");
37724      }, this.pingInterval + this.pingTimeout);
37725      if (this.opts.autoUnref) {
37726        this.pingTimeoutTimer.unref();
37727      }
37728    }
37729    onDrain() {
37730      this.writeBuffer.splice(0, this.prevBufferLen);
37731      this.prevBufferLen = 0;
37732      if (0 === this.writeBuffer.length) {
37733        this.emitReserved("drain");
37734      } else {
37735        this.flush();
37736      }
37737    }
37738    flush() {
37739      if ("closed" !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length) {
37740        const packets = this.getWritablePackets();
37741        this.transport.send(packets);
37742        this.prevBufferLen = packets.length;
37743        this.emitReserved("flush");
37744      }
37745    }
37746    getWritablePackets() {
37747      const shouldCheckPayloadSize = this.maxPayload && this.transport.name === "polling" && this.writeBuffer.length > 1;
37748      if (!shouldCheckPayloadSize) {
37749        return this.writeBuffer;
37750      }
37751      let payloadSize = 1;
37752      for (let i2 = 0; i2 < this.writeBuffer.length; i2++) {
37753        const data = this.writeBuffer[i2].data;
37754        if (data) {
37755          payloadSize += byteLength(data);
37756        }
37757        if (i2 > 0 && payloadSize > this.maxPayload) {
37758          return this.writeBuffer.slice(0, i2);
37759        }
37760        payloadSize += 2;
37761      }
37762      return this.writeBuffer;
37763    }
37764    write(msg, options, fn) {
37765      this.sendPacket("message", msg, options, fn);
37766      return this;
37767    }
37768    send(msg, options, fn) {
37769      this.sendPacket("message", msg, options, fn);
37770      return this;
37771    }
37772    sendPacket(type2, data, options, fn) {
37773      if ("function" === typeof data) {
37774        fn = data;
37775        data = void 0;
37776      }
37777      if ("function" === typeof options) {
37778        fn = options;
37779        options = null;
37780      }
37781      if ("closing" === this.readyState || "closed" === this.readyState) {
37782        return;
37783      }
37784      options = options || {};
37785      options.compress = false !== options.compress;
37786      const packet = {
37787        type: type2,
37788        data,
37789        options
37790      };
37791      this.emitReserved("packetCreate", packet);
37792      this.writeBuffer.push(packet);
37793      if (fn)
37794        this.once("flush", fn);
37795      this.flush();
37796    }
37797    close() {
37798      const close = () => {
37799        this.onClose("forced close");
37800        this.transport.close();
37801      };
37802      const cleanupAndClose = () => {
37803        this.off("upgrade", cleanupAndClose);
37804        this.off("upgradeError", cleanupAndClose);
37805        close();
37806      };
37807      const waitForUpgrade = () => {
37808        this.once("upgrade", cleanupAndClose);
37809        this.once("upgradeError", cleanupAndClose);
37810      };
37811      if ("opening" === this.readyState || "open" === this.readyState) {
37812        this.readyState = "closing";
37813        if (this.writeBuffer.length) {
37814          this.once("drain", () => {
37815            if (this.upgrading) {
37816              waitForUpgrade();
37817            } else {
37818              close();
37819            }
37820          });
37821        } else if (this.upgrading) {
37822          waitForUpgrade();
37823        } else {
37824          close();
37825        }
37826      }
37827      return this;
37828    }
37829    onError(err) {
37830      Socket.priorWebsocketSuccess = false;
37831      this.emitReserved("error", err);
37832      this.onClose("transport error", err);
37833    }
37834    onClose(reason, description) {
37835      if ("opening" === this.readyState || "open" === this.readyState || "closing" === this.readyState) {
37836        this.clearTimeoutFn(this.pingTimeoutTimer);
37837        this.transport.removeAllListeners("close");
37838        this.transport.close();
37839        this.transport.removeAllListeners();
37840        if (typeof removeEventListener === "function") {
37841          removeEventListener("beforeunload", this.beforeunloadEventListener, false);
37842          removeEventListener("offline", this.offlineEventListener, false);
37843        }
37844        this.readyState = "closed";
37845        this.id = null;
37846        this.emitReserved("close", reason, description);
37847        this.writeBuffer = [];
37848        this.prevBufferLen = 0;
37849      }
37850    }
37851    filterUpgrades(upgrades) {
37852      const filteredUpgrades = [];
37853      let i2 = 0;
37854      const j = upgrades.length;
37855      for (; i2 < j; i2++) {
37856        if (~this.transports.indexOf(upgrades[i2]))
37857          filteredUpgrades.push(upgrades[i2]);
37858      }
37859      return filteredUpgrades;
37860    }
37861  };
37862  Socket.protocol = protocol;
37863
37864  
vendor: 90 bytes, lines 37864-37867
37864// node_modules/engine.io-client/build/esm/index.js
37865  var protocol2 = Socket.protocol;
37866
37867  
vendor: 1,184 bytes, lines 37867-37905
37867// node_modules/socket.io-client/build/esm/url.js
37868  function url(uri, path = "", loc) {
37869    let obj = uri;
37870    loc = loc || typeof location !== "undefined" && location;
37871    if (null == uri)
37872      uri = loc.protocol + "//" + loc.host;
37873    if (typeof uri === "string") {
37874      if ("/" === uri.charAt(0)) {
37875        if ("/" === uri.charAt(1)) {
37876          uri = loc.protocol + uri;
37877        } else {
37878          uri = loc.host + uri;
37879        }
37880      }
37881      if (!/^(https?|wss?):\/\//.test(uri)) {
37882        if ("undefined" !== typeof loc) {
37883          uri = loc.protocol + "//" + uri;
37884        } else {
37885          uri = "https://" + uri;
37886        }
37887      }
37888      obj = parse(uri);
37889    }
37890    if (!obj.port) {
37891      if (/^(http|ws)$/.test(obj.protocol)) {
37892        obj.port = "80";
37893      } else if (/^(http|ws)s$/.test(obj.protocol)) {
37894        obj.port = "443";
37895      }
37896    }
37897    obj.path = obj.path || "/";
37898    const ipv6 = obj.host.indexOf(":") !== -1;
37899    const host = ipv6 ? "[" + obj.host + "]" : obj.host;
37900    obj.id = obj.protocol + "://" + host + ":" + obj.port + path;
37901    obj.href = obj.protocol + "://" + host + (loc && loc.port === obj.port ? "" : ":" + obj.port);
37902    return obj;
37903  }
37904
37905  
vendor: 231 bytes, lines 37905-37914
37905// node_modules/socket.io-parser/build/esm/index.js
37906  var esm_exports = {};
37907  __export(esm_exports, {
37908    Decoder: () => Decoder,
37909    Encoder: () => Encoder,
37910    PacketType: () => PacketType,
37911    protocol: () => protocol3
37912  });
37913
37914  
vendor: 1,430 bytes, lines 37914-37951
37914// node_modules/socket.io-parser/build/esm/is-binary.js
37915  var withNativeArrayBuffer3 = typeof ArrayBuffer === "function";
37916  var isView2 = (obj) => {
37917    return typeof ArrayBuffer.isView === "function" ? ArrayBuffer.isView(obj) : obj.buffer instanceof ArrayBuffer;
37918  };
37919  var toString = Object.prototype.toString;
37920  var withNativeBlob2 = typeof Blob === "function" || typeof Blob !== "undefined" && toString.call(Blob) === "[object BlobConstructor]";
37921  var withNativeFile = typeof File === "function" || typeof File !== "undefined" && toString.call(File) === "[object FileConstructor]";
37922  function isBinary(obj) {
37923    return withNativeArrayBuffer3 && (obj instanceof ArrayBuffer || isView2(obj)) || withNativeBlob2 && obj instanceof Blob || withNativeFile && obj instanceof File;
37924  }
37925  function hasBinary(obj, toJSON) {
37926    if (!obj || typeof obj !== "object") {
37927      return false;
37928    }
37929    if (Array.isArray(obj)) {
37930      for (let i2 = 0, l = obj.length; i2 < l; i2++) {
37931        if (hasBinary(obj[i2])) {
37932          return true;
37933        }
37934      }
37935      return false;
37936    }
37937    if (isBinary(obj)) {
37938      return true;
37939    }
37940    if (obj.toJSON && typeof obj.toJSON === "function" && arguments.length === 1) {
37941      return hasBinary(obj.toJSON(), true);
37942    }
37943    for (const key in obj) {
37944      if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {
37945        return true;
37946      }
37947    }
37948    return false;
37949  }
37950
37951  
vendor: 2,016 bytes, lines 37951-38013
37951// node_modules/socket.io-parser/build/esm/binary.js
37952  function deconstructPacket(packet) {
37953    const buffers = [];
37954    const packetData = packet.data;
37955    const pack = packet;
37956    pack.data = _deconstructPacket(packetData, buffers);
37957    pack.attachments = buffers.length;
37958    return { packet: pack, buffers };
37959  }
37960  function _deconstructPacket(data, buffers) {
37961    if (!data)
37962      return data;
37963    if (isBinary(data)) {
37964      const placeholder = { _placeholder: true, num: buffers.length };
37965      buffers.push(data);
37966      return placeholder;
37967    } else if (Array.isArray(data)) {
37968      const newData = new Array(data.length);
37969      for (let i2 = 0; i2 < data.length; i2++) {
37970        newData[i2] = _deconstructPacket(data[i2], buffers);
37971      }
37972      return newData;
37973    } else if (typeof data === "object" && !(data instanceof Date)) {
37974      const newData = {};
37975      for (const key in data) {
37976        if (Object.prototype.hasOwnProperty.call(data, key)) {
37977          newData[key] = _deconstructPacket(data[key], buffers);
37978        }
37979      }
37980      return newData;
37981    }
37982    return data;
37983  }
37984  function reconstructPacket(packet, buffers) {
37985    packet.data = _reconstructPacket(packet.data, buffers);
37986    delete packet.attachments;
37987    return packet;
37988  }
37989  function _reconstructPacket(data, buffers) {
37990    if (!data)
37991      return data;
37992    if (data && data._placeholder === true) {
37993      const isIndexValid = typeof data.num === "number" && data.num >= 0 && data.num < buffers.length;
37994      if (isIndexValid) {
37995        return buffers[data.num];
37996      } else {
37997        throw new Error("illegal attachments");
37998      }
37999    } else if (Array.isArray(data)) {
38000      for (let i2 = 0; i2 < data.length; i2++) {
38001        data[i2] = _reconstructPacket(data[i2], buffers);
38002      }
38003    } else if (typeof data === "object") {
38004      for (const key in data) {
38005        if (Object.prototype.hasOwnProperty.call(data, key)) {
38006          data[key] = _reconstructPacket(data[key], buffers);
38007        }
38008      }
38009    }
38010    return data;
38011  }
38012
38013  
vendor: 6,391 bytes, lines 38013-38219
38013// node_modules/socket.io-parser/build/esm/index.js
38014  var RESERVED_EVENTS = [
38015    "connect",
38016    "connect_error",
38017    "disconnect",
38018    "disconnecting",
38019    "newListener",
38020    "removeListener"
38021  ];
38022  var protocol3 = 5;
38023  var PacketType;
38024  (function(PacketType2) {
38025    PacketType2[PacketType2["CONNECT"] = 0] = "CONNECT";
38026    PacketType2[PacketType2["DISCONNECT"] = 1] = "DISCONNECT";
38027    PacketType2[PacketType2["EVENT"] = 2] = "EVENT";
38028    PacketType2[PacketType2["ACK"] = 3] = "ACK";
38029    PacketType2[PacketType2["CONNECT_ERROR"] = 4] = "CONNECT_ERROR";
38030    PacketType2[PacketType2["BINARY_EVENT"] = 5] = "BINARY_EVENT";
38031    PacketType2[PacketType2["BINARY_ACK"] = 6] = "BINARY_ACK";
38032  })(PacketType || (PacketType = {}));
38033  var Encoder = class {
38034    constructor(replacer) {
38035      this.replacer = replacer;
38036    }
38037    encode(obj) {
38038      if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {
38039        if (hasBinary(obj)) {
38040          return this.encodeAsBinary({
38041            type: obj.type === PacketType.EVENT ? PacketType.BINARY_EVENT : PacketType.BINARY_ACK,
38042            nsp: obj.nsp,
38043            data: obj.data,
38044            id: obj.id
38045          });
38046        }
38047      }
38048      return [this.encodeAsString(obj)];
38049    }
38050    encodeAsString(obj) {
38051      let str = "" + obj.type;
38052      if (obj.type === PacketType.BINARY_EVENT || obj.type === PacketType.BINARY_ACK) {
38053        str += obj.attachments + "-";
38054      }
38055      if (obj.nsp && "/" !== obj.nsp) {
38056        str += obj.nsp + ",";
38057      }
38058      if (null != obj.id) {
38059        str += obj.id;
38060      }
38061      if (null != obj.data) {
38062        str += JSON.stringify(obj.data, this.replacer);
38063      }
38064      return str;
38065    }
38066    encodeAsBinary(obj) {
38067      const deconstruction = deconstructPacket(obj);
38068      const pack = this.encodeAsString(deconstruction.packet);
38069      const buffers = deconstruction.buffers;
38070      buffers.unshift(pack);
38071      return buffers;
38072    }
38073  };
38074  function isObject(value2) {
38075    return Object.prototype.toString.call(value2) === "[object Object]";
38076  }
38077  var Decoder = class extends Emitter {
38078    constructor(reviver) {
38079      super();
38080      this.reviver = reviver;
38081    }
38082    add(obj) {
38083      let packet;
38084      if (typeof obj === "string") {
38085        if (this.reconstructor) {
38086          throw new Error("got plaintext data when reconstructing a packet");
38087        }
38088        packet = this.decodeString(obj);
38089        const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;
38090        if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {
38091          packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;
38092          this.reconstructor = new BinaryReconstructor(packet);
38093          if (packet.attachments === 0) {
38094            super.emitReserved("decoded", packet);
38095          }
38096        } else {
38097          super.emitReserved("decoded", packet);
38098        }
38099      } else if (isBinary(obj) || obj.base64) {
38100        if (!this.reconstructor) {
38101          throw new Error("got binary data when not reconstructing a packet");
38102        } else {
38103          packet = this.reconstructor.takeBinaryData(obj);
38104          if (packet) {
38105            this.reconstructor = null;
38106            super.emitReserved("decoded", packet);
38107          }
38108        }
38109      } else {
38110        throw new Error("Unknown type: " + obj);
38111      }
38112    }
38113    decodeString(str) {
38114      let i2 = 0;
38115      const p = {
38116        type: Number(str.charAt(0))
38117      };
38118      if (PacketType[p.type] === void 0) {
38119        throw new Error("unknown packet type " + p.type);
38120      }
38121      if (p.type === PacketType.BINARY_EVENT || p.type === PacketType.BINARY_ACK) {
38122        const start = i2 + 1;
38123        while (str.charAt(++i2) !== "-" && i2 != str.length) {
38124        }
38125        const buf = str.substring(start, i2);
38126        if (buf != Number(buf) || str.charAt(i2) !== "-") {
38127          throw new Error("Illegal attachments");
38128        }
38129        p.attachments = Number(buf);
38130      }
38131      if ("/" === str.charAt(i2 + 1)) {
38132        const start = i2 + 1;
38133        while (++i2) {
38134          const c = str.charAt(i2);
38135          if ("," === c)
38136            break;
38137          if (i2 === str.length)
38138            break;
38139        }
38140        p.nsp = str.substring(start, i2);
38141      } else {
38142        p.nsp = "/";
38143      }
38144      const next = str.charAt(i2 + 1);
38145      if ("" !== next && Number(next) == next) {
38146        const start = i2 + 1;
38147        while (++i2) {
38148          const c = str.charAt(i2);
38149          if (null == c || Number(c) != c) {
38150            --i2;
38151            break;
38152          }
38153          if (i2 === str.length)
38154            break;
38155        }
38156        p.id = Number(str.substring(start, i2 + 1));
38157      }
38158      if (str.charAt(++i2)) {
38159        const payload = this.tryParse(str.substr(i2));
38160        if (Decoder.isPayloadValid(p.type, payload)) {
38161          p.data = payload;
38162        } else {
38163          throw new Error("invalid payload");
38164        }
38165      }
38166      return p;
38167    }
38168    tryParse(str) {
38169      try {
38170        return JSON.parse(str, this.reviver);
38171      } catch (e) {
38172        return false;
38173      }
38174    }
38175    static isPayloadValid(type2, payload) {
38176      switch (type2) {
38177        case PacketType.CONNECT:
38178          return isObject(payload);
38179        case PacketType.DISCONNECT:
38180          return payload === void 0;
38181        case PacketType.CONNECT_ERROR:
38182          return typeof payload === "string" || isObject(payload);
38183        case PacketType.EVENT:
38184        case PacketType.BINARY_EVENT:
38185          return Array.isArray(payload) && (typeof payload[0] === "number" || typeof payload[0] === "string" && RESERVED_EVENTS.indexOf(payload[0]) === -1);
38186        case PacketType.ACK:
38187        case PacketType.BINARY_ACK:
38188          return Array.isArray(payload);
38189      }
38190    }
38191    destroy() {
38192      if (this.reconstructor) {
38193        this.reconstructor.finishedReconstruction();
38194        this.reconstructor = null;
38195      }
38196    }
38197  };
38198  var BinaryReconstructor = class {
38199    constructor(packet) {
38200      this.packet = packet;
38201      this.buffers = [];
38202      this.reconPack = packet;
38203    }
38204    takeBinaryData(binData) {
38205      this.buffers.push(binData);
38206      if (this.buffers.length === this.reconPack.attachments) {
38207        const packet = reconstructPacket(this.reconPack, this.buffers);
38208        this.finishedReconstruction();
38209        return packet;
38210      }
38211      return null;
38212    }
38213    finishedReconstruction() {
38214      this.reconPack = null;
38215      this.buffers = [];
38216    }
38217  };
38218
38219  
vendor: 170 bytes, lines 38219-38227
38219// node_modules/socket.io-client/build/esm/on.js
38220  function on(obj, ev, fn) {
38221    obj.on(ev, fn);
38222    return function subDestroy() {
38223      obj.off(ev, fn);
38224    };
38225  }
38226
38227  
vendor: 11,485 bytes, lines 38227-38637
38227// node_modules/socket.io-client/build/esm/socket.js
38228  var RESERVED_EVENTS2 = Object.freeze({
38229    connect: 1,
38230    connect_error: 1,
38231    disconnect: 1,
38232    disconnecting: 1,
38233    newListener: 1,
38234    removeListener: 1
38235  });
38236  var Socket2 = class extends Emitter {
38237    constructor(io, nsp, opts) {
38238      super();
38239      this.connected = false;
38240      this.recovered = false;
38241      this.receiveBuffer = [];
38242      this.sendBuffer = [];
38243      this._queue = [];
38244      this._queueSeq = 0;
38245      this.ids = 0;
38246      this.acks = {};
38247      this.flags = {};
38248      this.io = io;
38249      this.nsp = nsp;
38250      if (opts && opts.auth) {
38251        this.auth = opts.auth;
38252      }
38253      this._opts = Object.assign({}, opts);
38254      if (this.io._autoConnect)
38255        this.open();
38256    }
38257    get disconnected() {
38258      return !this.connected;
38259    }
38260    subEvents() {
38261      if (this.subs)
38262        return;
38263      const io = this.io;
38264      this.subs = [
38265        on(io, "open", this.onopen.bind(this)),
38266        on(io, "packet", this.onpacket.bind(this)),
38267        on(io, "error", this.onerror.bind(this)),
38268        on(io, "close", this.onclose.bind(this))
38269      ];
38270    }
38271    get active() {
38272      return !!this.subs;
38273    }
38274    connect() {
38275      if (this.connected)
38276        return this;
38277      this.subEvents();
38278      if (!this.io["_reconnecting"])
38279        this.io.open();
38280      if ("open" === this.io._readyState)
38281        this.onopen();
38282      return this;
38283    }
38284    open() {
38285      return this.connect();
38286    }
38287    send(...args) {
38288      args.unshift("message");
38289      this.emit.apply(this, args);
38290      return this;
38291    }
38292    emit(ev, ...args) {
38293      if (RESERVED_EVENTS2.hasOwnProperty(ev)) {
38294        throw new Error('"' + ev.toString() + '" is a reserved event name');
38295      }
38296      args.unshift(ev);
38297      if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {
38298        this._addToQueue(args);
38299        return this;
38300      }
38301      const packet = {
38302        type: PacketType.EVENT,
38303        data: args
38304      };
38305      packet.options = {};
38306      packet.options.compress = this.flags.compress !== false;
38307      if ("function" === typeof args[args.length - 1]) {
38308        const id = this.ids++;
38309        const ack = args.pop();
38310        this._registerAckCallback(id, ack);
38311        packet.id = id;
38312      }
38313      const isTransportWritable = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable;
38314      const discardPacket = this.flags.volatile && (!isTransportWritable || !this.connected);
38315      if (discardPacket) {
38316      } else if (this.connected) {
38317        this.notifyOutgoingListeners(packet);
38318        this.packet(packet);
38319      } else {
38320        this.sendBuffer.push(packet);
38321      }
38322      this.flags = {};
38323      return this;
38324    }
38325    _registerAckCallback(id, ack) {
38326      var _a;
38327      const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;
38328      if (timeout === void 0) {
38329        this.acks[id] = ack;
38330        return;
38331      }
38332      const timer = this.io.setTimeoutFn(() => {
38333        delete this.acks[id];
38334        for (let i2 = 0; i2 < this.sendBuffer.length; i2++) {
38335          if (this.sendBuffer[i2].id === id) {
38336            this.sendBuffer.splice(i2, 1);
38337          }
38338        }
38339        ack.call(this, new Error("operation has timed out"));
38340      }, timeout);
38341      this.acks[id] = (...args) => {
38342        this.io.clearTimeoutFn(timer);
38343        ack.apply(this, [null, ...args]);
38344      };
38345    }
38346    emitWithAck(ev, ...args) {
38347      const withErr = this.flags.timeout !== void 0 || this._opts.ackTimeout !== void 0;
38348      return new Promise((resolve, reject) => {
38349        args.push((arg1, arg2) => {
38350          if (withErr) {
38351            return arg1 ? reject(arg1) : resolve(arg2);
38352          } else {
38353            return resolve(arg1);
38354          }
38355        });
38356        this.emit(ev, ...args);
38357      });
38358    }
38359    _addToQueue(args) {
38360      let ack;
38361      if (typeof args[args.length - 1] === "function") {
38362        ack = args.pop();
38363      }
38364      const packet = {
38365        id: this._queueSeq++,
38366        tryCount: 0,
38367        pending: false,
38368        args,
38369        flags: Object.assign({ fromQueue: true }, this.flags)
38370      };
38371      args.push((err, ...responseArgs) => {
38372        if (packet !== this._queue[0]) {
38373          return;
38374        }
38375        const hasError = err !== null;
38376        if (hasError) {
38377          if (packet.tryCount > this._opts.retries) {
38378            this._queue.shift();
38379            if (ack) {
38380              ack(err);
38381            }
38382          }
38383        } else {
38384          this._queue.shift();
38385          if (ack) {
38386            ack(null, ...responseArgs);
38387          }
38388        }
38389        packet.pending = false;
38390        return this._drainQueue();
38391      });
38392      this._queue.push(packet);
38393      this._drainQueue();
38394    }
38395    _drainQueue(force = false) {
38396      if (!this.connected || this._queue.length === 0) {
38397        return;
38398      }
38399      const packet = this._queue[0];
38400      if (packet.pending && !force) {
38401        return;
38402      }
38403      packet.pending = true;
38404      packet.tryCount++;
38405      this.flags = packet.flags;
38406      this.emit.apply(this, packet.args);
38407    }
38408    packet(packet) {
38409      packet.nsp = this.nsp;
38410      this.io._packet(packet);
38411    }
38412    onopen() {
38413      if (typeof this.auth == "function") {
38414        this.auth((data) => {
38415          this._sendConnectPacket(data);
38416        });
38417      } else {
38418        this._sendConnectPacket(this.auth);
38419      }
38420    }
38421    _sendConnectPacket(data) {
38422      this.packet({
38423        type: PacketType.CONNECT,
38424        data: this._pid ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data) : data
38425      });
38426    }
38427    onerror(err) {
38428      if (!this.connected) {
38429        this.emitReserved("connect_error", err);
38430      }
38431    }
38432    onclose(reason, description) {
38433      this.connected = false;
38434      delete this.id;
38435      this.emitReserved("disconnect", reason, description);
38436    }
38437    onpacket(packet) {
38438      const sameNamespace = packet.nsp === this.nsp;
38439      if (!sameNamespace)
38440        return;
38441      switch (packet.type) {
38442        case PacketType.CONNECT:
38443          if (packet.data && packet.data.sid) {
38444            this.onconnect(packet.data.sid, packet.data.pid);
38445          } else {
38446            this.emitReserved("connect_error", new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));
38447          }
38448          break;
38449        case PacketType.EVENT:
38450        case PacketType.BINARY_EVENT:
38451          this.onevent(packet);
38452          break;
38453        case PacketType.ACK:
38454        case PacketType.BINARY_ACK:
38455          this.onack(packet);
38456          break;
38457        case PacketType.DISCONNECT:
38458          this.ondisconnect();
38459          break;
38460        case PacketType.CONNECT_ERROR:
38461          this.destroy();
38462          const err = new Error(packet.data.message);
38463          err.data = packet.data.data;
38464          this.emitReserved("connect_error", err);
38465          break;
38466      }
38467    }
38468    onevent(packet) {
38469      const args = packet.data || [];
38470      if (null != packet.id) {
38471        args.push(this.ack(packet.id));
38472      }
38473      if (this.connected) {
38474        this.emitEvent(args);
38475      } else {
38476        this.receiveBuffer.push(Object.freeze(args));
38477      }
38478    }
38479    emitEvent(args) {
38480      if (this._anyListeners && this._anyListeners.length) {
38481        const listeners = this._anyListeners.slice();
38482        for (const listener of listeners) {
38483          listener.apply(this, args);
38484        }
38485      }
38486      super.emit.apply(this, args);
38487      if (this._pid && args.length && typeof args[args.length - 1] === "string") {
38488        this._lastOffset = args[args.length - 1];
38489      }
38490    }
38491    ack(id) {
38492      const self2 = this;
38493      let sent = false;
38494      return function(...args) {
38495        if (sent)
38496          return;
38497        sent = true;
38498        self2.packet({
38499          type: PacketType.ACK,
38500          id,
38501          data: args
38502        });
38503      };
38504    }
38505    onack(packet) {
38506      const ack = this.acks[packet.id];
38507      if ("function" === typeof ack) {
38508        ack.apply(this, packet.data);
38509        delete this.acks[packet.id];
38510      } else {
38511      }
38512    }
38513    onconnect(id, pid) {
38514      this.id = id;
38515      this.recovered = pid && this._pid === pid;
38516      this._pid = pid;
38517      this.connected = true;
38518      this.emitBuffered();
38519      this.emitReserved("connect");
38520      this._drainQueue(true);
38521    }
38522    emitBuffered() {
38523      this.receiveBuffer.forEach((args) => this.emitEvent(args));
38524      this.receiveBuffer = [];
38525      this.sendBuffer.forEach((packet) => {
38526        this.notifyOutgoingListeners(packet);
38527        this.packet(packet);
38528      });
38529      this.sendBuffer = [];
38530    }
38531    ondisconnect() {
38532      this.destroy();
38533      this.onclose("io server disconnect");
38534    }
38535    destroy() {
38536      if (this.subs) {
38537        this.subs.forEach((subDestroy) => subDestroy());
38538        this.subs = void 0;
38539      }
38540      this.io["_destroy"](this);
38541    }
38542    disconnect() {
38543      if (this.connected) {
38544        this.packet({ type: PacketType.DISCONNECT });
38545      }
38546      this.destroy();
38547      if (this.connected) {
38548        this.onclose("io client disconnect");
38549      }
38550      return this;
38551    }
38552    close() {
38553      return this.disconnect();
38554    }
38555    compress(compress) {
38556      this.flags.compress = compress;
38557      return this;
38558    }
38559    get volatile() {
38560      this.flags.volatile = true;
38561      return this;
38562    }
38563    timeout(timeout) {
38564      this.flags.timeout = timeout;
38565      return this;
38566    }
38567    onAny(listener) {
38568      this._anyListeners = this._anyListeners || [];
38569      this._anyListeners.push(listener);
38570      return this;
38571    }
38572    prependAny(listener) {
38573      this._anyListeners = this._anyListeners || [];
38574      this._anyListeners.unshift(listener);
38575      return this;
38576    }
38577    offAny(listener) {
38578      if (!this._anyListeners) {
38579        return this;
38580      }
38581      if (listener) {
38582        const listeners = this._anyListeners;
38583        for (let i2 = 0; i2 < listeners.length; i2++) {
38584          if (listener === listeners[i2]) {
38585            listeners.splice(i2, 1);
38586            return this;
38587          }
38588        }
38589      } else {
38590        this._anyListeners = [];
38591      }
38592      return this;
38593    }
38594    listenersAny() {
38595      return this._anyListeners || [];
38596    }
38597    onAnyOutgoing(listener) {
38598      this._anyOutgoingListeners = this._anyOutgoingListeners || [];
38599      this._anyOutgoingListeners.push(listener);
38600      return this;
38601    }
38602    prependAnyOutgoing(listener) {
38603      this._anyOutgoingListeners = this._anyOutgoingListeners || [];
38604      this._anyOutgoingListeners.unshift(listener);
38605      return this;
38606    }
38607    offAnyOutgoing(listener) {
38608      if (!this._anyOutgoingListeners) {
38609        return this;
38610      }
38611      if (listener) {
38612        const listeners = this._anyOutgoingListeners;
38613        for (let i2 = 0; i2 < listeners.length; i2++) {
38614          if (listener === listeners[i2]) {
38615            listeners.splice(i2, 1);
38616            return this;
38617          }
38618        }
38619      } else {
38620        this._anyOutgoingListeners = [];
38621      }
38622      return this;
38623    }
38624    listenersAnyOutgoing() {
38625      return this._anyOutgoingListeners || [];
38626    }
38627    notifyOutgoingListeners(packet) {
38628      if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {
38629        const listeners = this._anyOutgoingListeners.slice();
38630        for (const listener of listeners) {
38631          listener.apply(this, packet.data);
38632        }
38633      }
38634    }
38635  };
38636
38637  
vendor: 953 bytes, lines 38637-38668
38637// node_modules/socket.io-client/build/esm/contrib/backo2.js
38638  function Backoff(opts) {
38639    opts = opts || {};
38640    this.ms = opts.min || 100;
38641    this.max = opts.max || 1e4;
38642    this.factor = opts.factor || 2;
38643    this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;
38644    this.attempts = 0;
38645  }
38646  Backoff.prototype.duration = function() {
38647    var ms = this.ms * Math.pow(this.factor, this.attempts++);
38648    if (this.jitter) {
38649      var rand = Math.random();
38650      var deviation = Math.floor(rand * this.jitter * ms);
38651      ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;
38652    }
38653    return Math.min(ms, this.max) | 0;
38654  };
38655  Backoff.prototype.reset = function() {
38656    this.attempts = 0;
38657  };
38658  Backoff.prototype.setMin = function(min) {
38659    this.ms = min;
38660  };
38661  Backoff.prototype.setMax = function(max) {
38662    this.max = max;
38663  };
38664  Backoff.prototype.setJitter = function(jitter) {
38665    this.jitter = jitter;
38666  };
38667
38668  
vendor: 7,280 bytes, lines 38668-38912
38668// node_modules/socket.io-client/build/esm/manager.js
38669  var Manager = class extends Emitter {
38670    constructor(uri, opts) {
38671      var _a;
38672      super();
38673      this.nsps = {};
38674      this.subs = [];
38675      if (uri && "object" === typeof uri) {
38676        opts = uri;
38677        uri = void 0;
38678      }
38679      opts = opts || {};
38680      opts.path = opts.path || "/socket.io";
38681      this.opts = opts;
38682      installTimerFunctions(this, opts);
38683      this.reconnection(opts.reconnection !== false);
38684      this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);
38685      this.reconnectionDelay(opts.reconnectionDelay || 1e3);
38686      this.reconnectionDelayMax(opts.reconnectionDelayMax || 5e3);
38687      this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);
38688      this.backoff = new Backoff({
38689        min: this.reconnectionDelay(),
38690        max: this.reconnectionDelayMax(),
38691        jitter: this.randomizationFactor()
38692      });
38693      this.timeout(null == opts.timeout ? 2e4 : opts.timeout);
38694      this._readyState = "closed";
38695      this.uri = uri;
38696      const _parser = opts.parser || esm_exports;
38697      this.encoder = new _parser.Encoder();
38698      this.decoder = new _parser.Decoder();
38699      this._autoConnect = opts.autoConnect !== false;
38700      if (this._autoConnect)
38701        this.open();
38702    }
38703    reconnection(v) {
38704      if (!arguments.length)
38705        return this._reconnection;
38706      this._reconnection = !!v;
38707      return this;
38708    }
38709    reconnectionAttempts(v) {
38710      if (v === void 0)
38711        return this._reconnectionAttempts;
38712      this._reconnectionAttempts = v;
38713      return this;
38714    }
38715    reconnectionDelay(v) {
38716      var _a;
38717      if (v === void 0)
38718        return this._reconnectionDelay;
38719      this._reconnectionDelay = v;
38720      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);
38721      return this;
38722    }
38723    randomizationFactor(v) {
38724      var _a;
38725      if (v === void 0)
38726        return this._randomizationFactor;
38727      this._randomizationFactor = v;
38728      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);
38729      return this;
38730    }
38731    reconnectionDelayMax(v) {
38732      var _a;
38733      if (v === void 0)
38734        return this._reconnectionDelayMax;
38735      this._reconnectionDelayMax = v;
38736      (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);
38737      return this;
38738    }
38739    timeout(v) {
38740      if (!arguments.length)
38741        return this._timeout;
38742      this._timeout = v;
38743      return this;
38744    }
38745    maybeReconnectOnOpen() {
38746      if (!this._reconnecting && this._reconnection && this.backoff.attempts === 0) {
38747        this.reconnect();
38748      }
38749    }
38750    open(fn) {
38751      if (~this._readyState.indexOf("open"))
38752        return this;
38753      this.engine = new Socket(this.uri, this.opts);
38754      const socket = this.engine;
38755      const self2 = this;
38756      this._readyState = "opening";
38757      this.skipReconnect = false;
38758      const openSubDestroy = on(socket, "open", function() {
38759        self2.onopen();
38760        fn && fn();
38761      });
38762      const onError = (err) => {
38763        this.cleanup();
38764        this._readyState = "closed";
38765        this.emitReserved("error", err);
38766        if (fn) {
38767          fn(err);
38768        } else {
38769          this.maybeReconnectOnOpen();
38770        }
38771      };
38772      const errorSub = on(socket, "error", onError);
38773      if (false !== this._timeout) {
38774        const timeout = this._timeout;
38775        const timer = this.setTimeoutFn(() => {
38776          openSubDestroy();
38777          onError(new Error("timeout"));
38778          socket.close();
38779        }, timeout);
38780        if (this.opts.autoUnref) {
38781          timer.unref();
38782        }
38783        this.subs.push(() => {
38784          this.clearTimeoutFn(timer);
38785        });
38786      }
38787      this.subs.push(openSubDestroy);
38788      this.subs.push(errorSub);
38789      return this;
38790    }
38791    connect(fn) {
38792      return this.open(fn);
38793    }
38794    onopen() {
38795      this.cleanup();
38796      this._readyState = "open";
38797      this.emitReserved("open");
38798      const socket = this.engine;
38799      this.subs.push(on(socket, "ping", this.onping.bind(this)), on(socket, "data", this.ondata.bind(this)), on(socket, "error", this.onerror.bind(this)), on(socket, "close", this.onclose.bind(this)), on(this.decoder, "decoded", this.ondecoded.bind(this)));
38800    }
38801    onping() {
38802      this.emitReserved("ping");
38803    }
38804    ondata(data) {
38805      try {
38806        this.decoder.add(data);
38807      } catch (e) {
38808        this.onclose("parse error", e);
38809      }
38810    }
38811    ondecoded(packet) {
38812      nextTick(() => {
38813        this.emitReserved("packet", packet);
38814      }, this.setTimeoutFn);
38815    }
38816    onerror(err) {
38817      this.emitReserved("error", err);
38818    }
38819    socket(nsp, opts) {
38820      let socket = this.nsps[nsp];
38821      if (!socket) {
38822        socket = new Socket2(this, nsp, opts);
38823        this.nsps[nsp] = socket;
38824      } else if (this._autoConnect && !socket.active) {
38825        socket.connect();
38826      }
38827      return socket;
38828    }
38829    _destroy(socket) {
38830      const nsps = Object.keys(this.nsps);
38831      for (const nsp of nsps) {
38832        const socket2 = this.nsps[nsp];
38833        if (socket2.active) {
38834          return;
38835        }
38836      }
38837      this._close();
38838    }
38839    _packet(packet) {
38840      const encodedPackets = this.encoder.encode(packet);
38841      for (let i2 = 0; i2 < encodedPackets.length; i2++) {
38842        this.engine.write(encodedPackets[i2], packet.options);
38843      }
38844    }
38845    cleanup() {
38846      this.subs.forEach((subDestroy) => subDestroy());
38847      this.subs.length = 0;
38848      this.decoder.destroy();
38849    }
38850    _close() {
38851      this.skipReconnect = true;
38852      this._reconnecting = false;
38853      this.onclose("forced close");
38854      if (this.engine)
38855        this.engine.close();
38856    }
38857    disconnect() {
38858      return this._close();
38859    }
38860    onclose(reason, description) {
38861      this.cleanup();
38862      this.backoff.reset();
38863      this._readyState = "closed";
38864      this.emitReserved("close", reason, description);
38865      if (this._reconnection && !this.skipReconnect) {
38866        this.reconnect();
38867      }
38868    }
38869    reconnect() {
38870      if (this._reconnecting || this.skipReconnect)
38871        return this;
38872      const self2 = this;
38873      if (this.backoff.attempts >= this._reconnectionAttempts) {
38874        this.backoff.reset();
38875        this.emitReserved("reconnect_failed");
38876        this._reconnecting = false;
38877      } else {
38878        const delay = this.backoff.duration();
38879        this._reconnecting = true;
38880        const timer = this.setTimeoutFn(() => {
38881          if (self2.skipReconnect)
38882            return;
38883          this.emitReserved("reconnect_attempt", self2.backoff.attempts);
38884          if (self2.skipReconnect)
38885            return;
38886          self2.open((err) => {
38887            if (err) {
38888              self2._reconnecting = false;
38889              self2.reconnect();
38890              this.emitReserved("reconnect_error", err);
38891            } else {
38892              self2.onreconnect();
38893            }
38894          });
38895        }, delay);
38896        if (this.opts.autoUnref) {
38897          timer.unref();
38898        }
38899        this.subs.push(() => {
38900          this.clearTimeoutFn(timer);
38901        });
38902      }
38903    }
38904    onreconnect() {
38905      const attempt = this.backoff.attempts;
38906      this._reconnecting = false;
38907      this.backoff.reset();
38908      this.emitReserved("reconnect", attempt);
38909    }
38910  };
38911
38912  
vendor: 963 bytes, lines 38912-38947
38912// node_modules/socket.io-client/build/esm/index.js
38913  var cache = {};
38914  function lookup2(uri, opts) {
38915    if (typeof uri === "object") {
38916      opts = uri;
38917      uri = void 0;
38918    }
38919    opts = opts || {};
38920    const parsed = url(uri, opts.path || "/socket.io");
38921    const source = parsed.source;
38922    const id = parsed.id;
38923    const path = parsed.path;
38924    const sameNamespace = cache[id] && path in cache[id]["nsps"];
38925    const newConnection = opts.forceNew || opts["force new connection"] || false === opts.multiplex || sameNamespace;
38926    let io;
38927    if (newConnection) {
38928      io = new Manager(source, opts);
38929    } else {
38930      if (!cache[id]) {
38931        cache[id] = new Manager(source, opts);
38932      }
38933      io = cache[id];
38934    }
38935    if (parsed.query && !opts.query) {
38936      opts.query = parsed.queryKey;
38937    }
38938    return io.socket(parsed.path, opts);
38939  }
38940  Object.assign(lookup2, {
38941    Manager,
38942    Socket: Socket2,
38943    io: lookup2,
38944    connect: lookup2
38945  });
38946
38947  
38947// frappe/public/js/frappe/socketio_client.js
38948  frappe.provide("frappe.realtime");
38949  var RealTimeClient = class {
38950    constructor() {
38951      this.open_tasks = {};
38952      this.open_docs = /* @__PURE__ */ new Set();
38953    }
38954    on(event, callback) {
38955      if (this.socket) {
38956        this.connect();
38957        this.socket.on(event, callback);
38958      }
38959    }
38960    off(event, callback) {
38961      if (this.socket) {
38962        this.socket.off(event, callback);
38963      }
38964    }
38965    connect() {
38966      if (this.lazy_connect) {
38967        this.socket.connect();
38968        this.lazy_connect = false;
38969      }
38970    }
38971    emit(event, ...args) {
38972      this.connect();
38973      this.socket.emit(event, ...args);
38974    }
38975    init(port = 9e3, lazy_connect = false) {
38976      if (frappe.boot.disable_async) {
38977        return;
38978      }
38979      if (this.socket) {
38980        return;
38981      }
38982      this.lazy_connect = lazy_connect;
38983      let me = this;
38984      if (window.location.protocol == "https:") {
38985        this.socket = lookup2(this.get_host(port), {
38986          secure: true,
38987          withCredentials: true,
38988          reconnectionAttempts: 3,
38989          autoConnect: !lazy_connect
38990        });
38991      } else if (window.location.protocol == "http:") {
38992        this.socket = lookup2(this.get_host(port), {
38993          withCredentials: true,
38994          reconnectionAttempts: 3,
38995          autoConnect: !lazy_connect
38996        });
38997      }
38998      if (!this.socket) {
38999        console.log("Unable to connect to " + this.get_host(port));
39000        return;
39001      }
39002      this.socket.on("connect_error", function(err) {
39003        console.error("Error connecting to socket.io:", err.message);
39004      });
39005      this.socket.on("msgprint", function(message) {
39006        frappe.msgprint(message);
39007      });
39008      this.socket.on("progress", function(data) {
39009        if (data.progress) {
39010          data.percent = flt(data.progress[0]) / data.progress[1] * 100;
39011        }
39012        if (data.percent) {
39013          frappe.show_progress(
39014            data.title || __("Progress"),
39015            data.percent,
39016            100,
39017            data.description,
39018            true
39019          );
39020        }
39021      });
39022      this.setup_listeners();
39023      $(document).on("form-load form-rename", function(e, frm) {
39024        if (!frm.doc || frm.is_new()) {
39025          return;
39026        }
39027        me.doc_subscribe(frm.doctype, frm.docname);
39028      });
39029      $(document).on("form-refresh", function(e, frm) {
39030        if (!frm.doc || frm.is_new()) {
39031          return;
39032        }
39033        me.doc_open(frm.doctype, frm.docname);
39034      });
39035      $(document).on("form-unload", function(e, frm) {
39036        if (!frm.doc || frm.is_new()) {
39037          return;
39038        }
39039        me.doc_close(frm.doctype, frm.docname);
39040      });
39041    }
39042    get_host(port = 9e3) {
39043      let host = window.location.origin;
39044      if (window.dev_server) {
39045        let parts2 = host.split(":");
39046        port = frappe.boot.socketio_port || port.toString() || "9000";
39047        if (parts2.length > 2) {
39048          host = parts2[0] + ":" + parts2[1];
39049        }
39050        host = host + ":" + port;
39051      }
39052      return host + `/${frappe.boot.sitename}`;
39053    }
39054    subscribe(task_id, opts) {
39055      this.emit("task_subscribe", task_id);
39056      this.emit("progress_subscribe", task_id);
39057      this.open_tasks[task_id] = opts;
39058    }
39059    task_subscribe(task_id) {
39060      this.emit("task_subscribe", task_id);
39061    }
39062    task_unsubscribe(task_id) {
39063      this.emit("task_unsubscribe", task_id);
39064    }
39065    doctype_subscribe(doctype) {
39066      this.emit("doctype_subscribe", doctype);
39067    }
39068    doctype_unsubscribe(doctype) {
39069      this.emit("doctype_unsubscribe", doctype);
39070    }
39071    doc_subscribe(doctype, docname) {
39072      if (frappe.flags.doc_subscribe) {
39073        console.log("throttled");
39074        return;
39075      }
39076      if (this.open_docs.has(`${doctype}:${docname}`)) {
39077        return;
39078      }
39079      frappe.flags.doc_subscribe = true;
39080      setTimeout(function() {
39081        frappe.flags.doc_subscribe = false;
39082      }, 1e3);
39083      this.emit("doc_subscribe", doctype, docname);
39084      this.open_docs.add(`${doctype}:${docname}`);
39085    }
39086    doc_unsubscribe(doctype, docname) {
39087      this.emit("doc_unsubscribe", doctype, docname);
39088      return this.open_docs.delete(`${doctype}:${docname}`);
39089    }
39090    doc_open(doctype, docname) {
39091      this.emit("doc_open", doctype, docname);
39092    }
39093    doc_close(doctype, docname) {
39094      this.emit("doc_close", doctype, docname);
39095    }
39096    setup_listeners() {
39097      this.socket.on("task_status_change", function(data) {
39098        this.process_response(data, data.status.toLowerCase());
39099      });
39100      this.socket.on("task_progress", function(data) {
39101        this.process_response(data, "progress");
39102      });
39103    }
39104    process_response(data, method) {
39105      if (!data) {
39106        return;
39107      }
39108      let opts = this.open_tasks[data.task_id];
39109      if (opts[method]) {
39110        opts[method](data);
39111      }
39112      if (method === "success") {
39113        if (opts.callback)
39114          opts.callback(data);
39115      }
39116      frappe.request.cleanup(opts, data);
39117      if (opts.always) {
39118        opts.always(data);
39119      }
39120      if (data.status_code && data.status_code > 400 && opts.error) {
39121        opts.error(data);
39122      }
39123    }
39124    publish(event, message) {
39125      if (this.socket) {
39126        this.emit(event, message);
39127      }
39128    }
39129  };
39130  frappe.realtime = new RealTimeClient();
39131  frappe.socketio = frappe.realtime;
39132})();
39133/* @preserve
39134 * Leaflet 1.2.0, a JS library for interactive maps. http://leafletjs.com
39135 * (c) 2010-2017 Vladimir Agafonkin, (c) 2010-2011 CloudMade
39136 */
39137/*!
39138  * Bootstrap alert.js v4.6.2 (https://getbootstrap.com/)
39139  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39140  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39141  */
39142/*!
39143  * Bootstrap button.js v4.6.2 (https://getbootstrap.com/)
39144  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39145  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39146  */
39147/*!
39148  * Bootstrap carousel.js v4.6.2 (https://getbootstrap.com/)
39149  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39150  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39151  */
39152/*!
39153  * Bootstrap collapse.js v4.6.2 (https://getbootstrap.com/)
39154  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39155  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39156  */
39157/*!
39158  * Bootstrap dropdown.js v4.6.2 (https://getbootstrap.com/)
39159  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39160  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39161  */
39162/*!
39163  * Bootstrap modal.js v4.6.2 (https://getbootstrap.com/)
39164  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39165  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39166  */
39167/*!
39168  * Bootstrap popover.js v4.6.2 (https://getbootstrap.com/)
39169  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39170  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39171  */
39172/*!
39173  * Bootstrap scrollspy.js v4.6.2 (https://getbootstrap.com/)
39174  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39175  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39176  */
39177/*!
39178  * Bootstrap tab.js v4.6.2 (https://getbootstrap.com/)
39179  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39180  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39181  */
39182/*!
39183  * Bootstrap toast.js v4.6.2 (https://getbootstrap.com/)
39184  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39185  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39186  */
39187/*!
39188  * Bootstrap tooltip.js v4.6.2 (https://getbootstrap.com/)
39189  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39190  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39191  */
39192/*!
39193  * Bootstrap util.js v4.6.2 (https://getbootstrap.com/)
39194  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
39195  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
39196  */
39197/*!
39198 * Determine if an object is a Buffer
39199 *
39200 * @author   Feross Aboukhadijeh <https://feross.org>
39201 * @license  MIT
39202 */
39203/*!
39204 * jQuery JavaScript Library v3.7.0
39205 * https://jquery.com/
39206 *
39207 * Copyright OpenJS Foundation and other contributors
39208 * Released under the MIT license
39209 * https://jquery.org/license
39210 *
39211 * Date: 2023-05-11T18:29Z
39212 */
39213/*!
39214Copyright (c) 2016 Dominik Moritz
39215
39216This file is part of the leaflet locate control. It is licensed under the MIT license.
39217You can find the project at: https://github.com/domoritz/leaflet-locatecontrol
39218*/
39219/*! Sortable 1.15.0 - MIT | git://github.com/SortableJS/Sortable.git */
39220/**!
39221 * @fileOverview Kickass library to create and place poppers near their reference elements.
39222 * @version 1.16.1
39223 * @license
39224 * Copyright (c) 2016 Federico Zivolo and contributors
39225 *
39226 * Permission is hereby granted, free of charge, to any person obtaining a copy
39227 * of this software and associated documentation files (the "Software"), to deal
39228 * in the Software without restriction, including without limitation the rights
39229 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
39230 * copies of the Software, and to permit persons to whom the Software is
39231 * furnished to do so, subject to the following conditions:
39232 *
39233 * The above copyright notice and this permission notice shall be included in all
39234 * copies or substantial portions of the Software.
39235 *
39236 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
39237 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
39238 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
39239 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
39240 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
39241 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
39242 * SOFTWARE.
39243 */
39244//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
39245//! license : MIT
39246//! moment.js
39247//! momentjs.com
39248//! version : 2.29.4
39249//# sourceMappingURL=frappe-web.bundle.M4ZMZZX7.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.