1var __create = Object.create; 2var __defProp = Object.defineProperty; 3var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 4var __getOwnPropNames = Object.getOwnPropertyNames; 5var __getProtoOf = Object.getPrototypeOf; 6var __hasOwnProp = Object.prototype.hasOwnProperty; 7var __commonJS = (cb, mod) => function __require() { 8 try { 9 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 10 } catch (e) { 11 throw mod = 0, e; 12 } 13}; 14var __copyProps = (to, from, except, desc) => { 15 if (from && typeof from === "object" || typeof from === "function") { 16 for (let key of __getOwnPropNames(from)) 17 if (!__hasOwnProp.call(to, key) && key !== except) 18 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 19 } 20 return to; 21}; 22var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 23 // If the importer is in node compatibility mode or this is not an ESM 24 // file that has been converted to a CommonJS file using a Babel- 25 // compatible transform (i.e. "__esModule" has not been set), then set 26 // "default" to the CommonJS "module.exports" for node compatibility. 27 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 28 mod 29)); 30
vendor: 245,015 bytes, lines 31-6380
31// node_modules/jquery/dist/jquery.js 32var require_jquery = __commonJS({ 33 "node_modules/jquery/dist/jquery.js"(exports, module) { 34 (function(global, factory) { 35 "use strict"; 36 if (typeof module === "object" && typeof module.exports === "object") { 37 module.exports = global.document ? factory(global, true) : function(w) { 38 if (!w.document) { 39 throw new Error("jQuery requires a window with a document"); 40 } 41 return factory(w); 42 }; 43 } else { 44 factory(global); 45 } 46 })(typeof window !== "undefined" ? window : exports, function(window2, noGlobal) { 47 "use strict"; 48 var arr = []; 49 var getProto = Object.getPrototypeOf; 50 var slice = arr.slice; 51 var flat = arr.flat ? function(array) { 52 return arr.flat.call(array); 53 } : function(array) { 54 return arr.concat.apply([], array); 55 }; 56 var push = arr.push; 57 var indexOf = arr.indexOf; 58 var class2type = {}; 59 var toString = class2type.toString; 60 var hasOwn = class2type.hasOwnProperty; 61 var fnToString = hasOwn.toString; 62 var ObjectFunctionString = fnToString.call(Object); 63 var support = {}; 64 var isFunction = function isFunction2(obj) { 65 return typeof obj === "function" && typeof obj.nodeType !== "number" && typeof obj.item !== "function"; 66 }; 67 var isWindow = function isWindow2(obj) { 68 return obj != null && obj === obj.window; 69 }; 70 var document2 = window2.document; 71 var preservedScriptAttributes = { 72 type: true, 73 src: true, 74 nonce: true, 75 noModule: true 76 }; 77 function DOMEval(code, node, doc) { 78 doc = doc || document2; 79 var i, val, script = doc.createElement("script"); 80 script.text = code; 81 if (node) { 82 for (i in preservedScriptAttributes) { 83 val = node[i] || node.getAttribute && node.getAttribute(i); 84 if (val) { 85 script.setAttribute(i, val); 86 } 87 } 88 } 89 doc.head.appendChild(script).parentNode.removeChild(script); 90 } 91 function toType(obj) { 92 if (obj == null) { 93 return obj + ""; 94 } 95 return typeof obj === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj; 96 } 97 var version = "3.7.1", rhtmlSuffix = /HTML$/i, jQuery3 = function(selector, context) { 98 return new jQuery3.fn.init(selector, context); 99 }; 100 jQuery3.fn = jQuery3.prototype = { 101 // The current version of jQuery being used 102 jquery: version, 103 constructor: jQuery3, 104 // The default length of a jQuery object is 0 105 length: 0, 106 toArray: function() { 107 return slice.call(this); 108 }, 109 // Get the Nth element in the matched element set OR 110 // Get the whole matched element set as a clean array 111 get: function(num) { 112 if (num == null) { 113 return slice.call(this); 114 } 115 return num < 0 ? this[num + this.length] : this[num]; 116 }, 117 // Take an array of elements and push it onto the stack 118 // (returning the new matched element set) 119 pushStack: function(elems) { 120 var ret = jQuery3.merge(this.constructor(), elems); 121 ret.prevObject = this; 122 return ret; 123 }, 124 // Execute a callback for every element in the matched set. 125 each: function(callback) { 126 return jQuery3.each(this, callback); 127 }, 128 map: function(callback) { 129 return this.pushStack(jQuery3.map(this, function(elem, i) { 130 return callback.call(elem, i, elem); 131 })); 132 }, 133 slice: function() { 134 return this.pushStack(slice.apply(this, arguments)); 135 }, 136 first: function() { 137 return this.eq(0); 138 }, 139 last: function() { 140 return this.eq(-1); 141 }, 142 even: function() { 143 return this.pushStack(jQuery3.grep(this, function(_elem, i) { 144 return (i + 1) % 2; 145 })); 146 }, 147 odd: function() { 148 return this.pushStack(jQuery3.grep(this, function(_elem, i) { 149 return i % 2; 150 })); 151 }, 152 eq: function(i) { 153 var len = this.length, j = +i + (i < 0 ? len : 0); 154 return this.pushStack(j >= 0 && j < len ? [this[j]] : []); 155 }, 156 end: function() { 157 return this.prevObject || this.constructor(); 158 }, 159 // For internal use only. 160 // Behaves like an Array's method, not like a jQuery method. 161 push, 162 sort: arr.sort, 163 splice: arr.splice 164 }; 165 jQuery3.extend = jQuery3.fn.extend = function() { 166 var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; 167 if (typeof target === "boolean") { 168 deep = target; 169 target = arguments[i] || {}; 170 i++; 171 } 172 if (typeof target !== "object" && !isFunction(target)) { 173 target = {}; 174 } 175 if (i === length) { 176 target = this; 177 i--; 178 } 179 for (; i < length; i++) { 180 if ((options = arguments[i]) != null) { 181 for (name in options) { 182 copy = options[name]; 183 if (name === "__proto__" || target === copy) { 184 continue; 185 } 186 if (deep && copy && (jQuery3.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { 187 src = target[name]; 188 if (copyIsArray && !Array.isArray(src)) { 189 clone = []; 190 } else if (!copyIsArray && !jQuery3.isPlainObject(src)) { 191 clone = {}; 192 } else { 193 clone = src; 194 } 195 copyIsArray = false; 196 target[name] = jQuery3.extend(deep, clone, copy); 197 } else if (copy !== void 0) { 198 target[name] = copy; 199 } 200 } 201 } 202 } 203 return target; 204 }; 205 jQuery3.extend({ 206 // Unique for each copy of jQuery on the page 207 expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""), 208 // Assume jQuery is ready without the ready module 209 isReady: true, 210 error: function(msg) { 211 throw new Error(msg); 212 }, 213 noop: function() { 214 }, 215 isPlainObject: function(obj) { 216 var proto, Ctor; 217 if (!obj || toString.call(obj) !== "[object Object]") { 218 return false; 219 } 220 proto = getProto(obj); 221 if (!proto) { 222 return true; 223 } 224 Ctor = hasOwn.call(proto, "constructor") && proto.constructor; 225 return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString; 226 }, 227 isEmptyObject: function(obj) { 228 var name; 229 for (name in obj) { 230 return false; 231 } 232 return true; 233 }, 234 // Evaluates a script in a provided context; falls back to the global one 235 // if not specified. 236 globalEval: function(code, options, doc) { 237 DOMEval(code, { nonce: options && options.nonce }, doc); 238 }, 239 each: function(obj, callback) { 240 var length, i = 0; 241 if (isArrayLike(obj)) { 242 length = obj.length; 243 for (; i < length; i++) { 244 if (callback.call(obj[i], i, obj[i]) === false) { 245 break; 246 } 247 } 248 } else { 249 for (i in obj) { 250 if (callback.call(obj[i], i, obj[i]) === false) { 251 break; 252 } 253 } 254 } 255 return obj; 256 }, 257 // Retrieve the text value of an array of DOM nodes 258 text: function(elem) { 259 var node, ret = "", i = 0, nodeType = elem.nodeType; 260 if (!nodeType) { 261 while (node = elem[i++]) { 262 ret += jQuery3.text(node); 263 } 264 } 265 if (nodeType === 1 || nodeType === 11) { 266 return elem.textContent; 267 } 268 if (nodeType === 9) { 269 return elem.documentElement.textContent; 270 } 271 if (nodeType === 3 || nodeType === 4) { 272 return elem.nodeValue; 273 } 274 return ret; 275 }, 276 // results is for internal usage only 277 makeArray: function(arr2, results) { 278 var ret = results || []; 279 if (arr2 != null) { 280 if (isArrayLike(Object(arr2))) { 281 jQuery3.merge( 282 ret, 283 typeof arr2 === "string" ? [arr2] : arr2 284 ); 285 } else { 286 push.call(ret, arr2); 287 } 288 } 289 return ret; 290 }, 291 inArray: function(elem, arr2, i) { 292 return arr2 == null ? -1 : indexOf.call(arr2, elem, i); 293 }, 294 isXMLDoc: function(elem) { 295 var namespace = elem && elem.namespaceURI, docElem = elem && (elem.ownerDocument || elem).documentElement; 296 return !rhtmlSuffix.test(namespace || docElem && docElem.nodeName || "HTML"); 297 }, 298 // Support: Android <=4.0 only, PhantomJS 1 only 299 // push.apply(_, arraylike) throws on ancient WebKit 300 merge: function(first, second) { 301 var len = +second.length, j = 0, i = first.length; 302 for (; j < len; j++) { 303 first[i++] = second[j]; 304 } 305 first.length = i; 306 return first; 307 }, 308 grep: function(elems, callback, invert) { 309 var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; 310 for (; i < length; i++) { 311 callbackInverse = !callback(elems[i], i); 312 if (callbackInverse !== callbackExpect) { 313 matches.push(elems[i]); 314 } 315 } 316 return matches; 317 }, 318 // arg is for internal usage only 319 map: function(elems, callback, arg) { 320 var length, value, i = 0, ret = []; 321 if (isArrayLike(elems)) { 322 length = elems.length; 323 for (; i < length; i++) { 324 value = callback(elems[i], i, arg); 325 if (value != null) { 326 ret.push(value); 327 } 328 } 329 } else { 330 for (i in elems) { 331 value = callback(elems[i], i, arg); 332 if (value != null) { 333 ret.push(value); 334 } 335 } 336 } 337 return flat(ret); 338 }, 339 // A global GUID counter for objects 340 guid: 1, 341 // jQuery.support is not used in Core but other projects attach their 342 // properties to it so it needs to exist. 343 support 344 }); 345 if (typeof Symbol === "function") { 346 jQuery3.fn[Symbol.iterator] = arr[Symbol.iterator]; 347 } 348 jQuery3.each( 349 "Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), 350 function(_i, name) { 351 class2type["[object " + name + "]"] = name.toLowerCase(); 352 } 353 ); 354 function isArrayLike(obj) { 355 var length = !!obj && "length" in obj && obj.length, type = toType(obj); 356 if (isFunction(obj) || isWindow(obj)) { 357 return false; 358 } 359 return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj; 360 } 361 function nodeName(elem, name) { 362 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 363 } 364 var pop = arr.pop; 365 var sort = arr.sort; 366 var splice = arr.splice; 367 var whitespace = "[\\x20\\t\\r\\n\\f]"; 368 var rtrimCSS = new RegExp( 369 "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", 370 "g" 371 ); 372 jQuery3.contains = function(a, b) { 373 var bup = b && b.parentNode; 374 return a === bup || !!(bup && bup.nodeType === 1 && // Support: IE 9 - 11+ 375 // IE doesn't have `contains` on SVG. 376 (a.contains ? a.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16)); 377 }; 378 var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; 379 function fcssescape(ch, asCodePoint) { 380 if (asCodePoint) { 381 if (ch === "\0") { 382 return "\uFFFD"; 383 } 384 return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; 385 } 386 return "\\" + ch; 387 } 388 jQuery3.escapeSelector = function(sel) { 389 return (sel + "").replace(rcssescape, fcssescape); 390 }; 391 var preferredDoc = document2, pushNative = push; 392 (function() { 393 var i, 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) { 394 if (a === b) { 395 hasDuplicate = true; 396 } 397 return 0; 398 }, 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 + // Operator (capture 2) 399 "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" 400 `*(?:'((?:\\\\.|[^\\\\'])*)'|"((?:\\\\.|[^\\\\"])*)"|(` + 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 = { 401 ID: new RegExp("^#(" + identifier + ")"), 402 CLASS: new RegExp("^\\.(" + identifier + ")"), 403 TAG: new RegExp("^(" + identifier + "|[*])"), 404 ATTR: new RegExp("^" + attributes), 405 PSEUDO: new RegExp("^" + pseudos), 406 CHILD: new RegExp( 407 "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", 408 "i" 409 ), 410 bool: new RegExp("^(?:" + booleans + ")$", "i"), 411 // For use in libraries implementing .is() 412 // We use this for POS matching in `select` 413 needsContext: new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") 414 }, 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(escape, nonHex) { 415 var high = "0x" + escape.slice(1) - 65536; 416 if (nonHex) { 417 return nonHex; 418 } 419 return high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320); 420 }, unloadHandler = function() { 421 setDocument(); 422 }, inDisabledFieldset = addCombinator( 423 function(elem) { 424 return elem.disabled === true && nodeName(elem, "fieldset"); 425 }, 426 { dir: "parentNode", next: "legend" } 427 ); 428 function safeActiveElement() { 429 try { 430 return document3.activeElement; 431 } catch (err) { 432 } 433 } 434 try { 435 push2.apply( 436 arr = slice.call(preferredDoc.childNodes), 437 preferredDoc.childNodes 438 ); 439 arr[preferredDoc.childNodes.length].nodeType; 440 } catch (e) { 441 push2 = { 442 apply: function(target, els) { 443 pushNative.apply(target, slice.call(els)); 444 }, 445 call: function(target) { 446 pushNative.apply(target, slice.call(arguments, 1)); 447 } 448 }; 449 } 450 function find(selector, context, results, seed) { 451 var m, i2, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, nodeType = context ? context.nodeType : 9; 452 results = results || []; 453 if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) { 454 return results; 455 } 456 if (!seed) { 457 setDocument(context); 458 context = context || document3; 459 if (documentIsHTML) { 460 if (nodeType !== 11 && (match = rquickExpr2.exec(selector))) { 461 if (m = match[1]) { 462 if (nodeType === 9) { 463 if (elem = context.getElementById(m)) { 464 if (elem.id === m) { 465 push2.call(results, elem); 466 return results; 467 } 468 } else { 469 return results; 470 } 471 } else { 472 if (newContext && (elem = newContext.getElementById(m)) && find.contains(context, elem) && elem.id === m) { 473 push2.call(results, elem); 474 return results; 475 } 476 } 477 } else if (match[2]) { 478 push2.apply(results, context.getElementsByTagName(selector)); 479 return results; 480 } else if ((m = match[3]) && context.getElementsByClassName) { 481 push2.apply(results, context.getElementsByClassName(m)); 482 return results; 483 } 484 } 485 if (!nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) { 486 newSelector = selector; 487 newContext = context; 488 if (nodeType === 1 && (rdescend.test(selector) || rleadingCombinator.test(selector))) { 489 newContext = rsibling.test(selector) && testContext(context.parentNode) || context; 490 if (newContext != context || !support.scope) { 491 if (nid = context.getAttribute("id")) { 492 nid = jQuery3.escapeSelector(nid); 493 } else { 494 context.setAttribute("id", nid = expando); 495 } 496 } 497 groups = tokenize(selector); 498 i2 = groups.length; 499 while (i2--) { 500 groups[i2] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i2]); 501 } 502 newSelector = groups.join(","); 503 } 504 try { 505 push2.apply( 506 results, 507 newContext.querySelectorAll(newSelector) 508 ); 509 return results; 510 } catch (qsaError) { 511 nonnativeSelectorCache(selector, true); 512 } finally { 513 if (nid === expando) { 514 context.removeAttribute("id"); 515 } 516 } 517 } 518 } 519 } 520 return select(selector.replace(rtrimCSS, "$1"), context, results, seed); 521 } 522 function createCache() { 523 var keys = []; 524 function cache(key, value) { 525 if (keys.push(key + " ") > Expr.cacheLength) { 526 delete cache[keys.shift()]; 527 } 528 return cache[key + " "] = value; 529 } 530 return cache; 531 } 532 function markFunction(fn) { 533 fn[expando] = true; 534 return fn; 535 } 536 function assert(fn) { 537 var el = document3.createElement("fieldset"); 538 try { 539 return !!fn(el); 540 } catch (e) { 541 return false; 542 } finally { 543 if (el.parentNode) { 544 el.parentNode.removeChild(el); 545 } 546 el = null; 547 } 548 } 549 function createInputPseudo(type) { 550 return function(elem) { 551 return nodeName(elem, "input") && elem.type === type; 552 }; 553 } 554 function createButtonPseudo(type) { 555 return function(elem) { 556 return (nodeName(elem, "input") || nodeName(elem, "button")) && elem.type === type; 557 }; 558 } 559 function createDisabledPseudo(disabled) { 560 return function(elem) { 561 if ("form" in elem) { 562 if (elem.parentNode && elem.disabled === false) { 563 if ("label" in elem) { 564 if ("label" in elem.parentNode) { 565 return elem.parentNode.disabled === disabled; 566 } else { 567 return elem.disabled === disabled; 568 } 569 } 570 return elem.isDisabled === disabled || // Where there is no isDisabled, check manually 571 elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled; 572 } 573 return elem.disabled === disabled; 574 } else if ("label" in elem) { 575 return elem.disabled === disabled; 576 } 577 return false; 578 }; 579 } 580 function createPositionalPseudo(fn) { 581 return markFunction(function(argument) { 582 argument = +argument; 583 return markFunction(function(seed, matches2) { 584 var j, matchIndexes = fn([], seed.length, argument), i2 = matchIndexes.length; 585 while (i2--) { 586 if (seed[j = matchIndexes[i2]]) { 587 seed[j] = !(matches2[j] = seed[j]); 588 } 589 } 590 }); 591 }); 592 } 593 function testContext(context) { 594 return context && typeof context.getElementsByTagName !== "undefined" && context; 595 } 596 function setDocument(node) { 597 var subWindow, doc = node ? node.ownerDocument || node : preferredDoc; 598 if (doc == document3 || doc.nodeType !== 9 || !doc.documentElement) { 599 return document3; 600 } 601 document3 = doc; 602 documentElement2 = document3.documentElement; 603 documentIsHTML = !jQuery3.isXMLDoc(document3); 604 matches = documentElement2.matches || documentElement2.webkitMatchesSelector || documentElement2.msMatchesSelector; 605 if (documentElement2.msMatchesSelector && // Support: IE 11+, Edge 17 - 18+ 606 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 607 // two documents; shallow comparisons work. 608 // eslint-disable-next-line eqeqeq 609 preferredDoc != document3 && (subWindow = document3.defaultView) && subWindow.top !== subWindow) { 610 subWindow.addEventListener("unload", unloadHandler); 611 } 612 support.getById = assert(function(el) { 613 documentElement2.appendChild(el).id = jQuery3.expando; 614 return !document3.getElementsByName || !document3.getElementsByName(jQuery3.expando).length; 615 }); 616 support.disconnectedMatch = assert(function(el) { 617 return matches.call(el, "*"); 618 }); 619 support.scope = assert(function() { 620 return document3.querySelectorAll(":scope"); 621 }); 622 support.cssHas = assert(function() { 623 try { 624 document3.querySelector(":has(*,:jqfake)"); 625 return false; 626 } catch (e) { 627 return true; 628 } 629 }); 630 if (support.getById) { 631 Expr.filter.ID = function(id) { 632 var attrId = id.replace(runescape, funescape); 633 return function(elem) { 634 return elem.getAttribute("id") === attrId; 635 }; 636 }; 637 Expr.find.ID = function(id, context) { 638 if (typeof context.getElementById !== "undefined" && documentIsHTML) { 639 var elem = context.getElementById(id); 640 return elem ? [elem] : []; 641 } 642 }; 643 } else { 644 Expr.filter.ID = function(id) { 645 var attrId = id.replace(runescape, funescape); 646 return function(elem) { 647 var node2 = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id"); 648 return node2 && node2.value === attrId; 649 }; 650 }; 651 Expr.find.ID = function(id, context) { 652 if (typeof context.getElementById !== "undefined" && documentIsHTML) { 653 var node2, i2, elems, elem = context.getElementById(id); 654 if (elem) { 655 node2 = elem.getAttributeNode("id"); 656 if (node2 && node2.value === id) { 657 return [elem]; 658 } 659 elems = context.getElementsByName(id); 660 i2 = 0; 661 while (elem = elems[i2++]) { 662 node2 = elem.getAttributeNode("id"); 663 if (node2 && node2.value === id) { 664 return [elem]; 665 } 666 } 667 } 668 return []; 669 } 670 }; 671 } 672 Expr.find.TAG = function(tag, context) { 673 if (typeof context.getElementsByTagName !== "undefined") { 674 return context.getElementsByTagName(tag); 675 } else { 676 return context.querySelectorAll(tag); 677 } 678 }; 679 Expr.find.CLASS = function(className, context) { 680 if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) { 681 return context.getElementsByClassName(className); 682 } 683 }; 684 rbuggyQSA = []; 685 assert(function(el) { 686 var input; 687 documentElement2.appendChild(el).innerHTML = "<a id='" + expando + "' href='' disabled='disabled'></a><select id='" + expando + "-\r\\' disabled='disabled'><option selected=''></option></select>"; 688 if (!el.querySelectorAll("[selected]").length) { 689 rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")"); 690 } 691 if (!el.querySelectorAll("[id~=" + expando + "-]").length) { 692 rbuggyQSA.push("~="); 693 } 694 if (!el.querySelectorAll("a#" + expando + "+*").length) { 695 rbuggyQSA.push(".#.+[+~]"); 696 } 697 if (!el.querySelectorAll(":checked").length) { 698 rbuggyQSA.push(":checked"); 699 } 700 input = document3.createElement("input"); 701 input.setAttribute("type", "hidden"); 702 el.appendChild(input).setAttribute("name", "D"); 703 documentElement2.appendChild(el).disabled = true; 704 if (el.querySelectorAll(":disabled").length !== 2) { 705 rbuggyQSA.push(":enabled", ":disabled"); 706 } 707 input = document3.createElement("input"); 708 input.setAttribute("name", ""); 709 el.appendChild(input); 710 if (!el.querySelectorAll("[name='']").length) { 711 rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + `*(?:''|"")`); 712 } 713 }); 714 if (!support.cssHas) { 715 rbuggyQSA.push(":has"); 716 } 717 rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")); 718 sortOrder = function(a, b) { 719 if (a === b) { 720 hasDuplicate = true; 721 return 0; 722 } 723 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; 724 if (compare) { 725 return compare; 726 } 727 compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : ( 728 // Otherwise we know they are disconnected 729 1 730 ); 731 if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) { 732 if (a === document3 || a.ownerDocument == preferredDoc && find.contains(preferredDoc, a)) { 733 return -1; 734 } 735 if (b === document3 || b.ownerDocument == preferredDoc && find.contains(preferredDoc, b)) { 736 return 1; 737 } 738 return sortInput ? indexOf.call(sortInput, a) - indexOf.call(sortInput, b) : 0; 739 } 740 return compare & 4 ? -1 : 1; 741 }; 742 return document3; 743 } 744 find.matches = function(expr, elements) { 745 return find(expr, null, null, elements); 746 }; 747 find.matchesSelector = function(elem, expr) { 748 setDocument(elem); 749 if (documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyQSA || !rbuggyQSA.test(expr))) { 750 try { 751 var ret = matches.call(elem, expr); 752 if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document 753 // fragment in IE 9 754 elem.document && elem.document.nodeType !== 11) { 755 return ret; 756 } 757 } catch (e) { 758 nonnativeSelectorCache(expr, true); 759 } 760 } 761 return find(expr, document3, null, [elem]).length > 0; 762 }; 763 find.contains = function(context, elem) { 764 if ((context.ownerDocument || context) != document3) { 765 setDocument(context); 766 } 767 return jQuery3.contains(context, elem); 768 }; 769 find.attr = function(elem, name) { 770 if ((elem.ownerDocument || elem) != document3) { 771 setDocument(elem); 772 } 773 var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0; 774 if (val !== void 0) { 775 return val; 776 } 777 return elem.getAttribute(name); 778 }; 779 find.error = function(msg) { 780 throw new Error("Syntax error, unrecognized expression: " + msg); 781 }; 782 jQuery3.uniqueSort = function(results) { 783 var elem, duplicates = [], j = 0, i2 = 0; 784 hasDuplicate = !support.sortStable; 785 sortInput = !support.sortStable && slice.call(results, 0); 786 sort.call(results, sortOrder); 787 if (hasDuplicate) { 788 while (elem = results[i2++]) { 789 if (elem === results[i2]) { 790 j = duplicates.push(i2); 791 } 792 } 793 while (j--) { 794 splice.call(results, duplicates[j], 1); 795 } 796 } 797 sortInput = null; 798 return results; 799 }; 800 jQuery3.fn.uniqueSort = function() { 801 return this.pushStack(jQuery3.uniqueSort(slice.apply(this))); 802 }; 803 Expr = jQuery3.expr = { 804 // Can be adjusted by the user 805 cacheLength: 50, 806 createPseudo: markFunction, 807 match: matchExpr, 808 attrHandle: {}, 809 find: {}, 810 relative: { 811 ">": { dir: "parentNode", first: true }, 812 " ": { dir: "parentNode" }, 813 "+": { dir: "previousSibling", first: true }, 814 "~": { dir: "previousSibling" } 815 }, 816 preFilter: { 817 ATTR: function(match) { 818 match[1] = match[1].replace(runescape, funescape); 819 match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape); 820 if (match[2] === "~=") { 821 match[3] = " " + match[3] + " "; 822 } 823 return match.slice(0, 4); 824 }, 825 CHILD: function(match) { 826 match[1] = match[1].toLowerCase(); 827 if (match[1].slice(0, 3) === "nth") { 828 if (!match[3]) { 829 find.error(match[0]); 830 } 831 match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd")); 832 match[5] = +(match[7] + match[8] || match[3] === "odd"); 833 } else if (match[3]) { 834 find.error(match[0]); 835 } 836 return match; 837 }, 838 PSEUDO: function(match) { 839 var excess, unquoted = !match[6] && match[2]; 840 if (matchExpr.CHILD.test(match[0])) { 841 return null; 842 } 843 if (match[3]) { 844 match[2] = match[4] || match[5] || ""; 845 } else if (unquoted && rpseudo.test(unquoted) && // Get excess from tokenize (recursively) 846 (excess = tokenize(unquoted, true)) && // advance to the next closing parenthesis 847 (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) { 848 match[0] = match[0].slice(0, excess); 849 match[2] = unquoted.slice(0, excess); 850 } 851 return match.slice(0, 3); 852 } 853 }, 854 filter: { 855 TAG: function(nodeNameSelector) { 856 var expectedNodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase(); 857 return nodeNameSelector === "*" ? function() { 858 return true; 859 } : function(elem) { 860 return nodeName(elem, expectedNodeName); 861 }; 862 }, 863 CLASS: function(className) { 864 var pattern = classCache[className + " "]; 865 return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function(elem) { 866 return pattern.test( 867 typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" 868 ); 869 }); 870 }, 871 ATTR: function(name, operator, check) { 872 return function(elem) { 873 var result = find.attr(elem, name); 874 if (result == null) { 875 return operator === "!="; 876 } 877 if (!operator) { 878 return true; 879 } 880 result += ""; 881 if (operator === "=") { 882 return result === check; 883 } 884 if (operator === "!=") { 885 return result !== check; 886 } 887 if (operator === "^=") { 888 return check && result.indexOf(check) === 0; 889 } 890 if (operator === "*=") { 891 return check && result.indexOf(check) > -1; 892 } 893 if (operator === "$=") { 894 return check && result.slice(-check.length) === check; 895 } 896 if (operator === "~=") { 897 return (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1; 898 } 899 if (operator === "|=") { 900 return result === check || result.slice(0, check.length + 1) === check + "-"; 901 } 902 return false; 903 }; 904 }, 905 CHILD: function(type, what, _argument, first, last) { 906 var simple = type.slice(0, 3) !== "nth", forward = type.slice(-4) !== "last", ofType = what === "of-type"; 907 return first === 1 && last === 0 ? ( 908 // Shortcut for :nth-*(n) 909 function(elem) { 910 return !!elem.parentNode; 911 } 912 ) : function(elem, _context, xml) { 913 var cache, outerCache, node, nodeIndex, start, dir2 = simple !== forward ? "nextSibling" : "previousSibling", parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType, diff = false; 914 if (parent) { 915 if (simple) { 916 while (dir2) { 917 node = elem; 918 while (node = node[dir2]) { 919 if (ofType ? nodeName(node, name) : node.nodeType === 1) { 920 return false; 921 } 922 } 923 start = dir2 = type === "only" && !start && "nextSibling"; 924 } 925 return true; 926 } 927 start = [forward ? parent.firstChild : parent.lastChild]; 928 if (forward && useCache) { 929 outerCache = parent[expando] || (parent[expando] = {}); 930 cache = outerCache[type] || []; 931 nodeIndex = cache[0] === dirruns && cache[1]; 932 diff = nodeIndex && cache[2]; 933 node = nodeIndex && parent.childNodes[nodeIndex]; 934 while (node = ++nodeIndex && node && node[dir2] || // Fallback to seeking `elem` from the start 935 (diff = nodeIndex = 0) || start.pop()) { 936 if (node.nodeType === 1 && ++diff && node === elem) { 937 outerCache[type] = [dirruns, nodeIndex, diff]; 938 break; 939 } 940 } 941 } else { 942 if (useCache) { 943 outerCache = elem[expando] || (elem[expando] = {}); 944 cache = outerCache[type] || []; 945 nodeIndex = cache[0] === dirruns && cache[1]; 946 diff = nodeIndex; 947 } 948 if (diff === false) { 949 while (node = ++nodeIndex && node && node[dir2] || (diff = nodeIndex = 0) || start.pop()) { 950 if ((ofType ? nodeName(node, name) : node.nodeType === 1) && ++diff) { 951 if (useCache) { 952 outerCache = node[expando] || (node[expando] = {}); 953 outerCache[type] = [dirruns, diff]; 954 } 955 if (node === elem) { 956 break; 957 } 958 } 959 } 960 } 961 } 962 diff -= last; 963 return diff === first || diff % first === 0 && diff / first >= 0; 964 } 965 }; 966 }, 967 PSEUDO: function(pseudo, argument) { 968 var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || find.error("unsupported pseudo: " + pseudo); 969 if (fn[expando]) { 970 return fn(argument); 971 } 972 if (fn.length > 1) { 973 args = [pseudo, pseudo, "", argument]; 974 return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, matches2) { 975 var idx, matched = fn(seed, argument), i2 = matched.length; 976 while (i2--) { 977 idx = indexOf.call(seed, matched[i2]); 978 seed[idx] = !(matches2[idx] = matched[i2]); 979 } 980 }) : function(elem) { 981 return fn(elem, 0, args); 982 }; 983 } 984 return fn; 985 } 986 }, 987 pseudos: { 988 // Potentially complex pseudos 989 not: markFunction(function(selector) { 990 var input = [], results = [], matcher = compile(selector.replace(rtrimCSS, "$1")); 991 return matcher[expando] ? markFunction(function(seed, matches2, _context, xml) { 992 var elem, unmatched = matcher(seed, null, xml, []), i2 = seed.length; 993 while (i2--) { 994 if (elem = unmatched[i2]) { 995 seed[i2] = !(matches2[i2] = elem); 996 } 997 } 998 }) : function(elem, _context, xml) { 999 input[0] = elem; 1000 matcher(input, null, xml, results); 1001 input[0] = null; 1002 return !results.pop(); 1003 }; 1004 }), 1005 has: markFunction(function(selector) { 1006 return function(elem) { 1007 return find(selector, elem).length > 0; 1008 }; 1009 }), 1010 contains: markFunction(function(text) { 1011 text = text.replace(runescape, funescape); 1012 return function(elem) { 1013 return (elem.textContent || jQuery3.text(elem)).indexOf(text) > -1; 1014 }; 1015 }), 1016 // "Whether an element is represented by a :lang() selector 1017 // is based solely on the element's language value 1018 // being equal to the identifier C, 1019 // or beginning with the identifier C immediately followed by "-". 1020 // The matching of C against the element's language value is performed case-insensitively. 1021 // The identifier C does not have to be a valid language name." 1022 // https://www.w3.org/TR/selectors/#lang-pseudo 1023 lang: markFunction(function(lang) { 1024 if (!ridentifier.test(lang || "")) { 1025 find.error("unsupported lang: " + lang); 1026 } 1027 lang = lang.replace(runescape, funescape).toLowerCase(); 1028 return function(elem) { 1029 var elemLang; 1030 do { 1031 if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) { 1032 elemLang = elemLang.toLowerCase(); 1033 return elemLang === lang || elemLang.indexOf(lang + "-") === 0; 1034 } 1035 } while ((elem = elem.parentNode) && elem.nodeType === 1); 1036 return false; 1037 }; 1038 }), 1039 // Miscellaneous 1040 target: function(elem) { 1041 var hash = window2.location && window2.location.hash; 1042 return hash && hash.slice(1) === elem.id; 1043 }, 1044 root: function(elem) { 1045 return elem === documentElement2; 1046 }, 1047 focus: function(elem) { 1048 return elem === safeActiveElement() && document3.hasFocus() && !!(elem.type || elem.href || ~elem.tabIndex); 1049 }, 1050 // Boolean properties 1051 enabled: createDisabledPseudo(false), 1052 disabled: createDisabledPseudo(true), 1053 checked: function(elem) { 1054 return nodeName(elem, "input") && !!elem.checked || nodeName(elem, "option") && !!elem.selected; 1055 }, 1056 selected: function(elem) { 1057 if (elem.parentNode) { 1058 elem.parentNode.selectedIndex; 1059 } 1060 return elem.selected === true; 1061 }, 1062 // Contents 1063 empty: function(elem) { 1064 for (elem = elem.firstChild; elem; elem = elem.nextSibling) { 1065 if (elem.nodeType < 6) { 1066 return false; 1067 } 1068 } 1069 return true; 1070 }, 1071 parent: function(elem) { 1072 return !Expr.pseudos.empty(elem); 1073 }, 1074 // Element/input types 1075 header: function(elem) { 1076 return rheader.test(elem.nodeName); 1077 }, 1078 input: function(elem) { 1079 return rinputs.test(elem.nodeName); 1080 }, 1081 button: function(elem) { 1082 return nodeName(elem, "input") && elem.type === "button" || nodeName(elem, "button"); 1083 }, 1084 text: function(elem) { 1085 var attr; 1086 return nodeName(elem, "input") && elem.type === "text" && // Support: IE <10 only 1087 // New HTML5 attribute values (e.g., "search") appear 1088 // with elem.type === "text" 1089 ((attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text"); 1090 }, 1091 // Position-in-collection 1092 first: createPositionalPseudo(function() { 1093 return [0]; 1094 }), 1095 last: createPositionalPseudo(function(_matchIndexes, length) { 1096 return [length - 1]; 1097 }), 1098 eq: createPositionalPseudo(function(_matchIndexes, length, argument) { 1099 return [argument < 0 ? argument + length : argument]; 1100 }), 1101 even: createPositionalPseudo(function(matchIndexes, length) { 1102 var i2 = 0; 1103 for (; i2 < length; i2 += 2) { 1104 matchIndexes.push(i2); 1105 } 1106 return matchIndexes; 1107 }), 1108 odd: createPositionalPseudo(function(matchIndexes, length) { 1109 var i2 = 1; 1110 for (; i2 < length; i2 += 2) { 1111 matchIndexes.push(i2); 1112 } 1113 return matchIndexes; 1114 }), 1115 lt: createPositionalPseudo(function(matchIndexes, length, argument) { 1116 var i2; 1117 if (argument < 0) { 1118 i2 = argument + length; 1119 } else if (argument > length) { 1120 i2 = length; 1121 } else { 1122 i2 = argument; 1123 } 1124 for (; --i2 >= 0; ) { 1125 matchIndexes.push(i2); 1126 } 1127 return matchIndexes; 1128 }), 1129 gt: createPositionalPseudo(function(matchIndexes, length, argument) { 1130 var i2 = argument < 0 ? argument + length : argument; 1131 for (; ++i2 < length; ) { 1132 matchIndexes.push(i2); 1133 } 1134 return matchIndexes; 1135 }) 1136 } 1137 }; 1138 Expr.pseudos.nth = Expr.pseudos.eq; 1139 for (i in { radio: true, checkbox: true, file: true, password: true, image: true }) { 1140 Expr.pseudos[i] = createInputPseudo(i); 1141 } 1142 for (i in { submit: true, reset: true }) { 1143 Expr.pseudos[i] = createButtonPseudo(i); 1144 } 1145 function setFilters() { 1146 } 1147 setFilters.prototype = Expr.filters = Expr.pseudos; 1148 Expr.setFilters = new setFilters(); 1149 function tokenize(selector, parseOnly) { 1150 var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + " "]; 1151 if (cached) { 1152 return parseOnly ? 0 : cached.slice(0); 1153 } 1154 soFar = selector; 1155 groups = []; 1156 preFilters = Expr.preFilter; 1157 while (soFar) { 1158 if (!matched || (match = rcomma.exec(soFar))) { 1159 if (match) { 1160 soFar = soFar.slice(match[0].length) || soFar; 1161 } 1162 groups.push(tokens = []); 1163 } 1164 matched = false; 1165 if (match = rleadingCombinator.exec(soFar)) { 1166 matched = match.shift(); 1167 tokens.push({ 1168 value: matched, 1169 // Cast descendant combinators to space 1170 type: match[0].replace(rtrimCSS, " ") 1171 }); 1172 soFar = soFar.slice(matched.length); 1173 } 1174 for (type in Expr.filter) { 1175 if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) { 1176 matched = match.shift(); 1177 tokens.push({ 1178 value: matched, 1179 type, 1180 matches: match 1181 }); 1182 soFar = soFar.slice(matched.length); 1183 } 1184 } 1185 if (!matched) { 1186 break; 1187 } 1188 } 1189 if (parseOnly) { 1190 return soFar.length; 1191 } 1192 return soFar ? find.error(selector) : ( 1193 // Cache the tokens 1194 tokenCache(selector, groups).slice(0) 1195 ); 1196 } 1197 function toSelector(tokens) { 1198 var i2 = 0, len = tokens.length, selector = ""; 1199 for (; i2 < len; i2++) { 1200 selector += tokens[i2].value; 1201 } 1202 return selector; 1203 } 1204 function addCombinator(matcher, combinator, base) { 1205 var dir2 = combinator.dir, skip = combinator.next, key = skip || dir2, checkNonElements = base && key === "parentNode", doneName = done++; 1206 return combinator.first ? ( 1207 // Check against closest ancestor/preceding element 1208 function(elem, context, xml) { 1209 while (elem = elem[dir2]) { 1210 if (elem.nodeType === 1 || checkNonElements) { 1211 return matcher(elem, context, xml); 1212 } 1213 } 1214 return false; 1215 } 1216 ) : ( 1217 // Check against all ancestor/preceding elements 1218 function(elem, context, xml) { 1219 var oldCache, outerCache, newCache = [dirruns, doneName]; 1220 if (xml) { 1221 while (elem = elem[dir2]) { 1222 if (elem.nodeType === 1 || checkNonElements) { 1223 if (matcher(elem, context, xml)) { 1224 return true; 1225 } 1226 } 1227 } 1228 } else { 1229 while (elem = elem[dir2]) { 1230 if (elem.nodeType === 1 || checkNonElements) { 1231 outerCache = elem[expando] || (elem[expando] = {}); 1232 if (skip && nodeName(elem, skip)) { 1233 elem = elem[dir2] || elem; 1234 } else if ((oldCache = outerCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) { 1235 return newCache[2] = oldCache[2]; 1236 } else { 1237 outerCache[key] = newCache; 1238 if (newCache[2] = matcher(elem, context, xml)) { 1239 return true; 1240 } 1241 } 1242 } 1243 } 1244 } 1245 return false; 1246 } 1247 ); 1248 } 1249 function elementMatcher(matchers) { 1250 return matchers.length > 1 ? function(elem, context, xml) { 1251 var i2 = matchers.length; 1252 while (i2--) { 1253 if (!matchers[i2](elem, context, xml)) { 1254 return false; 1255 } 1256 } 1257 return true; 1258 } : matchers[0]; 1259 } 1260 function multipleContexts(selector, contexts, results) { 1261 var i2 = 0, len = contexts.length; 1262 for (; i2 < len; i2++) { 1263 find(selector, contexts[i2], results); 1264 } 1265 return results; 1266 } 1267 function condense(unmatched, map, filter, context, xml) { 1268 var elem, newUnmatched = [], i2 = 0, len = unmatched.length, mapped = map != null; 1269 for (; i2 < len; i2++) { 1270 if (elem = unmatched[i2]) { 1271 if (!filter || filter(elem, context, xml)) { 1272 newUnmatched.push(elem); 1273 if (mapped) { 1274 map.push(i2); 1275 } 1276 } 1277 } 1278 } 1279 return newUnmatched; 1280 } 1281 function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) { 1282 if (postFilter && !postFilter[expando]) { 1283 postFilter = setMatcher(postFilter); 1284 } 1285 if (postFinder && !postFinder[expando]) { 1286 postFinder = setMatcher(postFinder, postSelector); 1287 } 1288 return markFunction(function(seed, results, context, xml) { 1289 var temp, i2, elem, matcherOut, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts( 1290 selector || "*", 1291 context.nodeType ? [context] : context, 1292 [] 1293 ), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems; 1294 if (matcher) { 1295 matcherOut = postFinder || (seed ? preFilter : preexisting || postFilter) ? ( 1296 // ...intermediate processing is necessary 1297 [] 1298 ) : ( 1299 // ...otherwise use results directly 1300 results 1301 ); 1302 matcher(matcherIn, matcherOut, context, xml); 1303 } else { 1304 matcherOut = matcherIn; 1305 } 1306 if (postFilter) { 1307 temp = condense(matcherOut, postMap); 1308 postFilter(temp, [], context, xml); 1309 i2 = temp.length; 1310 while (i2--) { 1311 if (elem = temp[i2]) { 1312 matcherOut[postMap[i2]] = !(matcherIn[postMap[i2]] = elem); 1313 } 1314 } 1315 } 1316 if (seed) { 1317 if (postFinder || preFilter) { 1318 if (postFinder) { 1319 temp = []; 1320 i2 = matcherOut.length; 1321 while (i2--) { 1322 if (elem = matcherOut[i2]) { 1323 temp.push(matcherIn[i2] = elem); 1324 } 1325 } 1326 postFinder(null, matcherOut = [], temp, xml); 1327 } 1328 i2 = matcherOut.length; 1329 while (i2--) { 1330 if ((elem = matcherOut[i2]) && (temp = postFinder ? indexOf.call(seed, elem) : preMap[i2]) > -1) { 1331 seed[temp] = !(results[temp] = elem); 1332 } 1333 } 1334 } 1335 } else { 1336 matcherOut = condense( 1337 matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut 1338 ); 1339 if (postFinder) { 1340 postFinder(null, results, matcherOut, xml); 1341 } else { 1342 push2.apply(results, matcherOut); 1343 } 1344 } 1345 }); 1346 } 1347 function matcherFromTokens(tokens) { 1348 var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[" "], i2 = leadingRelative ? 1 : 0, matchContext = addCombinator(function(elem) { 1349 return elem === checkContext; 1350 }, implicitRelative, true), matchAnyContext = addCombinator(function(elem) { 1351 return indexOf.call(checkContext, elem) > -1; 1352 }, implicitRelative, true), matchers = [function(elem, context, xml) { 1353 var ret = !leadingRelative && (xml || context != outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); 1354 checkContext = null; 1355 return ret; 1356 }]; 1357 for (; i2 < len; i2++) { 1358 if (matcher = Expr.relative[tokens[i2].type]) { 1359 matchers = [addCombinator(elementMatcher(matchers), matcher)]; 1360 } else { 1361 matcher = Expr.filter[tokens[i2].type].apply(null, tokens[i2].matches); 1362 if (matcher[expando]) { 1363 j = ++i2; 1364 for (; j < len; j++) { 1365 if (Expr.relative[tokens[j].type]) { 1366 break; 1367 } 1368 } 1369 return setMatcher( 1370 i2 > 1 && elementMatcher(matchers), 1371 i2 > 1 && toSelector( 1372 // If the preceding token was a descendant combinator, insert an implicit any-element `*` 1373 tokens.slice(0, i2 - 1).concat({ value: tokens[i2 - 2].type === " " ? "*" : "" }) 1374 ).replace(rtrimCSS, "$1"), 1375 matcher, 1376 i2 < j && matcherFromTokens(tokens.slice(i2, j)), 1377 j < len && matcherFromTokens(tokens = tokens.slice(j)), 1378 j < len && toSelector(tokens) 1379 ); 1380 } 1381 matchers.push(matcher); 1382 } 1383 } 1384 return elementMatcher(matchers); 1385 } 1386 function matcherFromGroupMatchers(elementMatchers, setMatchers) { 1387 var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function(seed, context, xml, results, outermost) { 1388 var elem, j, matcher, matchedCount = 0, i2 = "0", unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG("*", outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length; 1389 if (outermost) { 1390 outermostContext = context == document3 || context || outermost; 1391 } 1392 for (; i2 !== len && (elem = elems[i2]) != null; i2++) { 1393 if (byElement && elem) { 1394 j = 0; 1395 if (!context && elem.ownerDocument != document3) { 1396 setDocument(elem); 1397 xml = !documentIsHTML; 1398 } 1399 while (matcher = elementMatchers[j++]) { 1400 if (matcher(elem, context || document3, xml)) { 1401 push2.call(results, elem); 1402 break; 1403 } 1404 } 1405 if (outermost) { 1406 dirruns = dirrunsUnique; 1407 } 1408 } 1409 if (bySet) { 1410 if (elem = !matcher && elem) { 1411 matchedCount--; 1412 } 1413 if (seed) { 1414 unmatched.push(elem); 1415 } 1416 } 1417 } 1418 matchedCount += i2; 1419 if (bySet && i2 !== matchedCount) { 1420 j = 0; 1421 while (matcher = setMatchers[j++]) { 1422 matcher(unmatched, setMatched, context, xml); 1423 } 1424 if (seed) { 1425 if (matchedCount > 0) { 1426 while (i2--) { 1427 if (!(unmatched[i2] || setMatched[i2])) { 1428 setMatched[i2] = pop.call(results); 1429 } 1430 } 1431 } 1432 setMatched = condense(setMatched); 1433 } 1434 push2.apply(results, setMatched); 1435 if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) { 1436 jQuery3.uniqueSort(results); 1437 } 1438 } 1439 if (outermost) { 1440 dirruns = dirrunsUnique; 1441 outermostContext = contextBackup; 1442 } 1443 return unmatched; 1444 }; 1445 return bySet ? markFunction(superMatcher) : superMatcher; 1446 } 1447 function compile(selector, match) { 1448 var i2, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + " "]; 1449 if (!cached) { 1450 if (!match) { 1451 match = tokenize(selector); 1452 } 1453 i2 = match.length; 1454 while (i2--) { 1455 cached = matcherFromTokens(match[i2]); 1456 if (cached[expando]) { 1457 setMatchers.push(cached); 1458 } else { 1459 elementMatchers.push(cached); 1460 } 1461 } 1462 cached = compilerCache( 1463 selector, 1464 matcherFromGroupMatchers(elementMatchers, setMatchers) 1465 ); 1466 cached.selector = selector; 1467 } 1468 return cached; 1469 } 1470 function select(selector, context, results, seed) { 1471 var i2, tokens, token, type, find2, compiled = typeof selector === "function" && selector, match = !seed && tokenize(selector = compiled.selector || selector); 1472 results = results || []; 1473 if (match.length === 1) { 1474 tokens = match[0] = match[0].slice(0); 1475 if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) { 1476 context = (Expr.find.ID( 1477 token.matches[0].replace(runescape, funescape), 1478 context 1479 ) || [])[0]; 1480 if (!context) { 1481 return results; 1482 } else if (compiled) { 1483 context = context.parentNode; 1484 } 1485 selector = selector.slice(tokens.shift().value.length); 1486 } 1487 i2 = matchExpr.needsContext.test(selector) ? 0 : tokens.length; 1488 while (i2--) { 1489 token = tokens[i2]; 1490 if (Expr.relative[type = token.type]) { 1491 break; 1492 } 1493 if (find2 = Expr.find[type]) { 1494 if (seed = find2( 1495 token.matches[0].replace(runescape, funescape), 1496 rsibling.test(tokens[0].type) && testContext(context.parentNode) || context 1497 )) { 1498 tokens.splice(i2, 1); 1499 selector = seed.length && toSelector(tokens); 1500 if (!selector) { 1501 push2.apply(results, seed); 1502 return results; 1503 } 1504 break; 1505 } 1506 } 1507 } 1508 } 1509 (compiled || compile(selector, match))( 1510 seed, 1511 context, 1512 !documentIsHTML, 1513 results, 1514 !context || rsibling.test(selector) && testContext(context.parentNode) || context 1515 ); 1516 return results; 1517 } 1518 support.sortStable = expando.split("").sort(sortOrder).join("") === expando; 1519 setDocument(); 1520 support.sortDetached = assert(function(el) { 1521 return el.compareDocumentPosition(document3.createElement("fieldset")) & 1; 1522 }); 1523 jQuery3.find = find; 1524 jQuery3.expr[":"] = jQuery3.expr.pseudos; 1525 jQuery3.unique = jQuery3.uniqueSort; 1526 find.compile = compile; 1527 find.select = select; 1528 find.setDocument = setDocument; 1529 find.tokenize = tokenize; 1530 find.escape = jQuery3.escapeSelector; 1531 find.getText = jQuery3.text; 1532 find.isXML = jQuery3.isXMLDoc; 1533 find.selectors = jQuery3.expr; 1534 find.support = jQuery3.support; 1535 find.uniqueSort = jQuery3.uniqueSort; 1536 })(); 1537 var dir = function(elem, dir2, until) { 1538 var matched = [], truncate = until !== void 0; 1539 while ((elem = elem[dir2]) && elem.nodeType !== 9) { 1540 if (elem.nodeType === 1) { 1541 if (truncate && jQuery3(elem).is(until)) { 1542 break; 1543 } 1544 matched.push(elem); 1545 } 1546 } 1547 return matched; 1548 }; 1549 var siblings = function(n, elem) { 1550 var matched = []; 1551 for (; n; n = n.nextSibling) { 1552 if (n.nodeType === 1 && n !== elem) { 1553 matched.push(n); 1554 } 1555 } 1556 return matched; 1557 }; 1558 var rneedsContext = jQuery3.expr.match.needsContext; 1559 var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; 1560 function winnow(elements, qualifier, not) { 1561 if (isFunction(qualifier)) { 1562 return jQuery3.grep(elements, function(elem, i) { 1563 return !!qualifier.call(elem, i, elem) !== not; 1564 }); 1565 } 1566 if (qualifier.nodeType) { 1567 return jQuery3.grep(elements, function(elem) { 1568 return elem === qualifier !== not; 1569 }); 1570 } 1571 if (typeof qualifier !== "string") { 1572 return jQuery3.grep(elements, function(elem) { 1573 return indexOf.call(qualifier, elem) > -1 !== not; 1574 }); 1575 } 1576 return jQuery3.filter(qualifier, elements, not); 1577 } 1578 jQuery3.filter = function(expr, elems, not) { 1579 var elem = elems[0]; 1580 if (not) { 1581 expr = ":not(" + expr + ")"; 1582 } 1583 if (elems.length === 1 && elem.nodeType === 1) { 1584 return jQuery3.find.matchesSelector(elem, expr) ? [elem] : []; 1585 } 1586 return jQuery3.find.matches(expr, jQuery3.grep(elems, function(elem2) { 1587 return elem2.nodeType === 1; 1588 })); 1589 }; 1590 jQuery3.fn.extend({ 1591 find: function(selector) { 1592 var i, ret, len = this.length, self = this; 1593 if (typeof selector !== "string") { 1594 return this.pushStack(jQuery3(selector).filter(function() { 1595 for (i = 0; i < len; i++) { 1596 if (jQuery3.contains(self[i], this)) { 1597 return true; 1598 } 1599 } 1600 })); 1601 } 1602 ret = this.pushStack([]); 1603 for (i = 0; i < len; i++) { 1604 jQuery3.find(selector, self[i], ret); 1605 } 1606 return len > 1 ? jQuery3.uniqueSort(ret) : ret; 1607 }, 1608 filter: function(selector) { 1609 return this.pushStack(winnow(this, selector || [], false)); 1610 }, 1611 not: function(selector) { 1612 return this.pushStack(winnow(this, selector || [], true)); 1613 }, 1614 is: function(selector) { 1615 return !!winnow( 1616 this, 1617 // If this is a positional/relative selector, check membership in the returned set 1618 // so $("p:first").is("p:last") won't return true for a doc with two "p". 1619 typeof selector === "string" && rneedsContext.test(selector) ? jQuery3(selector) : selector || [], 1620 false 1621 ).length; 1622 } 1623 }); 1624 var rootjQuery, rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, init = jQuery3.fn.init = function(selector, context, root) { 1625 var match, elem; 1626 if (!selector) { 1627 return this; 1628 } 1629 root = root || rootjQuery; 1630 if (typeof selector === "string") { 1631 if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) { 1632 match = [null, selector, null]; 1633 } else { 1634 match = rquickExpr.exec(selector); 1635 } 1636 if (match && (match[1] || !context)) { 1637 if (match[1]) { 1638 context = context instanceof jQuery3 ? context[0] : context; 1639 jQuery3.merge(this, jQuery3.parseHTML( 1640 match[1], 1641 context && context.nodeType ? context.ownerDocument || context : document2, 1642 true 1643 )); 1644 if (rsingleTag.test(match[1]) && jQuery3.isPlainObject(context)) { 1645 for (match in context) { 1646 if (isFunction(this[match])) { 1647 this[match](context[match]); 1648 } else { 1649 this.attr(match, context[match]); 1650 } 1651 } 1652 } 1653 return this; 1654 } else { 1655 elem = document2.getElementById(match[2]); 1656 if (elem) { 1657 this[0] = elem; 1658 this.length = 1; 1659 } 1660 return this; 1661 } 1662 } else if (!context || context.jquery) { 1663 return (context || root).find(selector); 1664 } else { 1665 return this.constructor(context).find(selector); 1666 } 1667 } else if (selector.nodeType) { 1668 this[0] = selector; 1669 this.length = 1; 1670 return this; 1671 } else if (isFunction(selector)) { 1672 return root.ready !== void 0 ? root.ready(selector) : ( 1673 // Execute immediately if ready is not present 1674 selector(jQuery3) 1675 ); 1676 } 1677 return jQuery3.makeArray(selector, this); 1678 }; 1679 init.prototype = jQuery3.fn; 1680 rootjQuery = jQuery3(document2); 1681 var rparentsprev = /^(?:parents|prev(?:Until|All))/, guaranteedUnique = { 1682 children: true, 1683 contents: true, 1684 next: true, 1685 prev: true 1686 }; 1687 jQuery3.fn.extend({ 1688 has: function(target) { 1689 var targets = jQuery3(target, this), l = targets.length; 1690 return this.filter(function() { 1691 var i = 0; 1692 for (; i < l; i++) { 1693 if (jQuery3.contains(this, targets[i])) { 1694 return true; 1695 } 1696 } 1697 }); 1698 }, 1699 closest: function(selectors, context) { 1700 var cur, i = 0, l = this.length, matched = [], targets = typeof selectors !== "string" && jQuery3(selectors); 1701 if (!rneedsContext.test(selectors)) { 1702 for (; i < l; i++) { 1703 for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) { 1704 if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : ( 1705 // Don't pass non-elements to jQuery#find 1706 cur.nodeType === 1 && jQuery3.find.matchesSelector(cur, selectors) 1707 ))) { 1708 matched.push(cur); 1709 break; 1710 } 1711 } 1712 } 1713 } 1714 return this.pushStack(matched.length > 1 ? jQuery3.uniqueSort(matched) : matched); 1715 }, 1716 // Determine the position of an element within the set 1717 index: function(elem) { 1718 if (!elem) { 1719 return this[0] && this[0].parentNode ? this.first().prevAll().length : -1; 1720 } 1721 if (typeof elem === "string") { 1722 return indexOf.call(jQuery3(elem), this[0]); 1723 } 1724 return indexOf.call( 1725 this, 1726 // If it receives a jQuery object, the first element is used 1727 elem.jquery ? elem[0] : elem 1728 ); 1729 }, 1730 add: function(selector, context) { 1731 return this.pushStack( 1732 jQuery3.uniqueSort( 1733 jQuery3.merge(this.get(), jQuery3(selector, context)) 1734 ) 1735 ); 1736 }, 1737 addBack: function(selector) { 1738 return this.add( 1739 selector == null ? this.prevObject : this.prevObject.filter(selector) 1740 ); 1741 } 1742 }); 1743 function sibling(cur, dir2) { 1744 while ((cur = cur[dir2]) && cur.nodeType !== 1) { 1745 } 1746 return cur; 1747 } 1748 jQuery3.each({ 1749 parent: function(elem) { 1750 var parent = elem.parentNode; 1751 return parent && parent.nodeType !== 11 ? parent : null; 1752 }, 1753 parents: function(elem) { 1754 return dir(elem, "parentNode"); 1755 }, 1756 parentsUntil: function(elem, _i, until) { 1757 return dir(elem, "parentNode", until); 1758 }, 1759 next: function(elem) { 1760 return sibling(elem, "nextSibling"); 1761 }, 1762 prev: function(elem) { 1763 return sibling(elem, "previousSibling"); 1764 }, 1765 nextAll: function(elem) { 1766 return dir(elem, "nextSibling"); 1767 }, 1768 prevAll: function(elem) { 1769 return dir(elem, "previousSibling"); 1770 }, 1771 nextUntil: function(elem, _i, until) { 1772 return dir(elem, "nextSibling", until); 1773 }, 1774 prevUntil: function(elem, _i, until) { 1775 return dir(elem, "previousSibling", until); 1776 }, 1777 siblings: function(elem) { 1778 return siblings((elem.parentNode || {}).firstChild, elem); 1779 }, 1780 children: function(elem) { 1781 return siblings(elem.firstChild); 1782 }, 1783 contents: function(elem) { 1784 if (elem.contentDocument != null && // Support: IE 11+ 1785 // <object> elements with no `data` attribute has an object 1786 // `contentDocument` with a `null` prototype. 1787 getProto(elem.contentDocument)) { 1788 return elem.contentDocument; 1789 } 1790 if (nodeName(elem, "template")) { 1791 elem = elem.content || elem; 1792 } 1793 return jQuery3.merge([], elem.childNodes); 1794 } 1795 }, function(name, fn) { 1796 jQuery3.fn[name] = function(until, selector) { 1797 var matched = jQuery3.map(this, fn, until); 1798 if (name.slice(-5) !== "Until") { 1799 selector = until; 1800 } 1801 if (selector && typeof selector === "string") { 1802 matched = jQuery3.filter(selector, matched); 1803 } 1804 if (this.length > 1) { 1805 if (!guaranteedUnique[name]) { 1806 jQuery3.uniqueSort(matched); 1807 } 1808 if (rparentsprev.test(name)) { 1809 matched.reverse(); 1810 } 1811 } 1812 return this.pushStack(matched); 1813 }; 1814 }); 1815 var rnothtmlwhite = /[^\x20\t\r\n\f]+/g; 1816 function createOptions(options) { 1817 var object = {}; 1818 jQuery3.each(options.match(rnothtmlwhite) || [], function(_, flag) { 1819 object[flag] = true; 1820 }); 1821 return object; 1822 } 1823 jQuery3.Callbacks = function(options) { 1824 options = typeof options === "string" ? createOptions(options) : jQuery3.extend({}, options); 1825 var firing, memory, fired, locked, list = [], queue = [], firingIndex = -1, fire = function() { 1826 locked = locked || options.once; 1827 fired = firing = true; 1828 for (; queue.length; firingIndex = -1) { 1829 memory = queue.shift(); 1830 while (++firingIndex < list.length) { 1831 if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) { 1832 firingIndex = list.length; 1833 memory = false; 1834 } 1835 } 1836 } 1837 if (!options.memory) { 1838 memory = false; 1839 } 1840 firing = false; 1841 if (locked) { 1842 if (memory) { 1843 list = []; 1844 } else { 1845 list = ""; 1846 } 1847 } 1848 }, self = { 1849 // Add a callback or a collection of callbacks to the list 1850 add: function() { 1851 if (list) { 1852 if (memory && !firing) { 1853 firingIndex = list.length - 1; 1854 queue.push(memory); 1855 } 1856 (function add(args) { 1857 jQuery3.each(args, function(_, arg) { 1858 if (isFunction(arg)) { 1859 if (!options.unique || !self.has(arg)) { 1860 list.push(arg); 1861 } 1862 } else if (arg && arg.length && toType(arg) !== "string") { 1863 add(arg); 1864 } 1865 }); 1866 })(arguments); 1867 if (memory && !firing) { 1868 fire(); 1869 } 1870 } 1871 return this; 1872 }, 1873 // Remove a callback from the list 1874 remove: function() { 1875 jQuery3.each(arguments, function(_, arg) { 1876 var index; 1877 while ((index = jQuery3.inArray(arg, list, index)) > -1) { 1878 list.splice(index, 1); 1879 if (index <= firingIndex) { 1880 firingIndex--; 1881 } 1882 } 1883 }); 1884 return this; 1885 }, 1886 // Check if a given callback is in the list. 1887 // If no argument is given, return whether or not list has callbacks attached. 1888 has: function(fn) { 1889 return fn ? jQuery3.inArray(fn, list) > -1 : list.length > 0; 1890 }, 1891 // Remove all callbacks from the list 1892 empty: function() { 1893 if (list) { 1894 list = []; 1895 } 1896 return this; 1897 }, 1898 // Disable .fire and .add 1899 // Abort any current/pending executions 1900 // Clear all callbacks and values 1901 disable: function() { 1902 locked = queue = []; 1903 list = memory = ""; 1904 return this; 1905 }, 1906 disabled: function() { 1907 return !list; 1908 }, 1909 // Disable .fire 1910 // Also disable .add unless we have memory (since it would have no effect) 1911 // Abort any pending executions 1912 lock: function() { 1913 locked = queue = []; 1914 if (!memory && !firing) { 1915 list = memory = ""; 1916 } 1917 return this; 1918 }, 1919 locked: function() { 1920 return !!locked; 1921 }, 1922 // Call all callbacks with the given context and arguments 1923 fireWith: function(context, args) { 1924 if (!locked) { 1925 args = args || []; 1926 args = [context, args.slice ? args.slice() : args]; 1927 queue.push(args); 1928 if (!firing) { 1929 fire(); 1930 } 1931 } 1932 return this; 1933 }, 1934 // Call all the callbacks with the given arguments 1935 fire: function() { 1936 self.fireWith(this, arguments); 1937 return this; 1938 }, 1939 // To know if the callbacks have already been called at least once 1940 fired: function() { 1941 return !!fired; 1942 } 1943 }; 1944 return self; 1945 }; 1946 function Identity(v) { 1947 return v; 1948 } 1949 function Thrower(ex) { 1950 throw ex; 1951 } 1952 function adoptValue(value, resolve, reject, noValue) { 1953 var method; 1954 try { 1955 if (value && isFunction(method = value.promise)) { 1956 method.call(value).done(resolve).fail(reject); 1957 } else if (value && isFunction(method = value.then)) { 1958 method.call(value, resolve, reject); 1959 } else { 1960 resolve.apply(void 0, [value].slice(noValue)); 1961 } 1962 } catch (value2) { 1963 reject.apply(void 0, [value2]); 1964 } 1965 } 1966 jQuery3.extend({ 1967 Deferred: function(func) { 1968 var tuples = [ 1969 // action, add listener, callbacks, 1970 // ... .then handlers, argument index, [final state] 1971 [ 1972 "notify", 1973 "progress", 1974 jQuery3.Callbacks("memory"), 1975 jQuery3.Callbacks("memory"), 1976 2 1977 ], 1978 [ 1979 "resolve", 1980 "done", 1981 jQuery3.Callbacks("once memory"), 1982 jQuery3.Callbacks("once memory"), 1983 0, 1984 "resolved" 1985 ], 1986 [ 1987 "reject", 1988 "fail", 1989 jQuery3.Callbacks("once memory"), 1990 jQuery3.Callbacks("once memory"), 1991 1, 1992 "rejected" 1993 ] 1994 ], state = "pending", promise = { 1995 state: function() { 1996 return state; 1997 }, 1998 always: function() { 1999 deferred.done(arguments).fail(arguments); 2000 return this; 2001 }, 2002 "catch": function(fn) { 2003 return promise.then(null, fn); 2004 }, 2005 // Keep pipe for back-compat 2006 pipe: function() { 2007 var fns = arguments; 2008 return jQuery3.Deferred(function(newDefer) { 2009 jQuery3.each(tuples, function(_i, tuple) { 2010 var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; 2011 deferred[tuple[1]](function() { 2012 var returned = fn && fn.apply(this, arguments); 2013 if (returned && isFunction(returned.promise)) { 2014 returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject); 2015 } else { 2016 newDefer[tuple[0] + "With"]( 2017 this, 2018 fn ? [returned] : arguments 2019 ); 2020 } 2021 }); 2022 }); 2023 fns = null; 2024 }).promise(); 2025 }, 2026 then: function(onFulfilled, onRejected, onProgress) { 2027 var maxDepth = 0; 2028 function resolve(depth, deferred2, handler, special) { 2029 return function() { 2030 var that = this, args = arguments, mightThrow = function() { 2031 var returned, then; 2032 if (depth < maxDepth) { 2033 return; 2034 } 2035 returned = handler.apply(that, args); 2036 if (returned === deferred2.promise()) { 2037 throw new TypeError("Thenable self-resolution"); 2038 } 2039 then = returned && // Support: Promises/A+ section 2.3.4 2040 // https://promisesaplus.com/#point-64 2041 // Only check objects and functions for thenability 2042 (typeof returned === "object" || typeof returned === "function") && returned.then; 2043 if (isFunction(then)) { 2044 if (special) { 2045 then.call( 2046 returned, 2047 resolve(maxDepth, deferred2, Identity, special), 2048 resolve(maxDepth, deferred2, Thrower, special) 2049 ); 2050 } else { 2051 maxDepth++; 2052 then.call( 2053 returned, 2054 resolve(maxDepth, deferred2, Identity, special), 2055 resolve(maxDepth, deferred2, Thrower, special), 2056 resolve( 2057 maxDepth, 2058 deferred2, 2059 Identity, 2060 deferred2.notifyWith 2061 ) 2062 ); 2063 } 2064 } else { 2065 if (handler !== Identity) { 2066 that = void 0; 2067 args = [returned]; 2068 } 2069 (special || deferred2.resolveWith)(that, args); 2070 } 2071 }, process = special ? mightThrow : function() { 2072 try { 2073 mightThrow(); 2074 } catch (e) { 2075 if (jQuery3.Deferred.exceptionHook) { 2076 jQuery3.Deferred.exceptionHook( 2077 e, 2078 process.error 2079 ); 2080 } 2081 if (depth + 1 >= maxDepth) { 2082 if (handler !== Thrower) { 2083 that = void 0; 2084 args = [e]; 2085 } 2086 deferred2.rejectWith(that, args); 2087 } 2088 } 2089 }; 2090 if (depth) { 2091 process(); 2092 } else { 2093 if (jQuery3.Deferred.getErrorHook) { 2094 process.error = jQuery3.Deferred.getErrorHook(); 2095 } else if (jQuery3.Deferred.getStackHook) { 2096 process.error = jQuery3.Deferred.getStackHook(); 2097 } 2098 window2.setTimeout(process); 2099 } 2100 }; 2101 } 2102 return jQuery3.Deferred(function(newDefer) { 2103 tuples[0][3].add( 2104 resolve( 2105 0, 2106 newDefer, 2107 isFunction(onProgress) ? onProgress : Identity, 2108 newDefer.notifyWith 2109 ) 2110 ); 2111 tuples[1][3].add( 2112 resolve( 2113 0, 2114 newDefer, 2115 isFunction(onFulfilled) ? onFulfilled : Identity 2116 ) 2117 ); 2118 tuples[2][3].add( 2119 resolve( 2120 0, 2121 newDefer, 2122 isFunction(onRejected) ? onRejected : Thrower 2123 ) 2124 ); 2125 }).promise(); 2126 }, 2127 // Get a promise for this deferred 2128 // If obj is provided, the promise aspect is added to the object 2129 promise: function(obj) { 2130 return obj != null ? jQuery3.extend(obj, promise) : promise; 2131 } 2132 }, deferred = {}; 2133 jQuery3.each(tuples, function(i, tuple) { 2134 var list = tuple[2], stateString = tuple[5]; 2135 promise[tuple[1]] = list.add; 2136 if (stateString) { 2137 list.add( 2138 function() { 2139 state = stateString; 2140 }, 2141 // rejected_callbacks.disable 2142 // fulfilled_callbacks.disable 2143 tuples[3 - i][2].disable, 2144 // rejected_handlers.disable 2145 // fulfilled_handlers.disable 2146 tuples[3 - i][3].disable, 2147 // progress_callbacks.lock 2148 tuples[0][2].lock, 2149 // progress_handlers.lock 2150 tuples[0][3].lock 2151 ); 2152 } 2153 list.add(tuple[3].fire); 2154 deferred[tuple[0]] = function() { 2155 deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments); 2156 return this; 2157 }; 2158 deferred[tuple[0] + "With"] = list.fireWith; 2159 }); 2160 promise.promise(deferred); 2161 if (func) { 2162 func.call(deferred, deferred); 2163 } 2164 return deferred; 2165 }, 2166 // Deferred helper 2167 when: function(singleValue) { 2168 var remaining = arguments.length, i = remaining, resolveContexts = Array(i), resolveValues = slice.call(arguments), primary = jQuery3.Deferred(), updateFunc = function(i2) { 2169 return function(value) { 2170 resolveContexts[i2] = this; 2171 resolveValues[i2] = arguments.length > 1 ? slice.call(arguments) : value; 2172 if (!--remaining) { 2173 primary.resolveWith(resolveContexts, resolveValues); 2174 } 2175 }; 2176 }; 2177 if (remaining <= 1) { 2178 adoptValue( 2179 singleValue, 2180 primary.done(updateFunc(i)).resolve, 2181 primary.reject, 2182 !remaining 2183 ); 2184 if (primary.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) { 2185 return primary.then(); 2186 } 2187 } 2188 while (i--) { 2189 adoptValue(resolveValues[i], updateFunc(i), primary.reject); 2190 } 2191 return primary.promise(); 2192 } 2193 }); 2194 var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 2195 jQuery3.Deferred.exceptionHook = function(error, asyncError) { 2196 if (window2.console && window2.console.warn && error && rerrorNames.test(error.name)) { 2197 window2.console.warn( 2198 "jQuery.Deferred exception: " + error.message, 2199 error.stack, 2200 asyncError 2201 ); 2202 } 2203 }; 2204 jQuery3.readyException = function(error) { 2205 window2.setTimeout(function() { 2206 throw error; 2207 }); 2208 }; 2209 var readyList = jQuery3.Deferred(); 2210 jQuery3.fn.ready = function(fn) { 2211 readyList.then(fn).catch(function(error) { 2212 jQuery3.readyException(error); 2213 }); 2214 return this; 2215 }; 2216 jQuery3.extend({ 2217 // Is the DOM ready to be used? Set to true once it occurs. 2218 isReady: false, 2219 // A counter to track how many items to wait for before 2220 // the ready event fires. See trac-6781 2221 readyWait: 1, 2222 // Handle when the DOM is ready 2223 ready: function(wait) { 2224 if (wait === true ? --jQuery3.readyWait : jQuery3.isReady) { 2225 return; 2226 } 2227 jQuery3.isReady = true; 2228 if (wait !== true && --jQuery3.readyWait > 0) { 2229 return; 2230 } 2231 readyList.resolveWith(document2, [jQuery3]); 2232 } 2233 }); 2234 jQuery3.ready.then = readyList.then; 2235 function completed() { 2236 document2.removeEventListener("DOMContentLoaded", completed); 2237 window2.removeEventListener("load", completed); 2238 jQuery3.ready(); 2239 } 2240 if (document2.readyState === "complete" || document2.readyState !== "loading" && !document2.documentElement.doScroll) { 2241 window2.setTimeout(jQuery3.ready); 2242 } else { 2243 document2.addEventListener("DOMContentLoaded", completed); 2244 window2.addEventListener("load", completed); 2245 } 2246 var access = function(elems, fn, key, value, chainable, emptyGet, raw) { 2247 var i = 0, len = elems.length, bulk = key == null; 2248 if (toType(key) === "object") { 2249 chainable = true; 2250 for (i in key) { 2251 access(elems, fn, i, key[i], true, emptyGet, raw); 2252 } 2253 } else if (value !== void 0) { 2254 chainable = true; 2255 if (!isFunction(value)) { 2256 raw = true; 2257 } 2258 if (bulk) { 2259 if (raw) { 2260 fn.call(elems, value); 2261 fn = null; 2262 } else { 2263 bulk = fn; 2264 fn = function(elem, _key, value2) { 2265 return bulk.call(jQuery3(elem), value2); 2266 }; 2267 } 2268 } 2269 if (fn) { 2270 for (; i < len; i++) { 2271 fn( 2272 elems[i], 2273 key, 2274 raw ? value : value.call(elems[i], i, fn(elems[i], key)) 2275 ); 2276 } 2277 } 2278 } 2279 if (chainable) { 2280 return elems; 2281 } 2282 if (bulk) { 2283 return fn.call(elems); 2284 } 2285 return len ? fn(elems[0], key) : emptyGet; 2286 }; 2287 var rmsPrefix = /^-ms-/, rdashAlpha = /-([a-z])/g; 2288 function fcamelCase(_all, letter) { 2289 return letter.toUpperCase(); 2290 } 2291 function camelCase(string) { 2292 return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase); 2293 } 2294 var acceptData = function(owner) { 2295 return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType; 2296 }; 2297 function Data() { 2298 this.expando = jQuery3.expando + Data.uid++; 2299 } 2300 Data.uid = 1; 2301 Data.prototype = { 2302 cache: function(owner) { 2303 var value = owner[this.expando]; 2304 if (!value) { 2305 value = {}; 2306 if (acceptData(owner)) { 2307 if (owner.nodeType) { 2308 owner[this.expando] = value; 2309 } else { 2310 Object.defineProperty(owner, this.expando, { 2311 value, 2312 configurable: true 2313 }); 2314 } 2315 } 2316 } 2317 return value; 2318 }, 2319 set: function(owner, data, value) { 2320 var prop, cache = this.cache(owner); 2321 if (typeof data === "string") { 2322 cache[camelCase(data)] = value; 2323 } else { 2324 for (prop in data) { 2325 cache[camelCase(prop)] = data[prop]; 2326 } 2327 } 2328 return cache; 2329 }, 2330 get: function(owner, key) { 2331 return key === void 0 ? this.cache(owner) : ( 2332 // Always use camelCase key (gh-2257) 2333 owner[this.expando] && owner[this.expando][camelCase(key)] 2334 ); 2335 }, 2336 access: function(owner, key, value) { 2337 if (key === void 0 || key && typeof key === "string" && value === void 0) { 2338 return this.get(owner, key); 2339 } 2340 this.set(owner, key, value); 2341 return value !== void 0 ? value : key; 2342 }, 2343 remove: function(owner, key) { 2344 var i, cache = owner[this.expando]; 2345 if (cache === void 0) { 2346 return; 2347 } 2348 if (key !== void 0) { 2349 if (Array.isArray(key)) { 2350 key = key.map(camelCase); 2351 } else { 2352 key = camelCase(key); 2353 key = key in cache ? [key] : key.match(rnothtmlwhite) || []; 2354 } 2355 i = key.length; 2356 while (i--) { 2357 delete cache[key[i]]; 2358 } 2359 } 2360 if (key === void 0 || jQuery3.isEmptyObject(cache)) { 2361 if (owner.nodeType) { 2362 owner[this.expando] = void 0; 2363 } else { 2364 delete owner[this.expando]; 2365 } 2366 } 2367 }, 2368 hasData: function(owner) { 2369 var cache = owner[this.expando]; 2370 return cache !== void 0 && !jQuery3.isEmptyObject(cache); 2371 } 2372 }; 2373 var dataPriv = new Data(); 2374 var dataUser = new Data(); 2375 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g; 2376 function getData(data) { 2377 if (data === "true") { 2378 return true; 2379 } 2380 if (data === "false") { 2381 return false; 2382 } 2383 if (data === "null") { 2384 return null; 2385 } 2386 if (data === +data + "") { 2387 return +data; 2388 } 2389 if (rbrace.test(data)) { 2390 return JSON.parse(data); 2391 } 2392 return data; 2393 } 2394 function dataAttr(elem, key, data) { 2395 var name; 2396 if (data === void 0 && elem.nodeType === 1) { 2397 name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase(); 2398 data = elem.getAttribute(name); 2399 if (typeof data === "string") { 2400 try { 2401 data = getData(data); 2402 } catch (e) { 2403 } 2404 dataUser.set(elem, key, data); 2405 } else { 2406 data = void 0; 2407 } 2408 } 2409 return data; 2410 } 2411 jQuery3.extend({ 2412 hasData: function(elem) { 2413 return dataUser.hasData(elem) || dataPriv.hasData(elem); 2414 }, 2415 data: function(elem, name, data) { 2416 return dataUser.access(elem, name, data); 2417 }, 2418 removeData: function(elem, name) { 2419 dataUser.remove(elem, name); 2420 }, 2421 // TODO: Now that all calls to _data and _removeData have been replaced 2422 // with direct calls to dataPriv methods, these can be deprecated. 2423 _data: function(elem, name, data) { 2424 return dataPriv.access(elem, name, data); 2425 }, 2426 _removeData: function(elem, name) { 2427 dataPriv.remove(elem, name); 2428 } 2429 }); 2430 jQuery3.fn.extend({ 2431 data: function(key, value) { 2432 var i, name, data, elem = this[0], attrs = elem && elem.attributes; 2433 if (key === void 0) { 2434 if (this.length) { 2435 data = dataUser.get(elem); 2436 if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) { 2437 i = attrs.length; 2438 while (i--) { 2439 if (attrs[i]) { 2440 name = attrs[i].name; 2441 if (name.indexOf("data-") === 0) { 2442 name = camelCase(name.slice(5)); 2443 dataAttr(elem, name, data[name]); 2444 } 2445 } 2446 } 2447 dataPriv.set(elem, "hasDataAttrs", true); 2448 } 2449 } 2450 return data; 2451 } 2452 if (typeof key === "object") { 2453 return this.each(function() { 2454 dataUser.set(this, key); 2455 }); 2456 } 2457 return access(this, function(value2) { 2458 var data2; 2459 if (elem && value2 === void 0) { 2460 data2 = dataUser.get(elem, key); 2461 if (data2 !== void 0) { 2462 return data2; 2463 } 2464 data2 = dataAttr(elem, key); 2465 if (data2 !== void 0) { 2466 return data2; 2467 } 2468 return; 2469 } 2470 this.each(function() { 2471 dataUser.set(this, key, value2); 2472 }); 2473 }, null, value, arguments.length > 1, null, true); 2474 }, 2475 removeData: function(key) { 2476 return this.each(function() { 2477 dataUser.remove(this, key); 2478 }); 2479 } 2480 }); 2481 jQuery3.extend({ 2482 queue: function(elem, type, data) { 2483 var queue; 2484 if (elem) { 2485 type = (type || "fx") + "queue"; 2486 queue = dataPriv.get(elem, type); 2487 if (data) { 2488 if (!queue || Array.isArray(data)) { 2489 queue = dataPriv.access(elem, type, jQuery3.makeArray(data)); 2490 } else { 2491 queue.push(data); 2492 } 2493 } 2494 return queue || []; 2495 } 2496 }, 2497 dequeue: function(elem, type) { 2498 type = type || "fx"; 2499 var queue = jQuery3.queue(elem, type), startLength = queue.length, fn = queue.shift(), hooks = jQuery3._queueHooks(elem, type), next = function() { 2500 jQuery3.dequeue(elem, type); 2501 }; 2502 if (fn === "inprogress") { 2503 fn = queue.shift(); 2504 startLength--; 2505 } 2506 if (fn) { 2507 if (type === "fx") { 2508 queue.unshift("inprogress"); 2509 } 2510 delete hooks.stop; 2511 fn.call(elem, next, hooks); 2512 } 2513 if (!startLength && hooks) { 2514 hooks.empty.fire(); 2515 } 2516 }, 2517 // Not public - generate a queueHooks object, or return the current one 2518 _queueHooks: function(elem, type) { 2519 var key = type + "queueHooks"; 2520 return dataPriv.get(elem, key) || dataPriv.access(elem, key, { 2521 empty: jQuery3.Callbacks("once memory").add(function() { 2522 dataPriv.remove(elem, [type + "queue", key]); 2523 }) 2524 }); 2525 } 2526 }); 2527 jQuery3.fn.extend({ 2528 queue: function(type, data) { 2529 var setter = 2; 2530 if (typeof type !== "string") { 2531 data = type; 2532 type = "fx"; 2533 setter--; 2534 } 2535 if (arguments.length < setter) { 2536 return jQuery3.queue(this[0], type); 2537 } 2538 return data === void 0 ? this : this.each(function() { 2539 var queue = jQuery3.queue(this, type, data); 2540 jQuery3._queueHooks(this, type); 2541 if (type === "fx" && queue[0] !== "inprogress") { 2542 jQuery3.dequeue(this, type); 2543 } 2544 }); 2545 }, 2546 dequeue: function(type) { 2547 return this.each(function() { 2548 jQuery3.dequeue(this, type); 2549 }); 2550 }, 2551 clearQueue: function(type) { 2552 return this.queue(type || "fx", []); 2553 }, 2554 // Get a promise resolved when queues of a certain type 2555 // are emptied (fx is the type by default) 2556 promise: function(type, obj) { 2557 var tmp, count = 1, defer = jQuery3.Deferred(), elements = this, i = this.length, resolve = function() { 2558 if (!--count) { 2559 defer.resolveWith(elements, [elements]); 2560 } 2561 }; 2562 if (typeof type !== "string") { 2563 obj = type; 2564 type = void 0; 2565 } 2566 type = type || "fx"; 2567 while (i--) { 2568 tmp = dataPriv.get(elements[i], type + "queueHooks"); 2569 if (tmp && tmp.empty) { 2570 count++; 2571 tmp.empty.add(resolve); 2572 } 2573 } 2574 resolve(); 2575 return defer.promise(obj); 2576 } 2577 }); 2578 var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source; 2579 var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i"); 2580 var cssExpand = ["Top", "Right", "Bottom", "Left"]; 2581 var documentElement = document2.documentElement; 2582 var isAttached = function(elem) { 2583 return jQuery3.contains(elem.ownerDocument, elem); 2584 }, composed = { composed: true }; 2585 if (documentElement.getRootNode) { 2586 isAttached = function(elem) { 2587 return jQuery3.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument; 2588 }; 2589 } 2590 var isHiddenWithinTree = function(elem, el) { 2591 elem = el || elem; 2592 return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style 2593 // Support: Firefox <=43 - 45 2594 // Disconnected elements can have computed display: none, so first confirm that elem is 2595 // in the document. 2596 isAttached(elem) && jQuery3.css(elem, "display") === "none"; 2597 }; 2598 function adjustCSS(elem, prop, valueParts, tween) { 2599 var adjusted, scale, maxIterations = 20, currentValue = tween ? function() { 2600 return tween.cur(); 2601 } : function() { 2602 return jQuery3.css(elem, prop, ""); 2603 }, 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)); 2604 if (initialInUnit && initialInUnit[3] !== unit) { 2605 initial = initial / 2; 2606 unit = unit || initialInUnit[3]; 2607 initialInUnit = +initial || 1; 2608 while (maxIterations--) { 2609 jQuery3.style(elem, prop, initialInUnit + unit); 2610 if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) { 2611 maxIterations = 0; 2612 } 2613 initialInUnit = initialInUnit / scale; 2614 } 2615 initialInUnit = initialInUnit * 2; 2616 jQuery3.style(elem, prop, initialInUnit + unit); 2617 valueParts = valueParts || []; 2618 } 2619 if (valueParts) { 2620 initialInUnit = +initialInUnit || +initial || 0; 2621 adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2]; 2622 if (tween) { 2623 tween.unit = unit; 2624 tween.start = initialInUnit; 2625 tween.end = adjusted; 2626 } 2627 } 2628 return adjusted; 2629 } 2630 var defaultDisplayMap = {}; 2631 function getDefaultDisplay(elem) { 2632 var temp, doc = elem.ownerDocument, nodeName2 = elem.nodeName, display = defaultDisplayMap[nodeName2]; 2633 if (display) { 2634 return display; 2635 } 2636 temp = doc.body.appendChild(doc.createElement(nodeName2)); 2637 display = jQuery3.css(temp, "display"); 2638 temp.parentNode.removeChild(temp); 2639 if (display === "none") { 2640 display = "block"; 2641 } 2642 defaultDisplayMap[nodeName2] = display; 2643 return display; 2644 } 2645 function showHide(elements, show) { 2646 var display, elem, values = [], index = 0, length = elements.length; 2647 for (; index < length; index++) { 2648 elem = elements[index]; 2649 if (!elem.style) { 2650 continue; 2651 } 2652 display = elem.style.display; 2653 if (show) { 2654 if (display === "none") { 2655 values[index] = dataPriv.get(elem, "display") || null; 2656 if (!values[index]) { 2657 elem.style.display = ""; 2658 } 2659 } 2660 if (elem.style.display === "" && isHiddenWithinTree(elem)) { 2661 values[index] = getDefaultDisplay(elem); 2662 } 2663 } else { 2664 if (display !== "none") { 2665 values[index] = "none"; 2666 dataPriv.set(elem, "display", display); 2667 } 2668 } 2669 } 2670 for (index = 0; index < length; index++) { 2671 if (values[index] != null) { 2672 elements[index].style.display = values[index]; 2673 } 2674 } 2675 return elements; 2676 } 2677 jQuery3.fn.extend({ 2678 show: function() { 2679 return showHide(this, true); 2680 }, 2681 hide: function() { 2682 return showHide(this); 2683 }, 2684 toggle: function(state) { 2685 if (typeof state === "boolean") { 2686 return state ? this.show() : this.hide(); 2687 } 2688 return this.each(function() { 2689 if (isHiddenWithinTree(this)) { 2690 jQuery3(this).show(); 2691 } else { 2692 jQuery3(this).hide(); 2693 } 2694 }); 2695 } 2696 }); 2697 var rcheckableType = /^(?:checkbox|radio)$/i; 2698 var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i; 2699 var rscriptType = /^$|^module$|\/(?:java|ecma)script/i; 2700 (function() { 2701 var fragment = document2.createDocumentFragment(), div = fragment.appendChild(document2.createElement("div")), input = document2.createElement("input"); 2702 input.setAttribute("type", "radio"); 2703 input.setAttribute("checked", "checked"); 2704 input.setAttribute("name", "t"); 2705 div.appendChild(input); 2706 support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; 2707 div.innerHTML = "<textarea>x</textarea>"; 2708 support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; 2709 div.innerHTML = "<option></option>"; 2710 support.option = !!div.lastChild; 2711 })(); 2712 var wrapMap = { 2713 // XHTML parsers do not magically insert elements in the 2714 // same way that tag soup parsers do. So we cannot shorten 2715 // this by omitting <tbody> or other required elements. 2716 thead: [1, "<table>", "</table>"], 2717 col: [2, "<table><colgroup>", "</colgroup></table>"], 2718 tr: [2, "<table><tbody>", "</tbody></table>"], 2719 td: [3, "<table><tbody><tr>", "</tr></tbody></table>"], 2720 _default: [0, "", ""] 2721 }; 2722 wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 2723 wrapMap.th = wrapMap.td; 2724 if (!support.option) { 2725 wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"]; 2726 } 2727 function getAll(context, tag) { 2728 var ret; 2729 if (typeof context.getElementsByTagName !== "undefined") { 2730 ret = context.getElementsByTagName(tag || "*"); 2731 } else if (typeof context.querySelectorAll !== "undefined") { 2732 ret = context.querySelectorAll(tag || "*"); 2733 } else { 2734 ret = []; 2735 } 2736 if (tag === void 0 || tag && nodeName(context, tag)) { 2737 return jQuery3.merge([context], ret); 2738 } 2739 return ret; 2740 } 2741 function setGlobalEval(elems, refElements) { 2742 var i = 0, l = elems.length; 2743 for (; i < l; i++) { 2744 dataPriv.set( 2745 elems[i], 2746 "globalEval", 2747 !refElements || dataPriv.get(refElements[i], "globalEval") 2748 ); 2749 } 2750 } 2751 var rhtml = /<|&#?\w+;/; 2752 function buildFragment(elems, context, scripts, selection, ignored) { 2753 var elem, tmp, tag, wrap, attached, j, fragment = context.createDocumentFragment(), nodes = [], i = 0, l = elems.length; 2754 for (; i < l; i++) { 2755 elem = elems[i]; 2756 if (elem || elem === 0) { 2757 if (toType(elem) === "object") { 2758 jQuery3.merge(nodes, elem.nodeType ? [elem] : elem); 2759 } else if (!rhtml.test(elem)) { 2760 nodes.push(context.createTextNode(elem)); 2761 } else { 2762 tmp = tmp || fragment.appendChild(context.createElement("div")); 2763 tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase(); 2764 wrap = wrapMap[tag] || wrapMap._default; 2765 tmp.innerHTML = wrap[1] + jQuery3.htmlPrefilter(elem) + wrap[2]; 2766 j = wrap[0]; 2767 while (j--) { 2768 tmp = tmp.lastChild; 2769 } 2770 jQuery3.merge(nodes, tmp.childNodes); 2771 tmp = fragment.firstChild; 2772 tmp.textContent = ""; 2773 } 2774 } 2775 } 2776 fragment.textContent = ""; 2777 i = 0; 2778 while (elem = nodes[i++]) { 2779 if (selection && jQuery3.inArray(elem, selection) > -1) { 2780 if (ignored) { 2781 ignored.push(elem); 2782 } 2783 continue; 2784 } 2785 attached = isAttached(elem); 2786 tmp = getAll(fragment.appendChild(elem), "script"); 2787 if (attached) { 2788 setGlobalEval(tmp); 2789 } 2790 if (scripts) { 2791 j = 0; 2792 while (elem = tmp[j++]) { 2793 if (rscriptType.test(elem.type || "")) { 2794 scripts.push(elem); 2795 } 2796 } 2797 } 2798 } 2799 return fragment; 2800 } 2801 var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; 2802 function returnTrue() { 2803 return true; 2804 } 2805 function returnFalse() { 2806 return false; 2807 } 2808 function on(elem, types, selector, data, fn, one) { 2809 var origFn, type; 2810 if (typeof types === "object") { 2811 if (typeof selector !== "string") { 2812 data = data || selector; 2813 selector = void 0; 2814 } 2815 for (type in types) { 2816 on(elem, type, selector, data, types[type], one); 2817 } 2818 return elem; 2819 } 2820 if (data == null && fn == null) { 2821 fn = selector; 2822 data = selector = void 0; 2823 } else if (fn == null) { 2824 if (typeof selector === "string") { 2825 fn = data; 2826 data = void 0; 2827 } else { 2828 fn = data; 2829 data = selector; 2830 selector = void 0; 2831 } 2832 } 2833 if (fn === false) { 2834 fn = returnFalse; 2835 } else if (!fn) { 2836 return elem; 2837 } 2838 if (one === 1) { 2839 origFn = fn; 2840 fn = function(event) { 2841 jQuery3().off(event); 2842 return origFn.apply(this, arguments); 2843 }; 2844 fn.guid = origFn.guid || (origFn.guid = jQuery3.guid++); 2845 } 2846 return elem.each(function() { 2847 jQuery3.event.add(this, types, fn, data, selector); 2848 }); 2849 } 2850 jQuery3.event = { 2851 global: {}, 2852 add: function(elem, types, handler, data, selector) { 2853 var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get(elem); 2854 if (!acceptData(elem)) { 2855 return; 2856 } 2857 if (handler.handler) { 2858 handleObjIn = handler; 2859 handler = handleObjIn.handler; 2860 selector = handleObjIn.selector; 2861 } 2862 if (selector) { 2863 jQuery3.find.matchesSelector(documentElement, selector); 2864 } 2865 if (!handler.guid) { 2866 handler.guid = jQuery3.guid++; 2867 } 2868 if (!(events = elemData.events)) { 2869 events = elemData.events = /* @__PURE__ */ Object.create(null); 2870 } 2871 if (!(eventHandle = elemData.handle)) { 2872 eventHandle = elemData.handle = function(e) { 2873 return typeof jQuery3 !== "undefined" && jQuery3.event.triggered !== e.type ? jQuery3.event.dispatch.apply(elem, arguments) : void 0; 2874 }; 2875 } 2876 types = (types || "").match(rnothtmlwhite) || [""]; 2877 t = types.length; 2878 while (t--) { 2879 tmp = rtypenamespace.exec(types[t]) || []; 2880 type = origType = tmp[1]; 2881 namespaces = (tmp[2] || "").split(".").sort(); 2882 if (!type) { 2883 continue; 2884 } 2885 special = jQuery3.event.special[type] || {}; 2886 type = (selector ? special.delegateType : special.bindType) || type; 2887 special = jQuery3.event.special[type] || {}; 2888 handleObj = jQuery3.extend({ 2889 type, 2890 origType, 2891 data, 2892 handler, 2893 guid: handler.guid, 2894 selector, 2895 needsContext: selector && jQuery3.expr.match.needsContext.test(selector), 2896 namespace: namespaces.join(".") 2897 }, handleObjIn); 2898 if (!(handlers = events[type])) { 2899 handlers = events[type] = []; 2900 handlers.delegateCount = 0; 2901 if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) { 2902 if (elem.addEventListener) { 2903 elem.addEventListener(type, eventHandle); 2904 } 2905 } 2906 } 2907 if (special.add) { 2908 special.add.call(elem, handleObj); 2909 if (!handleObj.handler.guid) { 2910 handleObj.handler.guid = handler.guid; 2911 } 2912 } 2913 if (selector) { 2914 handlers.splice(handlers.delegateCount++, 0, handleObj); 2915 } else { 2916 handlers.push(handleObj); 2917 } 2918 jQuery3.event.global[type] = true; 2919 } 2920 }, 2921 // Detach an event or set of events from an element 2922 remove: function(elem, types, handler, selector, mappedTypes) { 2923 var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData(elem) && dataPriv.get(elem); 2924 if (!elemData || !(events = elemData.events)) { 2925 return; 2926 } 2927 types = (types || "").match(rnothtmlwhite) || [""]; 2928 t = types.length; 2929 while (t--) { 2930 tmp = rtypenamespace.exec(types[t]) || []; 2931 type = origType = tmp[1]; 2932 namespaces = (tmp[2] || "").split(".").sort(); 2933 if (!type) { 2934 for (type in events) { 2935 jQuery3.event.remove(elem, type + types[t], handler, selector, true); 2936 } 2937 continue; 2938 } 2939 special = jQuery3.event.special[type] || {}; 2940 type = (selector ? special.delegateType : special.bindType) || type; 2941 handlers = events[type] || []; 2942 tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); 2943 origCount = j = handlers.length; 2944 while (j--) { 2945 handleObj = handlers[j]; 2946 if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) { 2947 handlers.splice(j, 1); 2948 if (handleObj.selector) { 2949 handlers.delegateCount--; 2950 } 2951 if (special.remove) { 2952 special.remove.call(elem, handleObj); 2953 } 2954 } 2955 } 2956 if (origCount && !handlers.length) { 2957 if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) { 2958 jQuery3.removeEvent(elem, type, elemData.handle); 2959 } 2960 delete events[type]; 2961 } 2962 } 2963 if (jQuery3.isEmptyObject(events)) { 2964 dataPriv.remove(elem, "handle events"); 2965 } 2966 }, 2967 dispatch: function(nativeEvent) { 2968 var i, 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] || {}; 2969 args[0] = event; 2970 for (i = 1; i < arguments.length; i++) { 2971 args[i] = arguments[i]; 2972 } 2973 event.delegateTarget = this; 2974 if (special.preDispatch && special.preDispatch.call(this, event) === false) { 2975 return; 2976 } 2977 handlerQueue = jQuery3.event.handlers.call(this, event, handlers); 2978 i = 0; 2979 while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) { 2980 event.currentTarget = matched.elem; 2981 j = 0; 2982 while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) { 2983 if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) { 2984 event.handleObj = handleObj; 2985 event.data = handleObj.data; 2986 ret = ((jQuery3.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args); 2987 if (ret !== void 0) { 2988 if ((event.result = ret) === false) { 2989 event.preventDefault(); 2990 event.stopPropagation(); 2991 } 2992 } 2993 } 2994 } 2995 } 2996 if (special.postDispatch) { 2997 special.postDispatch.call(this, event); 2998 } 2999 return event.result; 3000 }, 3001 handlers: function(event, handlers) { 3002 var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; 3003 if (delegateCount && // Support: IE <=9 3004 // Black-hole SVG <use> instance trees (trac-13180) 3005 cur.nodeType && // Support: Firefox <=42 3006 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) 3007 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click 3008 // Support: IE 11 only 3009 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) 3010 !(event.type === "click" && event.button >= 1)) { 3011 for (; cur !== this; cur = cur.parentNode || this) { 3012 if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) { 3013 matchedHandlers = []; 3014 matchedSelectors = {}; 3015 for (i = 0; i < delegateCount; i++) { 3016 handleObj = handlers[i]; 3017 sel = handleObj.selector + " "; 3018 if (matchedSelectors[sel] === void 0) { 3019 matchedSelectors[sel] = handleObj.needsContext ? jQuery3(sel, this).index(cur) > -1 : jQuery3.find(sel, this, null, [cur]).length; 3020 } 3021 if (matchedSelectors[sel]) { 3022 matchedHandlers.push(handleObj); 3023 } 3024 } 3025 if (matchedHandlers.length) { 3026 handlerQueue.push({ elem: cur, handlers: matchedHandlers }); 3027 } 3028 } 3029 } 3030 } 3031 cur = this; 3032 if (delegateCount < handlers.length) { 3033 handlerQueue.push({ elem: cur, handlers: handlers.slice(delegateCount) }); 3034 } 3035 return handlerQueue; 3036 }, 3037 addProp: function(name, hook) { 3038 Object.defineProperty(jQuery3.Event.prototype, name, { 3039 enumerable: true, 3040 configurable: true, 3041 get: isFunction(hook) ? function() { 3042 if (this.originalEvent) { 3043 return hook(this.originalEvent); 3044 } 3045 } : function() { 3046 if (this.originalEvent) { 3047 return this.originalEvent[name]; 3048 } 3049 }, 3050 set: function(value) { 3051 Object.defineProperty(this, name, { 3052 enumerable: true, 3053 configurable: true, 3054 writable: true, 3055 value 3056 }); 3057 } 3058 }); 3059 }, 3060 fix: function(originalEvent) { 3061 return originalEvent[jQuery3.expando] ? originalEvent : new jQuery3.Event(originalEvent); 3062 }, 3063 special: { 3064 load: { 3065 // Prevent triggered image.load events from bubbling to window.load 3066 noBubble: true 3067 }, 3068 click: { 3069 // Utilize native event to ensure correct state for checkable inputs 3070 setup: function(data) { 3071 var el = this || data; 3072 if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { 3073 leverageNative(el, "click", true); 3074 } 3075 return false; 3076 }, 3077 trigger: function(data) { 3078 var el = this || data; 3079 if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) { 3080 leverageNative(el, "click"); 3081 } 3082 return true; 3083 }, 3084 // For cross-browser consistency, suppress native .click() on links 3085 // Also prevent it if we're currently inside a leveraged native-event stack 3086 _default: function(event) { 3087 var target = event.target; 3088 return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a"); 3089 } 3090 }, 3091 beforeunload: { 3092 postDispatch: function(event) { 3093 if (event.result !== void 0 && event.originalEvent) { 3094 event.originalEvent.returnValue = event.result; 3095 } 3096 } 3097 } 3098 } 3099 }; 3100 function leverageNative(el, type, isSetup) { 3101 if (!isSetup) { 3102 if (dataPriv.get(el, type) === void 0) { 3103 jQuery3.event.add(el, type, returnTrue); 3104 } 3105 return; 3106 } 3107 dataPriv.set(el, type, false); 3108 jQuery3.event.add(el, type, { 3109 namespace: false, 3110 handler: function(event) { 3111 var result, saved = dataPriv.get(this, type); 3112 if (event.isTrigger & 1 && this[type]) { 3113 if (!saved) { 3114 saved = slice.call(arguments); 3115 dataPriv.set(this, type, saved); 3116 this[type](); 3117 result = dataPriv.get(this, type); 3118 dataPriv.set(this, type, false); 3119 if (saved !== result) { 3120 event.stopImmediatePropagation(); 3121 event.preventDefault(); 3122 return result; 3123 } 3124 } else if ((jQuery3.event.special[type] || {}).delegateType) { 3125 event.stopPropagation(); 3126 } 3127 } else if (saved) { 3128 dataPriv.set(this, type, jQuery3.event.trigger( 3129 saved[0], 3130 saved.slice(1), 3131 this 3132 )); 3133 event.stopPropagation(); 3134 event.isImmediatePropagationStopped = returnTrue; 3135 } 3136 } 3137 }); 3138 } 3139 jQuery3.removeEvent = function(elem, type, handle) { 3140 if (elem.removeEventListener) { 3141 elem.removeEventListener(type, handle); 3142 } 3143 }; 3144 jQuery3.Event = function(src, props) { 3145 if (!(this instanceof jQuery3.Event)) { 3146 return new jQuery3.Event(src, props); 3147 } 3148 if (src && src.type) { 3149 this.originalEvent = src; 3150 this.type = src.type; 3151 this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === void 0 && // Support: Android <=2.3 only 3152 src.returnValue === false ? returnTrue : returnFalse; 3153 this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target; 3154 this.currentTarget = src.currentTarget; 3155 this.relatedTarget = src.relatedTarget; 3156 } else { 3157 this.type = src; 3158 } 3159 if (props) { 3160 jQuery3.extend(this, props); 3161 } 3162 this.timeStamp = src && src.timeStamp || Date.now(); 3163 this[jQuery3.expando] = true; 3164 }; 3165 jQuery3.Event.prototype = { 3166 constructor: jQuery3.Event, 3167 isDefaultPrevented: returnFalse, 3168 isPropagationStopped: returnFalse, 3169 isImmediatePropagationStopped: returnFalse, 3170 isSimulated: false, 3171 preventDefault: function() { 3172 var e = this.originalEvent; 3173 this.isDefaultPrevented = returnTrue; 3174 if (e && !this.isSimulated) { 3175 e.preventDefault(); 3176 } 3177 }, 3178 stopPropagation: function() { 3179 var e = this.originalEvent; 3180 this.isPropagationStopped = returnTrue; 3181 if (e && !this.isSimulated) { 3182 e.stopPropagation(); 3183 } 3184 }, 3185 stopImmediatePropagation: function() { 3186 var e = this.originalEvent; 3187 this.isImmediatePropagationStopped = returnTrue; 3188 if (e && !this.isSimulated) { 3189 e.stopImmediatePropagation(); 3190 } 3191 this.stopPropagation(); 3192 } 3193 }; 3194 jQuery3.each({ 3195 altKey: true, 3196 bubbles: true, 3197 cancelable: true, 3198 changedTouches: true, 3199 ctrlKey: true, 3200 detail: true, 3201 eventPhase: true, 3202 metaKey: true, 3203 pageX: true, 3204 pageY: true, 3205 shiftKey: true, 3206 view: true, 3207 "char": true, 3208 code: true, 3209 charCode: true, 3210 key: true, 3211 keyCode: true, 3212 button: true, 3213 buttons: true, 3214 clientX: true, 3215 clientY: true, 3216 offsetX: true, 3217 offsetY: true, 3218 pointerId: true, 3219 pointerType: true, 3220 screenX: true, 3221 screenY: true, 3222 targetTouches: true, 3223 toElement: true, 3224 touches: true, 3225 which: true 3226 }, jQuery3.event.addProp); 3227 jQuery3.each({ focus: "focusin", blur: "focusout" }, function(type, delegateType) { 3228 function focusMappedHandler(nativeEvent) { 3229 if (document2.documentMode) { 3230 var handle = dataPriv.get(this, "handle"), event = jQuery3.event.fix(nativeEvent); 3231 event.type = nativeEvent.type === "focusin" ? "focus" : "blur"; 3232 event.isSimulated = true; 3233 handle(nativeEvent); 3234 if (event.target === event.currentTarget) { 3235 handle(event); 3236 } 3237 } else { 3238 jQuery3.event.simulate( 3239 delegateType, 3240 nativeEvent.target, 3241 jQuery3.event.fix(nativeEvent) 3242 ); 3243 } 3244 } 3245 jQuery3.event.special[type] = { 3246 // Utilize native event if possible so blur/focus sequence is correct 3247 setup: function() { 3248 var attaches; 3249 leverageNative(this, type, true); 3250 if (document2.documentMode) { 3251 attaches = dataPriv.get(this, delegateType); 3252 if (!attaches) { 3253 this.addEventListener(delegateType, focusMappedHandler); 3254 } 3255 dataPriv.set(this, delegateType, (attaches || 0) + 1); 3256 } else { 3257 return false; 3258 } 3259 }, 3260 trigger: function() { 3261 leverageNative(this, type); 3262 return true; 3263 }, 3264 teardown: function() { 3265 var attaches; 3266 if (document2.documentMode) { 3267 attaches = dataPriv.get(this, delegateType) - 1; 3268 if (!attaches) { 3269 this.removeEventListener(delegateType, focusMappedHandler); 3270 dataPriv.remove(this, delegateType); 3271 } else { 3272 dataPriv.set(this, delegateType, attaches); 3273 } 3274 } else { 3275 return false; 3276 } 3277 }, 3278 // Suppress native focus or blur if we're currently inside 3279 // a leveraged native-event stack 3280 _default: function(event) { 3281 return dataPriv.get(event.target, type); 3282 }, 3283 delegateType 3284 }; 3285 jQuery3.event.special[delegateType] = { 3286 setup: function() { 3287 var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType); 3288 if (!attaches) { 3289 if (document2.documentMode) { 3290 this.addEventListener(delegateType, focusMappedHandler); 3291 } else { 3292 doc.addEventListener(type, focusMappedHandler, true); 3293 } 3294 } 3295 dataPriv.set(dataHolder, delegateType, (attaches || 0) + 1); 3296 }, 3297 teardown: function() { 3298 var doc = this.ownerDocument || this.document || this, dataHolder = document2.documentMode ? this : doc, attaches = dataPriv.get(dataHolder, delegateType) - 1; 3299 if (!attaches) { 3300 if (document2.documentMode) { 3301 this.removeEventListener(delegateType, focusMappedHandler); 3302 } else { 3303 doc.removeEventListener(type, focusMappedHandler, true); 3304 } 3305 dataPriv.remove(dataHolder, delegateType); 3306 } else { 3307 dataPriv.set(dataHolder, delegateType, attaches); 3308 } 3309 } 3310 }; 3311 }); 3312 jQuery3.each({ 3313 mouseenter: "mouseover", 3314 mouseleave: "mouseout", 3315 pointerenter: "pointerover", 3316 pointerleave: "pointerout" 3317 }, function(orig, fix) { 3318 jQuery3.event.special[orig] = { 3319 delegateType: fix, 3320 bindType: fix, 3321 handle: function(event) { 3322 var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; 3323 if (!related || related !== target && !jQuery3.contains(target, related)) { 3324 event.type = handleObj.origType; 3325 ret = handleObj.handler.apply(this, arguments); 3326 event.type = fix; 3327 } 3328 return ret; 3329 } 3330 }; 3331 }); 3332 jQuery3.fn.extend({ 3333 on: function(types, selector, data, fn) { 3334 return on(this, types, selector, data, fn); 3335 }, 3336 one: function(types, selector, data, fn) { 3337 return on(this, types, selector, data, fn, 1); 3338 }, 3339 off: function(types, selector, fn) { 3340 var handleObj, type; 3341 if (types && types.preventDefault && types.handleObj) { 3342 handleObj = types.handleObj; 3343 jQuery3(types.delegateTarget).off( 3344 handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, 3345 handleObj.selector, 3346 handleObj.handler 3347 ); 3348 return this; 3349 } 3350 if (typeof types === "object") { 3351 for (type in types) { 3352 this.off(type, selector, types[type]); 3353 } 3354 return this; 3355 } 3356 if (selector === false || typeof selector === "function") { 3357 fn = selector; 3358 selector = void 0; 3359 } 3360 if (fn === false) { 3361 fn = returnFalse; 3362 } 3363 return this.each(function() { 3364 jQuery3.event.remove(this, types, fn, selector); 3365 }); 3366 } 3367 }); 3368 var rnoInnerhtml = /<script|<style|<link/i, rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, rcleanScript = /^\s*<!\[CDATA\[|\]\]>\s*$/g; 3369 function manipulationTarget(elem, content) { 3370 if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) { 3371 return jQuery3(elem).children("tbody")[0] || elem; 3372 } 3373 return elem; 3374 } 3375 function disableScript(elem) { 3376 elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type; 3377 return elem; 3378 } 3379 function restoreScript(elem) { 3380 if ((elem.type || "").slice(0, 5) === "true/") { 3381 elem.type = elem.type.slice(5); 3382 } else { 3383 elem.removeAttribute("type"); 3384 } 3385 return elem; 3386 } 3387 function cloneCopyEvent(src, dest) { 3388 var i, l, type, pdataOld, udataOld, udataCur, events; 3389 if (dest.nodeType !== 1) { 3390 return; 3391 } 3392 if (dataPriv.hasData(src)) { 3393 pdataOld = dataPriv.get(src); 3394 events = pdataOld.events; 3395 if (events) { 3396 dataPriv.remove(dest, "handle events"); 3397 for (type in events) { 3398 for (i = 0, l = events[type].length; i < l; i++) { 3399 jQuery3.event.add(dest, type, events[type][i]); 3400 } 3401 } 3402 } 3403 } 3404 if (dataUser.hasData(src)) { 3405 udataOld = dataUser.access(src); 3406 udataCur = jQuery3.extend({}, udataOld); 3407 dataUser.set(dest, udataCur); 3408 } 3409 } 3410 function fixInput(src, dest) { 3411 var nodeName2 = dest.nodeName.toLowerCase(); 3412 if (nodeName2 === "input" && rcheckableType.test(src.type)) { 3413 dest.checked = src.checked; 3414 } else if (nodeName2 === "input" || nodeName2 === "textarea") { 3415 dest.defaultValue = src.defaultValue; 3416 } 3417 } 3418 function domManip(collection, args, callback, ignored) { 3419 args = flat(args); 3420 var fragment, first, scripts, hasScripts, node, doc, i = 0, l = collection.length, iNoClone = l - 1, value = args[0], valueIsFunction = isFunction(value); 3421 if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) { 3422 return collection.each(function(index) { 3423 var self = collection.eq(index); 3424 if (valueIsFunction) { 3425 args[0] = value.call(this, index, self.html()); 3426 } 3427 domManip(self, args, callback, ignored); 3428 }); 3429 } 3430 if (l) { 3431 fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored); 3432 first = fragment.firstChild; 3433 if (fragment.childNodes.length === 1) { 3434 fragment = first; 3435 } 3436 if (first || ignored) { 3437 scripts = jQuery3.map(getAll(fragment, "script"), disableScript); 3438 hasScripts = scripts.length; 3439 for (; i < l; i++) { 3440 node = fragment; 3441 if (i !== iNoClone) { 3442 node = jQuery3.clone(node, true, true); 3443 if (hasScripts) { 3444 jQuery3.merge(scripts, getAll(node, "script")); 3445 } 3446 } 3447 callback.call(collection[i], node, i); 3448 } 3449 if (hasScripts) { 3450 doc = scripts[scripts.length - 1].ownerDocument; 3451 jQuery3.map(scripts, restoreScript); 3452 for (i = 0; i < hasScripts; i++) { 3453 node = scripts[i]; 3454 if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery3.contains(doc, node)) { 3455 if (node.src && (node.type || "").toLowerCase() !== "module") { 3456 if (jQuery3._evalUrl && !node.noModule) { 3457 jQuery3._evalUrl(node.src, { 3458 nonce: node.nonce || node.getAttribute("nonce") 3459 }, doc); 3460 } 3461 } else { 3462 DOMEval(node.textContent.replace(rcleanScript, ""), node, doc); 3463 } 3464 } 3465 } 3466 } 3467 } 3468 } 3469 return collection; 3470 } 3471 function remove(elem, selector, keepData) { 3472 var node, nodes = selector ? jQuery3.filter(selector, elem) : elem, i = 0; 3473 for (; (node = nodes[i]) != null; i++) { 3474 if (!keepData && node.nodeType === 1) { 3475 jQuery3.cleanData(getAll(node)); 3476 } 3477 if (node.parentNode) { 3478 if (keepData && isAttached(node)) { 3479 setGlobalEval(getAll(node, "script")); 3480 } 3481 node.parentNode.removeChild(node); 3482 } 3483 } 3484 return elem; 3485 } 3486 jQuery3.extend({ 3487 htmlPrefilter: function(html) { 3488 return html; 3489 }, 3490 clone: function(elem, dataAndEvents, deepDataAndEvents) { 3491 var i, l, srcElements, destElements, clone = elem.cloneNode(true), inPage = isAttached(elem); 3492 if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery3.isXMLDoc(elem)) { 3493 destElements = getAll(clone); 3494 srcElements = getAll(elem); 3495 for (i = 0, l = srcElements.length; i < l; i++) { 3496 fixInput(srcElements[i], destElements[i]); 3497 } 3498 } 3499 if (dataAndEvents) { 3500 if (deepDataAndEvents) { 3501 srcElements = srcElements || getAll(elem); 3502 destElements = destElements || getAll(clone); 3503 for (i = 0, l = srcElements.length; i < l; i++) { 3504 cloneCopyEvent(srcElements[i], destElements[i]); 3505 } 3506 } else { 3507 cloneCopyEvent(elem, clone); 3508 } 3509 } 3510 destElements = getAll(clone, "script"); 3511 if (destElements.length > 0) { 3512 setGlobalEval(destElements, !inPage && getAll(elem, "script")); 3513 } 3514 return clone; 3515 }, 3516 cleanData: function(elems) { 3517 var data, elem, type, special = jQuery3.event.special, i = 0; 3518 for (; (elem = elems[i]) !== void 0; i++) { 3519 if (acceptData(elem)) { 3520 if (data = elem[dataPriv.expando]) { 3521 if (data.events) { 3522 for (type in data.events) { 3523 if (special[type]) { 3524 jQuery3.event.remove(elem, type); 3525 } else { 3526 jQuery3.removeEvent(elem, type, data.handle); 3527 } 3528 } 3529 } 3530 elem[dataPriv.expando] = void 0; 3531 } 3532 if (elem[dataUser.expando]) { 3533 elem[dataUser.expando] = void 0; 3534 } 3535 } 3536 } 3537 } 3538 }); 3539 jQuery3.fn.extend({ 3540 detach: function(selector) { 3541 return remove(this, selector, true); 3542 }, 3543 remove: function(selector) { 3544 return remove(this, selector); 3545 }, 3546 text: function(value) { 3547 return access(this, function(value2) { 3548 return value2 === void 0 ? jQuery3.text(this) : this.empty().each(function() { 3549 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 3550 this.textContent = value2; 3551 } 3552 }); 3553 }, null, value, arguments.length); 3554 }, 3555 append: function() { 3556 return domManip(this, arguments, function(elem) { 3557 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 3558 var target = manipulationTarget(this, elem); 3559 target.appendChild(elem); 3560 } 3561 }); 3562 }, 3563 prepend: function() { 3564 return domManip(this, arguments, function(elem) { 3565 if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) { 3566 var target = manipulationTarget(this, elem); 3567 target.insertBefore(elem, target.firstChild); 3568 } 3569 }); 3570 }, 3571 before: function() { 3572 return domManip(this, arguments, function(elem) { 3573 if (this.parentNode) { 3574 this.parentNode.insertBefore(elem, this); 3575 } 3576 }); 3577 }, 3578 after: function() { 3579 return domManip(this, arguments, function(elem) { 3580 if (this.parentNode) { 3581 this.parentNode.insertBefore(elem, this.nextSibling); 3582 } 3583 }); 3584 }, 3585 empty: function() { 3586 var elem, i = 0; 3587 for (; (elem = this[i]) != null; i++) { 3588 if (elem.nodeType === 1) { 3589 jQuery3.cleanData(getAll(elem, false)); 3590 elem.textContent = ""; 3591 } 3592 } 3593 return this; 3594 }, 3595 clone: function(dataAndEvents, deepDataAndEvents) { 3596 dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 3597 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 3598 return this.map(function() { 3599 return jQuery3.clone(this, dataAndEvents, deepDataAndEvents); 3600 }); 3601 }, 3602 html: function(value) { 3603 return access(this, function(value2) { 3604 var elem = this[0] || {}, i = 0, l = this.length; 3605 if (value2 === void 0 && elem.nodeType === 1) { 3606 return elem.innerHTML; 3607 } 3608 if (typeof value2 === "string" && !rnoInnerhtml.test(value2) && !wrapMap[(rtagName.exec(value2) || ["", ""])[1].toLowerCase()]) { 3609 value2 = jQuery3.htmlPrefilter(value2); 3610 try { 3611 for (; i < l; i++) { 3612 elem = this[i] || {}; 3613 if (elem.nodeType === 1) { 3614 jQuery3.cleanData(getAll(elem, false)); 3615 elem.innerHTML = value2; 3616 } 3617 } 3618 elem = 0; 3619 } catch (e) { 3620 } 3621 } 3622 if (elem) { 3623 this.empty().append(value2); 3624 } 3625 }, null, value, arguments.length); 3626 }, 3627 replaceWith: function() { 3628 var ignored = []; 3629 return domManip(this, arguments, function(elem) { 3630 var parent = this.parentNode; 3631 if (jQuery3.inArray(this, ignored) < 0) { 3632 jQuery3.cleanData(getAll(this)); 3633 if (parent) { 3634 parent.replaceChild(elem, this); 3635 } 3636 } 3637 }, ignored); 3638 } 3639 }); 3640 jQuery3.each({ 3641 appendTo: "append", 3642 prependTo: "prepend", 3643 insertBefore: "before", 3644 insertAfter: "after", 3645 replaceAll: "replaceWith" 3646 }, function(name, original) { 3647 jQuery3.fn[name] = function(selector) { 3648 var elems, ret = [], insert = jQuery3(selector), last = insert.length - 1, i = 0; 3649 for (; i <= last; i++) { 3650 elems = i === last ? this : this.clone(true); 3651 jQuery3(insert[i])[original](elems); 3652 push.apply(ret, elems.get()); 3653 } 3654 return this.pushStack(ret); 3655 }; 3656 }); 3657 var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i"); 3658 var rcustomProp = /^--/; 3659 var getStyles = function(elem) { 3660 var view = elem.ownerDocument.defaultView; 3661 if (!view || !view.opener) { 3662 view = window2; 3663 } 3664 return view.getComputedStyle(elem); 3665 }; 3666 var swap = function(elem, options, callback) { 3667 var ret, name, old = {}; 3668 for (name in options) { 3669 old[name] = elem.style[name]; 3670 elem.style[name] = options[name]; 3671 } 3672 ret = callback.call(elem); 3673 for (name in options) { 3674 elem.style[name] = old[name]; 3675 } 3676 return ret; 3677 }; 3678 var rboxStyle = new RegExp(cssExpand.join("|"), "i"); 3679 (function() { 3680 function computeStyleTests() { 3681 if (!div) { 3682 return; 3683 } 3684 container.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0"; 3685 div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%"; 3686 documentElement.appendChild(container).appendChild(div); 3687 var divStyle = window2.getComputedStyle(div); 3688 pixelPositionVal = divStyle.top !== "1%"; 3689 reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; 3690 div.style.right = "60%"; 3691 pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; 3692 boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; 3693 div.style.position = "absolute"; 3694 scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12; 3695 documentElement.removeChild(container); 3696 div = null; 3697 } 3698 function roundPixelMeasures(measure) { 3699 return Math.round(parseFloat(measure)); 3700 } 3701 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, reliableTrDimensionsVal, reliableMarginLeftVal, container = document2.createElement("div"), div = document2.createElement("div"); 3702 if (!div.style) { 3703 return; 3704 } 3705 div.style.backgroundClip = "content-box"; 3706 div.cloneNode(true).style.backgroundClip = ""; 3707 support.clearCloneStyle = div.style.backgroundClip === "content-box"; 3708 jQuery3.extend(support, { 3709 boxSizingReliable: function() { 3710 computeStyleTests(); 3711 return boxSizingReliableVal; 3712 }, 3713 pixelBoxStyles: function() { 3714 computeStyleTests(); 3715 return pixelBoxStylesVal; 3716 }, 3717 pixelPosition: function() { 3718 computeStyleTests(); 3719 return pixelPositionVal; 3720 }, 3721 reliableMarginLeft: function() { 3722 computeStyleTests(); 3723 return reliableMarginLeftVal; 3724 }, 3725 scrollboxSize: function() { 3726 computeStyleTests(); 3727 return scrollboxSizeVal; 3728 }, 3729 // Support: IE 9 - 11+, Edge 15 - 18+ 3730 // IE/Edge misreport `getComputedStyle` of table rows with width/height 3731 // set in CSS while `offset*` properties report correct values. 3732 // Behavior in IE 9 is more subtle than in newer versions & it passes 3733 // some versions of this test; make sure not to make it pass there! 3734 // 3735 // Support: Firefox 70+ 3736 // Only Firefox includes border widths 3737 // in computed dimensions. (gh-4529) 3738 reliableTrDimensions: function() { 3739 var table, tr, trChild, trStyle; 3740 if (reliableTrDimensionsVal == null) { 3741 table = document2.createElement("table"); 3742 tr = document2.createElement("tr"); 3743 trChild = document2.createElement("div"); 3744 table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; 3745 tr.style.cssText = "box-sizing:content-box;border:1px solid"; 3746 tr.style.height = "1px"; 3747 trChild.style.height = "9px"; 3748 trChild.style.display = "block"; 3749 documentElement.appendChild(table).appendChild(tr).appendChild(trChild); 3750 trStyle = window2.getComputedStyle(tr); 3751 reliableTrDimensionsVal = parseInt(trStyle.height, 10) + parseInt(trStyle.borderTopWidth, 10) + parseInt(trStyle.borderBottomWidth, 10) === tr.offsetHeight; 3752 documentElement.removeChild(table); 3753 } 3754 return reliableTrDimensionsVal; 3755 } 3756 }); 3757 })(); 3758 function curCSS(elem, name, computed) { 3759 var width, minWidth, maxWidth, ret, isCustomProp = rcustomProp.test(name), style = elem.style; 3760 computed = computed || getStyles(elem); 3761 if (computed) { 3762 ret = computed.getPropertyValue(name) || computed[name]; 3763 if (isCustomProp && ret) { 3764 ret = ret.replace(rtrimCSS, "$1") || void 0; 3765 } 3766 if (ret === "" && !isAttached(elem)) { 3767 ret = jQuery3.style(elem, name); 3768 } 3769 if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) { 3770 width = style.width; 3771 minWidth = style.minWidth; 3772 maxWidth = style.maxWidth; 3773 style.minWidth = style.maxWidth = style.width = ret; 3774 ret = computed.width; 3775 style.width = width; 3776 style.minWidth = minWidth; 3777 style.maxWidth = maxWidth; 3778 } 3779 } 3780 return ret !== void 0 ? ( 3781 // Support: IE <=9 - 11 only 3782 // IE returns zIndex value as an integer. 3783 ret + "" 3784 ) : ret; 3785 } 3786 function addGetHookIf(conditionFn, hookFn) { 3787 return { 3788 get: function() { 3789 if (conditionFn()) { 3790 delete this.get; 3791 return; 3792 } 3793 return (this.get = hookFn).apply(this, arguments); 3794 } 3795 }; 3796 } 3797 var cssPrefixes = ["Webkit", "Moz", "ms"], emptyStyle = document2.createElement("div").style, vendorProps = {}; 3798 function vendorPropName(name) { 3799 var capName = name[0].toUpperCase() + name.slice(1), i = cssPrefixes.length; 3800 while (i--) { 3801 name = cssPrefixes[i] + capName; 3802 if (name in emptyStyle) { 3803 return name; 3804 } 3805 } 3806 } 3807 function finalPropName(name) { 3808 var final = jQuery3.cssProps[name] || vendorProps[name]; 3809 if (final) { 3810 return final; 3811 } 3812 if (name in emptyStyle) { 3813 return name; 3814 } 3815 return vendorProps[name] = vendorPropName(name) || name; 3816 } 3817 var rdisplayswap = /^(none|table(?!-c[ea]).+)/, cssShow = { position: "absolute", visibility: "hidden", display: "block" }, cssNormalTransform = { 3818 letterSpacing: "0", 3819 fontWeight: "400" 3820 }; 3821 function setPositiveNumber(_elem, value, subtract) { 3822 var matches = rcssNum.exec(value); 3823 return matches ? ( 3824 // Guard against undefined "subtract", e.g., when used as in cssHooks 3825 Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") 3826 ) : value; 3827 } 3828 function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) { 3829 var i = dimension === "width" ? 1 : 0, extra = 0, delta = 0, marginDelta = 0; 3830 if (box === (isBorderBox ? "border" : "content")) { 3831 return 0; 3832 } 3833 for (; i < 4; i += 2) { 3834 if (box === "margin") { 3835 marginDelta += jQuery3.css(elem, box + cssExpand[i], true, styles); 3836 } 3837 if (!isBorderBox) { 3838 delta += jQuery3.css(elem, "padding" + cssExpand[i], true, styles); 3839 if (box !== "padding") { 3840 delta += jQuery3.css(elem, "border" + cssExpand[i] + "Width", true, styles); 3841 } else { 3842 extra += jQuery3.css(elem, "border" + cssExpand[i] + "Width", true, styles); 3843 } 3844 } else { 3845 if (box === "content") { 3846 delta -= jQuery3.css(elem, "padding" + cssExpand[i], true, styles); 3847 } 3848 if (box !== "margin") { 3849 delta -= jQuery3.css(elem, "border" + cssExpand[i] + "Width", true, styles); 3850 } 3851 } 3852 } 3853 if (!isBorderBox && computedVal >= 0) { 3854 delta += Math.max(0, Math.ceil( 3855 elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 3856 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter 3857 // Use an explicit zero to avoid NaN (gh-3964) 3858 )) || 0; 3859 } 3860 return delta + marginDelta; 3861 } 3862 function getWidthOrHeight(elem, dimension, extra) { 3863 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); 3864 if (rnumnonpx.test(val)) { 3865 if (!extra) { 3866 return val; 3867 } 3868 val = "auto"; 3869 } 3870 if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+ 3871 // IE/Edge misreport `getComputedStyle` of table rows with width/height 3872 // set in CSS while `offset*` properties report correct values. 3873 // Interestingly, in some cases IE 9 doesn't suffer from this issue. 3874 !support.reliableTrDimensions() && nodeName(elem, "tr") || // Fall back to offsetWidth/offsetHeight when value is "auto" 3875 // This happens for inline elements with no explicit setting (gh-3571) 3876 val === "auto" || // Support: Android <=4.1 - 4.3 only 3877 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) 3878 !parseFloat(val) && jQuery3.css(elem, "display", false, styles) === "inline") && // Make sure the element is visible & connected 3879 elem.getClientRects().length) { 3880 isBorderBox = jQuery3.css(elem, "boxSizing", false, styles) === "border-box"; 3881 valueIsBorderBox = offsetProp in elem; 3882 if (valueIsBorderBox) { 3883 val = elem[offsetProp]; 3884 } 3885 } 3886 val = parseFloat(val) || 0; 3887 return val + boxModelAdjustment( 3888 elem, 3889 dimension, 3890 extra || (isBorderBox ? "border" : "content"), 3891 valueIsBorderBox, 3892 styles, 3893 // Provide the current computed size to request scroll gutter calculation (gh-3589) 3894 val 3895 ) + "px"; 3896 } 3897 jQuery3.extend({ 3898 // Add in style property hooks for overriding the default 3899 // behavior of getting and setting a style property 3900 cssHooks: { 3901 opacity: { 3902 get: function(elem, computed) { 3903 if (computed) { 3904 var ret = curCSS(elem, "opacity"); 3905 return ret === "" ? "1" : ret; 3906 } 3907 } 3908 } 3909 }, 3910 // Don't automatically add "px" to these possibly-unitless properties 3911 cssNumber: { 3912 animationIterationCount: true, 3913 aspectRatio: true, 3914 borderImageSlice: true, 3915 columnCount: true, 3916 flexGrow: true, 3917 flexShrink: true, 3918 fontWeight: true, 3919 gridArea: true, 3920 gridColumn: true, 3921 gridColumnEnd: true, 3922 gridColumnStart: true, 3923 gridRow: true, 3924 gridRowEnd: true, 3925 gridRowStart: true, 3926 lineHeight: true, 3927 opacity: true, 3928 order: true, 3929 orphans: true, 3930 scale: true, 3931 widows: true, 3932 zIndex: true, 3933 zoom: true, 3934 // SVG-related 3935 fillOpacity: true, 3936 floodOpacity: true, 3937 stopOpacity: true, 3938 strokeMiterlimit: true, 3939 strokeOpacity: true 3940 }, 3941 // Add in properties whose names you wish to fix before 3942 // setting or getting the value 3943 cssProps: {}, 3944 // Get and set the style property on a DOM Node 3945 style: function(elem, name, value, extra) { 3946 if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) { 3947 return; 3948 } 3949 var ret, type, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name), style = elem.style; 3950 if (!isCustomProp) { 3951 name = finalPropName(origName); 3952 } 3953 hooks = jQuery3.cssHooks[name] || jQuery3.cssHooks[origName]; 3954 if (value !== void 0) { 3955 type = typeof value; 3956 if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) { 3957 value = adjustCSS(elem, name, ret); 3958 type = "number"; 3959 } 3960 if (value == null || value !== value) { 3961 return; 3962 } 3963 if (type === "number" && !isCustomProp) { 3964 value += ret && ret[3] || (jQuery3.cssNumber[origName] ? "" : "px"); 3965 } 3966 if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) { 3967 style[name] = "inherit"; 3968 } 3969 if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== void 0) { 3970 if (isCustomProp) { 3971 style.setProperty(name, value); 3972 } else { 3973 style[name] = value; 3974 } 3975 } 3976 } else { 3977 if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== void 0) { 3978 return ret; 3979 } 3980 return style[name]; 3981 } 3982 }, 3983 css: function(elem, name, extra, styles) { 3984 var val, num, hooks, origName = camelCase(name), isCustomProp = rcustomProp.test(name); 3985 if (!isCustomProp) { 3986 name = finalPropName(origName); 3987 } 3988 hooks = jQuery3.cssHooks[name] || jQuery3.cssHooks[origName]; 3989 if (hooks && "get" in hooks) { 3990 val = hooks.get(elem, true, extra); 3991 } 3992 if (val === void 0) { 3993 val = curCSS(elem, name, styles); 3994 } 3995 if (val === "normal" && name in cssNormalTransform) { 3996 val = cssNormalTransform[name]; 3997 } 3998 if (extra === "" || extra) { 3999 num = parseFloat(val); 4000 return extra === true || isFinite(num) ? num || 0 : val; 4001 } 4002 return val; 4003 } 4004 }); 4005 jQuery3.each(["height", "width"], function(_i, dimension) { 4006 jQuery3.cssHooks[dimension] = { 4007 get: function(elem, computed, extra) { 4008 if (computed) { 4009 return rdisplayswap.test(jQuery3.css(elem, "display")) && // Support: Safari 8+ 4010 // Table columns in Safari have non-zero offsetWidth & zero 4011 // getBoundingClientRect().width unless display is changed. 4012 // Support: IE <=11 only 4013 // Running getBoundingClientRect on a disconnected node 4014 // in IE throws an error. 4015 (!elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function() { 4016 return getWidthOrHeight(elem, dimension, extra); 4017 }) : getWidthOrHeight(elem, dimension, extra); 4018 } 4019 }, 4020 set: function(elem, value, extra) { 4021 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( 4022 elem, 4023 dimension, 4024 extra, 4025 isBorderBox, 4026 styles 4027 ) : 0; 4028 if (isBorderBox && scrollboxSizeBuggy) { 4029 subtract -= Math.ceil( 4030 elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5 4031 ); 4032 } 4033 if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") { 4034 elem.style[dimension] = value; 4035 value = jQuery3.css(elem, dimension); 4036 } 4037 return setPositiveNumber(elem, value, subtract); 4038 } 4039 }; 4040 }); 4041 jQuery3.cssHooks.marginLeft = addGetHookIf( 4042 support.reliableMarginLeft, 4043 function(elem, computed) { 4044 if (computed) { 4045 return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, { marginLeft: 0 }, function() { 4046 return elem.getBoundingClientRect().left; 4047 })) + "px"; 4048 } 4049 } 4050 ); 4051 jQuery3.each({ 4052 margin: "", 4053 padding: "", 4054 border: "Width" 4055 }, function(prefix, suffix) { 4056 jQuery3.cssHooks[prefix + suffix] = { 4057 expand: function(value) { 4058 var i = 0, expanded = {}, parts = typeof value === "string" ? value.split(" ") : [value]; 4059 for (; i < 4; i++) { 4060 expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0]; 4061 } 4062 return expanded; 4063 } 4064 }; 4065 if (prefix !== "margin") { 4066 jQuery3.cssHooks[prefix + suffix].set = setPositiveNumber; 4067 } 4068 }); 4069 jQuery3.fn.extend({ 4070 css: function(name, value) { 4071 return access(this, function(elem, name2, value2) { 4072 var styles, len, map = {}, i = 0; 4073 if (Array.isArray(name2)) { 4074 styles = getStyles(elem); 4075 len = name2.length; 4076 for (; i < len; i++) { 4077 map[name2[i]] = jQuery3.css(elem, name2[i], false, styles); 4078 } 4079 return map; 4080 } 4081 return value2 !== void 0 ? jQuery3.style(elem, name2, value2) : jQuery3.css(elem, name2); 4082 }, name, value, arguments.length > 1); 4083 } 4084 }); 4085 function Tween(elem, options, prop, end, easing) { 4086 return new Tween.prototype.init(elem, options, prop, end, easing); 4087 } 4088 jQuery3.Tween = Tween; 4089 Tween.prototype = { 4090 constructor: Tween, 4091 init: function(elem, options, prop, end, easing, unit) { 4092 this.elem = elem; 4093 this.prop = prop; 4094 this.easing = easing || jQuery3.easing._default; 4095 this.options = options; 4096 this.start = this.now = this.cur(); 4097 this.end = end; 4098 this.unit = unit || (jQuery3.cssNumber[prop] ? "" : "px"); 4099 }, 4100 cur: function() { 4101 var hooks = Tween.propHooks[this.prop]; 4102 return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this); 4103 }, 4104 run: function(percent) { 4105 var eased, hooks = Tween.propHooks[this.prop]; 4106 if (this.options.duration) { 4107 this.pos = eased = jQuery3.easing[this.easing]( 4108 percent, 4109 this.options.duration * percent, 4110 0, 4111 1, 4112 this.options.duration 4113 ); 4114 } else { 4115 this.pos = eased = percent; 4116 } 4117 this.now = (this.end - this.start) * eased + this.start; 4118 if (this.options.step) { 4119 this.options.step.call(this.elem, this.now, this); 4120 } 4121 if (hooks && hooks.set) { 4122 hooks.set(this); 4123 } else { 4124 Tween.propHooks._default.set(this); 4125 } 4126 return this; 4127 } 4128 }; 4129 Tween.prototype.init.prototype = Tween.prototype; 4130 Tween.propHooks = { 4131 _default: { 4132 get: function(tween) { 4133 var result; 4134 if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) { 4135 return tween.elem[tween.prop]; 4136 } 4137 result = jQuery3.css(tween.elem, tween.prop, ""); 4138 return !result || result === "auto" ? 0 : result; 4139 }, 4140 set: function(tween) { 4141 if (jQuery3.fx.step[tween.prop]) { 4142 jQuery3.fx.step[tween.prop](tween); 4143 } else if (tween.elem.nodeType === 1 && (jQuery3.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) { 4144 jQuery3.style(tween.elem, tween.prop, tween.now + tween.unit); 4145 } else { 4146 tween.elem[tween.prop] = tween.now; 4147 } 4148 } 4149 } 4150 }; 4151 Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 4152 set: function(tween) { 4153 if (tween.elem.nodeType && tween.elem.parentNode) { 4154 tween.elem[tween.prop] = tween.now; 4155 } 4156 } 4157 }; 4158 jQuery3.easing = { 4159 linear: function(p) { 4160 return p; 4161 }, 4162 swing: function(p) { 4163 return 0.5 - Math.cos(p * Math.PI) / 2; 4164 }, 4165 _default: "swing" 4166 }; 4167 jQuery3.fx = Tween.prototype.init; 4168 jQuery3.fx.step = {}; 4169 var fxNow, inProgress, rfxtypes = /^(?:toggle|show|hide)$/, rrun = /queueHooks$/; 4170 function schedule() { 4171 if (inProgress) { 4172 if (document2.hidden === false && window2.requestAnimationFrame) { 4173 window2.requestAnimationFrame(schedule); 4174 } else { 4175 window2.setTimeout(schedule, jQuery3.fx.interval); 4176 } 4177 jQuery3.fx.tick(); 4178 } 4179 } 4180 function createFxNow() { 4181 window2.setTimeout(function() { 4182 fxNow = void 0; 4183 }); 4184 return fxNow = Date.now(); 4185 } 4186 function genFx(type, includeWidth) { 4187 var which, i = 0, attrs = { height: type }; 4188 includeWidth = includeWidth ? 1 : 0; 4189 for (; i < 4; i += 2 - includeWidth) { 4190 which = cssExpand[i]; 4191 attrs["margin" + which] = attrs["padding" + which] = type; 4192 } 4193 if (includeWidth) { 4194 attrs.opacity = attrs.width = type; 4195 } 4196 return attrs; 4197 } 4198 function createTween(value, prop, animation) { 4199 var tween, collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]), index = 0, length = collection.length; 4200 for (; index < length; index++) { 4201 if (tween = collection[index].call(animation, prop, value)) { 4202 return tween; 4203 } 4204 } 4205 } 4206 function defaultPrefilter(elem, props, opts) { 4207 var prop, value, 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"); 4208 if (!opts.queue) { 4209 hooks = jQuery3._queueHooks(elem, "fx"); 4210 if (hooks.unqueued == null) { 4211 hooks.unqueued = 0; 4212 oldfire = hooks.empty.fire; 4213 hooks.empty.fire = function() { 4214 if (!hooks.unqueued) { 4215 oldfire(); 4216 } 4217 }; 4218 } 4219 hooks.unqueued++; 4220 anim.always(function() { 4221 anim.always(function() { 4222 hooks.unqueued--; 4223 if (!jQuery3.queue(elem, "fx").length) { 4224 hooks.empty.fire(); 4225 } 4226 }); 4227 }); 4228 } 4229 for (prop in props) { 4230 value = props[prop]; 4231 if (rfxtypes.test(value)) { 4232 delete props[prop]; 4233 toggle = toggle || value === "toggle"; 4234 if (value === (hidden ? "hide" : "show")) { 4235 if (value === "show" && dataShow && dataShow[prop] !== void 0) { 4236 hidden = true; 4237 } else { 4238 continue; 4239 } 4240 } 4241 orig[prop] = dataShow && dataShow[prop] || jQuery3.style(elem, prop); 4242 } 4243 } 4244 propTween = !jQuery3.isEmptyObject(props); 4245 if (!propTween && jQuery3.isEmptyObject(orig)) { 4246 return; 4247 } 4248 if (isBox && elem.nodeType === 1) { 4249 opts.overflow = [style.overflow, style.overflowX, style.overflowY]; 4250 restoreDisplay = dataShow && dataShow.display; 4251 if (restoreDisplay == null) { 4252 restoreDisplay = dataPriv.get(elem, "display"); 4253 } 4254 display = jQuery3.css(elem, "display"); 4255 if (display === "none") { 4256 if (restoreDisplay) { 4257 display = restoreDisplay; 4258 } else { 4259 showHide([elem], true); 4260 restoreDisplay = elem.style.display || restoreDisplay; 4261 display = jQuery3.css(elem, "display"); 4262 showHide([elem]); 4263 } 4264 } 4265 if (display === "inline" || display === "inline-block" && restoreDisplay != null) { 4266 if (jQuery3.css(elem, "float") === "none") { 4267 if (!propTween) { 4268 anim.done(function() { 4269 style.display = restoreDisplay; 4270 }); 4271 if (restoreDisplay == null) { 4272 display = style.display; 4273 restoreDisplay = display === "none" ? "" : display; 4274 } 4275 } 4276 style.display = "inline-block"; 4277 } 4278 } 4279 } 4280 if (opts.overflow) { 4281 style.overflow = "hidden"; 4282 anim.always(function() { 4283 style.overflow = opts.overflow[0]; 4284 style.overflowX = opts.overflow[1]; 4285 style.overflowY = opts.overflow[2]; 4286 }); 4287 } 4288 propTween = false; 4289 for (prop in orig) { 4290 if (!propTween) { 4291 if (dataShow) { 4292 if ("hidden" in dataShow) { 4293 hidden = dataShow.hidden; 4294 } 4295 } else { 4296 dataShow = dataPriv.access(elem, "fxshow", { display: restoreDisplay }); 4297 } 4298 if (toggle) { 4299 dataShow.hidden = !hidden; 4300 } 4301 if (hidden) { 4302 showHide([elem], true); 4303 } 4304 anim.done(function() { 4305 if (!hidden) { 4306 showHide([elem]); 4307 } 4308 dataPriv.remove(elem, "fxshow"); 4309 for (prop in orig) { 4310 jQuery3.style(elem, prop, orig[prop]); 4311 } 4312 }); 4313 } 4314 propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim); 4315 if (!(prop in dataShow)) { 4316 dataShow[prop] = propTween.start; 4317 if (hidden) { 4318 propTween.end = propTween.start; 4319 propTween.start = 0; 4320 } 4321 } 4322 } 4323 } 4324 function propFilter(props, specialEasing) { 4325 var index, name, easing, value, hooks; 4326 for (index in props) { 4327 name = camelCase(index); 4328 easing = specialEasing[name]; 4329 value = props[index]; 4330 if (Array.isArray(value)) { 4331 easing = value[1]; 4332 value = props[index] = value[0]; 4333 } 4334 if (index !== name) { 4335 props[name] = value; 4336 delete props[index]; 4337 } 4338 hooks = jQuery3.cssHooks[name]; 4339 if (hooks && "expand" in hooks) { 4340 value = hooks.expand(value); 4341 delete props[name]; 4342 for (index in value) { 4343 if (!(index in props)) { 4344 props[index] = value[index]; 4345 specialEasing[index] = easing; 4346 } 4347 } 4348 } else { 4349 specialEasing[name] = easing; 4350 } 4351 } 4352 } 4353 function Animation(elem, properties, options) { 4354 var result, stopped, index = 0, length = Animation.prefilters.length, deferred = jQuery3.Deferred().always(function() { 4355 delete tick.elem; 4356 }), tick = function() { 4357 if (stopped) { 4358 return false; 4359 } 4360 var currentTime = fxNow || createFxNow(), remaining = Math.max(0, animation.startTime + animation.duration - currentTime), temp = remaining / animation.duration || 0, percent = 1 - temp, index2 = 0, length2 = animation.tweens.length; 4361 for (; index2 < length2; index2++) { 4362 animation.tweens[index2].run(percent); 4363 } 4364 deferred.notifyWith(elem, [animation, percent, remaining]); 4365 if (percent < 1 && length2) { 4366 return remaining; 4367 } 4368 if (!length2) { 4369 deferred.notifyWith(elem, [animation, 1, 0]); 4370 } 4371 deferred.resolveWith(elem, [animation]); 4372 return false; 4373 }, animation = deferred.promise({ 4374 elem, 4375 props: jQuery3.extend({}, properties), 4376 opts: jQuery3.extend(true, { 4377 specialEasing: {}, 4378 easing: jQuery3.easing._default 4379 }, options), 4380 originalProperties: properties, 4381 originalOptions: options, 4382 startTime: fxNow || createFxNow(), 4383 duration: options.duration, 4384 tweens: [], 4385 createTween: function(prop, end) { 4386 var tween = jQuery3.Tween( 4387 elem, 4388 animation.opts, 4389 prop, 4390 end, 4391 animation.opts.specialEasing[prop] || animation.opts.easing 4392 ); 4393 animation.tweens.push(tween); 4394 return tween; 4395 }, 4396 stop: function(gotoEnd) { 4397 var index2 = 0, length2 = gotoEnd ? animation.tweens.length : 0; 4398 if (stopped) { 4399 return this; 4400 } 4401 stopped = true; 4402 for (; index2 < length2; index2++) { 4403 animation.tweens[index2].run(1); 4404 } 4405 if (gotoEnd) { 4406 deferred.notifyWith(elem, [animation, 1, 0]); 4407 deferred.resolveWith(elem, [animation, gotoEnd]); 4408 } else { 4409 deferred.rejectWith(elem, [animation, gotoEnd]); 4410 } 4411 return this; 4412 } 4413 }), props = animation.props; 4414 propFilter(props, animation.opts.specialEasing); 4415 for (; index < length; index++) { 4416 result = Animation.prefilters[index].call(animation, elem, props, animation.opts); 4417 if (result) { 4418 if (isFunction(result.stop)) { 4419 jQuery3._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result); 4420 } 4421 return result; 4422 } 4423 } 4424 jQuery3.map(props, createTween, animation); 4425 if (isFunction(animation.opts.start)) { 4426 animation.opts.start.call(elem, animation); 4427 } 4428 animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always); 4429 jQuery3.fx.timer( 4430 jQuery3.extend(tick, { 4431 elem, 4432 anim: animation, 4433 queue: animation.opts.queue 4434 }) 4435 ); 4436 return animation; 4437 } 4438 jQuery3.Animation = jQuery3.extend(Animation, { 4439 tweeners: { 4440 "*": [function(prop, value) { 4441 var tween = this.createTween(prop, value); 4442 adjustCSS(tween.elem, prop, rcssNum.exec(value), tween); 4443 return tween; 4444 }] 4445 }, 4446 tweener: function(props, callback) { 4447 if (isFunction(props)) { 4448 callback = props; 4449 props = ["*"]; 4450 } else { 4451 props = props.match(rnothtmlwhite); 4452 } 4453 var prop, index = 0, length = props.length; 4454 for (; index < length; index++) { 4455 prop = props[index]; 4456 Animation.tweeners[prop] = Animation.tweeners[prop] || []; 4457 Animation.tweeners[prop].unshift(callback); 4458 } 4459 }, 4460 prefilters: [defaultPrefilter], 4461 prefilter: function(callback, prepend) { 4462 if (prepend) { 4463 Animation.prefilters.unshift(callback); 4464 } else { 4465 Animation.prefilters.push(callback); 4466 } 4467 } 4468 }); 4469 jQuery3.speed = function(speed, easing, fn) { 4470 var opt = speed && typeof speed === "object" ? jQuery3.extend({}, speed) : { 4471 complete: fn || !fn && easing || isFunction(speed) && speed, 4472 duration: speed, 4473 easing: fn && easing || easing && !isFunction(easing) && easing 4474 }; 4475 if (jQuery3.fx.off) { 4476 opt.duration = 0; 4477 } else { 4478 if (typeof opt.duration !== "number") { 4479 if (opt.duration in jQuery3.fx.speeds) { 4480 opt.duration = jQuery3.fx.speeds[opt.duration]; 4481 } else { 4482 opt.duration = jQuery3.fx.speeds._default; 4483 } 4484 } 4485 } 4486 if (opt.queue == null || opt.queue === true) { 4487 opt.queue = "fx"; 4488 } 4489 opt.old = opt.complete; 4490 opt.complete = function() { 4491 if (isFunction(opt.old)) { 4492 opt.old.call(this); 4493 } 4494 if (opt.queue) { 4495 jQuery3.dequeue(this, opt.queue); 4496 } 4497 }; 4498 return opt; 4499 }; 4500 jQuery3.fn.extend({ 4501 fadeTo: function(speed, to, easing, callback) { 4502 return this.filter(isHiddenWithinTree).css("opacity", 0).show().end().animate({ opacity: to }, speed, easing, callback); 4503 }, 4504 animate: function(prop, speed, easing, callback) { 4505 var empty = jQuery3.isEmptyObject(prop), optall = jQuery3.speed(speed, easing, callback), doAnimation = function() { 4506 var anim = Animation(this, jQuery3.extend({}, prop), optall); 4507 if (empty || dataPriv.get(this, "finish")) { 4508 anim.stop(true); 4509 } 4510 }; 4511 doAnimation.finish = doAnimation; 4512 return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation); 4513 }, 4514 stop: function(type, clearQueue, gotoEnd) { 4515 var stopQueue = function(hooks) { 4516 var stop = hooks.stop; 4517 delete hooks.stop; 4518 stop(gotoEnd); 4519 }; 4520 if (typeof type !== "string") { 4521 gotoEnd = clearQueue; 4522 clearQueue = type; 4523 type = void 0; 4524 } 4525 if (clearQueue) { 4526 this.queue(type || "fx", []); 4527 } 4528 return this.each(function() { 4529 var dequeue = true, index = type != null && type + "queueHooks", timers = jQuery3.timers, data = dataPriv.get(this); 4530 if (index) { 4531 if (data[index] && data[index].stop) { 4532 stopQueue(data[index]); 4533 } 4534 } else { 4535 for (index in data) { 4536 if (data[index] && data[index].stop && rrun.test(index)) { 4537 stopQueue(data[index]); 4538 } 4539 } 4540 } 4541 for (index = timers.length; index--; ) { 4542 if (timers[index].elem === this && (type == null || timers[index].queue === type)) { 4543 timers[index].anim.stop(gotoEnd); 4544 dequeue = false; 4545 timers.splice(index, 1); 4546 } 4547 } 4548 if (dequeue || !gotoEnd) { 4549 jQuery3.dequeue(this, type); 4550 } 4551 }); 4552 }, 4553 finish: function(type) { 4554 if (type !== false) { 4555 type = type || "fx"; 4556 } 4557 return this.each(function() { 4558 var index, data = dataPriv.get(this), queue = data[type + "queue"], hooks = data[type + "queueHooks"], timers = jQuery3.timers, length = queue ? queue.length : 0; 4559 data.finish = true; 4560 jQuery3.queue(this, type, []); 4561 if (hooks && hooks.stop) { 4562 hooks.stop.call(this, true); 4563 } 4564 for (index = timers.length; index--; ) { 4565 if (timers[index].elem === this && timers[index].queue === type) { 4566 timers[index].anim.stop(true); 4567 timers.splice(index, 1); 4568 } 4569 } 4570 for (index = 0; index < length; index++) { 4571 if (queue[index] && queue[index].finish) { 4572 queue[index].finish.call(this); 4573 } 4574 } 4575 delete data.finish; 4576 }); 4577 } 4578 }); 4579 jQuery3.each(["toggle", "show", "hide"], function(_i, name) { 4580 var cssFn = jQuery3.fn[name]; 4581 jQuery3.fn[name] = function(speed, easing, callback) { 4582 return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback); 4583 }; 4584 }); 4585 jQuery3.each({ 4586 slideDown: genFx("show"), 4587 slideUp: genFx("hide"), 4588 slideToggle: genFx("toggle"), 4589 fadeIn: { opacity: "show" }, 4590 fadeOut: { opacity: "hide" }, 4591 fadeToggle: { opacity: "toggle" } 4592 }, function(name, props) { 4593 jQuery3.fn[name] = function(speed, easing, callback) { 4594 return this.animate(props, speed, easing, callback); 4595 }; 4596 }); 4597 jQuery3.timers = []; 4598 jQuery3.fx.tick = function() { 4599 var timer, i = 0, timers = jQuery3.timers; 4600 fxNow = Date.now(); 4601 for (; i < timers.length; i++) { 4602 timer = timers[i]; 4603 if (!timer() && timers[i] === timer) { 4604 timers.splice(i--, 1); 4605 } 4606 } 4607 if (!timers.length) { 4608 jQuery3.fx.stop(); 4609 } 4610 fxNow = void 0; 4611 }; 4612 jQuery3.fx.timer = function(timer) { 4613 jQuery3.timers.push(timer); 4614 jQuery3.fx.start(); 4615 }; 4616 jQuery3.fx.interval = 13; 4617 jQuery3.fx.start = function() { 4618 if (inProgress) { 4619 return; 4620 } 4621 inProgress = true; 4622 schedule(); 4623 }; 4624 jQuery3.fx.stop = function() { 4625 inProgress = null; 4626 }; 4627 jQuery3.fx.speeds = { 4628 slow: 600, 4629 fast: 200, 4630 // Default speed 4631 _default: 400 4632 }; 4633 jQuery3.fn.delay = function(time, type) { 4634 time = jQuery3.fx ? jQuery3.fx.speeds[time] || time : time; 4635 type = type || "fx"; 4636 return this.queue(type, function(next, hooks) { 4637 var timeout = window2.setTimeout(next, time); 4638 hooks.stop = function() { 4639 window2.clearTimeout(timeout); 4640 }; 4641 }); 4642 }; 4643 (function() { 4644 var input = document2.createElement("input"), select = document2.createElement("select"), opt = select.appendChild(document2.createElement("option")); 4645 input.type = "checkbox"; 4646 support.checkOn = input.value !== ""; 4647 support.optSelected = opt.selected; 4648 input = document2.createElement("input"); 4649 input.value = "t"; 4650 input.type = "radio"; 4651 support.radioValue = input.value === "t"; 4652 })(); 4653 var boolHook, attrHandle = jQuery3.expr.attrHandle; 4654 jQuery3.fn.extend({ 4655 attr: function(name, value) { 4656 return access(this, jQuery3.attr, name, value, arguments.length > 1); 4657 }, 4658 removeAttr: function(name) { 4659 return this.each(function() { 4660 jQuery3.removeAttr(this, name); 4661 }); 4662 } 4663 }); 4664 jQuery3.extend({ 4665 attr: function(elem, name, value) { 4666 var ret, hooks, nType = elem.nodeType; 4667 if (nType === 3 || nType === 8 || nType === 2) { 4668 return; 4669 } 4670 if (typeof elem.getAttribute === "undefined") { 4671 return jQuery3.prop(elem, name, value); 4672 } 4673 if (nType !== 1 || !jQuery3.isXMLDoc(elem)) { 4674 hooks = jQuery3.attrHooks[name.toLowerCase()] || (jQuery3.expr.match.bool.test(name) ? boolHook : void 0); 4675 } 4676 if (value !== void 0) { 4677 if (value === null) { 4678 jQuery3.removeAttr(elem, name); 4679 return; 4680 } 4681 if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) { 4682 return ret; 4683 } 4684 elem.setAttribute(name, value + ""); 4685 return value; 4686 } 4687 if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { 4688 return ret; 4689 } 4690 ret = jQuery3.find.attr(elem, name); 4691 return ret == null ? void 0 : ret; 4692 }, 4693 attrHooks: { 4694 type: { 4695 set: function(elem, value) { 4696 if (!support.radioValue && value === "radio" && nodeName(elem, "input")) { 4697 var val = elem.value; 4698 elem.setAttribute("type", value); 4699 if (val) { 4700 elem.value = val; 4701 } 4702 return value; 4703 } 4704 } 4705 } 4706 }, 4707 removeAttr: function(elem, value) { 4708 var name, i = 0, attrNames = value && value.match(rnothtmlwhite); 4709 if (attrNames && elem.nodeType === 1) { 4710 while (name = attrNames[i++]) { 4711 elem.removeAttribute(name); 4712 } 4713 } 4714 } 4715 }); 4716 boolHook = { 4717 set: function(elem, value, name) { 4718 if (value === false) { 4719 jQuery3.removeAttr(elem, name); 4720 } else { 4721 elem.setAttribute(name, name); 4722 } 4723 return name; 4724 } 4725 }; 4726 jQuery3.each(jQuery3.expr.match.bool.source.match(/\w+/g), function(_i, name) { 4727 var getter = attrHandle[name] || jQuery3.find.attr; 4728 attrHandle[name] = function(elem, name2, isXML) { 4729 var ret, handle, lowercaseName = name2.toLowerCase(); 4730 if (!isXML) { 4731 handle = attrHandle[lowercaseName]; 4732 attrHandle[lowercaseName] = ret; 4733 ret = getter(elem, name2, isXML) != null ? lowercaseName : null; 4734 attrHandle[lowercaseName] = handle; 4735 } 4736 return ret; 4737 }; 4738 }); 4739 var rfocusable = /^(?:input|select|textarea|button)$/i, rclickable = /^(?:a|area)$/i; 4740 jQuery3.fn.extend({ 4741 prop: function(name, value) { 4742 return access(this, jQuery3.prop, name, value, arguments.length > 1); 4743 }, 4744 removeProp: function(name) { 4745 return this.each(function() { 4746 delete this[jQuery3.propFix[name] || name]; 4747 }); 4748 } 4749 }); 4750 jQuery3.extend({ 4751 prop: function(elem, name, value) { 4752 var ret, hooks, nType = elem.nodeType; 4753 if (nType === 3 || nType === 8 || nType === 2) { 4754 return; 4755 } 4756 if (nType !== 1 || !jQuery3.isXMLDoc(elem)) { 4757 name = jQuery3.propFix[name] || name; 4758 hooks = jQuery3.propHooks[name]; 4759 } 4760 if (value !== void 0) { 4761 if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== void 0) { 4762 return ret; 4763 } 4764 return elem[name] = value; 4765 } 4766 if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) { 4767 return ret; 4768 } 4769 return elem[name]; 4770 }, 4771 propHooks: { 4772 tabIndex: { 4773 get: function(elem) { 4774 var tabindex = jQuery3.find.attr(elem, "tabindex"); 4775 if (tabindex) { 4776 return parseInt(tabindex, 10); 4777 } 4778 if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) { 4779 return 0; 4780 } 4781 return -1; 4782 } 4783 } 4784 }, 4785 propFix: { 4786 "for": "htmlFor", 4787 "class": "className" 4788 } 4789 }); 4790 if (!support.optSelected) { 4791 jQuery3.propHooks.selected = { 4792 get: function(elem) { 4793 var parent = elem.parentNode; 4794 if (parent && parent.parentNode) { 4795 parent.parentNode.selectedIndex; 4796 } 4797 return null; 4798 }, 4799 set: function(elem) { 4800 var parent = elem.parentNode; 4801 if (parent) { 4802 parent.selectedIndex; 4803 if (parent.parentNode) { 4804 parent.parentNode.selectedIndex; 4805 } 4806 } 4807 } 4808 }; 4809 } 4810 jQuery3.each([ 4811 "tabIndex", 4812 "readOnly", 4813 "maxLength", 4814 "cellSpacing", 4815 "cellPadding", 4816 "rowSpan", 4817 "colSpan", 4818 "useMap", 4819 "frameBorder", 4820 "contentEditable" 4821 ], function() { 4822 jQuery3.propFix[this.toLowerCase()] = this; 4823 }); 4824 function stripAndCollapse(value) { 4825 var tokens = value.match(rnothtmlwhite) || []; 4826 return tokens.join(" "); 4827 } 4828 function getClass(elem) { 4829 return elem.getAttribute && elem.getAttribute("class") || ""; 4830 } 4831 function classesToArray(value) { 4832 if (Array.isArray(value)) { 4833 return value; 4834 } 4835 if (typeof value === "string") { 4836 return value.match(rnothtmlwhite) || []; 4837 } 4838 return []; 4839 } 4840 jQuery3.fn.extend({ 4841 addClass: function(value) { 4842 var classNames, cur, curValue, className, i, finalValue; 4843 if (isFunction(value)) { 4844 return this.each(function(j) { 4845 jQuery3(this).addClass(value.call(this, j, getClass(this))); 4846 }); 4847 } 4848 classNames = classesToArray(value); 4849 if (classNames.length) { 4850 return this.each(function() { 4851 curValue = getClass(this); 4852 cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; 4853 if (cur) { 4854 for (i = 0; i < classNames.length; i++) { 4855 className = classNames[i]; 4856 if (cur.indexOf(" " + className + " ") < 0) { 4857 cur += className + " "; 4858 } 4859 } 4860 finalValue = stripAndCollapse(cur); 4861 if (curValue !== finalValue) { 4862 this.setAttribute("class", finalValue); 4863 } 4864 } 4865 }); 4866 } 4867 return this; 4868 }, 4869 removeClass: function(value) { 4870 var classNames, cur, curValue, className, i, finalValue; 4871 if (isFunction(value)) { 4872 return this.each(function(j) { 4873 jQuery3(this).removeClass(value.call(this, j, getClass(this))); 4874 }); 4875 } 4876 if (!arguments.length) { 4877 return this.attr("class", ""); 4878 } 4879 classNames = classesToArray(value); 4880 if (classNames.length) { 4881 return this.each(function() { 4882 curValue = getClass(this); 4883 cur = this.nodeType === 1 && " " + stripAndCollapse(curValue) + " "; 4884 if (cur) { 4885 for (i = 0; i < classNames.length; i++) { 4886 className = classNames[i]; 4887 while (cur.indexOf(" " + className + " ") > -1) { 4888 cur = cur.replace(" " + className + " ", " "); 4889 } 4890 } 4891 finalValue = stripAndCollapse(cur); 4892 if (curValue !== finalValue) { 4893 this.setAttribute("class", finalValue); 4894 } 4895 } 4896 }); 4897 } 4898 return this; 4899 }, 4900 toggleClass: function(value, stateVal) { 4901 var classNames, className, i, self, type = typeof value, isValidValue = type === "string" || Array.isArray(value); 4902 if (isFunction(value)) { 4903 return this.each(function(i2) { 4904 jQuery3(this).toggleClass( 4905 value.call(this, i2, getClass(this), stateVal), 4906 stateVal 4907 ); 4908 }); 4909 } 4910 if (typeof stateVal === "boolean" && isValidValue) { 4911 return stateVal ? this.addClass(value) : this.removeClass(value); 4912 } 4913 classNames = classesToArray(value); 4914 return this.each(function() { 4915 if (isValidValue) { 4916 self = jQuery3(this); 4917 for (i = 0; i < classNames.length; i++) { 4918 className = classNames[i]; 4919 if (self.hasClass(className)) { 4920 self.removeClass(className); 4921 } else { 4922 self.addClass(className); 4923 } 4924 } 4925 } else if (value === void 0 || type === "boolean") { 4926 className = getClass(this); 4927 if (className) { 4928 dataPriv.set(this, "__className__", className); 4929 } 4930 if (this.setAttribute) { 4931 this.setAttribute( 4932 "class", 4933 className || value === false ? "" : dataPriv.get(this, "__className__") || "" 4934 ); 4935 } 4936 } 4937 }); 4938 }, 4939 hasClass: function(selector) { 4940 var className, elem, i = 0; 4941 className = " " + selector + " "; 4942 while (elem = this[i++]) { 4943 if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) { 4944 return true; 4945 } 4946 } 4947 return false; 4948 } 4949 }); 4950 var rreturn = /\r/g; 4951 jQuery3.fn.extend({ 4952 val: function(value) { 4953 var hooks, ret, valueIsFunction, elem = this[0]; 4954 if (!arguments.length) { 4955 if (elem) { 4956 hooks = jQuery3.valHooks[elem.type] || jQuery3.valHooks[elem.nodeName.toLowerCase()]; 4957 if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== void 0) { 4958 return ret; 4959 } 4960 ret = elem.value; 4961 if (typeof ret === "string") { 4962 return ret.replace(rreturn, ""); 4963 } 4964 return ret == null ? "" : ret; 4965 } 4966 return; 4967 } 4968 valueIsFunction = isFunction(value); 4969 return this.each(function(i) { 4970 var val; 4971 if (this.nodeType !== 1) { 4972 return; 4973 } 4974 if (valueIsFunction) { 4975 val = value.call(this, i, jQuery3(this).val()); 4976 } else { 4977 val = value; 4978 } 4979 if (val == null) { 4980 val = ""; 4981 } else if (typeof val === "number") { 4982 val += ""; 4983 } else if (Array.isArray(val)) { 4984 val = jQuery3.map(val, function(value2) { 4985 return value2 == null ? "" : value2 + ""; 4986 }); 4987 } 4988 hooks = jQuery3.valHooks[this.type] || jQuery3.valHooks[this.nodeName.toLowerCase()]; 4989 if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === void 0) { 4990 this.value = val; 4991 } 4992 }); 4993 } 4994 }); 4995 jQuery3.extend({ 4996 valHooks: { 4997 option: { 4998 get: function(elem) { 4999 var val = jQuery3.find.attr(elem, "value"); 5000 return val != null ? val : ( 5001 // Support: IE <=10 - 11 only 5002 // option.text throws exceptions (trac-14686, trac-14858) 5003 // Strip and collapse whitespace 5004 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace 5005 stripAndCollapse(jQuery3.text(elem)) 5006 ); 5007 } 5008 }, 5009 select: { 5010 get: function(elem) { 5011 var value, option, i, options = elem.options, index = elem.selectedIndex, one = elem.type === "select-one", values = one ? null : [], max = one ? index + 1 : options.length; 5012 if (index < 0) { 5013 i = max; 5014 } else { 5015 i = one ? index : 0; 5016 } 5017 for (; i < max; i++) { 5018 option = options[i]; 5019 if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup 5020 !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) { 5021 value = jQuery3(option).val(); 5022 if (one) { 5023 return value; 5024 } 5025 values.push(value); 5026 } 5027 } 5028 return values; 5029 }, 5030 set: function(elem, value) { 5031 var optionSet, option, options = elem.options, values = jQuery3.makeArray(value), i = options.length; 5032 while (i--) { 5033 option = options[i]; 5034 if (option.selected = jQuery3.inArray(jQuery3.valHooks.option.get(option), values) > -1) { 5035 optionSet = true; 5036 } 5037 } 5038 if (!optionSet) { 5039 elem.selectedIndex = -1; 5040 } 5041 return values; 5042 } 5043 } 5044 } 5045 }); 5046 jQuery3.each(["radio", "checkbox"], function() { 5047 jQuery3.valHooks[this] = { 5048 set: function(elem, value) { 5049 if (Array.isArray(value)) { 5050 return elem.checked = jQuery3.inArray(jQuery3(elem).val(), value) > -1; 5051 } 5052 } 5053 }; 5054 if (!support.checkOn) { 5055 jQuery3.valHooks[this].get = function(elem) { 5056 return elem.getAttribute("value") === null ? "on" : elem.value; 5057 }; 5058 } 5059 }); 5060 var location2 = window2.location; 5061 var nonce = { guid: Date.now() }; 5062 var rquery = /\?/; 5063 jQuery3.parseXML = function(data) { 5064 var xml, parserErrorElem; 5065 if (!data || typeof data !== "string") { 5066 return null; 5067 } 5068 try { 5069 xml = new window2.DOMParser().parseFromString(data, "text/xml"); 5070 } catch (e) { 5071 } 5072 parserErrorElem = xml && xml.getElementsByTagName("parsererror")[0]; 5073 if (!xml || parserErrorElem) { 5074 jQuery3.error("Invalid XML: " + (parserErrorElem ? jQuery3.map(parserErrorElem.childNodes, function(el) { 5075 return el.textContent; 5076 }).join("\n") : data)); 5077 } 5078 return xml; 5079 }; 5080 var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, stopPropagationCallback = function(e) { 5081 e.stopPropagation(); 5082 }; 5083 jQuery3.extend(jQuery3.event, { 5084 trigger: function(event, data, elem, onlyHandlers) { 5085 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, eventPath = [elem || document2], type = hasOwn.call(event, "type") ? event.type : event, namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : []; 5086 cur = lastElement = tmp = elem = elem || document2; 5087 if (elem.nodeType === 3 || elem.nodeType === 8) { 5088 return; 5089 } 5090 if (rfocusMorph.test(type + jQuery3.event.triggered)) { 5091 return; 5092 } 5093 if (type.indexOf(".") > -1) { 5094 namespaces = type.split("."); 5095 type = namespaces.shift(); 5096 namespaces.sort(); 5097 } 5098 ontype = type.indexOf(":") < 0 && "on" + type; 5099 event = event[jQuery3.expando] ? event : new jQuery3.Event(type, typeof event === "object" && event); 5100 event.isTrigger = onlyHandlers ? 2 : 3; 5101 event.namespace = namespaces.join("."); 5102 event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; 5103 event.result = void 0; 5104 if (!event.target) { 5105 event.target = elem; 5106 } 5107 data = data == null ? [event] : jQuery3.makeArray(data, [event]); 5108 special = jQuery3.event.special[type] || {}; 5109 if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) { 5110 return; 5111 } 5112 if (!onlyHandlers && !special.noBubble && !isWindow(elem)) { 5113 bubbleType = special.delegateType || type; 5114 if (!rfocusMorph.test(bubbleType + type)) { 5115 cur = cur.parentNode; 5116 } 5117 for (; cur; cur = cur.parentNode) { 5118 eventPath.push(cur); 5119 tmp = cur; 5120 } 5121 if (tmp === (elem.ownerDocument || document2)) { 5122 eventPath.push(tmp.defaultView || tmp.parentWindow || window2); 5123 } 5124 } 5125 i = 0; 5126 while ((cur = eventPath[i++]) && !event.isPropagationStopped()) { 5127 lastElement = cur; 5128 event.type = i > 1 ? bubbleType : special.bindType || type; 5129 handle = (dataPriv.get(cur, "events") || /* @__PURE__ */ Object.create(null))[event.type] && dataPriv.get(cur, "handle"); 5130 if (handle) { 5131 handle.apply(cur, data); 5132 } 5133 handle = ontype && cur[ontype]; 5134 if (handle && handle.apply && acceptData(cur)) { 5135 event.result = handle.apply(cur, data); 5136 if (event.result === false) { 5137 event.preventDefault(); 5138 } 5139 } 5140 } 5141 event.type = type; 5142 if (!onlyHandlers && !event.isDefaultPrevented()) { 5143 if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) { 5144 if (ontype && isFunction(elem[type]) && !isWindow(elem)) { 5145 tmp = elem[ontype]; 5146 if (tmp) { 5147 elem[ontype] = null; 5148 } 5149 jQuery3.event.triggered = type; 5150 if (event.isPropagationStopped()) { 5151 lastElement.addEventListener(type, stopPropagationCallback); 5152 } 5153 elem[type](); 5154 if (event.isPropagationStopped()) { 5155 lastElement.removeEventListener(type, stopPropagationCallback); 5156 } 5157 jQuery3.event.triggered = void 0; 5158 if (tmp) { 5159 elem[ontype] = tmp; 5160 } 5161 } 5162 } 5163 } 5164 return event.result; 5165 }, 5166 // Piggyback on a donor event to simulate a different one 5167 // Used only for `focus(in | out)` events 5168 simulate: function(type, elem, event) { 5169 var e = jQuery3.extend( 5170 new jQuery3.Event(), 5171 event, 5172 { 5173 type, 5174 isSimulated: true 5175 } 5176 ); 5177 jQuery3.event.trigger(e, null, elem); 5178 } 5179 }); 5180 jQuery3.fn.extend({ 5181 trigger: function(type, data) { 5182 return this.each(function() { 5183 jQuery3.event.trigger(type, data, this); 5184 }); 5185 }, 5186 triggerHandler: function(type, data) { 5187 var elem = this[0]; 5188 if (elem) { 5189 return jQuery3.event.trigger(type, data, elem, true); 5190 } 5191 } 5192 }); 5193 var rbracket = /\[\]$/, rCRLF = /\r?\n/g, rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, rsubmittable = /^(?:input|select|textarea|keygen)/i; 5194 function buildParams(prefix, obj, traditional, add) { 5195 var name; 5196 if (Array.isArray(obj)) { 5197 jQuery3.each(obj, function(i, v) { 5198 if (traditional || rbracket.test(prefix)) { 5199 add(prefix, v); 5200 } else { 5201 buildParams( 5202 prefix + "[" + (typeof v === "object" && v != null ? i : "") + "]", 5203 v, 5204 traditional, 5205 add 5206 ); 5207 } 5208 }); 5209 } else if (!traditional && toType(obj) === "object") { 5210 for (name in obj) { 5211 buildParams(prefix + "[" + name + "]", obj[name], traditional, add); 5212 } 5213 } else { 5214 add(prefix, obj); 5215 } 5216 } 5217 jQuery3.param = function(a, traditional) { 5218 var prefix, s = [], add = function(key, valueOrFunction) { 5219 var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction; 5220 s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value); 5221 }; 5222 if (a == null) { 5223 return ""; 5224 } 5225 if (Array.isArray(a) || a.jquery && !jQuery3.isPlainObject(a)) { 5226 jQuery3.each(a, function() { 5227 add(this.name, this.value); 5228 }); 5229 } else { 5230 for (prefix in a) { 5231 buildParams(prefix, a[prefix], traditional, add); 5232 } 5233 } 5234 return s.join("&"); 5235 }; 5236 jQuery3.fn.extend({ 5237 serialize: function() { 5238 return jQuery3.param(this.serializeArray()); 5239 }, 5240 serializeArray: function() { 5241 return this.map(function() { 5242 var elements = jQuery3.prop(this, "elements"); 5243 return elements ? jQuery3.makeArray(elements) : this; 5244 }).filter(function() { 5245 var type = this.type; 5246 return this.name && !jQuery3(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type)); 5247 }).map(function(_i, elem) { 5248 var val = jQuery3(this).val(); 5249 if (val == null) { 5250 return null; 5251 } 5252 if (Array.isArray(val)) { 5253 return jQuery3.map(val, function(val2) { 5254 return { name: elem.name, value: val2.replace(rCRLF, "\r\n") }; 5255 }); 5256 } 5257 return { name: elem.name, value: val.replace(rCRLF, "\r\n") }; 5258 }).get(); 5259 } 5260 }); 5261 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 = {}, transports = {}, allTypes = "*/".concat("*"), originAnchor = document2.createElement("a"); 5262 originAnchor.href = location2.href; 5263 function addToPrefiltersOrTransports(structure) { 5264 return function(dataTypeExpression, func) { 5265 if (typeof dataTypeExpression !== "string") { 5266 func = dataTypeExpression; 5267 dataTypeExpression = "*"; 5268 } 5269 var dataType, i = 0, dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || []; 5270 if (isFunction(func)) { 5271 while (dataType = dataTypes[i++]) { 5272 if (dataType[0] === "+") { 5273 dataType = dataType.slice(1) || "*"; 5274 (structure[dataType] = structure[dataType] || []).unshift(func); 5275 } else { 5276 (structure[dataType] = structure[dataType] || []).push(func); 5277 } 5278 } 5279 } 5280 }; 5281 } 5282 function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) { 5283 var inspected = {}, seekingTransport = structure === transports; 5284 function inspect(dataType) { 5285 var selected; 5286 inspected[dataType] = true; 5287 jQuery3.each(structure[dataType] || [], function(_, prefilterOrFactory) { 5288 var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR); 5289 if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) { 5290 options.dataTypes.unshift(dataTypeOrTransport); 5291 inspect(dataTypeOrTransport); 5292 return false; 5293 } else if (seekingTransport) { 5294 return !(selected = dataTypeOrTransport); 5295 } 5296 }); 5297 return selected; 5298 } 5299 return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*"); 5300 } 5301 function ajaxExtend(target, src) { 5302 var key, deep, flatOptions = jQuery3.ajaxSettings.flatOptions || {}; 5303 for (key in src) { 5304 if (src[key] !== void 0) { 5305 (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key]; 5306 } 5307 } 5308 if (deep) { 5309 jQuery3.extend(true, target, deep); 5310 } 5311 return target; 5312 } 5313 function ajaxHandleResponses(s, jqXHR, responses) { 5314 var ct, type, finalDataType, firstDataType, contents = s.contents, dataTypes = s.dataTypes; 5315 while (dataTypes[0] === "*") { 5316 dataTypes.shift(); 5317 if (ct === void 0) { 5318 ct = s.mimeType || jqXHR.getResponseHeader("Content-Type"); 5319 } 5320 } 5321 if (ct) { 5322 for (type in contents) { 5323 if (contents[type] && contents[type].test(ct)) { 5324 dataTypes.unshift(type); 5325 break; 5326 } 5327 } 5328 } 5329 if (dataTypes[0] in responses) { 5330 finalDataType = dataTypes[0]; 5331 } else { 5332 for (type in responses) { 5333 if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) { 5334 finalDataType = type; 5335 break; 5336 } 5337 if (!firstDataType) { 5338 firstDataType = type; 5339 } 5340 } 5341 finalDataType = finalDataType || firstDataType; 5342 } 5343 if (finalDataType) { 5344 if (finalDataType !== dataTypes[0]) { 5345 dataTypes.unshift(finalDataType); 5346 } 5347 return responses[finalDataType]; 5348 } 5349 } 5350 function ajaxConvert(s, response, jqXHR, isSuccess) { 5351 var conv2, current, conv, tmp, prev, converters = {}, dataTypes = s.dataTypes.slice(); 5352 if (dataTypes[1]) { 5353 for (conv in s.converters) { 5354 converters[conv.toLowerCase()] = s.converters[conv]; 5355 } 5356 } 5357 current = dataTypes.shift(); 5358 while (current) { 5359 if (s.responseFields[current]) { 5360 jqXHR[s.responseFields[current]] = response; 5361 } 5362 if (!prev && isSuccess && s.dataFilter) { 5363 response = s.dataFilter(response, s.dataType); 5364 } 5365 prev = current; 5366 current = dataTypes.shift(); 5367 if (current) { 5368 if (current === "*") { 5369 current = prev; 5370 } else if (prev !== "*" && prev !== current) { 5371 conv = converters[prev + " " + current] || converters["* " + current]; 5372 if (!conv) { 5373 for (conv2 in converters) { 5374 tmp = conv2.split(" "); 5375 if (tmp[1] === current) { 5376 conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]]; 5377 if (conv) { 5378 if (conv === true) { 5379 conv = converters[conv2]; 5380 } else if (converters[conv2] !== true) { 5381 current = tmp[0]; 5382 dataTypes.unshift(tmp[1]); 5383 } 5384 break; 5385 } 5386 } 5387 } 5388 } 5389 if (conv !== true) { 5390 if (conv && s.throws) { 5391 response = conv(response); 5392 } else { 5393 try { 5394 response = conv(response); 5395 } catch (e) { 5396 return { 5397 state: "parsererror", 5398 error: conv ? e : "No conversion from " + prev + " to " + current 5399 }; 5400 } 5401 } 5402 } 5403 } 5404 } 5405 } 5406 return { state: "success", data: response }; 5407 } 5408 jQuery3.extend({ 5409 // Counter for holding the number of active queries 5410 active: 0, 5411 // Last-Modified header cache for next request 5412 lastModified: {}, 5413 etag: {}, 5414 ajaxSettings: { 5415 url: location2.href, 5416 type: "GET", 5417 isLocal: rlocalProtocol.test(location2.protocol), 5418 global: true, 5419 processData: true, 5420 async: true, 5421 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 5422 /* 5423 timeout: 0, 5424 data: null, 5425 dataType: null, 5426 username: null, 5427 password: null, 5428 cache: null, 5429 throws: false, 5430 traditional: false, 5431 headers: {}, 5432 */ 5433 accepts: { 5434 "*": allTypes, 5435 text: "text/plain", 5436 html: "text/html", 5437 xml: "application/xml, text/xml", 5438 json: "application/json, text/javascript" 5439 }, 5440 contents: { 5441 xml: /\bxml\b/, 5442 html: /\bhtml/, 5443 json: /\bjson\b/ 5444 }, 5445 responseFields: { 5446 xml: "responseXML", 5447 text: "responseText", 5448 json: "responseJSON" 5449 }, 5450 // Data converters 5451 // Keys separate source (or catchall "*") and destination types with a single space 5452 converters: { 5453 // Convert anything to text 5454 "* text": String, 5455 // Text to html (true = no transformation) 5456 "text html": true, 5457 // Evaluate text as a json expression 5458 "text json": JSON.parse, 5459 // Parse text as xml 5460 "text xml": jQuery3.parseXML 5461 }, 5462 // For options that shouldn't be deep extended: 5463 // you can add your own custom options here if 5464 // and when you create one that shouldn't be 5465 // deep extended (see ajaxExtend) 5466 flatOptions: { 5467 url: true, 5468 context: true 5469 } 5470 }, 5471 // Creates a full fledged settings object into target 5472 // with both ajaxSettings and settings fields. 5473 // If target is omitted, writes into ajaxSettings. 5474 ajaxSetup: function(target, settings) { 5475 return settings ? ( 5476 // Building a settings object 5477 ajaxExtend(ajaxExtend(target, jQuery3.ajaxSettings), settings) 5478 ) : ( 5479 // Extending ajaxSettings 5480 ajaxExtend(jQuery3.ajaxSettings, target) 5481 ); 5482 }, 5483 ajaxPrefilter: addToPrefiltersOrTransports(prefilters), 5484 ajaxTransport: addToPrefiltersOrTransports(transports), 5485 // Main method 5486 ajax: function(url, options) { 5487 if (typeof url === "object") { 5488 options = url; 5489 url = void 0; 5490 } 5491 options = options || {}; 5492 var transport, cacheURL, responseHeadersString, responseHeaders, timeoutTimer, urlAnchor, completed2, fireGlobals, i, 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 = { 5493 readyState: 0, 5494 // Builds headers hashtable if needed 5495 getResponseHeader: function(key) { 5496 var match; 5497 if (completed2) { 5498 if (!responseHeaders) { 5499 responseHeaders = {}; 5500 while (match = rheaders.exec(responseHeadersString)) { 5501 responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]); 5502 } 5503 } 5504 match = responseHeaders[key.toLowerCase() + " "]; 5505 } 5506 return match == null ? null : match.join(", "); 5507 }, 5508 // Raw string 5509 getAllResponseHeaders: function() { 5510 return completed2 ? responseHeadersString : null; 5511 }, 5512 // Caches the header 5513 setRequestHeader: function(name, value) { 5514 if (completed2 == null) { 5515 name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name; 5516 requestHeaders[name] = value; 5517 } 5518 return this; 5519 }, 5520 // Overrides response content-type header 5521 overrideMimeType: function(type) { 5522 if (completed2 == null) { 5523 s.mimeType = type; 5524 } 5525 return this; 5526 }, 5527 // Status-dependent callbacks 5528 statusCode: function(map) { 5529 var code; 5530 if (map) { 5531 if (completed2) { 5532 jqXHR.always(map[jqXHR.status]); 5533 } else { 5534 for (code in map) { 5535 statusCode[code] = [statusCode[code], map[code]]; 5536 } 5537 } 5538 } 5539 return this; 5540 }, 5541 // Cancel the request 5542 abort: function(statusText) { 5543 var finalText = statusText || strAbort; 5544 if (transport) { 5545 transport.abort(finalText); 5546 } 5547 done(0, finalText); 5548 return this; 5549 } 5550 }; 5551 deferred.promise(jqXHR); 5552 s.url = ((url || s.url || location2.href) + "").replace(rprotocol, location2.protocol + "//"); 5553 s.type = options.method || options.type || s.method || s.type; 5554 s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""]; 5555 if (s.crossDomain == null) { 5556 urlAnchor = document2.createElement("a"); 5557 try { 5558 urlAnchor.href = s.url; 5559 urlAnchor.href = urlAnchor.href; 5560 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host; 5561 } catch (e) { 5562 s.crossDomain = true; 5563 } 5564 } 5565 if (s.data && s.processData && typeof s.data !== "string") { 5566 s.data = jQuery3.param(s.data, s.traditional); 5567 } 5568 inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); 5569 if (completed2) { 5570 return jqXHR; 5571 } 5572 fireGlobals = jQuery3.event && s.global; 5573 if (fireGlobals && jQuery3.active++ === 0) { 5574 jQuery3.event.trigger("ajaxStart"); 5575 } 5576 s.type = s.type.toUpperCase(); 5577 s.hasContent = !rnoContent.test(s.type); 5578 cacheURL = s.url.replace(rhash, ""); 5579 if (!s.hasContent) { 5580 uncached = s.url.slice(cacheURL.length); 5581 if (s.data && (s.processData || typeof s.data === "string")) { 5582 cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data; 5583 delete s.data; 5584 } 5585 if (s.cache === false) { 5586 cacheURL = cacheURL.replace(rantiCache, "$1"); 5587 uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached; 5588 } 5589 s.url = cacheURL + uncached; 5590 } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) { 5591 s.data = s.data.replace(r20, "+"); 5592 } 5593 if (s.ifModified) { 5594 if (jQuery3.lastModified[cacheURL]) { 5595 jqXHR.setRequestHeader("If-Modified-Since", jQuery3.lastModified[cacheURL]); 5596 } 5597 if (jQuery3.etag[cacheURL]) { 5598 jqXHR.setRequestHeader("If-None-Match", jQuery3.etag[cacheURL]); 5599 } 5600 } 5601 if (s.data && s.hasContent && s.contentType !== false || options.contentType) { 5602 jqXHR.setRequestHeader("Content-Type", s.contentType); 5603 } 5604 jqXHR.setRequestHeader( 5605 "Accept", 5606 s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"] 5607 ); 5608 for (i in s.headers) { 5609 jqXHR.setRequestHeader(i, s.headers[i]); 5610 } 5611 if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed2)) { 5612 return jqXHR.abort(); 5613 } 5614 strAbort = "abort"; 5615 completeDeferred.add(s.complete); 5616 jqXHR.done(s.success); 5617 jqXHR.fail(s.error); 5618 transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); 5619 if (!transport) { 5620 done(-1, "No Transport"); 5621 } else { 5622 jqXHR.readyState = 1; 5623 if (fireGlobals) { 5624 globalEventContext.trigger("ajaxSend", [jqXHR, s]); 5625 } 5626 if (completed2) { 5627 return jqXHR; 5628 } 5629 if (s.async && s.timeout > 0) { 5630 timeoutTimer = window2.setTimeout(function() { 5631 jqXHR.abort("timeout"); 5632 }, s.timeout); 5633 } 5634 try { 5635 completed2 = false; 5636 transport.send(requestHeaders, done); 5637 } catch (e) { 5638 if (completed2) { 5639 throw e; 5640 } 5641 done(-1, e); 5642 } 5643 } 5644 function done(status, nativeStatusText, responses, headers) { 5645 var isSuccess, success, error, response, modified, statusText = nativeStatusText; 5646 if (completed2) { 5647 return; 5648 } 5649 completed2 = true; 5650 if (timeoutTimer) { 5651 window2.clearTimeout(timeoutTimer); 5652 } 5653 transport = void 0; 5654 responseHeadersString = headers || ""; 5655 jqXHR.readyState = status > 0 ? 4 : 0; 5656 isSuccess = status >= 200 && status < 300 || status === 304; 5657 if (responses) { 5658 response = ajaxHandleResponses(s, jqXHR, responses); 5659 } 5660 if (!isSuccess && jQuery3.inArray("script", s.dataTypes) > -1 && jQuery3.inArray("json", s.dataTypes) < 0) { 5661 s.converters["text script"] = function() { 5662 }; 5663 } 5664 response = ajaxConvert(s, response, jqXHR, isSuccess); 5665 if (isSuccess) { 5666 if (s.ifModified) { 5667 modified = jqXHR.getResponseHeader("Last-Modified"); 5668 if (modified) { 5669 jQuery3.lastModified[cacheURL] = modified; 5670 } 5671 modified = jqXHR.getResponseHeader("etag"); 5672 if (modified) { 5673 jQuery3.etag[cacheURL] = modified; 5674 } 5675 } 5676 if (status === 204 || s.type === "HEAD") { 5677 statusText = "nocontent"; 5678 } else if (status === 304) { 5679 statusText = "notmodified"; 5680 } else { 5681 statusText = response.state; 5682 success = response.data; 5683 error = response.error; 5684 isSuccess = !error; 5685 } 5686 } else { 5687 error = statusText; 5688 if (status || !statusText) { 5689 statusText = "error"; 5690 if (status < 0) { 5691 status = 0; 5692 } 5693 } 5694 } 5695 jqXHR.status = status; 5696 jqXHR.statusText = (nativeStatusText || statusText) + ""; 5697 if (isSuccess) { 5698 deferred.resolveWith(callbackContext, [success, statusText, jqXHR]); 5699 } else { 5700 deferred.rejectWith(callbackContext, [jqXHR, statusText, error]); 5701 } 5702 jqXHR.statusCode(statusCode); 5703 statusCode = void 0; 5704 if (fireGlobals) { 5705 globalEventContext.trigger( 5706 isSuccess ? "ajaxSuccess" : "ajaxError", 5707 [jqXHR, s, isSuccess ? success : error] 5708 ); 5709 } 5710 completeDeferred.fireWith(callbackContext, [jqXHR, statusText]); 5711 if (fireGlobals) { 5712 globalEventContext.trigger("ajaxComplete", [jqXHR, s]); 5713 if (!--jQuery3.active) { 5714 jQuery3.event.trigger("ajaxStop"); 5715 } 5716 } 5717 } 5718 return jqXHR; 5719 }, 5720 getJSON: function(url, data, callback) { 5721 return jQuery3.get(url, data, callback, "json"); 5722 }, 5723 getScript: function(url, callback) { 5724 return jQuery3.get(url, void 0, callback, "script"); 5725 } 5726 }); 5727 jQuery3.each(["get", "post"], function(_i, method) { 5728 jQuery3[method] = function(url, data, callback, type) { 5729 if (isFunction(data)) { 5730 type = type || callback; 5731 callback = data; 5732 data = void 0; 5733 } 5734 return jQuery3.ajax(jQuery3.extend({ 5735 url, 5736 type: method, 5737 dataType: type, 5738 data, 5739 success: callback 5740 }, jQuery3.isPlainObject(url) && url)); 5741 }; 5742 }); 5743 jQuery3.ajaxPrefilter(function(s) { 5744 var i; 5745 for (i in s.headers) { 5746 if (i.toLowerCase() === "content-type") { 5747 s.contentType = s.headers[i] || ""; 5748 } 5749 } 5750 }); 5751 jQuery3._evalUrl = function(url, options, doc) { 5752 return jQuery3.ajax({ 5753 url, 5754 // Make this explicit, since user can override this through ajaxSetup (trac-11264) 5755 type: "GET", 5756 dataType: "script", 5757 cache: true, 5758 async: false, 5759 global: false, 5760 // Only evaluate the response if it is successful (gh-4126) 5761 // dataFilter is not invoked for failure responses, so using it instead 5762 // of the default converter is kludgy but it works. 5763 converters: { 5764 "text script": function() { 5765 } 5766 }, 5767 dataFilter: function(response) { 5768 jQuery3.globalEval(response, options, doc); 5769 } 5770 }); 5771 }; 5772 jQuery3.fn.extend({ 5773 wrapAll: function(html) { 5774 var wrap; 5775 if (this[0]) { 5776 if (isFunction(html)) { 5777 html = html.call(this[0]); 5778 } 5779 wrap = jQuery3(html, this[0].ownerDocument).eq(0).clone(true); 5780 if (this[0].parentNode) { 5781 wrap.insertBefore(this[0]); 5782 } 5783 wrap.map(function() { 5784 var elem = this; 5785 while (elem.firstElementChild) { 5786 elem = elem.firstElementChild; 5787 } 5788 return elem; 5789 }).append(this); 5790 } 5791 return this; 5792 }, 5793 wrapInner: function(html) { 5794 if (isFunction(html)) { 5795 return this.each(function(i) { 5796 jQuery3(this).wrapInner(html.call(this, i)); 5797 }); 5798 } 5799 return this.each(function() { 5800 var self = jQuery3(this), contents = self.contents(); 5801 if (contents.length) { 5802 contents.wrapAll(html); 5803 } else { 5804 self.append(html); 5805 } 5806 }); 5807 }, 5808 wrap: function(html) { 5809 var htmlIsFunction = isFunction(html); 5810 return this.each(function(i) { 5811 jQuery3(this).wrapAll(htmlIsFunction ? html.call(this, i) : html); 5812 }); 5813 }, 5814 unwrap: function(selector) { 5815 this.parent(selector).not("body").each(function() { 5816 jQuery3(this).replaceWith(this.childNodes); 5817 }); 5818 return this; 5819 } 5820 }); 5821 jQuery3.expr.pseudos.hidden = function(elem) { 5822 return !jQuery3.expr.pseudos.visible(elem); 5823 }; 5824 jQuery3.expr.pseudos.visible = function(elem) { 5825 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length); 5826 }; 5827 jQuery3.ajaxSettings.xhr = function() { 5828 try { 5829 return new window2.XMLHttpRequest(); 5830 } catch (e) { 5831 } 5832 }; 5833 var xhrSuccessStatus = { 5834 // File protocol always yields status code 0, assume 200 5835 0: 200, 5836 // Support: IE <=9 only 5837 // trac-1450: sometimes IE returns 1223 when it should be 204 5838 1223: 204 5839 }, xhrSupported = jQuery3.ajaxSettings.xhr(); 5840 support.cors = !!xhrSupported && "withCredentials" in xhrSupported; 5841 support.ajax = xhrSupported = !!xhrSupported; 5842 jQuery3.ajaxTransport(function(options) { 5843 var callback, errorCallback; 5844 if (support.cors || xhrSupported && !options.crossDomain) { 5845 return { 5846 send: function(headers, complete) { 5847 var i, xhr = options.xhr(); 5848 xhr.open( 5849 options.type, 5850 options.url, 5851 options.async, 5852 options.username, 5853 options.password 5854 ); 5855 if (options.xhrFields) { 5856 for (i in options.xhrFields) { 5857 xhr[i] = options.xhrFields[i]; 5858 } 5859 } 5860 if (options.mimeType && xhr.overrideMimeType) { 5861 xhr.overrideMimeType(options.mimeType); 5862 } 5863 if (!options.crossDomain && !headers["X-Requested-With"]) { 5864 headers["X-Requested-With"] = "XMLHttpRequest"; 5865 } 5866 for (i in headers) { 5867 xhr.setRequestHeader(i, headers[i]); 5868 } 5869 callback = function(type) { 5870 return function() { 5871 if (callback) { 5872 callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null; 5873 if (type === "abort") { 5874 xhr.abort(); 5875 } else if (type === "error") { 5876 if (typeof xhr.status !== "number") { 5877 complete(0, "error"); 5878 } else { 5879 complete( 5880 // File: protocol always yields status 0; see trac-8605, trac-14207 5881 xhr.status, 5882 xhr.statusText 5883 ); 5884 } 5885 } else { 5886 complete( 5887 xhrSuccessStatus[xhr.status] || xhr.status, 5888 xhr.statusText, 5889 // Support: IE <=9 only 5890 // IE9 has no XHR2 but throws on binary (trac-11426) 5891 // For XHR2 non-text, let the caller handle it (gh-2498) 5892 (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? { binary: xhr.response } : { text: xhr.responseText }, 5893 xhr.getAllResponseHeaders() 5894 ); 5895 } 5896 } 5897 }; 5898 }; 5899 xhr.onload = callback(); 5900 errorCallback = xhr.onerror = xhr.ontimeout = callback("error"); 5901 if (xhr.onabort !== void 0) { 5902 xhr.onabort = errorCallback; 5903 } else { 5904 xhr.onreadystatechange = function() { 5905 if (xhr.readyState === 4) { 5906 window2.setTimeout(function() { 5907 if (callback) { 5908 errorCallback(); 5909 } 5910 }); 5911 } 5912 }; 5913 } 5914 callback = callback("abort"); 5915 try { 5916 xhr.send(options.hasContent && options.data || null); 5917 } catch (e) { 5918 if (callback) { 5919 throw e; 5920 } 5921 } 5922 }, 5923 abort: function() { 5924 if (callback) { 5925 callback(); 5926 } 5927 } 5928 }; 5929 } 5930 }); 5931 jQuery3.ajaxPrefilter(function(s) { 5932 if (s.crossDomain) { 5933 s.contents.script = false; 5934 } 5935 }); 5936 jQuery3.ajaxSetup({ 5937 accepts: { 5938 script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" 5939 }, 5940 contents: { 5941 script: /\b(?:java|ecma)script\b/ 5942 }, 5943 converters: { 5944 "text script": function(text) { 5945 jQuery3.globalEval(text); 5946 return text; 5947 } 5948 } 5949 }); 5950 jQuery3.ajaxPrefilter("script", function(s) { 5951 if (s.cache === void 0) { 5952 s.cache = false; 5953 } 5954 if (s.crossDomain) { 5955 s.type = "GET"; 5956 } 5957 }); 5958 jQuery3.ajaxTransport("script", function(s) { 5959 if (s.crossDomain || s.scriptAttrs) { 5960 var script, callback; 5961 return { 5962 send: function(_, complete) { 5963 script = jQuery3("<script>").attr(s.scriptAttrs || {}).prop({ charset: s.scriptCharset, src: s.url }).on("load error", callback = function(evt) { 5964 script.remove(); 5965 callback = null; 5966 if (evt) { 5967 complete(evt.type === "error" ? 404 : 200, evt.type); 5968 } 5969 }); 5970 document2.head.appendChild(script[0]); 5971 }, 5972 abort: function() { 5973 if (callback) { 5974 callback(); 5975 } 5976 } 5977 }; 5978 } 5979 }); 5980 var oldCallbacks = [], rjsonp = /(=)\?(?=&|$)|\?\?/; 5981 jQuery3.ajaxSetup({ 5982 jsonp: "callback", 5983 jsonpCallback: function() { 5984 var callback = oldCallbacks.pop() || jQuery3.expando + "_" + nonce.guid++; 5985 this[callback] = true; 5986 return callback; 5987 } 5988 }); 5989 jQuery3.ajaxPrefilter("json jsonp", function(s, originalSettings, jqXHR) { 5990 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"); 5991 if (jsonProp || s.dataTypes[0] === "jsonp") { 5992 callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; 5993 if (jsonProp) { 5994 s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName); 5995 } else if (s.jsonp !== false) { 5996 s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName; 5997 } 5998 s.converters["script json"] = function() { 5999 if (!responseContainer) { 6000 jQuery3.error(callbackName + " was not called"); 6001 } 6002 return responseContainer[0]; 6003 }; 6004 s.dataTypes[0] = "json"; 6005 overwritten = window2[callbackName]; 6006 window2[callbackName] = function() { 6007 responseContainer = arguments; 6008 }; 6009 jqXHR.always(function() { 6010 if (overwritten === void 0) { 6011 jQuery3(window2).removeProp(callbackName); 6012 } else { 6013 window2[callbackName] = overwritten; 6014 } 6015 if (s[callbackName]) { 6016 s.jsonpCallback = originalSettings.jsonpCallback; 6017 oldCallbacks.push(callbackName); 6018 } 6019 if (responseContainer && isFunction(overwritten)) { 6020 overwritten(responseContainer[0]); 6021 } 6022 responseContainer = overwritten = void 0; 6023 }); 6024 return "script"; 6025 } 6026 }); 6027 support.createHTMLDocument = (function() { 6028 var body = document2.implementation.createHTMLDocument("").body; 6029 body.innerHTML = "<form></form><form></form>"; 6030 return body.childNodes.length === 2; 6031 })(); 6032 jQuery3.parseHTML = function(data, context, keepScripts) { 6033 if (typeof data !== "string") { 6034 return []; 6035 } 6036 if (typeof context === "boolean") { 6037 keepScripts = context; 6038 context = false; 6039 } 6040 var base, parsed, scripts; 6041 if (!context) { 6042 if (support.createHTMLDocument) { 6043 context = document2.implementation.createHTMLDocument(""); 6044 base = context.createElement("base"); 6045 base.href = document2.location.href; 6046 context.head.appendChild(base); 6047 } else { 6048 context = document2; 6049 } 6050 } 6051 parsed = rsingleTag.exec(data); 6052 scripts = !keepScripts && []; 6053 if (parsed) { 6054 return [context.createElement(parsed[1])]; 6055 } 6056 parsed = buildFragment([data], context, scripts); 6057 if (scripts && scripts.length) { 6058 jQuery3(scripts).remove(); 6059 } 6060 return jQuery3.merge([], parsed.childNodes); 6061 }; 6062 jQuery3.fn.load = function(url, params, callback) { 6063 var selector, type, response, self = this, off = url.indexOf(" "); 6064 if (off > -1) { 6065 selector = stripAndCollapse(url.slice(off)); 6066 url = url.slice(0, off); 6067 } 6068 if (isFunction(params)) { 6069 callback = params; 6070 params = void 0; 6071 } else if (params && typeof params === "object") { 6072 type = "POST"; 6073 } 6074 if (self.length > 0) { 6075 jQuery3.ajax({ 6076 url, 6077 // If "type" variable is undefined, then "GET" method will be used. 6078 // Make value of this field explicit since 6079 // user can override it through ajaxSetup method 6080 type: type || "GET", 6081 dataType: "html", 6082 data: params 6083 }).done(function(responseText) { 6084 response = arguments; 6085 self.html(selector ? ( 6086 // If a selector was specified, locate the right elements in a dummy div 6087 // Exclude scripts to avoid IE 'Permission Denied' errors 6088 jQuery3("<div>").append(jQuery3.parseHTML(responseText)).find(selector) 6089 ) : ( 6090 // Otherwise use the full result 6091 responseText 6092 )); 6093 }).always(callback && function(jqXHR, status) { 6094 self.each(function() { 6095 callback.apply(this, response || [jqXHR.responseText, status, jqXHR]); 6096 }); 6097 }); 6098 } 6099 return this; 6100 }; 6101 jQuery3.expr.pseudos.animated = function(elem) { 6102 return jQuery3.grep(jQuery3.timers, function(fn) { 6103 return elem === fn.elem; 6104 }).length; 6105 }; 6106 jQuery3.offset = { 6107 setOffset: function(elem, options, i) { 6108 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, position = jQuery3.css(elem, "position"), curElem = jQuery3(elem), props = {}; 6109 if (position === "static") { 6110 elem.style.position = "relative"; 6111 } 6112 curOffset = curElem.offset(); 6113 curCSSTop = jQuery3.css(elem, "top"); 6114 curCSSLeft = jQuery3.css(elem, "left"); 6115 calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1; 6116 if (calculatePosition) { 6117 curPosition = curElem.position(); 6118 curTop = curPosition.top; 6119 curLeft = curPosition.left; 6120 } else { 6121 curTop = parseFloat(curCSSTop) || 0; 6122 curLeft = parseFloat(curCSSLeft) || 0; 6123 } 6124 if (isFunction(options)) { 6125 options = options.call(elem, i, jQuery3.extend({}, curOffset)); 6126 } 6127 if (options.top != null) { 6128 props.top = options.top - curOffset.top + curTop; 6129 } 6130 if (options.left != null) { 6131 props.left = options.left - curOffset.left + curLeft; 6132 } 6133 if ("using" in options) { 6134 options.using.call(elem, props); 6135 } else { 6136 curElem.css(props); 6137 } 6138 } 6139 }; 6140 jQuery3.fn.extend({ 6141 // offset() relates an element's border box to the document origin 6142 offset: function(options) { 6143 if (arguments.length) { 6144 return options === void 0 ? this : this.each(function(i) { 6145 jQuery3.offset.setOffset(this, options, i); 6146 }); 6147 } 6148 var rect, win, elem = this[0]; 6149 if (!elem) { 6150 return; 6151 } 6152 if (!elem.getClientRects().length) { 6153 return { top: 0, left: 0 }; 6154 } 6155 rect = elem.getBoundingClientRect(); 6156 win = elem.ownerDocument.defaultView; 6157 return { 6158 top: rect.top + win.pageYOffset, 6159 left: rect.left + win.pageXOffset 6160 }; 6161 }, 6162 // position() relates an element's margin box to its offset parent's padding box 6163 // This corresponds to the behavior of CSS absolute positioning 6164 position: function() { 6165 if (!this[0]) { 6166 return; 6167 } 6168 var offsetParent, offset, doc, elem = this[0], parentOffset = { top: 0, left: 0 }; 6169 if (jQuery3.css(elem, "position") === "fixed") { 6170 offset = elem.getBoundingClientRect(); 6171 } else { 6172 offset = this.offset(); 6173 doc = elem.ownerDocument; 6174 offsetParent = elem.offsetParent || doc.documentElement; 6175 while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery3.css(offsetParent, "position") === "static") { 6176 offsetParent = offsetParent.parentNode; 6177 } 6178 if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) { 6179 parentOffset = jQuery3(offsetParent).offset(); 6180 parentOffset.top += jQuery3.css(offsetParent, "borderTopWidth", true); 6181 parentOffset.left += jQuery3.css(offsetParent, "borderLeftWidth", true); 6182 } 6183 } 6184 return { 6185 top: offset.top - parentOffset.top - jQuery3.css(elem, "marginTop", true), 6186 left: offset.left - parentOffset.left - jQuery3.css(elem, "marginLeft", true) 6187 }; 6188 }, 6189 // This method will return documentElement in the following cases: 6190 // 1) For the element inside the iframe without offsetParent, this method will return 6191 // documentElement of the parent window 6192 // 2) For the hidden or detached element 6193 // 3) For body or html element, i.e. in case of the html node - it will return itself 6194 // 6195 // but those exceptions were never presented as a real life use-cases 6196 // and might be considered as more preferable results. 6197 // 6198 // This logic, however, is not guaranteed and can change at any point in the future 6199 offsetParent: function() { 6200 return this.map(function() { 6201 var offsetParent = this.offsetParent; 6202 while (offsetParent && jQuery3.css(offsetParent, "position") === "static") { 6203 offsetParent = offsetParent.offsetParent; 6204 } 6205 return offsetParent || documentElement; 6206 }); 6207 } 6208 }); 6209 jQuery3.each({ scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(method, prop) { 6210 var top = "pageYOffset" === prop; 6211 jQuery3.fn[method] = function(val) { 6212 return access(this, function(elem, method2, val2) { 6213 var win; 6214 if (isWindow(elem)) { 6215 win = elem; 6216 } else if (elem.nodeType === 9) { 6217 win = elem.defaultView; 6218 } 6219 if (val2 === void 0) { 6220 return win ? win[prop] : elem[method2]; 6221 } 6222 if (win) { 6223 win.scrollTo( 6224 !top ? val2 : win.pageXOffset, 6225 top ? val2 : win.pageYOffset 6226 ); 6227 } else { 6228 elem[method2] = val2; 6229 } 6230 }, method, val, arguments.length); 6231 }; 6232 }); 6233 jQuery3.each(["top", "left"], function(_i, prop) { 6234 jQuery3.cssHooks[prop] = addGetHookIf( 6235 support.pixelPosition, 6236 function(elem, computed) { 6237 if (computed) { 6238 computed = curCSS(elem, prop); 6239 return rnumnonpx.test(computed) ? jQuery3(elem).position()[prop] + "px" : computed; 6240 } 6241 } 6242 ); 6243 }); 6244 jQuery3.each({ Height: "height", Width: "width" }, function(name, type) { 6245 jQuery3.each({ 6246 padding: "inner" + name, 6247 content: type, 6248 "": "outer" + name 6249 }, function(defaultExtra, funcName) { 6250 jQuery3.fn[funcName] = function(margin, value) { 6251 var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"), extra = defaultExtra || (margin === true || value === true ? "margin" : "border"); 6252 return access(this, function(elem, type2, value2) { 6253 var doc; 6254 if (isWindow(elem)) { 6255 return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name]; 6256 } 6257 if (elem.nodeType === 9) { 6258 doc = elem.documentElement; 6259 return Math.max( 6260 elem.body["scroll" + name], 6261 doc["scroll" + name], 6262 elem.body["offset" + name], 6263 doc["offset" + name], 6264 doc["client" + name] 6265 ); 6266 } 6267 return value2 === void 0 ? ( 6268 // Get width or height on the element, requesting but not forcing parseFloat 6269 jQuery3.css(elem, type2, extra) 6270 ) : ( 6271 // Set width or height on the element 6272 jQuery3.style(elem, type2, value2, extra) 6273 ); 6274 }, type, chainable ? margin : void 0, chainable); 6275 }; 6276 }); 6277 }); 6278 jQuery3.each([ 6279 "ajaxStart", 6280 "ajaxStop", 6281 "ajaxComplete", 6282 "ajaxError", 6283 "ajaxSuccess", 6284 "ajaxSend" 6285 ], function(_i, type) { 6286 jQuery3.fn[type] = function(fn) { 6287 return this.on(type, fn); 6288 }; 6289 }); 6290 jQuery3.fn.extend({ 6291 bind: function(types, data, fn) { 6292 return this.on(types, null, data, fn); 6293 }, 6294 unbind: function(types, fn) { 6295 return this.off(types, null, fn); 6296 }, 6297 delegate: function(selector, types, data, fn) { 6298 return this.on(types, selector, data, fn); 6299 }, 6300 undelegate: function(selector, types, fn) { 6301 return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn); 6302 }, 6303 hover: function(fnOver, fnOut) { 6304 return this.on("mouseenter", fnOver).on("mouseleave", fnOut || fnOver); 6305 } 6306 }); 6307 jQuery3.each( 6308 "blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), 6309 function(_i, name) { 6310 jQuery3.fn[name] = function(data, fn) { 6311 return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name); 6312 }; 6313 } 6314 ); 6315 var rtrim = /^[\s\uFEFF\xA0]+|([^\s\uFEFF\xA0])[\s\uFEFF\xA0]+$/g; 6316 jQuery3.proxy = function(fn, context) { 6317 var tmp, args, proxy; 6318 if (typeof context === "string") { 6319 tmp = fn[context]; 6320 context = fn; 6321 fn = tmp; 6322 } 6323 if (!isFunction(fn)) { 6324 return void 0; 6325 } 6326 args = slice.call(arguments, 2); 6327 proxy = function() { 6328 return fn.apply(context || this, args.concat(slice.call(arguments))); 6329 }; 6330 proxy.guid = fn.guid = fn.guid || jQuery3.guid++; 6331 return proxy; 6332 }; 6333 jQuery3.holdReady = function(hold) { 6334 if (hold) { 6335 jQuery3.readyWait++; 6336 } else { 6337 jQuery3.ready(true); 6338 } 6339 }; 6340 jQuery3.isArray = Array.isArray; 6341 jQuery3.parseJSON = JSON.parse; 6342 jQuery3.nodeName = nodeName; 6343 jQuery3.isFunction = isFunction; 6344 jQuery3.isWindow = isWindow; 6345 jQuery3.camelCase = camelCase; 6346 jQuery3.type = toType; 6347 jQuery3.now = Date.now; 6348 jQuery3.isNumeric = function(obj) { 6349 var type = jQuery3.type(obj); 6350 return (type === "number" || type === "string") && // parseFloat NaNs numeric-cast false positives ("") 6351 // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 6352 // subtraction forces infinities to NaN 6353 !isNaN(obj - parseFloat(obj)); 6354 }; 6355 jQuery3.trim = function(text) { 6356 return text == null ? "" : (text + "").replace(rtrim, "$1"); 6357 }; 6358 if (typeof define === "function" && define.amd) { 6359 define("jquery", [], function() { 6360 return jQuery3; 6361 }); 6362 } 6363 var _jQuery = window2.jQuery, _$ = window2.$; 6364 jQuery3.noConflict = function(deep) { 6365 if (window2.$ === jQuery3) { 6366 window2.$ = _$; 6367 } 6368 if (deep && window2.jQuery === jQuery3) { 6369 window2.jQuery = _jQuery; 6370 } 6371 return jQuery3; 6372 }; 6373 if (typeof noGlobal === "undefined") { 6374 window2.jQuery = window2.$ = jQuery3; 6375 } 6376 return jQuery3; 6377 }); 6378 } 6379}); 6380
6381// app/assets/javascripts/jquery/setup.js 6382var import_jquery = __toESM(require_jquery()); 6383window.jQuery = window.$ = import_jquery.default; 6384
vendor: 291 bytes, lines 6385-6398
6385// node_modules/jquery-ui/ui/version.js 6386(function(factory) { 6387 "use strict"; 6388 if (typeof define === "function" && define.amd) { 6389 define(["jquery"], factory); 6390 } else { 6391 factory(jQuery); 6392 } 6393})(function($) { 6394 "use strict"; 6395 $.ui = $.ui || {}; 6396 return $.ui.version = "1.14.2"; 6397}); 6398
vendor: 426 bytes, lines 6399-6417
6399// node_modules/jquery-ui/ui/data.js 6400(function(factory) { 6401 "use strict"; 6402 if (typeof define === "function" && define.amd) { 6403 define(["jquery", "./version"], factory); 6404 } else { 6405 factory(jQuery); 6406 } 6407})(function($) { 6408 "use strict"; 6409 return $.extend($.expr.pseudos, { 6410 data: $.expr.createPseudo(function(dataName) { 6411 return function(elem) { 6412 return !!$.data(elem, dataName); 6413 }; 6414 }) 6415 }); 6416}); 6417
vendor: 23,212 bytes, lines 6418-7091
6418// node_modules/jquery-ui/ui/effect.js 6419(function(factory) { 6420 "use strict"; 6421 if (typeof define === "function" && define.amd) { 6422 define([ 6423 "jquery", 6424 "./jquery-var-for-color", 6425 "./vendor/jquery-color/jquery.color", 6426 "./version" 6427 ], factory); 6428 } else { 6429 factory(jQuery); 6430 } 6431})(function($) { 6432 "use strict"; 6433 var dataSpace = "ui-effects-", dataSpaceStyle = "ui-effects-style", dataSpaceAnimated = "ui-effects-animated"; 6434 $.effects = { 6435 effect: {} 6436 }; 6437 (function() { 6438 var classAnimationActions = ["add", "remove", "toggle"], shorthandStyles = { 6439 border: 1, 6440 borderBottom: 1, 6441 borderColor: 1, 6442 borderLeft: 1, 6443 borderRight: 1, 6444 borderTop: 1, 6445 borderWidth: 1, 6446 margin: 1, 6447 padding: 1 6448 }; 6449 $.each( 6450 ["borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle"], 6451 function(_, prop) { 6452 $.fx.step[prop] = function(fx) { 6453 if (fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr) { 6454 jQuery.style(fx.elem, prop, fx.end); 6455 fx.setAttr = true; 6456 } 6457 }; 6458 } 6459 ); 6460 function camelCase(string) { 6461 return string.replace(/-([\da-z])/gi, function(all, letter) { 6462 return letter.toUpperCase(); 6463 }); 6464 } 6465 function getElementStyles(elem) { 6466 var key, len, style = elem.ownerDocument.defaultView.getComputedStyle(elem), styles = {}; 6467 len = style.length; 6468 while (len--) { 6469 key = style[len]; 6470 if (typeof style[key] === "string") { 6471 styles[camelCase(key)] = style[key]; 6472 } 6473 } 6474 return styles; 6475 } 6476 function styleDifference(oldStyle, newStyle) { 6477 var diff = {}, name, value; 6478 for (name in newStyle) { 6479 value = newStyle[name]; 6480 if (oldStyle[name] !== value) { 6481 if (!shorthandStyles[name]) { 6482 if ($.fx.step[name] || !isNaN(parseFloat(value))) { 6483 diff[name] = value; 6484 } 6485 } 6486 } 6487 } 6488 return diff; 6489 } 6490 $.effects.animateClass = function(value, duration, easing, callback) { 6491 var o = $.speed(duration, easing, callback); 6492 return this.queue(function() { 6493 var animated = $(this), baseClass = animated.attr("class") || "", applyClassChange, allAnimations = o.children ? animated.find("*").addBack() : animated; 6494 allAnimations = allAnimations.map(function() { 6495 var el = $(this); 6496 return { 6497 el, 6498 start: getElementStyles(this) 6499 }; 6500 }); 6501 applyClassChange = function() { 6502 $.each(classAnimationActions, function(i, action) { 6503 if (value[action]) { 6504 animated[action + "Class"](value[action]); 6505 } 6506 }); 6507 }; 6508 applyClassChange(); 6509 allAnimations = allAnimations.map(function() { 6510 this.end = getElementStyles(this.el[0]); 6511 this.diff = styleDifference(this.start, this.end); 6512 return this; 6513 }); 6514 animated.attr("class", baseClass); 6515 allAnimations = allAnimations.map(function() { 6516 var styleInfo = this, dfd = $.Deferred(), opts = $.extend({}, o, { 6517 queue: false, 6518 complete: function() { 6519 dfd.resolve(styleInfo); 6520 } 6521 }); 6522 this.el.animate(this.diff, opts); 6523 return dfd.promise(); 6524 }); 6525 $.when.apply($, allAnimations.get()).done(function() { 6526 applyClassChange(); 6527 $.each(arguments, function() { 6528 var el = this.el; 6529 $.each(this.diff, function(key) { 6530 el.css(key, ""); 6531 }); 6532 }); 6533 o.complete.call(animated[0]); 6534 }); 6535 }); 6536 }; 6537 $.fn.extend({ 6538 addClass: /* @__PURE__ */ (function(orig) { 6539 return function(classNames, speed, easing, callback) { 6540 return speed ? $.effects.animateClass.call( 6541 this, 6542 { add: classNames }, 6543 speed, 6544 easing, 6545 callback 6546 ) : orig.apply(this, arguments); 6547 }; 6548 })($.fn.addClass), 6549 removeClass: /* @__PURE__ */ (function(orig) { 6550 return function(classNames, speed, easing, callback) { 6551 return arguments.length > 1 ? $.effects.animateClass.call( 6552 this, 6553 { remove: classNames }, 6554 speed, 6555 easing, 6556 callback 6557 ) : orig.apply(this, arguments); 6558 }; 6559 })($.fn.removeClass), 6560 toggleClass: /* @__PURE__ */ (function(orig) { 6561 return function(classNames, force, speed, easing, callback) { 6562 if (typeof force === "boolean" || force === void 0) { 6563 if (!speed) { 6564 return orig.apply(this, arguments); 6565 } else { 6566 return $.effects.animateClass.call( 6567 this, 6568 force ? { add: classNames } : { remove: classNames }, 6569 speed, 6570 easing, 6571 callback 6572 ); 6573 } 6574 } else { 6575 return $.effects.animateClass.call( 6576 this, 6577 { toggle: classNames }, 6578 force, 6579 speed, 6580 easing 6581 ); 6582 } 6583 }; 6584 })($.fn.toggleClass), 6585 switchClass: function(remove, add, speed, easing, callback) { 6586 return $.effects.animateClass.call(this, { 6587 add, 6588 remove 6589 }, speed, easing, callback); 6590 } 6591 }); 6592 })(); 6593 (function() { 6594 if ($.expr && $.expr.pseudos && $.expr.pseudos.animated) { 6595 $.expr.pseudos.animated = /* @__PURE__ */ (function(orig) { 6596 return function(elem) { 6597 return !!$(elem).data(dataSpaceAnimated) || orig(elem); 6598 }; 6599 })($.expr.pseudos.animated); 6600 } 6601 if ($.uiBackCompat === true) { 6602 $.extend($.effects, { 6603 // Saves a set of properties in a data storage 6604 save: function(element, set) { 6605 var i = 0, length = set.length; 6606 for (; i < length; i++) { 6607 if (set[i] !== null) { 6608 element.data(dataSpace + set[i], element[0].style[set[i]]); 6609 } 6610 } 6611 }, 6612 // Restores a set of previously saved properties from a data storage 6613 restore: function(element, set) { 6614 var val, i = 0, length = set.length; 6615 for (; i < length; i++) { 6616 if (set[i] !== null) { 6617 val = element.data(dataSpace + set[i]); 6618 element.css(set[i], val); 6619 } 6620 } 6621 }, 6622 setMode: function(el, mode) { 6623 if (mode === "toggle") { 6624 mode = el.is(":hidden") ? "show" : "hide"; 6625 } 6626 return mode; 6627 }, 6628 // Wraps the element around a wrapper that copies position properties 6629 createWrapper: function(element) { 6630 if (element.parent().is(".ui-effects-wrapper")) { 6631 return element.parent(); 6632 } 6633 var props = { 6634 width: element.outerWidth(true), 6635 height: element.outerHeight(true), 6636 "float": element.css("float") 6637 }, wrapper = $("<div></div>").addClass("ui-effects-wrapper").css({ 6638 fontSize: "100%", 6639 background: "transparent", 6640 border: "none", 6641 margin: 0, 6642 padding: 0 6643 }), size = { 6644 width: element.width(), 6645 height: element.height() 6646 }, active = document.activeElement; 6647 try { 6648 active.id; 6649 } catch (_e) { 6650 active = document.body; 6651 } 6652 element.wrap(wrapper); 6653 if (element[0] === active || $.contains(element[0], active)) { 6654 $(active).trigger("focus"); 6655 } 6656 wrapper = element.parent(); 6657 if (element.css("position") === "static") { 6658 wrapper.css({ position: "relative" }); 6659 element.css({ position: "relative" }); 6660 } else { 6661 $.extend(props, { 6662 position: element.css("position"), 6663 zIndex: element.css("z-index") 6664 }); 6665 $.each(["top", "left", "bottom", "right"], function(i, pos) { 6666 props[pos] = element.css(pos); 6667 if (isNaN(parseInt(props[pos], 10))) { 6668 props[pos] = "auto"; 6669 } 6670 }); 6671 element.css({ 6672 position: "relative", 6673 top: 0, 6674 left: 0, 6675 right: "auto", 6676 bottom: "auto" 6677 }); 6678 } 6679 element.css(size); 6680 return wrapper.css(props).show(); 6681 }, 6682 removeWrapper: function(element) { 6683 var active = document.activeElement; 6684 if (element.parent().is(".ui-effects-wrapper")) { 6685 element.parent().replaceWith(element); 6686 if (element[0] === active || $.contains(element[0], active)) { 6687 $(active).trigger("focus"); 6688 } 6689 } 6690 return element; 6691 } 6692 }); 6693 } 6694 $.extend($.effects, { 6695 version: "1.14.2", 6696 define: function(name, mode, effect) { 6697 if (!effect) { 6698 effect = mode; 6699 mode = "effect"; 6700 } 6701 $.effects.effect[name] = effect; 6702 $.effects.effect[name].mode = mode; 6703 return effect; 6704 }, 6705 scaledDimensions: function(element, percent, direction) { 6706 if (percent === 0) { 6707 return { 6708 height: 0, 6709 width: 0, 6710 outerHeight: 0, 6711 outerWidth: 0 6712 }; 6713 } 6714 var x = direction !== "horizontal" ? (percent || 100) / 100 : 1, y = direction !== "vertical" ? (percent || 100) / 100 : 1; 6715 return { 6716 height: element.height() * y, 6717 width: element.width() * x, 6718 outerHeight: element.outerHeight() * y, 6719 outerWidth: element.outerWidth() * x 6720 }; 6721 }, 6722 clipToBox: function(animation) { 6723 return { 6724 width: animation.clip.right - animation.clip.left, 6725 height: animation.clip.bottom - animation.clip.top, 6726 left: animation.clip.left, 6727 top: animation.clip.top 6728 }; 6729 }, 6730 // Injects recently queued functions to be first in line (after "inprogress") 6731 unshift: function(element, queueLength, count) { 6732 var queue = element.queue(); 6733 if (queueLength > 1) { 6734 queue.splice.apply( 6735 queue, 6736 [1, 0].concat(queue.splice(queueLength, count)) 6737 ); 6738 } 6739 element.dequeue(); 6740 }, 6741 saveStyle: function(element) { 6742 element.data(dataSpaceStyle, element[0].style.cssText); 6743 }, 6744 restoreStyle: function(element) { 6745 element[0].style.cssText = element.data(dataSpaceStyle) || ""; 6746 element.removeData(dataSpaceStyle); 6747 }, 6748 mode: function(element, mode) { 6749 var hidden = element.is(":hidden"); 6750 if (mode === "toggle") { 6751 mode = hidden ? "show" : "hide"; 6752 } 6753 if (hidden ? mode === "hide" : mode === "show") { 6754 mode = "none"; 6755 } 6756 return mode; 6757 }, 6758 // Translates a [top,left] array into a baseline value 6759 getBaseline: function(origin, original) { 6760 var y, x; 6761 switch (origin[0]) { 6762 case "top": 6763 y = 0; 6764 break; 6765 case "middle": 6766 y = 0.5; 6767 break; 6768 case "bottom": 6769 y = 1; 6770 break; 6771 default: 6772 y = origin[0] / original.height; 6773 } 6774 switch (origin[1]) { 6775 case "left": 6776 x = 0; 6777 break; 6778 case "center": 6779 x = 0.5; 6780 break; 6781 case "right": 6782 x = 1; 6783 break; 6784 default: 6785 x = origin[1] / original.width; 6786 } 6787 return { 6788 x, 6789 y 6790 }; 6791 }, 6792 // Creates a placeholder element so that the original element can be made absolute 6793 createPlaceholder: function(element) { 6794 var placeholder, cssPosition = element.css("position"), position = element.position(); 6795 element.css({ 6796 marginTop: element.css("marginTop"), 6797 marginBottom: element.css("marginBottom"), 6798 marginLeft: element.css("marginLeft"), 6799 marginRight: element.css("marginRight") 6800 }).outerWidth(element.outerWidth()).outerHeight(element.outerHeight()); 6801 if (/^(static|relative)/.test(cssPosition)) { 6802 cssPosition = "absolute"; 6803 placeholder = $("<" + element[0].nodeName + ">").insertAfter(element).css({ 6804 // Convert inline to inline block to account for inline elements 6805 // that turn to inline block based on content (like img) 6806 display: /^(inline|ruby)/.test(element.css("display")) ? "inline-block" : "block", 6807 visibility: "hidden", 6808 // Margins need to be set to account for margin collapse 6809 marginTop: element.css("marginTop"), 6810 marginBottom: element.css("marginBottom"), 6811 marginLeft: element.css("marginLeft"), 6812 marginRight: element.css("marginRight"), 6813 "float": element.css("float") 6814 }).outerWidth(element.outerWidth()).outerHeight(element.outerHeight()).addClass("ui-effects-placeholder"); 6815 element.data(dataSpace + "placeholder", placeholder); 6816 } 6817 element.css({ 6818 position: cssPosition, 6819 left: position.left, 6820 top: position.top 6821 }); 6822 return placeholder; 6823 }, 6824 removePlaceholder: function(element) { 6825 var dataKey = dataSpace + "placeholder", placeholder = element.data(dataKey); 6826 if (placeholder) { 6827 placeholder.remove(); 6828 element.removeData(dataKey); 6829 } 6830 }, 6831 // Removes a placeholder if it exists and restores 6832 // properties that were modified during placeholder creation 6833 cleanUp: function(element) { 6834 $.effects.restoreStyle(element); 6835 $.effects.removePlaceholder(element); 6836 }, 6837 setTransition: function(element, list, factor, value) { 6838 value = value || {}; 6839 $.each(list, function(i, x) { 6840 var unit = element.cssUnit(x); 6841 if (unit[0] > 0) { 6842 value[x] = unit[0] * factor + unit[1]; 6843 } 6844 }); 6845 return value; 6846 } 6847 }); 6848 function _normalizeArguments(effect, options, speed, callback) { 6849 if ($.isPlainObject(effect)) { 6850 options = effect; 6851 effect = effect.effect; 6852 } 6853 effect = { effect }; 6854 if (options == null) { 6855 options = {}; 6856 } 6857 if (typeof options === "function") { 6858 callback = options; 6859 speed = null; 6860 options = {}; 6861 } 6862 if (typeof options === "number" || $.fx.speeds[options]) { 6863 callback = speed; 6864 speed = options; 6865 options = {}; 6866 } 6867 if (typeof speed === "function") { 6868 callback = speed; 6869 speed = null; 6870 } 6871 if (options) { 6872 $.extend(effect, options); 6873 } 6874 speed = speed || options.duration; 6875 effect.duration = $.fx.off ? 0 : typeof speed === "number" ? speed : speed in $.fx.speeds ? $.fx.speeds[speed] : $.fx.speeds._default; 6876 effect.complete = callback || options.complete; 6877 return effect; 6878 } 6879 function standardAnimationOption(option) { 6880 if (!option || typeof option === "number" || $.fx.speeds[option]) { 6881 return true; 6882 } 6883 if (typeof option === "string" && !$.effects.effect[option]) { 6884 return true; 6885 } 6886 if (typeof option === "function") { 6887 return true; 6888 } 6889 if (typeof option === "object" && !option.effect) { 6890 return true; 6891 } 6892 return false; 6893 } 6894 $.fn.extend({ 6895 effect: function() { 6896 var args = _normalizeArguments.apply(this, arguments), effectMethod = $.effects.effect[args.effect], defaultMode = effectMethod.mode, queue = args.queue, queueName = queue || "fx", complete = args.complete, mode = args.mode, modes = [], prefilter = function(next) { 6897 var el = $(this), normalizedMode = $.effects.mode(el, mode) || defaultMode; 6898 el.data(dataSpaceAnimated, true); 6899 modes.push(normalizedMode); 6900 if (defaultMode && (normalizedMode === "show" || normalizedMode === defaultMode && normalizedMode === "hide")) { 6901 el.show(); 6902 } 6903 if (!defaultMode || normalizedMode !== "none") { 6904 $.effects.saveStyle(el); 6905 } 6906 if (typeof next === "function") { 6907 next(); 6908 } 6909 }; 6910 if ($.fx.off || !effectMethod) { 6911 if (mode) { 6912 return this[mode](args.duration, complete); 6913 } else { 6914 return this.each(function() { 6915 if (complete) { 6916 complete.call(this); 6917 } 6918 }); 6919 } 6920 } 6921 function run(next) { 6922 var elem = $(this); 6923 function cleanup() { 6924 elem.removeData(dataSpaceAnimated); 6925 $.effects.cleanUp(elem); 6926 if (args.mode === "hide") { 6927 elem.hide(); 6928 } 6929 done(); 6930 } 6931 function done() { 6932 if (typeof complete === "function") { 6933 complete.call(elem[0]); 6934 } 6935 if (typeof next === "function") { 6936 next(); 6937 } 6938 } 6939 args.mode = modes.shift(); 6940 if ($.uiBackCompat === true && !defaultMode) { 6941 if (elem.is(":hidden") ? mode === "hide" : mode === "show") { 6942 elem[mode](); 6943 done(); 6944 } else { 6945 effectMethod.call(elem[0], args, done); 6946 } 6947 } else { 6948 if (args.mode === "none") { 6949 elem[mode](); 6950 done(); 6951 } else { 6952 effectMethod.call(elem[0], args, cleanup); 6953 } 6954 } 6955 } 6956 return queue === false ? this.each(prefilter).each(run) : this.queue(queueName, prefilter).queue(queueName, run); 6957 }, 6958 show: /* @__PURE__ */ (function(orig) { 6959 return function(option) { 6960 if (standardAnimationOption(option)) { 6961 return orig.apply(this, arguments); 6962 } else { 6963 var args = _normalizeArguments.apply(this, arguments); 6964 args.mode = "show"; 6965 return this.effect.call(this, args); 6966 } 6967 }; 6968 })($.fn.show), 6969 hide: /* @__PURE__ */ (function(orig) { 6970 return function(option) { 6971 if (standardAnimationOption(option)) { 6972 return orig.apply(this, arguments); 6973 } else { 6974 var args = _normalizeArguments.apply(this, arguments); 6975 args.mode = "hide"; 6976 return this.effect.call(this, args); 6977 } 6978 }; 6979 })($.fn.hide), 6980 toggle: /* @__PURE__ */ (function(orig) { 6981 return function(option) { 6982 if (standardAnimationOption(option) || typeof option === "boolean") { 6983 return orig.apply(this, arguments); 6984 } else { 6985 var args = _normalizeArguments.apply(this, arguments); 6986 args.mode = "toggle"; 6987 return this.effect.call(this, args); 6988 } 6989 }; 6990 })($.fn.toggle), 6991 cssUnit: function(key) { 6992 var style = this.css(key), val = []; 6993 $.each(["em", "px", "%", "pt"], function(i, unit) { 6994 if (style.indexOf(unit) > 0) { 6995 val = [parseFloat(style), unit]; 6996 } 6997 }); 6998 return val; 6999 }, 7000 cssClip: function(clipObj) { 7001 if (clipObj) { 7002 return this.css("clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + clipObj.bottom + "px " + clipObj.left + "px)"); 7003 } 7004 return parseClip(this.css("clip"), this); 7005 }, 7006 transfer: function(options, done) { 7007 var element = $(this), target = $(options.to), targetFixed = target.css("position") === "fixed", body = $("body"), fixTop = targetFixed ? body.scrollTop() : 0, fixLeft = targetFixed ? body.scrollLeft() : 0, endPosition = target.offset(), animation = { 7008 top: endPosition.top - fixTop, 7009 left: endPosition.left - fixLeft, 7010 height: target.innerHeight(), 7011 width: target.innerWidth() 7012 }, startPosition = element.offset(), transfer = $("<div class='ui-effects-transfer'></div>"); 7013 transfer.appendTo("body").addClass(options.className).css({ 7014 top: startPosition.top - fixTop, 7015 left: startPosition.left - fixLeft, 7016 height: element.innerHeight(), 7017 width: element.innerWidth(), 7018 position: targetFixed ? "fixed" : "absolute" 7019 }).animate(animation, options.duration, options.easing, function() { 7020 transfer.remove(); 7021 if (typeof done === "function") { 7022 done(); 7023 } 7024 }); 7025 } 7026 }); 7027 function parseClip(str, element) { 7028 var outerWidth = element.outerWidth(), outerHeight = element.outerHeight(), clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, values = clipRegex.exec(str) || ["", 0, outerWidth, outerHeight, 0]; 7029 return { 7030 top: parseFloat(values[1]) || 0, 7031 right: values[2] === "auto" ? outerWidth : parseFloat(values[2]), 7032 bottom: values[3] === "auto" ? outerHeight : parseFloat(values[3]), 7033 left: parseFloat(values[4]) || 0 7034 }; 7035 } 7036 $.fx.step.clip = function(fx) { 7037 if (!fx.clipInit) { 7038 fx.start = $(fx.elem).cssClip(); 7039 if (typeof fx.end === "string") { 7040 fx.end = parseClip(fx.end, fx.elem); 7041 } 7042 fx.clipInit = true; 7043 } 7044 $(fx.elem).cssClip({ 7045 top: fx.pos * (fx.end.top - fx.start.top) + fx.start.top, 7046 right: fx.pos * (fx.end.right - fx.start.right) + fx.start.right, 7047 bottom: fx.pos * (fx.end.bottom - fx.start.bottom) + fx.start.bottom, 7048 left: fx.pos * (fx.end.left - fx.start.left) + fx.start.left 7049 }); 7050 }; 7051 })(); 7052 (function() { 7053 var baseEasings = {}; 7054 $.each(["Quad", "Cubic", "Quart", "Quint", "Expo"], function(i, name) { 7055 baseEasings[name] = function(p) { 7056 return Math.pow(p, i + 2); 7057 }; 7058 }); 7059 $.extend(baseEasings, { 7060 Sine: function(p) { 7061 return 1 - Math.cos(p * Math.PI / 2); 7062 }, 7063 Circ: function(p) { 7064 return 1 - Math.sqrt(1 - p * p); 7065 }, 7066 Elastic: function(p) { 7067 return p === 0 || p === 1 ? p : -Math.pow(2, 8 * (p - 1)) * Math.sin(((p - 1) * 80 - 7.5) * Math.PI / 15); 7068 }, 7069 Back: function(p) { 7070 return p * p * (3 * p - 2); 7071 }, 7072 Bounce: function(p) { 7073 var pow2, bounce = 4; 7074 while (p < ((pow2 = Math.pow(2, --bounce)) - 1) / 11) { 7075 } 7076 return 1 / Math.pow(4, 3 - bounce) - 7.5625 * Math.pow((pow2 * 3 - 2) / 22 - p, 2); 7077 } 7078 }); 7079 $.each(baseEasings, function(name, easeIn) { 7080 $.easing["easeIn" + name] = easeIn; 7081 $.easing["easeOut" + name] = function(p) { 7082 return 1 - easeIn(1 - p); 7083 }; 7084 $.easing["easeInOut" + name] = function(p) { 7085 return p < 0.5 ? easeIn(p * 2) / 2 : 1 - easeIn(p * -2 + 2) / 2; 7086 }; 7087 }); 7088 })(); 7089 return $.effects; 7090}); 7091
vendor: 829 bytes, lines 7092-7125
7092// node_modules/jquery-ui/ui/effects/effect-highlight.js 7093(function(factory) { 7094 "use strict"; 7095 if (typeof define === "function" && define.amd) { 7096 define([ 7097 "jquery", 7098 "../version", 7099 "../effect" 7100 ], factory); 7101 } else { 7102 factory(jQuery); 7103 } 7104})(function($) { 7105 "use strict"; 7106 return $.effects.define("highlight", "show", function(options, done) { 7107 var element = $(this), animation = { 7108 backgroundColor: element.css("backgroundColor") 7109 }; 7110 if (options.mode === "hide") { 7111 animation.opacity = 0; 7112 } 7113 $.effects.saveStyle(element); 7114 element.css({ 7115 backgroundImage: "none", 7116 backgroundColor: options.color || "#ffff99" 7117 }).animate(animation, { 7118 queue: false, 7119 duration: options.duration, 7120 easing: options.easing, 7121 complete: done 7122 }); 7123 }); 7124}); 7125
vendor: 18,533 bytes, lines 7126-7668
7126// node_modules/jquery-ui/ui/widget.js 7127(function(factory) { 7128 "use strict"; 7129 if (typeof define === "function" && define.amd) { 7130 define(["jquery", "./version"], factory); 7131 } else { 7132 factory(jQuery); 7133 } 7134})(function($) { 7135 "use strict"; 7136 var widgetUuid = 0; 7137 var widgetHasOwnProperty = Array.prototype.hasOwnProperty; 7138 var widgetSlice = Array.prototype.slice; 7139 $.cleanData = /* @__PURE__ */ (function(orig) { 7140 return function(elems) { 7141 var events, elem, i; 7142 for (i = 0; (elem = elems[i]) != null; i++) { 7143 events = $._data(elem, "events"); 7144 if (events && events.remove) { 7145 $(elem).triggerHandler("remove"); 7146 } 7147 } 7148 orig(elems); 7149 }; 7150 })($.cleanData); 7151 $.widget = function(name, base, prototype) { 7152 var existingConstructor, constructor, basePrototype; 7153 var proxiedPrototype = {}; 7154 var namespace = name.split(".")[0]; 7155 name = name.split(".")[1]; 7156 if (name === "__proto__" || name === "constructor") { 7157 return $.error("Invalid widget name: " + name); 7158 } 7159 var fullName = namespace + "-" + name; 7160 if (!prototype) { 7161 prototype = base; 7162 base = $.Widget; 7163 } 7164 if (Array.isArray(prototype)) { 7165 prototype = $.extend.apply(null, [{}].concat(prototype)); 7166 } 7167 $.expr.pseudos[fullName.toLowerCase()] = function(elem) { 7168 return !!$.data(elem, fullName); 7169 }; 7170 $[namespace] = $[namespace] || {}; 7171 existingConstructor = $[namespace][name]; 7172 constructor = $[namespace][name] = function(options, element) { 7173 if (!this || !this._createWidget) { 7174 return new constructor(options, element); 7175 } 7176 if (arguments.length) { 7177 this._createWidget(options, element); 7178 } 7179 }; 7180 $.extend(constructor, existingConstructor, { 7181 version: prototype.version, 7182 // Copy the object used to create the prototype in case we need to 7183 // redefine the widget later 7184 _proto: $.extend({}, prototype), 7185 // Track widgets that inherit from this widget in case this widget is 7186 // redefined after a widget inherits from it 7187 _childConstructors: [] 7188 }); 7189 basePrototype = new base(); 7190 basePrototype.options = $.widget.extend({}, basePrototype.options); 7191 $.each(prototype, function(prop, value) { 7192 if (typeof value !== "function") { 7193 proxiedPrototype[prop] = value; 7194 return; 7195 } 7196 proxiedPrototype[prop] = /* @__PURE__ */ (function() { 7197 function _super() { 7198 return base.prototype[prop].apply(this, arguments); 7199 } 7200 function _superApply(args) { 7201 return base.prototype[prop].apply(this, args); 7202 } 7203 return function() { 7204 var __super = this._super; 7205 var __superApply = this._superApply; 7206 var returnValue; 7207 this._super = _super; 7208 this._superApply = _superApply; 7209 returnValue = value.apply(this, arguments); 7210 this._super = __super; 7211 this._superApply = __superApply; 7212 return returnValue; 7213 }; 7214 })(); 7215 }); 7216 constructor.prototype = $.widget.extend(basePrototype, { 7217 // TODO: remove support for widgetEventPrefix 7218 // always use the name + a colon as the prefix, e.g., draggable:start 7219 // don't prefix for widgets that aren't DOM-based 7220 widgetEventPrefix: existingConstructor ? basePrototype.widgetEventPrefix || name : name 7221 }, proxiedPrototype, { 7222 constructor, 7223 namespace, 7224 widgetName: name, 7225 widgetFullName: fullName 7226 }); 7227 if (existingConstructor) { 7228 $.each(existingConstructor._childConstructors, function(i, child) { 7229 var childPrototype = child.prototype; 7230 $.widget( 7231 childPrototype.namespace + "." + childPrototype.widgetName, 7232 constructor, 7233 child._proto 7234 ); 7235 }); 7236 delete existingConstructor._childConstructors; 7237 } else { 7238 base._childConstructors.push(constructor); 7239 } 7240 $.widget.bridge(name, constructor); 7241 return constructor; 7242 }; 7243 $.widget.extend = function(target) { 7244 var input = widgetSlice.call(arguments, 1); 7245 var inputIndex = 0; 7246 var inputLength = input.length; 7247 var key; 7248 var value; 7249 for (; inputIndex < inputLength; inputIndex++) { 7250 for (key in input[inputIndex]) { 7251 value = input[inputIndex][key]; 7252 if (widgetHasOwnProperty.call(input[inputIndex], key) && value !== void 0) { 7253 if ($.isPlainObject(value)) { 7254 target[key] = $.isPlainObject(target[key]) ? $.widget.extend({}, target[key], value) : ( 7255 // Don't extend strings, arrays, etc. with objects 7256 $.widget.extend({}, value) 7257 ); 7258 } else { 7259 target[key] = value; 7260 } 7261 } 7262 } 7263 } 7264 return target; 7265 }; 7266 $.widget.bridge = function(name, object) { 7267 var fullName = object.prototype.widgetFullName || name; 7268 $.fn[name] = function(options) { 7269 var isMethodCall = typeof options === "string"; 7270 var args = widgetSlice.call(arguments, 1); 7271 var returnValue = this; 7272 if (isMethodCall) { 7273 if (!this.length && options === "instance") { 7274 returnValue = void 0; 7275 } else { 7276 this.each(function() { 7277 var methodValue; 7278 var instance = $.data(this, fullName); 7279 if (options === "instance") { 7280 returnValue = instance; 7281 return false; 7282 } 7283 if (!instance) { 7284 return $.error("cannot call methods on " + name + " prior to initialization; attempted to call method '" + options + "'"); 7285 } 7286 if (typeof instance[options] !== "function" || options.charAt(0) === "_") { 7287 return $.error("no such method '" + options + "' for " + name + " widget instance"); 7288 } 7289 methodValue = instance[options].apply(instance, args); 7290 if (methodValue !== instance && methodValue !== void 0) { 7291 returnValue = methodValue && methodValue.jquery ? returnValue.pushStack(methodValue.get()) : methodValue; 7292 return false; 7293 } 7294 }); 7295 } 7296 } else { 7297 if (args.length) { 7298 options = $.widget.extend.apply(null, [options].concat(args)); 7299 } 7300 this.each(function() { 7301 var instance = $.data(this, fullName); 7302 if (instance) { 7303 instance.option(options || {}); 7304 if (instance._init) { 7305 instance._init(); 7306 } 7307 } else { 7308 $.data(this, fullName, new object(options, this)); 7309 } 7310 }); 7311 } 7312 return returnValue; 7313 }; 7314 }; 7315 $.Widget = function() { 7316 }; 7317 $.Widget._childConstructors = []; 7318 $.Widget.prototype = { 7319 widgetName: "widget", 7320 widgetEventPrefix: "", 7321 defaultElement: "<div>", 7322 options: { 7323 classes: {}, 7324 disabled: false, 7325 // Callbacks 7326 create: null 7327 }, 7328 _createWidget: function(options, element) { 7329 element = $(element || this.defaultElement || this)[0]; 7330 this.element = $(element); 7331 this.uuid = widgetUuid++; 7332 this.eventNamespace = "." + this.widgetName + this.uuid; 7333 this.bindings = $(); 7334 this.hoverable = $(); 7335 this.focusable = $(); 7336 this.classesElementLookup = {}; 7337 if (element !== this) { 7338 $.data(element, this.widgetFullName, this); 7339 this._on(true, this.element, { 7340 remove: function(event) { 7341 if (event.target === element) { 7342 this.destroy(); 7343 } 7344 } 7345 }); 7346 this.document = $(element.style ? ( 7347 // Element within the document 7348 element.ownerDocument 7349 ) : ( 7350 // Element is window or document 7351 element.document || element 7352 )); 7353 this.window = $(this.document[0].defaultView || this.document[0].parentWindow); 7354 } 7355 this.options = $.widget.extend( 7356 {}, 7357 this.options, 7358 this._getCreateOptions(), 7359 options 7360 ); 7361 this._create(); 7362 if (this.options.disabled) { 7363 this._setOptionDisabled(this.options.disabled); 7364 } 7365 this._trigger("create", null, this._getCreateEventData()); 7366 this._init(); 7367 }, 7368 _getCreateOptions: function() { 7369 return {}; 7370 }, 7371 _getCreateEventData: $.noop, 7372 _create: $.noop, 7373 _init: $.noop, 7374 destroy: function() { 7375 var that = this; 7376 this._destroy(); 7377 $.each(this.classesElementLookup, function(key, value) { 7378 that._removeClass(value, key); 7379 }); 7380 this.element.off(this.eventNamespace).removeData(this.widgetFullName); 7381 this.widget().off(this.eventNamespace).removeAttr("aria-disabled"); 7382 this.bindings.off(this.eventNamespace); 7383 }, 7384 _destroy: $.noop, 7385 widget: function() { 7386 return this.element; 7387 }, 7388 option: function(key, value) { 7389 var options = key; 7390 var parts; 7391 var curOption; 7392 var i; 7393 if (arguments.length === 0) { 7394 return $.widget.extend({}, this.options); 7395 } 7396 if (typeof key === "string") { 7397 options = {}; 7398 parts = key.split("."); 7399 key = parts.shift(); 7400 if (parts.length) { 7401 curOption = options[key] = $.widget.extend({}, this.options[key]); 7402 for (i = 0; i < parts.length - 1; i++) { 7403 curOption[parts[i]] = curOption[parts[i]] || {}; 7404 curOption = curOption[parts[i]]; 7405 } 7406 key = parts.pop(); 7407 if (arguments.length === 1) { 7408 return curOption[key] === void 0 ? null : curOption[key]; 7409 } 7410 curOption[key] = value; 7411 } else { 7412 if (arguments.length === 1) { 7413 return this.options[key] === void 0 ? null : this.options[key]; 7414 } 7415 options[key] = value; 7416 } 7417 } 7418 this._setOptions(options); 7419 return this; 7420 }, 7421 _setOptions: function(options) { 7422 var key; 7423 for (key in options) { 7424 this._setOption(key, options[key]); 7425 } 7426 return this; 7427 }, 7428 _setOption: function(key, value) { 7429 if (key === "classes") { 7430 this._setOptionClasses(value); 7431 } 7432 this.options[key] = value; 7433 if (key === "disabled") { 7434 this._setOptionDisabled(value); 7435 } 7436 return this; 7437 }, 7438 _setOptionClasses: function(value) { 7439 var classKey, elements, currentElements; 7440 for (classKey in value) { 7441 currentElements = this.classesElementLookup[classKey]; 7442 if (value[classKey] === this.options.classes[classKey] || !currentElements || !currentElements.length) { 7443 continue; 7444 } 7445 elements = $(currentElements.get()); 7446 this._removeClass(currentElements, classKey); 7447 elements.addClass(this._classes({ 7448 element: elements, 7449 keys: classKey, 7450 classes: value, 7451 add: true 7452 })); 7453 } 7454 }, 7455 _setOptionDisabled: function(value) { 7456 this._toggleClass(this.widget(), this.widgetFullName + "-disabled", null, !!value); 7457 if (value) { 7458 this._removeClass(this.hoverable, null, "ui-state-hover"); 7459 this._removeClass(this.focusable, null, "ui-state-focus"); 7460 } 7461 }, 7462 enable: function() { 7463 return this._setOptions({ disabled: false }); 7464 }, 7465 disable: function() { 7466 return this._setOptions({ disabled: true }); 7467 }, 7468 _classes: function(options) { 7469 var full = []; 7470 var that = this; 7471 options = $.extend({ 7472 element: this.element, 7473 classes: this.options.classes || {} 7474 }, options); 7475 function bindRemoveEvent() { 7476 var nodesToBind = []; 7477 options.element.each(function(_, element) { 7478 var isTracked = $.map(that.classesElementLookup, function(elements) { 7479 return elements; 7480 }).some(function(elements) { 7481 return elements.is(element); 7482 }); 7483 if (!isTracked) { 7484 nodesToBind.push(element); 7485 } 7486 }); 7487 that._on($(nodesToBind), { 7488 remove: "_untrackClassesElement" 7489 }); 7490 } 7491 function processClassString(classes, checkOption) { 7492 var current, i; 7493 for (i = 0; i < classes.length; i++) { 7494 current = that.classesElementLookup[classes[i]] || $(); 7495 if (options.add) { 7496 bindRemoveEvent(); 7497 current = $($.uniqueSort(current.get().concat(options.element.get()))); 7498 } else { 7499 current = $(current.not(options.element).get()); 7500 } 7501 that.classesElementLookup[classes[i]] = current; 7502 full.push(classes[i]); 7503 if (checkOption && options.classes[classes[i]]) { 7504 full.push(options.classes[classes[i]]); 7505 } 7506 } 7507 } 7508 if (options.keys) { 7509 processClassString(options.keys.match(/\S+/g) || [], true); 7510 } 7511 if (options.extra) { 7512 processClassString(options.extra.match(/\S+/g) || []); 7513 } 7514 return full.join(" "); 7515 }, 7516 _untrackClassesElement: function(event) { 7517 var that = this; 7518 $.each(that.classesElementLookup, function(key, value) { 7519 if ($.inArray(event.target, value) !== -1) { 7520 that.classesElementLookup[key] = $(value.not(event.target).get()); 7521 } 7522 }); 7523 this._off($(event.target)); 7524 }, 7525 _removeClass: function(element, keys, extra) { 7526 return this._toggleClass(element, keys, extra, false); 7527 }, 7528 _addClass: function(element, keys, extra) { 7529 return this._toggleClass(element, keys, extra, true); 7530 }, 7531 _toggleClass: function(element, keys, extra, add) { 7532 add = typeof add === "boolean" ? add : extra; 7533 var shift = typeof element === "string" || element === null, options = { 7534 extra: shift ? keys : extra, 7535 keys: shift ? element : keys, 7536 element: shift ? this.element : element, 7537 add 7538 }; 7539 options.element.toggleClass(this._classes(options), add); 7540 return this; 7541 }, 7542 _on: function(suppressDisabledCheck, element, handlers) { 7543 var delegateElement; 7544 var instance = this; 7545 if (typeof suppressDisabledCheck !== "boolean") { 7546 handlers = element; 7547 element = suppressDisabledCheck; 7548 suppressDisabledCheck = false; 7549 } 7550 if (!handlers) { 7551 handlers = element; 7552 element = this.element; 7553 delegateElement = this.widget(); 7554 } else { 7555 element = delegateElement = $(element); 7556 this.bindings = this.bindings.add(element); 7557 } 7558 $.each(handlers, function(event, handler) { 7559 function handlerProxy() { 7560 if (!suppressDisabledCheck && (instance.options.disabled === true || $(this).hasClass("ui-state-disabled"))) { 7561 return; 7562 } 7563 return (typeof handler === "string" ? instance[handler] : handler).apply(instance, arguments); 7564 } 7565 if (typeof handler !== "string") { 7566 handlerProxy.guid = handler.guid = handler.guid || handlerProxy.guid || $.guid++; 7567 } 7568 var match = event.match(/^([\w:-]*)\s*(.*)$/); 7569 var eventName = match[1] + instance.eventNamespace; 7570 var selector = match[2]; 7571 if (selector) { 7572 delegateElement.on(eventName, selector, handlerProxy); 7573 } else { 7574 element.on(eventName, handlerProxy); 7575 } 7576 }); 7577 }, 7578 _off: function(element, eventName) { 7579 eventName = (eventName || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace; 7580 element.off(eventName); 7581 this.bindings = $(this.bindings.not(element).get()); 7582 this.focusable = $(this.focusable.not(element).get()); 7583 this.hoverable = $(this.hoverable.not(element).get()); 7584 }, 7585 _delay: function(handler, delay) { 7586 function handlerProxy() { 7587 return (typeof handler === "string" ? instance[handler] : handler).apply(instance, arguments); 7588 } 7589 var instance = this; 7590 return setTimeout(handlerProxy, delay || 0); 7591 }, 7592 _hoverable: function(element) { 7593 this.hoverable = this.hoverable.add(element); 7594 this._on(element, { 7595 mouseenter: function(event) { 7596 this._addClass($(event.currentTarget), null, "ui-state-hover"); 7597 }, 7598 mouseleave: function(event) { 7599 this._removeClass($(event.currentTarget), null, "ui-state-hover"); 7600 } 7601 }); 7602 }, 7603 _focusable: function(element) { 7604 this.focusable = this.focusable.add(element); 7605 this._on(element, { 7606 focusin: function(event) { 7607 this._addClass($(event.currentTarget), null, "ui-state-focus"); 7608 }, 7609 focusout: function(event) { 7610 this._removeClass($(event.currentTarget), null, "ui-state-focus"); 7611 } 7612 }); 7613 }, 7614 _trigger: function(type, event, data) { 7615 var prop, orig; 7616 var callback = this.options[type]; 7617 data = data || {}; 7618 event = $.Event(event); 7619 event.type = (type === this.widgetEventPrefix ? type : this.widgetEventPrefix + type).toLowerCase(); 7620 event.target = this.element[0]; 7621 orig = event.originalEvent; 7622 if (orig) { 7623 for (prop in orig) { 7624 if (!(prop in event)) { 7625 event[prop] = orig[prop]; 7626 } 7627 } 7628 } 7629 this.element.trigger(event, data); 7630 return !(typeof callback === "function" && callback.apply(this.element[0], [event].concat(data)) === false || event.isDefaultPrevented()); 7631 } 7632 }; 7633 $.each({ show: "fadeIn", hide: "fadeOut" }, function(method, defaultEffect) { 7634 $.Widget.prototype["_" + method] = function(element, options, callback) { 7635 if (typeof options === "string") { 7636 options = { effect: options }; 7637 } 7638 var hasOptions; 7639 var effectName = !options ? method : options === true || typeof options === "number" ? defaultEffect : options.effect || defaultEffect; 7640 options = options || {}; 7641 if (typeof options === "number") { 7642 options = { duration: options }; 7643 } else if (options === true) { 7644 options = {}; 7645 } 7646 hasOptions = !$.isEmptyObject(options); 7647 options.complete = callback; 7648 if (options.delay) { 7649 element.delay(options.delay); 7650 } 7651 if (hasOptions && $.effects && $.effects.effect[effectName]) { 7652 element[method](options); 7653 } else if (effectName !== method && element[effectName]) { 7654 element[effectName](options.duration, options.easing, callback); 7655 } else { 7656 element.queue(function(next) { 7657 $(this)[method](); 7658 if (callback) { 7659 callback.call(element[0]); 7660 } 7661 next(); 7662 }); 7663 } 7664 }; 7665 }); 7666 return $.widget; 7667}); 7668
vendor: 951 bytes, lines 7669-7703
7669// node_modules/jquery-ui/ui/plugin.js 7670(function(factory) { 7671 "use strict"; 7672 if (typeof define === "function" && define.amd) { 7673 define(["jquery", "./version"], factory); 7674 } else { 7675 factory(jQuery); 7676 } 7677})(function($) { 7678 "use strict"; 7679 return $.ui.plugin = { 7680 add: function(module, option, set) { 7681 var i, proto = $.ui[module].prototype; 7682 for (i in set) { 7683 proto.plugins[i] = proto.plugins[i] || []; 7684 proto.plugins[i].push([option, set[i]]); 7685 } 7686 }, 7687 call: function(instance, name, args, allowDisconnected) { 7688 var i, set = instance.plugins[name]; 7689 if (!set) { 7690 return; 7691 } 7692 if (!allowDisconnected && (!instance.element[0].parentNode || instance.element[0].parentNode.nodeType === 11)) { 7693 return; 7694 } 7695 for (i = 0; i < set.length; i++) { 7696 if (instance.options[set[i][0]]) { 7697 set[i][1].apply(instance.element, args); 7698 } 7699 } 7700 } 7701 }; 7702}); 7703
7704// app/assets/javascripts/jquery/plugins/jquery.treeview.min.js 7705(function($) { 7706 $.extend($.fn, { swapClass: function(c1, c2) { 7707 var c1Elements = this.filter("." + c1); 7708 this.filter("." + c2).removeClass(c2).addClass(c1); 7709 c1Elements.removeClass(c1).addClass(c2); 7710 return this; 7711 }, replaceClass: function(c1, c2) { 7712 return this.filter("." + c1).removeClass(c1).addClass(c2).end(); 7713 }, hoverClass: function(className) { 7714 className = className || "hover"; 7715 return this.hover(function() { 7716 $(this).addClass(className); 7717 }, function() { 7718 $(this).removeClass(className); 7719 }); 7720 }, heightToggle: function(animated, callback) { 7721 animated ? this.animate({ height: "toggle" }, animated, callback) : this.each(function() { 7722 jQuery(this)[jQuery(this).is(":hidden") ? "show" : "hide"](); 7723 if (callback) callback.apply(this, arguments); 7724 }); 7725 }, heightHide: function(animated, callback) { 7726 if (animated) { 7727 this.animate({ height: "hide" }, animated, callback); 7728 } else { 7729 this.hide(); 7730 if (callback) this.each(callback); 7731 } 7732 }, prepareBranches: function(settings) { 7733 if (!settings.prerendered) { 7734 this.filter(":last-child:not(ul)").addClass(CLASSES.last); 7735 this.filter((settings.collapsed ? "" : "." + CLASSES.closed) + ":not(." + CLASSES.open + ")").find(">ul").hide(); 7736 } 7737 return this.filter(":has(>ul)"); 7738 }, applyClasses: function(settings, toggler) { 7739 this.filter(":has(>ul):not(:has(>a))").find(">span").click(function(event) { 7740 toggler.apply($(this).next()); 7741 }).add($("a", this)).hoverClass(); 7742 if (!settings.prerendered) { 7743 this.filter(":has(>ul:hidden)").addClass(CLASSES.expandable).replaceClass(CLASSES.last, CLASSES.lastExpandable); 7744 this.not(":has(>ul:hidden)").addClass(CLASSES.collapsable).replaceClass(CLASSES.last, CLASSES.lastCollapsable); 7745 this.prepend('<div class="' + CLASSES.hitarea + '"/>').find("div." + CLASSES.hitarea).each(function() { 7746 var classes = ""; 7747 $.each($(this).parent().attr("class").split(" "), function() { 7748 classes += this + "-hitarea "; 7749 });
7750 $(this).addClass(classes); 7751 }); 7752 } 7753 this.find("div." + CLASSES.hitarea).click(toggler); 7754 }, treeview: function(settings) { 7755 settings = $.extend({ cookieId: "treeview" }, settings); 7756 if (settings.add) { 7757 return this.trigger("add", [settings.add]); 7758 } 7759 if (settings.toggle) { 7760 var callback = settings.toggle; 7761 settings.toggle = function() { 7762 return callback.apply($(this).parent()[0], arguments); 7763 }; 7764 } 7765 function treeController(tree, control) { 7766 function handler(filter) { 7767 return function() { 7768 toggler.apply($("div." + CLASSES.hitarea, tree).filter(function() { 7769 return filter ? $(this).parent("." + filter).length : true; 7770 })); 7771 return false; 7772 }; 7773 } 7774 $("a:eq(0)", control).click(handler(CLASSES.collapsable)); 7775 $("a:eq(1)", control).click(handler(CLASSES.expandable)); 7776 $("a:eq(2)", control).click(handler()); 7777 } 7778 function toggler() { 7779 $(this).parent().find(">.hitarea").swapClass(CLASSES.collapsableHitarea, CLASSES.expandableHitarea).swapClass(CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea).end().swapClass(CLASSES.collapsable, CLASSES.expandable).swapClass(CLASSES.lastCollapsable, CLASSES.lastExpandable).find(">ul").heightToggle(settings.animated, settings.toggle); 7780 if (settings.unique) { 7781 $(this).parent().siblings().find(">.hitarea").replaceClass(CLASSES.collapsableHitarea, CLASSES.expandableHitarea).replaceClass(CLASSES.lastCollapsableHitarea, CLASSES.lastExpandableHitarea).end().replaceClass(CLASSES.collapsable, CLASSES.expandable).replaceClass(CLASSES.lastCollapsable, CLASSES.lastExpandable).find(">ul").heightHide(settings.animated, settings.toggle); 7782 } 7783 } 7784 function serialize() { 7785 function binary(arg) { 7786 return arg ? 1 : 0; 7787 } 7788 var data = []; 7789 branches.each(function(i, e) { 7790 data[i] = $(e).is(":has(>ul:visible)") ? 1 : 0; 7791 }); 7792 $.cookie(settings.cookieId, data.join("")); 7793 } 7794 function deserialize() { 7795 var stored = $.cookie(settings.cookieId); 7796 if (stored) { 7797 var data = stored.split(""); 7798 branches.each(function(i, e) { 7799 $(e).find(">ul")[parseInt(data[i]) ? "show" : "hide"](); 7800 }); 7801 } 7802 } 7803 this.addClass("treeview"); 7804 var branches = this.find("li").prepareBranches(settings); 7805 switch (settings.persist) { 7806 case "cookie": 7807 var toggleCallback = settings.toggle; 7808 settings.toggle = function() { 7809 serialize(); 7810 if (toggleCallback) { 7811 toggleCallback.apply(this, arguments); 7812 } 7813 }; 7814 deserialize(); 7815 break; 7816 case "location": 7817 var current = this.find("a").filter(function() { 7818 return this.href.toLowerCase() == location.href.toLowerCase(); 7819 }); 7820 if (current.length) { 7821 current.addClass("selected").parents("ul, li").add(current.next()).show(); 7822 } 7823 break; 7824 } 7825 branches.applyClasses(settings, toggler); 7826 if (settings.control) { 7827 treeController(this, settings.control); 7828 $(settings.control).show(); 7829 } 7830 return this.bind("add", function(event, branches2) { 7831 $(branches2).prev().removeClass(CLASSES.last).removeClass(CLASSES.lastCollapsable).removeClass(CLASSES.lastExpandable).find(">.hitarea").removeClass(CLASSES.lastCollapsableHitarea).removeClass(CLASSES.lastExpandableHitarea); 7832 $(branches2).find("li").andSelf().prepareBranches(settings).applyClasses(settings, toggler); 7833 }); 7834 } }); 7835 var CLASSES = $.fn.treeview.classes = { open: "open", closed: "closed", expandable: "expandable", expandableHitarea: "expandable-hitarea", lastExpandableHitarea: "lastExpandable-hitarea", collapsable: "collapsable", collapsableHitarea: "collapsable-hitarea", lastCollapsableHitarea: "lastCollapsable-hitarea", lastCollapsable: "lastCollapsable", lastExpandable: "lastExpandable", last: "last", hitarea: "hitarea" }; 7836 $.fn.Treeview = $.fn.treeview; 7837})(jQuery); 7838/*! Bundled license information: 7839 7840jquery/dist/jquery.js: 7841 (*! 7842 * jQuery JavaScript Library v3.7.1 7843 * https://jquery.com/ 7844 * 7845 * Copyright OpenJS Foundation and other contributors 7846 * Released under the MIT license 7847 * https://jquery.org/license 7848 * 7849 * Date: 2023-08-28T13:37Z 7850 *) 7851 7852jquery-ui/ui/data.js: 7853 (*! 7854 * jQuery UI :data 1.14.2 7855 * https://jqueryui.com 7856 * 7857 * Copyright OpenJS Foundation and other contributors 7858 * Released under the MIT license. 7859 * https://jquery.org/license 7860 *) 7861 7862jquery-ui/ui/effect.js: 7863 (*! 7864 * jQuery UI Effects 1.14.2 7865 * https://jqueryui.com 7866 * 7867 * Copyright OpenJS Foundation and other contributors 7868 * Released under the MIT license. 7869 * https://jquery.org/license 7870 *) 7871 7872jquery-ui/ui/effects/effect-highlight.js: 7873 (*! 7874 * jQuery UI Effects Highlight 1.14.2 7875 * https://jqueryui.com 7876 * 7877 * Copyright OpenJS Foundation and other contributors 7878 * Released under the MIT license. 7879 * https://jquery.org/license 7880 *) 7881 7882jquery-ui/ui/widget.js: 7883 (*! 7884 * jQuery UI Widget 1.14.2 7885 * https://jqueryui.com 7886 * 7887 * Copyright OpenJS Foundation and other contributors 7888 * Released under the MIT license. 7889 * https://jquery.org/license 7890 *) 7891*/ 7892//# sourceMappingURL=/assets/jquery_global-c0bd56c5.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.