aboutsummaryrefslogtreecommitdiff
path: root/dist/js
diff options
context:
space:
mode:
Diffstat (limited to 'dist/js')
-rw-r--r--dist/js/bootstrap.js551
-rw-r--r--dist/js/bootstrap.min.js10
2 files changed, 331 insertions, 230 deletions
diff --git a/dist/js/bootstrap.js b/dist/js/bootstrap.js
index 8dff365f..8a2e99a5 100644
--- a/dist/js/bootstrap.js
+++ b/dist/js/bootstrap.js
@@ -1,7 +1,7 @@
1/*! 1/*!
2 * Bootstrap v3.3.0 (http://getbootstrap.com) 2 * Bootstrap v3.3.7 (http://getbootstrap.com)
3 * Copyright 2011-2014 Twitter, Inc. 3 * Copyright 2011-2016 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 4 * Licensed under the MIT license
5 */ 5 */
6 6
7if (typeof jQuery === 'undefined') { 7if (typeof jQuery === 'undefined') {
@@ -9,17 +9,18 @@ if (typeof jQuery === 'undefined') {
9} 9}
10 10
11+function ($) { 11+function ($) {
12 'use strict';
12 var version = $.fn.jquery.split(' ')[0].split('.') 13 var version = $.fn.jquery.split(' ')[0].split('.')
13 if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { 14 if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {
14 throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') 15 throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')
15 } 16 }
16}(jQuery); 17}(jQuery);
17 18
18/* ======================================================================== 19/* ========================================================================
19 * Bootstrap: transition.js v3.3.0 20 * Bootstrap: transition.js v3.3.7
20 * http://getbootstrap.com/javascript/#transitions 21 * http://getbootstrap.com/javascript/#transitions
21 * ======================================================================== 22 * ========================================================================
22 * Copyright 2011-2014 Twitter, Inc. 23 * Copyright 2011-2016 Twitter, Inc.
23 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 24 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
24 * ======================================================================== */ 25 * ======================================================================== */
25 26
@@ -76,10 +77,10 @@ if (typeof jQuery === 'undefined') {
76}(jQuery); 77}(jQuery);
77 78
78/* ======================================================================== 79/* ========================================================================
79 * Bootstrap: alert.js v3.3.0 80 * Bootstrap: alert.js v3.3.7
80 * http://getbootstrap.com/javascript/#alerts 81 * http://getbootstrap.com/javascript/#alerts
81 * ======================================================================== 82 * ========================================================================
82 * Copyright 2011-2014 Twitter, Inc. 83 * Copyright 2011-2016 Twitter, Inc.
83 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 84 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
84 * ======================================================================== */ 85 * ======================================================================== */
85 86
@@ -95,7 +96,7 @@ if (typeof jQuery === 'undefined') {
95 $(el).on('click', dismiss, this.close) 96 $(el).on('click', dismiss, this.close)
96 } 97 }
97 98
98 Alert.VERSION = '3.3.0' 99 Alert.VERSION = '3.3.7'
99 100
100 Alert.TRANSITION_DURATION = 150 101 Alert.TRANSITION_DURATION = 150
101 102
@@ -108,7 +109,7 @@ if (typeof jQuery === 'undefined') {
108 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 109 selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
109 } 110 }
110 111
111 var $parent = $(selector) 112 var $parent = $(selector === '#' ? [] : selector)
112 113
113 if (e) e.preventDefault() 114 if (e) e.preventDefault()
114 115
@@ -171,10 +172,10 @@ if (typeof jQuery === 'undefined') {
171}(jQuery); 172}(jQuery);
172 173
173/* ======================================================================== 174/* ========================================================================
174 * Bootstrap: button.js v3.3.0 175 * Bootstrap: button.js v3.3.7
175 * http://getbootstrap.com/javascript/#buttons 176 * http://getbootstrap.com/javascript/#buttons
176 * ======================================================================== 177 * ========================================================================
177 * Copyright 2011-2014 Twitter, Inc. 178 * Copyright 2011-2016 Twitter, Inc.
178 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 179 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
179 * ======================================================================== */ 180 * ======================================================================== */
180 181
@@ -191,7 +192,7 @@ if (typeof jQuery === 'undefined') {
191 this.isLoading = false 192 this.isLoading = false
192 } 193 }
193 194
194 Button.VERSION = '3.3.0' 195 Button.VERSION = '3.3.7'
195 196
196 Button.DEFAULTS = { 197 Button.DEFAULTS = {
197 loadingText: 'loading...' 198 loadingText: 'loading...'
@@ -203,7 +204,7 @@ if (typeof jQuery === 'undefined') {
203 var val = $el.is('input') ? 'val' : 'html' 204 var val = $el.is('input') ? 'val' : 'html'
204 var data = $el.data() 205 var data = $el.data()
205 206
206 state = state + 'Text' 207 state += 'Text'
207 208
208 if (data.resetText == null) $el.data('resetText', $el[val]()) 209 if (data.resetText == null) $el.data('resetText', $el[val]())
209 210
@@ -213,10 +214,10 @@ if (typeof jQuery === 'undefined') {
213 214
214 if (state == 'loadingText') { 215 if (state == 'loadingText') {
215 this.isLoading = true 216 this.isLoading = true
216 $el.addClass(d).attr(d, d) 217 $el.addClass(d).attr(d, d).prop(d, true)
217 } else if (this.isLoading) { 218 } else if (this.isLoading) {
218 this.isLoading = false 219 this.isLoading = false
219 $el.removeClass(d).removeAttr(d) 220 $el.removeClass(d).removeAttr(d).prop(d, false)
220 } 221 }
221 }, this), 0) 222 }, this), 0)
222 } 223 }
@@ -228,15 +229,19 @@ if (typeof jQuery === 'undefined') {
228 if ($parent.length) { 229 if ($parent.length) {
229 var $input = this.$element.find('input') 230 var $input = this.$element.find('input')
230 if ($input.prop('type') == 'radio') { 231 if ($input.prop('type') == 'radio') {
231 if ($input.prop('checked') && this.$element.hasClass('active')) changed = false 232 if ($input.prop('checked')) changed = false
232 else $parent.find('.active').removeClass('active') 233 $parent.find('.active').removeClass('active')
234 this.$element.addClass('active')
235 } else if ($input.prop('type') == 'checkbox') {
236 if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
237 this.$element.toggleClass('active')
233 } 238 }
234 if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') 239 $input.prop('checked', this.$element.hasClass('active'))
240 if (changed) $input.trigger('change')
235 } else { 241 } else {
236 this.$element.attr('aria-pressed', !this.$element.hasClass('active')) 242 this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
243 this.$element.toggleClass('active')
237 } 244 }
238
239 if (changed) this.$element.toggleClass('active')
240 } 245 }
241 246
242 247
@@ -276,22 +281,27 @@ if (typeof jQuery === 'undefined') {
276 281
277 $(document) 282 $(document)
278 .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { 283 .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) {
279 var $btn = $(e.target) 284 var $btn = $(e.target).closest('.btn')
280 if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
281 Plugin.call($btn, 'toggle') 285 Plugin.call($btn, 'toggle')
282 e.preventDefault() 286 if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) {
287 // Prevent double click on radios, and the double selections (so cancellation) on checkboxes
288 e.preventDefault()
289 // The target component still receive the focus
290 if ($btn.is('input,button')) $btn.trigger('focus')
291 else $btn.find('input:visible,button:visible').first().trigger('focus')
292 }
283 }) 293 })
284 .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { 294 .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
285 $(e.target).closest('.btn').toggleClass('focus', e.type == 'focus') 295 $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
286 }) 296 })
287 297
288}(jQuery); 298}(jQuery);
289 299
290/* ======================================================================== 300/* ========================================================================
291 * Bootstrap: carousel.js v3.3.0 301 * Bootstrap: carousel.js v3.3.7
292 * http://getbootstrap.com/javascript/#carousel 302 * http://getbootstrap.com/javascript/#carousel
293 * ======================================================================== 303 * ========================================================================
294 * Copyright 2011-2014 Twitter, Inc. 304 * Copyright 2011-2016 Twitter, Inc.
295 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 305 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
296 * ======================================================================== */ 306 * ======================================================================== */
297 307
@@ -306,10 +316,10 @@ if (typeof jQuery === 'undefined') {
306 this.$element = $(element) 316 this.$element = $(element)
307 this.$indicators = this.$element.find('.carousel-indicators') 317 this.$indicators = this.$element.find('.carousel-indicators')
308 this.options = options 318 this.options = options
309 this.paused = 319 this.paused = null
310 this.sliding = 320 this.sliding = null
311 this.interval = 321 this.interval = null
312 this.$active = 322 this.$active = null
313 this.$items = null 323 this.$items = null
314 324
315 this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) 325 this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
@@ -319,7 +329,7 @@ if (typeof jQuery === 'undefined') {
319 .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) 329 .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
320 } 330 }
321 331
322 Carousel.VERSION = '3.3.0' 332 Carousel.VERSION = '3.3.7'
323 333
324 Carousel.TRANSITION_DURATION = 600 334 Carousel.TRANSITION_DURATION = 600
325 335
@@ -331,6 +341,7 @@ if (typeof jQuery === 'undefined') {
331 } 341 }
332 342
333 Carousel.prototype.keydown = function (e) { 343 Carousel.prototype.keydown = function (e) {
344 if (/input|textarea/i.test(e.target.tagName)) return
334 switch (e.which) { 345 switch (e.which) {
335 case 37: this.prev(); break 346 case 37: this.prev(); break
336 case 39: this.next(); break 347 case 39: this.next(); break
@@ -358,8 +369,11 @@ if (typeof jQuery === 'undefined') {
358 } 369 }
359 370
360 Carousel.prototype.getItemForDirection = function (direction, active) { 371 Carousel.prototype.getItemForDirection = function (direction, active) {
361 var delta = direction == 'prev' ? -1 : 1
362 var activeIndex = this.getItemIndex(active) 372 var activeIndex = this.getItemIndex(active)
373 var willWrap = (direction == 'prev' && activeIndex === 0)
374 || (direction == 'next' && activeIndex == (this.$items.length - 1))
375 if (willWrap && !this.options.wrap) return active
376 var delta = direction == 'prev' ? -1 : 1
363 var itemIndex = (activeIndex + delta) % this.$items.length 377 var itemIndex = (activeIndex + delta) % this.$items.length
364 return this.$items.eq(itemIndex) 378 return this.$items.eq(itemIndex)
365 } 379 }
@@ -404,14 +418,8 @@ if (typeof jQuery === 'undefined') {
404 var $next = next || this.getItemForDirection(type, $active) 418 var $next = next || this.getItemForDirection(type, $active)
405 var isCycling = this.interval 419 var isCycling = this.interval
406 var direction = type == 'next' ? 'left' : 'right' 420 var direction = type == 'next' ? 'left' : 'right'
407 var fallback = type == 'next' ? 'first' : 'last'
408 var that = this 421 var that = this
409 422
410 if (!$next.length) {
411 if (!this.options.wrap) return
412 $next = this.$element.find('.item')[fallback]()
413 }
414
415 if ($next.hasClass('active')) return (this.sliding = false) 423 if ($next.hasClass('active')) return (this.sliding = false)
416 424
417 var relatedTarget = $next[0] 425 var relatedTarget = $next[0]
@@ -528,13 +536,14 @@ if (typeof jQuery === 'undefined') {
528}(jQuery); 536}(jQuery);
529 537
530/* ======================================================================== 538/* ========================================================================
531 * Bootstrap: collapse.js v3.3.0 539 * Bootstrap: collapse.js v3.3.7
532 * http://getbootstrap.com/javascript/#collapse 540 * http://getbootstrap.com/javascript/#collapse
533 * ======================================================================== 541 * ========================================================================
534 * Copyright 2011-2014 Twitter, Inc. 542 * Copyright 2011-2016 Twitter, Inc.
535 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 543 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
536 * ======================================================================== */ 544 * ======================================================================== */
537 545
546/* jshint latedef: false */
538 547
539+function ($) { 548+function ($) {
540 'use strict'; 549 'use strict';
@@ -545,7 +554,8 @@ if (typeof jQuery === 'undefined') {
545 var Collapse = function (element, options) { 554 var Collapse = function (element, options) {
546 this.$element = $(element) 555 this.$element = $(element)
547 this.options = $.extend({}, Collapse.DEFAULTS, options) 556 this.options = $.extend({}, Collapse.DEFAULTS, options)
548 this.$trigger = $(this.options.trigger).filter('[href="#' + element.id + '"], [data-target="#' + element.id + '"]') 557 this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' +
558 '[data-toggle="collapse"][data-target="#' + element.id + '"]')
549 this.transitioning = null 559 this.transitioning = null
550 560
551 if (this.options.parent) { 561 if (this.options.parent) {
@@ -557,13 +567,12 @@ if (typeof jQuery === 'undefined') {
557 if (this.options.toggle) this.toggle() 567 if (this.options.toggle) this.toggle()
558 } 568 }
559 569
560 Collapse.VERSION = '3.3.0' 570 Collapse.VERSION = '3.3.7'
561 571
562 Collapse.TRANSITION_DURATION = 350 572 Collapse.TRANSITION_DURATION = 350
563 573
564 Collapse.DEFAULTS = { 574 Collapse.DEFAULTS = {
565 toggle: true, 575 toggle: true
566 trigger: '[data-toggle="collapse"]'
567 } 576 }
568 577
569 Collapse.prototype.dimension = function () { 578 Collapse.prototype.dimension = function () {
@@ -575,7 +584,7 @@ if (typeof jQuery === 'undefined') {
575 if (this.transitioning || this.$element.hasClass('in')) return 584 if (this.transitioning || this.$element.hasClass('in')) return
576 585
577 var activesData 586 var activesData
578 var actives = this.$parent && this.$parent.find('> .panel').children('.in, .collapsing') 587 var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')
579 588
580 if (actives && actives.length) { 589 if (actives && actives.length) {
581 activesData = actives.data('bs.collapse') 590 activesData = actives.data('bs.collapse')
@@ -701,7 +710,7 @@ if (typeof jQuery === 'undefined') {
701 var data = $this.data('bs.collapse') 710 var data = $this.data('bs.collapse')
702 var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) 711 var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)
703 712
704 if (!data && options.toggle && option == 'show') options.toggle = false 713 if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false
705 if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) 714 if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))
706 if (typeof option == 'string') data[option]() 715 if (typeof option == 'string') data[option]()
707 }) 716 })
@@ -732,7 +741,7 @@ if (typeof jQuery === 'undefined') {
732 741
733 var $target = getTargetFromTrigger($this) 742 var $target = getTargetFromTrigger($this)
734 var data = $target.data('bs.collapse') 743 var data = $target.data('bs.collapse')
735 var option = data ? 'toggle' : $.extend({}, $this.data(), { trigger: this }) 744 var option = data ? 'toggle' : $this.data()
736 745
737 Plugin.call($target, option) 746 Plugin.call($target, option)
738 }) 747 })
@@ -740,10 +749,10 @@ if (typeof jQuery === 'undefined') {
740}(jQuery); 749}(jQuery);
741 750
742/* ======================================================================== 751/* ========================================================================
743 * Bootstrap: dropdown.js v3.3.0 752 * Bootstrap: dropdown.js v3.3.7
744 * http://getbootstrap.com/javascript/#dropdowns 753 * http://getbootstrap.com/javascript/#dropdowns
745 * ======================================================================== 754 * ========================================================================
746 * Copyright 2011-2014 Twitter, Inc. 755 * Copyright 2011-2016 Twitter, Inc.
747 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 756 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
748 * ======================================================================== */ 757 * ======================================================================== */
749 758
@@ -760,7 +769,41 @@ if (typeof jQuery === 'undefined') {
760 $(element).on('click.bs.dropdown', this.toggle) 769 $(element).on('click.bs.dropdown', this.toggle)
761 } 770 }
762 771
763 Dropdown.VERSION = '3.3.0' 772 Dropdown.VERSION = '3.3.7'
773
774 function getParent($this) {
775 var selector = $this.attr('data-target')
776
777 if (!selector) {
778 selector = $this.attr('href')
779 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
780 }
781
782 var $parent = selector && $(selector)
783
784 return $parent && $parent.length ? $parent : $this.parent()
785 }
786
787 function clearMenus(e) {
788 if (e && e.which === 3) return
789 $(backdrop).remove()
790 $(toggle).each(function () {
791 var $this = $(this)
792 var $parent = getParent($this)
793 var relatedTarget = { relatedTarget: this }
794
795 if (!$parent.hasClass('open')) return
796
797 if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
798
799 $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
800
801 if (e.isDefaultPrevented()) return
802
803 $this.attr('aria-expanded', 'false')
804 $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
805 })
806 }
764 807
765 Dropdown.prototype.toggle = function (e) { 808 Dropdown.prototype.toggle = function (e) {
766 var $this = $(this) 809 var $this = $(this)
@@ -775,7 +818,10 @@ if (typeof jQuery === 'undefined') {
775 if (!isActive) { 818 if (!isActive) {
776 if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { 819 if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
777 // if mobile we use a backdrop because click events don't delegate 820 // if mobile we use a backdrop because click events don't delegate
778 $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) 821 $(document.createElement('div'))
822 .addClass('dropdown-backdrop')
823 .insertAfter($(this))
824 .on('click', clearMenus)
779 } 825 }
780 826
781 var relatedTarget = { relatedTarget: this } 827 var relatedTarget = { relatedTarget: this }
@@ -789,14 +835,14 @@ if (typeof jQuery === 'undefined') {
789 835
790 $parent 836 $parent
791 .toggleClass('open') 837 .toggleClass('open')
792 .trigger('shown.bs.dropdown', relatedTarget) 838 .trigger($.Event('shown.bs.dropdown', relatedTarget))
793 } 839 }
794 840
795 return false 841 return false
796 } 842 }
797 843
798 Dropdown.prototype.keydown = function (e) { 844 Dropdown.prototype.keydown = function (e) {
799 if (!/(38|40|27|32)/.test(e.which)) return 845 if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return
800 846
801 var $this = $(this) 847 var $this = $(this)
802 848
@@ -808,57 +854,25 @@ if (typeof jQuery === 'undefined') {
808 var $parent = getParent($this) 854 var $parent = getParent($this)
809 var isActive = $parent.hasClass('open') 855 var isActive = $parent.hasClass('open')
810 856
811 if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { 857 if (!isActive && e.which != 27 || isActive && e.which == 27) {
812 if (e.which == 27) $parent.find(toggle).trigger('focus') 858 if (e.which == 27) $parent.find(toggle).trigger('focus')
813 return $this.trigger('click') 859 return $this.trigger('click')
814 } 860 }
815 861
816 var desc = ' li:not(.divider):visible a' 862 var desc = ' li:not(.disabled):visible a'
817 var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) 863 var $items = $parent.find('.dropdown-menu' + desc)
818 864
819 if (!$items.length) return 865 if (!$items.length) return
820 866
821 var index = $items.index(e.target) 867 var index = $items.index(e.target)
822 868
823 if (e.which == 38 && index > 0) index-- // up 869 if (e.which == 38 && index > 0) index-- // up
824 if (e.which == 40 && index < $items.length - 1) index++ // down 870 if (e.which == 40 && index < $items.length - 1) index++ // down
825 if (!~index) index = 0 871 if (!~index) index = 0
826 872
827 $items.eq(index).trigger('focus') 873 $items.eq(index).trigger('focus')
828 } 874 }
829 875
830 function clearMenus(e) {
831 if (e && e.which === 3) return
832 $(backdrop).remove()
833 $(toggle).each(function () {
834 var $this = $(this)
835 var $parent = getParent($this)
836 var relatedTarget = { relatedTarget: this }
837
838 if (!$parent.hasClass('open')) return
839
840 $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
841
842 if (e.isDefaultPrevented()) return
843
844 $this.attr('aria-expanded', 'false')
845 $parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
846 })
847 }
848
849 function getParent($this) {
850 var selector = $this.attr('data-target')
851
852 if (!selector) {
853 selector = $this.attr('href')
854 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
855 }
856
857 var $parent = selector && $(selector)
858
859 return $parent && $parent.length ? $parent : $this.parent()
860 }
861
862 876
863 // DROPDOWN PLUGIN DEFINITION 877 // DROPDOWN PLUGIN DEFINITION
864 // ========================== 878 // ==========================
@@ -896,16 +910,15 @@ if (typeof jQuery === 'undefined') {
896 .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) 910 .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
897 .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) 911 .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
898 .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) 912 .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
899 .on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) 913 .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
900 .on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
901 914
902}(jQuery); 915}(jQuery);
903 916
904/* ======================================================================== 917/* ========================================================================
905 * Bootstrap: modal.js v3.3.0 918 * Bootstrap: modal.js v3.3.7
906 * http://getbootstrap.com/javascript/#modals 919 * http://getbootstrap.com/javascript/#modals
907 * ======================================================================== 920 * ========================================================================
908 * Copyright 2011-2014 Twitter, Inc. 921 * Copyright 2011-2016 Twitter, Inc.
909 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 922 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
910 * ======================================================================== */ 923 * ======================================================================== */
911 924
@@ -917,12 +930,15 @@ if (typeof jQuery === 'undefined') {
917 // ====================== 930 // ======================
918 931
919 var Modal = function (element, options) { 932 var Modal = function (element, options) {
920 this.options = options 933 this.options = options
921 this.$body = $(document.body) 934 this.$body = $(document.body)
922 this.$element = $(element) 935 this.$element = $(element)
923 this.$backdrop = 936 this.$dialog = this.$element.find('.modal-dialog')
924 this.isShown = null 937 this.$backdrop = null
925 this.scrollbarWidth = 0 938 this.isShown = null
939 this.originalBodyPad = null
940 this.scrollbarWidth = 0
941 this.ignoreBackdropClick = false
926 942
927 if (this.options.remote) { 943 if (this.options.remote) {
928 this.$element 944 this.$element
@@ -933,7 +949,7 @@ if (typeof jQuery === 'undefined') {
933 } 949 }
934 } 950 }
935 951
936 Modal.VERSION = '3.3.0' 952 Modal.VERSION = '3.3.7'
937 953
938 Modal.TRANSITION_DURATION = 300 954 Modal.TRANSITION_DURATION = 300
939 Modal.BACKDROP_TRANSITION_DURATION = 150 955 Modal.BACKDROP_TRANSITION_DURATION = 150
@@ -959,13 +975,20 @@ if (typeof jQuery === 'undefined') {
959 this.isShown = true 975 this.isShown = true
960 976
961 this.checkScrollbar() 977 this.checkScrollbar()
978 this.setScrollbar()
962 this.$body.addClass('modal-open') 979 this.$body.addClass('modal-open')
963 980
964 this.setScrollbar()
965 this.escape() 981 this.escape()
982 this.resize()
966 983
967 this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) 984 this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this))
968 985
986 this.$dialog.on('mousedown.dismiss.bs.modal', function () {
987 that.$element.one('mouseup.dismiss.bs.modal', function (e) {
988 if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true
989 })
990 })
991
969 this.backdrop(function () { 992 this.backdrop(function () {
970 var transition = $.support.transition && that.$element.hasClass('fade') 993 var transition = $.support.transition && that.$element.hasClass('fade')
971 994
@@ -977,20 +1000,20 @@ if (typeof jQuery === 'undefined') {
977 .show() 1000 .show()
978 .scrollTop(0) 1001 .scrollTop(0)
979 1002
1003 that.adjustDialog()
1004
980 if (transition) { 1005 if (transition) {
981 that.$element[0].offsetWidth // force reflow 1006 that.$element[0].offsetWidth // force reflow
982 } 1007 }
983 1008
984 that.$element 1009 that.$element.addClass('in')
985 .addClass('in')
986 .attr('aria-hidden', false)
987 1010
988 that.enforceFocus() 1011 that.enforceFocus()
989 1012
990 var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) 1013 var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })
991 1014
992 transition ? 1015 transition ?
993 that.$element.find('.modal-dialog') // wait for modal to slide in 1016 that.$dialog // wait for modal to slide in
994 .one('bsTransitionEnd', function () { 1017 .one('bsTransitionEnd', function () {
995 that.$element.trigger('focus').trigger(e) 1018 that.$element.trigger('focus').trigger(e)
996 }) 1019 })
@@ -1011,13 +1034,16 @@ if (typeof jQuery === 'undefined') {
1011 this.isShown = false 1034 this.isShown = false
1012 1035
1013 this.escape() 1036 this.escape()
1037 this.resize()
1014 1038
1015 $(document).off('focusin.bs.modal') 1039 $(document).off('focusin.bs.modal')
1016 1040
1017 this.$element 1041 this.$element
1018 .removeClass('in') 1042 .removeClass('in')
1019 .attr('aria-hidden', true)
1020 .off('click.dismiss.bs.modal') 1043 .off('click.dismiss.bs.modal')
1044 .off('mouseup.dismiss.bs.modal')
1045
1046 this.$dialog.off('mousedown.dismiss.bs.modal')
1021 1047
1022 $.support.transition && this.$element.hasClass('fade') ? 1048 $.support.transition && this.$element.hasClass('fade') ?
1023 this.$element 1049 this.$element
@@ -1030,7 +1056,9 @@ if (typeof jQuery === 'undefined') {
1030 $(document) 1056 $(document)
1031 .off('focusin.bs.modal') // guard against infinite focus loop 1057 .off('focusin.bs.modal') // guard against infinite focus loop
1032 .on('focusin.bs.modal', $.proxy(function (e) { 1058 .on('focusin.bs.modal', $.proxy(function (e) {
1033 if (this.$element[0] !== e.target && !this.$element.has(e.target).length) { 1059 if (document !== e.target &&
1060 this.$element[0] !== e.target &&
1061 !this.$element.has(e.target).length) {
1034 this.$element.trigger('focus') 1062 this.$element.trigger('focus')
1035 } 1063 }
1036 }, this)) 1064 }, this))
@@ -1046,11 +1074,20 @@ if (typeof jQuery === 'undefined') {
1046 } 1074 }
1047 } 1075 }
1048 1076
1077 Modal.prototype.resize = function () {
1078 if (this.isShown) {
1079 $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))
1080 } else {
1081 $(window).off('resize.bs.modal')
1082 }
1083 }
1084
1049 Modal.prototype.hideModal = function () { 1085 Modal.prototype.hideModal = function () {
1050 var that = this 1086 var that = this
1051 this.$element.hide() 1087 this.$element.hide()
1052 this.backdrop(function () { 1088 this.backdrop(function () {
1053 that.$body.removeClass('modal-open') 1089 that.$body.removeClass('modal-open')
1090 that.resetAdjustments()
1054 that.resetScrollbar() 1091 that.resetScrollbar()
1055 that.$element.trigger('hidden.bs.modal') 1092 that.$element.trigger('hidden.bs.modal')
1056 }) 1093 })
@@ -1068,14 +1105,20 @@ if (typeof jQuery === 'undefined') {
1068 if (this.isShown && this.options.backdrop) { 1105 if (this.isShown && this.options.backdrop) {
1069 var doAnimate = $.support.transition && animate 1106 var doAnimate = $.support.transition && animate
1070 1107
1071 this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') 1108 this.$backdrop = $(document.createElement('div'))
1072 .prependTo(this.$element) 1109 .addClass('modal-backdrop ' + animate)
1073 .on('click.dismiss.bs.modal', $.proxy(function (e) { 1110 .appendTo(this.$body)
1074 if (e.target !== e.currentTarget) return 1111
1075 this.options.backdrop == 'static' 1112 this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
1076 ? this.$element[0].focus.call(this.$element[0]) 1113 if (this.ignoreBackdropClick) {
1077 : this.hide.call(this) 1114 this.ignoreBackdropClick = false
1078 }, this)) 1115 return
1116 }
1117 if (e.target !== e.currentTarget) return
1118 this.options.backdrop == 'static'
1119 ? this.$element[0].focus()
1120 : this.hide()
1121 }, this))
1079 1122
1080 if (doAnimate) this.$backdrop[0].offsetWidth // force reflow 1123 if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
1081 1124
@@ -1107,21 +1150,49 @@ if (typeof jQuery === 'undefined') {
1107 } 1150 }
1108 } 1151 }
1109 1152
1153 // these following methods are used to handle overflowing modals
1154
1155 Modal.prototype.handleUpdate = function () {
1156 this.adjustDialog()
1157 }
1158
1159 Modal.prototype.adjustDialog = function () {
1160 var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
1161
1162 this.$element.css({
1163 paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
1164 paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
1165 })
1166 }
1167
1168 Modal.prototype.resetAdjustments = function () {
1169 this.$element.css({
1170 paddingLeft: '',
1171 paddingRight: ''
1172 })
1173 }
1174
1110 Modal.prototype.checkScrollbar = function () { 1175 Modal.prototype.checkScrollbar = function () {
1176 var fullWindowWidth = window.innerWidth
1177 if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
1178 var documentElementRect = document.documentElement.getBoundingClientRect()
1179 fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
1180 }
1181 this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
1111 this.scrollbarWidth = this.measureScrollbar() 1182 this.scrollbarWidth = this.measureScrollbar()
1112 } 1183 }
1113 1184
1114 Modal.prototype.setScrollbar = function () { 1185 Modal.prototype.setScrollbar = function () {
1115 var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) 1186 var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
1116 if (this.scrollbarWidth) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) 1187 this.originalBodyPad = document.body.style.paddingRight || ''
1188 if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
1117 } 1189 }
1118 1190
1119 Modal.prototype.resetScrollbar = function () { 1191 Modal.prototype.resetScrollbar = function () {
1120 this.$body.css('padding-right', '') 1192 this.$body.css('padding-right', this.originalBodyPad)
1121 } 1193 }
1122 1194
1123 Modal.prototype.measureScrollbar = function () { // thx walsh 1195 Modal.prototype.measureScrollbar = function () { // thx walsh
1124 if (document.body.clientWidth >= window.innerWidth) return 0
1125 var scrollDiv = document.createElement('div') 1196 var scrollDiv = document.createElement('div')
1126 scrollDiv.className = 'modal-scrollbar-measure' 1197 scrollDiv.className = 'modal-scrollbar-measure'
1127 this.$body.append(scrollDiv) 1198 this.$body.append(scrollDiv)
@@ -1184,11 +1255,11 @@ if (typeof jQuery === 'undefined') {
1184}(jQuery); 1255}(jQuery);
1185 1256
1186/* ======================================================================== 1257/* ========================================================================
1187 * Bootstrap: tooltip.js v3.3.0 1258 * Bootstrap: tooltip.js v3.3.7
1188 * http://getbootstrap.com/javascript/#tooltip 1259 * http://getbootstrap.com/javascript/#tooltip
1189 * Inspired by the original jQuery.tipsy by Jason Frame 1260 * Inspired by the original jQuery.tipsy by Jason Frame
1190 * ======================================================================== 1261 * ========================================================================
1191 * Copyright 2011-2014 Twitter, Inc. 1262 * Copyright 2011-2016 Twitter, Inc.
1192 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 1263 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1193 * ======================================================================== */ 1264 * ======================================================================== */
1194 1265
@@ -1200,17 +1271,18 @@ if (typeof jQuery === 'undefined') {
1200 // =============================== 1271 // ===============================
1201 1272
1202 var Tooltip = function (element, options) { 1273 var Tooltip = function (element, options) {
1203 this.type = 1274 this.type = null
1204 this.options = 1275 this.options = null
1205 this.enabled = 1276 this.enabled = null
1206 this.timeout = 1277 this.timeout = null
1207 this.hoverState = 1278 this.hoverState = null
1208 this.$element = null 1279 this.$element = null
1280 this.inState = null
1209 1281
1210 this.init('tooltip', element, options) 1282 this.init('tooltip', element, options)
1211 } 1283 }
1212 1284
1213 Tooltip.VERSION = '3.3.0' 1285 Tooltip.VERSION = '3.3.7'
1214 1286
1215 Tooltip.TRANSITION_DURATION = 150 1287 Tooltip.TRANSITION_DURATION = 150
1216 1288
@@ -1235,7 +1307,12 @@ if (typeof jQuery === 'undefined') {
1235 this.type = type 1307 this.type = type
1236 this.$element = $(element) 1308 this.$element = $(element)
1237 this.options = this.getOptions(options) 1309 this.options = this.getOptions(options)
1238 this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) 1310 this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
1311 this.inState = { click: false, hover: false, focus: false }
1312
1313 if (this.$element[0] instanceof document.constructor && !this.options.selector) {
1314 throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
1315 }
1239 1316
1240 var triggers = this.options.trigger.split(' ') 1317 var triggers = this.options.trigger.split(' ')
1241 1318
@@ -1290,16 +1367,20 @@ if (typeof jQuery === 'undefined') {
1290 var self = obj instanceof this.constructor ? 1367 var self = obj instanceof this.constructor ?
1291 obj : $(obj.currentTarget).data('bs.' + this.type) 1368 obj : $(obj.currentTarget).data('bs.' + this.type)
1292 1369
1293 if (self && self.$tip && self.$tip.is(':visible')) {
1294 self.hoverState = 'in'
1295 return
1296 }
1297
1298 if (!self) { 1370 if (!self) {
1299 self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) 1371 self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
1300 $(obj.currentTarget).data('bs.' + this.type, self) 1372 $(obj.currentTarget).data('bs.' + this.type, self)
1301 } 1373 }
1302 1374
1375 if (obj instanceof $.Event) {
1376 self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
1377 }
1378
1379 if (self.tip().hasClass('in') || self.hoverState == 'in') {
1380 self.hoverState = 'in'
1381 return
1382 }
1383
1303 clearTimeout(self.timeout) 1384 clearTimeout(self.timeout)
1304 1385
1305 self.hoverState = 'in' 1386 self.hoverState = 'in'
@@ -1311,6 +1392,14 @@ if (typeof jQuery === 'undefined') {
1311 }, self.options.delay.show) 1392 }, self.options.delay.show)
1312 } 1393 }
1313 1394
1395 Tooltip.prototype.isInStateTrue = function () {
1396 for (var key in this.inState) {
1397 if (this.inState[key]) return true
1398 }
1399
1400 return false
1401 }
1402
1314 Tooltip.prototype.leave = function (obj) { 1403 Tooltip.prototype.leave = function (obj) {
1315 var self = obj instanceof this.constructor ? 1404 var self = obj instanceof this.constructor ?
1316 obj : $(obj.currentTarget).data('bs.' + this.type) 1405 obj : $(obj.currentTarget).data('bs.' + this.type)
@@ -1320,6 +1409,12 @@ if (typeof jQuery === 'undefined') {
1320 $(obj.currentTarget).data('bs.' + this.type, self) 1409 $(obj.currentTarget).data('bs.' + this.type, self)
1321 } 1410 }
1322 1411
1412 if (obj instanceof $.Event) {
1413 self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
1414 }
1415
1416 if (self.isInStateTrue()) return
1417
1323 clearTimeout(self.timeout) 1418 clearTimeout(self.timeout)
1324 1419
1325 self.hoverState = 'out' 1420 self.hoverState = 'out'
@@ -1366,6 +1461,7 @@ if (typeof jQuery === 'undefined') {
1366 .data('bs.' + this.type, this) 1461 .data('bs.' + this.type, this)
1367 1462
1368 this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) 1463 this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
1464 this.$element.trigger('inserted.bs.' + this.type)
1369 1465
1370 var pos = this.getPosition() 1466 var pos = this.getPosition()
1371 var actualWidth = $tip[0].offsetWidth 1467 var actualWidth = $tip[0].offsetWidth
@@ -1373,13 +1469,12 @@ if (typeof jQuery === 'undefined') {
1373 1469
1374 if (autoPlace) { 1470 if (autoPlace) {
1375 var orgPlacement = placement 1471 var orgPlacement = placement
1376 var $container = this.options.container ? $(this.options.container) : this.$element.parent() 1472 var viewportDim = this.getPosition(this.$viewport)
1377 var containerDim = this.getPosition($container)
1378 1473
1379 placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' : 1474 placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
1380 placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' : 1475 placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
1381 placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' : 1476 placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
1382 placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' : 1477 placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
1383 placement 1478 placement
1384 1479
1385 $tip 1480 $tip
@@ -1420,8 +1515,8 @@ if (typeof jQuery === 'undefined') {
1420 if (isNaN(marginTop)) marginTop = 0 1515 if (isNaN(marginTop)) marginTop = 0
1421 if (isNaN(marginLeft)) marginLeft = 0 1516 if (isNaN(marginLeft)) marginLeft = 0
1422 1517
1423 offset.top = offset.top + marginTop 1518 offset.top += marginTop
1424 offset.left = offset.left + marginLeft 1519 offset.left += marginLeft
1425 1520
1426 // $.fn.offset doesn't round pixel values 1521 // $.fn.offset doesn't round pixel values
1427 // so we use setOffset directly with our own function B-0 1522 // so we use setOffset directly with our own function B-0
@@ -1457,10 +1552,10 @@ if (typeof jQuery === 'undefined') {
1457 this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) 1552 this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
1458 } 1553 }
1459 1554
1460 Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) { 1555 Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
1461 this.arrow() 1556 this.arrow()
1462 .css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') 1557 .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
1463 .css(isHorizontal ? 'top' : 'left', '') 1558 .css(isVertical ? 'top' : 'left', '')
1464 } 1559 }
1465 1560
1466 Tooltip.prototype.setContent = function () { 1561 Tooltip.prototype.setContent = function () {
@@ -1473,14 +1568,16 @@ if (typeof jQuery === 'undefined') {
1473 1568
1474 Tooltip.prototype.hide = function (callback) { 1569 Tooltip.prototype.hide = function (callback) {
1475 var that = this 1570 var that = this
1476 var $tip = this.tip() 1571 var $tip = $(this.$tip)
1477 var e = $.Event('hide.bs.' + this.type) 1572 var e = $.Event('hide.bs.' + this.type)
1478 1573
1479 function complete() { 1574 function complete() {
1480 if (that.hoverState != 'in') $tip.detach() 1575 if (that.hoverState != 'in') $tip.detach()
1481 that.$element 1576 if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.
1482 .removeAttr('aria-describedby') 1577 that.$element
1483 .trigger('hidden.bs.' + that.type) 1578 .removeAttr('aria-describedby')
1579 .trigger('hidden.bs.' + that.type)
1580 }
1484 callback && callback() 1581 callback && callback()
1485 } 1582 }
1486 1583
@@ -1490,7 +1587,7 @@ if (typeof jQuery === 'undefined') {
1490 1587
1491 $tip.removeClass('in') 1588 $tip.removeClass('in')
1492 1589
1493 $.support.transition && this.$tip.hasClass('fade') ? 1590 $.support.transition && $tip.hasClass('fade') ?
1494 $tip 1591 $tip
1495 .one('bsTransitionEnd', complete) 1592 .one('bsTransitionEnd', complete)
1496 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : 1593 .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
@@ -1503,7 +1600,7 @@ if (typeof jQuery === 'undefined') {
1503 1600
1504 Tooltip.prototype.fixTitle = function () { 1601 Tooltip.prototype.fixTitle = function () {
1505 var $e = this.$element 1602 var $e = this.$element
1506 if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { 1603 if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
1507 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') 1604 $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
1508 } 1605 }
1509 } 1606 }
@@ -1523,7 +1620,10 @@ if (typeof jQuery === 'undefined') {
1523 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 1620 // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093
1524 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) 1621 elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })
1525 } 1622 }
1526 var elOffset = isBody ? { top: 0, left: 0 } : $element.offset() 1623 var isSvg = window.SVGElement && el instanceof window.SVGElement
1624 // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.
1625 // See https://github.com/twbs/bootstrap/issues/20280
1626 var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())
1527 var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } 1627 var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }
1528 var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null 1628 var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null
1529 1629
@@ -1531,10 +1631,10 @@ if (typeof jQuery === 'undefined') {
1531 } 1631 }
1532 1632
1533 Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { 1633 Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {
1534 return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : 1634 return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1535 placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : 1635 placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :
1536 placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : 1636 placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :
1537 /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } 1637 /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }
1538 1638
1539 } 1639 }
1540 1640
@@ -1558,7 +1658,7 @@ if (typeof jQuery === 'undefined') {
1558 var rightEdgeOffset = pos.left + viewportPadding + actualWidth 1658 var rightEdgeOffset = pos.left + viewportPadding + actualWidth
1559 if (leftEdgeOffset < viewportDimensions.left) { // left overflow 1659 if (leftEdgeOffset < viewportDimensions.left) { // left overflow
1560 delta.left = viewportDimensions.left - leftEdgeOffset 1660 delta.left = viewportDimensions.left - leftEdgeOffset
1561 } else if (rightEdgeOffset > viewportDimensions.width) { // right overflow 1661 } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
1562 delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset 1662 delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
1563 } 1663 }
1564 } 1664 }
@@ -1584,7 +1684,13 @@ if (typeof jQuery === 'undefined') {
1584 } 1684 }
1585 1685
1586 Tooltip.prototype.tip = function () { 1686 Tooltip.prototype.tip = function () {
1587 return (this.$tip = this.$tip || $(this.options.template)) 1687 if (!this.$tip) {
1688 this.$tip = $(this.options.template)
1689 if (this.$tip.length != 1) {
1690 throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
1691 }
1692 }
1693 return this.$tip
1588 } 1694 }
1589 1695
1590 Tooltip.prototype.arrow = function () { 1696 Tooltip.prototype.arrow = function () {
@@ -1613,7 +1719,13 @@ if (typeof jQuery === 'undefined') {
1613 } 1719 }
1614 } 1720 }
1615 1721
1616 self.tip().hasClass('in') ? self.leave(self) : self.enter(self) 1722 if (e) {
1723 self.inState.click = !self.inState.click
1724 if (self.isInStateTrue()) self.enter(self)
1725 else self.leave(self)
1726 } else {
1727 self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
1728 }
1617 } 1729 }
1618 1730
1619 Tooltip.prototype.destroy = function () { 1731 Tooltip.prototype.destroy = function () {
@@ -1621,6 +1733,13 @@ if (typeof jQuery === 'undefined') {
1621 clearTimeout(this.timeout) 1733 clearTimeout(this.timeout)
1622 this.hide(function () { 1734 this.hide(function () {
1623 that.$element.off('.' + that.type).removeData('bs.' + that.type) 1735 that.$element.off('.' + that.type).removeData('bs.' + that.type)
1736 if (that.$tip) {
1737 that.$tip.detach()
1738 }
1739 that.$tip = null
1740 that.$arrow = null
1741 that.$viewport = null
1742 that.$element = null
1624 }) 1743 })
1625 } 1744 }
1626 1745
@@ -1630,18 +1749,12 @@ if (typeof jQuery === 'undefined') {
1630 1749
1631 function Plugin(option) { 1750 function Plugin(option) {
1632 return this.each(function () { 1751 return this.each(function () {
1633 var $this = $(this) 1752 var $this = $(this)
1634 var data = $this.data('bs.tooltip') 1753 var data = $this.data('bs.tooltip')
1635 var options = typeof option == 'object' && option 1754 var options = typeof option == 'object' && option
1636 var selector = options && options.selector 1755
1637 1756 if (!data && /destroy|hide/.test(option)) return
1638 if (!data && option == 'destroy') return 1757 if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1639 if (selector) {
1640 if (!data) $this.data('bs.tooltip', (data = {}))
1641 if (!data[selector]) data[selector] = new Tooltip(this, options)
1642 } else {
1643 if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
1644 }
1645 if (typeof option == 'string') data[option]() 1758 if (typeof option == 'string') data[option]()
1646 }) 1759 })
1647 } 1760 }
@@ -1663,10 +1776,10 @@ if (typeof jQuery === 'undefined') {
1663}(jQuery); 1776}(jQuery);
1664 1777
1665/* ======================================================================== 1778/* ========================================================================
1666 * Bootstrap: popover.js v3.3.0 1779 * Bootstrap: popover.js v3.3.7
1667 * http://getbootstrap.com/javascript/#popovers 1780 * http://getbootstrap.com/javascript/#popovers
1668 * ======================================================================== 1781 * ========================================================================
1669 * Copyright 2011-2014 Twitter, Inc. 1782 * Copyright 2011-2016 Twitter, Inc.
1670 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 1783 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1671 * ======================================================================== */ 1784 * ======================================================================== */
1672 1785
@@ -1683,7 +1796,7 @@ if (typeof jQuery === 'undefined') {
1683 1796
1684 if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') 1797 if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
1685 1798
1686 Popover.VERSION = '3.3.0' 1799 Popover.VERSION = '3.3.7'
1687 1800
1688 Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { 1801 Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
1689 placement: 'right', 1802 placement: 'right',
@@ -1739,29 +1852,18 @@ if (typeof jQuery === 'undefined') {
1739 return (this.$arrow = this.$arrow || this.tip().find('.arrow')) 1852 return (this.$arrow = this.$arrow || this.tip().find('.arrow'))
1740 } 1853 }
1741 1854
1742 Popover.prototype.tip = function () {
1743 if (!this.$tip) this.$tip = $(this.options.template)
1744 return this.$tip
1745 }
1746
1747 1855
1748 // POPOVER PLUGIN DEFINITION 1856 // POPOVER PLUGIN DEFINITION
1749 // ========================= 1857 // =========================
1750 1858
1751 function Plugin(option) { 1859 function Plugin(option) {
1752 return this.each(function () { 1860 return this.each(function () {
1753 var $this = $(this) 1861 var $this = $(this)
1754 var data = $this.data('bs.popover') 1862 var data = $this.data('bs.popover')
1755 var options = typeof option == 'object' && option 1863 var options = typeof option == 'object' && option
1756 var selector = options && options.selector 1864
1757 1865 if (!data && /destroy|hide/.test(option)) return
1758 if (!data && option == 'destroy') return 1866 if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
1759 if (selector) {
1760 if (!data) $this.data('bs.popover', (data = {}))
1761 if (!data[selector]) data[selector] = new Popover(this, options)
1762 } else {
1763 if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
1764 }
1765 if (typeof option == 'string') data[option]() 1867 if (typeof option == 'string') data[option]()
1766 }) 1868 })
1767 } 1869 }
@@ -1783,10 +1885,10 @@ if (typeof jQuery === 'undefined') {
1783}(jQuery); 1885}(jQuery);
1784 1886
1785/* ======================================================================== 1887/* ========================================================================
1786 * Bootstrap: scrollspy.js v3.3.0 1888 * Bootstrap: scrollspy.js v3.3.7
1787 * http://getbootstrap.com/javascript/#scrollspy 1889 * http://getbootstrap.com/javascript/#scrollspy
1788 * ======================================================================== 1890 * ========================================================================
1789 * Copyright 2011-2014 Twitter, Inc. 1891 * Copyright 2011-2016 Twitter, Inc.
1790 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 1892 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1791 * ======================================================================== */ 1893 * ======================================================================== */
1792 1894
@@ -1798,10 +1900,8 @@ if (typeof jQuery === 'undefined') {
1798 // ========================== 1900 // ==========================
1799 1901
1800 function ScrollSpy(element, options) { 1902 function ScrollSpy(element, options) {
1801 var process = $.proxy(this.process, this) 1903 this.$body = $(document.body)
1802 1904 this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
1803 this.$body = $('body')
1804 this.$scrollElement = $(element).is('body') ? $(window) : $(element)
1805 this.options = $.extend({}, ScrollSpy.DEFAULTS, options) 1905 this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
1806 this.selector = (this.options.target || '') + ' .nav li > a' 1906 this.selector = (this.options.target || '') + ' .nav li > a'
1807 this.offsets = [] 1907 this.offsets = []
@@ -1809,12 +1909,12 @@ if (typeof jQuery === 'undefined') {
1809 this.activeTarget = null 1909 this.activeTarget = null
1810 this.scrollHeight = 0 1910 this.scrollHeight = 0
1811 1911
1812 this.$scrollElement.on('scroll.bs.scrollspy', process) 1912 this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
1813 this.refresh() 1913 this.refresh()
1814 this.process() 1914 this.process()
1815 } 1915 }
1816 1916
1817 ScrollSpy.VERSION = '3.3.0' 1917 ScrollSpy.VERSION = '3.3.7'
1818 1918
1819 ScrollSpy.DEFAULTS = { 1919 ScrollSpy.DEFAULTS = {
1820 offset: 10 1920 offset: 10
@@ -1825,20 +1925,19 @@ if (typeof jQuery === 'undefined') {
1825 } 1925 }
1826 1926
1827 ScrollSpy.prototype.refresh = function () { 1927 ScrollSpy.prototype.refresh = function () {
1828 var offsetMethod = 'offset' 1928 var that = this
1829 var offsetBase = 0 1929 var offsetMethod = 'offset'
1930 var offsetBase = 0
1931
1932 this.offsets = []
1933 this.targets = []
1934 this.scrollHeight = this.getScrollHeight()
1830 1935
1831 if (!$.isWindow(this.$scrollElement[0])) { 1936 if (!$.isWindow(this.$scrollElement[0])) {
1832 offsetMethod = 'position' 1937 offsetMethod = 'position'
1833 offsetBase = this.$scrollElement.scrollTop() 1938 offsetBase = this.$scrollElement.scrollTop()
1834 } 1939 }
1835 1940
1836 this.offsets = []
1837 this.targets = []
1838 this.scrollHeight = this.getScrollHeight()
1839
1840 var self = this
1841
1842 this.$body 1941 this.$body
1843 .find(this.selector) 1942 .find(this.selector)
1844 .map(function () { 1943 .map(function () {
@@ -1853,8 +1952,8 @@ if (typeof jQuery === 'undefined') {
1853 }) 1952 })
1854 .sort(function (a, b) { return a[0] - b[0] }) 1953 .sort(function (a, b) { return a[0] - b[0] })
1855 .each(function () { 1954 .each(function () {
1856 self.offsets.push(this[0]) 1955 that.offsets.push(this[0])
1857 self.targets.push(this[1]) 1956 that.targets.push(this[1])
1858 }) 1957 })
1859 } 1958 }
1860 1959
@@ -1883,7 +1982,7 @@ if (typeof jQuery === 'undefined') {
1883 for (i = offsets.length; i--;) { 1982 for (i = offsets.length; i--;) {
1884 activeTarget != targets[i] 1983 activeTarget != targets[i]
1885 && scrollTop >= offsets[i] 1984 && scrollTop >= offsets[i]
1886 && (!offsets[i + 1] || scrollTop <= offsets[i + 1]) 1985 && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])
1887 && this.activate(targets[i]) 1986 && this.activate(targets[i])
1888 } 1987 }
1889 } 1988 }
@@ -1894,8 +1993,8 @@ if (typeof jQuery === 'undefined') {
1894 this.clear() 1993 this.clear()
1895 1994
1896 var selector = this.selector + 1995 var selector = this.selector +
1897 '[data-target="' + target + '"],' + 1996 '[data-target="' + target + '"],' +
1898 this.selector + '[href="' + target + '"]' 1997 this.selector + '[href="' + target + '"]'
1899 1998
1900 var active = $(selector) 1999 var active = $(selector)
1901 .parents('li') 2000 .parents('li')
@@ -1959,10 +2058,10 @@ if (typeof jQuery === 'undefined') {
1959}(jQuery); 2058}(jQuery);
1960 2059
1961/* ======================================================================== 2060/* ========================================================================
1962 * Bootstrap: tab.js v3.3.0 2061 * Bootstrap: tab.js v3.3.7
1963 * http://getbootstrap.com/javascript/#tabs 2062 * http://getbootstrap.com/javascript/#tabs
1964 * ======================================================================== 2063 * ========================================================================
1965 * Copyright 2011-2014 Twitter, Inc. 2064 * Copyright 2011-2016 Twitter, Inc.
1966 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 2065 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
1967 * ======================================================================== */ 2066 * ======================================================================== */
1968 2067
@@ -1974,10 +2073,12 @@ if (typeof jQuery === 'undefined') {
1974 // ==================== 2073 // ====================
1975 2074
1976 var Tab = function (element) { 2075 var Tab = function (element) {
2076 // jscs:disable requireDollarBeforejQueryAssignment
1977 this.element = $(element) 2077 this.element = $(element)
2078 // jscs:enable requireDollarBeforejQueryAssignment
1978 } 2079 }
1979 2080
1980 Tab.VERSION = '3.3.0' 2081 Tab.VERSION = '3.3.7'
1981 2082
1982 Tab.TRANSITION_DURATION = 150 2083 Tab.TRANSITION_DURATION = 150
1983 2084
@@ -2025,7 +2126,7 @@ if (typeof jQuery === 'undefined') {
2025 var $active = container.find('> .active') 2126 var $active = container.find('> .active')
2026 var transition = callback 2127 var transition = callback
2027 && $.support.transition 2128 && $.support.transition
2028 && (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) 2129 && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
2029 2130
2030 function next() { 2131 function next() {
2031 $active 2132 $active
@@ -2048,7 +2149,7 @@ if (typeof jQuery === 'undefined') {
2048 element.removeClass('fade') 2149 element.removeClass('fade')
2049 } 2150 }
2050 2151
2051 if (element.parent('.dropdown-menu')) { 2152 if (element.parent('.dropdown-menu').length) {
2052 element 2153 element
2053 .closest('li.dropdown') 2154 .closest('li.dropdown')
2054 .addClass('active') 2155 .addClass('active')
@@ -2113,10 +2214,10 @@ if (typeof jQuery === 'undefined') {
2113}(jQuery); 2214}(jQuery);
2114 2215
2115/* ======================================================================== 2216/* ========================================================================
2116 * Bootstrap: affix.js v3.3.0 2217 * Bootstrap: affix.js v3.3.7
2117 * http://getbootstrap.com/javascript/#affix 2218 * http://getbootstrap.com/javascript/#affix
2118 * ======================================================================== 2219 * ========================================================================
2119 * Copyright 2011-2014 Twitter, Inc. 2220 * Copyright 2011-2016 Twitter, Inc.
2120 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 2221 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
2121 * ======================================================================== */ 2222 * ======================================================================== */
2122 2223
@@ -2135,14 +2236,14 @@ if (typeof jQuery === 'undefined') {
2135 .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) 2236 .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
2136 2237
2137 this.$element = $(element) 2238 this.$element = $(element)
2138 this.affixed = 2239 this.affixed = null
2139 this.unpin = 2240 this.unpin = null
2140 this.pinnedOffset = null 2241 this.pinnedOffset = null
2141 2242
2142 this.checkPosition() 2243 this.checkPosition()
2143 } 2244 }
2144 2245
2145 Affix.VERSION = '3.3.0' 2246 Affix.VERSION = '3.3.7'
2146 2247
2147 Affix.RESET = 'affix affix-top affix-bottom' 2248 Affix.RESET = 'affix affix-top affix-bottom'
2148 2249
@@ -2167,7 +2268,7 @@ if (typeof jQuery === 'undefined') {
2167 var colliderTop = initializing ? scrollTop : position.top 2268 var colliderTop = initializing ? scrollTop : position.top
2168 var colliderHeight = initializing ? targetHeight : height 2269 var colliderHeight = initializing ? targetHeight : height
2169 2270
2170 if (offsetTop != null && colliderTop <= offsetTop) return 'top' 2271 if (offsetTop != null && scrollTop <= offsetTop) return 'top'
2171 if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' 2272 if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'
2172 2273
2173 return false 2274 return false
@@ -2192,7 +2293,7 @@ if (typeof jQuery === 'undefined') {
2192 var offset = this.options.offset 2293 var offset = this.options.offset
2193 var offsetTop = offset.top 2294 var offsetTop = offset.top
2194 var offsetBottom = offset.bottom 2295 var offsetBottom = offset.bottom
2195 var scrollHeight = $('body').height() 2296 var scrollHeight = Math.max($(document).height(), $(document.body).height())
2196 2297
2197 if (typeof offset != 'object') offsetBottom = offsetTop = offset 2298 if (typeof offset != 'object') offsetBottom = offsetTop = offset
2198 if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) 2299 if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)
diff --git a/dist/js/bootstrap.min.js b/dist/js/bootstrap.min.js
index d8398659..9bcd2fcc 100644
--- a/dist/js/bootstrap.min.js
+++ b/dist/js/bootstrap.min.js
@@ -1,7 +1,7 @@
1/*! 1/*!
2 * Bootstrap v3.3.1 (http://getbootstrap.com) 2 * Bootstrap v3.3.7 (http://getbootstrap.com)
3 * Copyright 2011-2014 Twitter, Inc. 3 * Copyright 2011-2016 Twitter, Inc.
4 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 4 * Licensed under the MIT license
5 */ 5 */
6if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.1",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.1",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c="prev"==a?-1:1,d=this.getItemIndex(b),e=(d+c)%this.$items.length;return this.$items.eq(e)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i="next"==b?"first":"last",j=this;if(!f.length){if(!this.options.wrap)return;f=this.$element.find(".item")[i]()}if(f.hasClass("active"))return this.sliding=!1;var k=f[0],l=a.Event("slide.bs.carousel",{relatedTarget:k,direction:h});if(this.$element.trigger(l),!l.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var m=a(this.$indicators.children()[this.getItemIndex(f)]);m&&m.addClass("active")}var n=a.Event("slid.bs.carousel",{relatedTarget:k,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),j.sliding=!1,setTimeout(function(){j.$element.trigger(n)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(n)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.find("> .panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.1",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.options.backdrop&&d.adjustBackdrop(),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.tooltip",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b,g=f&&f.selector;(e||"destroy"!=b)&&(g?(e||d.data("bs.popover",e={}),e[g]||(e[g]=new c(this,f))):e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.1",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.1",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.1",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]}) 6if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){document===a.target||this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element&&e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);if(this.$element.trigger(g),!g.isDefaultPrevented())return f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=window.SVGElement&&c instanceof window.SVGElement,g=d?{top:0,left:0}:f?null:b.offset(),h={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},i=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,h,i,g)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){
7})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.1",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=i?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file 7this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.7",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e<c&&"top";if("bottom"==this.affixed)return null!=c?!(e+this.unpin<=f.top)&&"bottom":!(e+g<=a-d)&&"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&e<=c?"top":null!=d&&i+j>=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file