PageSourceSearch

https://www.maxwellmedia.com/scripts/bootstrap.min.js?fv=A969DC97628C9D3BF7000749DA3F641D

js maxwellmedia.com collected 2026-10-04 19:02:39 UTC 48,797 bytes, 1,287 lines download raw bytes

1/*!
2 * Bootstrap.js by @fat & @mdo
3 * Copyright 2012 Twitter, Inc.
4 * http://www.apache.org/licenses/LICENSE-2.0.txt
5 */
6!(function (e) {
7    "use strict";
8    e(function () {
9        e.support.transition = (function () {
10            var e = (function () {
11                var e = document.createElement("bootstrap"),
12                    t = { WebkitTransition: "webkitTransitionEnd", MozTransition: "transitionend", OTransition: "oTransitionEnd otransitionend", transition: "transitionend" },
13                    n;
14                for (n in t) {
15                    if (e.style[n] !== undefined) {
16                        return t[n];
17                    }
18                }
19            })();
20            return e && { end: e };
21        })();
22    });
23})(window.jQuery);
24!(function (e) {
25    "use strict";
26    var t = '[data-dismiss="alert"]',
27        n = function (n) {
28            e(n).on("click", t, this.close);
29        };
30    n.prototype.close = function (t) {
31        function s() {
32            i.trigger("closed").remove();
33        }
34        var n = e(this),
35            r = n.attr("data-target"),
36            i;
37        if (!r) {
38            r = n.attr("href");
39            r = r && r.replace(/.*(?=#[^\s]*$)/, "");
40        }
41        i = e(r);
42        t && t.preventDefault();
43        i.length || (i = n.hasClass("alert") ? n : n.parent());
44        i.trigger((t = e.Event("close")));
45        if (t.isDefaultPrevented()) return;
46        i.removeClass("in");
47        e.support.transition && i.hasClass("fade") ? i.on(e.support.transition.end, s) : s();
48    };
49    var r = e.fn.alert;
50    e.fn.alert = function (t) {
51        return this.each(function () {
52            var r = e(this),
53                i = r.data("alert");
54            if (!i) r.data("alert", (i = new n(this)));
55            if (typeof t == "string") i[t].call(r);
56        });
57    };
58    e.fn.alert.Constructor = n;
59    e.fn.alert.noConflict = function () {
60        e.fn.alert = r;
61        return this;
62    };
63    e(document).on("click.alert.data-api", t, n.prototype.close);
64})(window.jQuery);
65!(function (e) {
66    "use strict";
67    var t = function (t, n) {
68        this.$element = e(t);
69        this.options = e.extend({}, e.fn.button.defaults, n);
70    };
71    t.prototype.setState = function (e) {
72        var t = "disabled",
73            n = this.$element,
74            r = n.data(),
75            i = n.is("input") ? "val" : "html";
76        e = e + "Text";
77        r.resetText || n.data("resetText", n[i]());
78        n[i](r[e] || this.options[e]);
79        setTimeout(function () {
80            e == "loadingText" ? n.addClass(t).attr(t, t) : n.removeClass(t).removeAttr(t);
81        }, 0);
82    };
83    t.prototype.toggle = function () {
84        var e = this.$element.closest('[data-toggle="buttons-radio"]');
85        e && e.find(".active").removeClass("active");
86        this.$element.toggleClass("active");
87    };
88    var n = e.fn.button;
89    e.fn.button = function (n) {
90        return this.each(function () {
91            var r = e(this),
92                i = r.data("button"),
93                s = typeof n == "object" && n;
94            if (!i) r.data("button", (i = new t(this, s)));
95            if (n == "toggle") i.toggle();
96            else if (n) i.setState(n);
97        });
98    };
99    e.fn.button.defaults = { loadingText: "loading..." };
100    e.fn.button.Constructor = t;
101    e.fn.button.noConflict = function () {
102        e.fn.button = n;
103        return this;
104    };
105    e(document).on("click.button.data-api", "[data-toggle^=button]", function (t) {
106        var n = e(t.target);
107        if (!n.hasClass("btn")) n = n.closest(".btn");
108        n.button("toggle");
109    });
110})(window.jQuery);
111!(function (e) {
112    "use strict";
113    var t = function (t, n) {
114        this.$element = e(t);
115        this.$indicators = this.$element.find(".carousel-indicators");
116        this.options = n;
117        this.options.pause == "hover" && this.$element.on("mouseenter", e.proxy(this.pause, this)).on("mouseleave", e.proxy(this.cycle, this));
118    };
119    t.prototype = {
120        cycle: function (t) {
121            if (!t) this.paused = false;
122            if (this.interval) clearInterval(this.interval);
123            this.options.interval && !this.paused && (this.interval = setInterval(e.proxy(this.next, this), this.options.interval));
124            return this;
125        },
126        getActiveIndex: function () {
127            this.$active = this.$element.find(".item.active");
128            this.$items = this.$active.parent().children();
129            return this.$items.index(this.$active);
130        },
131        to: function (t) {
132            var n = this.getActiveIndex(),
133                r = this;
134            if (t > this.$items.length - 1 || t < 0) return;
135            if (this.sliding) {
136                return this.$element.one("slid", function () {
137                    r.to(t);
138                });
139            }
140            if (n == t) {
141                return this.pause().cycle();
142            }
143            return this.slide(t > n ? "next" : "prev", e(this.$items[t]));
144        },
145        pause: function (t) {
146            if (!t) this.paused = true;
147            if (this.$element.find(".next, .prev").length && e.support.transition.end) {
148                this.$element.trigger(e.support.transition.end);
149                this.cycle(true);
150            }
151            clearInterval(this.interval);
152            this.interval = null;
153            return this;
154        },
155        next: function () {
156            if (this.sliding) return;
157            return this.slide("next");
158        },
159        prev: function () {
160            if (this.sliding) return;
161            return this.slide("prev");
162        },
163        slide: function (t, n) {
164            var r = this.$element.find(".item.active"),
165                i = n || r[t](),
166                s = this.interval,
167                o = t == "next" ? "left" : "right",
168                u = t == "next" ? "first" : "last",
169                a = this,
170                f;
171            this.sliding = true;
172            s && this.pause();
173            i = i.length ? i : this.$element.find(".item")[u]();
174            f = e.Event("slide", { relatedTarget: i[0], direction: o });
175            if (i.hasClass("active")) return;
176            if (this.$indicators.length) {
177                this.$indicators.find(".active").removeClass("active");
178                this.$element.one("slid", function () {
179                    var t = e(a.$indicators.children()[a.getActiveIndex()]);
180                    t && t.addClass("active");
181                });
182            }
183            if (e.support.transition && this.$element.hasClass("slide")) {
184                this.$element.trigger(f);
185                if (f.isDefaultPrevented()) return;
186                i.addClass(t);
187                i[0].offsetWidth;
188                r.addClass(o);
189                i.addClass(o);
190                this.$element.one(e.support.transition.end, function () {
191                    i.removeClass([t, o].join(" ")).addClass("active");
192                    r.removeClass(["active", o].join(" "));
193                    a.sliding = false;
194                    setTimeout(function () {
195                        a.$element.trigger("slid");
196                    }, 0);
197                });
198            } else {
199                this.$element.trigger(f);
200                if (f.isDefaultPrevented()) return;
201                r.removeClass("active");
202                i.addClass("active");
203                this.sliding = false;
204                this.$element.trigger("slid");
205            }
206            s && this.cycle();
207            return this;
208        },
209    };
210    var n = e.fn.carousel;
211    e.fn.carousel = function (n) {
212        return this.each(function () {
213            var r = e(this),
214                i = r.data("carousel"),
215                s = e.extend({}, e.fn.carousel.defaults, typeof n == "object" && n),
216                o = typeof n == "string" ? n : s.slide;
217            if (!i) r.data("carousel", (i = new t(this, s)));
218            if (typeof n == "number") i.to(n);
219            else if (o) i[o]();
220            else if (s.interval) i.pause().cycle();
221        });
222    };
223    e.fn.carousel.defaults = { interval: 5e3, pause: "hover" };
224    e.fn.carousel.Constructor = t;
225    e.fn.carousel.noConflict = function () {
226        e.fn.carousel = n;
227        return this;
228    };
229    e(document).on("click.carousel.data-api", "[data-slide], [data-slide-to]", function (t) {
230        var n = e(this),
231            r,
232            i = e(n.attr("data-target") || ((r = n.attr("href")) && r.replace(/.*(?=#[^\s]+$)/, ""))),
233            s = e.extend({}, i.data(), n.data()),
234            o;
235        i.carousel(s);
236        if ((o = n.attr("data-slide-to"))) {
237            i.data("carousel").pause().to(o).cycle();
238        }
239        t.preventDefault();
240    });
241})(window.jQuery);
242!(function (e) {
243    "use strict";
244    var t = function (t, n) {
245        this.$element = e(t);
246        this.options = e.extend({}, e.fn.collapse.defaults, n);
247        if (this.options.parent) {
248            this.$parent = e(this.options.parent);
249        }
250        this.options.toggle && this.toggle();
251    };
252    t.prototype = {
253        constructor: t,
254        dimension: function () {
255            var e = this.$element.hasClass("width");
256            return e ? "width" : "height";
257        },
258        show: function () {
259            var t, n, r, i;
260            if (this.transitioning || this.$element.hasClass("in")) return;
261            t = this.dimension();
262            n = e.camelCase(["scroll", t].join("-"));
263            r = this.$parent && this.$parent.find("> .accordion-group > .in");
264            if (r && r.length) {
265                i = r.data("collapse");
266                if (i && i.transitioning) return;
267                r.collapse("hide");
268                i || r.data("collapse", null);
269            }
270            this.$element[t](0);
271            this.transition("addClass", e.Event("show"), "shown");
272            e.support.transition && this.$element[t](this.$element[0][n]);
273        },
274        hide: function () {
275            var t;
276            if (this.transitioning || !this.$element.hasClass("in")) return;
277            t = this.dimension();
278            this.reset(this.$element[t]());
279            this.transition("removeClass", e.Event("hide"), "hidden");
280            this.$element[t](0);
281        },
282        reset: function (e) {
283            var t = this.dimension();
284            this.$element.removeClass("collapse")[t](e || "auto")[0].offsetWidth;
285            this.$element[e !== null ? "addClass" : "removeClass"]("collapse");
286            return this;
287        },
288        transition: function (t, n, r) {
289            var i = this,
290                s = function () {
291                    if (n.type == "show") i.reset();
292                    i.transitioning = 0;
293                    i.$element.trigger(r);
294                };
295            this.$element.trigger(n);
296            if (n.isDefaultPrevented()) return;
297            this.transitioning = 1;
298            this.$element[t]("in");
299            e.support.transition && this.$element.hasClass("collapse") ? this.$element.one(e.support.transition.end, s) : s();
300        },
301        toggle: function () {
302            this[this.$element.hasClass("in") ? "hide" : "show"]();
303        },
304    };
305    var n = e.fn.collapse;
306    e.fn.collapse = function (n) {
307        return this.each(function () {
308            var r = e(this),
309                i = r.data("collapse"),
310                s = e.extend({}, e.fn.collapse.defaults, r.data(), typeof n == "object" && n);
311            if (!i) r.data("collapse", (i = new t(this, s)));
312            if (typeof n == "string") i[n]();
313        });
314    };
315    e.fn.collapse.defaults = { toggle: true };
316    e.fn.collapse.Constructor = t;
317    e.fn.collapse.noConflict = function () {
318        e.fn.collapse = n;
319        return this;
320    };
321    e(document).on("click.collapse.data-api", "[data-toggle=collapse]", function (t) {
322        var n = e(this),
323            r,
324            i = n.attr("data-target") || t.preventDefault() || ((r = n.attr("href")) && r.replace(/.*(?=#[^\s]+$)/, "")),
325            s = e(i).data("collapse") ? "toggle" : n.data();
326        n[e(i).hasClass("in") ? "addClass" : "removeClass"]("collapsed");
327        e(i).collapse(s);
328    });
329})(window.jQuery);
330!(function (e) {
331    "use strict";
332    function r() {
333        e(".dropdown-backdrop").remove();
334        e(t).each(function () {
335            i(e(this)).removeClass("open");
336        });
337    }
338    function i(t) {
339        var n = t.attr("data-target"),
340            r;
341        if (!n) {
342            n = t.attr("href");
343            n = n && /#/.test(n) && n.replace(/.*(?=#[^\s]*$)/, "");
344        }
345        r = n && e(n);
346        if (!r || !r.length) r = t.parent();
347        return r;
348    }
349    var t = "[data-toggle=dropdown]",
350        n = function (t) {
351            var n = e(t).on("click.dropdown.data-api", this.toggle);
352            e("html").on("click.dropdown.data-api", function () {
353                n.parent().removeClass("open");
354            });
355        };
356    n.prototype = {
357        constructor: n,
358        toggle: function (t) {
359            var n = e(this),
360                s,
361                o;
362            if (n.is(".disabled, :disabled")) return;
363            s = i(n);
364            o = s.hasClass("open");
365            r();
366            if (!o) {
367                if ("ontouchstart" in document.documentElement) {
368                    e('<div class="dropdown-backdrop"/>').insertBefore(e(this)).on("click", r);
369                }
370                s.toggleClass("open");
371            }
372            n.focus();
373            return false;
374        },
375        keydown: function (n) {
376            var r, s, o, u, a, f;
377            if (!/(38|40|27)/.test(n.keyCode)) return;
378            r = e(this);
379            n.preventDefault();
380            n.stopPropagation();
381            if (r.is(".disabled, :disabled")) return;
382            u = i(r);
383            a = u.hasClass("open");
384            if (!a || (a && n.keyCode == 27)) {
385                if (n.which == 27) u.find(t).focus();
386                return r.click();
387            }
388            s = e("[role=menu] li:not(.divider):visible a", u);
389            if (!s.length) return;
390            f = s.index(s.filter(":focus"));
391            if (n.keyCode == 38 && f > 0) f--;
392            if (n.keyCode == 40 && f < s.length - 1) f++;
393            if (!~f) f = 0;
394            s.eq(f).focus();
395        },
396    };
397    var s = e.fn.dropdown;
398    e.fn.dropdown = function (t) {
399        return this.each(function () {
400            var r = e(this),
401                i = r.data("dropdown");
402            if (!i) r.data("dropdown", (i = new n(this)));
403            if (typeof t == "string") i[t].call(r);
404        });
405    };
406    e.fn.dropdown.Constructor = n;
407    e.fn.dropdown.noConflict = function () {
408        e.fn.dropdown = s;
409        return this;
410    };
411    e(document)
412        .on("click.dropdown.data-api", r)
413        .on("click.dropdown.data-api", ".dropdown form", function (e) {
414            e.stopPropagation();
415        })
416        .on("click.dropdown.data-api", t, n.prototype.toggle)
417        .on("keydown.dropdown.data-api", t + ", [role=menu]", n.prototype.keydown);
418})(window.jQuery);
419!(function (e) {
420    "use strict";
421    var t = function (t, n) {
422        this.options = n;
423        this.$element = e(t).delegate('[data-dismiss="modal"]', "click.dismiss.modal", e.proxy(this.hide, this));
424        this.options.remote && this.$element.find(".modal-body").load(this.options.remote);
425    };
426    t.prototype = {
427        constructor: t,
428        toggle: function () {
429            return this[!this.isShown ? "show" : "hide"]();
430        },
431        show: function () {
432            var t = this,
433                n = e.Event("show");
434            this.$element.trigger(n);
435            if (this.isShown || n.isDefaultPrevented()) return;
436            this.isShown = true;
437            this.escape();
438            this.backdrop(function () {
439                var n = e.support.transition && t.$element.hasClass("fade");
440                if (!t.$element.parent().length) {
441                    t.$element.appendTo(document.body);
442                }
443                t.$element.show();
444                if (n) {
445                    t.$element[0].offsetWidth;
446                }
447                t.$element.addClass("in").attr("aria-hidden", false).attr("isModal", true);
448                t.enforceFocus();
449                n
450                    ? t.$element.one(e.support.transition.end, function () {
451                          t.$element.focus().trigger("shown");
452                      })
453                    : t.$element.focus().trigger("shown");
454            });
455        },
456        hide: function (t) {
457            t && t.preventDefault();
458            var n = this;
459            t = e.Event("hide");
460            this.$element.trigger(t);
461            if (!this.isShown || t.isDefaultPrevented()) return;
462            this.isShown = false;
463            this.escape();
464            e(document).off("focusin.modal");
465            this.$element.removeClass("in").attr("aria-hidden", true);
466            e.support.transition && this.$element.hasClass("fade") ? this.hideWithTransition() : this.hideModal();
467        },
468        enforceFocus: function () {
469            var t = this;
470            e(document).on("focusin.modal", function (n) {
471                if (t.$element[0] !== n.target && !t.$element.has(n.target).length && e(n.target).attr("isModal") != "true" && e(n.target).parents("[isModal='true']").length == 0) {
472                    t.$element.focus();
473                }
474            });
475        },
476        escape: function () {
477            var e = this;
478            if (this.isShown && this.options.keyboard) {
479                this.$element.on("keyup.dismiss.modal", function (t) {
480                    t.which == 27 && e.hide();
481                });
482            } else if (!this.isShown) {
483                this.$element.off("keyup.dismiss.modal");
484            }
485        },
486        hideWithTransition: function () {
487            var t = this,
488                n = setTimeout(function () {
489                    t.$element.off(e.support.transition.end);
490                    t.hideModal();
491                }, 500);
492            this.$element.one(e.support.transition.end, function () {
493                clearTimeout(n);
494                t.hideModal();
495            });
496        },
497        hideModal: function () {
498            var e = this;
499            this.$element.hide();
500            this.backdrop(function () {
501                e.removeBackdrop();
502                e.$element.trigger("hidden");
503            });
504        },
505        removeBackdrop: function () {
506            this.$backdrop && this.$backdrop.remove();
507            this.$backdrop = null;
508        },
509        backdrop: function (t) {
510            var n = this,
511                r = this.$element.hasClass("fade") ? "fade" : "";
512            if (this.isShown && this.options.backdrop) {
513                var i = e.support.transition && r;
514                this.$backdrop = e('<div class="modal-backdrop ' + r + '" />').appendTo(document.body);
515                this.$backdrop.click(this.options.backdrop == "static" ? e.proxy(this.$element[0].focus, this.$element[0]) : e.proxy(this.hide, this));
516                if (i) this.$backdrop[0].offsetWidth;
517                this.$backdrop.addClass("in");
518                if (!t) return;
519                i ? this.$backdrop.one(e.support.transition.end, t) : t();
520            } else if (!this.isShown && this.$backdrop) {
521                this.$backdrop.removeClass("in");
522                e.support.transition && this.$element.hasClass("fade") ? this.$backdrop.one(e.support.transition.end, t) : t();
523            } else if (t) {
524                t();
525            }
526        },
527    };
528    var n = e.fn.modal;
529    e.fn.modal = function (n) {
530        return this.each(function () {
531            var r = e(this),
532                i = r.data("modal"),
533                s = e.extend({}, e.fn.modal.defaults, r.data(), typeof n == "object" && n);
534            if (!i) r.data("modal", (i = new t(this, s)));
535            if (typeof n == "string") i[n]();
536            else if (s.show) i.show();
537        });
538    };
539    e.fn.modal.defaults = { backdrop: true, keyboard: true, show: true };
540    e.fn.modal.Constructor = t;
541    e.fn.modal.noConflict = function () {
542        e.fn.modal = n;
543        return this;
544    };
545    e(document).on("click.modal.data-api", '[data-toggle="modal"]', function (t) {
546        var n = e(this),
547            r = n.attr("href"),
548            i = e(n.attr("data-target") || (r && r.replace(/.*(?=#[^\s]+$)/, ""))),
549            s = i.data("modal") ? "toggle" : e.extend({ remote: !/#/.test(r) && r }, i.data(), n.data());
550        t.preventDefault();
551        i.modal(s).one("hide", function () {
552            n.focus();
553        });
554    });
555})(window.jQuery);
556!(function (e) {
557    "use strict";
558    var t = function (e, t) {
559        this.init("tooltip", e, t);
560    };
561    t.prototype = {
562        constructor: t,
563        init: function (t, n, r) {
564            var i, s, o, u, a;
565            this.type = t;
566            this.$element = e(n);
567            this.options = this.getOptions(r);
568            this.enabled = true;
569            o = this.options.trigger.split(" ");
570            for (a = o.length; a--; ) {
571                u = o[a];
572                if (u == "click") {
573                    this.$element.on("click." + this.type, this.options.selector, e.proxy(this.toggle, this));
574                } else if (u != "manual") {
575                    i = u == "hover" ? "mouseenter" : "focus";
576                    s = u == "hover" ? "mouseleave" : "blur";
577                    this.$element.on(i + "." + this.type, this.options.selector, e.proxy(this.enter, this));
578                    this.$element.on(s + "." + this.type, this.options.selector, e.proxy(this.leave, this));
579                }
580            }
581            this.options.selector ? (this._options = e.extend({}, this.options, { trigger: "manual", selector: "" })) : this.fixTitle();
582        },
583        getOptions: function (t) {
584            t = e.extend({}, e.fn[this.type].defaults, this.$element.data(), t);
585            if (t.delay && typeof t.delay == "number") {
586                t.delay = { show: t.delay, hide: t.delay };
587            }
588            return t;
589        },
590        enter: function (t) {
591            var n = e.fn[this.type].defaults,
592                r = {},
593                i;
594            this._options &&
595                e.each(
596                    this._options,
597                    function (e, t) {
598                        if (n[e] != t) r[e] = t;
599                    },
600                    this
601                );
602            i = e(t.currentTarget)[this.type](r).data(this.type);
603            if (!i.options.delay || !i.options.delay.show) return i.show();
604            clearTimeout(this.timeout);
605            i.hoverState = "in";
606            this.timeout = setTimeout(function () {
607                if (i.hoverState == "in") i.show();
608            }, i.options.delay.show);
609        },
610        leave: function (t) {
611            var n = e(t.currentTarget)[this.type](this._options).data(this.type);
612            if (this.timeout) clearTimeout(this.timeout);
613            if (!n.options.delay || !n.options.delay.hide) return n.hide();
614            n.hoverState = "out";
615            this.timeout = setTimeout(function () {
616                if (n.hoverState == "out") n.hide();
617            }, n.options.delay.hide);
618        },
619        show: function () {
620            var t,
621                n,
622                r,
623                i,
624                s,
625                o,
626                u = e.Event("show");
627            if (this.hasContent() && this.enabled) {
628                this.$element.trigger(u);
629                if (u.isDefaultPrevented()) return;
630                t = this.tip();
631                this.setContent();
632                if (this.options.animation) {
633                    t.addClass("fade");
634                }
635                s = typeof this.options.placement == "function" ? this.options.placement.call(this, t[0], this.$element[0]) : this.options.placement;
636                t.detach().css({ top: 0, left: 0, display: "block" });
637                this.options.container ? t.appendTo(this.options.container) : t.insertAfter(this.$element);
638                n = this.getPosition();
639                r = t[0].offsetWidth;
640                i = t[0].offsetHeight;
641                switch (s) {
642                    case "bottom":
643                        o = { top: n.top + n.height, left: n.left + n.width / 2 - r / 2 };
644                        break;
645                    case "top":
646                        o = { top: n.top - i, left: n.left + n.width / 2 - r / 2 };
647                        break;
648                    case "left":
649                        o = { top: n.top + n.height / 2 - i / 2, left: n.left - r };
650                        break;
651                    case "right":
652                        o = { top: n.top + n.height / 2 - i / 2, left: n.left + n.width };
653                        break;
654                }
655                this.applyPlacement(o, s);
656                this.$element.trigger("shown");
657            }
658        },
659        applyPlacement: function (e, t) {
660            var n = this.tip(),
661                r = n[0].offsetWidth,
662                i = n[0].offsetHeight,
663                s,
664                o,
665                u,
666                a;
667            n.offset(e).addClass(t).addClass("in");
668            s = n[0].offsetWidth;
669            o = n[0].offsetHeight;
670            if (t == "top" && o != i) {
671                e.top = e.top + i - o;
672                a = true;
673            }
674            if (t == "bottom" || t == "top") {
675                u = 0;
676                if (e.left < 0) {
677                    u = e.left * -2;
678                    e.left = 0;
679                    n.offset(e);
680                    s = n[0].offsetWidth;
681                    o = n[0].offsetHeight;
682                }
683                this.replaceArrow(u - r + s, s, "left");
684            } else {
685                this.replaceArrow(o - i, o, "top");
686            }
687            if (a) n.offset(e);
688        },
689        replaceArrow: function (e, t, n) {
690            this.arrow().css(n, e ? 50 * (1 - e / t) + "%" : "");
691        },
692        setContent: function () {
693            var e = this.tip(),
694                t = this.getTitle();
695            e.find(".tooltip-inner")[this.options.html ? "html" : "text"](t);
696            e.removeClass("fade in top bottom left right");
697        },
698        hide: function () {
699            function i() {
700                var t = setTimeout(function () {
701                    n.off(e.support.transition.end).detach();
702                }, 500);
703                n.one(e.support.transition.end, function () {
704                    clearTimeout(t);
705                    n.detach();
706                });
707            }
708            var t = this,
709                n = this.tip(),
710                r = e.Event("hide");
711            this.$element.trigger(r);
712            if (r.isDefaultPrevented()) return;
713            n.removeClass("in");
714            e.support.transition && this.$tip.hasClass("fade") ? i() : n.detach();
715            this.$element.trigger("hidden");
716            return this;
717        },
718        fixTitle: function () {
719            var e = this.$element;
720            if (e.attr("title") || typeof e.attr("data-original-title") != "string") {
721                e.attr("data-original-title", e.attr("title") || "").attr("title", "");
722            }
723        },
724        hasContent: function () {
725            return this.getTitle();
726        },
727        getPosition: function () {
728            var t = this.$element[0];
729            return e.extend({}, typeof t.getBoundingClientRect == "function" ? t.getBoundingClientRect() : { width: t.offsetWidth, height: t.offsetHeight }, this.$element.offset());
730        },
731        getTitle: function () {
732            var e,
733                t = this.$element,
734                n = this.options;
735            e = t.attr("data-original-title") || (typeof n.title == "function" ? n.title.call(t[0]) : n.title);
736            return e;
737        },
738        tip: function () {
739            return (this.$tip = this.$tip || e(this.options.template));
740        },
741        arrow: function () {
742            return (this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow"));
743        },
744        validate: function () {
745            if (!this.$element[0].parentNode) {
746                this.hide();
747                this.$element = null;
748                this.options = null;
749            }
750        },
751        enable: function () {
752            this.enabled = true;
753        },
754        disable: function () {
755            this.enabled = false;
756        },
757        toggleEnabled: function () {
758            this.enabled = !this.enabled;
759        },
760        toggle: function (t) {
761            var n = t ? e(t.currentTarget)[this.type](this._options).data(this.type) : this;
762            n.tip().hasClass("in") ? n.hide() : n.show();
763        },
764        destroy: function () {
765            this.hide()
766                .$element.off("." + this.type)
767                .removeData(this.type);
768        },
769    };
770    var n = e.fn.tooltip;
771    e.fn.tooltip = function (n) {
772        return this.each(function () {
773            var r = e(this),
774                i = r.data("tooltip"),
775                s = typeof n == "object" && n;
776            if (!i) r.data("tooltip", (i = new t(this, s)));
777            if (typeof n == "string") i[n]();
778        });
779    };
780    e.fn.tooltip.Constructor = t;
781    e.fn.tooltip.defaults = {
782        animation: true,
783        placement: "top",
784        selector: false,
785        template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
786        trigger: "hover focus",
787        title: "",
788        delay: 0,
789        html: false,
790        container: false,
791    };
792    e.fn.tooltip.noConflict = function () {
793        e.fn.tooltip = n;
794        return this;
795    };
796})(window.jQuery);
797!(function (e) {
798    "use strict";
799    var t = function (e, t) {
800        this.init("popover", e, t);
801    };
802    t.prototype = e.extend({}, e.fn.tooltip.Constructor.prototype, {
803        constructor: t,
804        setContent: function () {
805            var e = this.tip(),
806                t = this.getTitle(),
807                n = this.getContent();
808            e.find(".popover-title")[this.options.html ? "html" : "text"](t);
809            e.find(".popover-content")[this.options.html ? "html" : "text"](n);
810            e.removeClass("fade top bottom left right in");
811        },
812        hasContent: function () {
813            return this.getTitle() || this.getContent();
814        },
815        getContent: function () {
816            var e,
817                t = this.$element,
818                n = this.options;
819            e = (typeof n.content == "function" ? n.content.call(t[0]) : n.content) || t.attr("data-content");
820            return e;
821        },
822        tip: function () {
823            if (!this.$tip) {
824                this.$tip = e(this.options.template);
825            }
826            return this.$tip;
827        },
828        destroy: function () {
829            this.hide()
830                .$element.off("." + this.type)
831                .removeData(this.type);
832        },
833    });
834    var n = e.fn.popover;
835    e.fn.popover = function (n) {
836        return this.each(function () {
837            var r = e(this),
838                i = r.data("popover"),
839                s = typeof n == "object" && n;
840            if (!i) r.data("popover", (i = new t(this, s)));
841            if (typeof n == "string") i[n]();
842        });
843    };
844    e.fn.popover.Constructor = t;
845    e.fn.popover.defaults = e.extend({}, e.fn.tooltip.defaults, {
846        placement: "right",
847        trigger: "click",
848        content: "",
849        template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>',
850    });
851    e.fn.popover.noConflict = function () {
852        e.fn.popover = n;
853        return this;
854    };
855})(window.jQuery);
856!(function (e) {
857    "use strict";
858    function t(t, n) {
859        var r = e.proxy(this.process, this),
860            i = e(t).is("body") ? e(window) : e(t),
861            s;
862        this.options = e.extend({}, e.fn.scrollspy.defaults, n);
863        this.$scrollElement = i.on("scroll.scroll-spy.data-api", r);
864        this.selector = (this.options.target || ((s = e(t).attr("href")) && s.replace(/.*(?=#[^\s]+$)/, "")) || "") + " .nav li > a";
865        this.$body = e("body");
866        this.refresh();
867        this.process();
868    }
869    t.prototype = {
870        constructor: t,
871        refresh: function () {
872            var t = this,
873                n;
874            this.offsets = e([]);
875            this.targets = e([]);
876            n = this.$body
877                .find(this.selector)
878                .map(function () {
879                    var n = e(this),
880                        r = n.data("target") || n.attr("href"),
881                        i = /^#\w/.test(r) && e(r);
882                    return (i && i.length && [[i.position().top + (!e.isWindow(t.$scrollElement.get(0)) && t.$scrollElement.scrollTop()), r]]) || null;
883                })
884                .sort(function (e, t) {
885                    return e[0] - t[0];
886                })
887                .each(function () {
888                    t.offsets.push(this[0]);
889                    t.targets.push(this[1]);
890                });
891        },
892        process: function () {
893            var e = this.$scrollElement.scrollTop() + this.options.offset,
894                t = this.$scrollElement[0].scrollHeight || this.$body[0].scrollHeight,
895                n = t - this.$scrollElement.height(),
896                r = this.offsets,
897                i = this.targets,
898                s = this.activeTarget,
899                o;
900            if (e >= n) {
901                return s != (o = i.last()[0]) && this.activate(o);
902            }
903            for (o = r.length; o--; ) {
904                s != i[o] && e >= r[o] && (!r[o + 1] || e <= r[o + 1]) && this.activate(i[o]);
905            }
906        },
907        activate: function (t) {
908            var n, r;
909            this.activeTarget = t;
910            e(this.selector).parent(".active").removeClass("active");
911            r = this.selector + '[data-target="' + t + '"],' + this.selector + '[href="' + t + '"]';
912            n = e(r).parent("li").addClass("active");
913            if (n.parent(".dropdown-menu").length) {
914                n = n.closest("li.dropdown").addClass("active");
915            }
916            n.trigger("activate");
917        },
918    };
919    var n = e.fn.scrollspy;
920    e.fn.scrollspy = function (n) {
921        return this.each(function () {
922            var r = e(this),
923                i = r.data("scrollspy"),
924                s = typeof n == "object" && n;
925            if (!i) r.data("scrollspy", (i = new t(this, s)));
926            if (typeof n == "string") i[n]();
927        });
928    };
929    e.fn.scrollspy.Constructor = t;
930    e.fn.scrollspy.defaults = { offset: 10 };
931    e.fn.scrollspy.noConflict = function () {
932        e.fn.scrollspy = n;
933        return this;
934    };
935    e(window).on("load", function () {
936        e('[data-spy="scroll"]').each(function () {
937            var t = e(this);
938            t.scrollspy(t.data());
939        });
940    });
941})(window.jQuery);
942!(function (e) {
943    "use strict";
944    var t = function (t) {
945        this.element = e(t);
946    };
947    t.prototype = {
948        constructor: t,
949        show: function () {
950            var t = this.element,
951                n = t.closest("ul:not(.dropdown-menu)"),
952                r = t.attr("data-target"),
953                i,
954                s,
955                o;
956            if (!r) {
957                r = t.attr("href");
958                r = r && r.replace(/.*(?=#[^\s]*$)/, "");
959            }
960            if (t.parent("li").hasClass("active")) return;
961            i = n.find(".active:last a")[0];
962            o = e.Event("show", { relatedTarget: i });
963            t.trigger(o);
964            if (o.isDefaultPrevented()) return;
965            s = e(r);
966            this.activate(t.parent("li"), n);
967            this.activate(s, s.parent(), function () {
968                t.trigger({ type: "shown", relatedTarget: i });
969            });
970        },
971        activate: function (t, n, r) {
972            function o() {
973                i.removeClass("active").find("> .dropdown-menu > .active").removeClass("active");
974                t.addClass("active");
975                if (s) {
976                    t[0].offsetWidth;
977                    t.addClass("in");
978                } else {
979                    t.removeClass("fade");
980                }
981                if (t.parent(".dropdown-menu")) {
982                    t.closest("li.dropdown").addClass("active");
983                }
984                r && r();
985            }
986            var i = n.find("> .active"),
987                s = r && e.support.transition && i.hasClass("fade");
988            s ? i.one(e.support.transition.end, o) : o();
989            i.removeClass("in");
990        },
991    };
992    var n = e.fn.tab;
993    e.fn.tab = function (n) {
994        return this.each(function () {
995            var r = e(this),
996                i = r.data("tab");
997            if (!i) r.data("tab", (i = new t(this)));
998            if (typeof n == "string") i[n]();
999        });
1000    };
1001    e.fn.tab.Constructor = t;
1002    e.fn.tab.noConflict = function () {
1003        e.fn.tab = n;
1004        return this;
1005    };
1006    e(document).on("click.tab.data-api", '[data-toggle="tab"], [data-toggle="pill"]', function (t) {
1007        t.preventDefault();
1008        e(this).tab("show");
1009    });
1010})(window.jQuery);
1011!(function (e) {
1012    "use strict";
1013    var t = function (t, n) {
1014        this.$element = e(t);
1015        this.options = e.extend({}, e.fn.typeahead.defaults, n);
1016        this.matcher = this.options.matcher || this.matcher;
1017        this.sorter = this.options.sorter || this.sorter;
1018        this.highlighter = this.options.highlighter || this.highlighter;
1019        this.updater = this.options.updater || this.updater;
1020        this.source = this.options.source;
1021        this.$menu = e(this.options.menu);
1022        this.shown = false;
1023        this.listen();
1024    };
1025    t.prototype = {
1026        constructor: t,
1027        select: function () {
1028            var e = this.$menu.find(".active").attr("data-value");
1029            this.$element.val(this.updater(e)).change();
1030            return this.hide();
1031        },
1032        updater: function (e) {
1033            return e;
1034        },
1035        show: function () {
1036            var t = e.extend({}, this.$element.position(), { height: this.$element[0].offsetHeight });
1037            this.$menu
1038                .insertAfter(this.$element)
1039                .css({ top: t.top + t.height, left: t.left })
1040                .show();
1041            this.shown = true;
1042            return this;
1043        },
1044        hide: function () {
1045            this.$menu.hide();
1046            this.shown = false;
1047            return this;
1048        },
1049        lookup: function (t) {
1050            var n;
1051            this.query = this.$element.val();
1052            if (!this.query || this.query.length < this.options.minLength) {
1053                return this.shown ? this.hide() : this;
1054            }
1055            n = e.isFunction(this.source) ? this.source(this.query, e.proxy(this.process, this)) : this.source;
1056            return n ? this.process(n) : this;
1057        },
1058        process: function (t) {
1059            var n = this;
1060            t = e.grep(t, function (e) {
1061                return n.matcher(e);
1062            });
1063            t = this.sorter(t);
1064            if (!t.length) {
1065                return this.shown ? this.hide() : this;
1066            }
1067            return this.render(t.slice(0, this.options.items)).show();
1068        },
1069        matcher: function (e) {
1070            return ~e.toLowerCase().indexOf(this.query.toLowerCase());
1071        },
1072        sorter: function (e) {
1073            var t = [],
1074                n = [],
1075                r = [],
1076                i;
1077            while ((i = e.shift())) {
1078                if (!i.toLowerCase().indexOf(this.query.toLowerCase())) t.push(i);
1079                else if (~i.indexOf(this.query)) n.push(i);
1080                else r.push(i);
1081            }
1082            return t.concat(n, r);
1083        },
1084        highlighter: function (e) {
1085            var t = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&");
1086            return e.replace(new RegExp("(" + t + ")", "ig"), function (e, t) {
1087                return "<strong>" + t + "</strong>";
1088            });
1089        },
1090        render: function (t) {
1091            var n = this;
1092            t = e(t).map(function (t, r) {
1093                t = e(n.options.item).attr("data-value", r);
1094                t.find("a").html(n.highlighter(r));
1095                return t[0];
1096            });
1097            t.first().addClass("active");
1098            this.$menu.html(t);
1099            return this;
1100        },
1101        next: function (t) {
1102            var n = this.$menu.find(".active").removeClass("active"),
1103                r = n.next();
1104            if (!r.length) {
1105                r = e(this.$menu.find("li")[0]);
1106            }
1107            r.addClass("active");
1108        },
1109        prev: function (e) {
1110            var t = this.$menu.find(".active").removeClass("active"),
1111                n = t.prev();
1112            if (!n.length) {
1113                n = this.$menu.find("li").last();
1114            }
1115            n.addClass("active");
1116        },
1117        listen: function () {
1118            this.$element.on("focus", e.proxy(this.focus, this)).on("blur", e.proxy(this.blur, this)).on("keypress", e.proxy(this.keypress, this)).on("keyup", e.proxy(this.keyup, this));
1119            if (this.eventSupported("keydown")) {
1120                this.$element.on("keydown", e.proxy(this.keydown, this));
1121            }
1122            this.$menu.on("click", e.proxy(this.click, this)).on("mouseenter", "li", e.proxy(this.mouseenter, this)).on("mouseleave", "li", e.proxy(this.mouseleave, this));
1123        },
1124        eventSupported: function (e) {
1125            var t = e in this.$element;
1126            if (!t) {
1127                this.$element.setAttribute(e, "return;");
1128                t = typeof this.$element[e] === "function";
1129            }
1130            return t;
1131        },
1132        move: function (e) {
1133            if (!this.shown) return;
1134            switch (e.keyCode) {
1135                case 9:
1136                case 13:
1137                case 27:
1138                    e.preventDefault();
1139                    break;
1140                case 38:
1141                    e.preventDefault();
1142                    this.prev();
1143                    break;
1144                case 40:
1145                    e.preventDefault();
1146                    this.next();
1147                    break;
1148            }
1149            e.stopPropagation();
1150        },
1151        keydown: function (t) {
1152            this.suppressKeyPressRepeat = ~e.inArray(t.keyCode, [40, 38, 9, 13, 27]);
1153            this.move(t);
1154        },
1155        keypress: function (e) {
1156            if (this.suppressKeyPressRepeat) return;
1157            this.move(e);
1158        },
1159        keyup: function (e) {
1160            switch (e.keyCode) {
1161                case 40:
1162                case 38:
1163                case 16:
1164                case 17:
1165                case 18:
1166                    break;
1167                case 9:
1168                case 13:
1169                    if (!this.shown) return;
1170                    this.select();
1171                    break;
1172                case 27:
1173                    if (!this.shown) return;
1174                    this.hide();
1175                    break;
1176                default:
1177                    this.lookup();
1178            }
1179            e.stopPropagation();
1180            e.preventDefault();
1181        },
1182        focus: function (e) {
1183            this.focused = true;
1184        },
1185        blur: function (e) {
1186            this.focused = false;
1187            if (!this.mousedover && this.shown) this.hide();
1188        },
1189        click: function (e) {
1190            e.stopPropagation();
1191            e.preventDefault();
1192            this.select();
1193            this.$element.focus();
1194        },
1195        mouseenter: function (t) {
1196            this.mousedover = true;
1197            this.$menu.find(".active").removeClass("active");
1198            e(t.currentTarget).addClass("active");
1199        },
1200        mouseleave: function (e) {
1201            this.mousedover = false;
1202            if (!this.focused && this.shown) this.hide();
1203        },
1204    };
1205    var n = e.fn.typeahead;
1206    e.fn.typeahead = function (n) {
1207        return this.each(function () {
1208            var r = e(this),
1209                i = r.data("typeahead"),
1210                s = typeof n == "object" && n;
1211            if (!i) r.data("typeahead", (i = new t(this, s)));
1212            if (typeof n == "string") i[n]();
1213        });
1214    };
1215    e.fn.typeahead.defaults = { source: [], items: 8, menu: '<ul class="typeahead dropdown-menu"></ul>', item: '<li><a href="#"></a></li>', minLength: 1 };
1216    e.fn.typeahead.Constructor = t;
1217    e.fn.typeahead.noConflict = function () {
1218        e.fn.typeahead = n;
1219        return this;
1220    };
1221    e(document).on("focus.typeahead.data-api", '[data-provide="typeahead"]', function (t) {
1222        var n = e(this);
1223        if (n.data("typeahead")) return;
1224        n.typeahead(n.data());
1225    });
1226})(window.jQuery);
1227!(function (e) {
1228    "use strict";
1229    var t = function (t, n) {
1230        this.options = e.extend({}, e.fn.affix.defaults, n);
1231        this.$window = e(window)
1232            .on("scroll.affix.data-api", e.proxy(this.checkPosition, this))
1233            .on(
1234                "click.affix.data-api",
1235                e.proxy(function () {
1236                    setTimeout(e.proxy(this.checkPosition, this), 1);
1237                }, this)
1238            );
1239        this.$element = e(t);
1240        this.checkPosition();
1241    };
1242    t.prototype.checkPosition = function () {
1243        if (!this.$element.is(":visible")) return;
1244        var t = e(document).height(),
1245            n = this.$window.scrollTop(),
1246            r = this.$element.offset(),
1247            i = this.options.offset,
1248            s = i.bottom,
1249            o = i.top,
1250            u = "affix affix-top affix-bottom",
1251            a;
1252        if (typeof i != "object") s = o = i;
1253        if (typeof o == "function") o = i.top();
1254        if (typeof s == "function") s = i.bottom();
1255        a = this.unpin != null && n + this.unpin <= r.top ? false : s != null && r.top + this.$element.height() >= t - s ? "bottom" : o != null && n <= o ? "top" : false;
1256        if (this.affixed === a) return;
1257        this.affixed = a;
1258        this.unpin = a == "bottom" ? r.top - n : null;
1259        this.$element.removeClass(u).addClass("affix" + (a ? "-" + a : ""));
1260    };
1261    var n = e.fn.affix;
1262    e.fn.affix = function (n) {
1263        return this.each(function () {
1264            var r = e(this),
1265                i = r.data("affix"),
1266                s = typeof n == "object" && n;
1267            if (!i) r.data("affix", (i = new t(this, s)));
1268            if (typeof n == "string") i[n]();
1269        });
1270    };
1271    e.fn.affix.Constructor = t;
1272    e.fn.affix.defaults = { offset: 0 };
1273    e.fn.affix.noConflict = function () {
1274        e.fn.affix = n;
1275        return this;
1276    };
1277    e(window).on("load", function () {
1278        e('[data-spy="affix"]').each(function () {
1279            var t = e(this),
1280                n = t.data();
1281            n.offset = n.offset || {};
1282            n.offsetBottom && (n.offset.bottom = n.offsetBottom);
1283            n.offsetTop && (n.offset.top = n.offsetTop);
1284            t.affix(n);
1285        });
1286    });
1287})(window.jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.