{"version":3,"sources":["webpack:///scripts.25f78fa10874d015065c.bundle.js","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/script-loader/addScript.js","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/bootstrap-material-design/dist/js/material.js?9c4c","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/bootstrap-material-design/dist/js/ripples.js?976e","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/bootstrap/dist/js/bootstrap.js?b8b4","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/jquery/dist/jquery.js?21be","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/bootstrap-material-design/dist/js/material.js","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/bootstrap-material-design/dist/js/ripples.js","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/bootstrap/dist/js/bootstrap.js","webpack:///C:/Users/dennis/VSProjects/DesppInfoRelease/despp-info-release/~/jquery/dist/jquery.js"],"names":["webpackJsonp","1038","module","exports","__webpack_require__","174","src","execScript","eval","call","425","426","427","428","722","723","724","725"],"mappings":"AAAAA,cAAc,EAAE,IAEVC,KACA,SAASC,EAAQC,EAASC,GAEhCA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBF,EAAOC,QAAUC,EAAoB,MAK/BC,IACA,SAASH,EAAQC,GCVvBD,EAAAC,QAAA,SAAAG,GACA,mBAAAC,YACAA,WAAAD,GAEAE,KAAAC,KAAA,KAAAH,KDsBMI,IACA,SAASR,EAAQC,EAASC,GE/BhCA,EAAA,KAAAA,EAAA,OFqCMO,IACA,SAAST,EAAQC,EAASC,GGtChCA,EAAA,KAAAA,EAAA,OH4CMQ,IACA,SAASV,EAAQC,EAASC,GI7ChCA,EAAA,KAAAA,EAAA,OJmDMS,IACA,SAASX,EAAQC,EAASC,GKpDhCA,EAAA,KAAAA,EAAA,OL0DMU,IACA,SAASZ,EAAQC,GM3DvBD,EAAAC,QAAA,08ZNiEMY,IACA,SAASb,EAAQC,GOlEvBD,EAAAC,QAAA,ihPPwEMa,IACA,SAASd,EAAQC,GQzEvBD,EAAAC,QAAA;ER+EMc,IACA,SAASf,EAAQC,GShFvBD,EAAAC,QAAA;ITsFG","file":"scripts.25f78fa10874d015065c.bundle.js","sourcesContent":["webpackJsonp([2,3],{\n\n/***/ 1038:\n/***/ function(module, exports, __webpack_require__) {\n\n__webpack_require__(428);\n__webpack_require__(427);\n__webpack_require__(425);\nmodule.exports = __webpack_require__(426);\n\n\n/***/ },\n\n/***/ 174:\n/***/ function(module, exports) {\n\n/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\nmodule.exports = function(src) {\r\n\tif (typeof execScript !== \"undefined\")\r\n\t\texecScript(src);\r\n\telse\r\n\t\teval.call(null, src);\r\n}\r\n\n\n/***/ },\n\n/***/ 425:\n/***/ function(module, exports, __webpack_require__) {\n\n__webpack_require__(174)(__webpack_require__(722))\n\n/***/ },\n\n/***/ 426:\n/***/ function(module, exports, __webpack_require__) {\n\n__webpack_require__(174)(__webpack_require__(723))\n\n/***/ },\n\n/***/ 427:\n/***/ function(module, exports, __webpack_require__) {\n\n__webpack_require__(174)(__webpack_require__(724))\n\n/***/ },\n\n/***/ 428:\n/***/ function(module, exports, __webpack_require__) {\n\n__webpack_require__(174)(__webpack_require__(725))\n\n/***/ },\n\n/***/ 722:\n/***/ function(module, exports) {\n\nmodule.exports = \"/* globals jQuery */\\n\\n(function ($) {\\n // Selector to select only not already processed elements\\n $.expr[\\\":\\\"].notmdproc = function (obj) {\\n if ($(obj).data(\\\"mdproc\\\")) {\\n return false;\\n } else {\\n return true;\\n }\\n };\\n\\n function _isChar(evt) {\\n if (typeof evt.which == \\\"undefined\\\") {\\n return true;\\n } else if (typeof evt.which == \\\"number\\\" && evt.which > 0) {\\n return (\\n !evt.ctrlKey\\n && !evt.metaKey\\n && !evt.altKey\\n && evt.which != 8 // backspace\\n && evt.which != 9 // tab\\n && evt.which != 13 // enter\\n && evt.which != 16 // shift\\n && evt.which != 17 // ctrl\\n && evt.which != 20 // caps lock\\n && evt.which != 27 // escape\\n );\\n }\\n return false;\\n }\\n\\n function _addFormGroupFocus(element) {\\n var $element = $(element);\\n if (!$element.prop('disabled')) { // this is showing as undefined on chrome but works fine on firefox??\\n $element.closest(\\\".form-group\\\").addClass(\\\"is-focused\\\");\\n }\\n }\\n\\n function _toggleDisabledState($element, state) {\\n var $target;\\n if ($element.hasClass('checkbox-inline') || $element.hasClass('radio-inline')) {\\n $target = $element;\\n } else {\\n $target = $element.closest('.checkbox').length ? $element.closest('.checkbox') : $element.closest('.radio');\\n }\\n return $target.toggleClass('disabled', state);\\n }\\n\\n function _toggleTypeFocus($input) {\\n var disabledToggleType = false;\\n if ($input.is($.material.options.checkboxElements) || $input.is($.material.options.radioElements)) {\\n disabledToggleType = true;\\n }\\n $input.closest('label').hover(function () {\\n var $i = $(this).find('input');\\n var isDisabled = $i.prop('disabled'); // hack because the _addFormGroupFocus() wasn't identifying the property on chrome\\n if (disabledToggleType) {\\n _toggleDisabledState($(this), isDisabled);\\n }\\n if (!isDisabled) {\\n _addFormGroupFocus($i); // need to find the input so we can check disablement\\n }\\n },\\n function () {\\n _removeFormGroupFocus($(this).find('input'));\\n });\\n }\\n\\n function _removeFormGroupFocus(element) {\\n $(element).closest(\\\".form-group\\\").removeClass(\\\"is-focused\\\"); // remove class from form-group\\n }\\n\\n $.material = {\\n \\\"options\\\": {\\n // These options set what will be started by $.material.init()\\n \\\"validate\\\": true,\\n \\\"input\\\": true,\\n \\\"ripples\\\": true,\\n \\\"checkbox\\\": true,\\n \\\"togglebutton\\\": true,\\n \\\"radio\\\": true,\\n \\\"arrive\\\": true,\\n \\\"autofill\\\": false,\\n\\n \\\"withRipples\\\": [\\n \\\".btn:not(.btn-link)\\\",\\n \\\".card-image\\\",\\n \\\".navbar a:not(.withoutripple)\\\",\\n \\\".dropdown-menu a\\\",\\n \\\".nav-tabs a:not(.withoutripple)\\\",\\n \\\".withripple\\\",\\n \\\".pagination li:not(.active):not(.disabled) a:not(.withoutripple)\\\"\\n ].join(\\\",\\\"),\\n \\\"inputElements\\\": \\\"input.form-control, textarea.form-control, select.form-control\\\",\\n \\\"checkboxElements\\\": \\\".checkbox > label > input[type=checkbox], label.checkbox-inline > input[type=checkbox]\\\",\\n \\\"togglebuttonElements\\\": \\\".togglebutton > label > input[type=checkbox]\\\",\\n \\\"radioElements\\\": \\\".radio > label > input[type=radio], label.radio-inline > input[type=radio]\\\"\\n },\\n \\\"checkbox\\\": function (selector) {\\n // Add fake-checkbox to material checkboxes\\n var $input = $((selector) ? selector : this.options.checkboxElements)\\n .filter(\\\":notmdproc\\\")\\n .data(\\\"mdproc\\\", true)\\n .after(\\\"\\\");\\n\\n _toggleTypeFocus($input);\\n },\\n \\\"togglebutton\\\": function (selector) {\\n // Add fake-checkbox to material checkboxes\\n var $input = $((selector) ? selector : this.options.togglebuttonElements)\\n .filter(\\\":notmdproc\\\")\\n .data(\\\"mdproc\\\", true)\\n .after(\\\"\\\");\\n\\n _toggleTypeFocus($input);\\n },\\n \\\"radio\\\": function (selector) {\\n // Add fake-radio to material radios\\n var $input = $((selector) ? selector : this.options.radioElements)\\n .filter(\\\":notmdproc\\\")\\n .data(\\\"mdproc\\\", true)\\n .after(\\\"\\\");\\n\\n _toggleTypeFocus($input);\\n },\\n \\\"input\\\": function (selector) {\\n $((selector) ? selector : this.options.inputElements)\\n .filter(\\\":notmdproc\\\")\\n .data(\\\"mdproc\\\", true)\\n .each(function () {\\n var $input = $(this);\\n\\n // Requires form-group standard markup (will add it if necessary)\\n var $formGroup = $input.closest(\\\".form-group\\\"); // note that form-group may be grandparent in the case of an input-group\\n if ($formGroup.length === 0 && $input.attr('type') !== \\\"hidden\\\" && !$input.attr('hidden')) {\\n $input.wrap(\\\"
\\\");\\n $formGroup = $input.closest(\\\".form-group\\\"); // find node after attached (otherwise additional attachments don't work)\\n }\\n\\n // Legacy - Add hint label if using the old shorthand data-hint attribute on the input\\n if ($input.attr(\\\"data-hint\\\")) {\\n $input.after(\\\"\\\" + $input.attr(\\\"data-hint\\\") + \\\"
\\\");\\n $input.removeAttr(\\\"data-hint\\\");\\n }\\n\\n // Legacy - Change input-sm/lg to form-group-sm/lg instead (preferred standard and simpler css/less variants)\\n var legacySizes = {\\n \\\"input-lg\\\": \\\"form-group-lg\\\",\\n \\\"input-sm\\\": \\\"form-group-sm\\\"\\n };\\n $.each(legacySizes, function (legacySize, standardSize) {\\n if ($input.hasClass(legacySize)) {\\n $input.removeClass(legacySize);\\n $formGroup.addClass(standardSize);\\n }\\n });\\n\\n // Legacy - Add label-floating if using old shorthand \\n if ($input.hasClass(\\\"floating-label\\\")) {\\n var placeholder = $input.attr(\\\"placeholder\\\");\\n $input.attr(\\\"placeholder\\\", null).removeClass(\\\"floating-label\\\");\\n var id = $input.attr(\\\"id\\\");\\n var forAttribute = \\\"\\\";\\n if (id) {\\n forAttribute = \\\"for='\\\" + id + \\\"'\\\";\\n }\\n $formGroup.addClass(\\\"label-floating\\\");\\n $input.after(\\\"\\\");\\n }\\n\\n // Set as empty if is empty (damn I must improve this...)\\n if ($input.val() === null || $input.val() == \\\"undefined\\\" || $input.val() === \\\"\\\") {\\n $formGroup.addClass(\\\"is-empty\\\");\\n }\\n\\n // Support for file input\\n if ($formGroup.find(\\\"input[type=file]\\\").length > 0) {\\n $formGroup.addClass(\\\"is-fileinput\\\");\\n }\\n });\\n },\\n \\\"attachInputEventHandlers\\\": function () {\\n var validate = this.options.validate;\\n\\n $(document)\\n .on(\\\"keydown paste\\\", \\\".form-control\\\", function (e) {\\n if (_isChar(e)) {\\n $(this).closest(\\\".form-group\\\").removeClass(\\\"is-empty\\\");\\n }\\n })\\n .on(\\\"keyup change\\\", \\\".form-control\\\", function () {\\n var $input = $(this);\\n var $formGroup = $input.closest(\\\".form-group\\\");\\n var isValid = (typeof $input[0].checkValidity === \\\"undefined\\\" || $input[0].checkValidity());\\n\\n if ($input.val() === \\\"\\\") {\\n $formGroup.addClass(\\\"is-empty\\\");\\n }\\n else {\\n $formGroup.removeClass(\\\"is-empty\\\");\\n }\\n\\n // Validation events do not bubble, so they must be attached directly to the input: http://jsfiddle.net/PEpRM/1/\\n // Further, even the bind method is being caught, but since we are already calling #checkValidity here, just alter\\n // the form-group on change.\\n //\\n // NOTE: I'm not sure we should be intervening regarding validation, this seems better as a README and snippet of code.\\n // BUT, I've left it here for backwards compatibility.\\n if (validate) {\\n if (isValid) {\\n $formGroup.removeClass(\\\"has-error\\\");\\n }\\n else {\\n $formGroup.addClass(\\\"has-error\\\");\\n }\\n }\\n })\\n .on(\\\"focus\\\", \\\".form-control, .form-group.is-fileinput\\\", function () {\\n _addFormGroupFocus(this);\\n })\\n .on(\\\"blur\\\", \\\".form-control, .form-group.is-fileinput\\\", function () {\\n _removeFormGroupFocus(this);\\n })\\n // make sure empty is added back when there is a programmatic value change.\\n // NOTE: programmatic changing of value using $.val() must trigger the change event i.e. $.val('x').trigger('change')\\n .on(\\\"change\\\", \\\".form-group input\\\", function () {\\n var $input = $(this);\\n if ($input.attr(\\\"type\\\") == \\\"file\\\") {\\n return;\\n }\\n\\n var $formGroup = $input.closest(\\\".form-group\\\");\\n var value = $input.val();\\n if (value) {\\n $formGroup.removeClass(\\\"is-empty\\\");\\n } else {\\n $formGroup.addClass(\\\"is-empty\\\");\\n }\\n })\\n // set the fileinput readonly field with the name of the file\\n .on(\\\"change\\\", \\\".form-group.is-fileinput input[type='file']\\\", function () {\\n var $input = $(this);\\n var $formGroup = $input.closest(\\\".form-group\\\");\\n var value = \\\"\\\";\\n $.each(this.files, function (i, file) {\\n value += file.name + \\\", \\\";\\n });\\n value = value.substring(0, value.length - 2);\\n if (value) {\\n $formGroup.removeClass(\\\"is-empty\\\");\\n } else {\\n $formGroup.addClass(\\\"is-empty\\\");\\n }\\n $formGroup.find(\\\"input.form-control[readonly]\\\").val(value);\\n });\\n },\\n \\\"ripples\\\": function (selector) {\\n $((selector) ? selector : this.options.withRipples).ripples();\\n },\\n \\\"autofill\\\": function () {\\n // This part of code will detect autofill when the page is loading (username and password inputs for example)\\n var loading = setInterval(function () {\\n $(\\\"input[type!=checkbox]\\\").each(function () {\\n var $this = $(this);\\n if ($this.val() && $this.val() !== $this.attr(\\\"value\\\")) {\\n $this.trigger(\\\"change\\\");\\n }\\n });\\n }, 100);\\n\\n // After 10 seconds we are quite sure all the needed inputs are autofilled then we can stop checking them\\n setTimeout(function () {\\n clearInterval(loading);\\n }, 10000);\\n },\\n \\\"attachAutofillEventHandlers\\\": function () {\\n // Listen on inputs of the focused form (because user can select from the autofill dropdown only when the input has focus)\\n var focused;\\n $(document)\\n .on(\\\"focus\\\", \\\"input\\\", function () {\\n var $inputs = $(this).parents(\\\"form\\\").find(\\\"input\\\").not(\\\"[type=file]\\\");\\n focused = setInterval(function () {\\n $inputs.each(function () {\\n var $this = $(this);\\n if ($this.val() !== $this.attr(\\\"value\\\")) {\\n $this.trigger(\\\"change\\\");\\n }\\n });\\n }, 100);\\n })\\n .on(\\\"blur\\\", \\\".form-group input\\\", function () {\\n clearInterval(focused);\\n });\\n },\\n \\\"init\\\": function (options) {\\n this.options = $.extend({}, this.options, options);\\n var $document = $(document);\\n\\n if ($.fn.ripples && this.options.ripples) {\\n this.ripples();\\n }\\n if (this.options.input) {\\n this.input();\\n this.attachInputEventHandlers();\\n }\\n if (this.options.checkbox) {\\n this.checkbox();\\n }\\n if (this.options.togglebutton) {\\n this.togglebutton();\\n }\\n if (this.options.radio) {\\n this.radio();\\n }\\n if (this.options.autofill) {\\n this.autofill();\\n this.attachAutofillEventHandlers();\\n }\\n\\n if (document.arrive && this.options.arrive) {\\n if ($.fn.ripples && this.options.ripples) {\\n $document.arrive(this.options.withRipples, function () {\\n $.material.ripples($(this));\\n });\\n }\\n if (this.options.input) {\\n $document.arrive(this.options.inputElements, function () {\\n $.material.input($(this));\\n });\\n }\\n if (this.options.checkbox) {\\n $document.arrive(this.options.checkboxElements, function () {\\n $.material.checkbox($(this));\\n });\\n }\\n if (this.options.radio) {\\n $document.arrive(this.options.radioElements, function () {\\n $.material.radio($(this));\\n });\\n }\\n if (this.options.togglebutton) {\\n $document.arrive(this.options.togglebuttonElements, function () {\\n $.material.togglebutton($(this));\\n });\\n }\\n\\n }\\n }\\n };\\n\\n})(jQuery);\\n\"\n\n/***/ },\n\n/***/ 723:\n/***/ function(module, exports) {\n\nmodule.exports = \"/* Copyright 2014+, Federico Zivolo, LICENSE at https://github.com/FezVrasta/bootstrap-material-design/blob/master/LICENSE.md */\\n/* globals jQuery, navigator */\\n\\n(function($, window, document, undefined) {\\n\\n \\\"use strict\\\";\\n\\n /**\\n * Define the name of the plugin\\n */\\n var ripples = \\\"ripples\\\";\\n\\n\\n /**\\n * Get an instance of the plugin\\n */\\n var self = null;\\n\\n\\n /**\\n * Define the defaults of the plugin\\n */\\n var defaults = {};\\n\\n\\n /**\\n * Create the main plugin function\\n */\\n function Ripples(element, options) {\\n self = this;\\n\\n this.element = $(element);\\n\\n this.options = $.extend({}, defaults, options);\\n\\n this._defaults = defaults;\\n this._name = ripples;\\n\\n this.init();\\n }\\n\\n\\n /**\\n * Initialize the plugin\\n */\\n Ripples.prototype.init = function() {\\n var $element = this.element;\\n\\n $element.on(\\\"mousedown touchstart\\\", function(event) {\\n /**\\n * Verify if the user is just touching on a device and return if so\\n */\\n if(self.isTouch() && event.type === \\\"mousedown\\\") {\\n return;\\n }\\n\\n\\n /**\\n * Verify if the current element already has a ripple wrapper element and\\n * creates if it doesn't\\n */\\n if(!($element.find(\\\".ripple-container\\\").length)) {\\n $element.append(\\\"\\\");\\n }\\n\\n\\n /**\\n * Find the ripple wrapper\\n */\\n var $wrapper = $element.children(\\\".ripple-container\\\");\\n\\n\\n /**\\n * Get relY and relX positions\\n */\\n var relY = self.getRelY($wrapper, event);\\n var relX = self.getRelX($wrapper, event);\\n\\n\\n /**\\n * If relY and/or relX are false, return the event\\n */\\n if(!relY && !relX) {\\n return;\\n }\\n\\n\\n /**\\n * Get the ripple color\\n */\\n var rippleColor = self.getRipplesColor($element);\\n\\n\\n /**\\n * Create the ripple element\\n */\\n var $ripple = $(\\\"\\\");\\n\\n $ripple\\n .addClass(\\\"ripple\\\")\\n .css({\\n \\\"left\\\": relX,\\n \\\"top\\\": relY,\\n \\\"background-color\\\": rippleColor\\n });\\n\\n\\n /**\\n * Append the ripple to the wrapper\\n */\\n $wrapper.append($ripple);\\n\\n\\n /**\\n * Make sure the ripple has the styles applied (ugly hack but it works)\\n */\\n (function() { return window.getComputedStyle($ripple[0]).opacity; })();\\n\\n\\n /**\\n * Turn on the ripple animation\\n */\\n self.rippleOn($element, $ripple);\\n\\n\\n /**\\n * Call the rippleEnd function when the transition \\\"on\\\" ends\\n */\\n setTimeout(function() {\\n self.rippleEnd($ripple);\\n }, 500);\\n\\n\\n /**\\n * Detect when the user leaves the element\\n */\\n $element.on(\\\"mouseup mouseleave touchend\\\", function() {\\n $ripple.data(\\\"mousedown\\\", \\\"off\\\");\\n\\n if($ripple.data(\\\"animating\\\") === \\\"off\\\") {\\n self.rippleOut($ripple);\\n }\\n });\\n\\n });\\n };\\n\\n\\n /**\\n * Get the new size based on the element height/width and the ripple width\\n */\\n Ripples.prototype.getNewSize = function($element, $ripple) {\\n\\n return (Math.max($element.outerWidth(), $element.outerHeight()) / $ripple.outerWidth()) * 2.5;\\n };\\n\\n\\n /**\\n * Get the relX\\n */\\n Ripples.prototype.getRelX = function($wrapper, event) {\\n var wrapperOffset = $wrapper.offset();\\n\\n if(!self.isTouch()) {\\n /**\\n * Get the mouse position relative to the ripple wrapper\\n */\\n return event.pageX - wrapperOffset.left;\\n } else {\\n /**\\n * Make sure the user is using only one finger and then get the touch\\n * position relative to the ripple wrapper\\n */\\n event = event.originalEvent;\\n\\n if(event.touches.length === 1) {\\n return event.touches[0].pageX - wrapperOffset.left;\\n }\\n\\n return false;\\n }\\n };\\n\\n\\n /**\\n * Get the relY\\n */\\n Ripples.prototype.getRelY = function($wrapper, event) {\\n var wrapperOffset = $wrapper.offset();\\n\\n if(!self.isTouch()) {\\n /**\\n * Get the mouse position relative to the ripple wrapper\\n */\\n return event.pageY - wrapperOffset.top;\\n } else {\\n /**\\n * Make sure the user is using only one finger and then get the touch\\n * position relative to the ripple wrapper\\n */\\n event = event.originalEvent;\\n\\n if(event.touches.length === 1) {\\n return event.touches[0].pageY - wrapperOffset.top;\\n }\\n\\n return false;\\n }\\n };\\n\\n\\n /**\\n * Get the ripple color\\n */\\n Ripples.prototype.getRipplesColor = function($element) {\\n\\n var color = $element.data(\\\"ripple-color\\\") ? $element.data(\\\"ripple-color\\\") : window.getComputedStyle($element[0]).color;\\n\\n return color;\\n };\\n\\n\\n /**\\n * Verify if the client browser has transistion support\\n */\\n Ripples.prototype.hasTransitionSupport = function() {\\n var thisBody = document.body || document.documentElement;\\n var thisStyle = thisBody.style;\\n\\n var support = (\\n thisStyle.transition !== undefined ||\\n thisStyle.WebkitTransition !== undefined ||\\n thisStyle.MozTransition !== undefined ||\\n thisStyle.MsTransition !== undefined ||\\n thisStyle.OTransition !== undefined\\n );\\n\\n return support;\\n };\\n\\n\\n /**\\n * Verify if the client is using a mobile device\\n */\\n Ripples.prototype.isTouch = function() {\\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\\n };\\n\\n\\n /**\\n * End the animation of the ripple\\n */\\n Ripples.prototype.rippleEnd = function($ripple) {\\n $ripple.data(\\\"animating\\\", \\\"off\\\");\\n\\n if($ripple.data(\\\"mousedown\\\") === \\\"off\\\") {\\n self.rippleOut($ripple);\\n }\\n };\\n\\n\\n /**\\n * Turn off the ripple effect\\n */\\n Ripples.prototype.rippleOut = function($ripple) {\\n $ripple.off();\\n\\n if(self.hasTransitionSupport()) {\\n $ripple.addClass(\\\"ripple-out\\\");\\n } else {\\n $ripple.animate({\\\"opacity\\\": 0}, 100, function() {\\n $ripple.trigger(\\\"transitionend\\\");\\n });\\n }\\n\\n $ripple.on(\\\"transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd\\\", function() {\\n $ripple.remove();\\n });\\n };\\n\\n\\n /**\\n * Turn on the ripple effect\\n */\\n Ripples.prototype.rippleOn = function($element, $ripple) {\\n var size = self.getNewSize($element, $ripple);\\n\\n if(self.hasTransitionSupport()) {\\n $ripple\\n .css({\\n \\\"-ms-transform\\\": \\\"scale(\\\" + size + \\\")\\\",\\n \\\"-moz-transform\\\": \\\"scale(\\\" + size + \\\")\\\",\\n \\\"-webkit-transform\\\": \\\"scale(\\\" + size + \\\")\\\",\\n \\\"transform\\\": \\\"scale(\\\" + size + \\\")\\\"\\n })\\n .addClass(\\\"ripple-on\\\")\\n .data(\\\"animating\\\", \\\"on\\\")\\n .data(\\\"mousedown\\\", \\\"on\\\");\\n } else {\\n $ripple.animate({\\n \\\"width\\\": Math.max($element.outerWidth(), $element.outerHeight()) * 2,\\n \\\"height\\\": Math.max($element.outerWidth(), $element.outerHeight()) * 2,\\n \\\"margin-left\\\": Math.max($element.outerWidth(), $element.outerHeight()) * (-1),\\n \\\"margin-top\\\": Math.max($element.outerWidth(), $element.outerHeight()) * (-1),\\n \\\"opacity\\\": 0.2\\n }, 500, function() {\\n $ripple.trigger(\\\"transitionend\\\");\\n });\\n }\\n };\\n\\n\\n /**\\n * Create the jquery plugin function\\n */\\n $.fn.ripples = function(options) {\\n return this.each(function() {\\n if(!$.data(this, \\\"plugin_\\\" + ripples)) {\\n $.data(this, \\\"plugin_\\\" + ripples, new Ripples(this, options));\\n }\\n });\\n };\\n\\n})(jQuery, window, document);\\n\"\n\n/***/ },\n\n/***/ 724:\n/***/ function(module, exports) {\n\nmodule.exports = \"/*!\\n * Bootstrap v3.3.7 (http://getbootstrap.com)\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under the MIT license\\n */\\n\\nif (typeof jQuery === 'undefined') {\\n throw new Error('Bootstrap\\\\'s JavaScript requires jQuery')\\n}\\n\\n+function ($) {\\n 'use strict';\\n var version = $.fn.jquery.split(' ')[0].split('.')\\n if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) {\\n throw new Error('Bootstrap\\\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4')\\n }\\n}(jQuery);\\n\\n/* ========================================================================\\n * Bootstrap: transition.js v3.3.7\\n * http://getbootstrap.com/javascript/#transitions\\n * ========================================================================\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * ======================================================================== */\\n\\n\\n+function ($) {\\n 'use strict';\\n\\n // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)\\n // ============================================================\\n\\n function transitionEnd() {\\n var el = document.createElement('bootstrap')\\n\\n var transEndEventNames = {\\n WebkitTransition : 'webkitTransitionEnd',\\n MozTransition : 'transitionend',\\n OTransition : 'oTransitionEnd otransitionend',\\n transition : 'transitionend'\\n }\\n\\n for (var name in transEndEventNames) {\\n if (el.style[name] !== undefined) {\\n return { end: transEndEventNames[name] }\\n }\\n }\\n\\n return false // explicit for ie8 ( ._.)\\n }\\n\\n // http://blog.alexmaccaw.com/css-transitions\\n $.fn.emulateTransitionEnd = function (duration) {\\n var called = false\\n var $el = this\\n $(this).one('bsTransitionEnd', function () { called = true })\\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\\n setTimeout(callback, duration)\\n return this\\n }\\n\\n $(function () {\\n $.support.transition = transitionEnd()\\n\\n if (!$.support.transition) return\\n\\n $.event.special.bsTransitionEnd = {\\n bindType: $.support.transition.end,\\n delegateType: $.support.transition.end,\\n handle: function (e) {\\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\\n }\\n }\\n })\\n\\n}(jQuery);\\n\\n/* ========================================================================\\n * Bootstrap: alert.js v3.3.7\\n * http://getbootstrap.com/javascript/#alerts\\n * ========================================================================\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * ======================================================================== */\\n\\n\\n+function ($) {\\n 'use strict';\\n\\n // ALERT CLASS DEFINITION\\n // ======================\\n\\n var dismiss = '[data-dismiss=\\\"alert\\\"]'\\n var Alert = function (el) {\\n $(el).on('click', dismiss, this.close)\\n }\\n\\n Alert.VERSION = '3.3.7'\\n\\n Alert.TRANSITION_DURATION = 150\\n\\n Alert.prototype.close = function (e) {\\n var $this = $(this)\\n var selector = $this.attr('data-target')\\n\\n if (!selector) {\\n selector = $this.attr('href')\\n selector = selector && selector.replace(/.*(?=#[^\\\\s]*$)/, '') // strip for ie7\\n }\\n\\n var $parent = $(selector === '#' ? [] : selector)\\n\\n if (e) e.preventDefault()\\n\\n if (!$parent.length) {\\n $parent = $this.closest('.alert')\\n }\\n\\n $parent.trigger(e = $.Event('close.bs.alert'))\\n\\n if (e.isDefaultPrevented()) return\\n\\n $parent.removeClass('in')\\n\\n function removeElement() {\\n // detach from parent, fire event then clean up data\\n $parent.detach().trigger('closed.bs.alert').remove()\\n }\\n\\n $.support.transition && $parent.hasClass('fade') ?\\n $parent\\n .one('bsTransitionEnd', removeElement)\\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\\n removeElement()\\n }\\n\\n\\n // ALERT PLUGIN DEFINITION\\n // =======================\\n\\n function Plugin(option) {\\n return this.each(function () {\\n var $this = $(this)\\n var data = $this.data('bs.alert')\\n\\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\\n if (typeof option == 'string') data[option].call($this)\\n })\\n }\\n\\n var old = $.fn.alert\\n\\n $.fn.alert = Plugin\\n $.fn.alert.Constructor = Alert\\n\\n\\n // ALERT NO CONFLICT\\n // =================\\n\\n $.fn.alert.noConflict = function () {\\n $.fn.alert = old\\n return this\\n }\\n\\n\\n // ALERT DATA-API\\n // ==============\\n\\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\\n\\n}(jQuery);\\n\\n/* ========================================================================\\n * Bootstrap: button.js v3.3.7\\n * http://getbootstrap.com/javascript/#buttons\\n * ========================================================================\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * ======================================================================== */\\n\\n\\n+function ($) {\\n 'use strict';\\n\\n // BUTTON PUBLIC CLASS DEFINITION\\n // ==============================\\n\\n var Button = function (element, options) {\\n this.$element = $(element)\\n this.options = $.extend({}, Button.DEFAULTS, options)\\n this.isLoading = false\\n }\\n\\n Button.VERSION = '3.3.7'\\n\\n Button.DEFAULTS = {\\n loadingText: 'loading...'\\n }\\n\\n Button.prototype.setState = function (state) {\\n var d = 'disabled'\\n var $el = this.$element\\n var val = $el.is('input') ? 'val' : 'html'\\n var data = $el.data()\\n\\n state += 'Text'\\n\\n if (data.resetText == null) $el.data('resetText', $el[val]())\\n\\n // push to event loop to allow forms to submit\\n setTimeout($.proxy(function () {\\n $el[val](data[state] == null ? this.options[state] : data[state])\\n\\n if (state == 'loadingText') {\\n this.isLoading = true\\n $el.addClass(d).attr(d, d).prop(d, true)\\n } else if (this.isLoading) {\\n this.isLoading = false\\n $el.removeClass(d).removeAttr(d).prop(d, false)\\n }\\n }, this), 0)\\n }\\n\\n Button.prototype.toggle = function () {\\n var changed = true\\n var $parent = this.$element.closest('[data-toggle=\\\"buttons\\\"]')\\n\\n if ($parent.length) {\\n var $input = this.$element.find('input')\\n if ($input.prop('type') == 'radio') {\\n if ($input.prop('checked')) changed = false\\n $parent.find('.active').removeClass('active')\\n this.$element.addClass('active')\\n } else if ($input.prop('type') == 'checkbox') {\\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\\n this.$element.toggleClass('active')\\n }\\n $input.prop('checked', this.$element.hasClass('active'))\\n if (changed) $input.trigger('change')\\n } else {\\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\\n this.$element.toggleClass('active')\\n }\\n }\\n\\n\\n // BUTTON PLUGIN DEFINITION\\n // ========================\\n\\n function Plugin(option) {\\n return this.each(function () {\\n var $this = $(this)\\n var data = $this.data('bs.button')\\n var options = typeof option == 'object' && option\\n\\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\\n\\n if (option == 'toggle') data.toggle()\\n else if (option) data.setState(option)\\n })\\n }\\n\\n var old = $.fn.button\\n\\n $.fn.button = Plugin\\n $.fn.button.Constructor = Button\\n\\n\\n // BUTTON NO CONFLICT\\n // ==================\\n\\n $.fn.button.noConflict = function () {\\n $.fn.button = old\\n return this\\n }\\n\\n\\n // BUTTON DATA-API\\n // ===============\\n\\n $(document)\\n .on('click.bs.button.data-api', '[data-toggle^=\\\"button\\\"]', function (e) {\\n var $btn = $(e.target).closest('.btn')\\n Plugin.call($btn, 'toggle')\\n if (!($(e.target).is('input[type=\\\"radio\\\"], input[type=\\\"checkbox\\\"]'))) {\\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\\n e.preventDefault()\\n // The target component still receive the focus\\n if ($btn.is('input,button')) $btn.trigger('focus')\\n else $btn.find('input:visible,button:visible').first().trigger('focus')\\n }\\n })\\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\\\"button\\\"]', function (e) {\\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\\n })\\n\\n}(jQuery);\\n\\n/* ========================================================================\\n * Bootstrap: carousel.js v3.3.7\\n * http://getbootstrap.com/javascript/#carousel\\n * ========================================================================\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * ======================================================================== */\\n\\n\\n+function ($) {\\n 'use strict';\\n\\n // CAROUSEL CLASS DEFINITION\\n // =========================\\n\\n var Carousel = function (element, options) {\\n this.$element = $(element)\\n this.$indicators = this.$element.find('.carousel-indicators')\\n this.options = options\\n this.paused = null\\n this.sliding = null\\n this.interval = null\\n this.$active = null\\n this.$items = null\\n\\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\\n\\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\\n }\\n\\n Carousel.VERSION = '3.3.7'\\n\\n Carousel.TRANSITION_DURATION = 600\\n\\n Carousel.DEFAULTS = {\\n interval: 5000,\\n pause: 'hover',\\n wrap: true,\\n keyboard: true\\n }\\n\\n Carousel.prototype.keydown = function (e) {\\n if (/input|textarea/i.test(e.target.tagName)) return\\n switch (e.which) {\\n case 37: this.prev(); break\\n case 39: this.next(); break\\n default: return\\n }\\n\\n e.preventDefault()\\n }\\n\\n Carousel.prototype.cycle = function (e) {\\n e || (this.paused = false)\\n\\n this.interval && clearInterval(this.interval)\\n\\n this.options.interval\\n && !this.paused\\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\\n\\n return this\\n }\\n\\n Carousel.prototype.getItemIndex = function (item) {\\n this.$items = item.parent().children('.item')\\n return this.$items.index(item || this.$active)\\n }\\n\\n Carousel.prototype.getItemForDirection = function (direction, active) {\\n var activeIndex = this.getItemIndex(active)\\n var willWrap = (direction == 'prev' && activeIndex === 0)\\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\\n if (willWrap && !this.options.wrap) return active\\n var delta = direction == 'prev' ? -1 : 1\\n var itemIndex = (activeIndex + delta) % this.$items.length\\n return this.$items.eq(itemIndex)\\n }\\n\\n Carousel.prototype.to = function (pos) {\\n var that = this\\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\\n\\n if (pos > (this.$items.length - 1) || pos < 0) return\\n\\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \\\"slid\\\"\\n if (activeIndex == pos) return this.pause().cycle()\\n\\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\\n }\\n\\n Carousel.prototype.pause = function (e) {\\n e || (this.paused = true)\\n\\n if (this.$element.find('.next, .prev').length && $.support.transition) {\\n this.$element.trigger($.support.transition.end)\\n this.cycle(true)\\n }\\n\\n this.interval = clearInterval(this.interval)\\n\\n return this\\n }\\n\\n Carousel.prototype.next = function () {\\n if (this.sliding) return\\n return this.slide('next')\\n }\\n\\n Carousel.prototype.prev = function () {\\n if (this.sliding) return\\n return this.slide('prev')\\n }\\n\\n Carousel.prototype.slide = function (type, next) {\\n var $active = this.$element.find('.item.active')\\n var $next = next || this.getItemForDirection(type, $active)\\n var isCycling = this.interval\\n var direction = type == 'next' ? 'left' : 'right'\\n var that = this\\n\\n if ($next.hasClass('active')) return (this.sliding = false)\\n\\n var relatedTarget = $next[0]\\n var slideEvent = $.Event('slide.bs.carousel', {\\n relatedTarget: relatedTarget,\\n direction: direction\\n })\\n this.$element.trigger(slideEvent)\\n if (slideEvent.isDefaultPrevented()) return\\n\\n this.sliding = true\\n\\n isCycling && this.pause()\\n\\n if (this.$indicators.length) {\\n this.$indicators.find('.active').removeClass('active')\\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\\n $nextIndicator && $nextIndicator.addClass('active')\\n }\\n\\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \\\"slid\\\"\\n if ($.support.transition && this.$element.hasClass('slide')) {\\n $next.addClass(type)\\n $next[0].offsetWidth // force reflow\\n $active.addClass(direction)\\n $next.addClass(direction)\\n $active\\n .one('bsTransitionEnd', function () {\\n $next.removeClass([type, direction].join(' ')).addClass('active')\\n $active.removeClass(['active', direction].join(' '))\\n that.sliding = false\\n setTimeout(function () {\\n that.$element.trigger(slidEvent)\\n }, 0)\\n })\\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\\n } else {\\n $active.removeClass('active')\\n $next.addClass('active')\\n this.sliding = false\\n this.$element.trigger(slidEvent)\\n }\\n\\n isCycling && this.cycle()\\n\\n return this\\n }\\n\\n\\n // CAROUSEL PLUGIN DEFINITION\\n // ==========================\\n\\n function Plugin(option) {\\n return this.each(function () {\\n var $this = $(this)\\n var data = $this.data('bs.carousel')\\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\\n var action = typeof option == 'string' ? option : options.slide\\n\\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\\n if (typeof option == 'number') data.to(option)\\n else if (action) data[action]()\\n else if (options.interval) data.pause().cycle()\\n })\\n }\\n\\n var old = $.fn.carousel\\n\\n $.fn.carousel = Plugin\\n $.fn.carousel.Constructor = Carousel\\n\\n\\n // CAROUSEL NO CONFLICT\\n // ====================\\n\\n $.fn.carousel.noConflict = function () {\\n $.fn.carousel = old\\n return this\\n }\\n\\n\\n // CAROUSEL DATA-API\\n // =================\\n\\n var clickHandler = function (e) {\\n var href\\n var $this = $(this)\\n var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\\\\s]+$)/, '')) // strip for ie7\\n if (!$target.hasClass('carousel')) return\\n var options = $.extend({}, $target.data(), $this.data())\\n var slideIndex = $this.attr('data-slide-to')\\n if (slideIndex) options.interval = false\\n\\n Plugin.call($target, options)\\n\\n if (slideIndex) {\\n $target.data('bs.carousel').to(slideIndex)\\n }\\n\\n e.preventDefault()\\n }\\n\\n $(document)\\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\\n\\n $(window).on('load', function () {\\n $('[data-ride=\\\"carousel\\\"]').each(function () {\\n var $carousel = $(this)\\n Plugin.call($carousel, $carousel.data())\\n })\\n })\\n\\n}(jQuery);\\n\\n/* ========================================================================\\n * Bootstrap: collapse.js v3.3.7\\n * http://getbootstrap.com/javascript/#collapse\\n * ========================================================================\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * ======================================================================== */\\n\\n/* jshint latedef: false */\\n\\n+function ($) {\\n 'use strict';\\n\\n // COLLAPSE PUBLIC CLASS DEFINITION\\n // ================================\\n\\n var Collapse = function (element, options) {\\n this.$element = $(element)\\n this.options = $.extend({}, Collapse.DEFAULTS, options)\\n this.$trigger = $('[data-toggle=\\\"collapse\\\"][href=\\\"#' + element.id + '\\\"],' +\\n '[data-toggle=\\\"collapse\\\"][data-target=\\\"#' + element.id + '\\\"]')\\n this.transitioning = null\\n\\n if (this.options.parent) {\\n this.$parent = this.getParent()\\n } else {\\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\\n }\\n\\n if (this.options.toggle) this.toggle()\\n }\\n\\n Collapse.VERSION = '3.3.7'\\n\\n Collapse.TRANSITION_DURATION = 350\\n\\n Collapse.DEFAULTS = {\\n toggle: true\\n }\\n\\n Collapse.prototype.dimension = function () {\\n var hasWidth = this.$element.hasClass('width')\\n return hasWidth ? 'width' : 'height'\\n }\\n\\n Collapse.prototype.show = function () {\\n if (this.transitioning || this.$element.hasClass('in')) return\\n\\n var activesData\\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\\n\\n if (actives && actives.length) {\\n activesData = actives.data('bs.collapse')\\n if (activesData && activesData.transitioning) return\\n }\\n\\n var startEvent = $.Event('show.bs.collapse')\\n this.$element.trigger(startEvent)\\n if (startEvent.isDefaultPrevented()) return\\n\\n if (actives && actives.length) {\\n Plugin.call(actives, 'hide')\\n activesData || actives.data('bs.collapse', null)\\n }\\n\\n var dimension = this.dimension()\\n\\n this.$element\\n .removeClass('collapse')\\n .addClass('collapsing')[dimension](0)\\n .attr('aria-expanded', true)\\n\\n this.$trigger\\n .removeClass('collapsed')\\n .attr('aria-expanded', true)\\n\\n this.transitioning = 1\\n\\n var complete = function () {\\n this.$element\\n .removeClass('collapsing')\\n .addClass('collapse in')[dimension]('')\\n this.transitioning = 0\\n this.$element\\n .trigger('shown.bs.collapse')\\n }\\n\\n if (!$.support.transition) return complete.call(this)\\n\\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\\n\\n this.$element\\n .one('bsTransitionEnd', $.proxy(complete, this))\\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\\n }\\n\\n Collapse.prototype.hide = function () {\\n if (this.transitioning || !this.$element.hasClass('in')) return\\n\\n var startEvent = $.Event('hide.bs.collapse')\\n this.$element.trigger(startEvent)\\n if (startEvent.isDefaultPrevented()) return\\n\\n var dimension = this.dimension()\\n\\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\\n\\n this.$element\\n .addClass('collapsing')\\n .removeClass('collapse in')\\n .attr('aria-expanded', false)\\n\\n this.$trigger\\n .addClass('collapsed')\\n .attr('aria-expanded', false)\\n\\n this.transitioning = 1\\n\\n var complete = function () {\\n this.transitioning = 0\\n this.$element\\n .removeClass('collapsing')\\n .addClass('collapse')\\n .trigger('hidden.bs.collapse')\\n }\\n\\n if (!$.support.transition) return complete.call(this)\\n\\n this.$element\\n [dimension](0)\\n .one('bsTransitionEnd', $.proxy(complete, this))\\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\\n }\\n\\n Collapse.prototype.toggle = function () {\\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\\n }\\n\\n Collapse.prototype.getParent = function () {\\n return $(this.options.parent)\\n .find('[data-toggle=\\\"collapse\\\"][data-parent=\\\"' + this.options.parent + '\\\"]')\\n .each($.proxy(function (i, element) {\\n var $element = $(element)\\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\\n }, this))\\n .end()\\n }\\n\\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\\n var isOpen = $element.hasClass('in')\\n\\n $element.attr('aria-expanded', isOpen)\\n $trigger\\n .toggleClass('collapsed', !isOpen)\\n .attr('aria-expanded', isOpen)\\n }\\n\\n function getTargetFromTrigger($trigger) {\\n var href\\n var target = $trigger.attr('data-target')\\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\\\s]+$)/, '') // strip for ie7\\n\\n return $(target)\\n }\\n\\n\\n // COLLAPSE PLUGIN DEFINITION\\n // ==========================\\n\\n function Plugin(option) {\\n return this.each(function () {\\n var $this = $(this)\\n var data = $this.data('bs.collapse')\\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\\n\\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\\n if (typeof option == 'string') data[option]()\\n })\\n }\\n\\n var old = $.fn.collapse\\n\\n $.fn.collapse = Plugin\\n $.fn.collapse.Constructor = Collapse\\n\\n\\n // COLLAPSE NO CONFLICT\\n // ====================\\n\\n $.fn.collapse.noConflict = function () {\\n $.fn.collapse = old\\n return this\\n }\\n\\n\\n // COLLAPSE DATA-API\\n // =================\\n\\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\\\"collapse\\\"]', function (e) {\\n var $this = $(this)\\n\\n if (!$this.attr('data-target')) e.preventDefault()\\n\\n var $target = getTargetFromTrigger($this)\\n var data = $target.data('bs.collapse')\\n var option = data ? 'toggle' : $this.data()\\n\\n Plugin.call($target, option)\\n })\\n\\n}(jQuery);\\n\\n/* ========================================================================\\n * Bootstrap: dropdown.js v3.3.7\\n * http://getbootstrap.com/javascript/#dropdowns\\n * ========================================================================\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * ======================================================================== */\\n\\n\\n+function ($) {\\n 'use strict';\\n\\n // DROPDOWN CLASS DEFINITION\\n // =========================\\n\\n var backdrop = '.dropdown-backdrop'\\n var toggle = '[data-toggle=\\\"dropdown\\\"]'\\n var Dropdown = function (element) {\\n $(element).on('click.bs.dropdown', this.toggle)\\n }\\n\\n Dropdown.VERSION = '3.3.7'\\n\\n function getParent($this) {\\n var selector = $this.attr('data-target')\\n\\n if (!selector) {\\n selector = $this.attr('href')\\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\\\s]*$)/, '') // strip for ie7\\n }\\n\\n var $parent = selector && $(selector)\\n\\n return $parent && $parent.length ? $parent : $this.parent()\\n }\\n\\n function clearMenus(e) {\\n if (e && e.which === 3) return\\n $(backdrop).remove()\\n $(toggle).each(function () {\\n var $this = $(this)\\n var $parent = getParent($this)\\n var relatedTarget = { relatedTarget: this }\\n\\n if (!$parent.hasClass('open')) return\\n\\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\\n\\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\\n\\n if (e.isDefaultPrevented()) return\\n\\n $this.attr('aria-expanded', 'false')\\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\\n })\\n }\\n\\n Dropdown.prototype.toggle = function (e) {\\n var $this = $(this)\\n\\n if ($this.is('.disabled, :disabled')) return\\n\\n var $parent = getParent($this)\\n var isActive = $parent.hasClass('open')\\n\\n clearMenus()\\n\\n if (!isActive) {\\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\\n // if mobile we use a backdrop because click events don't delegate\\n $(document.createElement('div'))\\n .addClass('dropdown-backdrop')\\n .insertAfter($(this))\\n .on('click', clearMenus)\\n }\\n\\n var relatedTarget = { relatedTarget: this }\\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\\n\\n if (e.isDefaultPrevented()) return\\n\\n $this\\n .trigger('focus')\\n .attr('aria-expanded', 'true')\\n\\n $parent\\n .toggleClass('open')\\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\\n }\\n\\n return false\\n }\\n\\n Dropdown.prototype.keydown = function (e) {\\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\\n\\n var $this = $(this)\\n\\n e.preventDefault()\\n e.stopPropagation()\\n\\n if ($this.is('.disabled, :disabled')) return\\n\\n var $parent = getParent($this)\\n var isActive = $parent.hasClass('open')\\n\\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\\n if (e.which == 27) $parent.find(toggle).trigger('focus')\\n return $this.trigger('click')\\n }\\n\\n var desc = ' li:not(.disabled):visible a'\\n var $items = $parent.find('.dropdown-menu' + desc)\\n\\n if (!$items.length) return\\n\\n var index = $items.index(e.target)\\n\\n if (e.which == 38 && index > 0) index-- // up\\n if (e.which == 40 && index < $items.length - 1) index++ // down\\n if (!~index) index = 0\\n\\n $items.eq(index).trigger('focus')\\n }\\n\\n\\n // DROPDOWN PLUGIN DEFINITION\\n // ==========================\\n\\n function Plugin(option) {\\n return this.each(function () {\\n var $this = $(this)\\n var data = $this.data('bs.dropdown')\\n\\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\\n if (typeof option == 'string') data[option].call($this)\\n })\\n }\\n\\n var old = $.fn.dropdown\\n\\n $.fn.dropdown = Plugin\\n $.fn.dropdown.Constructor = Dropdown\\n\\n\\n // DROPDOWN NO CONFLICT\\n // ====================\\n\\n $.fn.dropdown.noConflict = function () {\\n $.fn.dropdown = old\\n return this\\n }\\n\\n\\n // APPLY TO STANDARD DROPDOWN ELEMENTS\\n // ===================================\\n\\n $(document)\\n .on('click.bs.dropdown.data-api', clearMenus)\\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\\n\\n}(jQuery);\\n\\n/* ========================================================================\\n * Bootstrap: modal.js v3.3.7\\n * http://getbootstrap.com/javascript/#modals\\n * ========================================================================\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * ======================================================================== */\\n\\n\\n+function ($) {\\n 'use strict';\\n\\n // MODAL CLASS DEFINITION\\n // ======================\\n\\n var Modal = function (element, options) {\\n this.options = options\\n this.$body = $(document.body)\\n this.$element = $(element)\\n this.$dialog = this.$element.find('.modal-dialog')\\n this.$backdrop = null\\n this.isShown = null\\n this.originalBodyPad = null\\n this.scrollbarWidth = 0\\n this.ignoreBackdropClick = false\\n\\n if (this.options.remote) {\\n this.$element\\n .find('.modal-content')\\n .load(this.options.remote, $.proxy(function () {\\n this.$element.trigger('loaded.bs.modal')\\n }, this))\\n }\\n }\\n\\n Modal.VERSION = '3.3.7'\\n\\n Modal.TRANSITION_DURATION = 300\\n Modal.BACKDROP_TRANSITION_DURATION = 150\\n\\n Modal.DEFAULTS = {\\n backdrop: true,\\n keyboard: true,\\n show: true\\n }\\n\\n Modal.prototype.toggle = function (_relatedTarget) {\\n return this.isShown ? this.hide() : this.show(_relatedTarget)\\n }\\n\\n Modal.prototype.show = function (_relatedTarget) {\\n var that = this\\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\\n\\n this.$element.trigger(e)\\n\\n if (this.isShown || e.isDefaultPrevented()) return\\n\\n this.isShown = true\\n\\n this.checkScrollbar()\\n this.setScrollbar()\\n this.$body.addClass('modal-open')\\n\\n this.escape()\\n this.resize()\\n\\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\\\"modal\\\"]', $.proxy(this.hide, this))\\n\\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\\n })\\n })\\n\\n this.backdrop(function () {\\n var transition = $.support.transition && that.$element.hasClass('fade')\\n\\n if (!that.$element.parent().length) {\\n that.$element.appendTo(that.$body) // don't move modals dom position\\n }\\n\\n that.$element\\n .show()\\n .scrollTop(0)\\n\\n that.adjustDialog()\\n\\n if (transition) {\\n that.$element[0].offsetWidth // force reflow\\n }\\n\\n that.$element.addClass('in')\\n\\n that.enforceFocus()\\n\\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\\n\\n transition ?\\n that.$dialog // wait for modal to slide in\\n .one('bsTransitionEnd', function () {\\n that.$element.trigger('focus').trigger(e)\\n })\\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\\n that.$element.trigger('focus').trigger(e)\\n })\\n }\\n\\n Modal.prototype.hide = function (e) {\\n if (e) e.preventDefault()\\n\\n e = $.Event('hide.bs.modal')\\n\\n this.$element.trigger(e)\\n\\n if (!this.isShown || e.isDefaultPrevented()) return\\n\\n this.isShown = false\\n\\n this.escape()\\n this.resize()\\n\\n $(document).off('focusin.bs.modal')\\n\\n this.$element\\n .removeClass('in')\\n .off('click.dismiss.bs.modal')\\n .off('mouseup.dismiss.bs.modal')\\n\\n this.$dialog.off('mousedown.dismiss.bs.modal')\\n\\n $.support.transition && this.$element.hasClass('fade') ?\\n this.$element\\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\\n this.hideModal()\\n }\\n\\n Modal.prototype.enforceFocus = function () {\\n $(document)\\n .off('focusin.bs.modal') // guard against infinite focus loop\\n .on('focusin.bs.modal', $.proxy(function (e) {\\n if (document !== e.target &&\\n this.$element[0] !== e.target &&\\n !this.$element.has(e.target).length) {\\n this.$element.trigger('focus')\\n }\\n }, this))\\n }\\n\\n Modal.prototype.escape = function () {\\n if (this.isShown && this.options.keyboard) {\\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\\n e.which == 27 && this.hide()\\n }, this))\\n } else if (!this.isShown) {\\n this.$element.off('keydown.dismiss.bs.modal')\\n }\\n }\\n\\n Modal.prototype.resize = function () {\\n if (this.isShown) {\\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\\n } else {\\n $(window).off('resize.bs.modal')\\n }\\n }\\n\\n Modal.prototype.hideModal = function () {\\n var that = this\\n this.$element.hide()\\n this.backdrop(function () {\\n that.$body.removeClass('modal-open')\\n that.resetAdjustments()\\n that.resetScrollbar()\\n that.$element.trigger('hidden.bs.modal')\\n })\\n }\\n\\n Modal.prototype.removeBackdrop = function () {\\n this.$backdrop && this.$backdrop.remove()\\n this.$backdrop = null\\n }\\n\\n Modal.prototype.backdrop = function (callback) {\\n var that = this\\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\\n\\n if (this.isShown && this.options.backdrop) {\\n var doAnimate = $.support.transition && animate\\n\\n this.$backdrop = $(document.createElement('div'))\\n .addClass('modal-backdrop ' + animate)\\n .appendTo(this.$body)\\n\\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\\n if (this.ignoreBackdropClick) {\\n this.ignoreBackdropClick = false\\n return\\n }\\n if (e.target !== e.currentTarget) return\\n this.options.backdrop == 'static'\\n ? this.$element[0].focus()\\n : this.hide()\\n }, this))\\n\\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\\n\\n this.$backdrop.addClass('in')\\n\\n if (!callback) return\\n\\n doAnimate ?\\n this.$backdrop\\n .one('bsTransitionEnd', callback)\\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\\n callback()\\n\\n } else if (!this.isShown && this.$backdrop) {\\n this.$backdrop.removeClass('in')\\n\\n var callbackRemove = function () {\\n that.removeBackdrop()\\n callback && callback()\\n }\\n $.support.transition && this.$element.hasClass('fade') ?\\n this.$backdrop\\n .one('bsTransitionEnd', callbackRemove)\\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\\n callbackRemove()\\n\\n } else if (callback) {\\n callback()\\n }\\n }\\n\\n // these following methods are used to handle overflowing modals\\n\\n Modal.prototype.handleUpdate = function () {\\n this.adjustDialog()\\n }\\n\\n Modal.prototype.adjustDialog = function () {\\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\\n\\n this.$element.css({\\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\\n })\\n }\\n\\n Modal.prototype.resetAdjustments = function () {\\n this.$element.css({\\n paddingLeft: '',\\n paddingRight: ''\\n })\\n }\\n\\n Modal.prototype.checkScrollbar = function () {\\n var fullWindowWidth = window.innerWidth\\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\\n var documentElementRect = document.documentElement.getBoundingClientRect()\\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\\n }\\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\\n this.scrollbarWidth = this.measureScrollbar()\\n }\\n\\n Modal.prototype.setScrollbar = function () {\\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\\n this.originalBodyPad = document.body.style.paddingRight || ''\\n if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)\\n }\\n\\n Modal.prototype.resetScrollbar = function () {\\n this.$body.css('padding-right', this.originalBodyPad)\\n }\\n\\n Modal.prototype.measureScrollbar = function () { // thx walsh\\n var scrollDiv = document.createElement('div')\\n scrollDiv.className = 'modal-scrollbar-measure'\\n this.$body.append(scrollDiv)\\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\\n this.$body[0].removeChild(scrollDiv)\\n return scrollbarWidth\\n }\\n\\n\\n // MODAL PLUGIN DEFINITION\\n // =======================\\n\\n function Plugin(option, _relatedTarget) {\\n return this.each(function () {\\n var $this = $(this)\\n var data = $this.data('bs.modal')\\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\\n\\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\\n if (typeof option == 'string') data[option](_relatedTarget)\\n else if (options.show) data.show(_relatedTarget)\\n })\\n }\\n\\n var old = $.fn.modal\\n\\n $.fn.modal = Plugin\\n $.fn.modal.Constructor = Modal\\n\\n\\n // MODAL NO CONFLICT\\n // =================\\n\\n $.fn.modal.noConflict = function () {\\n $.fn.modal = old\\n return this\\n }\\n\\n\\n // MODAL DATA-API\\n // ==============\\n\\n $(document).on('click.bs.modal.data-api', '[data-toggle=\\\"modal\\\"]', function (e) {\\n var $this = $(this)\\n var href = $this.attr('href')\\n var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\\\\s]+$)/, ''))) // strip for ie7\\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\\n\\n if ($this.is('a')) e.preventDefault()\\n\\n $target.one('show.bs.modal', function (showEvent) {\\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\\n $target.one('hidden.bs.modal', function () {\\n $this.is(':visible') && $this.trigger('focus')\\n })\\n })\\n Plugin.call($target, option, this)\\n })\\n\\n}(jQuery);\\n\\n/* ========================================================================\\n * Bootstrap: tooltip.js v3.3.7\\n * http://getbootstrap.com/javascript/#tooltip\\n * Inspired by the original jQuery.tipsy by Jason Frame\\n * ========================================================================\\n * Copyright 2011-2016 Twitter, Inc.\\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\\n * ======================================================================== */\\n\\n\\n+function ($) {\\n 'use strict';\\n\\n // TOOLTIP PUBLIC CLASS DEFINITION\\n // ===============================\\n\\n var Tooltip = function (element, options) {\\n this.type = null\\n this.options = null\\n this.enabled = null\\n this.timeout = null\\n this.hoverState = null\\n this.$element = null\\n this.inState = null\\n\\n this.init('tooltip', element, options)\\n }\\n\\n Tooltip.VERSION = '3.3.7'\\n\\n Tooltip.TRANSITION_DURATION = 150\\n\\n Tooltip.DEFAULTS = {\\n animation: true,\\n placement: 'top',\\n selector: false,\\n template: '