{"version":3,"file":"bootstrap-select.min.js","sources":["https:\/\/udl.id\/theme\/remui\/amd\/src\/bootstrap-select.js"],"sourcesContent":["\/* eslint-disable *\/\n\/\/ This file is part of Moodle - http:\/\/moodle.org\/\n\/\/\n\/\/ Moodle is free software: you can redistribute it and\/or modify\n\/\/ it under the terms of the GNU General Public License as published by\n\/\/ the Free Software Foundation, either version 3 of the License, or\n\/\/ (at your option) any later version.\n\/\/\n\/\/ Moodle is distributed in the hope that it will be useful,\n\/\/ but WITHOUT ANY WARRANTY; without even the implied warranty of\n\/\/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\/\/ GNU General Public License for more details.\n\/\/\n\/\/ You should have received a copy of the GNU General Public License\n\/\/ along with Moodle. If not, see .\n\/*!\n * Bootstrap-select v1.12.4 (http:\/\/silviomoreto.github.io\/bootstrap-select)\n *\n * Copyright 2013-2017 bootstrap-select\n * Licensed under MIT (https:\/\/github.com\/silviomoreto\/bootstrap-select\/blob\/master\/LICENSE)\n *\/\n\"use strict\";\ndefine([\"jquery\"], function(jQuery) {\n (function($) {\n 'use strict';\n if (!String.prototype.includes) {\n (function() {\n 'use strict'; \/\/ Needed to support `apply`\/`call` with `undefined`\/`null`.\n var toString = {}.toString;\n var defineProperty = (function() {\n \/\/ IE 8 only supports `Object.defineProperty` on DOM elements.\n try {\n var object = {};\n var $defineProperty = Object.defineProperty;\n var result = $defineProperty(object, object, object) && $defineProperty;\n } catch (error) {}\n return result;\n }());\n var indexOf = ''.indexOf;\n var includes = function(search) {\n if (this == null) {\n throw new TypeError();\n }\n var string = String(this);\n if (search && toString.call(search) == '[object RegExp]') {\n throw new TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n \/\/ To Integer.\n var pos = position ? Number(position) : 0;\n if (pos != pos) { \/\/ Better `isNaN`.\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n \/\/ Avoid the `indexOf` call if no match is possible.\n if (searchLength + start > stringLength) {\n return false;\n }\n return indexOf.call(string, searchString, pos) != -1;\n };\n if (defineProperty) {\n defineProperty(String.prototype, 'includes', {\n 'value': includes,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.prototype.includes = includes;\n }\n }());\n }\n if (!String.prototype.startsWith) {\n (function() {\n 'use strict'; \/\/ Needed to support `apply`\/`call` with `undefined`\/`null`.\n var defineProperty = (function() {\n \/\/ IE 8 only supports `Object.defineProperty` on DOM elements.\n try {\n var object = {};\n var $defineProperty = Object.defineProperty;\n var result = $defineProperty(object, object, object) && $defineProperty;\n } catch (error) {}\n return result;\n }());\n var toString = {}.toString;\n var startsWith = function(search) {\n if (this == null) {\n throw new TypeError();\n }\n var string = String(this);\n if (search && toString.call(search) == '[object RegExp]') {\n throw new TypeError();\n }\n var stringLength = string.length;\n var searchString = String(search);\n var searchLength = searchString.length;\n var position = arguments.length > 1 ? arguments[1] : undefined;\n \/\/ To integer.\n var pos = position ? Number(position) : 0;\n if (pos != pos) { \/\/ Better `isNaN`.\n pos = 0;\n }\n var start = Math.min(Math.max(pos, 0), stringLength);\n \/\/ Avoid the `indexOf` call if no match is possible.\n if (searchLength + start > stringLength) {\n return false;\n }\n var index = -1;\n while (++index < searchLength) {\n if (string.charCodeAt(start + index) != searchString.charCodeAt(index)) {\n return false;\n }\n }\n return true;\n };\n if (defineProperty) {\n defineProperty(String.prototype, 'startsWith', {\n 'value': startsWith,\n 'configurable': true,\n 'writable': true\n });\n } else {\n String.prototype.startsWith = startsWith;\n }\n }());\n }\n if (!Object.keys) {\n Object.keys = function(\n o, \/\/ Object.\n k, \/\/ Key.\n r \/\/ Result array.\n ) {\n \/\/ Initialize object and result.\n r = [];\n \/\/ Iterate over object keys.\n for (k in o) {\n \/\/ Fill result array with non-prototypical keys.\n r.hasOwnProperty.call(o, k) && r.push(k);\n }\n \/\/ Return result.\n return r;\n };\n }\n \/\/ Set data-selected on select element if the value has been programmatically selected.\n \/\/ Prior to initialization of bootstrap-select.\n \/\/ Consider removing or replacing an alternative method.\n var valHooks = {\n useDefault: false,\n _set: $.valHooks.select.set\n };\n $.valHooks.select.set = function(elem, value) {\n if (value && !valHooks.useDefault) {\n $(elem).data('selected', true);\n }\n return valHooks._set.apply(this, arguments);\n };\n var changed_arguments = null;\n var EventIsSupported = (function() {\n try {\n new Event('change');\n return true;\n } catch (e) {\n return false;\n }\n })();\n $.fn.triggerNative = function(eventName) {\n var el = this[0],\n event;\n if (el.dispatchEvent) { \/\/ For modern browsers & IE9+.\n if (EventIsSupported) {\n \/\/ For modern browsers.\n event = new Event(eventName, {\n bubbles: true\n });\n } else {\n \/\/ For IE since it doesn't support Event constructor.\n event = document.createEvent('Event');\n event.initEvent(eventName, true, false);\n }\n el.dispatchEvent(event);\n } else if (el.fireEvent) { \/\/ For IE8.\n event = document.createEventObject();\n event.eventType = eventName;\n el.fireEvent('on' + eventName, event);\n } else {\n \/\/ Fall back to jQuery.trigger.\n this.trigger(eventName);\n }\n };\n \/\/ Case insensitive contains search.\n $.expr.pseudos.icontains = function(obj, index, meta) {\n var $obj = $(obj).find('a');\n var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\n return haystack.includes(meta[3].toUpperCase());\n };\n \/\/ Case insensitive begins search.\n $.expr.pseudos.ibegins = function(obj, index, meta) {\n var $obj = $(obj).find('a');\n var haystack = ($obj.data('tokens') || $obj.text()).toString().toUpperCase();\n return haystack.startsWith(meta[3].toUpperCase());\n };\n \/\/ Case and accent insensitive contains search.\n $.expr.pseudos.aicontains = function(obj, index, meta) {\n var $obj = $(obj).find('a');\n var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\n return haystack.includes(meta[3].toUpperCase());\n };\n \/\/ Case and accent insensitive begins search.\n $.expr.pseudos.aibegins = function(obj, index, meta) {\n var $obj = $(obj).find('a');\n var haystack = ($obj.data('tokens') || $obj.data('normalizedText') || $obj.text()).toString().toUpperCase();\n return haystack.startsWith(meta[3].toUpperCase());\n };\n \/**\n * Remove all diatrics from the given text.\n * @access private\n * @param {String} text\n * @returns {String}\n *\/\n function normalizeToBase(text) {\n var rExps = [{\n re: \/[\\xC0-\\xC6]\/g,\n ch: \"A\"\n }, {\n re: \/[\\xE0-\\xE6]\/g,\n ch: \"a\"\n }, {\n re: \/[\\xC8-\\xCB]\/g,\n ch: \"E\"\n }, {\n re: \/[\\xE8-\\xEB]\/g,\n ch: \"e\"\n }, {\n re: \/[\\xCC-\\xCF]\/g,\n ch: \"I\"\n }, {\n re: \/[\\xEC-\\xEF]\/g,\n ch: \"i\"\n }, {\n re: \/[\\xD2-\\xD6]\/g,\n ch: \"O\"\n }, {\n re: \/[\\xF2-\\xF6]\/g,\n ch: \"o\"\n }, {\n re: \/[\\xD9-\\xDC]\/g,\n ch: \"U\"\n }, {\n re: \/[\\xF9-\\xFC]\/g,\n ch: \"u\"\n }, {\n re: \/[\\xC7-\\xE7]\/g,\n ch: \"c\"\n }, {\n re: \/[\\xD1]\/g,\n ch: \"N\"\n }, {\n re: \/[\\xF1]\/g,\n ch: \"n\"\n }];\n $.each(rExps, function() {\n text = text ? text.replace(this.re, this.ch) : '';\n });\n return text;\n }\n \/\/ List of HTML entities for escaping.\n var escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n };\n var unescapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\",\n '`': '`'\n };\n \/\/ Functions for escaping and unescaping strings to\/from HTML interpolation.\n var createEscaper = function(map) {\n var escaper = function(match) {\n return map[match];\n };\n \/\/ Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + Object.keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n };\n var htmlEscape = createEscaper(escapeMap);\n var htmlUnescape = createEscaper(unescapeMap);\n var Selectpicker = function(element, options) {\n \/\/ Bootstrap-select has been initialized - revert valHooks.select.set back to its original function.\n if (!valHooks.useDefault) {\n $.valHooks.select.set = valHooks._set;\n valHooks.useDefault = true;\n }\n this.$element = $(element);\n this.$newElement = null;\n this.$button = null;\n this.$menu = null;\n this.$lis = null;\n this.options = options;\n \/\/ If we have no title yet, try to pull it from the html title attribute (jQuery doesnt' pick it up as it's not a data-attribute).\n if (this.options.title === null) {\n this.options.title = this.$element.attr('title');\n }\n \/\/ Format window padding.\n var winPad = this.options.windowPadding;\n if (typeof winPad === 'number') {\n this.options.windowPadding = [winPad, winPad, winPad, winPad];\n }\n \/\/ Expose public methods.\n this.val = Selectpicker.prototype.val;\n this.render = Selectpicker.prototype.render;\n this.refresh = Selectpicker.prototype.refresh;\n this.setStyle = Selectpicker.prototype.setStyle;\n this.selectAll = Selectpicker.prototype.selectAll;\n this.deselectAll = Selectpicker.prototype.deselectAll;\n this.destroy = Selectpicker.prototype.destroy;\n this.remove = Selectpicker.prototype.remove;\n this.show = Selectpicker.prototype.show;\n this.hide = Selectpicker.prototype.hide;\n this.init();\n };\n Selectpicker.VERSION = '1.12.4';\n \/\/ Part of this is duplicated in i18n\/defaults-en_US.js. Make sure to update both.\n Selectpicker.DEFAULTS = {\n noneSelectedText: 'Nothing selected',\n noneResultsText: 'No results matched {0}',\n countSelectedText: function(numSelected, numTotal) {\n return (numSelected == 1) ? \"{0} item selected\" : \"{0} items selected\";\n },\n maxOptionsText: function(numAll, numGroup) {\n return [\n (numAll == 1) ? 'Limit reached ({n} item max)' : 'Limit reached ({n} items max)',\n (numGroup == 1) ? 'Group limit reached ({n} item max)' : 'Group limit reached ({n} items max)'\n ];\n },\n selectAllText: 'Select All',\n deselectAllText: 'Deselect All',\n doneButton: false,\n doneButtonText: 'Close',\n multipleSeparator: ', ',\n styleBase: 'btn',\n style: 'btn-default',\n size: 'auto',\n title: null,\n selectedTextFormat: 'values',\n width: false,\n container: false,\n hideDisabled: false,\n showSubtext: false,\n showIcon: true,\n showContent: true,\n dropupAuto: true,\n header: false,\n liveSearch: false,\n liveSearchPlaceholder: null,\n liveSearchNormalize: false,\n liveSearchStyle: 'contains',\n actionsBox: false,\n iconBase: 'glyphicon',\n tickIcon: 'glyphicon-ok',\n showTick: false,\n template: {\n caret: '<\/span>'\n },\n maxOptions: false,\n mobile: false,\n selectOnTab: false,\n dropdownAlignRight: false,\n windowPadding: 0\n };\n Selectpicker.prototype = {\n constructor: Selectpicker,\n init: function() {\n var that = this,\n id = this.$element.attr('id');\n this.$element.addClass('bs-select-hidden');\n \/\/ Store originalIndex (key) and newIndex (value) in this.liObj for fast accessibility.\n \/\/ Allows us to do this.$lis.eq(that.liObj[index]) instead of this.$lis.filter('[data-original-index=\"' + index + '\"]').\n this.liObj = {};\n this.multiple = this.$element.prop('multiple');\n this.autofocus = this.$element.prop('autofocus');\n this.$newElement = this.createView();\n this.$element\n .after(this.$newElement)\n .appendTo(this.$newElement);\n this.$button = this.$newElement.children('button');\n this.$menu = this.$newElement.children('.dropdown-menu');\n this.$menuInner = this.$menu.children('.inner');\n this.$searchbox = this.$menu.find('input');\n this.$element.removeClass('bs-select-hidden');\n if (this.options.dropdownAlignRight === true) {\n this.$menu.addClass('dropdown-menu-right');\n }\n if (typeof id !== 'undefined') {\n this.$button.attr('data-id', id);\n $('label[for=\"' + id + '\"]').click(function(e) {\n e.preventDefault();\n that.$button.focus();\n });\n }\n this.checkDisabled();\n this.clickListener();\n if (this.options.liveSearch) {\n this.liveSearchListener();\n }\n this.render();\n this.setStyle();\n this.setWidth();\n if (this.options.container) {\n this.selectPosition();\n }\n this.$menu.data('this', this);\n this.$newElement.data('this', this);\n if (this.options.mobile) {\n this.mobile();\n }\n this.$newElement.on({\n 'hide.bs.dropdown': function(e) {\n that.$menuInner.attr('aria-expanded', false);\n that.$element.trigger('hide.bs.select', e);\n },\n 'hidden.bs.dropdown': function(e) {\n that.$element.trigger('hidden.bs.select', e);\n },\n 'show.bs.dropdown': function(e) {\n that.$menuInner.attr('aria-expanded', true);\n that.$element.trigger('show.bs.select', e);\n },\n 'shown.bs.dropdown': function(e) {\n that.$element.trigger('shown.bs.select', e);\n }\n });\n if (that.$element[0].hasAttribute('required')) {\n this.$element.on('invalid', function() {\n that.$button.addClass('bs-invalid');\n that.$element.on({\n 'focus.bs.select': function() {\n that.$button.focus();\n that.$element.off('focus.bs.select');\n },\n 'shown.bs.select': function() {\n that.$element\n \/\/ Set the value to hide the validation message in Chrome when menu is opened.\n .val(that.$element.val())\n .off('shown.bs.select');\n },\n 'rendered.bs.select': function() {\n \/\/ If select is no longer invalid, remove the bs-invalid class.\n if (this.validity.valid) {\n that.$button.removeClass('bs-invalid');\n }\n that.$element.off('rendered.bs.select');\n }\n });\n that.$button.on('blur.bs.select', function() {\n that.$element.focus().blur();\n that.$button.off('blur.bs.select');\n });\n });\n }\n setTimeout(function() {\n that.$element.trigger('loaded.bs.select');\n });\n },\n createDropdown: function() {\n \/\/ Options.\n \/\/ If we are multiple or showTick option is set, then add the show-tick class.\n var showTick = (this.multiple || this.options.showTick) ? ' show-tick' : '',\n inputGroup = this.$element.parent().hasClass('input-group') ? ' input-group-btn' : '',\n autofocus = this.autofocus ? ' autofocus' : '';\n \/\/ Elements.\n var header = this.options.header ? '×<\/button>' + this.options.header + '<\/div>' : '';\n var searchbox = this.options.liveSearch ? '' + '' + '<\/div>' : '';\n var actionsbox = this.multiple && this.options.actionsBox ? '' + '' + '' + this.options.selectAllText + '<\/button>' + '' + this.options.deselectAllText + '<\/button>' + '<\/div>' + '<\/div>' : '';\n var donebutton = this.multiple && this.options.doneButton ? '' + '' + '' + this.options.doneButtonText + '<\/button>' + '<\/div>' + '<\/div>' : '';\n var drop = '' + '' + '<\/span> ' + '' + this.options.template.caret + '<\/span>' + '<\/button>' + '' + header + searchbox + actionsbox + '' + '<\/ul>' + donebutton + '<\/div>' + '<\/div>';\n return $(drop);\n },\n createView: function() {\n var $drop = this.createDropdown(),\n li = this.createLi();\n $drop.find('ul')[0].innerHTML = li;\n return $drop;\n },\n reloadLi: function() {\n \/\/ Rebuild.\n var li = this.createLi();\n this.$menuInner[0].innerHTML = li;\n },\n createLi: function() {\n var that = this,\n _li = [],\n optID = 0,\n titleOption = document.createElement('option'),\n liIndex = -1;\n \/\/ Increment liIndex whenever a new element is created to ensure liObj is correct.\n \/\/ Helper functions.\n \/**\n * @param content\n * @param [index]\n * @param [classes]\n * @param [optgroup]\n * @returns {string}\n *\/\n var generateLI = function(content, index, classes, optgroup) {\n return '' + content + '<\/li>';\n };\n \/**\n * @param text\n * @param [classes]\n * @param [inline]\n * @param [tokens]\n * @returns {string}\n *\/\n var generateA = function(text, classes, inline, tokens) {\n return '' + text +\n '<\/span>' +\n '<\/a>';\n };\n if (this.options.title && !this.multiple) {\n \/\/ This option doesn't create a new element, but does add a new option, so liIndex is decreased.\n \/\/ Since liObj is recalculated on every refresh, liIndex needs to be decreased even if the titleOption is already appended.\n liIndex--;\n if (!this.$element.find('.bs-title-option').length) {\n \/\/ Use native JS to prepend option (faster).\n var element = this.$element[0];\n titleOption.className = 'bs-title-option';\n titleOption.innerHTML = this.options.title;\n titleOption.value = '';\n element.insertBefore(titleOption, element.firstChild);\n \/\/ Check if selected or data-selected attribute is already set on an option. If not, select the titleOption option.\n \/\/ The selected item may have been changed by user or programmatically before the bootstrap select plugin runs.\n \/\/ If so, the select will have the data-selected attribute.\n var $opt = $(element.options[element.selectedIndex]);\n if ($opt.attr('selected') === undefined && this.$element.data('selected') === undefined) {\n titleOption.selected = true;\n }\n }\n }\n var $selectOptions = this.$element.find('option');\n $selectOptions.each(function(index) {\n var $this = $(this);\n liIndex++;\n if ($this.hasClass('bs-title-option')) {\n return;\n }\n \/\/ Get the class and text for the option.\n var optionClass = this.className || '',\n inline = htmlEscape(this.style.cssText),\n text = $this.data('content') ? $this.data('content') : $this.html(),\n tokens = $this.data('tokens') ? $this.data('tokens') : null,\n subtext = typeof $this.data('subtext') !== 'undefined' ? '' + $this.data('subtext') + '<\/small>' : '',\n icon = typeof $this.data('icon') !== 'undefined' ? '<\/span> ' : '',\n $parent = $this.parent(),\n isOptgroup = $parent[0].tagName === 'OPTGROUP',\n isOptgroupDisabled = isOptgroup && $parent[0].disabled,\n isDisabled = this.disabled || isOptgroupDisabled,\n prevHiddenIndex;\n if (icon !== '' && isDisabled) {\n icon = '' + icon + '<\/span>';\n }\n if (that.options.hideDisabled && (isDisabled && !isOptgroup || isOptgroupDisabled)) {\n \/\/ Set prevHiddenIndex - the index of the first hidden option in a group of hidden options.\n \/\/ Used to determine whether or not a divider should be placed after an optgroup if there are.\n \/\/ Hidden options between the optgroup and the first visible option.\n prevHiddenIndex = $this.data('prevHiddenIndex');\n $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index));\n liIndex--;\n return;\n }\n if (!$this.data('content')) {\n \/\/ Prepend any icon and append any subtext to the main text.\n text = icon + '' + text + subtext + '<\/span>';\n }\n if (isOptgroup && $this.data('divider') !== true) {\n if (that.options.hideDisabled && isDisabled) {\n if ($parent.data('allOptionsDisabled') === undefined) {\n var $options = $parent.children();\n $parent.data('allOptionsDisabled', $options.filter(':disabled').length === $options.length);\n }\n if ($parent.data('allOptionsDisabled')) {\n liIndex--;\n return;\n }\n }\n var optGroupClass = ' ' + $parent[0].className || '';\n if ($this.index() === 0) { \/\/ Is it the first option of the optgroup?\n optID += 1;\n \/\/ Get the opt group label.\n var label = $parent[0].label,\n labelSubtext = typeof $parent.data('subtext') !== 'undefined' ? '' + $parent.data('subtext') + '<\/small>' : '',\n labelIcon = $parent.data('icon') ? '<\/span> ' : '';\n label = labelIcon + '' + htmlEscape(label) + labelSubtext + '<\/span>';\n if (index !== 0 && _li.length > 0) { \/\/ Is it NOT the first option of the select && are there elements in the dropdown?\n liIndex++;\n _li.push(generateLI('', null, 'divider', optID + 'div'));\n }\n liIndex++;\n _li.push(generateLI(label, null, 'dropdown-header' + optGroupClass, optID));\n }\n if (that.options.hideDisabled && isDisabled) {\n liIndex--;\n return;\n }\n _li.push(generateLI(generateA(text, 'opt ' + optionClass + optGroupClass, inline, tokens), index, '', optID));\n } else if ($this.data('divider') === true) {\n _li.push(generateLI('', index, 'divider'));\n } else if ($this.data('hidden') === true) {\n \/\/ Set prevHiddenIndex - the index of the first hidden option in a group of hidden options.\n \/\/ Used to determine whether or not a divider should be placed after an optgroup if there are.\n \/\/ Hidden options between the optgroup and the first visible option.\n prevHiddenIndex = $this.data('prevHiddenIndex');\n $this.next().data('prevHiddenIndex', (prevHiddenIndex !== undefined ? prevHiddenIndex : index));\n _li.push(generateLI(generateA(text, optionClass, inline, tokens), index, 'hidden is-hidden'));\n } else {\n var showDivider = this.previousElementSibling && this.previousElementSibling.tagName === 'OPTGROUP';\n \/\/ If previous element is not an optgroup and hideDisabled is true.\n if (!showDivider && that.options.hideDisabled) {\n prevHiddenIndex = $this.data('prevHiddenIndex');\n if (prevHiddenIndex !== undefined) {\n \/\/ Select the element **before** the first hidden element in the group.\n var prevHidden = $selectOptions.eq(prevHiddenIndex)[0].previousElementSibling;\n if (prevHidden && prevHidden.tagName === 'OPTGROUP' && !prevHidden.disabled) {\n showDivider = true;\n }\n }\n }\n if (showDivider) {\n liIndex++;\n _li.push(generateLI('', null, 'divider', optID + 'div'));\n }\n _li.push(generateLI(generateA(text, optionClass, inline, tokens), index));\n }\n that.liObj[index] = liIndex;\n });\n \/\/ If we are not multiple, we don't have a selected item, and we don't have a title, select the first element so something is set in the button.\n if (!this.multiple && this.$element.find('option:selected').length === 0 && !this.options.title) {\n this.$element.find('option').eq(0).prop('selected', true).attr('selected', 'selected');\n }\n return _li.join('');\n },\n findLis: function() {\n if (this.$lis == null) {\n this.$lis = this.$menu.find('li');\n }\n return this.$lis;\n },\n \/**\n * @param [updateLi] defaults to true\n *\/\n render: function(updateLi) {\n var that = this,\n notDisabled,\n $selectOptions = this.$element.find('option');\n \/\/ Update the LI to match the SELECT.\n if (updateLi !== false) {\n $selectOptions.each(function(index) {\n var $lis = that.findLis().eq(that.liObj[index]);\n that.setDisabled(index, this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled, $lis);\n that.setSelected(index, this.selected, $lis);\n });\n }\n this.togglePlaceholder();\n this.tabIndex();\n var selectedItems = $selectOptions.map(function() {\n if (this.selected) {\n if (that.options.hideDisabled && (this.disabled || this.parentNode.tagName === 'OPTGROUP' && this.parentNode.disabled)) {\n return;\n }\n var $this = $(this),\n icon = $this.data('icon') && that.options.showIcon ? '<\/i> ' : '',\n subtext;\n if (that.options.showSubtext && $this.data('subtext') && !that.multiple) {\n subtext = ' ' + $this.data('subtext') + '<\/small>';\n } else {\n subtext = '';\n }\n if (typeof $this.attr('title') !== 'undefined') {\n return $this.attr('title');\n } else if ($this.data('content') && that.options.showContent) {\n return $this.data('content').toString();\n } else {\n return icon + $this.html() + subtext;\n }\n }\n }).toArray();\n \/\/ Fixes issue in IE10 occurring when no default option is selected and at least one option is disabled.\n \/\/ Convert all the values into a comma delimited string.\n var title = !this.multiple ? selectedItems[0] : selectedItems.join(this.options.multipleSeparator);\n \/\/ If this is multi select, and the selectText type is count, the show 1 of 2 selected etc.\n if (this.multiple && this.options.selectedTextFormat.indexOf('count') > -1) {\n var max = this.options.selectedTextFormat.split('>');\n if ((max.length > 1 && selectedItems.length > max[1]) || (max.length == 1 && selectedItems.length >= 2)) {\n notDisabled = this.options.hideDisabled ? ', [disabled]' : '';\n var totalCount = $selectOptions.not('[data-divider=\"true\"], [data-hidden=\"true\"]' + notDisabled).length,\n tr8nText = (typeof this.options.countSelectedText === 'function') ? this.options.countSelectedText(selectedItems.length, totalCount) : this.options.countSelectedText;\n title = tr8nText.replace('{0}', selectedItems.length.toString()).replace('{1}', totalCount.toString());\n }\n }\n if (this.options.title == undefined) {\n this.options.title = this.$element.attr('title');\n }\n if (this.options.selectedTextFormat == 'static') {\n title = this.options.title;\n }\n \/\/ If we dont have a title, then use the default, or if nothing is set at all, use the not selected text.\n if (!title) {\n title = typeof this.options.title !== 'undefined' ? this.options.title : this.options.noneSelectedText;\n }\n \/\/ Strip all HTML tags and trim the result, then unescape any escaped tags.\n this.$button.attr('title', htmlUnescape($.trim(title.replace(\/<[^>]*>?\/g, ''))));\n this.$button.children('.filter-option').html(title);\n this.$element.trigger('rendered.bs.select');\n },\n \/**\n * @param [style]\n * @param [status]\n *\/\n setStyle: function(style, status) {\n if (this.$element.attr('class')) {\n this.$newElement.addClass(this.$element.attr('class').replace(\/selectpicker|mobile-device|bs-select-hidden|validate\\[.*\\]\/gi, ''));\n }\n var buttonClass = style ? style : this.options.style;\n if (status == 'add') {\n this.$button.addClass(buttonClass);\n } else if (status == 'remove') {\n this.$button.removeClass(buttonClass);\n } else {\n this.$button.removeClass(this.options.style);\n this.$button.addClass(buttonClass);\n }\n },\n liHeight: function(refresh) {\n if (!refresh && (this.options.size === false || this.sizeInfo)) {\n return;\n }\n var newElement = document.createElement('div'),\n menu = document.createElement('div'),\n menuInner = document.createElement('ul'),\n divider = document.createElement('li'),\n li = document.createElement('li'),\n a = document.createElement('a'),\n text = document.createElement('span'),\n header = this.options.header && this.$menu.find('.popover-title').length > 0 ? this.$menu.find('.popover-title')[0].cloneNode(true) : null,\n search = this.options.liveSearch ? document.createElement('div') : null,\n actions = this.options.actionsBox && this.multiple && this.$menu.find('.bs-actionsbox').length > 0 ? this.$menu.find('.bs-actionsbox')[0].cloneNode(true) : null,\n doneButton = this.options.doneButton && this.multiple && this.$menu.find('.bs-donebutton').length > 0 ? this.$menu.find('.bs-donebutton')[0].cloneNode(true) : null;\n text.className = 'text';\n newElement.className = this.$menu[0].parentNode.className + ' open';\n menu.className = 'dropdown-menu open';\n menuInner.className = 'dropdown-menu inner';\n divider.className = 'divider';\n text.appendChild(document.createTextNode('Inner text'));\n a.appendChild(text);\n li.appendChild(a);\n menuInner.appendChild(li);\n menuInner.appendChild(divider);\n if (header) {\n menu.appendChild(header);\n }\n if (search) {\n var input = document.createElement('input');\n search.className = 'bs-searchbox';\n input.className = 'form-control';\n search.appendChild(input);\n menu.appendChild(search);\n }\n if (actions) {\n menu.appendChild(actions);\n }\n menu.appendChild(menuInner);\n if (doneButton) {\n menu.appendChild(doneButton);\n }\n newElement.appendChild(menu);\n document.body.appendChild(newElement);\n var liHeight = a.offsetHeight,\n headerHeight = header ? header.offsetHeight : 0,\n searchHeight = search ? search.offsetHeight : 0,\n actionsHeight = actions ? actions.offsetHeight : 0,\n doneButtonHeight = doneButton ? doneButton.offsetHeight : 0,\n dividerHeight = $(divider).outerHeight(true),\n \/\/ Fall back to jQuery if getComputedStyle is not supported.\n menuStyle = typeof getComputedStyle === 'function' ? getComputedStyle(menu) : false,\n $menu = menuStyle ? null : $(menu);\n var menuPadding = {\n vert: parseInt(menuStyle ? menuStyle.paddingTop : $menu.css('paddingTop')) +\n parseInt(menuStyle ? menuStyle.paddingBottom : $menu.css('paddingBottom')) +\n parseInt(menuStyle ? menuStyle.borderTopWidth : $menu.css('borderTopWidth')) +\n parseInt(menuStyle ? menuStyle.borderBottomWidth : $menu.css('borderBottomWidth')),\n horiz: parseInt(menuStyle ? menuStyle.paddingLeft : $menu.css('paddingLeft')) +\n parseInt(menuStyle ? menuStyle.paddingRight : $menu.css('paddingRight')) +\n parseInt(menuStyle ? menuStyle.borderLeftWidth : $menu.css('borderLeftWidth')) +\n parseInt(menuStyle ? menuStyle.borderRightWidth : $menu.css('borderRightWidth'))\n };\n var menuExtras = {\n vert: menuPadding.vert +\n parseInt(menuStyle ? menuStyle.marginTop : $menu.css('marginTop')) +\n parseInt(menuStyle ? menuStyle.marginBottom : $menu.css('marginBottom')) + 2,\n horiz: menuPadding.horiz +\n parseInt(menuStyle ? menuStyle.marginLeft : $menu.css('marginLeft')) +\n parseInt(menuStyle ? menuStyle.marginRight : $menu.css('marginRight')) + 2\n };\n document.body.removeChild(newElement);\n this.sizeInfo = {\n liHeight: liHeight,\n headerHeight: headerHeight,\n searchHeight: searchHeight,\n actionsHeight: actionsHeight,\n doneButtonHeight: doneButtonHeight,\n dividerHeight: dividerHeight,\n menuPadding: menuPadding,\n menuExtras: menuExtras\n };\n },\n setSize: function() {\n this.findLis();\n this.liHeight();\n if (this.options.header) {\n this.$menu.css('padding-top', 0);\n }\n if (this.options.size === false) {\n return;\n }\n var that = this,\n $menu = this.$menu,\n $menuInner = this.$menuInner,\n $window = $(window),\n selectHeight = this.$newElement[0].offsetHeight,\n selectWidth = this.$newElement[0].offsetWidth,\n liHeight = this.sizeInfo['liHeight'],\n headerHeight = this.sizeInfo['headerHeight'],\n searchHeight = this.sizeInfo['searchHeight'],\n actionsHeight = this.sizeInfo['actionsHeight'],\n doneButtonHeight = this.sizeInfo['doneButtonHeight'],\n divHeight = this.sizeInfo['dividerHeight'],\n menuPadding = this.sizeInfo['menuPadding'],\n menuExtras = this.sizeInfo['menuExtras'],\n notDisabled = this.options.hideDisabled ? '.disabled' : '',\n menuHeight,\n menuWidth,\n getHeight,\n getWidth,\n selectOffsetTop,\n selectOffsetBot,\n selectOffsetLeft,\n selectOffsetRight,\n getPos = function() {\n var pos = that.$newElement.offset(),\n $container = $(that.options.container),\n containerPos;\n if (that.options.container && !$container.is('body')) {\n containerPos = $container.offset();\n containerPos.top += parseInt($container.css('borderTopWidth'));\n containerPos.left += parseInt($container.css('borderLeftWidth'));\n } else {\n containerPos = {\n top: 0,\n left: 0\n };\n }\n var winPad = that.options.windowPadding;\n selectOffsetTop = pos.top - containerPos.top - $window.scrollTop();\n selectOffsetBot = $window.height() - selectOffsetTop - selectHeight - containerPos.top - winPad[2];\n selectOffsetLeft = pos.left - containerPos.left - $window.scrollLeft();\n selectOffsetRight = $window.width() - selectOffsetLeft - selectWidth - containerPos.left - winPad[1];\n selectOffsetTop -= winPad[0];\n selectOffsetLeft -= winPad[3];\n };\n getPos();\n if (this.options.size === 'auto') {\n var getSize = function() {\n var minHeight,\n hasClass = function(className, include) {\n return function(element) {\n if (include) {\n return (element.classList ? element.classList.contains(className) : $(element).hasClass(className));\n } else {\n return !(element.classList ? element.classList.contains(className) : $(element).hasClass(className));\n }\n };\n },\n lis = that.$menuInner[0].getElementsByTagName('li'),\n lisVisible = Array.prototype.filter ? Array.prototype.filter.call(lis, hasClass('hidden', false)) : that.$lis.not('.hidden'),\n optGroup = Array.prototype.filter ? Array.prototype.filter.call(lisVisible, hasClass('dropdown-header', true)) : lisVisible.filter('.dropdown-header');\n getPos();\n menuHeight = selectOffsetBot - menuExtras.vert;\n menuWidth = selectOffsetRight - menuExtras.horiz;\n if (that.options.container) {\n if (!$menu.data('height')) {\n $menu.data('height', $menu.height());\n }\n getHeight = $menu.data('height');\n if (!$menu.data('width')) {\n $menu.data('width', $menu.width());\n }\n getWidth = $menu.data('width');\n } else {\n getHeight = $menu.height();\n getWidth = $menu.width();\n }\n if (that.options.dropupAuto) {\n that.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras.vert) < getHeight);\n }\n if (that.$newElement.hasClass('dropup')) {\n menuHeight = selectOffsetTop - menuExtras.vert;\n }\n if (that.options.dropdownAlignRight === 'auto') {\n $menu.toggleClass('dropdown-menu-right', selectOffsetLeft > selectOffsetRight && (menuWidth - menuExtras.horiz) < (getWidth - selectWidth));\n }\n if ((lisVisible.length + optGroup.length) > 3) {\n minHeight = liHeight * 3 + menuExtras.vert - 2;\n } else {\n minHeight = 0;\n }\n $menu.css({\n 'max-height': menuHeight + 'px',\n 'overflow': 'hidden',\n 'min-height': minHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px'\n });\n $menuInner.css({\n 'max-height': menuHeight - headerHeight - searchHeight - actionsHeight - doneButtonHeight - menuPadding.vert + 'px',\n 'overflow-y': 'auto',\n 'min-height': Math.max(minHeight - menuPadding.vert, 0) + 'px'\n });\n };\n getSize();\n this.$searchbox.off('input.getSize propertychange.getSize').on('input.getSize propertychange.getSize', getSize);\n $window.off('resize.getSize scroll.getSize').on('resize.getSize scroll.getSize', getSize);\n } else if (this.options.size && this.options.size != 'auto' && this.$lis.not(notDisabled).length > this.options.size) {\n var optIndex = this.$lis.not('.divider').not(notDisabled).children().slice(0, this.options.size).last().parent().index(),\n divLength = this.$lis.slice(0, optIndex + 1).filter('.divider').length;\n menuHeight = liHeight * this.options.size + divLength * divHeight + menuPadding.vert;\n if (that.options.container) {\n if (!$menu.data('height')) {\n $menu.data('height', $menu.height());\n }\n getHeight = $menu.data('height');\n } else {\n getHeight = $menu.height();\n }\n if (that.options.dropupAuto) {\n \/\/ Noinspection JSUnusedAssignment.\n this.$newElement.toggleClass('dropup', selectOffsetTop > selectOffsetBot && (menuHeight - menuExtras.vert) < getHeight);\n }\n $menu.css({\n 'max-height': menuHeight + headerHeight + searchHeight + actionsHeight + doneButtonHeight + 'px',\n 'overflow': 'hidden',\n 'min-height': ''\n });\n $menuInner.css({\n 'max-height': menuHeight - menuPadding.vert + 'px',\n 'overflow-y': 'auto',\n 'min-height': ''\n });\n }\n },\n setWidth: function() {\n if (this.options.width === 'auto') {\n this.$menu.css('min-width', '0');\n \/\/ Get correct width if element is hidden.\n var $selectClone = this.$menu.parent().clone().appendTo('body'),\n $selectClone2 = this.options.container ? this.$newElement.clone().appendTo('body') : $selectClone,\n ulWidth = $selectClone.children('.dropdown-menu').outerWidth(),\n btnWidth = $selectClone2.css('width', 'auto').children('button').outerWidth();\n $selectClone.remove();\n $selectClone2.remove();\n \/\/ Set width to whatever's larger, button title or longest option.\n this.$newElement.css('width', Math.max(ulWidth, btnWidth) + 'px');\n } else if (this.options.width === 'fit') {\n \/\/ Remove inline min-width so width can be changed from 'auto'.\n this.$menu.css('min-width', '');\n this.$newElement.css('width', '').addClass('fit-width');\n } else if (this.options.width) {\n \/\/ Remove inline min-width so width can be changed from 'auto'.\n this.$menu.css('min-width', '');\n this.$newElement.css('width', this.options.width);\n } else {\n \/\/ Remove inline min-width\/width so width can be changed.\n this.$menu.css('min-width', '');\n this.$newElement.css('width', '');\n }\n \/\/ Remove fit-width class if width is changed programmatically.\n if (this.$newElement.hasClass('fit-width') && this.options.width !== 'fit') {\n this.$newElement.removeClass('fit-width');\n }\n },\n selectPosition: function() {\n this.$bsContainer = $('');\n var that = this,\n $container = $(this.options.container),\n pos,\n containerPos,\n actualHeight,\n getPlacement = function($element) {\n that.$bsContainer.addClass($element.attr('class').replace(\/form-control|fit-width\/gi, '')).toggleClass('dropup', $element.hasClass('dropup'));\n pos = $element.offset();\n if (!$container.is('body')) {\n containerPos = $container.offset();\n containerPos.top += parseInt($container.css('borderTopWidth')) - $container.scrollTop();\n containerPos.left += parseInt($container.css('borderLeftWidth')) - $container.scrollLeft();\n } else {\n containerPos = {\n top: 0,\n left: 0\n };\n }\n actualHeight = $element.hasClass('dropup') ? 0 : $element[0].offsetHeight;\n that.$bsContainer.css({\n 'top': pos.top - containerPos.top + actualHeight,\n 'left': pos.left - containerPos.left,\n 'width': $element[0].offsetWidth\n });\n };\n this.$button.on('click', function() {\n var $this = $(this);\n if (that.isDisabled()) {\n return;\n }\n getPlacement(that.$newElement);\n that.$bsContainer\n .appendTo(that.options.container)\n .toggleClass('open', !$this.hasClass('open'))\n .append(that.$menu);\n });\n $(window).on('resize scroll', function() {\n getPlacement(that.$newElement);\n });\n this.$element.on('hide.bs.select', function() {\n that.$menu.data('height', that.$menu.height());\n that.$bsContainer.detach();\n });\n },\n \/**\n * @param {number} index - the index of the option that is being changed\n * @param {boolean} selected - true if the option is being selected, false if being deselected\n * @param {JQuery} $lis - the 'li' element that is being modified\n *\/\n setSelected: function(index, selected, $lis) {\n if (!$lis) {\n this.togglePlaceholder(); \/\/ Check if setSelected is being called by changing the value of the select.\n $lis = this.findLis().eq(this.liObj[index]);\n }\n $lis.toggleClass('selected', selected).find('a').attr('aria-selected', selected);\n },\n \/**\n * @param {number} index - the index of the option that is being disabled\n * @param {boolean} disabled - true if the option is being disabled, false if being enabled\n * @param {JQuery} $lis - the 'li' element that is being modified\n *\/\n setDisabled: function(index, disabled, $lis) {\n if (!$lis) {\n $lis = this.findLis().eq(this.liObj[index]);\n }\n if (disabled) {\n $lis.addClass('disabled').children('a').attr('href', '#').attr('tabindex', -1).attr('aria-disabled', true);\n } else {\n $lis.removeClass('disabled').children('a').removeAttr('href').attr('tabindex', 0).attr('aria-disabled', false);\n }\n },\n isDisabled: function() {\n return this.$element[0].disabled;\n },\n checkDisabled: function() {\n var that = this;\n if (this.isDisabled()) {\n this.$newElement.addClass('disabled');\n this.$button.addClass('disabled').attr('tabindex', -1).attr('aria-disabled', true);\n } else {\n if (this.$button.hasClass('disabled')) {\n this.$newElement.removeClass('disabled');\n this.$button.removeClass('disabled').attr('aria-disabled', false);\n }\n if (this.$button.attr('tabindex') == -1 && !this.$element.data('tabindex')) {\n this.$button.removeAttr('tabindex');\n }\n }\n this.$button.click(function() {\n return !that.isDisabled();\n });\n },\n togglePlaceholder: function() {\n var value = this.$element.val();\n this.$button.toggleClass('bs-placeholder', value === null || value === '' || (value.constructor === Array && value.length === 0));\n },\n tabIndex: function() {\n if (this.$element.data('tabindex') !== this.$element.attr('tabindex') &&\n (this.$element.attr('tabindex') !== -98 && this.$element.attr('tabindex') !== '-98')) {\n this.$element.data('tabindex', this.$element.attr('tabindex'));\n this.$button.attr('tabindex', this.$element.data('tabindex'));\n }\n this.$element.attr('tabindex', -98);\n },\n clickListener: function() {\n var that = this,\n $document = $(document);\n $document.data('spaceSelect', false);\n this.$button.on('keyup', function(e) {\n if (\/(32)\/.test(e.keyCode.toString(10)) && $document.data('spaceSelect')) {\n e.preventDefault();\n $document.data('spaceSelect', false);\n }\n });\n this.$button.on('click', function() {\n that.setSize();\n });\n this.$element.on('shown.bs.select', function() {\n if (!that.options.liveSearch && !that.multiple) {\n that.$menuInner.find('.selected a').focus();\n } else if (!that.multiple) {\n var selectedIndex = that.liObj[that.$element[0].selectedIndex];\n if (typeof selectedIndex !== 'number' || that.options.size === false) {\n return;\n }\n \/\/ Scroll to selected option.\n var offset = that.$lis.eq(selectedIndex)[0].offsetTop - that.$menuInner[0].offsetTop;\n offset = offset - that.$menuInner[0].offsetHeight \/ 2 + that.sizeInfo.liHeight \/ 2;\n that.$menuInner[0].scrollTop = offset;\n }\n });\n this.$menuInner.on('click', 'li a', function(e) {\n var $this = $(this),\n clickedIndex = $this.parent().data('originalIndex'),\n prevValue = that.$element.val(),\n prevIndex = that.$element.prop('selectedIndex'),\n triggerChange = true;\n \/\/ Don't close on multi choice menu.\n if (that.multiple && that.options.maxOptions !== 1) {\n e.stopPropagation();\n }\n e.preventDefault();\n \/\/ Don't run if we have been disabled.\n if (!that.isDisabled() && !$this.parent().hasClass('disabled')) {\n var $options = that.$element.find('option'),\n $option = $options.eq(clickedIndex),\n state = $option.prop('selected'),\n $optgroup = $option.parent('optgroup'),\n maxOptions = that.options.maxOptions,\n maxOptionsGrp = $optgroup.data('maxOptions') || false;\n if (!that.multiple) {\n \/\/ Deselect all others if not multi select box.\n $options.prop('selected', false);\n $option.prop('selected', true);\n that.$menuInner.find('.selected').removeClass('selected').find('a').attr('aria-selected', false);\n that.setSelected(clickedIndex, true);\n } else {\n \/\/ Toggle the one we have chosen if we are multi select.\n $option.prop('selected', !state);\n that.setSelected(clickedIndex, !state);\n $this.blur();\n if (maxOptions !== false || maxOptionsGrp !== false) {\n var maxReached = maxOptions < $options.filter(':selected').length,\n maxReachedGrp = maxOptionsGrp < $optgroup.find('option:selected').length;\n if ((maxOptions && maxReached) || (maxOptionsGrp && maxReachedGrp)) {\n if (maxOptions && maxOptions == 1) {\n $options.prop('selected', false);\n $option.prop('selected', true);\n that.$menuInner.find('.selected').removeClass('selected');\n that.setSelected(clickedIndex, true);\n } else if (maxOptionsGrp && maxOptionsGrp == 1) {\n $optgroup.find('option:selected').prop('selected', false);\n $option.prop('selected', true);\n var optgroupID = $this.parent().data('optgroup');\n that.$menuInner.find('[data-optgroup=\"' + optgroupID + '\"]').removeClass('selected');\n that.setSelected(clickedIndex, true);\n } else {\n var maxOptionsText = typeof that.options.maxOptionsText === 'string' ? [that.options.maxOptionsText, that.options.maxOptionsText] : that.options.maxOptionsText,\n maxOptionsArr = typeof maxOptionsText === 'function' ? maxOptionsText(maxOptions, maxOptionsGrp) : maxOptionsText,\n maxTxt = maxOptionsArr[0].replace('{n}', maxOptions),\n maxTxtGrp = maxOptionsArr[1].replace('{n}', maxOptionsGrp),\n $notify = $('<\/div>');\n \/\/ If {var} is set in array, replace it.\n if (maxOptionsArr[2]) {\n maxTxt = maxTxt.replace('{var}', maxOptionsArr[2][maxOptions > 1 ? 0 : 1]);\n maxTxtGrp = maxTxtGrp.replace('{var}', maxOptionsArr[2][maxOptionsGrp > 1 ? 0 : 1]);\n }\n $option.prop('selected', false);\n that.$menu.append($notify);\n if (maxOptions && maxReached) {\n $notify.append($('' + maxTxt + '<\/div>'));\n triggerChange = false;\n that.$element.trigger('maxReached.bs.select');\n }\n if (maxOptionsGrp && maxReachedGrp) {\n $notify.append($('' + maxTxtGrp + '<\/div>'));\n triggerChange = false;\n that.$element.trigger('maxReachedGrp.bs.select');\n }\n setTimeout(function() {\n that.setSelected(clickedIndex, false);\n }, 10);\n $notify.delay(750).fadeOut(300, function() {\n $(this).remove();\n });\n }\n }\n }\n }\n if (!that.multiple || (that.multiple && that.options.maxOptions === 1)) {\n that.$button.focus();\n } else if (that.options.liveSearch) {\n that.$searchbox.focus();\n }\n \/\/ Trigger select 'change'.\n if (triggerChange) {\n if ((prevValue != that.$element.val() && that.multiple) || (prevIndex != that.$element.prop('selectedIndex') && !that.multiple)) {\n \/\/ State is previous option state. $option.prop('selected') is current option state (selected\/unselected).\n changed_arguments = [clickedIndex, $option.prop('selected'), state];\n that.$element\n .triggerNative('change');\n }\n }\n }\n });\n this.$menu.on('click', 'li.disabled a, .popover-title, .popover-title :not(.close)', function(e) {\n if (e.currentTarget == this) {\n e.preventDefault();\n e.stopPropagation();\n if (that.options.liveSearch && !$(e.target).hasClass('close')) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n }\n });\n this.$menuInner.on('click', '.divider, .dropdown-header', function(e) {\n e.preventDefault();\n e.stopPropagation();\n if (that.options.liveSearch) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n });\n this.$menu.on('click', '.popover-title .close', function() {\n that.$button.click();\n });\n this.$searchbox.on('click', function(e) {\n e.stopPropagation();\n });\n this.$menu.on('click', '.actions-btn', function(e) {\n if (that.options.liveSearch) {\n that.$searchbox.focus();\n } else {\n that.$button.focus();\n }\n e.preventDefault();\n e.stopPropagation();\n if ($(this).hasClass('bs-select-all')) {\n that.selectAll();\n } else {\n that.deselectAll();\n }\n });\n this.$element.change(function() {\n that.render(false);\n that.$element.trigger('changed.bs.select', changed_arguments);\n changed_arguments = null;\n });\n },\n liveSearchListener: function() {\n var that = this,\n $no_results = $('<\/li>');\n this.$button.on('click.dropdown.data-api', function() {\n that.$menuInner.find('.active').removeClass('active');\n if (!!that.$searchbox.val()) {\n that.$searchbox.val('');\n that.$lis.not('.is-hidden').removeClass('hidden');\n if (!!$no_results.parent().length) {\n $no_results.remove();\n }\n }\n if (!that.multiple) {\n that.$menuInner.find('.selected').addClass('active');\n }\n setTimeout(function() {\n that.$searchbox.focus();\n }, 10);\n });\n this.$searchbox.on('click.dropdown.data-api focus.dropdown.data-api touchend.dropdown.data-api', function(e) {\n e.stopPropagation();\n });\n this.$searchbox.on('input propertychange', function() {\n that.$lis.not('.is-hidden').removeClass('hidden');\n that.$lis.filter('.active').removeClass('active');\n $no_results.remove();\n if (that.$searchbox.val()) {\n var $searchBase = that.$lis.not('.is-hidden, .divider, .dropdown-header'),\n $hideItems;\n if (that.options.liveSearchNormalize) {\n $hideItems = $searchBase.not(':a' + that._searchStyle() + '(\"' + normalizeToBase(that.$searchbox.val()) + '\")');\n } else {\n $hideItems = $searchBase.not(':' + that._searchStyle() + '(\"' + that.$searchbox.val() + '\")');\n }\n if ($hideItems.length === $searchBase.length) {\n $no_results.html(that.options.noneResultsText.replace('{0}', '\"' + htmlEscape(that.$searchbox.val()) + '\"'));\n that.$menuInner.append($no_results);\n that.$lis.addClass('hidden');\n } else {\n $hideItems.addClass('hidden');\n var $lisVisible = that.$lis.not('.hidden'),\n $foundDiv;\n \/\/ Hide divider if first or last visible, or if followed by another divider.\n $lisVisible.each(function(index) {\n var $this = $(this);\n if ($this.hasClass('divider')) {\n if ($foundDiv === undefined) {\n $this.addClass('hidden');\n } else {\n if ($foundDiv) {\n $foundDiv.addClass('hidden');\n }\n $foundDiv = $this;\n }\n } else if ($this.hasClass('dropdown-header') && $lisVisible.eq(index + 1).data('optgroup') !== $this.data('optgroup')) {\n $this.addClass('hidden');\n } else {\n $foundDiv = null;\n }\n });\n if ($foundDiv) {\n $foundDiv.addClass('hidden');\n }\n $searchBase.not('.hidden').first().addClass('active');\n that.$menuInner.scrollTop(0);\n }\n }\n });\n },\n _searchStyle: function() {\n var styles = {\n begins: 'ibegins',\n startsWith: 'ibegins'\n };\n return styles[this.options.liveSearchStyle] || 'icontains';\n },\n val: function(value) {\n if (typeof value !== 'undefined') {\n this.$element.val(value);\n this.render();\n return this.$element;\n } else {\n return this.$element.val();\n }\n },\n changeAll: function(status) {\n if (!this.multiple) {\n return;\n }\n if (typeof status === 'undefined') {\n status = true;\n }\n this.findLis();\n var $options = this.$element.find('option'),\n $lisVisible = this.$lis.not('.divider, .dropdown-header, .disabled, .hidden'),\n lisVisLen = $lisVisible.length,\n selectedOptions = [];\n if (status) {\n if ($lisVisible.filter('.selected').length === $lisVisible.length) {\n return;\n }\n } else {\n if ($lisVisible.filter('.selected').length === 0) {\n return;\n }\n }\n $lisVisible.toggleClass('selected', status);\n for (var i = 0; i < lisVisLen; i++) {\n var origIndex = $lisVisible[i].getAttribute('data-original-index');\n selectedOptions[selectedOptions.length] = $options.eq(origIndex)[0];\n }\n $(selectedOptions).prop('selected', status);\n this.render(false);\n this.togglePlaceholder();\n this.$element\n .triggerNative('change');\n },\n selectAll: function() {\n return this.changeAll(true);\n },\n deselectAll: function() {\n return this.changeAll(false);\n },\n toggle: function(e) {\n e = e || window.event;\n if (e) {\n e.stopPropagation();\n }\n this.$button.trigger('click');\n },\n keydown: function(e) {\n var $this = $(this),\n $parent = $this.is('input') ? $this.parent().parent() : $this.parent(),\n $items,\n that = $parent.data('this'),\n index,\n prevIndex,\n isActive,\n selector = ':not(.disabled, .hidden, .dropdown-header, .divider)';\n var keyCodeMap = {\n 32: ' ',\n 48: '0',\n 49: '1',\n 50: '2',\n 51: '3',\n 52: '4',\n 53: '5',\n 54: '6',\n 55: '7',\n 56: '8',\n 57: '9',\n 59: ';',\n 65: 'a',\n 66: 'b',\n 67: 'c',\n 68: 'd',\n 69: 'e',\n 70: 'f',\n 71: 'g',\n 72: 'h',\n 73: 'i',\n 74: 'j',\n 75: 'k',\n 76: 'l',\n 77: 'm',\n 78: 'n',\n 79: 'o',\n 80: 'p',\n 81: 'q',\n 82: 'r',\n 83: 's',\n 84: 't',\n 85: 'u',\n 86: 'v',\n 87: 'w',\n 88: 'x',\n 89: 'y',\n 90: 'z',\n 96: '0',\n 97: '1',\n 98: '2',\n 99: '3',\n 100: '4',\n 101: '5',\n 102: '6',\n 103: '7',\n 104: '8',\n 105: '9'\n };\n isActive = that.$newElement.hasClass('open');\n if (!isActive && (e.keyCode >= 48 && e.keyCode <= 57 || e.keyCode >= 96 && e.keyCode <= 105 || e.keyCode >= 65 && e.keyCode <= 90)) {\n if (!that.options.container) {\n that.setSize();\n that.$menu.parent().addClass('open');\n isActive = true;\n } else {\n that.$button.trigger('click');\n }\n that.$searchbox.focus();\n return;\n }\n if (that.options.liveSearch) {\n if (\/(^9$|27)\/.test(e.keyCode.toString(10)) && isActive) {\n e.preventDefault();\n e.stopPropagation();\n that.$menuInner.click();\n that.$button.focus();\n }\n }\n if (\/(38|40)\/.test(e.keyCode.toString(10))) {\n $items = that.$lis.filter(selector);\n if (!$items.length) {\n return;\n }\n if (!that.options.liveSearch) {\n index = $items.index($items.find('a').filter(':focus').parent());\n } else {\n index = $items.index($items.filter('.active'));\n }\n prevIndex = that.$menuInner.data('prevIndex');\n if (e.keyCode == 38) {\n if ((that.options.liveSearch || index == prevIndex) && index != -1) {\n index--;\n }\n if (index < 0) {\n index += $items.length;\n }\n } else if (e.keyCode == 40) {\n if (that.options.liveSearch || index == prevIndex) {\n index++;\n }\n index = index % $items.length;\n }\n that.$menuInner.data('prevIndex', index);\n if (!that.options.liveSearch) {\n $items.eq(index).children('a').focus();\n } else {\n e.preventDefault();\n if (!$this.hasClass('dropdown-toggle')) {\n $items.removeClass('active').eq(index).addClass('active').children('a').focus();\n $this.focus();\n }\n }\n } else if (!$this.is('input')) {\n var keyIndex = [],\n count,\n prevKey;\n $items = that.$lis.filter(selector);\n $items.each(function(i) {\n if ($.trim($(this).children('a').text().toLowerCase()).substring(0, 1) == keyCodeMap[e.keyCode]) {\n keyIndex.push(i);\n }\n });\n count = $(document).data('keycount');\n count++;\n $(document).data('keycount', count);\n prevKey = $.trim($(':focus').text().toLowerCase()).substring(0, 1);\n if (prevKey != keyCodeMap[e.keyCode]) {\n count = 1;\n $(document).data('keycount', count);\n } else if (count >= keyIndex.length) {\n $(document).data('keycount', 0);\n if (count > keyIndex.length) {\n count = 1;\n }\n }\n $items.eq(keyIndex[count - 1]).children('a').focus();\n }\n \/\/ Select focused option if \"Enter\", \"Spacebar\" or \"Tab\" (when selectOnTab is true) are pressed inside the menu.\n \/\/ @codingStandardsIgnoreStart\n if ((\/(13|32)\/.test(e.keyCode.toString(10)) || (\/(^9$)\/.test(e.keyCode.toString(10)) && that.options.selectOnTab)) && isActive) {\n if (!\/(32)\/.test(e.keyCode.toString(10))) {\n \/\/ @codingStandardsIgnoreEnd\n e.preventDefault();\n }\n if (!that.options.liveSearch) {\n var elem = $(':focus');\n elem.click();\n \/\/ Bring back focus for multiselects.\n elem.focus();\n \/\/ Prevent screen from scrolling if the user hit the spacebar.\n e.preventDefault();\n \/\/ Fixes spacebar selection of dropdown items in FF & IE.\n $(document).data('spaceSelect', true);\n \/\/ @codingStandardsIgnoreStart\n } else if (!\/(32)\/.test(e.keyCode.toString(10))) {\n \/\/ @codingStandardsIgnoreEnd\n that.$menuInner.find('.active a').click();\n $this.focus();\n }\n $(document).data('keycount', 0);\n }\n if ((\/(^9$|27)\/.test(e.keyCode.toString(10)) && isActive && (that.multiple || that.options.liveSearch)) || (\/(27)\/.test(e.keyCode.toString(10)) && !isActive)) {\n that.$menu.parent().removeClass('open');\n if (that.options.container) {\n that.$newElement.removeClass('open');\n }\n that.$button.focus();\n }\n },\n mobile: function() {\n this.$element.addClass('mobile-device');\n },\n refresh: function() {\n this.$lis = null;\n this.liObj = {};\n this.reloadLi();\n this.render();\n this.checkDisabled();\n this.liHeight(true);\n this.setStyle();\n this.setWidth();\n if (this.$lis) {\n this.$searchbox.trigger('propertychange');\n }\n this.$element.trigger('refreshed.bs.select');\n },\n hide: function() {\n this.$newElement.hide();\n },\n show: function() {\n this.$newElement.show();\n },\n remove: function() {\n this.$newElement.remove();\n this.$element.remove();\n },\n destroy: function() {\n this.$newElement.before(this.$element).remove();\n if (this.$bsContainer) {\n this.$bsContainer.remove();\n } else {\n this.$menu.remove();\n }\n this.$element\n .off('.bs.select')\n .removeData('selectpicker')\n .removeClass('bs-select-hidden selectpicker');\n }\n };\n \/\/ SELECTPICKER PLUGIN DEFINITION.\n function Plugin(option) {\n \/\/ Get the args of the outer function.\n var args = arguments;\n \/\/ The arguments of the function are explicitly re-defined from the argument list, because the shift causes them.\n \/\/ To get lost\/corrupted in android 2.3 and IE9 #715 #775.\n var _option = option;\n [].shift.apply(args);\n var value;\n var chain = this.each(function() {\n var $this = $(this);\n if ($this.is('select')) {\n var data = $this.data('selectpicker'),\n options = typeof _option == 'object' && _option;\n if (!data) {\n var config = $.extend({}, Selectpicker.DEFAULTS, $.fn.selectpicker.defaults || {}, $this.data(), options);\n config.template = $.extend({}, Selectpicker.DEFAULTS.template, ($.fn.selectpicker.defaults ? $.fn.selectpicker.defaults.template : {}), $this.data().template, options.template);\n $this.data('selectpicker', (data = new Selectpicker(this, config)));\n } else if (options) {\n for (var i in options) {\n if (options.hasOwnProperty(i)) {\n data.options[i] = options[i];\n }\n }\n }\n if (typeof _option == 'string') {\n if (data[_option] instanceof Function) {\n value = data[_option].apply(data, args);\n } else {\n value = data.options[_option];\n }\n }\n }\n });\n if (typeof value !== 'undefined') {\n \/\/ Noinspection JSUnusedAssignment.\n return value;\n } else {\n return chain;\n }\n }\n var old = $.fn.selectpicker;\n $.fn.selectpicker = Plugin;\n $.fn.selectpicker.Constructor = Selectpicker;\n \/\/ SELECTPICKER NO CONFLICT.\n $.fn.selectpicker.noConflict = function() {\n $.fn.selectpicker = old;\n return this;\n };\n $(document)\n .data('keycount', 0)\n .on('keydown.bs.select', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', Selectpicker.prototype.keydown)\n .on('focusin.modal', '.bootstrap-select [data-toggle=dropdown], .bootstrap-select [role=\"listbox\"], .bs-searchbox input', function(e) {\n e.stopPropagation();\n });\n \/\/ SELECTPICKER DATA-API.\n $(window).on('load.bs.select.data-api', function() {\n $('.selectpicker').each(function() {\n var $selectpicker = $(this);\n Plugin.call($selectpicker, $selectpicker.data());\n });\n });\n })(jQuery);\n});\n"],"names":["define","jQuery","$","toString","defineProperty","indexOf","includes","String","prototype","object","$defineProperty","Object","result","error","search","this","TypeError","string","call","stringLength","length","searchString","searchLength","position","arguments","undefined","pos","Number","start","Math","min","max","startsWith","index","charCodeAt","keys","o","k","r","hasOwnProperty","push","valHooks","useDefault","_set","select","set","elem","value","data","apply","changed_arguments","EventIsSupported","Event","e","normalizeToBase","text","each","re","ch","replace","fn","triggerNative","eventName","event","el","dispatchEvent","bubbles","document","createEvent","initEvent","fireEvent","createEventObject","eventType","trigger","expr","pseudos","icontains","obj","meta","$obj","find","toUpperCase","ibegins","aicontains","aibegins","createEscaper","map","escaper","match","source","join","testRegexp","RegExp","replaceRegexp","test","htmlEscape","htmlUnescape","Selectpicker","element","options","$element","$newElement","$button","$menu","$lis","title","attr","winPad","windowPadding","val","render","refresh","setStyle","selectAll","deselectAll","destroy","remove","show","hide","init","Plugin","option","args","_option","shift","chain","$this","is","i","config","extend","DEFAULTS","selectpicker","defaults","template","Function","VERSION","noneSelectedText","noneResultsText","countSelectedText","numSelected","numTotal","maxOptionsText","numAll","numGroup","selectAllText","deselectAllText","doneButton","doneButtonText","multipleSeparator","styleBase","style","size","selectedTextFormat","width","container","hideDisabled","showSubtext","showIcon","showContent","dropupAuto","header","liveSearch","liveSearchPlaceholder","liveSearchNormalize","liveSearchStyle","actionsBox","iconBase","tickIcon","showTick","caret","maxOptions","mobile","selectOnTab","dropdownAlignRight","constructor","that","id","addClass","liObj","multiple","prop","autofocus","createView","after","appendTo","children","$menuInner","$searchbox","removeClass","click","preventDefault","focus","checkDisabled","clickListener","liveSearchListener","setWidth","selectPosition","on","hasAttribute","off","validity","valid","blur","setTimeout","createDropdown","inputGroup","parent","hasClass","searchbox","actionsbox","donebutton","drop","$drop","li","createLi","innerHTML","reloadLi","_li","optID","titleOption","createElement","liIndex","generateLI","content","classes","optgroup","generateA","inline","tokens","html","className","insertBefore","firstChild","selectedIndex","selected","$selectOptions","prevHiddenIndex","optionClass","cssText","subtext","icon","$parent","isOptgroup","tagName","isOptgroupDisabled","disabled","isDisabled","next","$options","filter","optGroupClass","label","labelSubtext","showDivider","previousElementSibling","prevHidden","eq","findLis","updateLi","notDisabled","setDisabled","parentNode","setSelected","togglePlaceholder","tabIndex","selectedItems","toArray","split","totalCount","not","trim","status","buttonClass","liHeight","sizeInfo","newElement","menu","menuInner","divider","a","cloneNode","actions","appendChild","createTextNode","input","body","offsetHeight","headerHeight","searchHeight","actionsHeight","doneButtonHeight","dividerHeight","outerHeight","menuStyle","getComputedStyle","menuPadding","vert","parseInt","paddingTop","css","paddingBottom","borderTopWidth","borderBottomWidth","horiz","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","menuExtras","marginTop","marginBottom","marginLeft","marginRight","removeChild","setSize","menuHeight","menuWidth","getHeight","getWidth","selectOffsetTop","selectOffsetBot","selectOffsetLeft","selectOffsetRight","$window","window","selectHeight","selectWidth","offsetWidth","divHeight","getPos","containerPos","offset","$container","top","left","scrollTop","height","scrollLeft","getSize","minHeight","include","classList","contains","lis","getElementsByTagName","lisVisible","Array","optGroup","toggleClass","optIndex","slice","last","divLength","$selectClone","clone","$selectClone2","ulWidth","outerWidth","btnWidth","$bsContainer","actualHeight","getPlacement","append","detach","removeAttr","$document","keyCode","offsetTop","clickedIndex","prevValue","prevIndex","triggerChange","stopPropagation","$option","state","$optgroup","maxOptionsGrp","maxReached","maxReachedGrp","optgroupID","maxOptionsArr","maxTxt","maxTxtGrp","$notify","delay","fadeOut","currentTarget","target","change","$no_results","$hideItems","$searchBase","_searchStyle","$foundDiv","$lisVisible","first","begins","changeAll","lisVisLen","selectedOptions","origIndex","getAttribute","toggle","keydown","$items","isActive","selector","keyCodeMap","count","keyIndex","toLowerCase","substring","before","removeData","old","Constructor","noConflict","$selectpicker"],"mappings":"AAsBAA,sCAAO,CAAC,WAAW,SAASC,kBACdC,OAKMC,SACAC,eASAC,QACAC,SAdPC,OAAOC,UAAUF,WAGVH,SAAW,GAAGA,SACdC,eAAkB,mBAGVK,OAAS,GACTC,gBAAkBC,OAAOP,eACzBQ,OAASF,gBAAgBD,OAAQA,OAAQA,SAAWC,gBAC1D,MAAOG,eACFD,OAPW,GASlBP,QAAU,GAAGA,QACbC,SAAW,SAASQ,WACR,MAARC,WACM,IAAIC,cAEVC,OAASV,OAAOQ,SAChBD,QAAmC,mBAAzBX,SAASe,KAAKJ,cAClB,IAAIE,cAEVG,aAAeF,OAAOG,OACtBC,aAAed,OAAOO,QACtBQ,aAAeD,aAAaD,OAC5BG,SAAWC,UAAUJ,OAAS,EAAII,UAAU,QAAKC,EAEjDC,IAAMH,SAAWI,OAAOJ,UAAY,EACpCG,KAAOA,MACPA,IAAM,OAENE,MAAQC,KAAKC,IAAID,KAAKE,IAAIL,IAAK,GAAIP,sBAEnCG,aAAeM,MAAQT,gBAGwB,GAA5Cd,QAAQa,KAAKD,OAAQI,aAAcK,MAE1CtB,eACAA,eAAeG,OAAOC,UAAW,WAAY,OAChCF,uBACO,YACJ,IAGhBC,OAAOC,UAAUF,SAAWA,UAInCC,OAAOC,UAAUwB,2BAGV5B,eAAkB,mBAGVK,OAAS,GACTC,gBAAkBC,OAAOP,eACzBQ,OAASF,gBAAgBD,OAAQA,OAAQA,SAAWC,gBAC1D,MAAOG,eACFD,OAPW,GASlBT,SAAW,GAAGA,SACd6B,WAAa,SAASlB,WACV,MAARC,WACM,IAAIC,cAEVC,OAASV,OAAOQ,SAChBD,QAAmC,mBAAzBX,SAASe,KAAKJ,cAClB,IAAIE,cAEVG,aAAeF,OAAOG,OACtBC,aAAed,OAAOO,QACtBQ,aAAeD,aAAaD,OAC5BG,SAAWC,UAAUJ,OAAS,EAAII,UAAU,QAAKC,EAEjDC,IAAMH,SAAWI,OAAOJ,UAAY,EACpCG,KAAOA,MACPA,IAAM,OAENE,MAAQC,KAAKC,IAAID,KAAKE,IAAIL,IAAK,GAAIP,iBAEnCG,aAAeM,MAAQT,oBAChB,UAEPc,OAAS,IACJA,MAAQX,iBACTL,OAAOiB,WAAWN,MAAQK,QAAUZ,aAAaa,WAAWD,cACrD,SAGR,GAEP7B,eACAA,eAAeG,OAAOC,UAAW,aAAc,OAClCwB,yBACO,YACJ,IAGhBzB,OAAOC,UAAUwB,WAAaA,cAIrCrB,OAAOwB,OACRxB,OAAOwB,KAAO,SACVC,EACAC,EACAC,OAKKD,KAFLC,EAAI,GAEMF,EAENE,EAAEC,eAAerB,KAAKkB,EAAGC,IAAMC,EAAEE,KAAKH,UAGnCC,QAMXG,SAAW,CACXC,YAAY,EACZC,KAAMzC,EAAEuC,SAASG,OAAOC,KAE5B3C,EAAEuC,SAASG,OAAOC,IAAM,SAASC,KAAMC,cAC\/BA,QAAUN,SAASC,YACnBxC,EAAE4C,MAAME,KAAK,YAAY,GAEtBP,SAASE,KAAKM,MAAMlC,KAAMS,gBAEjC0B,kBAAoB,KACpBC,iBAAoB,0BAEZC,MAAM,WACH,EACT,MAAOC,UACE,GALS,YA8DfC,gBAAgBC,aAyCrBrD,EAAEsD,KAxCU,CAAC,CACTC,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,eACJC,GAAI,KACL,CACCD,GAAI,UACJC,GAAI,KACL,CACCD,GAAI,UACJC,GAAI,OAEM,WACVH,KAAOA,KAAOA,KAAKI,QAAQ5C,KAAK0C,GAAI1C,KAAK2C,IAAM,MAE5CH,KAlGXrD,EAAE0D,GAAGC,cAAgB,SAASC,eAEtBC,MADAC,GAAKjD,KAAK,GAEViD,GAAGC,eACCd,iBAEAY,MAAQ,IAAIX,MAAMU,UAAW,CACzBI,SAAS,KAIbH,MAAQI,SAASC,YAAY,UACvBC,UAAUP,WAAW,GAAM,GAErCE,GAAGC,cAAcF,QACVC,GAAGM,YACVP,MAAQI,SAASI,qBACXC,UAAYV,UAClBE,GAAGM,UAAU,KAAOR,UAAWC,aAG1BU,QAAQX,YAIrB5D,EAAEwE,KAAKC,QAAQC,UAAY,SAASC,IAAK5C,MAAO6C,UACxCC,KAAO7E,EAAE2E,KAAKG,KAAK,YACPD,KAAK\/B,KAAK,WAAa+B,KAAKxB,QAAQpD,WAAW8E,cAC\/C3E,SAASwE,KAAK,GAAGG,gBAGrC\/E,EAAEwE,KAAKC,QAAQO,QAAU,SAASL,IAAK5C,MAAO6C,UACtCC,KAAO7E,EAAE2E,KAAKG,KAAK,YACPD,KAAK\/B,KAAK,WAAa+B,KAAKxB,QAAQpD,WAAW8E,cAC\/CjD,WAAW8C,KAAK,GAAGG,gBAGvC\/E,EAAEwE,KAAKC,QAAQQ,WAAa,SAASN,IAAK5C,MAAO6C,UACzCC,KAAO7E,EAAE2E,KAAKG,KAAK,YACPD,KAAK\/B,KAAK,WAAa+B,KAAK\/B,KAAK,mBAAqB+B,KAAKxB,QAAQpD,WAAW8E,cAC9E3E,SAASwE,KAAK,GAAGG,gBAGrC\/E,EAAEwE,KAAKC,QAAQS,SAAW,SAASP,IAAK5C,MAAO6C,UACvCC,KAAO7E,EAAE2E,KAAKG,KAAK,YACPD,KAAK\/B,KAAK,WAAa+B,KAAK\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\/E,QAClBmE,KAAKY,WAAW\/E,IAAI,IACpBmE,KAAKxE,KAAKsK,IAAI,cAAcjF,YAAY,UAClCyM,YAAYvL,SAAS3L,QACvBkX,YAAYlR,UAGf4D,KAAKI,UACNJ,KAAKW,WAAW3G,KAAK,aAAakG,SAAS,UAE\/C0B,YAAW,WACP5B,KAAKY,WAAWI,UACjB,YAEFJ,WAAWU,GAAG,8EAA8E,SAASjJ,GACtGA,EAAEgU,0BAEDzL,WAAWU,GAAG,wBAAwB,cACvCtB,KAAKxE,KAAKsK,IAAI,cAAcjF,YAAY,UACxCb,KAAKxE,KAAKkJ,OAAO,WAAW7D,YAAY,UACxCyM,YAAYlR,SACR4D,KAAKY,WAAW\/E,MAAO,KAEnB0R,WADAC,YAAcxN,KAAKxE,KAAKsK,IAAI,8CAG5ByH,WADAvN,KAAK7E,QAAQiE,oBACAoO,YAAY1H,IAAI,KAAO9F,KAAKyN,eAAiB,KAAOnV,gBAAgB0H,KAAKY,WAAW\/E,OAAS,MAE7F2R,YAAY1H,IAAI,IAAM9F,KAAKyN,eAAiB,KAAOzN,KAAKY,WAAW\/E,MAAQ,OAE7EzF,SAAWoX,YAAYpX,OAClCkX,YAAYhK,KAAKtD,KAAK7E,QAAQuC,gBAAgB\/E,QAAQ,MAAO,IAAMoC,WAAWiF,KAAKY,WAAW\/E,OAAS,MACvGmE,KAAKW,WAAWgL,OAAO2B,aACvBtN,KAAKxE,KAAK0E,SAAS,cAChB,CACHqN,WAAWrN,SAAS,cAEhBwN,UADAC,YAAc3N,KAAKxE,KAAKsK,IAAI,WAGhC6H,YAAYnV,MAAK,SAASvB,WAClB6F,MAAQ5H,EAAEa,MACV+G,MAAMkF,SAAS,gBACGvL,IAAdiX,UACA5Q,MAAMoD,SAAS,WAEXwN,WACAA,UAAUxN,SAAS,UAEvBwN,UAAY5Q,OAETA,MAAMkF,SAAS,oBAAsB2L,YAAY1I,GAAGhO,MAAQ,GAAGe,KAAK,cAAgB8E,MAAM9E,KAAK,YACtG8E,MAAMoD,SAAS,UAEfwN,UAAY,QAGhBA,WACAA,UAAUxN,SAAS,UAEvBsN,YAAY1H,IAAI,WAAW8H,QAAQ1N,SAAS,UAC5CF,KAAKW,WAAWqJ,UAAU,SAK1CyD,aAAc,iBACG,CACTI,OAAQ,UACR7W,WAAY,WAEFjB,KAAKoF,QAAQkE,kBAAoB,aAEnDxD,IAAK,SAAS9D,mBACW,IAAVA,YACFqD,SAASS,IAAI9D,YACb+D,SACE\/F,KAAKqF,UAELrF,KAAKqF,SAASS,OAG7BiS,UAAW,SAAS9H,WACXjQ,KAAKqK,eAGY,IAAX4F,SACPA,QAAS,QAERd,cACDT,SAAW1O,KAAKqF,SAASpB,KAAK,UAC9B2T,YAAc5X,KAAKyF,KAAKsK,IAAI,kDAC5BiI,UAAYJ,YAAYvX,OACxB4X,gBAAkB,MAClBhI,WACI2H,YAAYjJ,OAAO,aAAatO,SAAWuX,YAAYvX,sBAIZ,IAA3CuX,YAAYjJ,OAAO,aAAatO,cAIxCuX,YAAY9C,YAAY,WAAY7E,YAC\/B,IAAIhJ,EAAI,EAAGA,EAAI+Q,UAAW\/Q,IAAK,KAC5BiR,UAAYN,YAAY3Q,GAAGkR,aAAa,uBAC5CF,gBAAgBA,gBAAgB5X,QAAUqO,SAASQ,GAAGgJ,WAAW,GAErE\/Y,EAAE8Y,iBAAiB3N,KAAK,WAAY2F,aAC\/BlK,QAAO,QACP0J,yBACApK,SACAvC,cAAc,YAEvBoD,UAAW,kBACAlG,KAAK+X,WAAU,IAE1B5R,YAAa,kBACFnG,KAAK+X,WAAU,IAE1BK,OAAQ,SAAS9V,IACbA,EAAIA,GAAKgR,OAAOtQ,QAEZV,EAAEgU,uBAED\/Q,QAAQ7B,QAAQ,UAEzB2U,QAAS,SAAS\/V,OAGVgW,OAEApX,MACAkV,UACAmC,SANAxR,MAAQ5H,EAAEa,MAGViK,MAFUlD,MAAMC,GAAG,SAAWD,MAAMiF,SAASA,SAAWjF,MAAMiF,UAE\/C\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\/T,aAEhC\/F,EAAE0D,GAAGwE,aAAa6R,WAAa,kBAC3B\/Z,EAAE0D,GAAGwE,aAAe2R,IACbhZ,MAEXb,EAAEiE,UACGnB,KAAK,WAAY,GACjBsJ,GAAG,oBAAqB,oGAAqGrG,aAAazF,UAAU4Y,SACpJ9M,GAAG,gBAAiB,qGAAqG,SAASjJ,GAC\/HA,EAAEgU,qBAGVnX,EAAEmU,QAAQ\/H,GAAG,2BAA2B,WACpCpM,EAAE,iBAAiBsD,MAAK,eAChB0W,cAAgBha,EAAEa,MACtByG,OAAOtG,KAAKgZ,cAAeA,cAAclX,eAGlD\/C"}