· 5 years ago · Jan 11, 2021, 07:16 AM
1##view-source:https://logiem.com/aeefb6c.js
2
3'use strict';
4!function(global, factory) {
5 if ("object" == typeof module && "object" == typeof module.exports) {
6 module.exports = global.document ? factory(global, true) : function(global) {
7 if (!global.document) {
8 throw new Error("jQuery requires a window with a document");
9 }
10 return factory(global);
11 };
12 } else {
13 factory(global);
14 }
15}("undefined" != typeof window ? window : this, function(window, start_column) {
16 /**
17 * @param {string} value
18 * @param {!Object} context
19 * @param {!Object} doc
20 * @return {undefined}
21 */
22 function cb(value, context, doc) {
23 var key;
24 var imgSrcset;
25 var element = (doc = doc || document).createElement("script");
26 if (element.text = value, context) {
27 for (key in obj) {
28 if (imgSrcset = context[key] || context.getAttribute && context.getAttribute(key)) {
29 element.setAttribute(key, imgSrcset);
30 }
31 }
32 }
33 doc.head.appendChild(element).parentNode.removeChild(element);
34 }
35 /**
36 * @param {string} value
37 * @return {?}
38 */
39 function type(value) {
40 return null == value ? value + "" : "object" == typeof value || "function" == typeof value ? class2type[toString.call(value)] || "object" : typeof value;
41 }
42 /**
43 * @param {!Object} obj
44 * @return {?}
45 */
46 function isArrayLike(obj) {
47 var length = !!obj && "length" in obj && obj.length;
48 var ltype = type(obj);
49 return !fn(obj) && !isWindow(obj) && ("array" === ltype || 0 === length || "number" == typeof length && 0 < length && length - 1 in obj);
50 }
51 /**
52 * @param {!Object} name
53 * @param {!Object} type
54 * @return {?}
55 */
56 function callback(name, type) {
57 return name.nodeName && name.nodeName.toLowerCase() === type.toLowerCase();
58 }
59 /**
60 * @param {!Array} key
61 * @param {!Object} value
62 * @param {boolean} not
63 * @return {?}
64 */
65 function filter(key, value, not) {
66 return fn(value) ? jQuery.grep(key, function(context, i) {
67 return !!value.call(context, i, context) !== not;
68 }) : value.nodeType ? jQuery.grep(key, function(elem) {
69 return elem === value !== not;
70 }) : "string" != typeof value ? jQuery.grep(key, function(name) {
71 return -1 < indexOf.call(value, name) !== not;
72 }) : jQuery.filter(value, key, not);
73 }
74 /**
75 * @param {(Array|Element)} cur
76 * @param {number} dir
77 * @return {?}
78 */
79 function sibling(cur, dir) {
80 for (; (cur = cur[dir]) && 1 !== cur.nodeType;) {
81 }
82 return cur;
83 }
84 /**
85 * @param {?} expPair
86 * @return {?}
87 */
88 function failed(expPair) {
89 return expPair;
90 }
91 /**
92 * @param {?} name
93 * @return {?}
94 */
95 function data(name) {
96 throw name;
97 }
98 /**
99 * @param {!Object} data
100 * @param {!Function} path
101 * @param {!Function} callback
102 * @param {boolean} args
103 * @return {undefined}
104 */
105 function resolve(data, path, callback, args) {
106 var error;
107 try {
108 if (data && fn(error = data.promise)) {
109 error.call(data).done(path).fail(callback);
110 } else {
111 if (data && fn(error = data.then)) {
112 error.call(data, path, callback);
113 } else {
114 path.apply(void 0, [data].slice(args));
115 }
116 }
117 } catch (success) {
118 callback.apply(void 0, [success]);
119 }
120 }
121 /**
122 * @return {undefined}
123 */
124 function $__jsx_onload() {
125 document.removeEventListener("DOMContentLoaded", $__jsx_onload);
126 window.removeEventListener("load", $__jsx_onload);
127 jQuery.ready();
128 }
129 /**
130 * @param {?} context
131 * @param {string} match
132 * @return {?}
133 */
134 function dashToCapital(context, match) {
135 return match.toUpperCase();
136 }
137 /**
138 * @param {!Object} str
139 * @return {?}
140 */
141 function camelCase(str) {
142 return str.replace(_kerningNamesHash_escapeEscape, "ms-").replace(rcharset, dashToCapital);
143 }
144 /**
145 * @return {undefined}
146 */
147 function Data() {
148 this.expando = jQuery.expando + Data.uid++;
149 }
150 /**
151 * @param {!Object} elem
152 * @param {!Object} name
153 * @param {?} json
154 * @return {?}
155 */
156 function func(elem, name, json) {
157 var key;
158 var value;
159 if (void 0 === json && 1 === elem.nodeType) {
160 if (key = "data-" + name.replace(dashExpr, "-$&").toLowerCase(), "string" == typeof(json = elem.getAttribute(key))) {
161 try {
162 /** @type {*} */
163 json = "true" === (value = json) || "false" !== value && ("null" === value ? null : value === +value + "" ? +value : contribRegex.test(value) ? JSON.parse(value) : value);
164 } catch (e) {
165 }
166 self.set(elem, name, json);
167 } else {
168 json = void 0;
169 }
170 }
171 return json;
172 }
173 /**
174 * @param {string} elem
175 * @param {string} prop
176 * @param {string} valueParts
177 * @param {!Object} tween
178 * @return {?}
179 */
180 function adjustCSS(elem, prop, valueParts, tween) {
181 var adjusted;
182 var scale;
183 /** @type {number} */
184 var a = 20;
185 /** @type {function(): ?} */
186 var currentValue = tween ? function() {
187 return tween.cur();
188 } : function() {
189 return jQuery.css(elem, prop, "");
190 };
191 var initial = currentValue();
192 var unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px");
193 var initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || "px" !== unit && +initial) && regex.exec(jQuery.css(elem, prop));
194 if (initialInUnit && initialInUnit[3] !== unit) {
195 /** @type {number} */
196 initial = initial / 2;
197 unit = unit || initialInUnit[3];
198 /** @type {number} */
199 initialInUnit = +initial || 1;
200 for (; a--;) {
201 jQuery.style(elem, prop, initialInUnit + unit);
202 if ((1 - scale) * (1 - (scale = currentValue() / initial || .5)) <= 0) {
203 /** @type {number} */
204 a = 0;
205 }
206 /** @type {number} */
207 initialInUnit = initialInUnit / scale;
208 }
209 /** @type {number} */
210 initialInUnit = initialInUnit * 2;
211 jQuery.style(elem, prop, initialInUnit + unit);
212 valueParts = valueParts || [];
213 }
214 return valueParts && (initialInUnit = +initialInUnit || +initial || 0, adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2], tween && (tween.unit = unit, tween.start = initialInUnit, tween.end = adjusted)), adjusted;
215 }
216 /**
217 * @param {!Array} result
218 * @param {boolean} e
219 * @return {?}
220 */
221 function show(result, e) {
222 var size;
223 var elem;
224 var element;
225 var node;
226 var parent;
227 var tagName;
228 var display;
229 /** @type {!Array} */
230 var values = [];
231 /** @type {number} */
232 var i = 0;
233 var inlineCount = result.length;
234 for (; i < inlineCount; i++) {
235 if ((elem = result[i]).style) {
236 size = elem.style.display;
237 if (e) {
238 if ("none" === size) {
239 values[i] = dataPriv.get(elem, "display") || null;
240 if (!values[i]) {
241 /** @type {string} */
242 elem.style.display = "";
243 }
244 }
245 if ("" === elem.style.display && isHidden(elem)) {
246 values[i] = (display = parent = node = void 0, parent = (element = elem).ownerDocument, tagName = element.nodeName, (display = elemdisplay[tagName]) || (node = parent.body.appendChild(parent.createElement(tagName)), display = jQuery.css(node, "display"), node.parentNode.removeChild(node), "none" === display && (display = "block"), elemdisplay[tagName] = display));
247 }
248 } else {
249 if ("none" !== size) {
250 /** @type {string} */
251 values[i] = "none";
252 dataPriv.set(elem, "display", size);
253 }
254 }
255 }
256 }
257 /** @type {number} */
258 i = 0;
259 for (; i < inlineCount; i++) {
260 if (null != values[i]) {
261 result[i].style.display = values[i];
262 }
263 }
264 return result;
265 }
266 /**
267 * @param {!Object} context
268 * @param {number} tag
269 * @return {?}
270 */
271 function getAll(context, tag) {
272 var n;
273 return n = "undefined" != typeof context.getElementsByTagName ? context.getElementsByTagName(tag || "*") : "undefined" != typeof context.querySelectorAll ? context.querySelectorAll(tag || "*") : [], void 0 === tag || tag && callback(context, tag) ? jQuery.merge([context], n) : n;
274 }
275 /**
276 * @param {number} elems
277 * @param {!NodeList} refElements
278 * @return {undefined}
279 */
280 function setGlobalEval(elems, refElements) {
281 /** @type {number} */
282 var i = 0;
283 var length = elems.length;
284 for (; i < length; i++) {
285 dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval"));
286 }
287 }
288 /**
289 * @param {!Array} elems
290 * @param {!Object} context
291 * @param {!Array} result
292 * @param {!Object} element
293 * @param {string} ignored
294 * @return {?}
295 */
296 function buildFragment(elems, context, result, element, ignored) {
297 var elem;
298 var tmp;
299 var tag;
300 var wrap;
301 var parent;
302 var j;
303 var fragment = context.createDocumentFragment();
304 /** @type {!Array} */
305 var results = [];
306 /** @type {number} */
307 var i = 0;
308 var length = elems.length;
309 for (; i < length; i++) {
310 if ((elem = elems[i]) || 0 === elem) {
311 if ("object" === type(elem)) {
312 jQuery.merge(results, elem.nodeType ? [elem] : elem);
313 } else {
314 if (re_commas.test(elem)) {
315 tmp = tmp || fragment.appendChild(context.createElement("div"));
316 tag = (me.exec(elem) || ["", ""])[1].toLowerCase();
317 wrap = wrapMap[tag] || wrapMap._default;
318 tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2];
319 j = wrap[0];
320 for (; j--;) {
321 tmp = tmp.lastChild;
322 }
323 jQuery.merge(results, tmp.childNodes);
324 /** @type {string} */
325 (tmp = fragment.firstChild).textContent = "";
326 } else {
327 results.push(context.createTextNode(elem));
328 }
329 }
330 }
331 }
332 /** @type {string} */
333 fragment.textContent = "";
334 /** @type {number} */
335 i = 0;
336 for (; elem = results[i++];) {
337 if (element && -1 < jQuery.inArray(elem, element)) {
338 if (ignored) {
339 ignored.push(elem);
340 }
341 } else {
342 if (parent = test(elem), tmp = getAll(fragment.appendChild(elem), "script"), parent && setGlobalEval(tmp), result) {
343 /** @type {number} */
344 j = 0;
345 for (; elem = tmp[j++];) {
346 if (opacityRe.test(elem.type || "")) {
347 result.push(elem);
348 }
349 }
350 }
351 }
352 }
353 return fragment;
354 }
355 /**
356 * @return {?}
357 */
358 function returnTrue() {
359 return true;
360 }
361 /**
362 * @return {?}
363 */
364 function returnFalse() {
365 return false;
366 }
367 /**
368 * @param {?} event
369 * @param {string} data
370 * @return {?}
371 */
372 function raw(event, data) {
373 return event === function() {
374 try {
375 return document.activeElement;
376 } catch (e) {
377 }
378 }() == ("focus" === data);
379 }
380 /**
381 * @param {!Object} code
382 * @param {!Object} obj
383 * @param {!Object} callback
384 * @param {!Object} type
385 * @param {!Object} handler
386 * @param {number} next
387 * @return {?}
388 */
389 function get(code, obj, callback, type, handler, next) {
390 var fn;
391 var key;
392 if ("object" == typeof obj) {
393 for (key in "string" != typeof callback && (type = type || callback, callback = void 0), obj) {
394 get(code, key, callback, type, obj[key], next);
395 }
396 return code;
397 }
398 if (null == type && null == handler ? (handler = callback, type = callback = void 0) : null == handler && ("string" == typeof callback ? (handler = type, type = void 0) : (handler = type, type = callback, callback = void 0)), false === handler) {
399 /** @type {function(): ?} */
400 handler = returnFalse;
401 } else {
402 if (!handler) {
403 return code;
404 }
405 }
406 return 1 === next && (fn = handler, (handler = function(type) {
407 return jQuery().off(type), fn.apply(this, arguments);
408 }).guid = fn.guid || (fn.guid = jQuery.guid++)), code.each(function() {
409 jQuery.event.add(this, obj, handler, type, callback);
410 });
411 }
412 /**
413 * @param {undefined} elem
414 * @param {string} type
415 * @param {!Function} handler
416 * @return {undefined}
417 */
418 function handler(elem, type, handler) {
419 if (handler) {
420 dataPriv.set(elem, type, false);
421 jQuery.event.add(elem, type, {
422 namespace : false,
423 handler : function(event) {
424 var promise;
425 var attr;
426 var data = dataPriv.get(this, type);
427 if (1 & event.isTrigger && this[type]) {
428 if (data.length) {
429 if ((jQuery.event.special[type] || {}).delegateType) {
430 event.stopPropagation();
431 }
432 } else {
433 if (data = slice.call(arguments), dataPriv.set(this, type, data), promise = handler(this, type), this[type](), data !== (attr = dataPriv.get(this, type)) || promise ? dataPriv.set(this, type, false) : attr = {}, data !== attr) {
434 return event.stopImmediatePropagation(), event.preventDefault(), attr.value;
435 }
436 }
437 } else {
438 if (data.length) {
439 dataPriv.set(this, type, {
440 value : jQuery.event.trigger(jQuery.extend(data[0], jQuery.Event.prototype), data.slice(1), this)
441 });
442 event.stopImmediatePropagation();
443 }
444 }
445 }
446 });
447 } else {
448 if (void 0 === dataPriv.get(elem, type)) {
449 jQuery.event.add(elem, type, returnTrue);
450 }
451 }
452 }
453 /**
454 * @param {undefined} elem
455 * @param {!Object} content
456 * @return {?}
457 */
458 function manipulationTarget(elem, content) {
459 return callback(elem, "table") && callback(11 !== content.nodeType ? content : content.firstChild, "tr") && jQuery(elem).children("tbody")[0] || elem;
460 }
461 /**
462 * @param {!Element} s
463 * @return {?}
464 */
465 function v(s) {
466 return s.type = (null !== s.getAttribute("type")) + "/" + s.type, s;
467 }
468 /**
469 * @param {!Object} e
470 * @return {?}
471 */
472 function createGeneNameGenomicState(e) {
473 return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), e;
474 }
475 /**
476 * @param {string} node
477 * @param {!Object} elem
478 * @return {undefined}
479 */
480 function cloneCopyEvent(node, elem) {
481 var i;
482 var tableslen;
483 var type;
484 var b;
485 var data;
486 var events;
487 if (1 === elem.nodeType) {
488 if (dataPriv.hasData(node) && (events = dataPriv.get(node).events)) {
489 for (type in dataPriv.remove(elem, "handle events"), events) {
490 /** @type {number} */
491 i = 0;
492 tableslen = events[type].length;
493 for (; i < tableslen; i++) {
494 jQuery.event.add(elem, type, events[type][i]);
495 }
496 }
497 }
498 if (self.hasData(node)) {
499 b = self.access(node);
500 data = jQuery.extend({}, b);
501 self.set(elem, data);
502 }
503 }
504 }
505 /**
506 * @param {!Object} collection
507 * @param {!Array} args
508 * @param {!Function} callback
509 * @param {string} ignored
510 * @return {?}
511 */
512 function domManip(collection, args, callback, ignored) {
513 args = map(args);
514 var fragment;
515 var first;
516 var a;
517 var tableslen;
518 var node;
519 var context;
520 /** @type {number} */
521 var i = 0;
522 var totalItems = collection.length;
523 /** @type {number} */
524 var minimumIdx = totalItems - 1;
525 var str = args[0];
526 var ret = fn(str);
527 if (ret || 1 < totalItems && "string" == typeof str && !support.checkClone && partten.test(str)) {
528 return collection.each(function(index) {
529 var self = collection.eq(index);
530 if (ret) {
531 args[0] = str.call(this, index, self.html());
532 }
533 domManip(self, args, callback, ignored);
534 });
535 }
536 if (totalItems && (first = (fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored)).firstChild, 1 === fragment.childNodes.length && (fragment = first), first || ignored)) {
537 tableslen = (a = jQuery.map(getAll(fragment, "script"), v)).length;
538 for (; i < totalItems; i++) {
539 node = fragment;
540 if (i !== minimumIdx) {
541 node = jQuery.clone(node, true, true);
542 if (tableslen) {
543 jQuery.merge(a, getAll(node, "script"));
544 }
545 }
546 callback.call(collection[i], node, i);
547 }
548 if (tableslen) {
549 context = a[a.length - 1].ownerDocument;
550 jQuery.map(a, createGeneNameGenomicState);
551 /** @type {number} */
552 i = 0;
553 for (; i < tableslen; i++) {
554 node = a[i];
555 if (opacityRe.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(context, node)) {
556 if (node.src && "module" !== (node.type || "").toLowerCase()) {
557 if (jQuery._evalUrl && !node.noModule) {
558 jQuery._evalUrl(node.src, {
559 nonce : node.nonce || node.getAttribute("nonce")
560 }, context);
561 }
562 } else {
563 cb(node.textContent.replace(query, ""), node, context);
564 }
565 }
566 }
567 }
568 }
569 return collection;
570 }
571 /**
572 * @param {?} val
573 * @param {boolean} fn
574 * @param {string} table
575 * @return {?}
576 */
577 function remove(val, fn, table) {
578 var elem;
579 var value = fn ? jQuery.filter(fn, val) : val;
580 /** @type {number} */
581 var name = 0;
582 for (; null != (elem = value[name]); name++) {
583 if (!(table || 1 !== elem.nodeType)) {
584 jQuery.cleanData(getAll(elem));
585 }
586 if (elem.parentNode) {
587 if (table && test(elem)) {
588 setGlobalEval(getAll(elem, "script"));
589 }
590 elem.parentNode.removeChild(elem);
591 }
592 }
593 return val;
594 }
595 /**
596 * @param {!Object} elem
597 * @param {string} name
598 * @param {!Object} computed
599 * @return {?}
600 */
601 function curCSS(elem, name, computed) {
602 var minWidth;
603 var width;
604 var maxWidth;
605 var ret;
606 var style = elem.style;
607 return (computed = computed || getStyles(elem)) && ("" !== (ret = computed.getPropertyValue(name) || computed[name]) || test(elem) || (ret = jQuery.style(elem, name)), !support.pixelBoxStyles() && rnumnonpx.test(ret) && inlineAttributeCommentRegex.test(name) && (minWidth = style.width, width = style.minWidth, maxWidth = style.maxWidth, style.minWidth = style.maxWidth = style.width = ret, ret = computed.width, style.width = minWidth, style.minWidth = width, style.maxWidth = maxWidth)), void 0 !==
608 ret ? ret + "" : ret;
609 }
610 /**
611 * @param {?} conditionFn
612 * @param {!Function} hookFn
613 * @return {?}
614 */
615 function addGetHookIf(conditionFn, hookFn) {
616 return {
617 get : function() {
618 if (!conditionFn()) {
619 return (this.get = hookFn).apply(this, arguments);
620 }
621 delete this.get;
622 }
623 };
624 }
625 /**
626 * @param {string} name
627 * @return {?}
628 */
629 function camelize(name) {
630 var nameField = jQuery.cssProps[name] || aSupports[name];
631 return nameField || (name in testStyle ? name : aSupports[name] = function(p) {
632 var prop = p[0].toUpperCase() + p.slice(1);
633 /** @type {number} */
634 var i = prefixes.length;
635 for (; i--;) {
636 if ((p = prefixes[i] + prop) in testStyle) {
637 return p;
638 }
639 }
640 }(name) || name);
641 }
642 /**
643 * @param {!Object} value
644 * @param {!Object} key
645 * @param {string} type
646 * @return {?}
647 */
648 function _set(value, key, type) {
649 /** @type {(Array<string>|null)} */
650 var matches = regex.exec(key);
651 return matches ? Math.max(0, matches[2] - (type || 0)) + (matches[3] || "px") : key;
652 }
653 /**
654 * @param {!Object} elem
655 * @param {string} name
656 * @param {string} extra
657 * @param {boolean} isBorderBox
658 * @param {!Object} styles
659 * @param {number} themeName
660 * @return {?}
661 */
662 function augmentWidthOrHeight(elem, name, extra, isBorderBox, styles, themeName) {
663 /** @type {number} */
664 var i = "width" === name ? 1 : 0;
665 /** @type {number} */
666 var value = 0;
667 /** @type {number} */
668 var val = 0;
669 if (extra === (isBorderBox ? "border" : "content")) {
670 return 0;
671 }
672 for (; i < 4; i = i + 2) {
673 if ("margin" === extra) {
674 val = val + jQuery.css(elem, extra + cssExpand[i], true, styles);
675 }
676 if (isBorderBox) {
677 if ("content" === extra) {
678 /** @type {number} */
679 val = val - jQuery.css(elem, "padding" + cssExpand[i], true, styles);
680 }
681 if ("margin" !== extra) {
682 /** @type {number} */
683 val = val - jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
684 }
685 } else {
686 val = val + jQuery.css(elem, "padding" + cssExpand[i], true, styles);
687 if ("padding" !== extra) {
688 val = val + jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
689 } else {
690 value = value + jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
691 }
692 }
693 }
694 return !isBorderBox && 0 <= themeName && (val = val + (Math.max(0, Math.ceil(elem["offset" + name[0].toUpperCase() + name.slice(1)] - themeName - val - value - .5)) || 0)), val;
695 }
696 /**
697 * @param {!Element} elem
698 * @param {string} name
699 * @param {!Object} extra
700 * @return {?}
701 */
702 function load(elem, name, extra) {
703 var styles = getStyles(elem);
704 var isBorderBox = (!support.boxSizingReliable() || extra) && "border-box" === jQuery.css(elem, "boxSizing", false, styles);
705 var valueIsBorderBox = isBorderBox;
706 var value = curCSS(elem, name, styles);
707 var prop = "offset" + name[0].toUpperCase() + name.slice(1);
708 if (rnumnonpx.test(value)) {
709 if (!extra) {
710 return value;
711 }
712 /** @type {string} */
713 value = "auto";
714 }
715 return (!support.boxSizingReliable() && isBorderBox || !support.reliableTrDimensions() && callback(elem, "tr") || "auto" === value || !parseFloat(value) && "inline" === jQuery.css(elem, "display", false, styles)) && elem.getClientRects().length && (isBorderBox = "border-box" === jQuery.css(elem, "boxSizing", false, styles), (valueIsBorderBox = prop in elem) && (value = elem[prop])), (value = parseFloat(value) || 0) + augmentWidthOrHeight(elem, name, extra || (isBorderBox ? "border" : "content"),
716 valueIsBorderBox, styles, value) + "px";
717 }
718 /**
719 * @param {!Array} type
720 * @param {!Function} context
721 * @param {string} object
722 * @param {string} end
723 * @param {number} easing
724 * @return {?}
725 */
726 function Tween(type, context, object, end, easing) {
727 return new Tween.prototype.init(type, context, object, end, easing);
728 }
729 /**
730 * @return {undefined}
731 */
732 function step() {
733 if (nt) {
734 if (false === document.hidden && window.requestAnimationFrame) {
735 window.requestAnimationFrame(step);
736 } else {
737 window.setTimeout(step, jQuery.fx.interval);
738 }
739 jQuery.fx.tick();
740 }
741 }
742 /**
743 * @return {?}
744 */
745 function createFxNow() {
746 return window.setTimeout(function() {
747 fxNow = void 0;
748 }), fxNow = Date.now();
749 }
750 /**
751 * @param {string} type
752 * @param {number} includeWidth
753 * @return {?}
754 */
755 function genFx(type, includeWidth) {
756 var which;
757 /** @type {number} */
758 var i = 0;
759 var attrs = {
760 height : type
761 };
762 /** @type {number} */
763 includeWidth = includeWidth ? 1 : 0;
764 for (; i < 4; i = i + (2 - includeWidth)) {
765 attrs["margin" + (which = cssExpand[i])] = attrs["padding" + which] = type;
766 }
767 return includeWidth && (attrs.opacity = attrs.width = type), attrs;
768 }
769 /**
770 * @param {?} value
771 * @param {string} prop
772 * @param {?} animation
773 * @return {?}
774 */
775 function createTween(value, prop, animation) {
776 var tween;
777 var args = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]);
778 /** @type {number} */
779 var i = 0;
780 var az = args.length;
781 for (; i < az; i++) {
782 if (tween = args[i].call(animation, prop, value)) {
783 return tween;
784 }
785 }
786 }
787 /**
788 * @param {!Object} elem
789 * @param {?} properties
790 * @param {!Object} options
791 * @return {?}
792 */
793 function Animation(elem, properties, options) {
794 var result;
795 var a;
796 /** @type {number} */
797 var index = 0;
798 var ncells = Animation.prefilters.length;
799 var deferred = jQuery.Deferred().always(function() {
800 delete tick.elem;
801 });
802 /**
803 * @return {?}
804 */
805 var tick = function() {
806 if (a) {
807 return false;
808 }
809 var currentTime = fxNow || createFxNow();
810 /** @type {number} */
811 var remaining = Math.max(0, animation.startTime + animation.duration - currentTime);
812 /** @type {number} */
813 var percent = 1 - (remaining / animation.duration || 0);
814 /** @type {number} */
815 var i = 0;
816 var length = animation.tweens.length;
817 for (; i < length; i++) {
818 animation.tweens[i].run(percent);
819 }
820 return deferred.notifyWith(elem, [animation, percent, remaining]), percent < 1 && length ? remaining : (length || deferred.notifyWith(elem, [animation, 1, 0]), deferred.resolveWith(elem, [animation]), false);
821 };
822 var animation = deferred.promise({
823 elem : elem,
824 props : jQuery.extend({}, properties),
825 opts : jQuery.extend(true, {
826 specialEasing : {},
827 easing : jQuery.easing._default
828 }, options),
829 originalProperties : properties,
830 originalOptions : options,
831 startTime : fxNow || createFxNow(),
832 duration : options.duration,
833 tweens : [],
834 createTween : function(prop, end) {
835 var result = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
836 return animation.tweens.push(result), result;
837 },
838 stop : function(value) {
839 /** @type {number} */
840 var i = 0;
841 var mid = value ? animation.tweens.length : 0;
842 if (a) {
843 return this;
844 }
845 /** @type {boolean} */
846 a = true;
847 for (; i < mid; i++) {
848 animation.tweens[i].run(1);
849 }
850 return value ? (deferred.notifyWith(elem, [animation, 1, 0]), deferred.resolveWith(elem, [animation, value])) : deferred.rejectWith(elem, [animation, value]), this;
851 }
852 });
853 var props = animation.props;
854 !function(res, object) {
855 var key;
856 var name;
857 var value;
858 var obj;
859 var hooks;
860 for (key in res) {
861 if (value = object[name = camelCase(key)], obj = res[key], Array.isArray(obj) && (value = obj[1], obj = res[key] = obj[0]), key !== name && (res[name] = obj, delete res[key]), (hooks = jQuery.cssHooks[name]) && "expand" in hooks) {
862 for (key in obj = hooks.expand(obj), delete res[name], obj) {
863 if (!(key in res)) {
864 res[key] = obj[key];
865 object[key] = value;
866 }
867 }
868 } else {
869 object[name] = value;
870 }
871 }
872 }(props, animation.opts.specialEasing);
873 for (; index < ncells; index++) {
874 if (result = Animation.prefilters[index].call(animation, elem, props, animation.opts)) {
875 return fn(result.stop) && (jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result)), result;
876 }
877 }
878 return jQuery.map(props, createTween, animation), fn(animation.opts.start) && animation.opts.start.call(elem, animation), animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always), jQuery.fx.timer(jQuery.extend(tick, {
879 elem : elem,
880 anim : animation,
881 queue : animation.opts.queue
882 })), animation;
883 }
884 /**
885 * @param {string} b
886 * @return {?}
887 */
888 function merge(b) {
889 return (b.match(re) || []).join(" ");
890 }
891 /**
892 * @param {!Node} el
893 * @return {?}
894 */
895 function $(el) {
896 return el.getAttribute && el.getAttribute("class") || "";
897 }
898 /**
899 * @param {string} value
900 * @return {?}
901 */
902 function clean(value) {
903 return Array.isArray(value) ? value : "string" == typeof value && value.match(re) || [];
904 }
905 /**
906 * @param {string} url
907 * @param {!Array} a
908 * @param {string} text
909 * @param {!Function} f
910 * @return {undefined}
911 */
912 function set(url, a, text, f) {
913 var key;
914 if (Array.isArray(a)) {
915 jQuery.each(a, function(callback_key, response) {
916 if (text || reIsFile.test(url)) {
917 f(url, response);
918 } else {
919 set(url + "[" + ("object" == typeof response && null != response ? callback_key : "") + "]", response, text, f);
920 }
921 });
922 } else {
923 if (text || "object" !== type(a)) {
924 f(url, a);
925 } else {
926 for (key in a) {
927 set(url + "[" + key + "]", a[key], text, f);
928 }
929 }
930 }
931 }
932 /**
933 * @param {!Object} structure
934 * @return {?}
935 */
936 function addToPrefiltersOrTransports(structure) {
937 return function(val, t) {
938 if ("string" != typeof val) {
939 /** @type {string} */
940 t = val;
941 /** @type {string} */
942 val = "*";
943 }
944 var type;
945 /** @type {number} */
946 var c = 0;
947 var replies = val.toLowerCase().match(re) || [];
948 if (fn(t)) {
949 for (; type = replies[c++];) {
950 if ("+" === type[0]) {
951 type = type.slice(1) || "*";
952 (structure[type] = structure[type] || []).unshift(t);
953 } else {
954 (structure[type] = structure[type] || []).push(t);
955 }
956 }
957 }
958 };
959 }
960 /**
961 * @param {!Object} structure
962 * @param {?} options
963 * @param {!Object} originalOptions
964 * @param {?} jqXHR
965 * @return {?}
966 */
967 function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
968 /**
969 * @param {string} type
970 * @return {?}
971 */
972 function inspect(type) {
973 var selected;
974 return nodedescriptions[type] = true, jQuery.each(structure[type] || [], function(canCreateDiscussions, prefilterOrFactory) {
975 var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
976 return "string" != typeof dataTypeOrTransport || seekingTransport || nodedescriptions[dataTypeOrTransport] ? seekingTransport ? !(selected = dataTypeOrTransport) : void 0 : (options.dataTypes.unshift(dataTypeOrTransport), inspect(dataTypeOrTransport), false);
977 }), selected;
978 }
979 var nodedescriptions = {};
980 /** @type {boolean} */
981 var seekingTransport = structure === transports;
982 return inspect(options.dataTypes[0]) || !nodedescriptions["*"] && inspect("*");
983 }
984 /**
985 * @param {?} target
986 * @param {?} opts
987 * @return {?}
988 */
989 function ajaxExtend(target, opts) {
990 var key;
991 var deep;
992 var flatOptions = jQuery.ajaxSettings.flatOptions || {};
993 for (key in opts) {
994 if (void 0 !== opts[key]) {
995 (flatOptions[key] ? target : deep || (deep = {}))[key] = opts[key];
996 }
997 }
998 return deep && jQuery.extend(true, target, deep), target;
999 }
1000 /** @type {!Array} */
1001 var arr = [];
1002 /** @type {function(!Object): (Object|null)} */
1003 var getProto = Object.getPrototypeOf;
1004 /** @type {function(this:(IArrayLike<T>|string), *=, *=): !Array<T>} */
1005 var slice = arr.slice;
1006 /** @type {function(!Array): ?} */
1007 var map = arr.flat ? function(elems) {
1008 return arr.flat.call(elems);
1009 } : function(args) {
1010 return arr.concat.apply([], args);
1011 };
1012 /** @type {function(this:IArrayLike<T>, ...T): number} */
1013 var push = arr.push;
1014 /** @type {function(this:(IArrayLike<T>|string), T, number=): number} */
1015 var indexOf = arr.indexOf;
1016 var class2type = {};
1017 /** @type {function(this:*): string} */
1018 var toString = class2type.toString;
1019 /** @type {function(this:Object, *): boolean} */
1020 var hasOwn = class2type.hasOwnProperty;
1021 /** @type {function(this:!Function): string} */
1022 var fnToString = hasOwn.toString;
1023 /** @type {string} */
1024 var Mixin2 = fnToString.call(Object);
1025 var support = {};
1026 /**
1027 * @param {string} obj
1028 * @return {?}
1029 */
1030 var fn = function(obj) {
1031 return "function" == typeof obj && "number" != typeof obj.nodeType;
1032 };
1033 /**
1034 * @param {!Object} obj
1035 * @return {?}
1036 */
1037 var isWindow = function(obj) {
1038 return null != obj && obj === obj.window;
1039 };
1040 var document = window.document;
1041 var obj = {
1042 type : true,
1043 src : true,
1044 nonce : true,
1045 noModule : true
1046 };
1047 /** @type {string} */
1048 var core_version = "3.5.1";
1049 /**
1050 * @param {!Array} selector
1051 * @param {!Function} context
1052 * @return {?}
1053 */
1054 var jQuery = function(selector, context) {
1055 return new jQuery.fn.init(selector, context);
1056 };
1057 jQuery.fn = jQuery.prototype = {
1058 jquery : core_version,
1059 constructor : jQuery,
1060 length : 0,
1061 toArray : function() {
1062 return slice.call(this);
1063 },
1064 get : function(num) {
1065 return null == num ? slice.call(this) : num < 0 ? this[num + this.length] : this[num];
1066 },
1067 pushStack : function(a) {
1068 var elm = jQuery.merge(this.constructor(), a);
1069 return elm.prevObject = this, elm;
1070 },
1071 each : function(callback) {
1072 return jQuery.each(this, callback);
1073 },
1074 map : function(fn) {
1075 return this.pushStack(jQuery.map(this, function(elem, event) {
1076 return fn.call(elem, event, elem);
1077 }));
1078 },
1079 slice : function() {
1080 return this.pushStack(slice.apply(this, arguments));
1081 },
1082 first : function() {
1083 return this.eq(0);
1084 },
1085 last : function() {
1086 return this.eq(-1);
1087 },
1088 even : function() {
1089 return this.pushStack(jQuery.grep(this, function(canCreateDiscussions, isSlidingUp) {
1090 return (isSlidingUp + 1) % 2;
1091 }));
1092 },
1093 odd : function() {
1094 return this.pushStack(jQuery.grep(this, function(canCreateDiscussions, isSlidingUp) {
1095 return isSlidingUp % 2;
1096 }));
1097 },
1098 eq : function(i) {
1099 var len = this.length;
1100 var end = +i + (i < 0 ? len : 0);
1101 return this.pushStack(0 <= end && end < len ? [this[end]] : []);
1102 },
1103 end : function() {
1104 return this.prevObject || this.constructor();
1105 },
1106 push : push,
1107 sort : arr.sort,
1108 splice : arr.splice
1109 };
1110 /** @type {function(): ?} */
1111 jQuery.extend = jQuery.fn.extend = function() {
1112 var options;
1113 var name;
1114 var value;
1115 var copy;
1116 var copyIsArray;
1117 var clone;
1118 var target = arguments[0] || {};
1119 /** @type {number} */
1120 var i = 1;
1121 /** @type {number} */
1122 var length = arguments.length;
1123 /** @type {boolean} */
1124 var deep = false;
1125 if ("boolean" == typeof target) {
1126 /** @type {boolean} */
1127 deep = target;
1128 target = arguments[i] || {};
1129 i++;
1130 }
1131 if (!("object" == typeof target || fn(target))) {
1132 target = {};
1133 }
1134 if (i === length) {
1135 target = this;
1136 i--;
1137 }
1138 for (; i < length; i++) {
1139 if (null != (options = arguments[i])) {
1140 for (name in options) {
1141 copy = options[name];
1142 if ("__proto__" !== name && target !== copy) {
1143 if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
1144 value = target[name];
1145 clone = copyIsArray && !Array.isArray(value) ? [] : copyIsArray || jQuery.isPlainObject(value) ? value : {};
1146 /** @type {boolean} */
1147 copyIsArray = false;
1148 target[name] = jQuery.extend(deep, clone, copy);
1149 } else {
1150 if (void 0 !== copy) {
1151 target[name] = copy;
1152 }
1153 }
1154 }
1155 }
1156 }
1157 }
1158 return target;
1159 };
1160 jQuery.extend({
1161 expando : "jQuery" + (core_version + Math.random()).replace(/\D/g, ""),
1162 isReady : true,
1163 error : function(value) {
1164 throw new Error(value);
1165 },
1166 noop : function() {
1167 },
1168 isPlainObject : function(obj) {
1169 var proto;
1170 var hasOwnProperty;
1171 return !(!obj || "[object Object]" !== toString.call(obj)) && (!(proto = getProto(obj)) || "function" == typeof(hasOwnProperty = hasOwn.call(proto, "constructor") && proto.constructor) && fnToString.call(hasOwnProperty) === Mixin2);
1172 },
1173 isEmptyObject : function(obj) {
1174 var key;
1175 for (key in obj) {
1176 return false;
1177 }
1178 return true;
1179 },
1180 globalEval : function(url, data, x) {
1181 cb(url, {
1182 nonce : data && data.nonce
1183 }, x);
1184 },
1185 each : function(object, callback) {
1186 var aLength;
1187 /** @type {number} */
1188 var i = 0;
1189 if (isArrayLike(object)) {
1190 aLength = object.length;
1191 for (; i < aLength; i++) {
1192 if (false === callback.call(object[i], i, object[i])) {
1193 break;
1194 }
1195 }
1196 } else {
1197 for (i in object) {
1198 if (false === callback.call(object[i], i, object[i])) {
1199 break;
1200 }
1201 }
1202 }
1203 return object;
1204 },
1205 makeArray : function(arr, o) {
1206 var obj = o || [];
1207 return null != arr && (isArrayLike(Object(arr)) ? jQuery.merge(obj, "string" == typeof arr ? [arr] : arr) : push.call(obj, arr)), obj;
1208 },
1209 inArray : function(elem, arr, i) {
1210 return null == arr ? -1 : indexOf.call(arr, elem, i);
1211 },
1212 merge : function(a, b) {
1213 /** @type {number} */
1214 var _jlen = +b.length;
1215 /** @type {number} */
1216 var k = 0;
1217 var l = a.length;
1218 for (; k < _jlen; k++) {
1219 a[l++] = b[k];
1220 }
1221 return a.length = l, a;
1222 },
1223 grep : function(elements, callback, a) {
1224 /** @type {!Array} */
1225 var ret = [];
1226 /** @type {number} */
1227 var i = 0;
1228 var eL = elements.length;
1229 /** @type {boolean} */
1230 var booA = !a;
1231 for (; i < eL; i++) {
1232 if (!callback(elements[i], i) !== booA) {
1233 ret.push(elements[i]);
1234 }
1235 }
1236 return ret;
1237 },
1238 map : function(input, t, path) {
1239 var inpLen;
1240 var value;
1241 /** @type {number} */
1242 var i = 0;
1243 /** @type {!Array} */
1244 var args = [];
1245 if (isArrayLike(input)) {
1246 inpLen = input.length;
1247 for (; i < inpLen; i++) {
1248 if (null != (value = t(input[i], i, path))) {
1249 args.push(value);
1250 }
1251 }
1252 } else {
1253 for (i in input) {
1254 if (null != (value = t(input[i], i, path))) {
1255 args.push(value);
1256 }
1257 }
1258 }
1259 return map(args);
1260 },
1261 guid : 1,
1262 support : support
1263 });
1264 if ("function" == typeof Symbol) {
1265 jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
1266 }
1267 jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(canCreateDiscussions, p_Interval) {
1268 class2type["[object " + p_Interval + "]"] = p_Interval.toLowerCase();
1269 });
1270 var Sizzle = function(options) {
1271 /**
1272 * @param {string} selector
1273 * @param {!Object} context
1274 * @param {!Array} results
1275 * @param {!Array} seed
1276 * @return {?}
1277 */
1278 function Sizzle(selector, context, results, seed) {
1279 var m;
1280 var i;
1281 var elem;
1282 var nid;
1283 var match;
1284 var groups;
1285 var newSelector;
1286 var newContext = context && context.ownerDocument;
1287 var undefined = context ? context.nodeType : 9;
1288 if (results = results || [], "string" != typeof selector || !selector || 1 !== undefined && 9 !== undefined && 11 !== undefined) {
1289 return results;
1290 }
1291 if (!seed && (setDocument(context), context = context || document, documentIsHTML)) {
1292 if (11 !== undefined && (match = customSelectorReg.exec(selector))) {
1293 if (m = match[1]) {
1294 if (9 === undefined) {
1295 if (!(elem = context.getElementById(m))) {
1296 return results;
1297 }
1298 if (elem.id === m) {
1299 return results.push(elem), results;
1300 }
1301 } else {
1302 if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {
1303 return results.push(elem), results;
1304 }
1305 }
1306 } else {
1307 if (match[2]) {
1308 return push.apply(results, context.getElementsByTagName(selector)), results;
1309 }
1310 if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {
1311 return push.apply(results, context.getElementsByClassName(m)), results;
1312 }
1313 }
1314 }
1315 if (support.qsa && !isUndefined[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && (1 !== undefined || "object" !== context.nodeName.toLowerCase())) {
1316 if (newSelector = selector, newContext = context, 1 === undefined && (RE_PSEUDOS.test(selector) || pattern.test(selector))) {
1317 if (!((newContext = IS_HTML_FRAGMENT.test(selector) && testContext(context.parentNode) || context) === context && support.scope)) {
1318 if (nid = context.getAttribute("id")) {
1319 nid = nid.replace(rcssescape, fcssescape);
1320 } else {
1321 context.setAttribute("id", nid = expando);
1322 }
1323 }
1324 i = (groups = tokenize(selector)).length;
1325 for (; i--;) {
1326 /** @type {string} */
1327 groups[i] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i]);
1328 }
1329 newSelector = groups.join(",");
1330 }
1331 try {
1332 return push.apply(results, newContext.querySelectorAll(newSelector)), results;
1333 } catch (e) {
1334 isUndefined(selector, true);
1335 } finally {
1336 if (nid === expando) {
1337 context.removeAttribute("id");
1338 }
1339 }
1340 }
1341 }
1342 return select(selector.replace(rtrim, "$1"), context, results, seed);
1343 }
1344 /**
1345 * @return {?}
1346 */
1347 function createCache() {
1348 /** @type {!Array} */
1349 var lengths = [];
1350 return function cache(duration, url) {
1351 return lengths.push(duration + " ") > Expr.cacheLength && delete cache[lengths.shift()], cache[duration + " "] = url;
1352 };
1353 }
1354 /**
1355 * @param {!Function} fn
1356 * @return {?}
1357 */
1358 function markFunction(fn) {
1359 return fn[expando] = true, fn;
1360 }
1361 /**
1362 * @param {!Function} expect
1363 * @return {?}
1364 */
1365 function assert(expect) {
1366 var wrap = document.createElement("fieldset");
1367 try {
1368 return !!expect(wrap);
1369 } catch (e) {
1370 return false;
1371 } finally {
1372 if (wrap.parentNode) {
1373 wrap.parentNode.removeChild(wrap);
1374 }
1375 /** @type {null} */
1376 wrap = null;
1377 }
1378 }
1379 /**
1380 * @param {string} handler
1381 * @param {!Function} index
1382 * @return {undefined}
1383 */
1384 function addHandle(handler, index) {
1385 var arr = handler.split("|");
1386 var i = arr.length;
1387 for (; i--;) {
1388 /** @type {!Function} */
1389 Expr.attrHandle[arr[i]] = index;
1390 }
1391 }
1392 /**
1393 * @param {!Object} a
1394 * @param {!Element} b
1395 * @return {?}
1396 */
1397 function siblingCheck(a, b) {
1398 var cur = b && a;
1399 var .num_const = cur && 1 === a.nodeType && 1 === b.nodeType && a.sourceIndex - b.sourceIndex;
1400 if (.num_const) {
1401 return .num_const;
1402 }
1403 if (cur) {
1404 for (; cur = cur.nextSibling;) {
1405 if (cur === b) {
1406 return -1;
1407 }
1408 }
1409 }
1410 return a ? 1 : -1;
1411 }
1412 /**
1413 * @param {!Object} selector
1414 * @return {?}
1415 */
1416 function jQuerify(selector) {
1417 return function(item) {
1418 return "input" === item.nodeName.toLowerCase() && item.type === selector;
1419 };
1420 }
1421 /**
1422 * @param {!Object} type
1423 * @return {?}
1424 */
1425 function createButtonPseudo(type) {
1426 return function(section) {
1427 var undefined = section.nodeName.toLowerCase();
1428 return ("input" === undefined || "button" === undefined) && section.type === type;
1429 };
1430 }
1431 /**
1432 * @param {boolean} disabled
1433 * @return {?}
1434 */
1435 function createDisabledPseudo(disabled) {
1436 return function(elem) {
1437 return "form" in elem ? elem.parentNode && false === elem.disabled ? "label" in elem ? "label" in elem.parentNode ? elem.parentNode.disabled === disabled : elem.disabled === disabled : elem.isDisabled === disabled || elem.isDisabled !== !disabled && disabledAncestor(elem) === disabled : elem.disabled === disabled : "label" in elem && elem.disabled === disabled;
1438 };
1439 }
1440 /**
1441 * @param {!Function} fn
1442 * @return {?}
1443 */
1444 function createPositionalPseudo(fn) {
1445 return markFunction(function(args) {
1446 return args = +args, markFunction(function(h, i) {
1447 var k;
1448 var x = fn([], h.length, args);
1449 var i = x.length;
1450 for (; i--;) {
1451 if (h[k = x[i]]) {
1452 /** @type {boolean} */
1453 h[k] = !(i[k] = h[k]);
1454 }
1455 }
1456 });
1457 });
1458 }
1459 /**
1460 * @param {!Node} context
1461 * @return {?}
1462 */
1463 function testContext(context) {
1464 return context && "undefined" != typeof context.getElementsByTagName && context;
1465 }
1466 /**
1467 * @return {undefined}
1468 */
1469 function setFilters() {
1470 }
1471 /**
1472 * @param {!Array} tokens
1473 * @return {?}
1474 */
1475 function toSelector(tokens) {
1476 /** @type {number} */
1477 var i = 0;
1478 var numTokens = tokens.length;
1479 /** @type {string} */
1480 var selector = "";
1481 for (; i < numTokens; i++) {
1482 /** @type {string} */
1483 selector = selector + tokens[i].value;
1484 }
1485 return selector;
1486 }
1487 /**
1488 * @param {!Function} matcher
1489 * @param {!Object} combinator
1490 * @param {string} base
1491 * @return {?}
1492 */
1493 function addCombinator(matcher, combinator, base) {
1494 var dir = combinator.dir;
1495 var skip = combinator.next;
1496 var key = skip || dir;
1497 var checkNonElements = base && "parentNode" === key;
1498 /** @type {number} */
1499 var doneName = done++;
1500 return combinator.first ? function(elem, stat, context) {
1501 for (; elem = elem[dir];) {
1502 if (1 === elem.nodeType || checkNonElements) {
1503 return matcher(elem, stat, context);
1504 }
1505 }
1506 return false;
1507 } : function(elem, stat, context) {
1508 var oldCache;
1509 var uniqueCache;
1510 var outerCache;
1511 /** @type {!Array} */
1512 var newCache = [dirruns, doneName];
1513 if (context) {
1514 for (; elem = elem[dir];) {
1515 if ((1 === elem.nodeType || checkNonElements) && matcher(elem, stat, context)) {
1516 return true;
1517 }
1518 }
1519 } else {
1520 for (; elem = elem[dir];) {
1521 if (1 === elem.nodeType || checkNonElements) {
1522 if (uniqueCache = (outerCache = elem[expando] || (elem[expando] = {}))[elem.uniqueID] || (outerCache[elem.uniqueID] = {}), skip && skip === elem.nodeName.toLowerCase()) {
1523 elem = elem[dir] || elem;
1524 } else {
1525 if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
1526 return newCache[2] = oldCache[2];
1527 }
1528 if ((uniqueCache[key] = newCache)[2] = matcher(elem, stat, context)) {
1529 return true;
1530 }
1531 }
1532 }
1533 }
1534 }
1535 return false;
1536 };
1537 }
1538 /**
1539 * @param {!Object} matchers
1540 * @return {?}
1541 */
1542 function elementMatcher(matchers) {
1543 return 1 < matchers.length ? function(elem, context, xml) {
1544 var i = matchers.length;
1545 for (; i--;) {
1546 if (!matchers[i](elem, context, xml)) {
1547 return false;
1548 }
1549 }
1550 return true;
1551 } : matchers[0];
1552 }
1553 /**
1554 * @param {!Array} t
1555 * @param {!Object} color
1556 * @param {!Object} n
1557 * @param {!Object} e
1558 * @param {?} comments
1559 * @return {?}
1560 */
1561 function parse(t, color, n, e, comments) {
1562 var c;
1563 /** @type {!Array} */
1564 var Cells = [];
1565 /** @type {number} */
1566 var i = 0;
1567 var pal = t.length;
1568 /** @type {boolean} */
1569 var colorChange = null != color;
1570 for (; i < pal; i++) {
1571 if (c = t[i]) {
1572 if (!(n && !n(c, e, comments))) {
1573 Cells.push(c);
1574 if (colorChange) {
1575 color.push(i);
1576 }
1577 }
1578 }
1579 }
1580 return Cells;
1581 }
1582 /**
1583 * @param {!Object} options
1584 * @param {string} fields
1585 * @param {string} callback
1586 * @param {!Object} element
1587 * @param {!Object} fn
1588 * @param {string} data
1589 * @return {?}
1590 */
1591 function render(options, fields, callback, element, fn, data) {
1592 return element && !element[expando] && (element = render(element)), fn && !fn[expando] && (fn = render(fn, data)), markFunction(function(data, i, context, extra) {
1593 var key;
1594 var j;
1595 var value;
1596 /** @type {!Array} */
1597 var obj = [];
1598 /** @type {!Array} */
1599 var c = [];
1600 var o = i.length;
1601 var result = data || function(selector, set, results) {
1602 /** @type {number} */
1603 var i = 0;
1604 var l = set.length;
1605 for (; i < l; i++) {
1606 Sizzle(selector, set[i], results);
1607 }
1608 return results;
1609 }(fields || "*", context.nodeType ? [context] : context, []);
1610 var ret = !options || !data && fields ? result : parse(result, obj, options, context, extra);
1611 var item = callback ? fn || (data ? options : o || element) ? [] : i : ret;
1612 if (callback && callback(ret, item, context, extra), element) {
1613 key = parse(item, c);
1614 element(key, [], context, extra);
1615 j = key.length;
1616 for (; j--;) {
1617 if (value = key[j]) {
1618 /** @type {boolean} */
1619 item[c[j]] = !(ret[c[j]] = value);
1620 }
1621 }
1622 }
1623 if (data) {
1624 if (fn || options) {
1625 if (fn) {
1626 /** @type {!Array} */
1627 key = [];
1628 j = item.length;
1629 for (; j--;) {
1630 if (value = item[j]) {
1631 key.push(ret[j] = value);
1632 }
1633 }
1634 fn(null, item = [], key, extra);
1635 }
1636 j = item.length;
1637 for (; j--;) {
1638 if ((value = item[j]) && -1 < (key = fn ? indexOf(data, value) : obj[j])) {
1639 /** @type {boolean} */
1640 data[key] = !(i[key] = value);
1641 }
1642 }
1643 }
1644 } else {
1645 item = parse(item === i ? item.splice(o, item.length) : item);
1646 if (fn) {
1647 fn(null, i, item, extra);
1648 } else {
1649 push.apply(i, item);
1650 }
1651 }
1652 });
1653 }
1654 /**
1655 * @param {!Array} tokens
1656 * @return {?}
1657 */
1658 function matcherFromTokens(tokens) {
1659 var checkContext;
1660 var matcher;
1661 var j;
1662 var len = tokens.length;
1663 var leadingRelative = Expr.relative[tokens[0].type];
1664 var implicitRelative = leadingRelative || Expr.relative[" "];
1665 /** @type {number} */
1666 var i = leadingRelative ? 1 : 0;
1667 var matchContext = addCombinator(function(elem) {
1668 return elem === checkContext;
1669 }, implicitRelative, true);
1670 var matchAnyContext = addCombinator(function(value) {
1671 return -1 < indexOf(checkContext, value);
1672 }, implicitRelative, true);
1673 /** @type {!Array} */
1674 var matchers = [function(elem, context, xml) {
1675 var r = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
1676 return checkContext = null, r;
1677 }];
1678 for (; i < len; i++) {
1679 if (matcher = Expr.relative[tokens[i].type]) {
1680 /** @type {!Array} */
1681 matchers = [addCombinator(elementMatcher(matchers), matcher)];
1682 } else {
1683 if ((matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches))[expando]) {
1684 /** @type {number} */
1685 j = ++i;
1686 for (; j < len; j++) {
1687 if (Expr.relative[tokens[j].type]) {
1688 break;
1689 }
1690 }
1691 return render(1 < i && elementMatcher(matchers), 1 < i && toSelector(tokens.slice(0, i - 1).concat({
1692 value : " " === tokens[i - 2].type ? "*" : ""
1693 })).replace(rtrim, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));
1694 }
1695 matchers.push(matcher);
1696 }
1697 }
1698 return elementMatcher(matchers);
1699 }
1700 var i;
1701 var support;
1702 var Expr;
1703 var $;
1704 var isXML;
1705 var tokenize;
1706 var compile;
1707 var select;
1708 var outermostContext;
1709 var sortInput;
1710 var ret;
1711 var setDocument;
1712 var document;
1713 var docElem;
1714 var documentIsHTML;
1715 var rbuggyQSA;
1716 var rbuggyMatches;
1717 var matches;
1718 var contains;
1719 /** @type {string} */
1720 var expando = "sizzle" + 1 * new Date;
1721 var el = options.document;
1722 /** @type {number} */
1723 var dirruns = 0;
1724 /** @type {number} */
1725 var done = 0;
1726 var classCache = createCache();
1727 var tokenCache = createCache();
1728 var compilerCache = createCache();
1729 var isUndefined = createCache();
1730 /**
1731 * @param {?} type
1732 * @param {?} string
1733 * @return {?}
1734 */
1735 var time = function(type, string) {
1736 return type === string && (ret = true), 0;
1737 };
1738 /** @type {function(this:Object, *): boolean} */
1739 var hasOwn = {}.hasOwnProperty;
1740 /** @type {!Array} */
1741 var arr = [];
1742 /** @type {function(this:IArrayLike<T>): T} */
1743 var pop = arr.pop;
1744 /** @type {function(this:IArrayLike<T>, ...T): number} */
1745 var push_native = arr.push;
1746 /** @type {function(this:IArrayLike<T>, ...T): number} */
1747 var push = arr.push;
1748 /** @type {function(this:(IArrayLike<T>|string), *=, *=): !Array<T>} */
1749 var slice = arr.slice;
1750 /**
1751 * @param {string} list
1752 * @param {!Object} value
1753 * @return {?}
1754 */
1755 var indexOf = function(list, value) {
1756 /** @type {number} */
1757 var i = 0;
1758 var listLength = list.length;
1759 for (; i < listLength; i++) {
1760 if (list[i] === value) {
1761 return i;
1762 }
1763 }
1764 return -1;
1765 };
1766 /** @type {string} */
1767 var value = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped";
1768 /** @type {string} */
1769 var _test = "[\\x20\\t\\r\\n\\f]";
1770 /** @type {string} */
1771 var escRightBracket = "(?:\\\\[\\da-fA-F]{1,6}" + _test + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\x00-\\x7f])+";
1772 /** @type {string} */
1773 var _end2 = "\\[" + _test + "*(" + escRightBracket + ")(?:" + _test + "*([*^$|!~]?=)" + _test + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + escRightBracket + "))|)" + _test + "*\\]";
1774 /** @type {string} */
1775 var pseudos = ":(" + escRightBracket + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + _end2 + ")*)|.*)\\)|)";
1776 /** @type {!RegExp} */
1777 var entityEscapeRegExp = new RegExp(_test + "+", "g");
1778 /** @type {!RegExp} */
1779 var rtrim = new RegExp("^" + _test + "+|((?:^|[^\\\\])(?:\\\\.)*)" + _test + "+$", "g");
1780 /** @type {!RegExp} */
1781 var chunker = new RegExp("^" + _test + "*," + _test + "*");
1782 /** @type {!RegExp} */
1783 var pattern = new RegExp("^" + _test + "*([>+~]|" + _test + ")" + _test + "*");
1784 /** @type {!RegExp} */
1785 var RE_PSEUDOS = new RegExp(_test + "|>");
1786 /** @type {!RegExp} */
1787 var rpseudo = new RegExp(pseudos);
1788 /** @type {!RegExp} */
1789 var ridentifier = new RegExp("^" + escRightBracket + "$");
1790 var matchExpr = {
1791 ID : new RegExp("^#(" + escRightBracket + ")"),
1792 CLASS : new RegExp("^\\.(" + escRightBracket + ")"),
1793 TAG : new RegExp("^(" + escRightBracket + "|[*])"),
1794 ATTR : new RegExp("^" + _end2),
1795 PSEUDO : new RegExp("^" + pseudos),
1796 CHILD : new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + _test + "*(even|odd|(([+-]|)(\\d*)n|)" + _test + "*(?:([+-]|)" + _test + "*(\\d+)|))" + _test + "*\\)|)", "i"),
1797 bool : new RegExp("^(?:" + value + ")$", "i"),
1798 needsContext : new RegExp("^" + _test + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + _test + "*((?:-\\d)?\\d*)" + _test + "*\\)|)(?=[^-]|$)", "i")
1799 };
1800 /** @type {!RegExp} */
1801 var reKeyword = /HTML$/i;
1802 /** @type {!RegExp} */
1803 var inputNodeNames = /^(?:input|select|textarea|button)$/i;
1804 /** @type {!RegExp} */
1805 var rnoType = /^h\d$/i;
1806 /** @type {!RegExp} */
1807 var rnative = /^[^{]+\{\s*\[native \w/;
1808 /** @type {!RegExp} */
1809 var customSelectorReg = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/;
1810 /** @type {!RegExp} */
1811 var IS_HTML_FRAGMENT = /[+~]/;
1812 /** @type {!RegExp} */
1813 var a = new RegExp("\\\\[\\da-fA-F]{1,6}" + _test + "?|\\\\([^\\r\\n\\f])", "g");
1814 /**
1815 * @param {string} i
1816 * @param {string} match
1817 * @return {?}
1818 */
1819 var data = function(i, match) {
1820 /** @type {number} */
1821 var charCodeUpperA = "0x" + i.slice(1) - 65536;
1822 return match || (charCodeUpperA < 0 ? String.fromCharCode(charCodeUpperA + 65536) : String.fromCharCode(charCodeUpperA >> 10 | 55296, 1023 & charCodeUpperA | 56320));
1823 };
1824 /** @type {!RegExp} */
1825 var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g;
1826 /**
1827 * @param {string} text
1828 * @param {string} ch
1829 * @return {?}
1830 */
1831 var fcssescape = function(text, ch) {
1832 return ch ? "\x00" === text ? "\ufffd" : text.slice(0, -1) + "\\" + text.charCodeAt(text.length - 1).toString(16) + " " : "\\" + text;
1833 };
1834 /**
1835 * @return {undefined}
1836 */
1837 var unloadHandler = function() {
1838 setDocument();
1839 };
1840 var disabledAncestor = addCombinator(function(e) {
1841 return true === e.disabled && "fieldset" === e.nodeName.toLowerCase();
1842 }, {
1843 dir : "parentNode",
1844 next : "legend"
1845 });
1846 try {
1847 push.apply(arr = slice.call(el.childNodes), el.childNodes);
1848 arr[el.childNodes.length].nodeType;
1849 } catch (e) {
1850 push = {
1851 apply : arr.length ? function(target, array) {
1852 push_native.apply(target, slice.call(array));
1853 } : function(array, obj) {
1854 var length = array.length;
1855 /** @type {number} */
1856 var objCursor = 0;
1857 for (; array[length++] = obj[objCursor++];) {
1858 }
1859 /** @type {number} */
1860 array.length = length - 1;
1861 }
1862 };
1863 }
1864 for (i in support = Sizzle.support = {}, isXML = Sizzle.isXML = function(elem) {
1865 var nodeName = elem.namespaceURI;
1866 var xmlNode = (elem.ownerDocument || elem).documentElement;
1867 return !reKeyword.test(nodeName || xmlNode && xmlNode.nodeName || "HTML");
1868 }, setDocument = Sizzle.setDocument = function(root) {
1869 var init;
1870 var subWindow;
1871 var doc = root ? root.ownerDocument || root : el;
1872 return doc != document && 9 === doc.nodeType && doc.documentElement && (docElem = (document = doc).documentElement, documentIsHTML = !isXML(document), el != document && (subWindow = document.defaultView) && subWindow.top !== subWindow && (subWindow.addEventListener ? subWindow.addEventListener("unload", unloadHandler, false) : subWindow.attachEvent && subWindow.attachEvent("onunload", unloadHandler)), support.scope = assert(function(elem) {
1873 return docElem.appendChild(elem).appendChild(document.createElement("div")), "undefined" != typeof elem.querySelectorAll && !elem.querySelectorAll(":scope fieldset div").length;
1874 }), support.attributes = assert(function(elm) {
1875 return elm.className = "i", !elm.getAttribute("className");
1876 }), support.getElementsByTagName = assert(function(testee) {
1877 return testee.appendChild(document.createComment("")), !testee.getElementsByTagName("*").length;
1878 }), support.getElementsByClassName = rnative.test(document.getElementsByClassName), support.getById = assert(function(body) {
1879 return docElem.appendChild(body).id = expando, !document.getElementsByName || !document.getElementsByName(expando).length;
1880 }), support.getById ? (Expr.filter.ID = function(elem) {
1881 var i = elem.replace(a, data);
1882 return function(e) {
1883 return e.getAttribute("id") === i;
1884 };
1885 }, Expr.find.ID = function(elem, context) {
1886 if ("undefined" != typeof context.getElementById && documentIsHTML) {
1887 var c_style = context.getElementById(elem);
1888 return c_style ? [c_style] : [];
1889 }
1890 }) : (Expr.filter.ID = function(elem) {
1891 var string = elem.replace(a, data);
1892 return function(elem) {
1893 var token = "undefined" != typeof elem.getAttributeNode && elem.getAttributeNode("id");
1894 return token && token.value === string;
1895 };
1896 }, Expr.find.ID = function(value, context) {
1897 if ("undefined" != typeof context.getElementById && documentIsHTML) {
1898 var attr;
1899 var r;
1900 var ret;
1901 var tmp = context.getElementById(value);
1902 if (tmp) {
1903 if ((attr = tmp.getAttributeNode("id")) && attr.value === value) {
1904 return [tmp];
1905 }
1906 ret = context.getElementsByName(value);
1907 /** @type {number} */
1908 r = 0;
1909 for (; tmp = ret[r++];) {
1910 if ((attr = tmp.getAttributeNode("id")) && attr.value === value) {
1911 return [tmp];
1912 }
1913 }
1914 }
1915 return [];
1916 }
1917 }), Expr.find.TAG = support.getElementsByTagName ? function(v, g) {
1918 return "undefined" != typeof g.getElementsByTagName ? g.getElementsByTagName(v) : support.qsa ? g.querySelectorAll(v) : void 0;
1919 } : function(selector, o) {
1920 var first;
1921 /** @type {!Array} */
1922 var tmp = [];
1923 /** @type {number} */
1924 var i = 0;
1925 var results = o.getElementsByTagName(selector);
1926 if ("*" === selector) {
1927 for (; first = results[i++];) {
1928 if (1 === first.nodeType) {
1929 tmp.push(first);
1930 }
1931 }
1932 return tmp;
1933 }
1934 return results;
1935 }, Expr.find.CLASS = support.getElementsByClassName && function(l, docDom) {
1936 if ("undefined" != typeof docDom.getElementsByClassName && documentIsHTML) {
1937 return docDom.getElementsByClassName(l);
1938 }
1939 }, rbuggyMatches = [], rbuggyQSA = [], (support.qsa = rnative.test(document.querySelectorAll)) && (assert(function(container) {
1940 var element;
1941 /** @type {string} */
1942 docElem.appendChild(container).innerHTML = "<a id='" + expando + "'></a><select id='" + expando + "-\r\\' msallowcapture=''><option selected=''></option></select>";
1943 if (container.querySelectorAll("[msallowcapture^='']").length) {
1944 rbuggyQSA.push("[*^$]=" + _test + "*(?:''|\"\")");
1945 }
1946 if (!container.querySelectorAll("[selected]").length) {
1947 rbuggyQSA.push("\\[" + _test + "*(?:value|" + value + ")");
1948 }
1949 if (!container.querySelectorAll("[id~=" + expando + "-]").length) {
1950 rbuggyQSA.push("~=");
1951 }
1952 (element = document.createElement("input")).setAttribute("name", "");
1953 container.appendChild(element);
1954 if (!container.querySelectorAll("[name='']").length) {
1955 rbuggyQSA.push("\\[" + _test + "*name" + _test + "*=" + _test + "*(?:''|\"\")");
1956 }
1957 if (!container.querySelectorAll(":checked").length) {
1958 rbuggyQSA.push(":checked");
1959 }
1960 if (!container.querySelectorAll("a#" + expando + "+*").length) {
1961 rbuggyQSA.push(".#.+[+~]");
1962 }
1963 container.querySelectorAll("\\\f");
1964 rbuggyQSA.push("[\\r\\n\\f]");
1965 }), assert(function(el) {
1966 /** @type {string} */
1967 el.innerHTML = "<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";
1968 var input = document.createElement("input");
1969 input.setAttribute("type", "hidden");
1970 el.appendChild(input).setAttribute("name", "D");
1971 if (el.querySelectorAll("[name=d]").length) {
1972 rbuggyQSA.push("name" + _test + "*[*^$|!~]?=");
1973 }
1974 if (2 !== el.querySelectorAll(":enabled").length) {
1975 rbuggyQSA.push(":enabled", ":disabled");
1976 }
1977 /** @type {boolean} */
1978 docElem.appendChild(el).disabled = true;
1979 if (2 !== el.querySelectorAll(":disabled").length) {
1980 rbuggyQSA.push(":enabled", ":disabled");
1981 }
1982 el.querySelectorAll("*,:x");
1983 rbuggyQSA.push(",.*:");
1984 })), (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) && assert(function(el) {
1985 support.disconnectedMatch = matches.call(el, "*");
1986 matches.call(el, "[s!='']:x");
1987 rbuggyMatches.push("!=", pseudos);
1988 }), rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|")), rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|")), init = rnative.test(docElem.compareDocumentPosition), contains = init || rnative.test(docElem.contains) ? function(a, n) {
1989 var name = 9 === a.nodeType ? a.documentElement : a;
1990 var b = n && n.parentNode;
1991 return a === b || !(!b || 1 !== b.nodeType || !(name.contains ? name.contains(b) : a.compareDocumentPosition && 16 & a.compareDocumentPosition(b)));
1992 } : function(selector, elem) {
1993 if (elem) {
1994 for (; elem = elem.parentNode;) {
1995 if (elem === selector) {
1996 return true;
1997 }
1998 }
1999 }
2000 return false;
2001 }, time = init ? function(a, b) {
2002 if (a === b) {
2003 return ret = true, 0;
2004 }
2005 /** @type {number} */
2006 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
2007 return compare || (1 & (compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1) || !support.sortDetached && b.compareDocumentPosition(a) === compare ? a == document || a.ownerDocument == el && contains(el, a) ? -1 : b == document || b.ownerDocument == el && contains(el, b) ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0 : 4 & compare ? -1 : 1);
2008 } : function(a, b) {
2009 if (a === b) {
2010 return ret = true, 0;
2011 }
2012 var cur;
2013 /** @type {number} */
2014 var i = 0;
2015 var aup = a.parentNode;
2016 var bup = b.parentNode;
2017 /** @type {!Array} */
2018 var ap = [a];
2019 /** @type {!Array} */
2020 var bp = [b];
2021 if (!aup || !bup) {
2022 return a == document ? -1 : b == document ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
2023 }
2024 if (aup === bup) {
2025 return siblingCheck(a, b);
2026 }
2027 /** @type {!HTMLElement} */
2028 cur = a;
2029 for (; cur = cur.parentNode;) {
2030 ap.unshift(cur);
2031 }
2032 /** @type {!HTMLElement} */
2033 cur = b;
2034 for (; cur = cur.parentNode;) {
2035 bp.unshift(cur);
2036 }
2037 for (; ap[i] === bp[i];) {
2038 i++;
2039 }
2040 return i ? siblingCheck(ap[i], bp[i]) : ap[i] == el ? -1 : bp[i] == el ? 1 : 0;
2041 }), document;
2042 }, Sizzle.matches = function(expr, set) {
2043 return Sizzle(expr, null, null, set);
2044 }, Sizzle.matchesSelector = function(elem, expr) {
2045 if (setDocument(elem), support.matchesSelector && documentIsHTML && !isUndefined[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
2046 try {
2047 var ret = matches.call(elem, expr);
2048 if (ret || support.disconnectedMatch || elem.document && 11 !== elem.document.nodeType) {
2049 return ret;
2050 }
2051 } catch (e) {
2052 isUndefined(expr, true);
2053 }
2054 }
2055 return 0 < Sizzle(expr, document, null, [elem]).length;
2056 }, Sizzle.contains = function(context, value) {
2057 return (context.ownerDocument || context) != document && setDocument(context), contains(context, value);
2058 }, Sizzle.attr = function(elem, name) {
2059 if ((elem.ownerDocument || elem) != document) {
2060 setDocument(elem);
2061 }
2062 var fn = Expr.attrHandle[name.toLowerCase()];
2063 var val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : void 0;
2064 return void 0 !== val ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
2065 }, Sizzle.escape = function(text) {
2066 return (text + "").replace(rcssescape, fcssescape);
2067 }, Sizzle.error = function(value) {
2068 throw new Error("Syntax error, unrecognized expression: " + value);
2069 }, Sizzle.uniqueSort = function(arr) {
2070 var x;
2071 /** @type {!Array} */
2072 var p = [];
2073 /** @type {number} */
2074 var j = 0;
2075 /** @type {number} */
2076 var i = 0;
2077 if (ret = !support.detectDuplicates, sortInput = !support.sortStable && arr.slice(0), arr.sort(time), ret) {
2078 for (; x = arr[i++];) {
2079 if (x === arr[i]) {
2080 /** @type {number} */
2081 j = p.push(i);
2082 }
2083 }
2084 for (; j--;) {
2085 arr.splice(p[j], 1);
2086 }
2087 }
2088 return sortInput = null, arr;
2089 }, $ = Sizzle.getText = function(d) {
2090 var b;
2091 /** @type {string} */
2092 var s = "";
2093 /** @type {number} */
2094 var e = 0;
2095 var type = d.nodeType;
2096 if (type) {
2097 if (1 === type || 9 === type || 11 === type) {
2098 if ("string" == typeof d.textContent) {
2099 return d.textContent;
2100 }
2101 d = d.firstChild;
2102 for (; d; d = d.nextSibling) {
2103 s = s + $(d);
2104 }
2105 } else {
2106 if (3 === type || 4 === type) {
2107 return d.nodeValue;
2108 }
2109 }
2110 } else {
2111 for (; b = d[e++];) {
2112 s = s + $(b);
2113 }
2114 }
2115 return s;
2116 }, (Expr = Sizzle.selectors = {
2117 cacheLength : 50,
2118 createPseudo : markFunction,
2119 match : matchExpr,
2120 attrHandle : {},
2121 find : {},
2122 relative : {
2123 ">" : {
2124 dir : "parentNode",
2125 first : true
2126 },
2127 " " : {
2128 dir : "parentNode"
2129 },
2130 "+" : {
2131 dir : "previousSibling",
2132 first : true
2133 },
2134 "~" : {
2135 dir : "previousSibling"
2136 }
2137 },
2138 preFilter : {
2139 ATTR : function(result) {
2140 return result[1] = result[1].replace(a, data), result[3] = (result[3] || result[4] || result[5] || "").replace(a, data), "~=" === result[2] && (result[3] = " " + result[3] + " "), result.slice(0, 4);
2141 },
2142 CHILD : function(match) {
2143 return match[1] = match[1].toLowerCase(), "nth" === match[1].slice(0, 3) ? (match[3] || Sizzle.error(match[0]), match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * ("even" === match[3] || "odd" === match[3])), match[5] = +(match[7] + match[8] || "odd" === match[3])) : match[3] && Sizzle.error(match[0]), match;
2144 },
2145 PSEUDO : function(match) {
2146 var excess;
2147 var unquoted = !match[6] && match[2];
2148 return matchExpr.CHILD.test(match[0]) ? null : (match[3] ? match[2] = match[4] || match[5] || "" : unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length) && (match[0] = match[0].slice(0, excess), match[2] = unquoted.slice(0, excess)), match.slice(0, 3));
2149 }
2150 },
2151 filter : {
2152 TAG : function(elem) {
2153 var nodeName = elem.replace(a, data).toLowerCase();
2154 return "*" === elem ? function() {
2155 return true;
2156 } : function(elem) {
2157 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
2158 };
2159 },
2160 CLASS : function(className) {
2161 var pattern = classCache[className + " "];
2162 return pattern || (pattern = new RegExp("(^|" + _test + ")" + className + "(" + _test + "|$)")) && classCache(className, function(e) {
2163 return pattern.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "");
2164 });
2165 },
2166 ATTR : function(name, string, value) {
2167 return function(elem) {
2168 var key = Sizzle.attr(elem, name);
2169 return null == key ? "!=" === string : !string || (key = key + "", "=" === string ? key === value : "!=" === string ? key !== value : "^=" === string ? value && 0 === key.indexOf(value) : "*=" === string ? value && -1 < key.indexOf(value) : "$=" === string ? value && key.slice(-value.length) === value : "~=" === string ? -1 < (" " + key.replace(entityEscapeRegExp, " ") + " ").indexOf(value) : "|=" === string && (key === value || key.slice(0, value.length + 1) === value + "-"));
2170 };
2171 },
2172 CHILD : function(type, what, argument, first, last) {
2173 /** @type {boolean} */
2174 var simple = "nth" !== type.slice(0, 3);
2175 /** @type {boolean} */
2176 var forward = "last" !== type.slice(-4);
2177 /** @type {boolean} */
2178 var ofType = "of-type" === what;
2179 return 1 === first && 0 === last ? function(tplDiv) {
2180 return !!tplDiv.parentNode;
2181 } : function(elem, canCreateDiscussions, xml) {
2182 var cache;
2183 var uniqueCache;
2184 var outerCache;
2185 var node;
2186 var nodeIndex;
2187 var start;
2188 /** @type {string} */
2189 var dir = simple !== forward ? "nextSibling" : "previousSibling";
2190 var parent = elem.parentNode;
2191 var name = ofType && elem.nodeName.toLowerCase();
2192 /** @type {boolean} */
2193 var dependency = !xml && !ofType;
2194 /** @type {boolean} */
2195 var diff = false;
2196 if (parent) {
2197 if (simple) {
2198 for (; dir;) {
2199 /** @type {!Node} */
2200 node = elem;
2201 for (; node = node[dir];) {
2202 if (ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) {
2203 return false;
2204 }
2205 }
2206 /** @type {(boolean|string)} */
2207 start = dir = "only" === type && !start && "nextSibling";
2208 }
2209 return true;
2210 }
2211 if (start = [forward ? parent.firstChild : parent.lastChild], forward && dependency) {
2212 diff = (nodeIndex = (cache = (uniqueCache = (outerCache = (node = parent)[expando] || (node[expando] = {}))[node.uniqueID] || (outerCache[node.uniqueID] = {}))[type] || [])[0] === dirruns && cache[1]) && cache[2];
2213 node = nodeIndex && parent.childNodes[nodeIndex];
2214 for (; node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop();) {
2215 if (1 === node.nodeType && ++diff && node === elem) {
2216 /** @type {!Array} */
2217 uniqueCache[type] = [dirruns, nodeIndex, diff];
2218 break;
2219 }
2220 }
2221 } else {
2222 if (dependency && (diff = nodeIndex = (cache = (uniqueCache = (outerCache = (node = elem)[expando] || (node[expando] = {}))[node.uniqueID] || (outerCache[node.uniqueID] = {}))[type] || [])[0] === dirruns && cache[1]), false === diff) {
2223 for (; node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop();) {
2224 if ((ofType ? node.nodeName.toLowerCase() === name : 1 === node.nodeType) && ++diff && (dependency && ((uniqueCache = (outerCache = node[expando] || (node[expando] = {}))[node.uniqueID] || (outerCache[node.uniqueID] = {}))[type] = [dirruns, diff]), node === elem)) {
2225 break;
2226 }
2227 }
2228 }
2229 }
2230 return (diff = diff - last) === first || diff % first == 0 && 0 <= diff / first;
2231 }
2232 };
2233 },
2234 PSEUDO : function(pseudo, argument) {
2235 var args;
2236 var fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo);
2237 return fn[expando] ? fn(argument) : 1 < fn.length ? (args = [pseudo, pseudo, "", argument], Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function(seed, result) {
2238 var j;
2239 var matched = fn(seed, argument);
2240 var i = matched.length;
2241 for (; i--;) {
2242 /** @type {boolean} */
2243 seed[j = indexOf(seed, matched[i])] = !(result[j] = matched[i]);
2244 }
2245 }) : function(responce) {
2246 return fn(responce, 0, args);
2247 }) : fn;
2248 }
2249 },
2250 pseudos : {
2251 not : markFunction(function(selector) {
2252 /** @type {!Array} */
2253 var a = [];
2254 /** @type {!Array} */
2255 var results = [];
2256 var matcher = compile(selector.replace(rtrim, "$1"));
2257 return matcher[expando] ? markFunction(function(a, queue, n, context) {
2258 var bundle;
2259 var result = matcher(a, null, context, []);
2260 var i = a.length;
2261 for (; i--;) {
2262 if (bundle = result[i]) {
2263 /** @type {boolean} */
2264 a[i] = !(queue[i] = bundle);
2265 }
2266 }
2267 }) : function(sNewObjName, isSlidingUp, context) {
2268 return a[0] = sNewObjName, matcher(a, null, context, results), a[0] = null, !results.pop();
2269 };
2270 }),
2271 has : markFunction(function(selector) {
2272 return function(elem) {
2273 return 0 < Sizzle(selector, elem).length;
2274 };
2275 }),
2276 contains : markFunction(function(text) {
2277 return text = text.replace(a, data), function(element) {
2278 return -1 < (element.textContent || $(element)).indexOf(text);
2279 };
2280 }),
2281 lang : markFunction(function(lang) {
2282 return ridentifier.test(lang || "") || Sizzle.error("unsupported lang: " + lang), lang = lang.replace(a, data).toLowerCase(), function(elem) {
2283 var elemLang;
2284 do {
2285 if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
2286 return (elemLang = elemLang.toLowerCase()) === lang || 0 === elemLang.indexOf(lang + "-");
2287 }
2288 } while ((elem = elem.parentNode) && 1 === elem.nodeType);
2289 return false;
2290 };
2291 }),
2292 target : function(key) {
2293 var charListNotLatin = options.location && options.location.hash;
2294 return charListNotLatin && charListNotLatin.slice(1) === key.id;
2295 },
2296 root : function(elem) {
2297 return elem === docElem;
2298 },
2299 focus : function(elem) {
2300 return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2301 },
2302 enabled : createDisabledPseudo(false),
2303 disabled : createDisabledPseudo(true),
2304 checked : function(elem) {
2305 var custom = elem.nodeName.toLowerCase();
2306 return "input" === custom && !!elem.checked || "option" === custom && !!elem.selected;
2307 },
2308 selected : function(elem) {
2309 return elem.parentNode && elem.parentNode.selectedIndex, true === elem.selected;
2310 },
2311 empty : function(elem) {
2312 elem = elem.firstChild;
2313 for (; elem; elem = elem.nextSibling) {
2314 if (elem.nodeType < 6) {
2315 return false;
2316 }
2317 }
2318 return true;
2319 },
2320 parent : function(elem) {
2321 return !Expr.pseudos.empty(elem);
2322 },
2323 header : function(elem) {
2324 return rnoType.test(elem.nodeName);
2325 },
2326 input : function(target) {
2327 return inputNodeNames.test(target.nodeName);
2328 },
2329 button : function(elem) {
2330 var left = elem.nodeName.toLowerCase();
2331 return "input" === left && "button" === elem.type || "button" === left;
2332 },
2333 text : function(elem) {
2334 var EXT;
2335 return "input" === elem.nodeName.toLowerCase() && "text" === elem.type && (null == (EXT = elem.getAttribute("type")) || "text" === EXT.toLowerCase());
2336 },
2337 first : createPositionalPseudo(function() {
2338 return [0];
2339 }),
2340 last : createPositionalPseudo(function(canCreateDiscussions, isSlidingUp) {
2341 return [isSlidingUp - 1];
2342 }),
2343 eq : createPositionalPseudo(function(canCreateDiscussions, pageHeight, srcY) {
2344 return [srcY < 0 ? srcY + pageHeight : srcY];
2345 }),
2346 even : createPositionalPseudo(function(lastshuffle, inclusiveMin) {
2347 /** @type {number} */
2348 var value = 0;
2349 for (; value < inclusiveMin; value = value + 2) {
2350 lastshuffle.push(value);
2351 }
2352 return lastshuffle;
2353 }),
2354 odd : createPositionalPseudo(function(lastshuffle, inclusiveMin) {
2355 /** @type {number} */
2356 var value = 1;
2357 for (; value < inclusiveMin; value = value + 2) {
2358 lastshuffle.push(value);
2359 }
2360 return lastshuffle;
2361 }),
2362 lt : createPositionalPseudo(function(newNodeLists, total, n) {
2363 var itemNodeList = n < 0 ? n + total : total < n ? total : n;
2364 for (; 0 <= --itemNodeList;) {
2365 newNodeLists.push(itemNodeList);
2366 }
2367 return newNodeLists;
2368 }),
2369 gt : createPositionalPseudo(function(newNodeLists, pageHeight, srcY) {
2370 var itemNodeList = srcY < 0 ? srcY + pageHeight : srcY;
2371 for (; ++itemNodeList < pageHeight;) {
2372 newNodeLists.push(itemNodeList);
2373 }
2374 return newNodeLists;
2375 })
2376 }
2377 }).pseudos.nth = Expr.pseudos.eq, {
2378 radio : true,
2379 checkbox : true,
2380 file : true,
2381 password : true,
2382 image : true
2383 }) {
2384 Expr.pseudos[i] = jQuerify(i);
2385 }
2386 for (i in{
2387 submit : true,
2388 reset : true
2389 }) {
2390 Expr.pseudos[i] = createButtonPseudo(i);
2391 }
2392 return setFilters.prototype = Expr.filters = Expr.pseudos, Expr.setFilters = new setFilters, tokenize = Sizzle.tokenize = function(selector, parseOnly) {
2393 var matched;
2394 var match;
2395 var tokens;
2396 var type;
2397 var soFar;
2398 var groups;
2399 var preFilters;
2400 var cached = tokenCache[selector + " "];
2401 if (cached) {
2402 return parseOnly ? 0 : cached.slice(0);
2403 }
2404 /** @type {string} */
2405 soFar = selector;
2406 /** @type {!Array} */
2407 groups = [];
2408 preFilters = Expr.preFilter;
2409 for (; soFar;) {
2410 for (type in matched && !(match = chunker.exec(soFar)) || (match && (soFar = soFar.slice(match[0].length) || soFar), groups.push(tokens = [])), matched = false, (match = pattern.exec(soFar)) && (matched = match.shift(), tokens.push({
2411 value : matched,
2412 type : match[0].replace(rtrim, " ")
2413 }), soFar = soFar.slice(matched.length)), Expr.filter) {
2414 if (!(!(match = matchExpr[type].exec(soFar)) || preFilters[type] && !(match = preFilters[type](match)))) {
2415 matched = match.shift();
2416 tokens.push({
2417 value : matched,
2418 type : type,
2419 matches : match
2420 });
2421 soFar = soFar.slice(matched.length);
2422 }
2423 }
2424 if (!matched) {
2425 break;
2426 }
2427 }
2428 return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);
2429 }, compile = Sizzle.compile = function(selector, group) {
2430 var i;
2431 var elementMatchers;
2432 var setMatchers;
2433 var bySet;
2434 var byElement;
2435 var superMatcher;
2436 /** @type {!Array} */
2437 var res = [];
2438 /** @type {!Array} */
2439 var cacheStore = [];
2440 var cached = compilerCache[selector + " "];
2441 if (!cached) {
2442 if (!group) {
2443 group = tokenize(selector);
2444 }
2445 i = group.length;
2446 for (; i--;) {
2447 if ((cached = matcherFromTokens(group[i]))[expando]) {
2448 res.push(cached);
2449 } else {
2450 cacheStore.push(cached);
2451 }
2452 }
2453 /** @type {string} */
2454 (cached = compilerCache(selector, (elementMatchers = cacheStore, bySet = 0 < (setMatchers = res).length, byElement = 0 < elementMatchers.length, superMatcher = function(seed, context, xml, results, outermost) {
2455 var elem;
2456 var j;
2457 var matcher;
2458 /** @type {number} */
2459 var matchedCount = 0;
2460 /** @type {string} */
2461 var i = "0";
2462 var unmatched = seed && [];
2463 /** @type {!Array} */
2464 var data = [];
2465 var contextBackup = outermostContext;
2466 var elems = seed || byElement && Expr.find.TAG("*", outermost);
2467 var dirrunsUnique = dirruns = dirruns + (null == contextBackup ? 1 : Math.random() || .1);
2468 var length = elems.length;
2469 if (outermost) {
2470 outermostContext = context == document || context || outermost;
2471 }
2472 for (; i !== length && null != (elem = elems[i]); i++) {
2473 if (byElement && elem) {
2474 /** @type {number} */
2475 j = 0;
2476 if (!(context || elem.ownerDocument == document)) {
2477 setDocument(elem);
2478 /** @type {boolean} */
2479 xml = !documentIsHTML;
2480 }
2481 for (; matcher = elementMatchers[j++];) {
2482 if (matcher(elem, context || document, xml)) {
2483 results.push(elem);
2484 break;
2485 }
2486 }
2487 if (outermost) {
2488 dirruns = dirrunsUnique;
2489 }
2490 }
2491 if (bySet) {
2492 if (elem = !matcher && elem) {
2493 matchedCount--;
2494 }
2495 if (seed) {
2496 unmatched.push(elem);
2497 }
2498 }
2499 }
2500 if (matchedCount = matchedCount + i, bySet && i !== matchedCount) {
2501 /** @type {number} */
2502 j = 0;
2503 for (; matcher = setMatchers[j++];) {
2504 matcher(unmatched, data, context, xml);
2505 }
2506 if (seed) {
2507 if (0 < matchedCount) {
2508 for (; i--;) {
2509 if (!(unmatched[i] || data[i])) {
2510 data[i] = pop.call(results);
2511 }
2512 }
2513 }
2514 data = parse(data);
2515 }
2516 push.apply(results, data);
2517 if (outermost && !seed && 0 < data.length && 1 < matchedCount + setMatchers.length) {
2518 Sizzle.uniqueSort(results);
2519 }
2520 }
2521 return outermost && (dirruns = dirrunsUnique, outermostContext = contextBackup), unmatched;
2522 }, bySet ? markFunction(superMatcher) : superMatcher))).selector = selector;
2523 }
2524 return cached;
2525 }, select = Sizzle.select = function(selector, context, results, seed) {
2526 var i;
2527 var tokens;
2528 var token;
2529 var type;
2530 var f;
2531 /** @type {(!Function|boolean)} */
2532 var compiled = "function" == typeof selector && selector;
2533 var match = !seed && tokenize(selector = compiled.selector || selector);
2534 if (results = results || [], 1 === match.length) {
2535 if (2 < (tokens = match[0] = match[0].slice(0)).length && "ID" === (token = tokens[0]).type && 9 === context.nodeType && documentIsHTML && Expr.relative[tokens[1].type]) {
2536 if (!(context = (Expr.find.ID(token.matches[0].replace(a, data), context) || [])[0])) {
2537 return results;
2538 }
2539 if (compiled) {
2540 context = context.parentNode;
2541 }
2542 selector = selector.slice(tokens.shift().value.length);
2543 }
2544 i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;
2545 for (; i--;) {
2546 if (token = tokens[i], Expr.relative[type = token.type]) {
2547 break;
2548 }
2549 if ((f = Expr.find[type]) && (seed = f(token.matches[0].replace(a, data), IS_HTML_FRAGMENT.test(tokens[0].type) && testContext(context.parentNode) || context))) {
2550 if (tokens.splice(i, 1), !(selector = seed.length && toSelector(tokens))) {
2551 return push.apply(results, seed), results;
2552 }
2553 break;
2554 }
2555 }
2556 }
2557 return (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || IS_HTML_FRAGMENT.test(selector) && testContext(context.parentNode) || context), results;
2558 }, support.sortStable = expando.split("").sort(time).join("") === expando, support.detectDuplicates = !!ret, setDocument(), support.sortDetached = assert(function(html) {
2559 return 1 & html.compareDocumentPosition(document.createElement("fieldset"));
2560 }), assert(function(aItem) {
2561 return aItem.innerHTML = "<a href='#'></a>", "#" === aItem.firstChild.getAttribute("href");
2562 }) || addHandle("type|href|height|width", function(e, t, n) {
2563 if (!n) {
2564 return e.getAttribute(t, "type" === t.toLowerCase() ? 1 : 2);
2565 }
2566 }), support.attributes && assert(function(aItem) {
2567 return aItem.innerHTML = "<input/>", aItem.firstChild.setAttribute("value", ""), "" === aItem.firstChild.getAttribute("value");
2568 }) || addHandle("value", function(src, canCreateDiscussions, n) {
2569 if (!n && "input" === src.nodeName.toLowerCase()) {
2570 return src.defaultValue;
2571 }
2572 }), assert(function(e) {
2573 return null == e.getAttribute("disabled");
2574 }) || addHandle(value, function(elem, name, n) {
2575 var val;
2576 if (!n) {
2577 return true === elem[name] ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
2578 }
2579 }), Sizzle;
2580 }(window);
2581 jQuery.find = Sizzle;
2582 jQuery.expr = Sizzle.selectors;
2583 jQuery.expr[":"] = jQuery.expr.pseudos;
2584 jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
2585 jQuery.text = Sizzle.getText;
2586 jQuery.isXMLDoc = Sizzle.isXML;
2587 jQuery.contains = Sizzle.contains;
2588 jQuery.escapeSelector = Sizzle.escape;
2589 /**
2590 * @param {?} elem
2591 * @param {string} dir
2592 * @param {?} until
2593 * @return {?}
2594 */
2595 var dir = function(elem, dir, until) {
2596 /** @type {!Array} */
2597 var matched = [];
2598 /** @type {boolean} */
2599 var truncate = void 0 !== until;
2600 for (; (elem = elem[dir]) && 9 !== elem.nodeType;) {
2601 if (1 === elem.nodeType) {
2602 if (truncate && jQuery(elem).is(until)) {
2603 break;
2604 }
2605 matched.push(elem);
2606 }
2607 }
2608 return matched;
2609 };
2610 /**
2611 * @param {!Object} node
2612 * @param {!Object} elem
2613 * @return {?}
2614 */
2615 var _sibling = function(node, elem) {
2616 /** @type {!Array} */
2617 var result = [];
2618 for (; node; node = node.nextSibling) {
2619 if (1 === node.nodeType && node !== elem) {
2620 result.push(node);
2621 }
2622 }
2623 return result;
2624 };
2625 var rneedsContext = jQuery.expr.match.needsContext;
2626 /** @type {!RegExp} */
2627 var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;
2628 /**
2629 * @param {string} expr
2630 * @param {!Array} elems
2631 * @param {string} not
2632 * @return {?}
2633 */
2634 jQuery.filter = function(expr, elems, not) {
2635 var elem = elems[0];
2636 return not && (expr = ":not(" + expr + ")"), 1 === elems.length && 1 === elem.nodeType ? jQuery.find.matchesSelector(elem, expr) ? [elem] : [] : jQuery.find.matches(expr, jQuery.grep(elems, function(nodeToInspect) {
2637 return 1 === nodeToInspect.nodeType;
2638 }));
2639 };
2640 jQuery.fn.extend({
2641 find : function(elem) {
2642 var i;
2643 var ret;
2644 var l = this.length;
2645 var self = this;
2646 if ("string" != typeof elem) {
2647 return this.pushStack(jQuery(elem).filter(function() {
2648 /** @type {number} */
2649 i = 0;
2650 for (; i < l; i++) {
2651 if (jQuery.contains(self[i], this)) {
2652 return true;
2653 }
2654 }
2655 }));
2656 }
2657 ret = this.pushStack([]);
2658 /** @type {number} */
2659 i = 0;
2660 for (; i < l; i++) {
2661 jQuery.find(elem, self[i], ret);
2662 }
2663 return 1 < l ? jQuery.uniqueSort(ret) : ret;
2664 },
2665 filter : function(val) {
2666 return this.pushStack(filter(this, val || [], false));
2667 },
2668 not : function(args) {
2669 return this.pushStack(filter(this, args || [], true));
2670 },
2671 is : function(arg) {
2672 return !!filter(this, "string" == typeof arg && rneedsContext.test(arg) ? jQuery(arg) : arg || [], false).length;
2673 }
2674 });
2675 var rootjQuery;
2676 /** @type {!RegExp} */
2677 var customSelectorReg = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;
2678 (jQuery.fn.init = function(selector, context, root) {
2679 var match;
2680 var i;
2681 if (!selector) {
2682 return this;
2683 }
2684 if (root = root || rootjQuery, "string" == typeof selector) {
2685 if (!(match = "<" === selector[0] && ">" === selector[selector.length - 1] && 3 <= selector.length ? [null, selector, null] : customSelectorReg.exec(selector)) || !match[1] && context) {
2686 return !context || context.jquery ? (context || root).find(selector) : this.constructor(context).find(selector);
2687 }
2688 if (match[1]) {
2689 if (context = context instanceof jQuery ? context[0] : context, jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)), rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
2690 for (match in context) {
2691 if (fn(this[match])) {
2692 this[match](context[match]);
2693 } else {
2694 this.attr(match, context[match]);
2695 }
2696 }
2697 }
2698 return this;
2699 }
2700 return (i = document.getElementById(match[2])) && (this[0] = i, this.length = 1), this;
2701 }
2702 return selector.nodeType ? (this[0] = selector, this.length = 1, this) : fn(selector) ? void 0 !== root.ready ? root.ready(selector) : selector(jQuery) : jQuery.makeArray(selector, this);
2703 }).prototype = jQuery.fn;
2704 rootjQuery = jQuery(document);
2705 /** @type {!RegExp} */
2706 var testRxp = /^(?:parents|prev(?:Until|All))/;
2707 var guaranteedUnique = {
2708 children : true,
2709 contents : true,
2710 next : true,
2711 prev : true
2712 };
2713 jQuery.fn.extend({
2714 has : function(name) {
2715 var targets = jQuery(name, this);
2716 var l = targets.length;
2717 return this.filter(function() {
2718 /** @type {number} */
2719 var i = 0;
2720 for (; i < l; i++) {
2721 if (jQuery.contains(this, targets[i])) {
2722 return true;
2723 }
2724 }
2725 });
2726 },
2727 closest : function(selector, context) {
2728 var cur;
2729 /** @type {number} */
2730 var i = 0;
2731 var l = this.length;
2732 /** @type {!Array} */
2733 var ret = [];
2734 var pos = "string" != typeof selector && jQuery(selector);
2735 if (!rneedsContext.test(selector)) {
2736 for (; i < l; i++) {
2737 cur = this[i];
2738 for (; cur && cur !== context; cur = cur.parentNode) {
2739 if (cur.nodeType < 11 && (pos ? -1 < pos.index(cur) : 1 === cur.nodeType && jQuery.find.matchesSelector(cur, selector))) {
2740 ret.push(cur);
2741 break;
2742 }
2743 }
2744 }
2745 }
2746 return this.pushStack(1 < ret.length ? jQuery.uniqueSort(ret) : ret);
2747 },
2748 index : function(elem) {
2749 return elem ? "string" == typeof elem ? indexOf.call(jQuery(elem), this[0]) : indexOf.call(this, elem.jquery ? elem[0] : elem) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
2750 },
2751 add : function(elem, context) {
2752 return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(elem, context))));
2753 },
2754 addBack : function(selector) {
2755 return this.add(null == selector ? this.prevObject : this.prevObject.filter(selector));
2756 }
2757 });
2758 jQuery.each({
2759 parent : function(object) {
2760 var n = object.parentNode;
2761 return n && 11 !== n.nodeType ? n : null;
2762 },
2763 parents : function(elem) {
2764 return dir(elem, "parentNode");
2765 },
2766 parentsUntil : function(elem, i, until) {
2767 return dir(elem, "parentNode", until);
2768 },
2769 next : function(elem) {
2770 return sibling(elem, "nextSibling");
2771 },
2772 prev : function(elem) {
2773 return sibling(elem, "previousSibling");
2774 },
2775 nextAll : function(elem) {
2776 return dir(elem, "nextSibling");
2777 },
2778 prevAll : function(elem) {
2779 return dir(elem, "previousSibling");
2780 },
2781 nextUntil : function(elem, i, until) {
2782 return dir(elem, "nextSibling", until);
2783 },
2784 prevUntil : function(elem, i, until) {
2785 return dir(elem, "previousSibling", until);
2786 },
2787 siblings : function(elem) {
2788 return _sibling((elem.parentNode || {}).firstChild, elem);
2789 },
2790 children : function(elem) {
2791 return _sibling(elem.firstChild);
2792 },
2793 contents : function(elem) {
2794 return null != elem.contentDocument && getProto(elem.contentDocument) ? elem.contentDocument : (callback(elem, "template") && (elem = elem.content || elem), jQuery.merge([], elem.childNodes));
2795 }
2796 }, function(name, i) {
2797 /**
2798 * @param {boolean} index
2799 * @param {boolean} target
2800 * @return {?}
2801 */
2802 jQuery.fn[name] = function(index, target) {
2803 var ret = jQuery.map(this, i, index);
2804 return "Until" !== name.slice(-5) && (target = index), target && "string" == typeof target && (ret = jQuery.filter(target, ret)), 1 < this.length && (guaranteedUnique[name] || jQuery.uniqueSort(ret), testRxp.test(name) && ret.reverse()), this.pushStack(ret);
2805 };
2806 });
2807 /** @type {!RegExp} */
2808 var re = /[^\x20\t\r\n\f]+/g;
2809 /**
2810 * @param {string} options
2811 * @return {?}
2812 */
2813 jQuery.Callbacks = function(options) {
2814 var o;
2815 var s;
2816 options = "string" == typeof options ? (o = options, s = {}, jQuery.each(o.match(re) || [], function(canCreateDiscussions, $token) {
2817 /** @type {boolean} */
2818 s[$token] = true;
2819 }), s) : jQuery.extend({}, options);
2820 var callback;
2821 var c;
2822 var req;
2823 var data;
2824 /** @type {!Array} */
2825 var b = [];
2826 /** @type {!Array} */
2827 var d = [];
2828 /** @type {number} */
2829 var k = -1;
2830 /**
2831 * @return {undefined}
2832 */
2833 var fire = function() {
2834 data = data || options.once;
2835 /** @type {boolean} */
2836 req = callback = true;
2837 for (; d.length; k = -1) {
2838 c = d.shift();
2839 for (; ++k < b.length;) {
2840 if (false === b[k].apply(c[0], c[1]) && options.stopOnFalse) {
2841 k = b.length;
2842 /** @type {boolean} */
2843 c = false;
2844 }
2845 }
2846 }
2847 if (!options.memory) {
2848 /** @type {boolean} */
2849 c = false;
2850 }
2851 /** @type {boolean} */
2852 callback = false;
2853 if (data) {
2854 /** @type {(Array|string)} */
2855 b = c ? [] : "";
2856 }
2857 };
2858 var self = {
2859 add : function() {
2860 return b && (c && !callback && (k = b.length - 1, d.push(c)), function add(callback) {
2861 jQuery.each(callback, function(canCreateDiscussions, name) {
2862 if (fn(name)) {
2863 if (!(options.unique && self.has(name))) {
2864 b.push(name);
2865 }
2866 } else {
2867 if (name && name.length && "string" !== type(name)) {
2868 add(name);
2869 }
2870 }
2871 });
2872 }(arguments), c && !callback && fire()), this;
2873 },
2874 remove : function() {
2875 return jQuery.each(arguments, function(canCreateDiscussions, t) {
2876 var i;
2877 for (; -1 < (i = jQuery.inArray(t, b, i));) {
2878 b.splice(i, 1);
2879 if (i <= k) {
2880 k--;
2881 }
2882 }
2883 }), this;
2884 },
2885 has : function(className) {
2886 return className ? -1 < jQuery.inArray(className, b) : 0 < b.length;
2887 },
2888 empty : function() {
2889 return b && (b = []), this;
2890 },
2891 disable : function() {
2892 return data = d = [], b = c = "", this;
2893 },
2894 disabled : function() {
2895 return !b;
2896 },
2897 lock : function() {
2898 return data = d = [], c || callback || (b = c = ""), this;
2899 },
2900 locked : function() {
2901 return !!data;
2902 },
2903 fireWith : function(context, args) {
2904 return data || (args = [context, (args = args || []).slice ? args.slice() : args], d.push(args), callback || fire()), this;
2905 },
2906 fire : function() {
2907 return self.fireWith(this, arguments), this;
2908 },
2909 fired : function() {
2910 return !!req;
2911 }
2912 };
2913 return self;
2914 };
2915 jQuery.extend({
2916 Deferred : function(func) {
2917 /** @type {!Array} */
2918 var array = [["notify", "progress", jQuery.Callbacks("memory"), jQuery.Callbacks("memory"), 2], ["resolve", "done", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 1, "rejected"]];
2919 /** @type {string} */
2920 var state = "pending";
2921 var promise = {
2922 state : function() {
2923 return state;
2924 },
2925 always : function() {
2926 return deferred.done(arguments).fail(arguments), this;
2927 },
2928 "catch" : function(c) {
2929 return promise.then(null, c);
2930 },
2931 pipe : function() {
2932 /** @type {!Arguments} */
2933 var result = arguments;
2934 return jQuery.Deferred(function(newDefer) {
2935 jQuery.each(array, function(canCreateDiscussions, tuple) {
2936 var callback = fn(result[tuple[4]]) && result[tuple[4]];
2937 deferred[tuple[1]](function() {
2938 var promise = callback && callback.apply(this, arguments);
2939 if (promise && fn(promise.promise)) {
2940 promise.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
2941 } else {
2942 newDefer[tuple[0] + "With"](this, callback ? [promise] : arguments);
2943 }
2944 });
2945 });
2946 /** @type {null} */
2947 result = null;
2948 }).promise();
2949 },
2950 then : function(error, label, x) {
2951 /**
2952 * @param {number} index
2953 * @param {!Object} options
2954 * @param {!Function} callback
2955 * @param {boolean} args
2956 * @return {?}
2957 */
2958 function callback(index, options, callback, args) {
2959 return function() {
2960 var elem = this;
2961 /** @type {!Arguments} */
2962 var values = arguments;
2963 /**
2964 * @return {undefined}
2965 */
2966 var apply = function() {
2967 var value;
2968 var self;
2969 if (!(index < i)) {
2970 if ((value = callback.apply(elem, values)) === options.promise()) {
2971 throw new TypeError("Thenable self-resolution");
2972 }
2973 self = value && ("object" == typeof value || "function" == typeof value) && value.then;
2974 if (fn(self)) {
2975 if (args) {
2976 self.call(value, callback(i, options, failed, args), callback(i, options, data, args));
2977 } else {
2978 i++;
2979 self.call(value, callback(i, options, failed, args), callback(i, options, data, args), callback(i, options, failed, options.notifyWith));
2980 }
2981 } else {
2982 if (callback !== failed) {
2983 elem = void 0;
2984 /** @type {!Array} */
2985 values = [value];
2986 }
2987 (args || options.resolveWith)(elem, values);
2988 }
2989 }
2990 };
2991 /** @type {function(): undefined} */
2992 var method = args ? apply : function() {
2993 try {
2994 apply();
2995 } catch (scheduled) {
2996 if (jQuery.Deferred.exceptionHook) {
2997 jQuery.Deferred.exceptionHook(scheduled, method.stackTrace);
2998 }
2999 if (i <= index + 1) {
3000 if (callback !== data) {
3001 elem = void 0;
3002 /** @type {!Array} */
3003 values = [scheduled];
3004 }
3005 options.rejectWith(elem, values);
3006 }
3007 }
3008 };
3009 if (index) {
3010 method();
3011 } else {
3012 if (jQuery.Deferred.getStackHook) {
3013 method.stackTrace = jQuery.Deferred.getStackHook();
3014 }
3015 window.setTimeout(method);
3016 }
3017 };
3018 }
3019 /** @type {number} */
3020 var i = 0;
3021 return jQuery.Deferred(function(self) {
3022 array[0][3].add(callback(0, self, fn(x) ? x : failed, self.notifyWith));
3023 array[1][3].add(callback(0, self, fn(error) ? error : failed));
3024 array[2][3].add(callback(0, self, fn(label) ? label : data));
3025 }).promise();
3026 },
3027 promise : function(context) {
3028 return null != context ? jQuery.extend(context, promise) : promise;
3029 }
3030 };
3031 var deferred = {};
3032 return jQuery.each(array, function(numRemoved, tuple) {
3033 var list = tuple[2];
3034 var stateString = tuple[5];
3035 promise[tuple[1]] = list.add;
3036 if (stateString) {
3037 list.add(function() {
3038 state = stateString;
3039 }, array[3 - numRemoved][2].disable, array[3 - numRemoved][3].disable, array[0][2].lock, array[0][3].lock);
3040 }
3041 list.add(tuple[3].fire);
3042 /**
3043 * @return {?}
3044 */
3045 deferred[tuple[0]] = function() {
3046 return deferred[tuple[0] + "With"](this === deferred ? void 0 : this, arguments), this;
3047 };
3048 deferred[tuple[0] + "With"] = list.fireWith;
3049 }), promise.promise(deferred), func && func.call(deferred, deferred), deferred;
3050 },
3051 when : function(data) {
3052 /** @type {number} */
3053 var sampleSize = arguments.length;
3054 var i = sampleSize;
3055 /** @type {!Array} */
3056 var elements = Array(i);
3057 /** @type {!Array<?>} */
3058 var args = slice.call(arguments);
3059 var d = jQuery.Deferred();
3060 /**
3061 * @param {undefined} i
3062 * @return {?}
3063 */
3064 var updateFn = function(i) {
3065 return function(value) {
3066 elements[i] = this;
3067 args[i] = 1 < arguments.length ? slice.call(arguments) : value;
3068 if (!--sampleSize) {
3069 d.resolveWith(elements, args);
3070 }
3071 };
3072 };
3073 if (sampleSize <= 1 && (resolve(data, d.done(updateFn(i)).resolve, d.reject, !sampleSize), "pending" === d.state() || fn(args[i] && args[i].then))) {
3074 return d.then();
3075 }
3076 for (; i--;) {
3077 resolve(args[i], updateFn(i), d.reject);
3078 }
3079 return d.promise();
3080 }
3081 });
3082 /** @type {!RegExp} */
3083 var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
3084 /**
3085 * @param {?} error
3086 * @param {?} stack
3087 * @return {undefined}
3088 */
3089 jQuery.Deferred.exceptionHook = function(error, stack) {
3090 if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {
3091 window.console.warn("jQuery.Deferred exception: " + error.message, error.stack, stack);
3092 }
3093 };
3094 /**
3095 * @param {?} error
3096 * @return {undefined}
3097 */
3098 jQuery.readyException = function(error) {
3099 window.setTimeout(function() {
3100 throw error;
3101 });
3102 };
3103 var readyList = jQuery.Deferred();
3104 /**
3105 * @param {?} fn
3106 * @return {?}
3107 */
3108 jQuery.fn.ready = function(fn) {
3109 return readyList.then(fn)["catch"](function(e) {
3110 jQuery.readyException(e);
3111 }), this;
3112 };
3113 jQuery.extend({
3114 isReady : false,
3115 readyWait : 1,
3116 ready : function(user) {
3117 if (!((true === user ? --jQuery.readyWait : jQuery.isReady) || (jQuery.isReady = true) !== user && 0 < --jQuery.readyWait)) {
3118 readyList.resolveWith(document, [jQuery]);
3119 }
3120 }
3121 });
3122 jQuery.ready.then = readyList.then;
3123 if ("complete" === document.readyState || "loading" !== document.readyState && !document.documentElement.doScroll) {
3124 window.setTimeout(jQuery.ready);
3125 } else {
3126 document.addEventListener("DOMContentLoaded", $__jsx_onload);
3127 window.addEventListener("load", $__jsx_onload);
3128 }
3129 /**
3130 * @param {string} elems
3131 * @param {!Function} callback
3132 * @param {string} key
3133 * @param {?} value
3134 * @param {number} chainable
3135 * @param {string} emptyGet
3136 * @param {boolean} raw
3137 * @return {?}
3138 */
3139 var access = function(elems, callback, key, value, chainable, emptyGet, raw) {
3140 /** @type {number} */
3141 var i = 0;
3142 var length = elems.length;
3143 /** @type {boolean} */
3144 var bulk = null == key;
3145 if ("object" === type(key)) {
3146 for (i in chainable = true, key) {
3147 access(elems, callback, i, key[i], true, emptyGet, raw);
3148 }
3149 } else {
3150 if (void 0 !== value && (chainable = true, fn(value) || (raw = true), bulk && (raw ? (callback.call(elems, value), callback = null) : (bulk = callback, callback = function(elem, t, value) {
3151 return bulk.call(jQuery(elem), value);
3152 })), callback)) {
3153 for (; i < length; i++) {
3154 callback(elems[i], key, raw ? value : value.call(elems[i], i, callback(elems[i], key)));
3155 }
3156 }
3157 }
3158 return chainable ? elems : bulk ? callback.call(elems) : length ? callback(elems[0], key) : emptyGet;
3159 };
3160 /** @type {!RegExp} */
3161 var _kerningNamesHash_escapeEscape = /^-ms-/;
3162 /** @type {!RegExp} */
3163 var rcharset = /-([a-z])/g;
3164 /**
3165 * @param {!Object} elem
3166 * @return {?}
3167 */
3168 var acceptData = function(elem) {
3169 return 1 === elem.nodeType || 9 === elem.nodeType || !+elem.nodeType;
3170 };
3171 /** @type {number} */
3172 Data.uid = 1;
3173 Data.prototype = {
3174 cache : function(elem) {
3175 var value = elem[this.expando];
3176 return value || (value = {}, acceptData(elem) && (elem.nodeType ? elem[this.expando] = value : Object.defineProperty(elem, this.expando, {
3177 value : value,
3178 configurable : true
3179 }))), value;
3180 },
3181 set : function(key, data, type) {
3182 var prop;
3183 var cache = this.cache(key);
3184 if ("string" == typeof data) {
3185 /** @type {string} */
3186 cache[camelCase(data)] = type;
3187 } else {
3188 for (prop in data) {
3189 cache[camelCase(prop)] = data[prop];
3190 }
3191 }
3192 return cache;
3193 },
3194 get : function(owner, key) {
3195 return void 0 === key ? this.cache(owner) : owner[this.expando] && owner[this.expando][camelCase(key)];
3196 },
3197 access : function(value, fn, o) {
3198 return void 0 === fn || fn && "string" == typeof fn && void 0 === o ? this.get(value, fn) : (this.set(value, fn, o), void 0 !== o ? o : fn);
3199 },
3200 remove : function(owner, name) {
3201 var i;
3202 var cache = owner[this.expando];
3203 if (void 0 !== cache) {
3204 if (void 0 !== name) {
3205 i = (name = Array.isArray(name) ? name.map(camelCase) : (name = camelCase(name)) in cache ? [name] : name.match(re) || []).length;
3206 for (; i--;) {
3207 delete cache[name[i]];
3208 }
3209 }
3210 if (void 0 === name || jQuery.isEmptyObject(cache)) {
3211 if (owner.nodeType) {
3212 owner[this.expando] = void 0;
3213 } else {
3214 delete owner[this.expando];
3215 }
3216 }
3217 }
3218 },
3219 hasData : function(owner) {
3220 var cache = owner[this.expando];
3221 return void 0 !== cache && !jQuery.isEmptyObject(cache);
3222 }
3223 };
3224 var dataPriv = new Data;
3225 var self = new Data;
3226 /** @type {!RegExp} */
3227 var contribRegex = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/;
3228 /** @type {!RegExp} */
3229 var dashExpr = /[A-Z]/g;
3230 jQuery.extend({
3231 hasData : function(elem) {
3232 return self.hasData(elem) || dataPriv.hasData(elem);
3233 },
3234 data : function(elem, name, value) {
3235 return self.access(elem, name, value);
3236 },
3237 removeData : function(elem, name) {
3238 self.remove(elem, name);
3239 },
3240 _data : function(elem, name, data) {
3241 return dataPriv.access(elem, name, data);
3242 },
3243 _removeData : function(elem, name) {
3244 dataPriv.remove(elem, name);
3245 }
3246 });
3247 jQuery.fn.extend({
3248 data : function(value, args) {
3249 var i;
3250 var name;
3251 var data;
3252 var elem = this[0];
3253 var attrs = elem && elem.attributes;
3254 if (void 0 === value) {
3255 if (this.length && (data = self.get(elem), 1 === elem.nodeType && !dataPriv.get(elem, "hasDataAttrs"))) {
3256 i = attrs.length;
3257 for (; i--;) {
3258 if (attrs[i] && 0 === (name = attrs[i].name).indexOf("data-")) {
3259 name = camelCase(name.slice(5));
3260 func(elem, name, data[name]);
3261 }
3262 }
3263 dataPriv.set(elem, "hasDataAttrs", true);
3264 }
3265 return data;
3266 }
3267 return "object" == typeof value ? this.each(function() {
3268 self.set(this, value);
3269 }) : access(this, function(name) {
3270 var message;
3271 if (elem && void 0 === name) {
3272 return void 0 !== (message = self.get(elem, value)) ? message : void 0 !== (message = func(elem, value)) ? message : void 0;
3273 }
3274 this.each(function() {
3275 self.set(this, value, name);
3276 });
3277 }, null, args, 1 < arguments.length, null, true);
3278 },
3279 removeData : function(callback) {
3280 return this.each(function() {
3281 self.remove(this, callback);
3282 });
3283 }
3284 });
3285 jQuery.extend({
3286 queue : function(elem, type, data) {
3287 var q;
3288 if (elem) {
3289 return type = (type || "fx") + "queue", q = dataPriv.get(elem, type), data && (!q || Array.isArray(data) ? q = dataPriv.access(elem, type, jQuery.makeArray(data)) : q.push(data)), q || [];
3290 }
3291 },
3292 dequeue : function(elem, type) {
3293 type = type || "fx";
3294 var queue = jQuery.queue(elem, type);
3295 var i = queue.length;
3296 var _self = queue.shift();
3297 var node = jQuery._queueHooks(elem, type);
3298 if ("inprogress" === _self) {
3299 _self = queue.shift();
3300 i--;
3301 }
3302 if (_self) {
3303 if ("fx" === type) {
3304 queue.unshift("inprogress");
3305 }
3306 delete node.stop;
3307 _self.call(elem, function() {
3308 jQuery.dequeue(elem, type);
3309 }, node);
3310 }
3311 if (!i && node) {
3312 node.empty.fire();
3313 }
3314 },
3315 _queueHooks : function(elem, type) {
3316 /** @type {string} */
3317 var key = type + "queueHooks";
3318 return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
3319 empty : jQuery.Callbacks("once memory").add(function() {
3320 dataPriv.remove(elem, [type + "queue", key]);
3321 })
3322 });
3323 }
3324 });
3325 jQuery.fn.extend({
3326 queue : function(type, data) {
3327 /** @type {number} */
3328 var setter = 2;
3329 return "string" != typeof type && (data = type, type = "fx", setter--), arguments.length < setter ? jQuery.queue(this[0], type) : void 0 === data ? this : this.each(function() {
3330 var queue = jQuery.queue(this, type, data);
3331 jQuery._queueHooks(this, type);
3332 if ("fx" === type && "inprogress" !== queue[0]) {
3333 jQuery.dequeue(this, type);
3334 }
3335 });
3336 },
3337 dequeue : function(type) {
3338 return this.each(function() {
3339 jQuery.dequeue(this, type);
3340 });
3341 },
3342 clearQueue : function(type) {
3343 return this.queue(type || "fx", []);
3344 },
3345 promise : function(type, result) {
3346 var sel;
3347 /** @type {number} */
3348 var r = 1;
3349 var defer = jQuery.Deferred();
3350 var elements = this;
3351 var i = this.length;
3352 /**
3353 * @return {undefined}
3354 */
3355 var resolve = function() {
3356 if (!--r) {
3357 defer.resolveWith(elements, [elements]);
3358 }
3359 };
3360 if ("string" != typeof type) {
3361 /** @type {!Object} */
3362 result = type;
3363 type = void 0;
3364 }
3365 type = type || "fx";
3366 for (; i--;) {
3367 if ((sel = dataPriv.get(elements[i], type + "queueHooks")) && sel.empty) {
3368 r++;
3369 sel.empty.add(resolve);
3370 }
3371 }
3372 return resolve(), defer.promise(result);
3373 }
3374 });
3375 /** @type {string} */
3376 var FSSource = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
3377 /** @type {!RegExp} */
3378 var regex = new RegExp("^(?:([+-])=|)(" + FSSource + ")([a-z%]*)$", "i");
3379 /** @type {!Array} */
3380 var cssExpand = ["Top", "Right", "Bottom", "Left"];
3381 var node = document.documentElement;
3382 /**
3383 * @param {!Object} elem
3384 * @return {?}
3385 */
3386 var test = function(elem) {
3387 return jQuery.contains(elem.ownerDocument, elem);
3388 };
3389 var _prefName = {
3390 composed : true
3391 };
3392 if (node.getRootNode) {
3393 /**
3394 * @param {!Object} p
3395 * @return {?}
3396 */
3397 test = function(p) {
3398 return jQuery.contains(p.ownerDocument, p) || p.getRootNode(_prefName) === p.ownerDocument;
3399 };
3400 }
3401 /**
3402 * @param {!Element} el
3403 * @param {!Element} root
3404 * @return {?}
3405 */
3406 var isHidden = function(el, root) {
3407 return "none" === (el = root || el).style.display || "" === el.style.display && test(el) && "none" === jQuery.css(el, "display");
3408 };
3409 var elemdisplay = {};
3410 jQuery.fn.extend({
3411 show : function() {
3412 return show(this, true);
3413 },
3414 hide : function() {
3415 return show(this);
3416 },
3417 toggle : function(state) {
3418 return "boolean" == typeof state ? state ? this.show() : this.hide() : this.each(function() {
3419 if (isHidden(this)) {
3420 jQuery(this).show();
3421 } else {
3422 jQuery(this).hide();
3423 }
3424 });
3425 }
3426 });
3427 var content_elem;
3428 var input;
3429 /** @type {!RegExp} */
3430 var app = /^(?:checkbox|radio)$/i;
3431 /** @type {!RegExp} */
3432 var me = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
3433 /** @type {!RegExp} */
3434 var opacityRe = /^$|^module$|\/(?:java|ecma)script/i;
3435 content_elem = document.createDocumentFragment().appendChild(document.createElement("div"));
3436 (input = document.createElement("input")).setAttribute("type", "radio");
3437 input.setAttribute("checked", "checked");
3438 input.setAttribute("name", "t");
3439 content_elem.appendChild(input);
3440 support.checkClone = content_elem.cloneNode(true).cloneNode(true).lastChild.checked;
3441 /** @type {string} */
3442 content_elem.innerHTML = "<textarea>x</textarea>";
3443 /** @type {boolean} */
3444 support.noCloneChecked = !!content_elem.cloneNode(true).lastChild.defaultValue;
3445 /** @type {string} */
3446 content_elem.innerHTML = "<option></option>";
3447 /** @type {boolean} */
3448 support.option = !!content_elem.lastChild;
3449 var wrapMap = {
3450 thead : [1, "<table>", "</table>"],
3451 col : [2, "<table><colgroup>", "</colgroup></table>"],
3452 tr : [2, "<table><tbody>", "</tbody></table>"],
3453 td : [3, "<table><tbody><tr>", "</tr></tbody></table>"],
3454 _default : [0, "", ""]
3455 };
3456 /** @type {!Array} */
3457 wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
3458 /** @type {!Array} */
3459 wrapMap.th = wrapMap.td;
3460 if (!support.option) {
3461 /** @type {!Array} */
3462 wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
3463 }
3464 /** @type {!RegExp} */
3465 var re_commas = /<|&#?\w+;/;
3466 /** @type {!RegExp} */
3467 var receivedErrorEvents = /^key/;
3468 /** @type {!RegExp} */
3469 var receivedOpenEvents = /^(?:mouse|pointer|contextmenu|drag|drop)|click/;
3470 /** @type {!RegExp} */
3471 var reg = /^([^.]*)(?:\.(.+)|)/;
3472 jQuery.event = {
3473 global : {},
3474 add : function(elem, item, handler, data, selector) {
3475 var handleObjIn;
3476 var eventHandle;
3477 var BROWSER_ENGINES;
3478 var events;
3479 var i;
3480 var handleObj;
3481 var special;
3482 var handlers;
3483 var type;
3484 var h;
3485 var origType;
3486 var elemData = dataPriv.get(elem);
3487 if (acceptData(elem)) {
3488 if (handler.handler) {
3489 handler = (handleObjIn = handler).handler;
3490 selector = handleObjIn.selector;
3491 }
3492 if (selector) {
3493 jQuery.find.matchesSelector(node, selector);
3494 }
3495 if (!handler.guid) {
3496 /** @type {number} */
3497 handler.guid = jQuery.guid++;
3498 }
3499 if (!(events = elemData.events)) {
3500 /** @type {!Object} */
3501 events = elemData.events = Object.create(null);
3502 }
3503 if (!(eventHandle = elemData.handle)) {
3504 /** @type {function(!Object): ?} */
3505 eventHandle = elemData.handle = function(e) {
3506 return "undefined" != typeof jQuery && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : void 0;
3507 };
3508 }
3509 i = (item = (item || "").match(re) || [""]).length;
3510 for (; i--;) {
3511 type = origType = (BROWSER_ENGINES = reg.exec(item[i]) || [])[1];
3512 h = (BROWSER_ENGINES[2] || "").split(".").sort();
3513 if (type) {
3514 special = jQuery.event.special[type] || {};
3515 type = (selector ? special.delegateType : special.bindType) || type;
3516 special = jQuery.event.special[type] || {};
3517 handleObj = jQuery.extend({
3518 type : type,
3519 origType : origType,
3520 data : data,
3521 handler : handler,
3522 guid : handler.guid,
3523 selector : selector,
3524 needsContext : selector && jQuery.expr.match.needsContext.test(selector),
3525 namespace : h.join(".")
3526 }, handleObjIn);
3527 if (!(handlers = events[type])) {
3528 /** @type {number} */
3529 (handlers = events[type] = []).delegateCount = 0;
3530 if (!(special.setup && false !== special.setup.call(elem, data, h, eventHandle))) {
3531 if (elem.addEventListener) {
3532 elem.addEventListener(type, eventHandle);
3533 }
3534 }
3535 }
3536 if (special.add) {
3537 special.add.call(elem, handleObj);
3538 if (!handleObj.handler.guid) {
3539 handleObj.handler.guid = handler.guid;
3540 }
3541 }
3542 if (selector) {
3543 handlers.splice(handlers.delegateCount++, 0, handleObj);
3544 } else {
3545 handlers.push(handleObj);
3546 }
3547 /** @type {boolean} */
3548 jQuery.event.global[type] = true;
3549 }
3550 }
3551 }
3552 },
3553 remove : function(elem, data, fn, selector, i) {
3554 var j;
3555 var origCount;
3556 var tmp;
3557 var events;
3558 var i;
3559 var handleObj;
3560 var special;
3561 var handlers;
3562 var type;
3563 var h;
3564 var level;
3565 var elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
3566 if (elemData && (events = elemData.events)) {
3567 i = (data = (data || "").match(re) || [""]).length;
3568 for (; i--;) {
3569 if (type = level = (tmp = reg.exec(data[i]) || [])[1], h = (tmp[2] || "").split(".").sort(), type) {
3570 special = jQuery.event.special[type] || {};
3571 handlers = events[type = (selector ? special.delegateType : special.bindType) || type] || [];
3572 tmp = tmp[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)");
3573 origCount = j = handlers.length;
3574 for (; j--;) {
3575 handleObj = handlers[j];
3576 if (!(!i && level !== handleObj.origType || fn && fn.guid !== handleObj.guid || tmp && !tmp.test(handleObj.namespace) || selector && selector !== handleObj.selector && ("**" !== selector || !handleObj.selector))) {
3577 handlers.splice(j, 1);
3578 if (handleObj.selector) {
3579 handlers.delegateCount--;
3580 }
3581 if (special.remove) {
3582 special.remove.call(elem, handleObj);
3583 }
3584 }
3585 }
3586 if (origCount && !handlers.length) {
3587 if (!(special.teardown && false !== special.teardown.call(elem, h, elemData.handle))) {
3588 jQuery.removeEvent(elem, type, elemData.handle);
3589 }
3590 delete events[type];
3591 }
3592 } else {
3593 for (type in events) {
3594 jQuery.event.remove(elem, type + data[i], fn, selector, true);
3595 }
3596 }
3597 }
3598 if (jQuery.isEmptyObject(events)) {
3599 dataPriv.remove(elem, "handle events");
3600 }
3601 }
3602 },
3603 dispatch : function(e) {
3604 var i;
3605 var j;
3606 var ret;
3607 var matched;
3608 var handleObj;
3609 var handlerQueue;
3610 /** @type {!Array} */
3611 var args = new Array(arguments.length);
3612 var event = jQuery.event.fix(e);
3613 var handlers = (dataPriv.get(this, "events") || Object.create(null))[event.type] || [];
3614 var special = jQuery.event.special[event.type] || {};
3615 args[0] = event;
3616 /** @type {number} */
3617 i = 1;
3618 for (; i < arguments.length; i++) {
3619 args[i] = arguments[i];
3620 }
3621 if (event.delegateTarget = this, !special.preDispatch || false !== special.preDispatch.call(this, event)) {
3622 handlerQueue = jQuery.event.handlers.call(this, event, handlers);
3623 /** @type {number} */
3624 i = 0;
3625 for (; (matched = handlerQueue[i++]) && !event.isPropagationStopped();) {
3626 event.currentTarget = matched.elem;
3627 /** @type {number} */
3628 j = 0;
3629 for (; (handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped();) {
3630 if (!(event.rnamespace && false !== handleObj.namespace && !event.rnamespace.test(handleObj.namespace))) {
3631 event.handleObj = handleObj;
3632 event.data = handleObj.data;
3633 if (void 0 !== (ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args)) && false === (event.result = ret)) {
3634 event.preventDefault();
3635 event.stopPropagation();
3636 }
3637 }
3638 }
3639 }
3640 return special.postDispatch && special.postDispatch.call(this, event), event.result;
3641 }
3642 },
3643 handlers : function(event, handlers) {
3644 var i;
3645 var handleObj;
3646 var name;
3647 var matches;
3648 var fieldOrdinals;
3649 /** @type {!Array} */
3650 var handlerQueue = [];
3651 var delegateCount = handlers.delegateCount;
3652 var cur = event.target;
3653 if (delegateCount && cur.nodeType && !("click" === event.type && 1 <= event.button)) {
3654 for (; cur !== this; cur = cur.parentNode || this) {
3655 if (1 === cur.nodeType && ("click" !== event.type || true !== cur.disabled)) {
3656 /** @type {!Array} */
3657 matches = [];
3658 fieldOrdinals = {};
3659 /** @type {number} */
3660 i = 0;
3661 for (; i < delegateCount; i++) {
3662 if (void 0 === fieldOrdinals[name = (handleObj = handlers[i]).selector + " "]) {
3663 fieldOrdinals[name] = handleObj.needsContext ? -1 < jQuery(name, this).index(cur) : jQuery.find(name, this, null, [cur]).length;
3664 }
3665 if (fieldOrdinals[name]) {
3666 matches.push(handleObj);
3667 }
3668 }
3669 if (matches.length) {
3670 handlerQueue.push({
3671 elem : cur,
3672 handlers : matches
3673 });
3674 }
3675 }
3676 }
3677 }
3678 return cur = this, delegateCount < handlers.length && handlerQueue.push({
3679 elem : cur,
3680 handlers : handlers.slice(delegateCount)
3681 }), handlerQueue;
3682 },
3683 addProp : function(name, hook) {
3684 Object.defineProperty(jQuery.Event.prototype, name, {
3685 enumerable : true,
3686 configurable : true,
3687 get : fn(hook) ? function() {
3688 if (this.originalEvent) {
3689 return hook(this.originalEvent);
3690 }
3691 } : function() {
3692 if (this.originalEvent) {
3693 return this.originalEvent[name];
3694 }
3695 },
3696 set : function(type) {
3697 Object.defineProperty(this, name, {
3698 enumerable : true,
3699 configurable : true,
3700 writable : true,
3701 value : type
3702 });
3703 }
3704 });
3705 },
3706 fix : function(originalEvent) {
3707 return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);
3708 },
3709 special : {
3710 load : {
3711 noBubble : true
3712 },
3713 click : {
3714 setup : function(options) {
3715 var target = this || options;
3716 return app.test(target.type) && target.click && callback(target, "input") && handler(target, "click", returnTrue), false;
3717 },
3718 trigger : function(event) {
3719 var type = this || event;
3720 return app.test(type.type) && type.click && callback(type, "input") && handler(type, "click"), true;
3721 },
3722 _default : function(options) {
3723 var elem = options.target;
3724 return app.test(elem.type) && elem.click && callback(elem, "input") && dataPriv.get(elem, "click") || callback(elem, "a");
3725 }
3726 },
3727 beforeunload : {
3728 postDispatch : function(event) {
3729 if (void 0 !== event.result && event.originalEvent) {
3730 event.originalEvent.returnValue = event.result;
3731 }
3732 }
3733 }
3734 }
3735 };
3736 /**
3737 * @param {!Object} elem
3738 * @param {!Object} type
3739 * @param {?} fn
3740 * @return {undefined}
3741 */
3742 jQuery.removeEvent = function(elem, type, fn) {
3743 if (elem.removeEventListener) {
3744 elem.removeEventListener(type, fn);
3745 }
3746 };
3747 /**
3748 * @param {!Object} src
3749 * @param {!Object} props
3750 * @return {?}
3751 */
3752 jQuery.Event = function(src, props) {
3753 if (!(this instanceof jQuery.Event)) {
3754 return new jQuery.Event(src, props);
3755 }
3756 if (src && src.type) {
3757 /** @type {!Object} */
3758 this.originalEvent = src;
3759 this.type = src.type;
3760 /** @type {function(): ?} */
3761 this.isDefaultPrevented = src.defaultPrevented || void 0 === src.defaultPrevented && false === src.returnValue ? returnTrue : returnFalse;
3762 this.target = src.target && 3 === src.target.nodeType ? src.target.parentNode : src.target;
3763 this.currentTarget = src.currentTarget;
3764 this.relatedTarget = src.relatedTarget;
3765 } else {
3766 /** @type {!Object} */
3767 this.type = src;
3768 }
3769 if (props) {
3770 jQuery.extend(this, props);
3771 }
3772 this.timeStamp = src && src.timeStamp || Date.now();
3773 /** @type {boolean} */
3774 this[jQuery.expando] = true;
3775 };
3776 jQuery.Event.prototype = {
3777 constructor : jQuery.Event,
3778 isDefaultPrevented : returnFalse,
3779 isPropagationStopped : returnFalse,
3780 isImmediatePropagationStopped : returnFalse,
3781 isSimulated : false,
3782 preventDefault : function() {
3783 var e = this.originalEvent;
3784 /** @type {function(): ?} */
3785 this.isDefaultPrevented = returnTrue;
3786 if (e && !this.isSimulated) {
3787 e.preventDefault();
3788 }
3789 },
3790 stopPropagation : function() {
3791 var e = this.originalEvent;
3792 /** @type {function(): ?} */
3793 this.isPropagationStopped = returnTrue;
3794 if (e && !this.isSimulated) {
3795 e.stopPropagation();
3796 }
3797 },
3798 stopImmediatePropagation : function() {
3799 var e = this.originalEvent;
3800 /** @type {function(): ?} */
3801 this.isImmediatePropagationStopped = returnTrue;
3802 if (e && !this.isSimulated) {
3803 e.stopImmediatePropagation();
3804 }
3805 this.stopPropagation();
3806 }
3807 };
3808 jQuery.each({
3809 altKey : true,
3810 bubbles : true,
3811 cancelable : true,
3812 changedTouches : true,
3813 ctrlKey : true,
3814 detail : true,
3815 eventPhase : true,
3816 metaKey : true,
3817 pageX : true,
3818 pageY : true,
3819 shiftKey : true,
3820 view : true,
3821 "char" : true,
3822 code : true,
3823 charCode : true,
3824 key : true,
3825 keyCode : true,
3826 button : true,
3827 buttons : true,
3828 clientX : true,
3829 clientY : true,
3830 offsetX : true,
3831 offsetY : true,
3832 pointerId : true,
3833 pointerType : true,
3834 screenX : true,
3835 screenY : true,
3836 targetTouches : true,
3837 toElement : true,
3838 touches : true,
3839 which : function(e) {
3840 var button = e.button;
3841 return null == e.which && receivedErrorEvents.test(e.type) ? null != e.charCode ? e.charCode : e.keyCode : !e.which && void 0 !== button && receivedOpenEvents.test(e.type) ? 1 & button ? 1 : 2 & button ? 3 : 4 & button ? 2 : 0 : e.which;
3842 }
3843 }, jQuery.event.addProp);
3844 jQuery.each({
3845 focus : "focusin",
3846 blur : "focusout"
3847 }, function(name, fix) {
3848 jQuery.event.special[name] = {
3849 setup : function() {
3850 return handler(this, name, raw), false;
3851 },
3852 trigger : function() {
3853 return handler(this, name), true;
3854 },
3855 delegateType : fix
3856 };
3857 });
3858 jQuery.each({
3859 mouseenter : "mouseover",
3860 mouseleave : "mouseout",
3861 pointerenter : "pointerover",
3862 pointerleave : "pointerout"
3863 }, function(orig, fix) {
3864 jQuery.event.special[orig] = {
3865 delegateType : fix,
3866 bindType : fix,
3867 handle : function(event) {
3868 var _ref12;
3869 var target = event.relatedTarget;
3870 var handleObj = event.handleObj;
3871 return target && (target === this || jQuery.contains(this, target)) || (event.type = handleObj.origType, _ref12 = handleObj.handler.apply(this, arguments), event.type = fix), _ref12;
3872 }
3873 };
3874 });
3875 jQuery.fn.extend({
3876 on : function(type, name, callback, target) {
3877 return get(this, type, name, callback, target);
3878 },
3879 one : function(data, callback, type, res) {
3880 return get(this, data, callback, type, res, 1);
3881 },
3882 off : function(types, callback, fn) {
3883 var handleObj;
3884 var type;
3885 if (types && types.preventDefault && types.handleObj) {
3886 return handleObj = types.handleObj, jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler), this;
3887 }
3888 if ("object" == typeof types) {
3889 for (type in types) {
3890 this.off(type, callback, types[type]);
3891 }
3892 return this;
3893 }
3894 return false !== callback && "function" != typeof callback || (fn = callback, callback = void 0), false === fn && (fn = returnFalse), this.each(function() {
3895 jQuery.event.remove(this, types, fn, callback);
3896 });
3897 }
3898 });
3899 /** @type {!RegExp} */
3900 var _tacet = /<script|<style|<link/i;
3901 /** @type {!RegExp} */
3902 var partten = /checked\s*(?:[^=]|=\s*.checked.)/i;
3903 /** @type {!RegExp} */
3904 var query = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
3905 jQuery.extend({
3906 htmlPrefilter : function(html) {
3907 return html;
3908 },
3909 clone : function(elem, n, array) {
3910 var i;
3911 var l;
3912 var srcElements;
3913 var destElements;
3914 var o;
3915 var el;
3916 var undefined;
3917 var clone = elem.cloneNode(true);
3918 var inPage = test(elem);
3919 if (!(support.noCloneChecked || 1 !== elem.nodeType && 11 !== elem.nodeType || jQuery.isXMLDoc(elem))) {
3920 destElements = getAll(clone);
3921 /** @type {number} */
3922 i = 0;
3923 l = (srcElements = getAll(elem)).length;
3924 for (; i < l; i++) {
3925 o = srcElements[i];
3926 el = destElements[i];
3927 void 0;
3928 if ("input" === (undefined = el.nodeName.toLowerCase()) && app.test(o.type)) {
3929 el.checked = o.checked;
3930 } else {
3931 if (!("input" !== undefined && "textarea" !== undefined)) {
3932 el.defaultValue = o.defaultValue;
3933 }
3934 }
3935 }
3936 }
3937 if (n) {
3938 if (array) {
3939 srcElements = srcElements || getAll(elem);
3940 destElements = destElements || getAll(clone);
3941 /** @type {number} */
3942 i = 0;
3943 l = srcElements.length;
3944 for (; i < l; i++) {
3945 cloneCopyEvent(srcElements[i], destElements[i]);
3946 }
3947 } else {
3948 cloneCopyEvent(elem, clone);
3949 }
3950 }
3951 return 0 < (destElements = getAll(clone, "script")).length && setGlobalEval(destElements, !inPage && getAll(elem, "script")), clone;
3952 },
3953 cleanData : function(elems) {
3954 var data;
3955 var elem;
3956 var type;
3957 var special = jQuery.event.special;
3958 /** @type {number} */
3959 var i = 0;
3960 for (; void 0 !== (elem = elems[i]); i++) {
3961 if (acceptData(elem)) {
3962 if (data = elem[dataPriv.expando]) {
3963 if (data.events) {
3964 for (type in data.events) {
3965 if (special[type]) {
3966 jQuery.event.remove(elem, type);
3967 } else {
3968 jQuery.removeEvent(elem, type, data.handle);
3969 }
3970 }
3971 }
3972 elem[dataPriv.expando] = void 0;
3973 }
3974 if (elem[self.expando]) {
3975 elem[self.expando] = void 0;
3976 }
3977 }
3978 }
3979 }
3980 });
3981 jQuery.fn.extend({
3982 detach : function(selector) {
3983 return remove(this, selector, true);
3984 },
3985 remove : function(key) {
3986 return remove(this, key);
3987 },
3988 text : function(value) {
3989 return access(this, function(value) {
3990 return void 0 === value ? jQuery.text(this) : this.empty().each(function() {
3991 if (!(1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType)) {
3992 this.textContent = value;
3993 }
3994 });
3995 }, null, value, arguments.length);
3996 },
3997 append : function() {
3998 return domManip(this, arguments, function(elem) {
3999 if (!(1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType)) {
4000 manipulationTarget(this, elem).appendChild(elem);
4001 }
4002 });
4003 },
4004 prepend : function() {
4005 return domManip(this, arguments, function(elem) {
4006 if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) {
4007 var target = manipulationTarget(this, elem);
4008 target.insertBefore(elem, target.firstChild);
4009 }
4010 });
4011 },
4012 before : function() {
4013 return domManip(this, arguments, function(elem) {
4014 if (this.parentNode) {
4015 this.parentNode.insertBefore(elem, this);
4016 }
4017 });
4018 },
4019 after : function() {
4020 return domManip(this, arguments, function(elem) {
4021 if (this.parentNode) {
4022 this.parentNode.insertBefore(elem, this.nextSibling);
4023 }
4024 });
4025 },
4026 empty : function() {
4027 var elem;
4028 /** @type {number} */
4029 var i = 0;
4030 for (; null != (elem = this[i]); i++) {
4031 if (1 === elem.nodeType) {
4032 jQuery.cleanData(getAll(elem, false));
4033 /** @type {string} */
4034 elem.textContent = "";
4035 }
4036 }
4037 return this;
4038 },
4039 clone : function(c, i) {
4040 return c = null != c && c, i = null == i ? c : i, this.map(function() {
4041 return jQuery.clone(this, c, i);
4042 });
4043 },
4044 html : function(value) {
4045 return access(this, function(value) {
4046 var elem = this[0] || {};
4047 /** @type {number} */
4048 var thatpos = 0;
4049 var i = this.length;
4050 if (void 0 === value && 1 === elem.nodeType) {
4051 return elem.innerHTML;
4052 }
4053 if ("string" == typeof value && !_tacet.test(value) && !wrapMap[(me.exec(value) || ["", ""])[1].toLowerCase()]) {
4054 value = jQuery.htmlPrefilter(value);
4055 try {
4056 for (; thatpos < i; thatpos++) {
4057 if (1 === (elem = this[thatpos] || {}).nodeType) {
4058 jQuery.cleanData(getAll(elem, false));
4059 /** @type {number} */
4060 elem.innerHTML = value;
4061 }
4062 }
4063 /** @type {number} */
4064 elem = 0;
4065 } catch (e) {
4066 }
4067 }
4068 if (elem) {
4069 this.empty().append(value);
4070 }
4071 }, null, value, arguments.length);
4072 },
4073 replaceWith : function() {
4074 /** @type {!Array} */
4075 var ignored = [];
4076 return domManip(this, arguments, function(textualMod) {
4077 var thisParent = this.parentNode;
4078 if (jQuery.inArray(this, ignored) < 0) {
4079 jQuery.cleanData(getAll(this));
4080 if (thisParent) {
4081 thisParent.replaceChild(textualMod, this);
4082 }
4083 }
4084 }, ignored);
4085 }
4086 });
4087 jQuery.each({
4088 appendTo : "append",
4089 prependTo : "prepend",
4090 insertBefore : "before",
4091 insertAfter : "after",
4092 replaceAll : "replaceWith"
4093 }, function(original, name) {
4094 /**
4095 * @param {!Array} path
4096 * @return {?}
4097 */
4098 jQuery.fn[original] = function(path) {
4099 var param;
4100 /** @type {!Array} */
4101 var ret = [];
4102 var a = jQuery(path);
4103 /** @type {number} */
4104 var last = a.length - 1;
4105 /** @type {number} */
4106 var i = 0;
4107 for (; i <= last; i++) {
4108 param = i === last ? this : this.clone(true);
4109 jQuery(a[i])[name](param);
4110 push.apply(ret, param.get());
4111 }
4112 return this.pushStack(ret);
4113 };
4114 });
4115 /** @type {!RegExp} */
4116 var rnumnonpx = new RegExp("^(" + FSSource + ")(?!px)[a-z%]+$", "i");
4117 /**
4118 * @param {!Object} elem
4119 * @return {?}
4120 */
4121 var getStyles = function(elem) {
4122 var win = elem.ownerDocument.defaultView;
4123 return win && win.opener || (win = window), win.getComputedStyle(elem);
4124 };
4125 /**
4126 * @param {!Element} e
4127 * @param {!Array} obj
4128 * @param {!Function} f
4129 * @return {?}
4130 */
4131 var swap = function(e, obj, f) {
4132 var result;
4133 var key;
4134 var pyobj = {};
4135 for (key in obj) {
4136 pyobj[key] = e.style[key];
4137 e.style[key] = obj[key];
4138 }
4139 for (key in result = f.call(e), obj) {
4140 e.style[key] = pyobj[key];
4141 }
4142 return result;
4143 };
4144 /** @type {!RegExp} */
4145 var inlineAttributeCommentRegex = new RegExp(cssExpand.join("|"), "i");
4146 !function() {
4147 /**
4148 * @return {undefined}
4149 */
4150 function computeStyleTests() {
4151 if (div) {
4152 /** @type {string} */
4153 parent.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0";
4154 /** @type {string} */
4155 div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%";
4156 node.appendChild(parent).appendChild(div);
4157 var style = window.getComputedStyle(div);
4158 /** @type {boolean} */
4159 res = "1%" !== style.top;
4160 /** @type {boolean} */
4161 s = 12 === parseRound(style.marginLeft);
4162 /** @type {string} */
4163 div.style.right = "60%";
4164 /** @type {boolean} */
4165 o = 36 === parseRound(style.right);
4166 /** @type {boolean} */
4167 r = 36 === parseRound(style.width);
4168 /** @type {string} */
4169 div.style.position = "absolute";
4170 /** @type {boolean} */
4171 i = 12 === parseRound(div.offsetWidth / 3);
4172 node.removeChild(parent);
4173 /** @type {null} */
4174 div = null;
4175 }
4176 }
4177 /**
4178 * @param {number} fontSize
4179 * @return {?}
4180 */
4181 function parseRound(fontSize) {
4182 return Math.round(parseFloat(fontSize));
4183 }
4184 var res;
4185 var r;
4186 var i;
4187 var o;
4188 var a;
4189 var s;
4190 var parent = document.createElement("div");
4191 var div = document.createElement("div");
4192 if (div.style) {
4193 /** @type {string} */
4194 div.style.backgroundClip = "content-box";
4195 /** @type {string} */
4196 div.cloneNode(true).style.backgroundClip = "";
4197 /** @type {boolean} */
4198 support.clearCloneStyle = "content-box" === div.style.backgroundClip;
4199 jQuery.extend(support, {
4200 boxSizingReliable : function() {
4201 return computeStyleTests(), r;
4202 },
4203 pixelBoxStyles : function() {
4204 return computeStyleTests(), o;
4205 },
4206 pixelPosition : function() {
4207 return computeStyleTests(), res;
4208 },
4209 reliableMarginLeft : function() {
4210 return computeStyleTests(), s;
4211 },
4212 scrollboxSize : function() {
4213 return computeStyleTests(), i;
4214 },
4215 reliableTrDimensions : function() {
4216 var p;
4217 var c;
4218 var n;
4219 var s;
4220 return null == a && (p = document.createElement("table"), c = document.createElement("tr"), n = document.createElement("div"), p.style.cssText = "position:absolute;left:-11111px", c.style.height = "1px", n.style.height = "9px", node.appendChild(p).appendChild(c).appendChild(n), s = window.getComputedStyle(c), a = 3 < parseInt(s.height), node.removeChild(p)), a;
4221 }
4222 });
4223 }
4224 }();
4225 /** @type {!Array} */
4226 var prefixes = ["Webkit", "Moz", "ms"];
4227 var testStyle = document.createElement("div").style;
4228 var aSupports = {};
4229 /** @type {!RegExp} */
4230 var rdisplayswap = /^(none|table(?!-c[ea]).+)/;
4231 /** @type {!RegExp} */
4232 var ngTranslationProvider = /^--/;
4233 var cssShow = {
4234 position : "absolute",
4235 visibility : "hidden",
4236 display : "block"
4237 };
4238 var cssNormalTransform = {
4239 letterSpacing : "0",
4240 fontWeight : "400"
4241 };
4242 jQuery.extend({
4243 cssHooks : {
4244 opacity : {
4245 get : function(elem, data) {
4246 if (data) {
4247 var to = curCSS(elem, "opacity");
4248 return "" === to ? "1" : to;
4249 }
4250 }
4251 }
4252 },
4253 cssNumber : {
4254 animationIterationCount : true,
4255 columnCount : true,
4256 fillOpacity : true,
4257 flexGrow : true,
4258 flexShrink : true,
4259 fontWeight : true,
4260 gridArea : true,
4261 gridColumn : true,
4262 gridColumnEnd : true,
4263 gridColumnStart : true,
4264 gridRow : true,
4265 gridRowEnd : true,
4266 gridRowStart : true,
4267 lineHeight : true,
4268 opacity : true,
4269 order : true,
4270 orphans : true,
4271 widows : true,
4272 zIndex : true,
4273 zoom : true
4274 },
4275 cssProps : {},
4276 style : function(elem, name, value, extra) {
4277 if (elem && 3 !== elem.nodeType && 8 !== elem.nodeType && elem.style) {
4278 var ret;
4279 var type;
4280 var hooks;
4281 var prop = camelCase(name);
4282 /** @type {boolean} */
4283 var versionByName = ngTranslationProvider.test(name);
4284 var style = elem.style;
4285 if (versionByName || (name = camelize(prop)), hooks = jQuery.cssHooks[name] || jQuery.cssHooks[prop], void 0 === value) {
4286 return hooks && "get" in hooks && void 0 !== (ret = hooks.get(elem, false, extra)) ? ret : style[name];
4287 }
4288 if ("string" === (type = typeof value) && (ret = regex.exec(value)) && ret[1]) {
4289 value = adjustCSS(elem, name, ret);
4290 /** @type {string} */
4291 type = "number";
4292 }
4293 if (null != value && value == value) {
4294 if (!("number" !== type || versionByName)) {
4295 /** @type {string} */
4296 value = value + (ret && ret[3] || (jQuery.cssNumber[prop] ? "" : "px"));
4297 }
4298 if (!(support.clearCloneStyle || "" !== value || 0 !== name.indexOf("background"))) {
4299 /** @type {string} */
4300 style[name] = "inherit";
4301 }
4302 if (!(hooks && "set" in hooks && void 0 === (value = hooks.set(elem, value, extra)))) {
4303 if (versionByName) {
4304 style.setProperty(name, value);
4305 } else {
4306 /** @type {string} */
4307 style[name] = value;
4308 }
4309 }
4310 }
4311 }
4312 },
4313 css : function(elem, name, value, styles) {
4314 var val;
4315 var length;
4316 var hooks;
4317 var prop = camelCase(name);
4318 return ngTranslationProvider.test(name) || (name = camelize(prop)), (hooks = jQuery.cssHooks[name] || jQuery.cssHooks[prop]) && "get" in hooks && (val = hooks.get(elem, true, value)), void 0 === val && (val = curCSS(elem, name, styles)), "normal" === val && name in cssNormalTransform && (val = cssNormalTransform[name]), "" === value || value ? (length = parseFloat(val), true === value || isFinite(length) ? length || 0 : val) : val;
4319 }
4320 });
4321 jQuery.each(["height", "width"], function(canCreateDiscussions, name) {
4322 jQuery.cssHooks[name] = {
4323 get : function(elem, data, options) {
4324 if (data) {
4325 return !rdisplayswap.test(jQuery.css(elem, "display")) || elem.getClientRects().length && elem.getBoundingClientRect().width ? load(elem, name, options) : swap(elem, cssShow, function() {
4326 return load(elem, name, options);
4327 });
4328 }
4329 },
4330 set : function(elem, value, extra) {
4331 var match;
4332 var styles = getStyles(elem);
4333 /** @type {boolean} */
4334 var res = !support.scrollboxSize() && "absolute" === styles.position;
4335 var valueIsBorderBox = (res || extra) && "border-box" === jQuery.css(elem, "boxSizing", false, styles);
4336 var id = extra ? augmentWidthOrHeight(elem, name, extra, valueIsBorderBox, styles) : 0;
4337 return valueIsBorderBox && res && (id = id - Math.ceil(elem["offset" + name[0].toUpperCase() + name.slice(1)] - parseFloat(styles[name]) - augmentWidthOrHeight(elem, name, "border", false, styles) - .5)), id && (match = regex.exec(value)) && "px" !== (match[3] || "px") && (elem.style[name] = value, value = jQuery.css(elem, name)), _set(0, value, id);
4338 }
4339 };
4340 });
4341 jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function(elem, canCreateDiscussions) {
4342 if (canCreateDiscussions) {
4343 return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, {
4344 marginLeft : 0
4345 }, function() {
4346 return elem.getBoundingClientRect().left;
4347 })) + "px";
4348 }
4349 });
4350 jQuery.each({
4351 margin : "",
4352 padding : "",
4353 border : "Width"
4354 }, function(prefix, suffix) {
4355 jQuery.cssHooks[prefix + suffix] = {
4356 expand : function(expected) {
4357 /** @type {number} */
4358 var i = 0;
4359 var expanded = {};
4360 /** @type {!Array} */
4361 var stops = "string" == typeof expected ? expected.split(" ") : [expected];
4362 for (; i < 4; i++) {
4363 expanded[prefix + cssExpand[i] + suffix] = stops[i] || stops[i - 2] || stops[0];
4364 }
4365 return expanded;
4366 }
4367 };
4368 if ("margin" !== prefix) {
4369 /** @type {function(!Object, !Object, string): ?} */
4370 jQuery.cssHooks[prefix + suffix].set = _set;
4371 }
4372 });
4373 jQuery.fn.extend({
4374 css : function(name, value) {
4375 return access(this, function(elem, name, undefined) {
4376 var styles;
4377 var l;
4378 var map = {};
4379 /** @type {number} */
4380 var i = 0;
4381 if (Array.isArray(name)) {
4382 styles = getStyles(elem);
4383 l = name.length;
4384 for (; i < l; i++) {
4385 map[name[i]] = jQuery.css(elem, name[i], false, styles);
4386 }
4387 return map;
4388 }
4389 return void 0 !== undefined ? jQuery.style(elem, name, undefined) : jQuery.css(elem, name);
4390 }, name, value, 1 < arguments.length);
4391 }
4392 });
4393 ((jQuery.Tween = Tween).prototype = {
4394 constructor : Tween,
4395 init : function(domElem, options, prop, end, easing, unit) {
4396 /** @type {!Element} */
4397 this.elem = domElem;
4398 /** @type {!Object} */
4399 this.prop = prop;
4400 this.easing = easing || jQuery.easing._default;
4401 /** @type {!Object} */
4402 this.options = options;
4403 this.start = this.now = this.cur();
4404 /** @type {number} */
4405 this.end = end;
4406 this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
4407 },
4408 cur : function() {
4409 var hooks = Tween.propHooks[this.prop];
4410 return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
4411 },
4412 run : function(percent) {
4413 var eased;
4414 var hooks = Tween.propHooks[this.prop];
4415 return this.options.duration ? this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration) : this.pos = eased = percent, this.now = (this.end - this.start) * eased + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), hooks && hooks.set ? hooks.set(this) : Tween.propHooks._default.set(this), this;
4416 }
4417 }).init.prototype = Tween.prototype;
4418 (Tween.propHooks = {
4419 _default : {
4420 get : function(s) {
4421 var fitWidth;
4422 return 1 !== s.elem.nodeType || null != s.elem[s.prop] && null == s.elem.style[s.prop] ? s.elem[s.prop] : (fitWidth = jQuery.css(s.elem, s.prop, "")) && "auto" !== fitWidth ? fitWidth : 0;
4423 },
4424 set : function(tween) {
4425 if (jQuery.fx.step[tween.prop]) {
4426 jQuery.fx.step[tween.prop](tween);
4427 } else {
4428 if (1 !== tween.elem.nodeType || !jQuery.cssHooks[tween.prop] && null == tween.elem.style[camelize(tween.prop)]) {
4429 tween.elem[tween.prop] = tween.now;
4430 } else {
4431 jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
4432 }
4433 }
4434 }
4435 }
4436 }).scrollTop = Tween.propHooks.scrollLeft = {
4437 set : function(tween) {
4438 if (tween.elem.nodeType && tween.elem.parentNode) {
4439 tween.elem[tween.prop] = tween.now;
4440 }
4441 }
4442 };
4443 jQuery.easing = {
4444 linear : function(p) {
4445 return p;
4446 },
4447 swing : function(p) {
4448 return .5 - Math.cos(p * Math.PI) / 2;
4449 },
4450 _default : "swing"
4451 };
4452 /** @type {function(!Element, !Object, !Object, number, string, string): undefined} */
4453 jQuery.fx = Tween.prototype.init;
4454 jQuery.fx.step = {};
4455 var fxNow;
4456 var nt;
4457 var elem;
4458 var opt;
4459 /** @type {!RegExp} */
4460 var trueRE = /^(?:toggle|show|hide)$/;
4461 /** @type {!RegExp} */
4462 var rrun = /queueHooks$/;
4463 jQuery.Animation = jQuery.extend(Animation, {
4464 tweeners : {
4465 "*" : [function(prop, value) {
4466 var tween = this.createTween(prop, value);
4467 return adjustCSS(tween.elem, prop, regex.exec(value), tween), tween;
4468 }]
4469 },
4470 tweener : function(props, callback) {
4471 if (fn(props)) {
4472 /** @type {!Object} */
4473 callback = props;
4474 /** @type {!Array} */
4475 props = ["*"];
4476 } else {
4477 props = props.match(re);
4478 }
4479 var prop;
4480 /** @type {number} */
4481 var i = 0;
4482 var inputsSize = props.length;
4483 for (; i < inputsSize; i++) {
4484 prop = props[i];
4485 Animation.tweeners[prop] = Animation.tweeners[prop] || [];
4486 Animation.tweeners[prop].unshift(callback);
4487 }
4488 },
4489 prefilters : [function(elem, props, config) {
4490 var prop;
4491 var value;
4492 var matched;
4493 var hooks;
4494 var oldfire;
4495 var tween;
4496 var restoreDisplay;
4497 var display;
4498 /** @type {boolean} */
4499 var f = "width" in props || "height" in props;
4500 var anim = this;
4501 var orig = {};
4502 var style = elem.style;
4503 var hidden = elem.nodeType && isHidden(elem);
4504 var dataShow = dataPriv.get(elem, "fxshow");
4505 for (prop in config.queue || (null == (hooks = jQuery._queueHooks(elem, "fx")).unqueued && (hooks.unqueued = 0, oldfire = hooks.empty.fire, hooks.empty.fire = function() {
4506 if (!hooks.unqueued) {
4507 oldfire();
4508 }
4509 }), hooks.unqueued++, anim.always(function() {
4510 anim.always(function() {
4511 hooks.unqueued--;
4512 if (!jQuery.queue(elem, "fx").length) {
4513 hooks.empty.fire();
4514 }
4515 });
4516 })), props) {
4517 if (value = props[prop], trueRE.test(value)) {
4518 if (delete props[prop], matched = matched || "toggle" === value, value === (hidden ? "hide" : "show")) {
4519 if ("show" !== value || !dataShow || void 0 === dataShow[prop]) {
4520 continue;
4521 }
4522 /** @type {boolean} */
4523 hidden = true;
4524 }
4525 orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
4526 }
4527 }
4528 if ((tween = !jQuery.isEmptyObject(props)) || !jQuery.isEmptyObject(orig)) {
4529 for (prop in f && 1 === elem.nodeType && (config.overflow = [style.overflow, style.overflowX, style.overflowY], null == (restoreDisplay = dataShow && dataShow.display) && (restoreDisplay = dataPriv.get(elem, "display")), "none" === (display = jQuery.css(elem, "display")) && (restoreDisplay ? display = restoreDisplay : (show([elem], true), restoreDisplay = elem.style.display || restoreDisplay, display = jQuery.css(elem, "display"), show([elem]))), ("inline" === display || "inline-block" ===
4530 display && null != restoreDisplay) && "none" === jQuery.css(elem, "float") && (tween || (anim.done(function() {
4531 style.display = restoreDisplay;
4532 }), null == restoreDisplay && (display = style.display, restoreDisplay = "none" === display ? "" : display)), style.display = "inline-block")), config.overflow && (style.overflow = "hidden", anim.always(function() {
4533 style.overflow = config.overflow[0];
4534 style.overflowX = config.overflow[1];
4535 style.overflowY = config.overflow[2];
4536 })), tween = false, orig) {
4537 if (!tween) {
4538 if (dataShow) {
4539 if ("hidden" in dataShow) {
4540 hidden = dataShow.hidden;
4541 }
4542 } else {
4543 dataShow = dataPriv.access(elem, "fxshow", {
4544 display : restoreDisplay
4545 });
4546 }
4547 if (matched) {
4548 /** @type {boolean} */
4549 dataShow.hidden = !hidden;
4550 }
4551 if (hidden) {
4552 show([elem], true);
4553 }
4554 anim.done(function() {
4555 for (prop in hidden || show([elem]), dataPriv.remove(elem, "fxshow"), orig) {
4556 jQuery.style(elem, prop, orig[prop]);
4557 }
4558 });
4559 }
4560 tween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
4561 if (!(prop in dataShow)) {
4562 dataShow[prop] = tween.start;
4563 if (hidden) {
4564 tween.end = tween.start;
4565 /** @type {number} */
4566 tween.start = 0;
4567 }
4568 }
4569 }
4570 }
4571 }],
4572 prefilter : function(callback, options) {
4573 if (options) {
4574 Animation.prefilters.unshift(callback);
4575 } else {
4576 Animation.prefilters.push(callback);
4577 }
4578 }
4579 });
4580 /**
4581 * @param {string} speed
4582 * @param {boolean} easing
4583 * @param {string} callback
4584 * @return {?}
4585 */
4586 jQuery.speed = function(speed, easing, callback) {
4587 var opt = speed && "object" == typeof speed ? jQuery.extend({}, speed) : {
4588 complete : callback || !callback && easing || fn(speed) && speed,
4589 duration : speed,
4590 easing : callback && easing || easing && !fn(easing) && easing
4591 };
4592 return jQuery.fx.off ? opt.duration = 0 : "number" != typeof opt.duration && (opt.duration in jQuery.fx.speeds ? opt.duration = jQuery.fx.speeds[opt.duration] : opt.duration = jQuery.fx.speeds._default), null != opt.queue && true !== opt.queue || (opt.queue = "fx"), opt.old = opt.complete, opt.complete = function() {
4593 if (fn(opt.old)) {
4594 opt.old.call(this);
4595 }
4596 if (opt.queue) {
4597 jQuery.dequeue(this, opt.queue);
4598 }
4599 }, opt;
4600 };
4601 jQuery.fn.extend({
4602 fadeTo : function(speed, to, callback, context) {
4603 return this.filter(isHidden).css("opacity", 0).show().end().animate({
4604 opacity : to
4605 }, speed, callback, context);
4606 },
4607 animate : function(prop, speed, easing, callback) {
4608 var empty = jQuery.isEmptyObject(prop);
4609 var optall = jQuery.speed(speed, easing, callback);
4610 /**
4611 * @return {undefined}
4612 */
4613 var doAnimation = function() {
4614 var anim = Animation(this, jQuery.extend({}, prop), optall);
4615 if (empty || dataPriv.get(this, "finish")) {
4616 anim.stop(true);
4617 }
4618 };
4619 return doAnimation.finish = doAnimation, empty || false === optall.queue ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
4620 },
4621 stop : function(type, n, e) {
4622 /**
4623 * @param {!Object} hooks
4624 * @return {undefined}
4625 */
4626 var stopQueue = function(hooks) {
4627 var stop = hooks.stop;
4628 delete hooks.stop;
4629 stop(e);
4630 };
4631 return "string" != typeof type && (e = n, n = type, type = void 0), n && this.queue(type || "fx", []), this.each(function() {
4632 /** @type {boolean} */
4633 var boolToParent = true;
4634 /** @type {(boolean|string)} */
4635 var index = null != type && type + "queueHooks";
4636 /** @type {!Array} */
4637 var timers = jQuery.timers;
4638 var data = dataPriv.get(this);
4639 if (index) {
4640 if (data[index] && data[index].stop) {
4641 stopQueue(data[index]);
4642 }
4643 } else {
4644 for (index in data) {
4645 if (data[index] && data[index].stop && rrun.test(index)) {
4646 stopQueue(data[index]);
4647 }
4648 }
4649 }
4650 /** @type {number} */
4651 index = timers.length;
4652 for (; index--;) {
4653 if (!(timers[index].elem !== this || null != type && timers[index].queue !== type)) {
4654 timers[index].anim.stop(e);
4655 /** @type {boolean} */
4656 boolToParent = false;
4657 timers.splice(index, 1);
4658 }
4659 }
4660 if (!(!boolToParent && e)) {
4661 jQuery.dequeue(this, type);
4662 }
4663 });
4664 },
4665 finish : function(type) {
4666 return false !== type && (type = type || "fx"), this.each(function() {
4667 var index;
4668 var data = dataPriv.get(this);
4669 var queue = data[type + "queue"];
4670 var hooks = data[type + "queueHooks"];
4671 /** @type {!Array} */
4672 var timers = jQuery.timers;
4673 var length = queue ? queue.length : 0;
4674 /** @type {boolean} */
4675 data.finish = true;
4676 jQuery.queue(this, type, []);
4677 if (hooks && hooks.stop) {
4678 hooks.stop.call(this, true);
4679 }
4680 /** @type {number} */
4681 index = timers.length;
4682 for (; index--;) {
4683 if (timers[index].elem === this && timers[index].queue === type) {
4684 timers[index].anim.stop(true);
4685 timers.splice(index, 1);
4686 }
4687 }
4688 /** @type {number} */
4689 index = 0;
4690 for (; index < length; index++) {
4691 if (queue[index] && queue[index].finish) {
4692 queue[index].finish.call(this);
4693 }
4694 }
4695 delete data.finish;
4696 });
4697 }
4698 });
4699 jQuery.each(["toggle", "show", "hide"], function(canCreateDiscussions, name) {
4700 var cssFn = jQuery.fn[name];
4701 /**
4702 * @param {string} x
4703 * @param {boolean} callback
4704 * @param {string} options
4705 * @return {?}
4706 */
4707 jQuery.fn[name] = function(x, callback, options) {
4708 return null == x || "boolean" == typeof x ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), x, callback, options);
4709 };
4710 });
4711 jQuery.each({
4712 slideDown : genFx("show"),
4713 slideUp : genFx("hide"),
4714 slideToggle : genFx("toggle"),
4715 fadeIn : {
4716 opacity : "show"
4717 },
4718 fadeOut : {
4719 opacity : "hide"
4720 },
4721 fadeToggle : {
4722 opacity : "toggle"
4723 }
4724 }, function(original, props) {
4725 /**
4726 * @param {string} speed
4727 * @param {boolean} callback
4728 * @param {string} options
4729 * @return {?}
4730 */
4731 jQuery.fn[original] = function(speed, callback, options) {
4732 return this.animate(props, speed, callback, options);
4733 };
4734 });
4735 /** @type {!Array} */
4736 jQuery.timers = [];
4737 /**
4738 * @return {undefined}
4739 */
4740 jQuery.fx.tick = function() {
4741 var maxBet;
4742 /** @type {number} */
4743 var i = 0;
4744 /** @type {!Array} */
4745 var timers = jQuery.timers;
4746 /** @type {number} */
4747 fxNow = Date.now();
4748 for (; i < timers.length; i++) {
4749 if (!((maxBet = timers[i])() || timers[i] !== maxBet)) {
4750 timers.splice(i--, 1);
4751 }
4752 }
4753 if (!timers.length) {
4754 jQuery.fx.stop();
4755 }
4756 fxNow = void 0;
4757 };
4758 /**
4759 * @param {?} url
4760 * @return {undefined}
4761 */
4762 jQuery.fx.timer = function(url) {
4763 jQuery.timers.push(url);
4764 jQuery.fx.start();
4765 };
4766 /** @type {number} */
4767 jQuery.fx.interval = 13;
4768 /**
4769 * @return {undefined}
4770 */
4771 jQuery.fx.start = function() {
4772 if (!nt) {
4773 /** @type {boolean} */
4774 nt = true;
4775 step();
4776 }
4777 };
4778 /**
4779 * @return {undefined}
4780 */
4781 jQuery.fx.stop = function() {
4782 /** @type {null} */
4783 nt = null;
4784 };
4785 jQuery.fx.speeds = {
4786 slow : 600,
4787 fast : 200,
4788 _default : 400
4789 };
4790 /**
4791 * @param {!Object} b
4792 * @param {!Object} type
4793 * @return {?}
4794 */
4795 jQuery.fn.delay = function(b, type) {
4796 return b = jQuery.fx && jQuery.fx.speeds[b] || b, type = type || "fx", this.queue(type, function(show, incoming_item) {
4797 var cb = window.setTimeout(show, b);
4798 /**
4799 * @return {undefined}
4800 */
4801 incoming_item.stop = function() {
4802 window.clearTimeout(cb);
4803 };
4804 });
4805 };
4806 elem = document.createElement("input");
4807 opt = document.createElement("select").appendChild(document.createElement("option"));
4808 /** @type {string} */
4809 elem.type = "checkbox";
4810 /** @type {boolean} */
4811 support.checkOn = "" !== elem.value;
4812 support.optSelected = opt.selected;
4813 /** @type {string} */
4814 (elem = document.createElement("input")).value = "t";
4815 /** @type {string} */
4816 elem.type = "radio";
4817 /** @type {boolean} */
4818 support.radioValue = "t" === elem.value;
4819 var boolHook;
4820 var attrHandle = jQuery.expr.attrHandle;
4821 jQuery.fn.extend({
4822 attr : function(value, name) {
4823 return access(this, jQuery.attr, value, name, 1 < arguments.length);
4824 },
4825 removeAttr : function(name) {
4826 return this.each(function() {
4827 jQuery.removeAttr(this, name);
4828 });
4829 }
4830 });
4831 jQuery.extend({
4832 attr : function(elem, name, value) {
4833 var ret;
4834 var hooks;
4835 var type = elem.nodeType;
4836 if (3 !== type && 8 !== type && 2 !== type) {
4837 return "undefined" == typeof elem.getAttribute ? jQuery.prop(elem, name, value) : (1 === type && jQuery.isXMLDoc(elem) || (hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : void 0)), void 0 !== value ? null === value ? void jQuery.removeAttr(elem, name) : hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : (elem.setAttribute(name, value + ""), value) : hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ?
4838 ret : null == (ret = jQuery.find.attr(elem, name)) ? void 0 : ret);
4839 }
4840 },
4841 attrHooks : {
4842 type : {
4843 set : function(item, value) {
4844 if (!support.radioValue && "radio" === value && callback(item, "input")) {
4845 var n = item.value;
4846 return item.setAttribute("type", value), n && (item.value = n), value;
4847 }
4848 }
4849 }
4850 },
4851 removeAttr : function(elem, name) {
4852 var ATTR_MAXLENGTH;
4853 /** @type {number} */
4854 var callbackCount = 0;
4855 var callbackVals = name && name.match(re);
4856 if (callbackVals && 1 === elem.nodeType) {
4857 for (; ATTR_MAXLENGTH = callbackVals[callbackCount++];) {
4858 elem.removeAttribute(ATTR_MAXLENGTH);
4859 }
4860 }
4861 }
4862 });
4863 boolHook = {
4864 set : function(elem, value, name) {
4865 return false === value ? jQuery.removeAttr(elem, name) : elem.setAttribute(name, name), name;
4866 }
4867 };
4868 jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function(canCreateDiscussions, name) {
4869 var callService$1 = attrHandle[name] || jQuery.find.attr;
4870 /**
4871 * @param {undefined} e
4872 * @param {string} t
4873 * @param {number} n
4874 * @return {?}
4875 */
4876 attrHandle[name] = function(e, t, n) {
4877 var ret;
4878 var handle;
4879 var lowercaseName = t.toLowerCase();
4880 return n || (handle = attrHandle[lowercaseName], attrHandle[lowercaseName] = ret, ret = null != callService$1(e, t, n) ? lowercaseName : null, attrHandle[lowercaseName] = handle), ret;
4881 };
4882 });
4883 /** @type {!RegExp} */
4884 var inputNodeNames = /^(?:input|select|textarea|button)$/i;
4885 /** @type {!RegExp} */
4886 var srsRegex = /^(?:a|area)$/i;
4887 jQuery.fn.extend({
4888 prop : function(type, value) {
4889 return access(this, jQuery.prop, type, value, 1 < arguments.length);
4890 },
4891 removeProp : function(name) {
4892 return this.each(function() {
4893 delete this[jQuery.propFix[name] || name];
4894 });
4895 }
4896 });
4897 jQuery.extend({
4898 prop : function(elem, name, value) {
4899 var ret;
4900 var hooks;
4901 var type = elem.nodeType;
4902 if (3 !== type && 8 !== type && 2 !== type) {
4903 return 1 === type && jQuery.isXMLDoc(elem) || (name = jQuery.propFix[name] || name, hooks = jQuery.propHooks[name]), void 0 !== value ? hooks && "set" in hooks && void 0 !== (ret = hooks.set(elem, value, name)) ? ret : elem[name] = value : hooks && "get" in hooks && null !== (ret = hooks.get(elem, name)) ? ret : elem[name];
4904 }
4905 },
4906 propHooks : {
4907 tabIndex : {
4908 get : function(target) {
4909 var b = jQuery.find.attr(target, "tabindex");
4910 return b ? parseInt(b, 10) : inputNodeNames.test(target.nodeName) || srsRegex.test(target.nodeName) && target.href ? 0 : -1;
4911 }
4912 }
4913 },
4914 propFix : {
4915 "for" : "htmlFor",
4916 "class" : "className"
4917 }
4918 });
4919 if (!support.optSelected) {
4920 jQuery.propHooks.selected = {
4921 get : function(e) {
4922 var elem = e.parentNode;
4923 return elem && elem.parentNode && elem.parentNode.selectedIndex, null;
4924 },
4925 set : function(e) {
4926 var elem = e.parentNode;
4927 if (elem) {
4928 elem.selectedIndex;
4929 if (elem.parentNode) {
4930 elem.parentNode.selectedIndex;
4931 }
4932 }
4933 }
4934 };
4935 }
4936 jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() {
4937 jQuery.propFix[this.toLowerCase()] = this;
4938 });
4939 jQuery.fn.extend({
4940 addClass : function(callback) {
4941 var result;
4942 var next;
4943 var i;
4944 var m;
4945 var k;
4946 var j;
4947 var a;
4948 /** @type {number} */
4949 var u = 0;
4950 if (fn(callback)) {
4951 return this.each(function(i) {
4952 jQuery(this).addClass(callback.call(this, i, $(this)));
4953 });
4954 }
4955 if ((result = clean(callback)).length) {
4956 for (; next = this[u++];) {
4957 if (m = $(next), i = 1 === next.nodeType && " " + merge(m) + " ") {
4958 /** @type {number} */
4959 j = 0;
4960 for (; k = result[j++];) {
4961 if (i.indexOf(" " + k + " ") < 0) {
4962 /** @type {string} */
4963 i = i + (k + " ");
4964 }
4965 }
4966 if (m !== (a = merge(i))) {
4967 next.setAttribute("class", a);
4968 }
4969 }
4970 }
4971 }
4972 return this;
4973 },
4974 removeClass : function(callback) {
4975 var result;
4976 var n;
4977 var f;
4978 var i;
4979 var activeObserveHandle;
4980 var j;
4981 var p;
4982 /** @type {number} */
4983 var u = 0;
4984 if (fn(callback)) {
4985 return this.each(function(i) {
4986 jQuery(this).removeClass(callback.call(this, i, $(this)));
4987 });
4988 }
4989 if (!arguments.length) {
4990 return this.attr("class", "");
4991 }
4992 if ((result = clean(callback)).length) {
4993 for (; n = this[u++];) {
4994 if (i = $(n), f = 1 === n.nodeType && " " + merge(i) + " ") {
4995 /** @type {number} */
4996 j = 0;
4997 for (; activeObserveHandle = result[j++];) {
4998 for (; -1 < f.indexOf(" " + activeObserveHandle + " ");) {
4999 /** @type {string} */
5000 f = f.replace(" " + activeObserveHandle + " ", " ");
5001 }
5002 }
5003 if (i !== (p = merge(f))) {
5004 n.setAttribute("class", p);
5005 }
5006 }
5007 }
5008 }
5009 return this;
5010 },
5011 toggleClass : function(value, stateVal) {
5012 /** @type {string} */
5013 var undefined = typeof value;
5014 /** @type {boolean} */
5015 var a = "string" === undefined || Array.isArray(value);
5016 return "boolean" == typeof stateVal && a ? stateVal ? this.addClass(value) : this.removeClass(value) : fn(value) ? this.each(function(i) {
5017 jQuery(this).toggleClass(value.call(this, i, $(this), stateVal), stateVal);
5018 }) : this.each(function() {
5019 var className;
5020 var pindex;
5021 var $body;
5022 var parts;
5023 if (a) {
5024 /** @type {number} */
5025 pindex = 0;
5026 $body = jQuery(this);
5027 parts = clean(value);
5028 for (; className = parts[pindex++];) {
5029 if ($body.hasClass(className)) {
5030 $body.removeClass(className);
5031 } else {
5032 $body.addClass(className);
5033 }
5034 }
5035 } else {
5036 if (!(void 0 !== value && "boolean" !== undefined)) {
5037 if (className = $(this)) {
5038 dataPriv.set(this, "__className__", className);
5039 }
5040 if (this.setAttribute) {
5041 this.setAttribute("class", className || false === value ? "" : dataPriv.get(this, "__className__") || "");
5042 }
5043 }
5044 }
5045 });
5046 },
5047 hasClass : function(elem) {
5048 var exactLanguageCode;
5049 var target;
5050 /** @type {number} */
5051 var r = 0;
5052 /** @type {string} */
5053 exactLanguageCode = " " + elem + " ";
5054 for (; target = this[r++];) {
5055 if (1 === target.nodeType && -1 < (" " + merge($(target)) + " ").indexOf(exactLanguageCode)) {
5056 return true;
5057 }
5058 }
5059 return false;
5060 }
5061 });
5062 /** @type {!RegExp} */
5063 var n = /\r/g;
5064 jQuery.fn.extend({
5065 val : function(v) {
5066 var hooks;
5067 var value;
5068 var raw;
5069 var elem = this[0];
5070 return arguments.length ? (raw = fn(v), this.each(function(a) {
5071 var val;
5072 if (1 === this.nodeType) {
5073 if (null == (val = raw ? v.call(this, a, jQuery(this).val()) : v)) {
5074 /** @type {string} */
5075 val = "";
5076 } else {
5077 if ("number" == typeof val) {
5078 /** @type {string} */
5079 val = val + "";
5080 } else {
5081 if (Array.isArray(val)) {
5082 val = jQuery.map(val, function(value) {
5083 return null == value ? "" : value + "";
5084 });
5085 }
5086 }
5087 }
5088 if (!((hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]) && "set" in hooks && void 0 !== hooks.set(this, val, "value"))) {
5089 this.value = val;
5090 }
5091 }
5092 })) : elem ? (hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()]) && "get" in hooks && void 0 !== (value = hooks.get(elem, "value")) ? value : "string" == typeof(value = elem.value) ? value.replace(n, "") : null == value ? "" : value : void 0;
5093 }
5094 });
5095 jQuery.extend({
5096 valHooks : {
5097 option : {
5098 get : function(key) {
5099 var isInvalid = jQuery.find.attr(key, "value");
5100 return null != isInvalid ? isInvalid : merge(jQuery.text(key));
5101 }
5102 },
5103 select : {
5104 get : function(elm) {
5105 var value;
5106 var e;
5107 var i;
5108 var data = elm.options;
5109 var index = elm.selectedIndex;
5110 /** @type {boolean} */
5111 var one = "select-one" === elm.type;
5112 /** @type {(Array|null)} */
5113 var values = one ? null : [];
5114 var max = one ? index + 1 : data.length;
5115 i = index < 0 ? max : one ? index : 0;
5116 for (; i < max; i++) {
5117 if (((e = data[i]).selected || i === index) && !e.disabled && (!e.parentNode.disabled || !callback(e.parentNode, "optgroup"))) {
5118 if (value = jQuery(e).val(), one) {
5119 return value;
5120 }
5121 values.push(value);
5122 }
5123 }
5124 return values;
5125 },
5126 set : function(context, value) {
5127 var outputFn;
5128 var b;
5129 var a = context.options;
5130 var result = jQuery.makeArray(value);
5131 var i = a.length;
5132 for (; i--;) {
5133 if ((b = a[i]).selected = -1 < jQuery.inArray(jQuery.valHooks.option.get(b), result)) {
5134 /** @type {boolean} */
5135 outputFn = true;
5136 }
5137 }
5138 return outputFn || (context.selectedIndex = -1), result;
5139 }
5140 }
5141 }
5142 });
5143 jQuery.each(["radio", "checkbox"], function() {
5144 jQuery.valHooks[this] = {
5145 set : function(elem, value) {
5146 if (Array.isArray(value)) {
5147 return elem.checked = -1 < jQuery.inArray(jQuery(elem).val(), value);
5148 }
5149 }
5150 };
5151 if (!support.checkOn) {
5152 /**
5153 * @param {!Object} elem
5154 * @return {?}
5155 */
5156 jQuery.valHooks[this].get = function(elem) {
5157 return null === elem.getAttribute("value") ? "on" : elem.value;
5158 };
5159 }
5160 });
5161 /** @type {boolean} */
5162 support.focusin = "onfocusin" in window;
5163 /** @type {!RegExp} */
5164 var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/;
5165 /**
5166 * @param {!Event} e
5167 * @return {undefined}
5168 */
5169 var onInspectorMove = function(e) {
5170 e.stopPropagation();
5171 };
5172 jQuery.extend(jQuery.event, {
5173 trigger : function(event, value, elem, onlyHandlers) {
5174 var i;
5175 var cur;
5176 var tmp;
5177 var bubbleType;
5178 var ontype;
5179 var next;
5180 var special;
5181 var parent;
5182 /** @type {!Array} */
5183 var eventPath = [elem || document];
5184 var type = hasOwn.call(event, "type") ? event.type : event;
5185 var parts = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
5186 if (cur = parent = tmp = elem = elem || document, 3 !== elem.nodeType && 8 !== elem.nodeType && !rfocusMorph.test(type + jQuery.event.triggered) && (-1 < type.indexOf(".") && (type = (parts = type.split(".")).shift(), parts.sort()), ontype = type.indexOf(":") < 0 && "on" + type, (event = event[jQuery.expando] ? event : new jQuery.Event(type, "object" == typeof event && event)).isTrigger = onlyHandlers ? 2 : 3, event.namespace = parts.join("."), event.rnamespace = event.namespace ? new RegExp("(^|\\.)" +
5187 parts.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, event.result = void 0, event.target || (event.target = elem), value = null == value ? [event] : jQuery.makeArray(value, [event]), special = jQuery.event.special[type] || {}, onlyHandlers || !special.trigger || false !== special.trigger.apply(elem, value))) {
5188 if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
5189 bubbleType = special.delegateType || type;
5190 if (!rfocusMorph.test(bubbleType + type)) {
5191 cur = cur.parentNode;
5192 }
5193 for (; cur; cur = cur.parentNode) {
5194 eventPath.push(cur);
5195 tmp = cur;
5196 }
5197 if (tmp === (elem.ownerDocument || document)) {
5198 eventPath.push(tmp.defaultView || tmp.parentWindow || window);
5199 }
5200 }
5201 /** @type {number} */
5202 i = 0;
5203 for (; (cur = eventPath[i++]) && !event.isPropagationStopped();) {
5204 parent = cur;
5205 event.type = 1 < i ? bubbleType : special.bindType || type;
5206 if (next = (dataPriv.get(cur, "events") || Object.create(null))[event.type] && dataPriv.get(cur, "handle")) {
5207 next.apply(cur, value);
5208 }
5209 if ((next = ontype && cur[ontype]) && next.apply && acceptData(cur)) {
5210 event.result = next.apply(cur, value);
5211 if (false === event.result) {
5212 event.preventDefault();
5213 }
5214 }
5215 }
5216 return event.type = type, onlyHandlers || event.isDefaultPrevented() || special._default && false !== special._default.apply(eventPath.pop(), value) || !acceptData(elem) || ontype && fn(elem[type]) && !isWindow(elem) && ((tmp = elem[ontype]) && (elem[ontype] = null), jQuery.event.triggered = type, event.isPropagationStopped() && parent.addEventListener(type, onInspectorMove), elem[type](), event.isPropagationStopped() && parent.removeEventListener(type, onInspectorMove), jQuery.event.triggered =
5217 void 0, tmp && (elem[ontype] = tmp)), event.result;
5218 }
5219 },
5220 simulate : function(type, node, options) {
5221 var r = jQuery.extend(new jQuery.Event, options, {
5222 type : type,
5223 isSimulated : true
5224 });
5225 jQuery.event.trigger(r, null, node);
5226 }
5227 });
5228 jQuery.fn.extend({
5229 trigger : function(event, data) {
5230 return this.each(function() {
5231 jQuery.event.trigger(event, data, this);
5232 });
5233 },
5234 triggerHandler : function(type, data) {
5235 var parent = this[0];
5236 if (parent) {
5237 return jQuery.event.trigger(type, data, parent, true);
5238 }
5239 }
5240 });
5241 if (!support.focusin) {
5242 jQuery.each({
5243 focus : "focusin",
5244 blur : "focusout"
5245 }, function(type, name) {
5246 /**
5247 * @param {(Object|string)} event
5248 * @return {undefined}
5249 */
5250 var handler = function(event) {
5251 jQuery.event.simulate(name, event.target, jQuery.event.fix(event));
5252 };
5253 jQuery.event.special[name] = {
5254 setup : function() {
5255 var node = this.ownerDocument || this.document || this;
5256 var ownName = dataPriv.access(node, name);
5257 if (!ownName) {
5258 node.addEventListener(type, handler, true);
5259 }
5260 dataPriv.access(node, name, (ownName || 0) + 1);
5261 },
5262 teardown : function() {
5263 var elem = this.ownerDocument || this.document || this;
5264 /** @type {number} */
5265 var data = dataPriv.access(elem, name) - 1;
5266 if (data) {
5267 dataPriv.access(elem, name, data);
5268 } else {
5269 elem.removeEventListener(type, handler, true);
5270 dataPriv.remove(elem, name);
5271 }
5272 }
5273 };
5274 });
5275 }
5276 var location = window.location;
5277 var _enum = {
5278 guid : Date.now()
5279 };
5280 /** @type {!RegExp} */
5281 var rquery = /\?/;
5282 /**
5283 * @param {string} data
5284 * @return {?}
5285 */
5286 jQuery.parseXML = function(data) {
5287 var xml;
5288 if (!data || "string" != typeof data) {
5289 return null;
5290 }
5291 try {
5292 xml = (new window.DOMParser).parseFromString(data, "text/xml");
5293 } catch (e) {
5294 xml = void 0;
5295 }
5296 return xml && !xml.getElementsByTagName("parsererror").length || jQuery.error("Invalid XML: " + data), xml;
5297 };
5298 /** @type {!RegExp} */
5299 var reIsFile = /\[\]$/;
5300 /** @type {!RegExp} */
5301 var reVowels = /\r?\n/g;
5302 /** @type {!RegExp} */
5303 var reHasHexPrefix = /^(?:submit|button|image|reset|file)$/i;
5304 /** @type {!RegExp} */
5305 var rsubmittable = /^(?:input|select|textarea|keygen)/i;
5306 /**
5307 * @param {?} a
5308 * @param {string} obj
5309 * @return {?}
5310 */
5311 jQuery.param = function(a, obj) {
5312 var key;
5313 /** @type {!Array} */
5314 var displayUsedBy = [];
5315 /**
5316 * @param {?} e
5317 * @param {string} result
5318 * @return {undefined}
5319 */
5320 var add = function(e, result) {
5321 var value = fn(result) ? result() : result;
5322 /** @type {string} */
5323 displayUsedBy[displayUsedBy.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == value ? "" : value);
5324 };
5325 if (null == a) {
5326 return "";
5327 }
5328 if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
5329 jQuery.each(a, function() {
5330 add(this.name, this.value);
5331 });
5332 } else {
5333 for (key in a) {
5334 set(key, a[key], obj, add);
5335 }
5336 }
5337 return displayUsedBy.join("&");
5338 };
5339 jQuery.fn.extend({
5340 serialize : function() {
5341 return jQuery.param(this.serializeArray());
5342 },
5343 serializeArray : function() {
5344 return this.map(function() {
5345 var elements = jQuery.prop(this, "elements");
5346 return elements ? jQuery.makeArray(elements) : this;
5347 }).filter(function() {
5348 var string = this.type;
5349 return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !reHasHexPrefix.test(string) && (this.checked || !app.test(string));
5350 }).map(function(canCreateDiscussions, ctlParams) {
5351 var val = jQuery(this).val();
5352 return null == val ? null : Array.isArray(val) ? jQuery.map(val, function(val) {
5353 return {
5354 name : ctlParams.name,
5355 value : val.replace(reVowels, "\r\n")
5356 };
5357 }) : {
5358 name : ctlParams.name,
5359 value : val.replace(reVowels, "\r\n")
5360 };
5361 }).get();
5362 }
5363 });
5364 /** @type {!RegExp} */
5365 var jsre = /%20/g;
5366 /** @type {!RegExp} */
5367 var rhash = /#.*$/;
5368 /** @type {!RegExp} */
5369 var rts = /([?&])_=[^&]*/;
5370 /** @type {!RegExp} */
5371 var rheaders = /^(.*?):[ \t]*([^\r\n]*)$/gm;
5372 /** @type {!RegExp} */
5373 var loader = /^(?:GET|HEAD)$/;
5374 /** @type {!RegExp} */
5375 var rprotocol = /^\/\//;
5376 var prefilters = {};
5377 var transports = {};
5378 /** @type {string} */
5379 var It = "*/".concat("*");
5380 var originAnchor = document.createElement("a");
5381 originAnchor.href = location.href;
5382 jQuery.extend({
5383 active : 0,
5384 lastModified : {},
5385 etag : {},
5386 ajaxSettings : {
5387 url : location.href,
5388 type : "GET",
5389 isLocal : /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(location.protocol),
5390 global : true,
5391 processData : true,
5392 async : true,
5393 contentType : "application/x-www-form-urlencoded; charset=UTF-8",
5394 accepts : {
5395 "*" : It,
5396 text : "text/plain",
5397 html : "text/html",
5398 xml : "application/xml, text/xml",
5399 json : "application/json, text/javascript"
5400 },
5401 contents : {
5402 xml : /\bxml\b/,
5403 html : /\bhtml/,
5404 json : /\bjson\b/
5405 },
5406 responseFields : {
5407 xml : "responseXML",
5408 text : "responseText",
5409 json : "responseJSON"
5410 },
5411 converters : {
5412 "* text" : String,
5413 "text html" : true,
5414 "text json" : JSON.parse,
5415 "text xml" : jQuery.parseXML
5416 },
5417 flatOptions : {
5418 url : true,
5419 context : true
5420 }
5421 },
5422 ajaxSetup : function(target, settings) {
5423 return settings ? ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : ajaxExtend(jQuery.ajaxSettings, target);
5424 },
5425 ajaxPrefilter : addToPrefiltersOrTransports(prefilters),
5426 ajaxTransport : addToPrefiltersOrTransports(transports),
5427 ajax : function(url, options) {
5428 /**
5429 * @param {number} status
5430 * @param {string} nativeStatusText
5431 * @param {!Array} responses
5432 * @param {string} headers
5433 * @return {undefined}
5434 */
5435 function done(status, nativeStatusText, responses, headers) {
5436 var isSuccess;
5437 var success;
5438 var error;
5439 var response;
5440 var modified;
5441 /** @type {string} */
5442 var statusText = nativeStatusText;
5443 if (!completed) {
5444 /** @type {boolean} */
5445 completed = true;
5446 if (showAboveTimeout) {
5447 window.clearTimeout(showAboveTimeout);
5448 }
5449 transport = void 0;
5450 responseHeadersString = headers || "";
5451 /** @type {number} */
5452 jqXHR.readyState = 0 < status ? 4 : 0;
5453 /** @type {boolean} */
5454 isSuccess = 200 <= status && status < 300 || 304 === status;
5455 if (responses) {
5456 response = function(s, ajaxRequest, responses) {
5457 var ct;
5458 var type;
5459 var finalDataType;
5460 var firstDataType;
5461 var contents = s.contents;
5462 var dataTypes = s.dataTypes;
5463 for (; "*" === dataTypes[0];) {
5464 dataTypes.shift();
5465 if (void 0 === ct) {
5466 ct = s.mimeType || ajaxRequest.getResponseHeader("Content-Type");
5467 }
5468 }
5469 if (ct) {
5470 for (type in contents) {
5471 if (contents[type] && contents[type].test(ct)) {
5472 dataTypes.unshift(type);
5473 break;
5474 }
5475 }
5476 }
5477 if (dataTypes[0] in responses) {
5478 finalDataType = dataTypes[0];
5479 } else {
5480 for (type in responses) {
5481 if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
5482 /** @type {string} */
5483 finalDataType = type;
5484 break;
5485 }
5486 if (!firstDataType) {
5487 /** @type {string} */
5488 firstDataType = type;
5489 }
5490 }
5491 /** @type {(string|undefined)} */
5492 finalDataType = finalDataType || firstDataType;
5493 }
5494 if (finalDataType) {
5495 return finalDataType !== dataTypes[0] && dataTypes.unshift(finalDataType), responses[finalDataType];
5496 }
5497 }(s, jqXHR, responses);
5498 }
5499 if (!isSuccess && -1 < jQuery.inArray("script", s.dataTypes)) {
5500 /**
5501 * @return {undefined}
5502 */
5503 s.converters["text script"] = function() {
5504 };
5505 }
5506 response = function(s, response, jqXHR, isSuccess) {
5507 var conv2;
5508 var current;
5509 var conv;
5510 var parts;
5511 var value;
5512 var converters = {};
5513 var resList = s.dataTypes.slice();
5514 if (resList[1]) {
5515 for (conv in s.converters) {
5516 converters[conv.toLowerCase()] = s.converters[conv];
5517 }
5518 }
5519 current = resList.shift();
5520 for (; current;) {
5521 if (s.responseFields[current] && (jqXHR[s.responseFields[current]] = response), !value && isSuccess && s.dataFilter && (response = s.dataFilter(response, s.dataType)), value = current, current = resList.shift()) {
5522 if ("*" === current) {
5523 current = value;
5524 } else {
5525 if ("*" !== value && value !== current) {
5526 if (!(conv = converters[value + " " + current] || converters["* " + current])) {
5527 for (conv2 in converters) {
5528 if ((parts = conv2.split(" "))[1] === current && (conv = converters[value + " " + parts[0]] || converters["* " + parts[0]])) {
5529 if (true === conv) {
5530 conv = converters[conv2];
5531 } else {
5532 if (true !== converters[conv2]) {
5533 /** @type {string} */
5534 current = parts[0];
5535 resList.unshift(parts[1]);
5536 }
5537 }
5538 break;
5539 }
5540 }
5541 }
5542 if (true !== conv) {
5543 if (conv && s["throws"]) {
5544 response = conv(response);
5545 } else {
5546 try {
5547 response = conv(response);
5548 } catch (e) {
5549 return {
5550 state : "parsererror",
5551 error : conv ? e : "No conversion from " + value + " to " + current
5552 };
5553 }
5554 }
5555 }
5556 }
5557 }
5558 }
5559 }
5560 return {
5561 state : "success",
5562 data : response
5563 };
5564 }(s, response, jqXHR, isSuccess);
5565 if (isSuccess) {
5566 if (s.ifModified) {
5567 if (modified = jqXHR.getResponseHeader("Last-Modified")) {
5568 jQuery.lastModified[cacheURL] = modified;
5569 }
5570 if (modified = jqXHR.getResponseHeader("etag")) {
5571 jQuery.etag[cacheURL] = modified;
5572 }
5573 }
5574 if (204 === status || "HEAD" === s.type) {
5575 /** @type {string} */
5576 statusText = "nocontent";
5577 } else {
5578 if (304 === status) {
5579 /** @type {string} */
5580 statusText = "notmodified";
5581 } else {
5582 statusText = response.state;
5583 success = response.data;
5584 /** @type {boolean} */
5585 isSuccess = !(error = response.error);
5586 }
5587 }
5588 } else {
5589 error = statusText;
5590 if (!(!status && statusText)) {
5591 /** @type {string} */
5592 statusText = "error";
5593 if (status < 0) {
5594 /** @type {number} */
5595 status = 0;
5596 }
5597 }
5598 }
5599 /** @type {number} */
5600 jqXHR.status = status;
5601 /** @type {string} */
5602 jqXHR.statusText = (nativeStatusText || statusText) + "";
5603 if (isSuccess) {
5604 deferred.resolveWith(obj, [success, statusText, jqXHR]);
5605 } else {
5606 deferred.rejectWith(obj, [jqXHR, statusText, error]);
5607 }
5608 jqXHR.statusCode(statusCode);
5609 statusCode = void 0;
5610 if (g) {
5611 globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]);
5612 }
5613 completeDeferred.fireWith(obj, [jqXHR, statusText]);
5614 if (g) {
5615 globalEventContext.trigger("ajaxComplete", [jqXHR, s]);
5616 if (!--jQuery.active) {
5617 jQuery.event.trigger("ajaxStop");
5618 }
5619 }
5620 }
5621 }
5622 if ("object" == typeof url) {
5623 /** @type {string} */
5624 options = url;
5625 url = void 0;
5626 }
5627 options = options || {};
5628 var transport;
5629 var cacheURL;
5630 var responseHeadersString;
5631 var marks;
5632 var showAboveTimeout;
5633 var urlAnchor;
5634 var completed;
5635 var g;
5636 var i;
5637 var uncached;
5638 var s = jQuery.ajaxSetup({}, options);
5639 var obj = s.context || s;
5640 var globalEventContext = s.context && (obj.nodeType || obj.jquery) ? jQuery(obj) : jQuery.event;
5641 var deferred = jQuery.Deferred();
5642 var completeDeferred = jQuery.Callbacks("once memory");
5643 var statusCode = s.statusCode || {};
5644 var data = {};
5645 var requestHeadersNames = {};
5646 /** @type {string} */
5647 var status = "canceled";
5648 var jqXHR = {
5649 readyState : 0,
5650 getResponseHeader : function(header) {
5651 var match;
5652 if (completed) {
5653 if (!marks) {
5654 marks = {};
5655 for (; match = rheaders.exec(responseHeadersString);) {
5656 marks[match[1].toLowerCase() + " "] = (marks[match[1].toLowerCase() + " "] || []).concat(match[2]);
5657 }
5658 }
5659 match = marks[header.toLowerCase() + " "];
5660 }
5661 return null == match ? null : match.join(", ");
5662 },
5663 getAllResponseHeaders : function() {
5664 return completed ? responseHeadersString : null;
5665 },
5666 setRequestHeader : function(name, value) {
5667 return null == completed && (name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name, data[name] = value), this;
5668 },
5669 overrideMimeType : function(type) {
5670 return null == completed && (s.mimeType = type), this;
5671 },
5672 statusCode : function(map) {
5673 var tmp;
5674 if (map) {
5675 if (completed) {
5676 jqXHR.always(map[jqXHR.status]);
5677 } else {
5678 for (tmp in map) {
5679 /** @type {!Array} */
5680 statusCode[tmp] = [statusCode[tmp], map[tmp]];
5681 }
5682 }
5683 }
5684 return this;
5685 },
5686 abort : function(type) {
5687 var statusText = type || status;
5688 return transport && transport.abort(statusText), done(0, statusText), this;
5689 }
5690 };
5691 if (deferred.promise(jqXHR), s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//"), s.type = options.method || options.type || s.method || s.type, s.dataTypes = (s.dataType || "*").toLowerCase().match(re) || [""], null == s.crossDomain) {
5692 urlAnchor = document.createElement("a");
5693 try {
5694 /** @type {string} */
5695 urlAnchor.href = s.url;
5696 /** @type {string} */
5697 urlAnchor.href = urlAnchor.href;
5698 /** @type {boolean} */
5699 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host != urlAnchor.protocol + "//" + urlAnchor.host;
5700 } catch (e) {
5701 /** @type {boolean} */
5702 s.crossDomain = true;
5703 }
5704 }
5705 if (s.data && s.processData && "string" != typeof s.data && (s.data = jQuery.param(s.data, s.traditional)), inspectPrefiltersOrTransports(prefilters, s, options, jqXHR), completed) {
5706 return jqXHR;
5707 }
5708 for (i in(g = jQuery.event && s.global) && 0 == jQuery.active++ && jQuery.event.trigger("ajaxStart"), s.type = s.type.toUpperCase(), s.hasContent = !loader.test(s.type), cacheURL = s.url.replace(rhash, ""), s.hasContent ? s.data && s.processData && 0 === (s.contentType || "").indexOf("application/x-www-form-urlencoded") && (s.data = s.data.replace(jsre, "+")) : (uncached = s.url.slice(cacheURL.length), s.data && (s.processData || "string" == typeof s.data) && (cacheURL = cacheURL + ((rquery.test(cacheURL) ?
5709 "&" : "?") + s.data), delete s.data), false === s.cache && (cacheURL = cacheURL.replace(rts, "$1"), uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + _enum.guid++ + uncached), s.url = cacheURL + uncached), s.ifModified && (jQuery.lastModified[cacheURL] && jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]), jQuery.etag[cacheURL] && jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL])), (s.data && s.hasContent && false !== s.contentType || options.contentType) &&
5710 jqXHR.setRequestHeader("Content-Type", s.contentType), jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + ("*" !== s.dataTypes[0] ? ", " + It + "; q=0.01" : "") : s.accepts["*"]), s.headers) {
5711 jqXHR.setRequestHeader(i, s.headers[i]);
5712 }
5713 if (s.beforeSend && (false === s.beforeSend.call(obj, jqXHR, s) || completed)) {
5714 return jqXHR.abort();
5715 }
5716 if (status = "abort", completeDeferred.add(s.complete), jqXHR.done(s.success), jqXHR.fail(s.error), transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR)) {
5717 if (jqXHR.readyState = 1, g && globalEventContext.trigger("ajaxSend", [jqXHR, s]), completed) {
5718 return jqXHR;
5719 }
5720 if (s.async && 0 < s.timeout) {
5721 showAboveTimeout = window.setTimeout(function() {
5722 jqXHR.abort("timeout");
5723 }, s.timeout);
5724 }
5725 try {
5726 /** @type {boolean} */
5727 completed = false;
5728 transport.send(data, done);
5729 } catch (success) {
5730 if (completed) {
5731 throw success;
5732 }
5733 done(-1, success);
5734 }
5735 } else {
5736 done(-1, "No Transport");
5737 }
5738 return jqXHR;
5739 },
5740 getJSON : function(name, callback, data) {
5741 return jQuery.get(name, callback, data, "json");
5742 },
5743 getScript : function(name, callback) {
5744 return jQuery.get(name, void 0, callback, "script");
5745 }
5746 });
5747 jQuery.each(["get", "post"], function(canCreateDiscussions, method) {
5748 /**
5749 * @param {!Object} url
5750 * @param {!Object} e
5751 * @param {!Function} s
5752 * @param {string} o
5753 * @return {?}
5754 */
5755 jQuery[method] = function(url, e, s, o) {
5756 return fn(e) && (o = o || s, s = e, e = void 0), jQuery.ajax(jQuery.extend({
5757 url : url,
5758 type : method,
5759 dataType : o,
5760 data : e,
5761 success : s
5762 }, jQuery.isPlainObject(url) && url));
5763 };
5764 });
5765 jQuery.ajaxPrefilter(function(settings) {
5766 var name;
5767 for (name in settings.headers) {
5768 if ("content-type" === name.toLowerCase()) {
5769 settings.contentType = settings.headers[name] || "";
5770 }
5771 }
5772 });
5773 /**
5774 * @param {string} value
5775 * @param {string} name
5776 * @param {!Object} url
5777 * @return {?}
5778 */
5779 jQuery._evalUrl = function(value, name, url) {
5780 return jQuery.ajax({
5781 url : value,
5782 type : "GET",
5783 dataType : "script",
5784 cache : true,
5785 async : false,
5786 global : false,
5787 converters : {
5788 "text script" : function() {
5789 }
5790 },
5791 dataFilter : function(text) {
5792 jQuery.globalEval(text, name, url);
5793 }
5794 });
5795 };
5796 jQuery.fn.extend({
5797 wrapAll : function(e) {
5798 var t;
5799 return this[0] && (fn(e) && (e = e.call(this[0])), t = jQuery(e, this[0].ownerDocument).eq(0).clone(true), this[0].parentNode && t.insertBefore(this[0]), t.map(function() {
5800 var elem = this;
5801 for (; elem.firstElementChild;) {
5802 elem = elem.firstElementChild;
5803 }
5804 return elem;
5805 }).append(this)), this;
5806 },
5807 wrapInner : function(wrapper) {
5808 return fn(wrapper) ? this.each(function(i) {
5809 jQuery(this).wrapInner(wrapper.call(this, i));
5810 }) : this.each(function() {
5811 var e = jQuery(this);
5812 var clone = e.contents();
5813 if (clone.length) {
5814 clone.wrapAll(wrapper);
5815 } else {
5816 e.append(wrapper);
5817 }
5818 });
5819 },
5820 wrap : function(html) {
5821 var isFunction = fn(html);
5822 return this.each(function(i) {
5823 jQuery(this).wrapAll(isFunction ? html.call(this, i) : html);
5824 });
5825 },
5826 unwrap : function(fn) {
5827 return this.parent(fn).not("body").each(function() {
5828 jQuery(this).replaceWith(this.childNodes);
5829 }), this;
5830 }
5831 });
5832 /**
5833 * @param {string} value
5834 * @return {?}
5835 */
5836 jQuery.expr.pseudos.hidden = function(value) {
5837 return !jQuery.expr.pseudos.visible(value);
5838 };
5839 /**
5840 * @param {!Element} elem
5841 * @return {?}
5842 */
5843 jQuery.expr.pseudos.visible = function(elem) {
5844 return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
5845 };
5846 /**
5847 * @return {?}
5848 */
5849 jQuery.ajaxSettings.xhr = function() {
5850 try {
5851 return new window.XMLHttpRequest;
5852 } catch (e) {
5853 }
5854 };
5855 var xhrSuccessStatus = {
5856 0 : 200,
5857 1223 : 204
5858 };
5859 var xhrSupported = jQuery.ajaxSettings.xhr();
5860 /** @type {boolean} */
5861 support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
5862 /** @type {boolean} */
5863 support.ajax = xhrSupported = !!xhrSupported;
5864 jQuery.ajaxTransport(function(s) {
5865 var callback;
5866 var errorCallback;
5867 if (support.cors || xhrSupported && !s.crossDomain) {
5868 return {
5869 send : function(headers, callback) {
5870 var i;
5871 var xhr = s.xhr();
5872 if (xhr.open(s.type, s.url, s.async, s.username, s.password), s.xhrFields) {
5873 for (i in s.xhrFields) {
5874 xhr[i] = s.xhrFields[i];
5875 }
5876 }
5877 for (i in s.mimeType && xhr.overrideMimeType && xhr.overrideMimeType(s.mimeType), s.crossDomain || headers["X-Requested-With"] || (headers["X-Requested-With"] = "XMLHttpRequest"), headers) {
5878 xhr.setRequestHeader(i, headers[i]);
5879 }
5880 /**
5881 * @param {string} event
5882 * @return {?}
5883 */
5884 callback = function(event) {
5885 return function() {
5886 if (callback) {
5887 /** @type {null} */
5888 callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
5889 if ("abort" === event) {
5890 xhr.abort();
5891 } else {
5892 if ("error" === event) {
5893 if ("number" != typeof xhr.status) {
5894 callback(0, "error");
5895 } else {
5896 callback(xhr.status, xhr.statusText);
5897 }
5898 } else {
5899 callback(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, "text" !== (xhr.responseType || "text") || "string" != typeof xhr.responseText ? {
5900 binary : xhr.response
5901 } : {
5902 text : xhr.responseText
5903 }, xhr.getAllResponseHeaders());
5904 }
5905 }
5906 }
5907 };
5908 };
5909 xhr.onload = callback();
5910 errorCallback = xhr.onerror = xhr.ontimeout = callback("error");
5911 if (void 0 !== xhr.onabort) {
5912 xhr.onabort = errorCallback;
5913 } else {
5914 /**
5915 * @return {undefined}
5916 */
5917 xhr.onreadystatechange = function() {
5918 if (4 === xhr.readyState) {
5919 window.setTimeout(function() {
5920 if (callback) {
5921 errorCallback();
5922 }
5923 });
5924 }
5925 };
5926 }
5927 callback = callback("abort");
5928 try {
5929 xhr.send(s.hasContent && s.data || null);
5930 } catch (e) {
5931 if (callback) {
5932 throw e;
5933 }
5934 }
5935 },
5936 abort : function() {
5937 if (callback) {
5938 callback();
5939 }
5940 }
5941 };
5942 }
5943 });
5944 jQuery.ajaxPrefilter(function(options) {
5945 if (options.crossDomain) {
5946 /** @type {boolean} */
5947 options.contents.script = false;
5948 }
5949 });
5950 jQuery.ajaxSetup({
5951 accepts : {
5952 script : "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
5953 },
5954 contents : {
5955 script : /\b(?:java|ecma)script\b/
5956 },
5957 converters : {
5958 "text script" : function(value) {
5959 return jQuery.globalEval(value), value;
5960 }
5961 }
5962 });
5963 jQuery.ajaxPrefilter("script", function(settings) {
5964 if (void 0 === settings.cache) {
5965 /** @type {boolean} */
5966 settings.cache = false;
5967 }
5968 if (settings.crossDomain) {
5969 /** @type {string} */
5970 settings.type = "GET";
5971 }
5972 });
5973 jQuery.ajaxTransport("script", function(options) {
5974 var fileElem;
5975 var callback;
5976 if (options.crossDomain || options.scriptAttrs) {
5977 return {
5978 send : function(packets, callback) {
5979 fileElem = jQuery("<script>").attr(options.scriptAttrs || {}).prop({
5980 charset : options.scriptCharset,
5981 src : options.url
5982 }).on("load error", callback = function(result) {
5983 fileElem.remove();
5984 /** @type {null} */
5985 callback = null;
5986 if (result) {
5987 callback("error" === result.type ? 404 : 200, result.type);
5988 }
5989 });
5990 document.head.appendChild(fileElem[0]);
5991 },
5992 abort : function() {
5993 if (callback) {
5994 callback();
5995 }
5996 }
5997 };
5998 }
5999 });
6000 var summary;
6001 /** @type {!Array} */
6002 var oldCallbacks = [];
6003 /** @type {!RegExp} */
6004 var rjsonp = /(=)\?(?=&|$)|\?\?/;
6005 jQuery.ajaxSetup({
6006 jsonp : "callback",
6007 jsonpCallback : function() {
6008 var indexLookupKey = oldCallbacks.pop() || jQuery.expando + "_" + _enum.guid++;
6009 return this[indexLookupKey] = true, indexLookupKey;
6010 }
6011 });
6012 jQuery.ajaxPrefilter("json jsonp", function(s, originalSettings, scanners) {
6013 var callbackName;
6014 var overwritten;
6015 var responseContainer;
6016 /** @type {(boolean|string)} */
6017 var jsonProp = false !== s.jsonp && (rjsonp.test(s.url) ? "url" : "string" == typeof s.data && 0 === (s.contentType || "").indexOf("application/x-www-form-urlencoded") && rjsonp.test(s.data) && "data");
6018 if (jsonProp || "jsonp" === s.dataTypes[0]) {
6019 return callbackName = s.jsonpCallback = fn(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback, jsonProp ? s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName) : false !== s.jsonp && (s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName), s.converters["script json"] = function() {
6020 return responseContainer || jQuery.error(callbackName + " was not called"), responseContainer[0];
6021 }, s.dataTypes[0] = "json", overwritten = window[callbackName], window[callbackName] = function() {
6022 /** @type {!Arguments} */
6023 responseContainer = arguments;
6024 }, scanners.always(function() {
6025 if (void 0 === overwritten) {
6026 jQuery(window).removeProp(callbackName);
6027 } else {
6028 window[callbackName] = overwritten;
6029 }
6030 if (s[callbackName]) {
6031 s.jsonpCallback = originalSettings.jsonpCallback;
6032 oldCallbacks.push(callbackName);
6033 }
6034 if (responseContainer && fn(overwritten)) {
6035 overwritten(responseContainer[0]);
6036 }
6037 responseContainer = overwritten = void 0;
6038 }), "script";
6039 }
6040 });
6041 /** @type {boolean} */
6042 support.createHTMLDocument = ((summary = document.implementation.createHTMLDocument("").body).innerHTML = "<form></form><form></form>", 2 === summary.childNodes.length);
6043 /**
6044 * @param {string} data
6045 * @param {!Object} context
6046 * @param {!Function} keepScripts
6047 * @return {?}
6048 */
6049 jQuery.parseHTML = function(data, context, keepScripts) {
6050 return "string" != typeof data ? [] : ("boolean" == typeof context && (keepScripts = context, context = false), context || (support.createHTMLDocument ? ((target = (context = document.implementation.createHTMLDocument("")).createElement("base")).href = document.location.href, context.head.appendChild(target)) : context = document), scripts = !keepScripts && [], (parsed = rsingleTag.exec(data)) ? [context.createElement(parsed[1])] : (parsed = buildFragment([data], context, scripts), scripts &&
6051 scripts.length && jQuery(scripts).remove(), jQuery.merge([], parsed.childNodes)));
6052 var target;
6053 var parsed;
6054 var scripts;
6055 };
6056 /**
6057 * @param {string} result
6058 * @param {string} value
6059 * @param {string} callback
6060 * @return {?}
6061 */
6062 jQuery.fn.load = function(result, value, callback) {
6063 var selector;
6064 var method;
6065 var args;
6066 var self = this;
6067 var i = result.indexOf(" ");
6068 return -1 < i && (selector = merge(result.slice(i)), result = result.slice(0, i)), fn(value) ? (callback = value, value = void 0) : value && "object" == typeof value && (method = "POST"), 0 < self.length && jQuery.ajax({
6069 url : result,
6070 type : method || "GET",
6071 dataType : "html",
6072 data : value
6073 }).done(function(responseText) {
6074 /** @type {!Arguments} */
6075 args = arguments;
6076 self.html(selector ? jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : responseText);
6077 }).always(callback && function(elem, document) {
6078 self.each(function() {
6079 callback.apply(this, args || [elem.responseText, document, elem]);
6080 });
6081 }), this;
6082 };
6083 /**
6084 * @param {?} elem
6085 * @return {?}
6086 */
6087 jQuery.expr.pseudos.animated = function(elem) {
6088 return jQuery.grep(jQuery.timers, function(fn) {
6089 return elem === fn.elem;
6090 }).length;
6091 };
6092 jQuery.offset = {
6093 setOffset : function(element, options, x) {
6094 var opt_boundsOrLeft;
6095 var width;
6096 var curCSSTop;
6097 var height;
6098 var curOffset;
6099 var curCSSLeft;
6100 var propertyName = jQuery.css(element, "position");
6101 var self = jQuery(element);
6102 var c = {};
6103 if ("static" === propertyName) {
6104 /** @type {string} */
6105 element.style.position = "relative";
6106 }
6107 curOffset = self.offset();
6108 curCSSTop = jQuery.css(element, "top");
6109 curCSSLeft = jQuery.css(element, "left");
6110 if (("absolute" === propertyName || "fixed" === propertyName) && -1 < (curCSSTop + curCSSLeft).indexOf("auto")) {
6111 height = (opt_boundsOrLeft = self.position()).top;
6112 width = opt_boundsOrLeft.left;
6113 } else {
6114 /** @type {number} */
6115 height = parseFloat(curCSSTop) || 0;
6116 /** @type {number} */
6117 width = parseFloat(curCSSLeft) || 0;
6118 }
6119 if (fn(options)) {
6120 options = options.call(element, x, jQuery.extend({}, curOffset));
6121 }
6122 if (null != options.top) {
6123 /** @type {number} */
6124 c.top = options.top - curOffset.top + height;
6125 }
6126 if (null != options.left) {
6127 /** @type {number} */
6128 c.left = options.left - curOffset.left + width;
6129 }
6130 if ("using" in options) {
6131 options.using.call(element, c);
6132 } else {
6133 if ("number" == typeof c.top) {
6134 c.top += "px";
6135 }
6136 if ("number" == typeof c.left) {
6137 c.left += "px";
6138 }
6139 self.css(c);
6140 }
6141 }
6142 };
6143 jQuery.fn.extend({
6144 offset : function(y) {
6145 if (arguments.length) {
6146 return void 0 === y ? this : this.each(function(i) {
6147 jQuery.offset.setOffset(this, y, i);
6148 });
6149 }
6150 var box;
6151 var win;
6152 var aTarget = this[0];
6153 return aTarget ? aTarget.getClientRects().length ? (box = aTarget.getBoundingClientRect(), win = aTarget.ownerDocument.defaultView, {
6154 top : box.top + win.pageYOffset,
6155 left : box.left + win.pageXOffset
6156 }) : {
6157 top : 0,
6158 left : 0
6159 } : void 0;
6160 },
6161 position : function() {
6162 if (this[0]) {
6163 var el;
6164 var offset;
6165 var node;
6166 var element = this[0];
6167 var parentOffset = {
6168 top : 0,
6169 left : 0
6170 };
6171 if ("fixed" === jQuery.css(element, "position")) {
6172 offset = element.getBoundingClientRect();
6173 } else {
6174 offset = this.offset();
6175 node = element.ownerDocument;
6176 el = element.offsetParent || node.documentElement;
6177 for (; el && (el === node.body || el === node.documentElement) && "static" === jQuery.css(el, "position");) {
6178 el = el.parentNode;
6179 }
6180 if (el && el !== element && 1 === el.nodeType) {
6181 (parentOffset = jQuery(el).offset()).top += jQuery.css(el, "borderTopWidth", true);
6182 parentOffset.left += jQuery.css(el, "borderLeftWidth", true);
6183 }
6184 }
6185 return {
6186 top : offset.top - parentOffset.top - jQuery.css(element, "marginTop", true),
6187 left : offset.left - parentOffset.left - jQuery.css(element, "marginLeft", true)
6188 };
6189 }
6190 },
6191 offsetParent : function() {
6192 return this.map(function() {
6193 var parent = this.offsetParent;
6194 for (; parent && "static" === jQuery.css(parent, "position");) {
6195 parent = parent.offsetParent;
6196 }
6197 return parent || node;
6198 });
6199 }
6200 });
6201 jQuery.each({
6202 scrollLeft : "pageXOffset",
6203 scrollTop : "pageYOffset"
6204 }, function(type, prop) {
6205 /** @type {boolean} */
6206 var top = "pageYOffset" === prop;
6207 /**
6208 * @param {?} value
6209 * @return {?}
6210 */
6211 jQuery.fn[type] = function(value) {
6212 return access(this, function(node, method, val) {
6213 var win;
6214 if (isWindow(node) ? win = node : 9 === node.nodeType && (win = node.defaultView), void 0 === val) {
6215 return win ? win[prop] : node[method];
6216 }
6217 if (win) {
6218 win.scrollTo(top ? win.pageXOffset : val, top ? val : win.pageYOffset);
6219 } else {
6220 /** @type {number} */
6221 node[method] = val;
6222 }
6223 }, type, value, arguments.length);
6224 };
6225 });
6226 jQuery.each(["top", "left"], function(canCreateDiscussions, prop) {
6227 jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function(elem, val) {
6228 if (val) {
6229 return val = curCSS(elem, prop), rnumnonpx.test(val) ? jQuery(elem).position()[prop] + "px" : val;
6230 }
6231 });
6232 });
6233 jQuery.each({
6234 Height : "height",
6235 Width : "width"
6236 }, function(name, type) {
6237 jQuery.each({
6238 padding : "inner" + name,
6239 content : type,
6240 "" : "outer" + name
6241 }, function(defaultExtra, type) {
6242 /**
6243 * @param {boolean} margin
6244 * @param {(number|string)} boardManager
6245 * @return {?}
6246 */
6247 jQuery.fn[type] = function(margin, boardManager) {
6248 var chainable = arguments.length && (defaultExtra || "boolean" != typeof margin);
6249 var extra = defaultExtra || (true === margin || true === boardManager ? "margin" : "border");
6250 return access(this, function(el, offset, undefined) {
6251 var doc;
6252 return isWindow(el) ? 0 === type.indexOf("outer") ? el["inner" + name] : el.document.documentElement["client" + name] : 9 === el.nodeType ? (doc = el.documentElement, Math.max(el.body["scroll" + name], doc["scroll" + name], el.body["offset" + name], doc["offset" + name], doc["client" + name])) : void 0 === undefined ? jQuery.css(el, offset, extra) : jQuery.style(el, offset, undefined, extra);
6253 }, type, chainable ? margin : void 0, chainable);
6254 };
6255 });
6256 });
6257 jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(canCreateDiscussions, type) {
6258 /**
6259 * @param {string} e
6260 * @return {?}
6261 */
6262 jQuery.fn[type] = function(e) {
6263 return this.on(type, e);
6264 };
6265 });
6266 jQuery.fn.extend({
6267 bind : function(event, callback, obj) {
6268 return this.on(event, null, callback, obj);
6269 },
6270 unbind : function(type, fn) {
6271 return this.off(type, null, fn);
6272 },
6273 delegate : function(eventHandler, event, fn, t) {
6274 return this.on(event, eventHandler, fn, t);
6275 },
6276 undelegate : function(selector, event, callback) {
6277 return 1 === arguments.length ? this.off(selector, "**") : this.off(event, selector || "**", callback);
6278 },
6279 hover : function(fnOver, fnOut) {
6280 return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
6281 }
6282 });
6283 jQuery.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "), function(canCreateDiscussions, type) {
6284 /**
6285 * @param {!Object} callback
6286 * @param {!Object} obj
6287 * @return {?}
6288 */
6289 jQuery.fn[type] = function(callback, obj) {
6290 return 0 < arguments.length ? this.on(type, null, callback, obj) : this.trigger(type);
6291 };
6292 });
6293 /** @type {!RegExp} */
6294 var REGEX_ESCAPE_EXPR = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
6295 /**
6296 * @param {!Object} p
6297 * @param {!Object} c
6298 * @return {?}
6299 */
6300 jQuery.proxy = function(p, c) {
6301 var b;
6302 var headArgs;
6303 var proxyFn;
6304 if ("string" == typeof c && (b = p[c], c = p, p = b), fn(p)) {
6305 return headArgs = slice.call(arguments, 2), (proxyFn = function() {
6306 return p.apply(c || this, headArgs.concat(slice.call(arguments)));
6307 }).guid = p.guid = p.guid || jQuery.guid++, proxyFn;
6308 }
6309 };
6310 /**
6311 * @param {?} hold
6312 * @return {undefined}
6313 */
6314 jQuery.holdReady = function(hold) {
6315 if (hold) {
6316 jQuery.readyWait++;
6317 } else {
6318 jQuery.ready(true);
6319 }
6320 };
6321 /** @type {function(*): boolean} */
6322 jQuery.isArray = Array.isArray;
6323 /** @type {function(this:JSONType, string, function(string, *): *=): *} */
6324 jQuery.parseJSON = JSON.parse;
6325 /** @type {function(!Object, !Object): ?} */
6326 jQuery.nodeName = callback;
6327 /** @type {function(string): ?} */
6328 jQuery.isFunction = fn;
6329 /** @type {function(!Object): ?} */
6330 jQuery.isWindow = isWindow;
6331 /** @type {function(!Object): ?} */
6332 jQuery.camelCase = camelCase;
6333 /** @type {function(string): ?} */
6334 jQuery.type = type;
6335 /** @type {function(): number} */
6336 jQuery.now = Date.now;
6337 /**
6338 * @param {string} value
6339 * @return {?}
6340 */
6341 jQuery.isNumeric = function(value) {
6342 var undefined = jQuery.type(value);
6343 return ("number" === undefined || "string" === undefined) && !isNaN(value - parseFloat(value));
6344 };
6345 /**
6346 * @param {string} text
6347 * @return {?}
6348 */
6349 jQuery.trim = function(text) {
6350 return null == text ? "" : (text + "").replace(REGEX_ESCAPE_EXPR, "");
6351 };
6352 if ("function" == typeof define && define.amd) {
6353 define("jquery", [], function() {
6354 return jQuery;
6355 });
6356 }
6357 var _jQuery = window.jQuery;
6358 var old$ = window.$;
6359 return jQuery.noConflict = function(deep) {
6360 return window.$ === jQuery && (window.$ = old$), deep && window.jQuery === jQuery && (window.jQuery = _jQuery), jQuery;
6361 }, "undefined" == typeof start_column && (window.jQuery = window.$ = jQuery), jQuery;
6362});
6363