{"version":3,"file":"js/2993-d34787c5343a2c76f778.js","mappings":"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","sources":["webpack://hover-mainsite/./node_modules/jquery-ui/ui/keycode.js","webpack://hover-mainsite/./node_modules/jquery-ui/ui/position.js","webpack://hover-mainsite/./node_modules/jquery-ui/ui/safe-active-element.js","webpack://hover-mainsite/./node_modules/jquery-ui/ui/unique-id.js","webpack://hover-mainsite/./node_modules/jquery-ui/ui/version.js","webpack://hover-mainsite/./node_modules/jquery-ui/ui/widget.js","webpack://hover-mainsite/./node_modules/jquery-ui/ui/widgets/autocomplete.js","webpack://hover-mainsite/./node_modules/jquery-ui/ui/widgets/menu.js"],"sourcesContent":["/*!\n * jQuery UI Keycode 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Keycode\n//>>group: Core\n//>>description: Provide keycodes as keynames\n//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.ui.keyCode = {\n\tBACKSPACE: 8,\n\tCOMMA: 188,\n\tDELETE: 46,\n\tDOWN: 40,\n\tEND: 35,\n\tENTER: 13,\n\tESCAPE: 27,\n\tHOME: 36,\n\tLEFT: 37,\n\tPAGE_DOWN: 34,\n\tPAGE_UP: 33,\n\tPERIOD: 190,\n\tRIGHT: 39,\n\tSPACE: 32,\n\tTAB: 9,\n\tUP: 38\n};\n\n} ) );\n","/*!\n * jQuery UI Position 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n *\n * http://api.jqueryui.com/position/\n */\n\n//>>label: Position\n//>>group: Core\n//>>description: Positions elements relative to other elements.\n//>>docs: http://api.jqueryui.com/position/\n//>>demos: http://jqueryui.com/position/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n( function() {\nvar cachedScrollbarWidth,\n\tmax = Math.max,\n\tabs = Math.abs,\n\trhorizontal = /left|center|right/,\n\trvertical = /top|center|bottom/,\n\troffset = /[\\+\\-]\\d+(\\.[\\d]+)?%?/,\n\trposition = /^\\w+/,\n\trpercent = /%$/,\n\t_position = $.fn.position;\n\nfunction getOffsets( offsets, width, height ) {\n\treturn [\n\t\tparseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),\n\t\tparseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )\n\t];\n}\n\nfunction parseCss( element, property ) {\n\treturn parseInt( $.css( element, property ), 10 ) || 0;\n}\n\nfunction getDimensions( elem ) {\n\tvar raw = elem[ 0 ];\n\tif ( raw.nodeType === 9 ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: 0, left: 0 }\n\t\t};\n\t}\n\tif ( $.isWindow( raw ) ) {\n\t\treturn {\n\t\t\twidth: elem.width(),\n\t\t\theight: elem.height(),\n\t\t\toffset: { top: elem.scrollTop(), left: elem.scrollLeft() }\n\t\t};\n\t}\n\tif ( raw.preventDefault ) {\n\t\treturn {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t\toffset: { top: raw.pageY, left: raw.pageX }\n\t\t};\n\t}\n\treturn {\n\t\twidth: elem.outerWidth(),\n\t\theight: elem.outerHeight(),\n\t\toffset: elem.offset()\n\t};\n}\n\n$.position = {\n\tscrollbarWidth: function() {\n\t\tif ( cachedScrollbarWidth !== undefined ) {\n\t\t\treturn cachedScrollbarWidth;\n\t\t}\n\t\tvar w1, w2,\n\t\t\tdiv = $( \"<div \" +\n\t\t\t\t\"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>\" +\n\t\t\t\t\"<div style='height:100px;width:auto;'></div></div>\" ),\n\t\t\tinnerDiv = div.children()[ 0 ];\n\n\t\t$( \"body\" ).append( div );\n\t\tw1 = innerDiv.offsetWidth;\n\t\tdiv.css( \"overflow\", \"scroll\" );\n\n\t\tw2 = innerDiv.offsetWidth;\n\n\t\tif ( w1 === w2 ) {\n\t\t\tw2 = div[ 0 ].clientWidth;\n\t\t}\n\n\t\tdiv.remove();\n\n\t\treturn ( cachedScrollbarWidth = w1 - w2 );\n\t},\n\tgetScrollInfo: function( within ) {\n\t\tvar overflowX = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-x\" ),\n\t\t\toverflowY = within.isWindow || within.isDocument ? \"\" :\n\t\t\t\twithin.element.css( \"overflow-y\" ),\n\t\t\thasOverflowX = overflowX === \"scroll\" ||\n\t\t\t\t( overflowX === \"auto\" && within.width < within.element[ 0 ].scrollWidth ),\n\t\t\thasOverflowY = overflowY === \"scroll\" ||\n\t\t\t\t( overflowY === \"auto\" && within.height < within.element[ 0 ].scrollHeight );\n\t\treturn {\n\t\t\twidth: hasOverflowY ? $.position.scrollbarWidth() : 0,\n\t\t\theight: hasOverflowX ? $.position.scrollbarWidth() : 0\n\t\t};\n\t},\n\tgetWithinInfo: function( element ) {\n\t\tvar withinElement = $( element || window ),\n\t\t\tisWindow = $.isWindow( withinElement[ 0 ] ),\n\t\t\tisDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,\n\t\t\thasOffset = !isWindow && !isDocument;\n\t\treturn {\n\t\t\telement: withinElement,\n\t\t\tisWindow: isWindow,\n\t\t\tisDocument: isDocument,\n\t\t\toffset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },\n\t\t\tscrollLeft: withinElement.scrollLeft(),\n\t\t\tscrollTop: withinElement.scrollTop(),\n\t\t\twidth: withinElement.outerWidth(),\n\t\t\theight: withinElement.outerHeight()\n\t\t};\n\t}\n};\n\n$.fn.position = function( options ) {\n\tif ( !options || !options.of ) {\n\t\treturn _position.apply( this, arguments );\n\t}\n\n\t// Make a copy, we don't want to modify arguments\n\toptions = $.extend( {}, options );\n\n\tvar atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,\n\t\ttarget = $( options.of ),\n\t\twithin = $.position.getWithinInfo( options.within ),\n\t\tscrollInfo = $.position.getScrollInfo( within ),\n\t\tcollision = ( options.collision || \"flip\" ).split( \" \" ),\n\t\toffsets = {};\n\n\tdimensions = getDimensions( target );\n\tif ( target[ 0 ].preventDefault ) {\n\n\t\t// Force left top to allow flipping\n\t\toptions.at = \"left top\";\n\t}\n\ttargetWidth = dimensions.width;\n\ttargetHeight = dimensions.height;\n\ttargetOffset = dimensions.offset;\n\n\t// Clone to reuse original targetOffset later\n\tbasePosition = $.extend( {}, targetOffset );\n\n\t// Force my and at to have valid horizontal and vertical positions\n\t// if a value is missing or invalid, it will be converted to center\n\t$.each( [ \"my\", \"at\" ], function() {\n\t\tvar pos = ( options[ this ] || \"\" ).split( \" \" ),\n\t\t\thorizontalOffset,\n\t\t\tverticalOffset;\n\n\t\tif ( pos.length === 1 ) {\n\t\t\tpos = rhorizontal.test( pos[ 0 ] ) ?\n\t\t\t\tpos.concat( [ \"center\" ] ) :\n\t\t\t\trvertical.test( pos[ 0 ] ) ?\n\t\t\t\t\t[ \"center\" ].concat( pos ) :\n\t\t\t\t\t[ \"center\", \"center\" ];\n\t\t}\n\t\tpos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : \"center\";\n\t\tpos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : \"center\";\n\n\t\t// Calculate offsets\n\t\thorizontalOffset = roffset.exec( pos[ 0 ] );\n\t\tverticalOffset = roffset.exec( pos[ 1 ] );\n\t\toffsets[ this ] = [\n\t\t\thorizontalOffset ? horizontalOffset[ 0 ] : 0,\n\t\t\tverticalOffset ? verticalOffset[ 0 ] : 0\n\t\t];\n\n\t\t// Reduce to just the positions without the offsets\n\t\toptions[ this ] = [\n\t\t\trposition.exec( pos[ 0 ] )[ 0 ],\n\t\t\trposition.exec( pos[ 1 ] )[ 0 ]\n\t\t];\n\t} );\n\n\t// Normalize collision option\n\tif ( collision.length === 1 ) {\n\t\tcollision[ 1 ] = collision[ 0 ];\n\t}\n\n\tif ( options.at[ 0 ] === \"right\" ) {\n\t\tbasePosition.left += targetWidth;\n\t} else if ( options.at[ 0 ] === \"center\" ) {\n\t\tbasePosition.left += targetWidth / 2;\n\t}\n\n\tif ( options.at[ 1 ] === \"bottom\" ) {\n\t\tbasePosition.top += targetHeight;\n\t} else if ( options.at[ 1 ] === \"center\" ) {\n\t\tbasePosition.top += targetHeight / 2;\n\t}\n\n\tatOffset = getOffsets( offsets.at, targetWidth, targetHeight );\n\tbasePosition.left += atOffset[ 0 ];\n\tbasePosition.top += atOffset[ 1 ];\n\n\treturn this.each( function() {\n\t\tvar collisionPosition, using,\n\t\t\telem = $( this ),\n\t\t\telemWidth = elem.outerWidth(),\n\t\t\telemHeight = elem.outerHeight(),\n\t\t\tmarginLeft = parseCss( this, \"marginLeft\" ),\n\t\t\tmarginTop = parseCss( this, \"marginTop\" ),\n\t\t\tcollisionWidth = elemWidth + marginLeft + parseCss( this, \"marginRight\" ) +\n\t\t\t\tscrollInfo.width,\n\t\t\tcollisionHeight = elemHeight + marginTop + parseCss( this, \"marginBottom\" ) +\n\t\t\t\tscrollInfo.height,\n\t\t\tposition = $.extend( {}, basePosition ),\n\t\t\tmyOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );\n\n\t\tif ( options.my[ 0 ] === \"right\" ) {\n\t\t\tposition.left -= elemWidth;\n\t\t} else if ( options.my[ 0 ] === \"center\" ) {\n\t\t\tposition.left -= elemWidth / 2;\n\t\t}\n\n\t\tif ( options.my[ 1 ] === \"bottom\" ) {\n\t\t\tposition.top -= elemHeight;\n\t\t} else if ( options.my[ 1 ] === \"center\" ) {\n\t\t\tposition.top -= elemHeight / 2;\n\t\t}\n\n\t\tposition.left += myOffset[ 0 ];\n\t\tposition.top += myOffset[ 1 ];\n\n\t\tcollisionPosition = {\n\t\t\tmarginLeft: marginLeft,\n\t\t\tmarginTop: marginTop\n\t\t};\n\n\t\t$.each( [ \"left\", \"top\" ], function( i, dir ) {\n\t\t\tif ( $.ui.position[ collision[ i ] ] ) {\n\t\t\t\t$.ui.position[ collision[ i ] ][ dir ]( position, {\n\t\t\t\t\ttargetWidth: targetWidth,\n\t\t\t\t\ttargetHeight: targetHeight,\n\t\t\t\t\telemWidth: elemWidth,\n\t\t\t\t\telemHeight: elemHeight,\n\t\t\t\t\tcollisionPosition: collisionPosition,\n\t\t\t\t\tcollisionWidth: collisionWidth,\n\t\t\t\t\tcollisionHeight: collisionHeight,\n\t\t\t\t\toffset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],\n\t\t\t\t\tmy: options.my,\n\t\t\t\t\tat: options.at,\n\t\t\t\t\twithin: within,\n\t\t\t\t\telem: elem\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\n\t\tif ( options.using ) {\n\n\t\t\t// Adds feedback as second argument to using callback, if present\n\t\t\tusing = function( props ) {\n\t\t\t\tvar left = targetOffset.left - position.left,\n\t\t\t\t\tright = left + targetWidth - elemWidth,\n\t\t\t\t\ttop = targetOffset.top - position.top,\n\t\t\t\t\tbottom = top + targetHeight - elemHeight,\n\t\t\t\t\tfeedback = {\n\t\t\t\t\t\ttarget: {\n\t\t\t\t\t\t\telement: target,\n\t\t\t\t\t\t\tleft: targetOffset.left,\n\t\t\t\t\t\t\ttop: targetOffset.top,\n\t\t\t\t\t\t\twidth: targetWidth,\n\t\t\t\t\t\t\theight: targetHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\telement: {\n\t\t\t\t\t\t\telement: elem,\n\t\t\t\t\t\t\tleft: position.left,\n\t\t\t\t\t\t\ttop: position.top,\n\t\t\t\t\t\t\twidth: elemWidth,\n\t\t\t\t\t\t\theight: elemHeight\n\t\t\t\t\t\t},\n\t\t\t\t\t\thorizontal: right < 0 ? \"left\" : left > 0 ? \"right\" : \"center\",\n\t\t\t\t\t\tvertical: bottom < 0 ? \"top\" : top > 0 ? \"bottom\" : \"middle\"\n\t\t\t\t\t};\n\t\t\t\tif ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {\n\t\t\t\t\tfeedback.horizontal = \"center\";\n\t\t\t\t}\n\t\t\t\tif ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {\n\t\t\t\t\tfeedback.vertical = \"middle\";\n\t\t\t\t}\n\t\t\t\tif ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {\n\t\t\t\t\tfeedback.important = \"horizontal\";\n\t\t\t\t} else {\n\t\t\t\t\tfeedback.important = \"vertical\";\n\t\t\t\t}\n\t\t\t\toptions.using.call( this, props, feedback );\n\t\t\t};\n\t\t}\n\n\t\telem.offset( $.extend( position, { using: using } ) );\n\t} );\n};\n\n$.ui.position = {\n\tfit: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\touterWidth = within.width,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = withinOffset - collisionPosLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,\n\t\t\t\tnewOverRight;\n\n\t\t\t// Element is wider than within\n\t\t\tif ( data.collisionWidth > outerWidth ) {\n\n\t\t\t\t// Element is initially over the left side of within\n\t\t\t\tif ( overLeft > 0 && overRight <= 0 ) {\n\t\t\t\t\tnewOverRight = position.left + overLeft + data.collisionWidth - outerWidth -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.left += overLeft - newOverRight;\n\n\t\t\t\t// Element is initially over right side of within\n\t\t\t\t} else if ( overRight > 0 && overLeft <= 0 ) {\n\t\t\t\t\tposition.left = withinOffset;\n\n\t\t\t\t// Element is initially over both left and right sides of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overLeft > overRight ) {\n\t\t\t\t\t\tposition.left = withinOffset + outerWidth - data.collisionWidth;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.left = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far left -> align with left edge\n\t\t\t} else if ( overLeft > 0 ) {\n\t\t\t\tposition.left += overLeft;\n\n\t\t\t// Too far right -> align with right edge\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tposition.left -= overRight;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.left = max( position.left - collisionPosLeft, position.left );\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\touterHeight = data.within.height,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = withinOffset - collisionPosTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,\n\t\t\t\tnewOverBottom;\n\n\t\t\t// Element is taller than within\n\t\t\tif ( data.collisionHeight > outerHeight ) {\n\n\t\t\t\t// Element is initially over the top of within\n\t\t\t\tif ( overTop > 0 && overBottom <= 0 ) {\n\t\t\t\t\tnewOverBottom = position.top + overTop + data.collisionHeight - outerHeight -\n\t\t\t\t\t\twithinOffset;\n\t\t\t\t\tposition.top += overTop - newOverBottom;\n\n\t\t\t\t// Element is initially over bottom of within\n\t\t\t\t} else if ( overBottom > 0 && overTop <= 0 ) {\n\t\t\t\t\tposition.top = withinOffset;\n\n\t\t\t\t// Element is initially over both top and bottom of within\n\t\t\t\t} else {\n\t\t\t\t\tif ( overTop > overBottom ) {\n\t\t\t\t\t\tposition.top = withinOffset + outerHeight - data.collisionHeight;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tposition.top = withinOffset;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Too far up -> align with top\n\t\t\t} else if ( overTop > 0 ) {\n\t\t\t\tposition.top += overTop;\n\n\t\t\t// Too far down -> align with bottom edge\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tposition.top -= overBottom;\n\n\t\t\t// Adjust based on position and margin\n\t\t\t} else {\n\t\t\t\tposition.top = max( position.top - collisionPosTop, position.top );\n\t\t\t}\n\t\t}\n\t},\n\tflip: {\n\t\tleft: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.left + within.scrollLeft,\n\t\t\t\touterWidth = within.width,\n\t\t\t\toffsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,\n\t\t\t\tcollisionPosLeft = position.left - data.collisionPosition.marginLeft,\n\t\t\t\toverLeft = collisionPosLeft - offsetLeft,\n\t\t\t\toverRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,\n\t\t\t\tmyOffset = data.my[ 0 ] === \"left\" ?\n\t\t\t\t\t-data.elemWidth :\n\t\t\t\t\tdata.my[ 0 ] === \"right\" ?\n\t\t\t\t\t\tdata.elemWidth :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 0 ] === \"left\" ?\n\t\t\t\t\tdata.targetWidth :\n\t\t\t\t\tdata.at[ 0 ] === \"right\" ?\n\t\t\t\t\t\t-data.targetWidth :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 0 ],\n\t\t\t\tnewOverRight,\n\t\t\t\tnewOverLeft;\n\n\t\t\tif ( overLeft < 0 ) {\n\t\t\t\tnewOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -\n\t\t\t\t\touterWidth - withinOffset;\n\t\t\t\tif ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overRight > 0 ) {\n\t\t\t\tnewOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +\n\t\t\t\t\tatOffset + offset - offsetLeft;\n\t\t\t\tif ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {\n\t\t\t\t\tposition.left += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\ttop: function( position, data ) {\n\t\t\tvar within = data.within,\n\t\t\t\twithinOffset = within.offset.top + within.scrollTop,\n\t\t\t\touterHeight = within.height,\n\t\t\t\toffsetTop = within.isWindow ? within.scrollTop : within.offset.top,\n\t\t\t\tcollisionPosTop = position.top - data.collisionPosition.marginTop,\n\t\t\t\toverTop = collisionPosTop - offsetTop,\n\t\t\t\toverBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,\n\t\t\t\ttop = data.my[ 1 ] === \"top\",\n\t\t\t\tmyOffset = top ?\n\t\t\t\t\t-data.elemHeight :\n\t\t\t\t\tdata.my[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\tdata.elemHeight :\n\t\t\t\t\t\t0,\n\t\t\t\tatOffset = data.at[ 1 ] === \"top\" ?\n\t\t\t\t\tdata.targetHeight :\n\t\t\t\t\tdata.at[ 1 ] === \"bottom\" ?\n\t\t\t\t\t\t-data.targetHeight :\n\t\t\t\t\t\t0,\n\t\t\t\toffset = -2 * data.offset[ 1 ],\n\t\t\t\tnewOverTop,\n\t\t\t\tnewOverBottom;\n\t\t\tif ( overTop < 0 ) {\n\t\t\t\tnewOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -\n\t\t\t\t\touterHeight - withinOffset;\n\t\t\t\tif ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t} else if ( overBottom > 0 ) {\n\t\t\t\tnewOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +\n\t\t\t\t\toffset - offsetTop;\n\t\t\t\tif ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {\n\t\t\t\t\tposition.top += myOffset + atOffset + offset;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\tflipfit: {\n\t\tleft: function() {\n\t\t\t$.ui.position.flip.left.apply( this, arguments );\n\t\t\t$.ui.position.fit.left.apply( this, arguments );\n\t\t},\n\t\ttop: function() {\n\t\t\t$.ui.position.flip.top.apply( this, arguments );\n\t\t\t$.ui.position.fit.top.apply( this, arguments );\n\t\t}\n\t}\n};\n\n} )();\n\nreturn $.ui.position;\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\nreturn $.ui.safeActiveElement = function( document ) {\n\tvar activeElement;\n\n\t// Support: IE 9 only\n\t// IE9 throws an \"Unspecified error\" accessing document.activeElement from an <iframe>\n\ttry {\n\t\tactiveElement = document.activeElement;\n\t} catch ( error ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE may return null instead of an element\n\t// Interestingly, this only seems to occur when NOT in an iframe\n\tif ( !activeElement ) {\n\t\tactiveElement = document.body;\n\t}\n\n\t// Support: IE 11 only\n\t// IE11 returns a seemingly empty object in some cases when accessing\n\t// document.activeElement from an <iframe>\n\tif ( !activeElement.nodeName ) {\n\t\tactiveElement = document.body;\n\t}\n\n\treturn activeElement;\n};\n\n} ) );\n","/*!\n * jQuery UI Unique ID 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: uniqueId\n//>>group: Core\n//>>description: Functions to generate and remove uniqueId's\n//>>docs: http://api.jqueryui.com/uniqueId/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\nreturn $.fn.extend( {\n\tuniqueId: ( function() {\n\t\tvar uuid = 0;\n\n\t\treturn function() {\n\t\t\treturn this.each( function() {\n\t\t\t\tif ( !this.id ) {\n\t\t\t\t\tthis.id = \"ui-id-\" + ( ++uuid );\n\t\t\t\t}\n\t\t\t} );\n\t\t};\n\t} )(),\n\n\tremoveUniqueId: function() {\n\t\treturn this.each( function() {\n\t\t\tif ( /^ui-id-\\d+$/.test( this.id ) ) {\n\t\t\t\t$( this ).removeAttr( \"id\" );\n\t\t\t}\n\t\t} );\n\t}\n} );\n\n} ) );\n","( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} ( function( $ ) {\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.12.1\";\n\n} ) );\n","/*!\n * jQuery UI Widget 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nvar widgetUuid = 0;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\ttry {\n\n\t\t\t\t// Only trigger remove when necessary to save time\n\t\t\t\tevents = $._data( elem, \"events\" );\n\t\t\t\tif ( events && events.remove ) {\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t\t}\n\n\t\t\t// Http://bugs.jquery.com/ticket/8235\n\t\t\t} catch ( e ) {}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( $.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( !$.isFunction( value ) ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tcurrent = $( $.unique( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis._on( options.element, {\n\t\t\t\"remove\": \"_untrackClassesElement\"\n\t\t} );\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName ).off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( $.isFunction( callback ) &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nreturn $.widget;\n\n} ) );\n","/*!\n * jQuery UI Autocomplete 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Autocomplete\n//>>group: Widgets\n//>>description: Lists suggested words as the user is typing.\n//>>docs: http://api.jqueryui.com/autocomplete/\n//>>demos: http://jqueryui.com/autocomplete/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/autocomplete.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./menu\",\n\t\t\t\"../keycode\",\n\t\t\t\"../position\",\n\t\t\t\"../safe-active-element\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\n$.widget( \"ui.autocomplete\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<input>\",\n\toptions: {\n\t\tappendTo: null,\n\t\tautoFocus: false,\n\t\tdelay: 300,\n\t\tminLength: 1,\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"left bottom\",\n\t\t\tcollision: \"none\"\n\t\t},\n\t\tsource: null,\n\n\t\t// Callbacks\n\t\tchange: null,\n\t\tclose: null,\n\t\tfocus: null,\n\t\topen: null,\n\t\tresponse: null,\n\t\tsearch: null,\n\t\tselect: null\n\t},\n\n\trequestIndex: 0,\n\tpending: 0,\n\n\t_create: function() {\n\n\t\t// Some browsers only repeat keydown events, not keypress events,\n\t\t// so we use the suppressKeyPress flag to determine if we've already\n\t\t// handled the keydown event. #7269\n\t\t// Unfortunately the code for & in keypress is the same as the up arrow,\n\t\t// so we use the suppressKeyPressRepeat flag to avoid handling keypress\n\t\t// events when we know the keydown event was used to modify the\n\t\t// search term. #7799\n\t\tvar suppressKeyPress, suppressKeyPressRepeat, suppressInput,\n\t\t\tnodeName = this.element[ 0 ].nodeName.toLowerCase(),\n\t\t\tisTextarea = nodeName === \"textarea\",\n\t\t\tisInput = nodeName === \"input\";\n\n\t\t// Textareas are always multi-line\n\t\t// Inputs are always single-line, even if inside a contentEditable element\n\t\t// IE also treats inputs as contentEditable\n\t\t// All other element types are determined by whether or not they're contentEditable\n\t\tthis.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );\n\n\t\tthis.valueMethod = this.element[ isTextarea || isInput ? \"val\" : \"text\" ];\n\t\tthis.isNewMenu = true;\n\n\t\tthis._addClass( \"ui-autocomplete-input\" );\n\t\tthis.element.attr( \"autocomplete\", \"off\" );\n\n\t\tthis._on( this.element, {\n\t\t\tkeydown: function( event ) {\n\t\t\t\tif ( this.element.prop( \"readOnly\" ) ) {\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tsuppressInput = true;\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tsuppressKeyPress = false;\n\t\t\t\tsuppressInput = false;\n\t\t\t\tsuppressKeyPressRepeat = false;\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ENTER:\n\n\t\t\t\t\t// when menu is open and has focus\n\t\t\t\t\tif ( this.menu.active ) {\n\n\t\t\t\t\t\t// #6055 - Opera still allows the keypress to occur\n\t\t\t\t\t\t// which causes forms to submit\n\t\t\t\t\t\tsuppressKeyPress = true;\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.TAB:\n\t\t\t\t\tif ( this.menu.active ) {\n\t\t\t\t\t\tthis.menu.select( event );\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.ESCAPE:\n\t\t\t\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\t\t\t\tthis._value( this.term );\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.close( event );\n\n\t\t\t\t\t\t// Different browsers have different default behavior for escape\n\t\t\t\t\t\t// Single press can mean undo or clear\n\t\t\t\t\t\t// Double press in IE means clear the whole form\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tsuppressKeyPressRepeat = true;\n\n\t\t\t\t\t// search timeout should be triggered before the input value is changed\n\t\t\t\t\tthis._searchTimeout( event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tkeypress: function( event ) {\n\t\t\t\tif ( suppressKeyPress ) {\n\t\t\t\t\tsuppressKeyPress = false;\n\t\t\t\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t}\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif ( suppressKeyPressRepeat ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Replicate some key handlers to allow them to repeat in Firefox and Opera\n\t\t\t\tvar keyCode = $.ui.keyCode;\n\t\t\t\tswitch ( event.keyCode ) {\n\t\t\t\tcase keyCode.PAGE_UP:\n\t\t\t\t\tthis._move( \"previousPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.PAGE_DOWN:\n\t\t\t\t\tthis._move( \"nextPage\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.UP:\n\t\t\t\t\tthis._keyEvent( \"previous\", event );\n\t\t\t\t\tbreak;\n\t\t\t\tcase keyCode.DOWN:\n\t\t\t\t\tthis._keyEvent( \"next\", event );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tinput: function( event ) {\n\t\t\t\tif ( suppressInput ) {\n\t\t\t\t\tsuppressInput = false;\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._searchTimeout( event );\n\t\t\t},\n\t\t\tfocus: function() {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.previous = this._value();\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tif ( this.cancelBlur ) {\n\t\t\t\t\tdelete this.cancelBlur;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tclearTimeout( this.searching );\n\t\t\t\tthis.close( event );\n\t\t\t\tthis._change( event );\n\t\t\t}\n\t\t} );\n\n\t\tthis._initSource();\n\t\tthis.menu = $( \"<ul>\" )\n\t\t\t.appendTo( this._appendTo() )\n\t\t\t.menu( {\n\n\t\t\t\t// disable ARIA support, the live region takes care of that\n\t\t\t\trole: null\n\t\t\t} )\n\t\t\t.hide()\n\t\t\t.menu( \"instance\" );\n\n\t\tthis._addClass( this.menu.element, \"ui-autocomplete\", \"ui-front\" );\n\t\tthis._on( this.menu.element, {\n\t\t\tmousedown: function( event ) {\n\n\t\t\t\t// prevent moving focus out of the text field\n\t\t\t\tevent.preventDefault();\n\n\t\t\t\t// IE doesn't prevent moving focus even with event.preventDefault()\n\t\t\t\t// so we set a flag to know when we should ignore the blur event\n\t\t\t\tthis.cancelBlur = true;\n\t\t\t\tthis._delay( function() {\n\t\t\t\t\tdelete this.cancelBlur;\n\n\t\t\t\t\t// Support: IE 8 only\n\t\t\t\t\t// Right clicking a menu item or selecting text from the menu items will\n\t\t\t\t\t// result in focus moving out of the input. However, we've already received\n\t\t\t\t\t// and ignored the blur event because of the cancelBlur flag set above. So\n\t\t\t\t\t// we restore focus to ensure that the menu closes properly based on the user's\n\t\t\t\t\t// next actions.\n\t\t\t\t\tif ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {\n\t\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tmenufocus: function( event, ui ) {\n\t\t\t\tvar label, item;\n\n\t\t\t\t// support: Firefox\n\t\t\t\t// Prevent accidental activation of menu items in Firefox (#7024 #9118)\n\t\t\t\tif ( this.isNewMenu ) {\n\t\t\t\t\tthis.isNewMenu = false;\n\t\t\t\t\tif ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis.menu.blur();\n\n\t\t\t\t\t\tthis.document.one( \"mousemove\", function() {\n\t\t\t\t\t\t\t$( event.target ).trigger( event.originalEvent );\n\t\t\t\t\t\t} );\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\titem = ui.item.data( \"ui-autocomplete-item\" );\n\t\t\t\tif ( false !== this._trigger( \"focus\", event, { item: item } ) ) {\n\n\t\t\t\t\t// use value to match what will end up in the input, if it was a key event\n\t\t\t\t\tif ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {\n\t\t\t\t\t\tthis._value( item.value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Announce the value in the liveRegion\n\t\t\t\tlabel = ui.item.attr( \"aria-label\" ) || item.value;\n\t\t\t\tif ( label && $.trim( label ).length ) {\n\t\t\t\t\tthis.liveRegion.children().hide();\n\t\t\t\t\t$( \"<div>\" ).text( label ).appendTo( this.liveRegion );\n\t\t\t\t}\n\t\t\t},\n\t\t\tmenuselect: function( event, ui ) {\n\t\t\t\tvar item = ui.item.data( \"ui-autocomplete-item\" ),\n\t\t\t\t\tprevious = this.previous;\n\n\t\t\t\t// Only trigger when focus was lost (click on menu)\n\t\t\t\tif ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {\n\t\t\t\t\tthis.element.trigger( \"focus\" );\n\t\t\t\t\tthis.previous = previous;\n\n\t\t\t\t\t// #6109 - IE triggers two focus events and the second\n\t\t\t\t\t// is asynchronous, so we need to reset the previous\n\t\t\t\t\t// term synchronously and asynchronously :-(\n\t\t\t\t\tthis._delay( function() {\n\t\t\t\t\t\tthis.previous = previous;\n\t\t\t\t\t\tthis.selectedItem = item;\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\tif ( false !== this._trigger( \"select\", event, { item: item } ) ) {\n\t\t\t\t\tthis._value( item.value );\n\t\t\t\t}\n\n\t\t\t\t// reset the term after the select event\n\t\t\t\t// this allows custom select handling to work properly\n\t\t\t\tthis.term = this._value();\n\n\t\t\t\tthis.close( event );\n\t\t\t\tthis.selectedItem = item;\n\t\t\t}\n\t\t} );\n\n\t\tthis.liveRegion = $( \"<div>\", {\n\t\t\trole: \"status\",\n\t\t\t\"aria-live\": \"assertive\",\n\t\t\t\"aria-relevant\": \"additions\"\n\t\t} )\n\t\t\t.appendTo( this.document[ 0 ].body );\n\n\t\tthis._addClass( this.liveRegion, null, \"ui-helper-hidden-accessible\" );\n\n\t\t// Turning off autocomplete prevents the browser from remembering the\n\t\t// value when navigating through history, so we re-enable autocomplete\n\t\t// if the page is unloaded before the widget is destroyed. #7790\n\t\tthis._on( this.window, {\n\t\t\tbeforeunload: function() {\n\t\t\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tclearTimeout( this.searching );\n\t\tthis.element.removeAttr( \"autocomplete\" );\n\t\tthis.menu.element.remove();\n\t\tthis.liveRegion.remove();\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\t\tif ( key === \"source\" ) {\n\t\t\tthis._initSource();\n\t\t}\n\t\tif ( key === \"appendTo\" ) {\n\t\t\tthis.menu.element.appendTo( this._appendTo() );\n\t\t}\n\t\tif ( key === \"disabled\" && value && this.xhr ) {\n\t\t\tthis.xhr.abort();\n\t\t}\n\t},\n\n\t_isEventTargetInWidget: function( event ) {\n\t\tvar menuElement = this.menu.element[ 0 ];\n\n\t\treturn event.target === this.element[ 0 ] ||\n\t\t\tevent.target === menuElement ||\n\t\t\t$.contains( menuElement, event.target );\n\t},\n\n\t_closeOnClickOutside: function( event ) {\n\t\tif ( !this._isEventTargetInWidget( event ) ) {\n\t\t\tthis.close();\n\t\t}\n\t},\n\n\t_appendTo: function() {\n\t\tvar element = this.options.appendTo;\n\n\t\tif ( element ) {\n\t\t\telement = element.jquery || element.nodeType ?\n\t\t\t\t$( element ) :\n\t\t\t\tthis.document.find( element ).eq( 0 );\n\t\t}\n\n\t\tif ( !element || !element[ 0 ] ) {\n\t\t\telement = this.element.closest( \".ui-front, dialog\" );\n\t\t}\n\n\t\tif ( !element.length ) {\n\t\t\telement = this.document[ 0 ].body;\n\t\t}\n\n\t\treturn element;\n\t},\n\n\t_initSource: function() {\n\t\tvar array, url,\n\t\t\tthat = this;\n\t\tif ( $.isArray( this.options.source ) ) {\n\t\t\tarray = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tresponse( $.ui.autocomplete.filter( array, request.term ) );\n\t\t\t};\n\t\t} else if ( typeof this.options.source === \"string\" ) {\n\t\t\turl = this.options.source;\n\t\t\tthis.source = function( request, response ) {\n\t\t\t\tif ( that.xhr ) {\n\t\t\t\t\tthat.xhr.abort();\n\t\t\t\t}\n\t\t\t\tthat.xhr = $.ajax( {\n\t\t\t\t\turl: url,\n\t\t\t\t\tdata: request,\n\t\t\t\t\tdataType: \"json\",\n\t\t\t\t\tsuccess: function( data ) {\n\t\t\t\t\t\tresponse( data );\n\t\t\t\t\t},\n\t\t\t\t\terror: function() {\n\t\t\t\t\t\tresponse( [] );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t};\n\t\t} else {\n\t\t\tthis.source = this.options.source;\n\t\t}\n\t},\n\n\t_searchTimeout: function( event ) {\n\t\tclearTimeout( this.searching );\n\t\tthis.searching = this._delay( function() {\n\n\t\t\t// Search if the value has changed, or if the user retypes the same value (see #7434)\n\t\t\tvar equalValues = this.term === this._value(),\n\t\t\t\tmenuVisible = this.menu.element.is( \":visible\" ),\n\t\t\t\tmodifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n\n\t\t\tif ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {\n\t\t\t\tthis.selectedItem = null;\n\t\t\t\tthis.search( null, event );\n\t\t\t}\n\t\t}, this.options.delay );\n\t},\n\n\tsearch: function( value, event ) {\n\t\tvalue = value != null ? value : this._value();\n\n\t\t// Always save the actual value, not the one passed as an argument\n\t\tthis.term = this._value();\n\n\t\tif ( value.length < this.options.minLength ) {\n\t\t\treturn this.close( event );\n\t\t}\n\n\t\tif ( this._trigger( \"search\", event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this._search( value );\n\t},\n\n\t_search: function( value ) {\n\t\tthis.pending++;\n\t\tthis._addClass( \"ui-autocomplete-loading\" );\n\t\tthis.cancelSearch = false;\n\n\t\tthis.source( { term: value }, this._response() );\n\t},\n\n\t_response: function() {\n\t\tvar index = ++this.requestIndex;\n\n\t\treturn $.proxy( function( content ) {\n\t\t\tif ( index === this.requestIndex ) {\n\t\t\t\tthis.__response( content );\n\t\t\t}\n\n\t\t\tthis.pending--;\n\t\t\tif ( !this.pending ) {\n\t\t\t\tthis._removeClass( \"ui-autocomplete-loading\" );\n\t\t\t}\n\t\t}, this );\n\t},\n\n\t__response: function( content ) {\n\t\tif ( content ) {\n\t\t\tcontent = this._normalize( content );\n\t\t}\n\t\tthis._trigger( \"response\", null, { content: content } );\n\t\tif ( !this.options.disabled && content && content.length && !this.cancelSearch ) {\n\t\t\tthis._suggest( content );\n\t\t\tthis._trigger( \"open\" );\n\t\t} else {\n\n\t\t\t// use ._close() instead of .close() so we don't cancel future searches\n\t\t\tthis._close();\n\t\t}\n\t},\n\n\tclose: function( event ) {\n\t\tthis.cancelSearch = true;\n\t\tthis._close( event );\n\t},\n\n\t_close: function( event ) {\n\n\t\t// Remove the handler that closes the menu on outside clicks\n\t\tthis._off( this.document, \"mousedown\" );\n\n\t\tif ( this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.menu.element.hide();\n\t\t\tthis.menu.blur();\n\t\t\tthis.isNewMenu = true;\n\t\t\tthis._trigger( \"close\", event );\n\t\t}\n\t},\n\n\t_change: function( event ) {\n\t\tif ( this.previous !== this._value() ) {\n\t\t\tthis._trigger( \"change\", event, { item: this.selectedItem } );\n\t\t}\n\t},\n\n\t_normalize: function( items ) {\n\n\t\t// assume all items have the right format when the first item is complete\n\t\tif ( items.length && items[ 0 ].label && items[ 0 ].value ) {\n\t\t\treturn items;\n\t\t}\n\t\treturn $.map( items, function( item ) {\n\t\t\tif ( typeof item === \"string\" ) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item,\n\t\t\t\t\tvalue: item\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn $.extend( {}, item, {\n\t\t\t\tlabel: item.label || item.value,\n\t\t\t\tvalue: item.value || item.label\n\t\t\t} );\n\t\t} );\n\t},\n\n\t_suggest: function( items ) {\n\t\tvar ul = this.menu.element.empty();\n\t\tthis._renderMenu( ul, items );\n\t\tthis.isNewMenu = true;\n\t\tthis.menu.refresh();\n\n\t\t// Size and position menu\n\t\tul.show();\n\t\tthis._resizeMenu();\n\t\tul.position( $.extend( {\n\t\t\tof: this.element\n\t\t}, this.options.position ) );\n\n\t\tif ( this.options.autoFocus ) {\n\t\t\tthis.menu.next();\n\t\t}\n\n\t\t// Listen for interactions outside of the widget (#6642)\n\t\tthis._on( this.document, {\n\t\t\tmousedown: \"_closeOnClickOutside\"\n\t\t} );\n\t},\n\n\t_resizeMenu: function() {\n\t\tvar ul = this.menu.element;\n\t\tul.outerWidth( Math.max(\n\n\t\t\t// Firefox wraps long text (possibly a rounding bug)\n\t\t\t// so we add 1px to avoid the wrapping (#7513)\n\t\t\tul.width( \"\" ).outerWidth() + 1,\n\t\t\tthis.element.outerWidth()\n\t\t) );\n\t},\n\n\t_renderMenu: function( ul, items ) {\n\t\tvar that = this;\n\t\t$.each( items, function( index, item ) {\n\t\t\tthat._renderItemData( ul, item );\n\t\t} );\n\t},\n\n\t_renderItemData: function( ul, item ) {\n\t\treturn this._renderItem( ul, item ).data( \"ui-autocomplete-item\", item );\n\t},\n\n\t_renderItem: function( ul, item ) {\n\t\treturn $( \"<li>\" )\n\t\t\t.append( $( \"<div>\" ).text( item.label ) )\n\t\t\t.appendTo( ul );\n\t},\n\n\t_move: function( direction, event ) {\n\t\tif ( !this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis.search( null, event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.menu.isFirstItem() && /^previous/.test( direction ) ||\n\t\t\t\tthis.menu.isLastItem() && /^next/.test( direction ) ) {\n\n\t\t\tif ( !this.isMultiLine ) {\n\t\t\t\tthis._value( this.term );\n\t\t\t}\n\n\t\t\tthis.menu.blur();\n\t\t\treturn;\n\t\t}\n\t\tthis.menu[ direction ]( event );\n\t},\n\n\twidget: function() {\n\t\treturn this.menu.element;\n\t},\n\n\t_value: function() {\n\t\treturn this.valueMethod.apply( this.element, arguments );\n\t},\n\n\t_keyEvent: function( keyEvent, event ) {\n\t\tif ( !this.isMultiLine || this.menu.element.is( \":visible\" ) ) {\n\t\t\tthis._move( keyEvent, event );\n\n\t\t\t// Prevents moving cursor to beginning/end of the text field in some browsers\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t// Support: Chrome <=50\n\t// We should be able to just use this.element.prop( \"isContentEditable\" )\n\t// but hidden elements always report false in Chrome.\n\t// https://code.google.com/p/chromium/issues/detail?id=313082\n\t_isContentEditable: function( element ) {\n\t\tif ( !element.length ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tvar editable = element.prop( \"contentEditable\" );\n\n\t\tif ( editable === \"inherit\" ) {\n\t\t return this._isContentEditable( element.parent() );\n\t\t}\n\n\t\treturn editable === \"true\";\n\t}\n} );\n\n$.extend( $.ui.autocomplete, {\n\tescapeRegex: function( value ) {\n\t\treturn value.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" );\n\t},\n\tfilter: function( array, term ) {\n\t\tvar matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), \"i\" );\n\t\treturn $.grep( array, function( value ) {\n\t\t\treturn matcher.test( value.label || value.value || value );\n\t\t} );\n\t}\n} );\n\n// Live region extension, adding a `messages` option\n// NOTE: This is an experimental API. We are still investigating\n// a full solution for string manipulation and internationalization.\n$.widget( \"ui.autocomplete\", $.ui.autocomplete, {\n\toptions: {\n\t\tmessages: {\n\t\t\tnoResults: \"No search results.\",\n\t\t\tresults: function( amount ) {\n\t\t\t\treturn amount + ( amount > 1 ? \" results are\" : \" result is\" ) +\n\t\t\t\t\t\" available, use up and down arrow keys to navigate.\";\n\t\t\t}\n\t\t}\n\t},\n\n\t__response: function( content ) {\n\t\tvar message;\n\t\tthis._superApply( arguments );\n\t\tif ( this.options.disabled || this.cancelSearch ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( content && content.length ) {\n\t\t\tmessage = this.options.messages.results( content.length );\n\t\t} else {\n\t\t\tmessage = this.options.messages.noResults;\n\t\t}\n\t\tthis.liveRegion.children().hide();\n\t\t$( \"<div>\" ).text( message ).appendTo( this.liveRegion );\n\t}\n} );\n\nreturn $.ui.autocomplete;\n\n} ) );\n","/*!\n * jQuery UI Menu 1.12.1\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Menu\n//>>group: Widgets\n//>>description: Creates nestable menus.\n//>>docs: http://api.jqueryui.com/menu/\n//>>demos: http://jqueryui.com/menu/\n//>>css.structure: ../../themes/base/core.css\n//>>css.structure: ../../themes/base/menu.css\n//>>css.theme: ../../themes/base/theme.css\n\n( function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../keycode\",\n\t\t\t\"../position\",\n\t\t\t\"../safe-active-element\",\n\t\t\t\"../unique-id\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n}( function( $ ) {\n\nreturn $.widget( \"ui.menu\", {\n\tversion: \"1.12.1\",\n\tdefaultElement: \"<ul>\",\n\tdelay: 300,\n\toptions: {\n\t\ticons: {\n\t\t\tsubmenu: \"ui-icon-caret-1-e\"\n\t\t},\n\t\titems: \"> *\",\n\t\tmenus: \"ul\",\n\t\tposition: {\n\t\t\tmy: \"left top\",\n\t\t\tat: \"right top\"\n\t\t},\n\t\trole: \"menu\",\n\n\t\t// Callbacks\n\t\tblur: null,\n\t\tfocus: null,\n\t\tselect: null\n\t},\n\n\t_create: function() {\n\t\tthis.activeMenu = this.element;\n\n\t\t// Flag used to prevent firing of the click handler\n\t\t// as the event bubbles up through nested menus\n\t\tthis.mouseHandled = false;\n\t\tthis.element\n\t\t\t.uniqueId()\n\t\t\t.attr( {\n\t\t\t\trole: this.options.role,\n\t\t\t\ttabIndex: 0\n\t\t\t} );\n\n\t\tthis._addClass( \"ui-menu\", \"ui-widget ui-widget-content\" );\n\t\tthis._on( {\n\n\t\t\t// Prevent focus from sticking to links inside menu after clicking\n\t\t\t// them (focus should always stay on UL during navigation).\n\t\t\t\"mousedown .ui-menu-item\": function( event ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t},\n\t\t\t\"click .ui-menu-item\": function( event ) {\n\t\t\t\tvar target = $( event.target );\n\t\t\t\tvar active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );\n\t\t\t\tif ( !this.mouseHandled && target.not( \".ui-state-disabled\" ).length ) {\n\t\t\t\t\tthis.select( event );\n\n\t\t\t\t\t// Only set the mouseHandled flag if the event will bubble, see #9469.\n\t\t\t\t\tif ( !event.isPropagationStopped() ) {\n\t\t\t\t\t\tthis.mouseHandled = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Open submenu on click\n\t\t\t\t\tif ( target.has( \".ui-menu\" ).length ) {\n\t\t\t\t\t\tthis.expand( event );\n\t\t\t\t\t} else if ( !this.element.is( \":focus\" ) &&\n\t\t\t\t\t\t\tactive.closest( \".ui-menu\" ).length ) {\n\n\t\t\t\t\t\t// Redirect focus to the menu\n\t\t\t\t\t\tthis.element.trigger( \"focus\", [ true ] );\n\n\t\t\t\t\t\t// If the active item is on the top level, let it stay active.\n\t\t\t\t\t\t// Otherwise, blur the active item since it is no longer visible.\n\t\t\t\t\t\tif ( this.active && this.active.parents( \".ui-menu\" ).length === 1 ) {\n\t\t\t\t\t\t\tclearTimeout( this.timer );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t\"mouseenter .ui-menu-item\": function( event ) {\n\n\t\t\t\t// Ignore mouse events while typeahead is active, see #10458.\n\t\t\t\t// Prevents focusing the wrong item when typeahead causes a scroll while the mouse\n\t\t\t\t// is over an item in the menu\n\t\t\t\tif ( this.previousFilter ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar actualTarget = $( event.target ).closest( \".ui-menu-item\" ),\n\t\t\t\t\ttarget = $( event.currentTarget );\n\n\t\t\t\t// Ignore bubbled events on parent items, see #11641\n\t\t\t\tif ( actualTarget[ 0 ] !== target[ 0 ] ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Remove ui-state-active class from siblings of the newly focused menu item\n\t\t\t\t// to avoid a jump caused by adjacent elements both having a class with a border\n\t\t\t\tthis._removeClass( target.siblings().children( \".ui-state-active\" ),\n\t\t\t\t\tnull, \"ui-state-active\" );\n\t\t\t\tthis.focus( event, target );\n\t\t\t},\n\t\t\tmouseleave: \"collapseAll\",\n\t\t\t\"mouseleave .ui-menu\": \"collapseAll\",\n\t\t\tfocus: function( event, keepActiveItem ) {\n\n\t\t\t\t// If there's already an active item, keep it active\n\t\t\t\t// If not, activate the first item\n\t\t\t\tvar item = this.active || this.element.find( this.options.items ).eq( 0 );\n\n\t\t\t\tif ( !keepActiveItem ) {\n\t\t\t\t\tthis.focus( event, item );\n\t\t\t\t}\n\t\t\t},\n\t\t\tblur: function( event ) {\n\t\t\t\tthis._delay( function() {\n\t\t\t\t\tvar notContained = !$.contains(\n\t\t\t\t\t\tthis.element[ 0 ],\n\t\t\t\t\t\t$.ui.safeActiveElement( this.document[ 0 ] )\n\t\t\t\t\t);\n\t\t\t\t\tif ( notContained ) {\n\t\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t},\n\t\t\tkeydown: \"_keydown\"\n\t\t} );\n\n\t\tthis.refresh();\n\n\t\t// Clicks outside of a menu collapse any open menus\n\t\tthis._on( this.document, {\n\t\t\tclick: function( event ) {\n\t\t\t\tif ( this._closeOnDocumentClick( event ) ) {\n\t\t\t\t\tthis.collapseAll( event );\n\t\t\t\t}\n\n\t\t\t\t// Reset the mouseHandled flag\n\t\t\t\tthis.mouseHandled = false;\n\t\t\t}\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tvar items = this.element.find( \".ui-menu-item\" )\n\t\t\t\t.removeAttr( \"role aria-disabled\" ),\n\t\t\tsubmenus = items.children( \".ui-menu-item-wrapper\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.removeAttr( \"tabIndex role aria-haspopup\" );\n\n\t\t// Destroy (sub)menus\n\t\tthis.element\n\t\t\t.removeAttr( \"aria-activedescendant\" )\n\t\t\t.find( \".ui-menu\" ).addBack()\n\t\t\t\t.removeAttr( \"role aria-labelledby aria-expanded aria-hidden aria-disabled \" +\n\t\t\t\t\t\"tabIndex\" )\n\t\t\t\t.removeUniqueId()\n\t\t\t\t.show();\n\n\t\tsubmenus.children().each( function() {\n\t\t\tvar elem = $( this );\n\t\t\tif ( elem.data( \"ui-menu-submenu-caret\" ) ) {\n\t\t\t\telem.remove();\n\t\t\t}\n\t\t} );\n\t},\n\n\t_keydown: function( event ) {\n\t\tvar match, prev, character, skip,\n\t\t\tpreventDefault = true;\n\n\t\tswitch ( event.keyCode ) {\n\t\tcase $.ui.keyCode.PAGE_UP:\n\t\t\tthis.previousPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.PAGE_DOWN:\n\t\t\tthis.nextPage( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.HOME:\n\t\t\tthis._move( \"first\", \"first\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.END:\n\t\t\tthis._move( \"last\", \"last\", event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.UP:\n\t\t\tthis.previous( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.DOWN:\n\t\t\tthis.next( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.LEFT:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.RIGHT:\n\t\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\t\tthis.expand( event );\n\t\t\t}\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ENTER:\n\t\tcase $.ui.keyCode.SPACE:\n\t\t\tthis._activate( event );\n\t\t\tbreak;\n\t\tcase $.ui.keyCode.ESCAPE:\n\t\t\tthis.collapse( event );\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tpreventDefault = false;\n\t\t\tprev = this.previousFilter || \"\";\n\t\t\tskip = false;\n\n\t\t\t// Support number pad values\n\t\t\tcharacter = event.keyCode >= 96 && event.keyCode <= 105 ?\n\t\t\t\t( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );\n\n\t\t\tclearTimeout( this.filterTimer );\n\n\t\t\tif ( character === prev ) {\n\t\t\t\tskip = true;\n\t\t\t} else {\n\t\t\t\tcharacter = prev + character;\n\t\t\t}\n\n\t\t\tmatch = this._filterMenuItems( character );\n\t\t\tmatch = skip && match.index( this.active.next() ) !== -1 ?\n\t\t\t\tthis.active.nextAll( \".ui-menu-item\" ) :\n\t\t\t\tmatch;\n\n\t\t\t// If no matches on the current filter, reset to the last character pressed\n\t\t\t// to move down the menu to the first item that starts with that character\n\t\t\tif ( !match.length ) {\n\t\t\t\tcharacter = String.fromCharCode( event.keyCode );\n\t\t\t\tmatch = this._filterMenuItems( character );\n\t\t\t}\n\n\t\t\tif ( match.length ) {\n\t\t\t\tthis.focus( event, match );\n\t\t\t\tthis.previousFilter = character;\n\t\t\t\tthis.filterTimer = this._delay( function() {\n\t\t\t\t\tdelete this.previousFilter;\n\t\t\t\t}, 1000 );\n\t\t\t} else {\n\t\t\t\tdelete this.previousFilter;\n\t\t\t}\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t},\n\n\t_activate: function( event ) {\n\t\tif ( this.active && !this.active.is( \".ui-state-disabled\" ) ) {\n\t\t\tif ( this.active.children( \"[aria-haspopup='true']\" ).length ) {\n\t\t\t\tthis.expand( event );\n\t\t\t} else {\n\t\t\t\tthis.select( event );\n\t\t\t}\n\t\t}\n\t},\n\n\trefresh: function() {\n\t\tvar menus, items, newSubmenus, newItems, newWrappers,\n\t\t\tthat = this,\n\t\t\ticon = this.options.icons.submenu,\n\t\t\tsubmenus = this.element.find( this.options.menus );\n\n\t\tthis._toggleClass( \"ui-menu-icons\", null, !!this.element.find( \".ui-icon\" ).length );\n\n\t\t// Initialize nested menus\n\t\tnewSubmenus = submenus.filter( \":not(.ui-menu)\" )\n\t\t\t.hide()\n\t\t\t.attr( {\n\t\t\t\trole: this.options.role,\n\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\"aria-expanded\": \"false\"\n\t\t\t} )\n\t\t\t.each( function() {\n\t\t\t\tvar menu = $( this ),\n\t\t\t\t\titem = menu.prev(),\n\t\t\t\t\tsubmenuCaret = $( \"<span>\" ).data( \"ui-menu-submenu-caret\", true );\n\n\t\t\t\tthat._addClass( submenuCaret, \"ui-menu-icon\", \"ui-icon \" + icon );\n\t\t\t\titem\n\t\t\t\t\t.attr( \"aria-haspopup\", \"true\" )\n\t\t\t\t\t.prepend( submenuCaret );\n\t\t\t\tmenu.attr( \"aria-labelledby\", item.attr( \"id\" ) );\n\t\t\t} );\n\n\t\tthis._addClass( newSubmenus, \"ui-menu\", \"ui-widget ui-widget-content ui-front\" );\n\n\t\tmenus = submenus.add( this.element );\n\t\titems = menus.find( this.options.items );\n\n\t\t// Initialize menu-items containing spaces and/or dashes only as dividers\n\t\titems.not( \".ui-menu-item\" ).each( function() {\n\t\t\tvar item = $( this );\n\t\t\tif ( that._isDivider( item ) ) {\n\t\t\t\tthat._addClass( item, \"ui-menu-divider\", \"ui-widget-content\" );\n\t\t\t}\n\t\t} );\n\n\t\t// Don't refresh list items that are already adapted\n\t\tnewItems = items.not( \".ui-menu-item, .ui-menu-divider\" );\n\t\tnewWrappers = newItems.children()\n\t\t\t.not( \".ui-menu\" )\n\t\t\t\t.uniqueId()\n\t\t\t\t.attr( {\n\t\t\t\t\ttabIndex: -1,\n\t\t\t\t\trole: this._itemRole()\n\t\t\t\t} );\n\t\tthis._addClass( newItems, \"ui-menu-item\" )\n\t\t\t._addClass( newWrappers, \"ui-menu-item-wrapper\" );\n\n\t\t// Add aria-disabled attribute to any disabled menu item\n\t\titems.filter( \".ui-state-disabled\" ).attr( \"aria-disabled\", \"true\" );\n\n\t\t// If the active item has been removed, blur the menu\n\t\tif ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {\n\t\t\tthis.blur();\n\t\t}\n\t},\n\n\t_itemRole: function() {\n\t\treturn {\n\t\t\tmenu: \"menuitem\",\n\t\t\tlistbox: \"option\"\n\t\t}[ this.options.role ];\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"icons\" ) {\n\t\t\tvar icons = this.element.find( \".ui-menu-icon\" );\n\t\t\tthis._removeClass( icons, null, this.options.icons.submenu )\n\t\t\t\t._addClass( icons, null, value.submenu );\n\t\t}\n\t\tthis._super( key, value );\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._super( value );\n\n\t\tthis.element.attr( \"aria-disabled\", String( value ) );\n\t\tthis._toggleClass( null, \"ui-state-disabled\", !!value );\n\t},\n\n\tfocus: function( event, item ) {\n\t\tvar nested, focused, activeParent;\n\t\tthis.blur( event, event && event.type === \"focus\" );\n\n\t\tthis._scrollIntoView( item );\n\n\t\tthis.active = item.first();\n\n\t\tfocused = this.active.children( \".ui-menu-item-wrapper\" );\n\t\tthis._addClass( focused, null, \"ui-state-active\" );\n\n\t\t// Only update aria-activedescendant if there's a role\n\t\t// otherwise we assume focus is managed elsewhere\n\t\tif ( this.options.role ) {\n\t\t\tthis.element.attr( \"aria-activedescendant\", focused.attr( \"id\" ) );\n\t\t}\n\n\t\t// Highlight active parent menu item, if any\n\t\tactiveParent = this.active\n\t\t\t.parent()\n\t\t\t\t.closest( \".ui-menu-item\" )\n\t\t\t\t\t.children( \".ui-menu-item-wrapper\" );\n\t\tthis._addClass( activeParent, null, \"ui-state-active\" );\n\n\t\tif ( event && event.type === \"keydown\" ) {\n\t\t\tthis._close();\n\t\t} else {\n\t\t\tthis.timer = this._delay( function() {\n\t\t\t\tthis._close();\n\t\t\t}, this.delay );\n\t\t}\n\n\t\tnested = item.children( \".ui-menu\" );\n\t\tif ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {\n\t\t\tthis._startOpening( nested );\n\t\t}\n\t\tthis.activeMenu = item.parent();\n\n\t\tthis._trigger( \"focus\", event, { item: item } );\n\t},\n\n\t_scrollIntoView: function( item ) {\n\t\tvar borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;\n\t\tif ( this._hasScroll() ) {\n\t\t\tborderTop = parseFloat( $.css( this.activeMenu[ 0 ], \"borderTopWidth\" ) ) || 0;\n\t\t\tpaddingTop = parseFloat( $.css( this.activeMenu[ 0 ], \"paddingTop\" ) ) || 0;\n\t\t\toffset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;\n\t\t\tscroll = this.activeMenu.scrollTop();\n\t\t\telementHeight = this.activeMenu.height();\n\t\t\titemHeight = item.outerHeight();\n\n\t\t\tif ( offset < 0 ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset );\n\t\t\t} else if ( offset + itemHeight > elementHeight ) {\n\t\t\t\tthis.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );\n\t\t\t}\n\t\t}\n\t},\n\n\tblur: function( event, fromFocus ) {\n\t\tif ( !fromFocus ) {\n\t\t\tclearTimeout( this.timer );\n\t\t}\n\n\t\tif ( !this.active ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._removeClass( this.active.children( \".ui-menu-item-wrapper\" ),\n\t\t\tnull, \"ui-state-active\" );\n\n\t\tthis._trigger( \"blur\", event, { item: this.active } );\n\t\tthis.active = null;\n\t},\n\n\t_startOpening: function( submenu ) {\n\t\tclearTimeout( this.timer );\n\n\t\t// Don't open if already open fixes a Firefox bug that caused a .5 pixel\n\t\t// shift in the submenu position when mousing over the caret icon\n\t\tif ( submenu.attr( \"aria-hidden\" ) !== \"true\" ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.timer = this._delay( function() {\n\t\t\tthis._close();\n\t\t\tthis._open( submenu );\n\t\t}, this.delay );\n\t},\n\n\t_open: function( submenu ) {\n\t\tvar position = $.extend( {\n\t\t\tof: this.active\n\t\t}, this.options.position );\n\n\t\tclearTimeout( this.timer );\n\t\tthis.element.find( \".ui-menu\" ).not( submenu.parents( \".ui-menu\" ) )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" );\n\n\t\tsubmenu\n\t\t\t.show()\n\t\t\t.removeAttr( \"aria-hidden\" )\n\t\t\t.attr( \"aria-expanded\", \"true\" )\n\t\t\t.position( position );\n\t},\n\n\tcollapseAll: function( event, all ) {\n\t\tclearTimeout( this.timer );\n\t\tthis.timer = this._delay( function() {\n\n\t\t\t// If we were passed an event, look for the submenu that contains the event\n\t\t\tvar currentMenu = all ? this.element :\n\t\t\t\t$( event && event.target ).closest( this.element.find( \".ui-menu\" ) );\n\n\t\t\t// If we found no valid submenu ancestor, use the main menu to close all\n\t\t\t// sub menus anyway\n\t\t\tif ( !currentMenu.length ) {\n\t\t\t\tcurrentMenu = this.element;\n\t\t\t}\n\n\t\t\tthis._close( currentMenu );\n\n\t\t\tthis.blur( event );\n\n\t\t\t// Work around active item staying active after menu is blurred\n\t\t\tthis._removeClass( currentMenu.find( \".ui-state-active\" ), null, \"ui-state-active\" );\n\n\t\t\tthis.activeMenu = currentMenu;\n\t\t}, this.delay );\n\t},\n\n\t// With no arguments, closes the currently active menu - if nothing is active\n\t// it closes all menus. If passed an argument, it will search for menus BELOW\n\t_close: function( startMenu ) {\n\t\tif ( !startMenu ) {\n\t\t\tstartMenu = this.active ? this.active.parent() : this.element;\n\t\t}\n\n\t\tstartMenu.find( \".ui-menu\" )\n\t\t\t.hide()\n\t\t\t.attr( \"aria-hidden\", \"true\" )\n\t\t\t.attr( \"aria-expanded\", \"false\" );\n\t},\n\n\t_closeOnDocumentClick: function( event ) {\n\t\treturn !$( event.target ).closest( \".ui-menu\" ).length;\n\t},\n\n\t_isDivider: function( item ) {\n\n\t\t// Match hyphen, em dash, en dash\n\t\treturn !/[^\\-\\u2014\\u2013\\s]/.test( item.text() );\n\t},\n\n\tcollapse: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active.parent().closest( \".ui-menu-item\", this.element );\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._close();\n\t\t\tthis.focus( event, newItem );\n\t\t}\n\t},\n\n\texpand: function( event ) {\n\t\tvar newItem = this.active &&\n\t\t\tthis.active\n\t\t\t\t.children( \".ui-menu \" )\n\t\t\t\t\t.find( this.options.items )\n\t\t\t\t\t\t.first();\n\n\t\tif ( newItem && newItem.length ) {\n\t\t\tthis._open( newItem.parent() );\n\n\t\t\t// Delay so Firefox will not hide activedescendant change in expanding submenu from AT\n\t\t\tthis._delay( function() {\n\t\t\t\tthis.focus( event, newItem );\n\t\t\t} );\n\t\t}\n\t},\n\n\tnext: function( event ) {\n\t\tthis._move( \"next\", \"first\", event );\n\t},\n\n\tprevious: function( event ) {\n\t\tthis._move( \"prev\", \"last\", event );\n\t},\n\n\tisFirstItem: function() {\n\t\treturn this.active && !this.active.prevAll( \".ui-menu-item\" ).length;\n\t},\n\n\tisLastItem: function() {\n\t\treturn this.active && !this.active.nextAll( \".ui-menu-item\" ).length;\n\t},\n\n\t_move: function( direction, filter, event ) {\n\t\tvar next;\n\t\tif ( this.active ) {\n\t\t\tif ( direction === \"first\" || direction === \"last\" ) {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction === \"first\" ? \"prevAll\" : \"nextAll\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( -1 );\n\t\t\t} else {\n\t\t\t\tnext = this.active\n\t\t\t\t\t[ direction + \"All\" ]( \".ui-menu-item\" )\n\t\t\t\t\t.eq( 0 );\n\t\t\t}\n\t\t}\n\t\tif ( !next || !next.length || !this.active ) {\n\t\t\tnext = this.activeMenu.find( this.options.items )[ filter ]();\n\t\t}\n\n\t\tthis.focus( event, next );\n\t},\n\n\tnextPage: function( event ) {\n\t\tvar item, base, height;\n\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isLastItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.nextAll( \".ui-menu-item\" ).each( function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base - height < 0;\n\t\t\t} );\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items )\n\t\t\t\t[ !this.active ? \"first\" : \"last\" ]() );\n\t\t}\n\t},\n\n\tpreviousPage: function( event ) {\n\t\tvar item, base, height;\n\t\tif ( !this.active ) {\n\t\t\tthis.next( event );\n\t\t\treturn;\n\t\t}\n\t\tif ( this.isFirstItem() ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( this._hasScroll() ) {\n\t\t\tbase = this.active.offset().top;\n\t\t\theight = this.element.height();\n\t\t\tthis.active.prevAll( \".ui-menu-item\" ).each( function() {\n\t\t\t\titem = $( this );\n\t\t\t\treturn item.offset().top - base + height > 0;\n\t\t\t} );\n\n\t\t\tthis.focus( event, item );\n\t\t} else {\n\t\t\tthis.focus( event, this.activeMenu.find( this.options.items ).first() );\n\t\t}\n\t},\n\n\t_hasScroll: function() {\n\t\treturn this.element.outerHeight() < this.element.prop( \"scrollHeight\" );\n\t},\n\n\tselect: function( event ) {\n\n\t\t// TODO: It should never be possible to not have an active item at this\n\t\t// point, but the tests don't trigger mouseenter before click.\n\t\tthis.active = this.active || $( event.target ).closest( \".ui-menu-item\" );\n\t\tvar ui = { item: this.active };\n\t\tif ( !this.active.has( \".ui-menu\" ).length ) {\n\t\t\tthis.collapseAll( event, true );\n\t\t}\n\t\tthis._trigger( \"select\", event, ui );\n\t},\n\n\t_filterMenuItems: function( character ) {\n\t\tvar escapedCharacter = character.replace( /[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, \"\\\\$&\" ),\n\t\t\tregex = new RegExp( \"^\" + escapedCharacter, \"i\" );\n\n\t\treturn this.activeMenu\n\t\t\t.find( this.options.items )\n\n\t\t\t\t// Only match on items, not dividers or other content (#10571)\n\t\t\t\t.filter( \".ui-menu-item\" )\n\t\t\t\t\t.filter( function() {\n\t\t\t\t\t\treturn regex.test(\n\t\t\t\t\t\t\t$.trim( $( this ).children( \".ui-menu-item-wrapper\" ).text() ) );\n\t\t\t\t\t} );\n\t}\n} );\n\n} ) );\n"],"names":["$","ui","keyCode","BACKSPACE","COMMA","DELETE","DOWN","END","ENTER","ESCAPE","HOME","LEFT","PAGE_DOWN","PAGE_UP","PERIOD","RIGHT","SPACE","TAB","UP","cachedScrollbarWidth","max","Math","abs","rhorizontal","rvertical","roffset","rposition","rpercent","_position","fn","position","getOffsets","offsets","width","height","parseFloat","test","parseCss","element","property","parseInt","css","getDimensions","elem","raw","nodeType","offset","top","left","isWindow","scrollTop","scrollLeft","preventDefault","pageY","pageX","outerWidth","outerHeight","scrollbarWidth","undefined","w1","w2","div","innerDiv","children","append","offsetWidth","clientWidth","remove","getScrollInfo","within","overflowX","isDocument","overflowY","hasOverflowX","scrollWidth","scrollHeight","getWithinInfo","withinElement","window","options","of","apply","this","arguments","extend","atOffset","targetWidth","targetHeight","targetOffset","basePosition","dimensions","target","scrollInfo","collision","split","at","each","horizontalOffset","verticalOffset","pos","length","concat","exec","collisionPosition","using","elemWidth","elemHeight","marginLeft","marginTop","collisionWidth","collisionHeight","myOffset","my","i","dir","props","right","bottom","feedback","horizontal","vertical","important","call","fit","data","newOverRight","withinOffset","collisionPosLeft","overLeft","overRight","newOverBottom","collisionPosTop","overTop","overBottom","flip","newOverLeft","offsetLeft","newOverTop","offsetTop","flipfit","safeActiveElement","document","activeElement","error","body","nodeName","uniqueId","uuid","id","removeUniqueId","removeAttr","version","orig","widgetUuid","widgetSlice","Array","prototype","slice","cleanData","elems","events","_data","triggerHandler","e","widget","name","base","existingConstructor","constructor","basePrototype","proxiedPrototype","namespace","fullName","Widget","isArray","expr","toLowerCase","_createWidget","_proto","_childConstructors","prop","value","isFunction","_super","_superApply","args","returnValue","__super","__superApply","widgetEventPrefix","widgetName","widgetFullName","child","childPrototype","push","bridge","key","input","inputIndex","inputLength","hasOwnProperty","isPlainObject","object","isMethodCall","methodValue","instance","charAt","jquery","pushStack","get","option","_init","defaultElement","classes","disabled","create","eventNamespace","bindings","hoverable","focusable","classesElementLookup","_on","event","destroy","style","ownerDocument","defaultView","parentWindow","_getCreateOptions","_create","_setOptionDisabled","_trigger","_getCreateEventData","noop","that","_destroy","_removeClass","off","removeData","parts","curOption","shift","pop","_setOptions","_setOption","_setOptionClasses","classKey","elements","currentElements","addClass","_classes","keys","add","_toggleClass","enable","disable","full","processClassString","checkOption","current","unique","not","match","extra","join","_untrackClassesElement","inArray","_addClass","toggleClass","suppressDisabledCheck","handlers","delegateElement","handler","handlerProxy","hasClass","guid","eventName","selector","on","_off","_delay","delay","setTimeout","_hoverable","mouseenter","currentTarget","mouseleave","_focusable","focusin","focusout","type","callback","Event","originalEvent","trigger","isDefaultPrevented","show","hide","method","defaultEffect","hasOptions","effect","effectName","duration","isEmptyObject","complete","effects","easing","queue","next","appendTo","autoFocus","minLength","source","change","close","focus","open","response","search","select","requestIndex","pending","suppressKeyPress","suppressKeyPressRepeat","suppressInput","isTextarea","isInput","isMultiLine","_isContentEditable","valueMethod","isNewMenu","attr","keydown","_move","_keyEvent","menu","active","is","_value","term","_searchTimeout","keypress","selectedItem","previous","blur","cancelBlur","clearTimeout","searching","_change","_initSource","_appendTo","role","mousedown","menufocus","label","item","one","trim","liveRegion","text","menuselect","beforeunload","xhr","abort","_isEventTargetInWidget","menuElement","contains","_closeOnClickOutside","find","eq","closest","array","url","request","autocomplete","filter","ajax","dataType","success","equalValues","menuVisible","modifierKey","altKey","ctrlKey","metaKey","shiftKey","_search","cancelSearch","_response","index","proxy","content","__response","_normalize","_suggest","_close","items","map","ul","empty","_renderMenu","refresh","_resizeMenu","_renderItemData","_renderItem","direction","isFirstItem","isLastItem","keyEvent","editable","parent","escapeRegex","replace","matcher","RegExp","grep","messages","noResults","results","amount","message","icons","submenu","menus","activeMenu","mouseHandled","tabIndex","isPropagationStopped","has","expand","parents","timer","previousFilter","actualTarget","siblings","keepActiveItem","collapseAll","click","_closeOnDocumentClick","submenus","addBack","_keydown","prev","character","skip","previousPage","nextPage","collapse","_activate","toString","String","fromCharCode","filterTimer","_filterMenuItems","nextAll","newSubmenus","newItems","newWrappers","icon","submenuCaret","prepend","_isDivider","_itemRole","listbox","nested","focused","activeParent","_scrollIntoView","first","_startOpening","borderTop","paddingTop","scroll","elementHeight","itemHeight","_hasScroll","fromFocus","_open","all","currentMenu","startMenu","newItem","prevAll","escapedCharacter","regex"],"sourceRoot":""}