{"version":3,"sources":["webpack:///./LifeDirect.Web/scripts/src/utility/getkeycode.ts","webpack:///./LifeDirect.Web/scripts/jquery-3.3.1.js","webpack:///./LifeDirect.Web/scripts/src/objects/siteheader.ts","webpack:///./LifeDirect.Web/scripts/src/objects/sitefooter.ts","webpack:///external \"jQuery\"","webpack:///./LifeDirect.Web/scripts/src/old-js-dependancies/oldlightwindowutility.js","webpack:///./LifeDirect.Web/scripts/src/pages/checkup.ts","webpack:///./LifeDirect.Web/scripts/src/objects/lightwindowhelper.ts","webpack:///./LifeDirect.Web/scripts/src/objects/occupationsuggestor.ts"],"names":["getkeycode","e","window","event","keyCode","which","global","factory","module","exports","document","w","Error","this","noGlobal","arr","getProto","Object","getPrototypeOf","slice","concat","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","call","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","type","src","noModule","DOMEval","code","doc","node","i","script","createElement","text","head","appendChild","parentNode","removeChild","toType","jQuery","selector","context","fn","init","rtrim","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","apply","arguments","first","eq","last","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","trim","makeArray","results","inArray","second","grep","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","sortOrder","a","b","pop","push_native","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rcomma","rcombinators","rattributeQuotes","rpseudo","ridentifier","matchExpr","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","_","escaped","escapedWhitespace","high","String","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","disabledAncestor","addCombinator","disabled","dir","next","childNodes","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","nodeName","getAttribute","setAttribute","toSelector","join","testContext","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","documentElement","hasCompare","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","innerHTML","input","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","val","specified","escape","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","simple","forward","ofType","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","matched","matcher","unmatched","innerText","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selected","selectedIndex","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","filters","parseOnly","soFar","preFilters","cached","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","token","compiled","defaultValue","unique","isXMLDoc","escapeSelector","until","truncate","is","siblings","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","not","self","rootjQuery","root","parseHTML","ready","rparentsprev","guaranteedUnique","children","contents","prev","sibling","has","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","remove","empty","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","console","warn","message","readyException","readyList","completed","removeEventListener","catch","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","rmsPrefix","rdashAlpha","fcamelCase","all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","getData","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isHiddenWithinTree","style","display","css","swap","old","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","show","values","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","optgroup","tbody","tfoot","colgroup","caption","th","div","rhtml","buildFragment","scripts","selection","ignored","wrap","fragment","createDocumentFragment","nodes","htmlPrefilter","createTextNode","checkClone","cloneNode","noCloneChecked","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","safeActiveElement","err","on","types","one","origFn","off","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","namespace","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","focus","trigger","blur","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","stopImmediatePropagation","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rxhtmlTag","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","pdataCur","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","rboxStyle","curCSS","computed","width","minWidth","maxWidth","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","parseFloat","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","cssPrefixes","emptyStyle","finalPropName","cssProps","capName","vendorPropName","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","Tween","easing","cssHooks","opacity","origName","isCustomProp","setProperty","isFinite","getClientRects","getBoundingClientRect","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","height","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","bind","complete","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","to","animate","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","parseInt","addClass","classes","curValue","clazz","finalValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","isTrigger","parentWindow","simulate","triggerHandler","attaches","nonce","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","hover","fnOver","fnOut","unbind","delegate","undelegate","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","_jQuery","_$","$","noConflict","contactBtn","querySelector","hideAccountMenu","forced","accountMenuEl","footerSecurityBtn","footerLegalBtn","htmloverflow","bodyoverflow","htmlscrolltop","cvr_mousedowntarget","require","numberlwindows","resizelw","$lw","scroll","outerHeight","topval","lightwindowKeyControls","closePopUp","createPopUpCover","$cvr","closePopUpAll","mousedown","elemid","nofurtheraction","$nxtlw","scrolltop","hasPopUp","lightwindowpreloader","resize","createPopUp","showPopUp","keeplwposition","currentQuestionClassName","questionContainer","currentQuestionClassIdentifier","localStorageKey","firstQuestionsId","signInQuestionId","currencyInputsSelector","currentQuestionIndex","questionData","showQuestion","questionEl","updateFirstName","$elem","trySaveQuestionData","isValid","questionElem","checkValidity","isDataValidForQuestion","nextStepEl","toggleQuestionDataValid","answer","localStorage","setItem","stringify","followUps","forEach","invalidateQuestionAndChildQuestions","questionId","$el","answers","followUpEl","followUpQuestionIdsCsv","followUpQuestionEl","updateQuestionIndexes","nextQuestion","currentQuestionEl","nextQuestionId","currentQuestionId","isSignInWithTradeMe","getItem","res","textStatus","resultsUrl","resultGuid","getResults","goToQuestion","updateProgress","maxQuestions","currentCategoryId","$currentStep","currentProgressFillWidth","newProgress","toFixed","newProgressFillWidth","circleWidth","outerWidth","isComplete","questionsSoFar","questionsInCategory","progressInCategory","$curStep","$nextStep","currentSectionProgressWidth","currentStepPadding","stateUrl","origin","history","replaceState","enabledQuestions","clientFirstName","elHasValue","amount","monthlyAmount","urlPath","questionIndex","pathname","substring","lastIndexOf","questionIdFromQuestionIndex","lightWindowManager","LightWindow","parentLightWindow","validLightWindows","preloaderMarkup","lwContainerTemplate","alertTemplate","title","footer","alertwindow","parentElement","cover","childLightWindow","openedLightWindows","currentLightWindow","coverNumber","fadeLength","preloaderElement","cacheEl","shouldCache","lastFocus","scrollbarWidth","isFixedElementFixApplied","Image","verticallyCenter","lw","getTopLightWindow","closebtn","lwToSubmit","getTopCover","$lwel","lwenterkey","openEl","filePath","defaults","isUndismissable","addChildLightWindow","close","lightWindowId","lightWindowUrl","urlOverride","initfunction","callbackonclose","fetchLightWindow","showCover","trackPopUpEventInGTM","showAlert","$lwContainer","dataLayer","LightWindowUrl","fixedElementFix","isApplyFix","element","originalMarginLeft","lwtype","$body","oldBodyWidth","bodyScrollTop","lastMouseDownEl","myCover","lwclassnames","$cover","$lwFocusEl","innerHeight","offsetTop","topPosition","topcover","toplw","closeTopLightWindow","shouldremove","onComplete","hideLightWindow","bodyTop","coverstoremove","curlw","$childlw","log","hideChildren","hideChildrenItem","hideChildrenLightWindows","isValidLightWindow","addValidLightWindows","item","classnames","alertlw","getTime","occupation_keyup","$nextactive","$curractive","client","occupation_fill","occupation_search","occupation_focus","$occupation_searchcb","occupation_isscrollenabled","occupation_setscrollenabled","wrapper","htmlTemplate","occupation","occupation_setmaxheight","windowheight","maxh","occupation_init","wrapperviewporttop","ypos","lwoccupationtype_show","tocompare","panel","lwoccupationtype_init","selectedclass","alert"],"mappings":"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","file":"checkup.08a1d01f20c0f1458a5b.js","sourcesContent":["export default function getkeycode(e) {\n\te = e || window.event;\n\treturn e.keyCode || e.which;\n}","/*!\r\n * jQuery JavaScript Library v3.3.1\r\n * https://jquery.com/\r\n *\r\n * Includes Sizzle.js\r\n * https://sizzlejs.com/\r\n *\r\n * Copyright JS Foundation and other contributors\r\n * Released under the MIT license\r\n * https://jquery.org/license\r\n *\r\n * Date: 2018-01-20T17:24Z\r\n */\r\n( function( global, factory ) {\r\n\r\n\t\"use strict\";\r\n\r\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\r\n\r\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\r\n\t\t// is present, execute the factory and get jQuery.\r\n\t\t// For environments that do not have a `window` with a `document`\r\n\t\t// (such as Node.js), expose a factory as module.exports.\r\n\t\t// This accentuates the need for the creation of a real `window`.\r\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\r\n\t\t// See ticket #14549 for more info.\r\n\t\tmodule.exports = global.document ?\r\n\t\t\tfactory( global, true ) :\r\n\t\t\tfunction( w ) {\r\n\t\t\t\tif ( !w.document ) {\r\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\r\n\t\t\t\t}\r\n\t\t\t\treturn factory( w );\r\n\t\t\t};\r\n\t} else {\r\n\t\tfactory( global );\r\n\t}\r\n\r\n// Pass this if window is not defined yet\r\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\r\n\r\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\r\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\r\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\r\n// enough that all such attempts are guarded in a try block.\r\n\"use strict\";\r\n\r\nvar arr = [];\r\n\r\nvar document = window.document;\r\n\r\nvar getProto = Object.getPrototypeOf;\r\n\r\nvar slice = arr.slice;\r\n\r\nvar concat = arr.concat;\r\n\r\nvar push = arr.push;\r\n\r\nvar indexOf = arr.indexOf;\r\n\r\nvar class2type = {};\r\n\r\nvar toString = class2type.toString;\r\n\r\nvar hasOwn = class2type.hasOwnProperty;\r\n\r\nvar fnToString = hasOwn.toString;\r\n\r\nvar ObjectFunctionString = fnToString.call( Object );\r\n\r\nvar support = {};\r\n\r\nvar isFunction = function isFunction( obj ) {\r\n\r\n // Support: Chrome <=57, Firefox <=52\r\n // In some browsers, typeof returns \"function\" for HTML elements\r\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\r\n // We don't want to classify *any* DOM node as a function.\r\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\r\n };\r\n\r\n\r\nvar isWindow = function isWindow( obj ) {\r\n\t\treturn obj != null && obj === obj.window;\r\n\t};\r\n\r\n\r\n\r\n\r\n\tvar preservedScriptAttributes = {\r\n\t\ttype: true,\r\n\t\tsrc: true,\r\n\t\tnoModule: true\r\n\t};\r\n\r\n\tfunction DOMEval( code, doc, node ) {\r\n\t\tdoc = doc || document;\r\n\r\n\t\tvar i,\r\n\t\t\tscript = doc.createElement( \"script\" );\r\n\r\n\t\tscript.text = code;\r\n\t\tif ( node ) {\r\n\t\t\tfor ( i in preservedScriptAttributes ) {\r\n\t\t\t\tif ( node[ i ] ) {\r\n\t\t\t\t\tscript[ i ] = node[ i ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\r\n\t}\r\n\r\n\r\nfunction toType( obj ) {\r\n\tif ( obj == null ) {\r\n\t\treturn obj + \"\";\r\n\t}\r\n\r\n\t// Support: Android <=2.3 only (functionish RegExp)\r\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\r\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\r\n\t\ttypeof obj;\r\n}\r\n/* global Symbol */\r\n// Defining this global in .eslintrc.json would create a danger of using the global\r\n// unguarded in another place, it seems safer to define global only for this module\r\n\r\n\r\n\r\nvar\r\n\tversion = \"3.3.1\",\r\n\r\n\t// Define a local copy of jQuery\r\n\tjQuery = function( selector, context ) {\r\n\r\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\r\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\r\n\t\treturn new jQuery.fn.init( selector, context );\r\n\t},\r\n\r\n\t// Support: Android <=4.0 only\r\n\t// Make sure we trim BOM and NBSP\r\n\trtrim = /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g;\r\n\r\njQuery.fn = jQuery.prototype = {\r\n\r\n\t// The current version of jQuery being used\r\n\tjquery: version,\r\n\r\n\tconstructor: jQuery,\r\n\r\n\t// The default length of a jQuery object is 0\r\n\tlength: 0,\r\n\r\n\ttoArray: function() {\r\n\t\treturn slice.call( this );\r\n\t},\r\n\r\n\t// Get the Nth element in the matched element set OR\r\n\t// Get the whole matched element set as a clean array\r\n\tget: function( num ) {\r\n\r\n\t\t// Return all the elements in a clean array\r\n\t\tif ( num == null ) {\r\n\t\t\treturn slice.call( this );\r\n\t\t}\r\n\r\n\t\t// Return just the one element from the set\r\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\r\n\t},\r\n\r\n\t// Take an array of elements and push it onto the stack\r\n\t// (returning the new matched element set)\r\n\tpushStack: function( elems ) {\r\n\r\n\t\t// Build a new jQuery matched element set\r\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\r\n\r\n\t\t// Add the old object onto the stack (as a reference)\r\n\t\tret.prevObject = this;\r\n\r\n\t\t// Return the newly-formed element set\r\n\t\treturn ret;\r\n\t},\r\n\r\n\t// Execute a callback for every element in the matched set.\r\n\teach: function( callback ) {\r\n\t\treturn jQuery.each( this, callback );\r\n\t},\r\n\r\n\tmap: function( callback ) {\r\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\r\n\t\t\treturn callback.call( elem, i, elem );\r\n\t\t} ) );\r\n\t},\r\n\r\n\tslice: function() {\r\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\r\n\t},\r\n\r\n\tfirst: function() {\r\n\t\treturn this.eq( 0 );\r\n\t},\r\n\r\n\tlast: function() {\r\n\t\treturn this.eq( -1 );\r\n\t},\r\n\r\n\teq: function( i ) {\r\n\t\tvar len = this.length,\r\n\t\t\tj = +i + ( i < 0 ? len : 0 );\r\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\r\n\t},\r\n\r\n\tend: function() {\r\n\t\treturn this.prevObject || this.constructor();\r\n\t},\r\n\r\n\t// For internal use only.\r\n\t// Behaves like an Array's method, not like a jQuery method.\r\n\tpush: push,\r\n\tsort: arr.sort,\r\n\tsplice: arr.splice\r\n};\r\n\r\njQuery.extend = jQuery.fn.extend = function() {\r\n\tvar options, name, src, copy, copyIsArray, clone,\r\n\t\ttarget = arguments[ 0 ] || {},\r\n\t\ti = 1,\r\n\t\tlength = arguments.length,\r\n\t\tdeep = false;\r\n\r\n\t// Handle a deep copy situation\r\n\tif ( typeof target === \"boolean\" ) {\r\n\t\tdeep = target;\r\n\r\n\t\t// Skip the boolean and the target\r\n\t\ttarget = arguments[ i ] || {};\r\n\t\ti++;\r\n\t}\r\n\r\n\t// Handle case when target is a string or something (possible in deep copy)\r\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\r\n\t\ttarget = {};\r\n\t}\r\n\r\n\t// Extend jQuery itself if only one argument is passed\r\n\tif ( i === length ) {\r\n\t\ttarget = this;\r\n\t\ti--;\r\n\t}\r\n\r\n\tfor ( ; i < length; i++ ) {\r\n\r\n\t\t// Only deal with non-null/undefined values\r\n\t\tif ( ( options = arguments[ i ] ) != null ) {\r\n\r\n\t\t\t// Extend the base object\r\n\t\t\tfor ( name in options ) {\r\n\t\t\t\tsrc = target[ name ];\r\n\t\t\t\tcopy = options[ name ];\r\n\r\n\t\t\t\t// Prevent never-ending loop\r\n\t\t\t\tif ( target === copy ) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Recurse if we're merging plain objects or arrays\r\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\r\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\r\n\r\n\t\t\t\t\tif ( copyIsArray ) {\r\n\t\t\t\t\t\tcopyIsArray = false;\r\n\t\t\t\t\t\tclone = src && Array.isArray( src ) ? src : [];\r\n\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tclone = src && jQuery.isPlainObject( src ) ? src : {};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Never move original objects, clone them\r\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\r\n\r\n\t\t\t\t// Don't bring in undefined values\r\n\t\t\t\t} else if ( copy !== undefined ) {\r\n\t\t\t\t\ttarget[ name ] = copy;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the modified object\r\n\treturn target;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Unique for each copy of jQuery on the page\r\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\r\n\r\n\t// Assume jQuery is ready without the ready module\r\n\tisReady: true,\r\n\r\n\terror: function( msg ) {\r\n\t\tthrow new Error( msg );\r\n\t},\r\n\r\n\tnoop: function() {},\r\n\r\n\tisPlainObject: function( obj ) {\r\n\t\tvar proto, Ctor;\r\n\r\n\t\t// Detect obvious negatives\r\n\t\t// Use toString instead of jQuery.type to catch host objects\r\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tproto = getProto( obj );\r\n\r\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\r\n\t\tif ( !proto ) {\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\r\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\r\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\r\n\t},\r\n\r\n\tisEmptyObject: function( obj ) {\r\n\r\n\t\t/* eslint-disable no-unused-vars */\r\n\t\t// See https://github.com/eslint/eslint/issues/6125\r\n\t\tvar name;\r\n\r\n\t\tfor ( name in obj ) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t},\r\n\r\n\t// Evaluates a script in a global context\r\n\tglobalEval: function( code ) {\r\n\t\tDOMEval( code );\r\n\t},\r\n\r\n\teach: function( obj, callback ) {\r\n\t\tvar length, i = 0;\r\n\r\n\t\tif ( isArrayLike( obj ) ) {\r\n\t\t\tlength = obj.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor ( i in obj ) {\r\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn obj;\r\n\t},\r\n\r\n\t// Support: Android <=4.0 only\r\n\ttrim: function( text ) {\r\n\t\treturn text == null ?\r\n\t\t\t\"\" :\r\n\t\t\t( text + \"\" ).replace( rtrim, \"\" );\r\n\t},\r\n\r\n\t// results is for internal usage only\r\n\tmakeArray: function( arr, results ) {\r\n\t\tvar ret = results || [];\r\n\r\n\t\tif ( arr != null ) {\r\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\r\n\t\t\t\tjQuery.merge( ret,\r\n\t\t\t\t\ttypeof arr === \"string\" ?\r\n\t\t\t\t\t[ arr ] : arr\r\n\t\t\t\t);\r\n\t\t\t} else {\r\n\t\t\t\tpush.call( ret, arr );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn ret;\r\n\t},\r\n\r\n\tinArray: function( elem, arr, i ) {\r\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\r\n\t},\r\n\r\n\t// Support: Android <=4.0 only, PhantomJS 1 only\r\n\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\tmerge: function( first, second ) {\r\n\t\tvar len = +second.length,\r\n\t\t\tj = 0,\r\n\t\t\ti = first.length;\r\n\r\n\t\tfor ( ; j < len; j++ ) {\r\n\t\t\tfirst[ i++ ] = second[ j ];\r\n\t\t}\r\n\r\n\t\tfirst.length = i;\r\n\r\n\t\treturn first;\r\n\t},\r\n\r\n\tgrep: function( elems, callback, invert ) {\r\n\t\tvar callbackInverse,\r\n\t\t\tmatches = [],\r\n\t\t\ti = 0,\r\n\t\t\tlength = elems.length,\r\n\t\t\tcallbackExpect = !invert;\r\n\r\n\t\t// Go through the array, only saving the items\r\n\t\t// that pass the validator function\r\n\t\tfor ( ; i < length; i++ ) {\r\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\r\n\t\t\tif ( callbackInverse !== callbackExpect ) {\r\n\t\t\t\tmatches.push( elems[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn matches;\r\n\t},\r\n\r\n\t// arg is for internal usage only\r\n\tmap: function( elems, callback, arg ) {\r\n\t\tvar length, value,\r\n\t\t\ti = 0,\r\n\t\t\tret = [];\r\n\r\n\t\t// Go through the array, translating each of the items to their new values\r\n\t\tif ( isArrayLike( elems ) ) {\r\n\t\t\tlength = elems.length;\r\n\t\t\tfor ( ; i < length; i++ ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Go through every key on the object,\r\n\t\t} else {\r\n\t\t\tfor ( i in elems ) {\r\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\r\n\r\n\t\t\t\tif ( value != null ) {\r\n\t\t\t\t\tret.push( value );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Flatten any nested arrays\r\n\t\treturn concat.apply( [], ret );\r\n\t},\r\n\r\n\t// A global GUID counter for objects\r\n\tguid: 1,\r\n\r\n\t// jQuery.support is not used in Core but other projects attach their\r\n\t// properties to it so it needs to exist.\r\n\tsupport: support\r\n} );\r\n\r\nif ( typeof Symbol === \"function\" ) {\r\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\r\n}\r\n\r\n// Populate the class2type map\r\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\r\nfunction( i, name ) {\r\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\r\n} );\r\n\r\nfunction isArrayLike( obj ) {\r\n\r\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\r\n\t// `in` check used to prevent JIT error (gh-2145)\r\n\t// hasOwn isn't used here due to false negatives\r\n\t// regarding Nodelist length in IE\r\n\tvar length = !!obj && \"length\" in obj && obj.length,\r\n\t\ttype = toType( obj );\r\n\r\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\treturn type === \"array\" || length === 0 ||\r\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\r\n}\r\nvar Sizzle =\r\n/*!\r\n * Sizzle CSS Selector Engine v2.3.3\r\n * https://sizzlejs.com/\r\n *\r\n * Copyright jQuery Foundation and other contributors\r\n * Released under the MIT license\r\n * http://jquery.org/license\r\n *\r\n * Date: 2016-08-08\r\n */\r\n(function( window ) {\r\n\r\nvar i,\r\n\tsupport,\r\n\tExpr,\r\n\tgetText,\r\n\tisXML,\r\n\ttokenize,\r\n\tcompile,\r\n\tselect,\r\n\toutermostContext,\r\n\tsortInput,\r\n\thasDuplicate,\r\n\r\n\t// Local document vars\r\n\tsetDocument,\r\n\tdocument,\r\n\tdocElem,\r\n\tdocumentIsHTML,\r\n\trbuggyQSA,\r\n\trbuggyMatches,\r\n\tmatches,\r\n\tcontains,\r\n\r\n\t// Instance-specific data\r\n\texpando = \"sizzle\" + 1 * new Date(),\r\n\tpreferredDoc = window.document,\r\n\tdirruns = 0,\r\n\tdone = 0,\r\n\tclassCache = createCache(),\r\n\ttokenCache = createCache(),\r\n\tcompilerCache = createCache(),\r\n\tsortOrder = function( a, b ) {\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t}\r\n\t\treturn 0;\r\n\t},\r\n\r\n\t// Instance methods\r\n\thasOwn = ({}).hasOwnProperty,\r\n\tarr = [],\r\n\tpop = arr.pop,\r\n\tpush_native = arr.push,\r\n\tpush = arr.push,\r\n\tslice = arr.slice,\r\n\t// Use a stripped-down indexOf as it's faster than native\r\n\t// https://jsperf.com/thor-indexof-vs-for/5\r\n\tindexOf = function( list, elem ) {\r\n\t\tvar i = 0,\r\n\t\t\tlen = list.length;\r\n\t\tfor ( ; i < len; i++ ) {\r\n\t\t\tif ( list[i] === elem ) {\r\n\t\t\t\treturn i;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn -1;\r\n\t},\r\n\r\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped\",\r\n\r\n\t// Regular expressions\r\n\r\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\r\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\r\n\r\n\t// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier\r\n\tidentifier = \"(?:\\\\\\\\.|[\\\\w-]|[^\\0-\\\\xa0])+\",\r\n\r\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\r\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\r\n\t\t// Operator (capture 2)\r\n\t\t\"*([*^$|!~]?=)\" + whitespace +\r\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\r\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" + whitespace +\r\n\t\t\"*\\\\]\",\r\n\r\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\r\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\r\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\r\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\r\n\t\t// 2. simple (capture 6)\r\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\r\n\t\t// 3. anything else (capture 2)\r\n\t\t\".*\" +\r\n\t\t\")\\\\)|)\",\r\n\r\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\r\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\r\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\", \"g\" ),\r\n\r\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\r\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace + \"*\" ),\r\n\r\n\trattributeQuotes = new RegExp( \"=\" + whitespace + \"*([^\\\\]'\\\"]*?)\" + whitespace + \"*\\\\]\", \"g\" ),\r\n\r\n\trpseudo = new RegExp( pseudos ),\r\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\r\n\r\n\tmatchExpr = {\r\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\r\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\r\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\r\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\r\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\r\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" + whitespace +\r\n\t\t\t\"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" + whitespace +\r\n\t\t\t\"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\r\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\r\n\t\t// For use in libraries implementing .is()\r\n\t\t// We use this for POS matching in `select`\r\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace + \"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" +\r\n\t\t\twhitespace + \"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\r\n\t},\r\n\r\n\trinputs = /^(?:input|select|textarea|button)$/i,\r\n\trheader = /^h\\d$/i,\r\n\r\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\r\n\r\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\r\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\r\n\r\n\trsibling = /[+~]/,\r\n\r\n\t// CSS escapes\r\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\r\n\trunescape = new RegExp( \"\\\\\\\\([\\\\da-f]{1,6}\" + whitespace + \"?|(\" + whitespace + \")|.)\", \"ig\" ),\r\n\tfunescape = function( _, escaped, escapedWhitespace ) {\r\n\t\tvar high = \"0x\" + escaped - 0x10000;\r\n\t\t// NaN means non-codepoint\r\n\t\t// Support: Firefox<24\r\n\t\t// Workaround erroneous numeric interpretation of +\"0x\"\r\n\t\treturn high !== high || escapedWhitespace ?\r\n\t\t\tescaped :\r\n\t\t\thigh < 0 ?\r\n\t\t\t\t// BMP codepoint\r\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\r\n\t\t\t\t// Supplemental Plane codepoint (surrogate pair)\r\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\r\n\t},\r\n\r\n\t// CSS string/identifier serialization\r\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\r\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\r\n\tfcssescape = function( ch, asCodePoint ) {\r\n\t\tif ( asCodePoint ) {\r\n\r\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\r\n\t\t\tif ( ch === \"\\0\" ) {\r\n\t\t\t\treturn \"\\uFFFD\";\r\n\t\t\t}\r\n\r\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\r\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\r\n\t\t}\r\n\r\n\t\t// Other potentially-special ASCII characters get backslash-escaped\r\n\t\treturn \"\\\\\" + ch;\r\n\t},\r\n\r\n\t// Used for iframes\r\n\t// See setDocument()\r\n\t// Removing the function wrapper causes a \"Permission Denied\"\r\n\t// error in IE\r\n\tunloadHandler = function() {\r\n\t\tsetDocument();\r\n\t},\r\n\r\n\tdisabledAncestor = addCombinator(\r\n\t\tfunction( elem ) {\r\n\t\t\treturn elem.disabled === true && (\"form\" in elem || \"label\" in elem);\r\n\t\t},\r\n\t\t{ dir: \"parentNode\", next: \"legend\" }\r\n\t);\r\n\r\n// Optimize for push.apply( _, NodeList )\r\ntry {\r\n\tpush.apply(\r\n\t\t(arr = slice.call( preferredDoc.childNodes )),\r\n\t\tpreferredDoc.childNodes\r\n\t);\r\n\t// Support: Android<4.0\r\n\t// Detect silently failing push.apply\r\n\tarr[ preferredDoc.childNodes.length ].nodeType;\r\n} catch ( e ) {\r\n\tpush = { apply: arr.length ?\r\n\r\n\t\t// Leverage slice if possible\r\n\t\tfunction( target, els ) {\r\n\t\t\tpush_native.apply( target, slice.call(els) );\r\n\t\t} :\r\n\r\n\t\t// Support: IE<9\r\n\t\t// Otherwise append directly\r\n\t\tfunction( target, els ) {\r\n\t\t\tvar j = target.length,\r\n\t\t\t\ti = 0;\r\n\t\t\t// Can't trust NodeList.length\r\n\t\t\twhile ( (target[j++] = els[i++]) ) {}\r\n\t\t\ttarget.length = j - 1;\r\n\t\t}\r\n\t};\r\n}\r\n\r\nfunction Sizzle( selector, context, results, seed ) {\r\n\tvar m, i, elem, nid, match, groups, newSelector,\r\n\t\tnewContext = context && context.ownerDocument,\r\n\r\n\t\t// nodeType defaults to 9, since context defaults to document\r\n\t\tnodeType = context ? context.nodeType : 9;\r\n\r\n\tresults = results || [];\r\n\r\n\t// Return early from calls with invalid selector or context\r\n\tif ( typeof selector !== \"string\" || !selector ||\r\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\r\n\r\n\t\treturn results;\r\n\t}\r\n\r\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\r\n\tif ( !seed ) {\r\n\r\n\t\tif ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {\r\n\t\t\tsetDocument( context );\r\n\t\t}\r\n\t\tcontext = context || document;\r\n\r\n\t\tif ( documentIsHTML ) {\r\n\r\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\r\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\r\n\t\t\tif ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {\r\n\r\n\t\t\t\t// ID selector\r\n\t\t\t\tif ( (m = match[1]) ) {\r\n\r\n\t\t\t\t\t// Document context\r\n\t\t\t\t\tif ( nodeType === 9 ) {\r\n\t\t\t\t\t\tif ( (elem = context.getElementById( m )) ) {\r\n\r\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\t\tif ( elem.id === m ) {\r\n\t\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Element context\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\r\n\t\t\t\t\t\t// TODO: identify versions\r\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\r\n\t\t\t\t\t\tif ( newContext && (elem = newContext.getElementById( m )) &&\r\n\t\t\t\t\t\t\tcontains( context, elem ) &&\r\n\t\t\t\t\t\t\telem.id === m ) {\r\n\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t// Type selector\r\n\t\t\t\t} else if ( match[2] ) {\r\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\r\n\t\t\t\t\treturn results;\r\n\r\n\t\t\t\t// Class selector\r\n\t\t\t\t} else if ( (m = match[3]) && support.getElementsByClassName &&\r\n\t\t\t\t\tcontext.getElementsByClassName ) {\r\n\r\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\r\n\t\t\t\t\treturn results;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Take advantage of querySelectorAll\r\n\t\t\tif ( support.qsa &&\r\n\t\t\t\t!compilerCache[ selector + \" \" ] &&\r\n\t\t\t\t(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {\r\n\r\n\t\t\t\tif ( nodeType !== 1 ) {\r\n\t\t\t\t\tnewContext = context;\r\n\t\t\t\t\tnewSelector = selector;\r\n\r\n\t\t\t\t// qSA looks outside Element context, which is not what we want\r\n\t\t\t\t// Thanks to Andrew Dupont for this workaround technique\r\n\t\t\t\t// Support: IE <=8\r\n\t\t\t\t// Exclude object elements\r\n\t\t\t\t} else if ( context.nodeName.toLowerCase() !== \"object\" ) {\r\n\r\n\t\t\t\t\t// Capture the context ID, setting it first if necessary\r\n\t\t\t\t\tif ( (nid = context.getAttribute( \"id\" )) ) {\r\n\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tcontext.setAttribute( \"id\", (nid = expando) );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prefix every selector in the list\r\n\t\t\t\t\tgroups = tokenize( selector );\r\n\t\t\t\t\ti = groups.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tgroups[i] = \"#\" + nid + \" \" + toSelector( groups[i] );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnewSelector = groups.join( \",\" );\r\n\r\n\t\t\t\t\t// Expand context for sibling selectors\r\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\r\n\t\t\t\t\t\tcontext;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( newSelector ) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tpush.apply( results,\r\n\t\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t} catch ( qsaError ) {\r\n\t\t\t\t\t} finally {\r\n\t\t\t\t\t\tif ( nid === expando ) {\r\n\t\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// All others\r\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\r\n}\r\n\r\n/**\r\n * Create key-value caches of limited size\r\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\r\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\r\n *\tdeleting the oldest entry\r\n */\r\nfunction createCache() {\r\n\tvar keys = [];\r\n\r\n\tfunction cache( key, value ) {\r\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\r\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\r\n\t\t\t// Only keep the most recent entries\r\n\t\t\tdelete cache[ keys.shift() ];\r\n\t\t}\r\n\t\treturn (cache[ key + \" \" ] = value);\r\n\t}\r\n\treturn cache;\r\n}\r\n\r\n/**\r\n * Mark a function for special use by Sizzle\r\n * @param {Function} fn The function to mark\r\n */\r\nfunction markFunction( fn ) {\r\n\tfn[ expando ] = true;\r\n\treturn fn;\r\n}\r\n\r\n/**\r\n * Support testing using an element\r\n * @param {Function} fn Passed the created element and returns a boolean result\r\n */\r\nfunction assert( fn ) {\r\n\tvar el = document.createElement(\"fieldset\");\r\n\r\n\ttry {\r\n\t\treturn !!fn( el );\r\n\t} catch (e) {\r\n\t\treturn false;\r\n\t} finally {\r\n\t\t// Remove from its parent by default\r\n\t\tif ( el.parentNode ) {\r\n\t\t\tel.parentNode.removeChild( el );\r\n\t\t}\r\n\t\t// release memory in IE\r\n\t\tel = null;\r\n\t}\r\n}\r\n\r\n/**\r\n * Adds the same handler for all of the specified attrs\r\n * @param {String} attrs Pipe-separated list of attributes\r\n * @param {Function} handler The method that will be applied\r\n */\r\nfunction addHandle( attrs, handler ) {\r\n\tvar arr = attrs.split(\"|\"),\r\n\t\ti = arr.length;\r\n\r\n\twhile ( i-- ) {\r\n\t\tExpr.attrHandle[ arr[i] ] = handler;\r\n\t}\r\n}\r\n\r\n/**\r\n * Checks document order of two siblings\r\n * @param {Element} a\r\n * @param {Element} b\r\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\r\n */\r\nfunction siblingCheck( a, b ) {\r\n\tvar cur = b && a,\r\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\r\n\t\t\ta.sourceIndex - b.sourceIndex;\r\n\r\n\t// Use IE sourceIndex if available on both nodes\r\n\tif ( diff ) {\r\n\t\treturn diff;\r\n\t}\r\n\r\n\t// Check if b follows a\r\n\tif ( cur ) {\r\n\t\twhile ( (cur = cur.nextSibling) ) {\r\n\t\t\tif ( cur === b ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn a ? 1 : -1;\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for input types\r\n * @param {String} type\r\n */\r\nfunction createInputPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn name === \"input\" && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for buttons\r\n * @param {String} type\r\n */\r\nfunction createButtonPseudo( type ) {\r\n\treturn function( elem ) {\r\n\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\treturn (name === \"input\" || name === \"button\") && elem.type === type;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for :enabled/:disabled\r\n * @param {Boolean} disabled true for :disabled; false for :enabled\r\n */\r\nfunction createDisabledPseudo( disabled ) {\r\n\r\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\r\n\treturn function( elem ) {\r\n\r\n\t\t// Only certain elements can match :enabled or :disabled\r\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\r\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\r\n\t\tif ( \"form\" in elem ) {\r\n\r\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\r\n\t\t\t// * listed form-associated elements in a disabled fieldset\r\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\r\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\r\n\t\t\t// * option elements in a disabled optgroup\r\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\r\n\t\t\t// All such elements have a \"form\" property.\r\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\r\n\r\n\t\t\t\t// Option elements defer to a parent optgroup if present\r\n\t\t\t\tif ( \"label\" in elem ) {\r\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\r\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn elem.disabled === disabled;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Support: IE 6 - 11\r\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\r\n\t\t\t\treturn elem.isDisabled === disabled ||\r\n\r\n\t\t\t\t\t// Where there is no isDisabled, check manually\r\n\t\t\t\t\t/* jshint -W018 */\r\n\t\t\t\t\telem.isDisabled !== !disabled &&\r\n\t\t\t\t\t\tdisabledAncestor( elem ) === disabled;\r\n\t\t\t}\r\n\r\n\t\t\treturn elem.disabled === disabled;\r\n\r\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\r\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\r\n\t\t// even exist on them, let alone have a boolean value.\r\n\t\t} else if ( \"label\" in elem ) {\r\n\t\t\treturn elem.disabled === disabled;\r\n\t\t}\r\n\r\n\t\t// Remaining elements are neither :enabled nor :disabled\r\n\t\treturn false;\r\n\t};\r\n}\r\n\r\n/**\r\n * Returns a function to use in pseudos for positionals\r\n * @param {Function} fn\r\n */\r\nfunction createPositionalPseudo( fn ) {\r\n\treturn markFunction(function( argument ) {\r\n\t\targument = +argument;\r\n\t\treturn markFunction(function( seed, matches ) {\r\n\t\t\tvar j,\r\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\r\n\t\t\t\ti = matchIndexes.length;\r\n\r\n\t\t\t// Match elements found at the specified indexes\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( seed[ (j = matchIndexes[i]) ] ) {\r\n\t\t\t\t\tseed[j] = !(matches[j] = seed[j]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\n/**\r\n * Checks a node for validity as a Sizzle context\r\n * @param {Element|Object=} context\r\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\r\n */\r\nfunction testContext( context ) {\r\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\r\n}\r\n\r\n// Expose support vars for convenience\r\nsupport = Sizzle.support = {};\r\n\r\n/**\r\n * Detects XML nodes\r\n * @param {Element|Object} elem An element or a document\r\n * @returns {Boolean} True iff elem is a non-HTML XML node\r\n */\r\nisXML = Sizzle.isXML = function( elem ) {\r\n\t// documentElement is verified for cases where it doesn't yet exist\r\n\t// (such as loading iframes in IE - #4833)\r\n\tvar documentElement = elem && (elem.ownerDocument || elem).documentElement;\r\n\treturn documentElement ? documentElement.nodeName !== \"HTML\" : false;\r\n};\r\n\r\n/**\r\n * Sets document-related variables once based on the current document\r\n * @param {Element|Object} [doc] An element or document object to use to set the document\r\n * @returns {Object} Returns the current document\r\n */\r\nsetDocument = Sizzle.setDocument = function( node ) {\r\n\tvar hasCompare, subWindow,\r\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\r\n\r\n\t// Return early if doc is invalid or already selected\r\n\tif ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {\r\n\t\treturn document;\r\n\t}\r\n\r\n\t// Update global variables\r\n\tdocument = doc;\r\n\tdocElem = document.documentElement;\r\n\tdocumentIsHTML = !isXML( document );\r\n\r\n\t// Support: IE 9-11, Edge\r\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\r\n\tif ( preferredDoc !== document &&\r\n\t\t(subWindow = document.defaultView) && subWindow.top !== subWindow ) {\r\n\r\n\t\t// Support: IE 11, Edge\r\n\t\tif ( subWindow.addEventListener ) {\r\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\r\n\r\n\t\t// Support: IE 9 - 10 only\r\n\t\t} else if ( subWindow.attachEvent ) {\r\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\r\n\t\t}\r\n\t}\r\n\r\n\t/* Attributes\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Support: IE<8\r\n\t// Verify that getAttribute really returns attributes and not properties\r\n\t// (excepting IE8 booleans)\r\n\tsupport.attributes = assert(function( el ) {\r\n\t\tel.className = \"i\";\r\n\t\treturn !el.getAttribute(\"className\");\r\n\t});\r\n\r\n\t/* getElement(s)By*\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Check if getElementsByTagName(\"*\") returns only elements\r\n\tsupport.getElementsByTagName = assert(function( el ) {\r\n\t\tel.appendChild( document.createComment(\"\") );\r\n\t\treturn !el.getElementsByTagName(\"*\").length;\r\n\t});\r\n\r\n\t// Support: IE<9\r\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\r\n\r\n\t// Support: IE<10\r\n\t// Check if getElementById returns elements by name\r\n\t// The broken getElementById methods don't pick up programmatically-set names,\r\n\t// so use a roundabout getElementsByName test\r\n\tsupport.getById = assert(function( el ) {\r\n\t\tdocElem.appendChild( el ).id = expando;\r\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\r\n\t});\r\n\r\n\t// ID filter and find\r\n\tif ( support.getById ) {\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn elem.getAttribute(\"id\") === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\t\tExpr.find[\"ID\"] = function( id, context ) {\r\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\r\n\t\t\t\tvar elem = context.getElementById( id );\r\n\t\t\t\treturn elem ? [ elem ] : [];\r\n\t\t\t}\r\n\t\t};\r\n\t} else {\r\n\t\tExpr.filter[\"ID\"] = function( id ) {\r\n\t\t\tvar attrId = id.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\r\n\t\t\t\t\telem.getAttributeNode(\"id\");\r\n\t\t\t\treturn node && node.value === attrId;\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\t// Support: IE 6 - 7 only\r\n\t\t// getElementById is not reliable as a find shortcut\r\n\t\tExpr.find[\"ID\"] = function( id, context ) {\r\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\r\n\t\t\t\tvar node, i, elems,\r\n\t\t\t\t\telem = context.getElementById( id );\r\n\r\n\t\t\t\tif ( elem ) {\r\n\r\n\t\t\t\t\t// Verify the id attribute\r\n\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\r\n\t\t\t\t\tif ( node && node.value === id ) {\r\n\t\t\t\t\t\treturn [ elem ];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Fall back on getElementsByName\r\n\t\t\t\t\telems = context.getElementsByName( id );\r\n\t\t\t\t\ti = 0;\r\n\t\t\t\t\twhile ( (elem = elems[i++]) ) {\r\n\t\t\t\t\t\tnode = elem.getAttributeNode(\"id\");\r\n\t\t\t\t\t\tif ( node && node.value === id ) {\r\n\t\t\t\t\t\t\treturn [ elem ];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn [];\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n\r\n\t// Tag\r\n\tExpr.find[\"TAG\"] = support.getElementsByTagName ?\r\n\t\tfunction( tag, context ) {\r\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\r\n\t\t\t\treturn context.getElementsByTagName( tag );\r\n\r\n\t\t\t// DocumentFragment nodes don't have gEBTN\r\n\t\t\t} else if ( support.qsa ) {\r\n\t\t\t\treturn context.querySelectorAll( tag );\r\n\t\t\t}\r\n\t\t} :\r\n\r\n\t\tfunction( tag, context ) {\r\n\t\t\tvar elem,\r\n\t\t\t\ttmp = [],\r\n\t\t\t\ti = 0,\r\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\r\n\t\t\t\tresults = context.getElementsByTagName( tag );\r\n\r\n\t\t\t// Filter out possible comments\r\n\t\t\tif ( tag === \"*\" ) {\r\n\t\t\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\ttmp.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn tmp;\r\n\t\t\t}\r\n\t\t\treturn results;\r\n\t\t};\r\n\r\n\t// Class\r\n\tExpr.find[\"CLASS\"] = support.getElementsByClassName && function( className, context ) {\r\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\r\n\t\t\treturn context.getElementsByClassName( className );\r\n\t\t}\r\n\t};\r\n\r\n\t/* QSA/matchesSelector\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// QSA and matchesSelector support\r\n\r\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\r\n\trbuggyMatches = [];\r\n\r\n\t// qSa(:focus) reports false when true (Chrome 21)\r\n\t// We allow this because of a bug in IE8/9 that throws an error\r\n\t// whenever `document.activeElement` is accessed on an iframe\r\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\r\n\t// See https://bugs.jquery.com/ticket/13378\r\n\trbuggyQSA = [];\r\n\r\n\tif ( (support.qsa = rnative.test( document.querySelectorAll )) ) {\r\n\t\t// Build QSA regex\r\n\t\t// Regex strategy adopted from Diego Perini\r\n\t\tassert(function( el ) {\r\n\t\t\t// Select is set to empty string on purpose\r\n\t\t\t// This is to test IE's treatment of not explicitly\r\n\t\t\t// setting a boolean content attribute,\r\n\t\t\t// since its presence should be enough\r\n\t\t\t// https://bugs.jquery.com/ticket/12359\r\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\r\n\t\t\t\t\"\";\r\n\r\n\t\t\t// Support: IE8, Opera 11-12.16\r\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\r\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\r\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\r\n\t\t\tif ( el.querySelectorAll(\"[msallowcapture^='']\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\r\n\t\t\tif ( !el.querySelectorAll(\"[selected]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\r\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\"~=\");\r\n\t\t\t}\r\n\r\n\t\t\t// Webkit/Opera - :checked should return selected option elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( !el.querySelectorAll(\":checked\").length ) {\r\n\t\t\t\trbuggyQSA.push(\":checked\");\r\n\t\t\t}\r\n\r\n\t\t\t// Support: Safari 8+, iOS 8+\r\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\r\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\r\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\r\n\t\t\t\trbuggyQSA.push(\".#.+[+~]\");\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tassert(function( el ) {\r\n\t\t\tel.innerHTML = \"\" +\r\n\t\t\t\t\"\";\r\n\r\n\t\t\t// Support: Windows 8 Native Apps\r\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\r\n\t\t\tvar input = document.createElement(\"input\");\r\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\r\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\r\n\r\n\t\t\t// Support: IE8\r\n\t\t\t// Enforce case-sensitivity of name attribute\r\n\t\t\tif ( el.querySelectorAll(\"[name=d]\").length ) {\r\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\r\n\t\t\t}\r\n\r\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\r\n\t\t\t// IE8 throws error here and will not see later tests\r\n\t\t\tif ( el.querySelectorAll(\":enabled\").length !== 2 ) {\r\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Support: IE9-11+\r\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\r\n\t\t\tdocElem.appendChild( el ).disabled = true;\r\n\t\t\tif ( el.querySelectorAll(\":disabled\").length !== 2 ) {\r\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\r\n\t\t\tel.querySelectorAll(\"*,:x\");\r\n\t\t\trbuggyQSA.push(\",.*:\");\r\n\t\t});\r\n\t}\r\n\r\n\tif ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||\r\n\t\tdocElem.webkitMatchesSelector ||\r\n\t\tdocElem.mozMatchesSelector ||\r\n\t\tdocElem.oMatchesSelector ||\r\n\t\tdocElem.msMatchesSelector) )) ) {\r\n\r\n\t\tassert(function( el ) {\r\n\t\t\t// Check to see if it's possible to do matchesSelector\r\n\t\t\t// on a disconnected node (IE 9)\r\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\r\n\r\n\t\t\t// This should fail with an exception\r\n\t\t\t// Gecko does not error, returns false instead\r\n\t\t\tmatches.call( el, \"[s!='']:x\" );\r\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\r\n\t\t});\r\n\t}\r\n\r\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join(\"|\") );\r\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join(\"|\") );\r\n\r\n\t/* Contains\r\n\t---------------------------------------------------------------------- */\r\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\r\n\r\n\t// Element contains another\r\n\t// Purposefully self-exclusive\r\n\t// As in, an element does not contain itself\r\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\r\n\t\tfunction( a, b ) {\r\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\r\n\t\t\t\tbup = b && b.parentNode;\r\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\r\n\t\t\t\tadown.contains ?\r\n\t\t\t\t\tadown.contains( bup ) :\r\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\r\n\t\t\t));\r\n\t\t} :\r\n\t\tfunction( a, b ) {\r\n\t\t\tif ( b ) {\r\n\t\t\t\twhile ( (b = b.parentNode) ) {\r\n\t\t\t\t\tif ( b === a ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n\r\n\t/* Sorting\r\n\t---------------------------------------------------------------------- */\r\n\r\n\t// Document order sorting\r\n\tsortOrder = hasCompare ?\r\n\tfunction( a, b ) {\r\n\r\n\t\t// Flag for duplicate removal\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Sort on method existence if only one input has compareDocumentPosition\r\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\r\n\t\tif ( compare ) {\r\n\t\t\treturn compare;\r\n\t\t}\r\n\r\n\t\t// Calculate position if both inputs belong to the same document\r\n\t\tcompare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?\r\n\t\t\ta.compareDocumentPosition( b ) :\r\n\r\n\t\t\t// Otherwise we know they are disconnected\r\n\t\t\t1;\r\n\r\n\t\t// Disconnected nodes\r\n\t\tif ( compare & 1 ||\r\n\t\t\t(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {\r\n\r\n\t\t\t// Choose the first element that is related to our preferred document\r\n\t\t\tif ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\t// Maintain original order\r\n\t\t\treturn sortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\t\t}\r\n\r\n\t\treturn compare & 4 ? -1 : 1;\r\n\t} :\r\n\tfunction( a, b ) {\r\n\t\t// Exit early if the nodes are identical\r\n\t\tif ( a === b ) {\r\n\t\t\thasDuplicate = true;\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\taup = a.parentNode,\r\n\t\t\tbup = b.parentNode,\r\n\t\t\tap = [ a ],\r\n\t\t\tbp = [ b ];\r\n\r\n\t\t// Parentless nodes are either documents or disconnected\r\n\t\tif ( !aup || !bup ) {\r\n\t\t\treturn a === document ? -1 :\r\n\t\t\t\tb === document ? 1 :\r\n\t\t\t\taup ? -1 :\r\n\t\t\t\tbup ? 1 :\r\n\t\t\t\tsortInput ?\r\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\r\n\t\t\t\t0;\r\n\r\n\t\t// If the nodes are siblings, we can do a quick check\r\n\t\t} else if ( aup === bup ) {\r\n\t\t\treturn siblingCheck( a, b );\r\n\t\t}\r\n\r\n\t\t// Otherwise we need full lists of their ancestors for comparison\r\n\t\tcur = a;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tap.unshift( cur );\r\n\t\t}\r\n\t\tcur = b;\r\n\t\twhile ( (cur = cur.parentNode) ) {\r\n\t\t\tbp.unshift( cur );\r\n\t\t}\r\n\r\n\t\t// Walk down the tree looking for a discrepancy\r\n\t\twhile ( ap[i] === bp[i] ) {\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\treturn i ?\r\n\t\t\t// Do a sibling check if the nodes have a common ancestor\r\n\t\t\tsiblingCheck( ap[i], bp[i] ) :\r\n\r\n\t\t\t// Otherwise nodes in our document sort first\r\n\t\t\tap[i] === preferredDoc ? -1 :\r\n\t\t\tbp[i] === preferredDoc ? 1 :\r\n\t\t\t0;\r\n\t};\r\n\r\n\treturn document;\r\n};\r\n\r\nSizzle.matches = function( expr, elements ) {\r\n\treturn Sizzle( expr, null, null, elements );\r\n};\r\n\r\nSizzle.matchesSelector = function( elem, expr ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\t// Make sure that attribute selectors are quoted\r\n\texpr = expr.replace( rattributeQuotes, \"='$1']\" );\r\n\r\n\tif ( support.matchesSelector && documentIsHTML &&\r\n\t\t!compilerCache[ expr + \" \" ] &&\r\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\r\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\r\n\r\n\t\ttry {\r\n\t\t\tvar ret = matches.call( elem, expr );\r\n\r\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\r\n\t\t\tif ( ret || support.disconnectedMatch ||\r\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\r\n\t\t\t\t\t// fragment in IE 9\r\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\t\t} catch (e) {}\r\n\t}\r\n\r\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\r\n};\r\n\r\nSizzle.contains = function( context, elem ) {\r\n\t// Set document vars if needed\r\n\tif ( ( context.ownerDocument || context ) !== document ) {\r\n\t\tsetDocument( context );\r\n\t}\r\n\treturn contains( context, elem );\r\n};\r\n\r\nSizzle.attr = function( elem, name ) {\r\n\t// Set document vars if needed\r\n\tif ( ( elem.ownerDocument || elem ) !== document ) {\r\n\t\tsetDocument( elem );\r\n\t}\r\n\r\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\r\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\r\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\r\n\t\t\tfn( elem, name, !documentIsHTML ) :\r\n\t\t\tundefined;\r\n\r\n\treturn val !== undefined ?\r\n\t\tval :\r\n\t\tsupport.attributes || !documentIsHTML ?\r\n\t\t\telem.getAttribute( name ) :\r\n\t\t\t(val = elem.getAttributeNode(name)) && val.specified ?\r\n\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n};\r\n\r\nSizzle.escape = function( sel ) {\r\n\treturn (sel + \"\").replace( rcssescape, fcssescape );\r\n};\r\n\r\nSizzle.error = function( msg ) {\r\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\r\n};\r\n\r\n/**\r\n * Document sorting and removing duplicates\r\n * @param {ArrayLike} results\r\n */\r\nSizzle.uniqueSort = function( results ) {\r\n\tvar elem,\r\n\t\tduplicates = [],\r\n\t\tj = 0,\r\n\t\ti = 0;\r\n\r\n\t// Unless we *know* we can detect duplicates, assume their presence\r\n\thasDuplicate = !support.detectDuplicates;\r\n\tsortInput = !support.sortStable && results.slice( 0 );\r\n\tresults.sort( sortOrder );\r\n\r\n\tif ( hasDuplicate ) {\r\n\t\twhile ( (elem = results[i++]) ) {\r\n\t\t\tif ( elem === results[ i ] ) {\r\n\t\t\t\tj = duplicates.push( i );\r\n\t\t\t}\r\n\t\t}\r\n\t\twhile ( j-- ) {\r\n\t\t\tresults.splice( duplicates[ j ], 1 );\r\n\t\t}\r\n\t}\r\n\r\n\t// Clear input after sorting to release objects\r\n\t// See https://github.com/jquery/sizzle/pull/225\r\n\tsortInput = null;\r\n\r\n\treturn results;\r\n};\r\n\r\n/**\r\n * Utility function for retrieving the text value of an array of DOM nodes\r\n * @param {Array|Element} elem\r\n */\r\ngetText = Sizzle.getText = function( elem ) {\r\n\tvar node,\r\n\t\tret = \"\",\r\n\t\ti = 0,\r\n\t\tnodeType = elem.nodeType;\r\n\r\n\tif ( !nodeType ) {\r\n\t\t// If no nodeType, this is expected to be an array\r\n\t\twhile ( (node = elem[i++]) ) {\r\n\t\t\t// Do not traverse comment nodes\r\n\t\t\tret += getText( node );\r\n\t\t}\r\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\r\n\t\t// Use textContent for elements\r\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\r\n\t\tif ( typeof elem.textContent === \"string\" ) {\r\n\t\t\treturn elem.textContent;\r\n\t\t} else {\r\n\t\t\t// Traverse its children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tret += getText( elem );\r\n\t\t\t}\r\n\t\t}\r\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\r\n\t\treturn elem.nodeValue;\r\n\t}\r\n\t// Do not include comment or processing instruction nodes\r\n\r\n\treturn ret;\r\n};\r\n\r\nExpr = Sizzle.selectors = {\r\n\r\n\t// Can be adjusted by the user\r\n\tcacheLength: 50,\r\n\r\n\tcreatePseudo: markFunction,\r\n\r\n\tmatch: matchExpr,\r\n\r\n\tattrHandle: {},\r\n\r\n\tfind: {},\r\n\r\n\trelative: {\r\n\t\t\">\": { dir: \"parentNode\", first: true },\r\n\t\t\" \": { dir: \"parentNode\" },\r\n\t\t\"+\": { dir: \"previousSibling\", first: true },\r\n\t\t\"~\": { dir: \"previousSibling\" }\r\n\t},\r\n\r\n\tpreFilter: {\r\n\t\t\"ATTR\": function( match ) {\r\n\t\t\tmatch[1] = match[1].replace( runescape, funescape );\r\n\r\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\r\n\t\t\tmatch[3] = ( match[3] || match[4] || match[5] || \"\" ).replace( runescape, funescape );\r\n\r\n\t\t\tif ( match[2] === \"~=\" ) {\r\n\t\t\t\tmatch[3] = \" \" + match[3] + \" \";\r\n\t\t\t}\r\n\r\n\t\t\treturn match.slice( 0, 4 );\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( match ) {\r\n\t\t\t/* matches from matchExpr[\"CHILD\"]\r\n\t\t\t\t1 type (only|nth|...)\r\n\t\t\t\t2 what (child|of-type)\r\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\r\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\r\n\t\t\t\t5 sign of xn-component\r\n\t\t\t\t6 x of xn-component\r\n\t\t\t\t7 sign of y-component\r\n\t\t\t\t8 y of y-component\r\n\t\t\t*/\r\n\t\t\tmatch[1] = match[1].toLowerCase();\r\n\r\n\t\t\tif ( match[1].slice( 0, 3 ) === \"nth\" ) {\r\n\t\t\t\t// nth-* requires argument\r\n\t\t\t\tif ( !match[3] ) {\r\n\t\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\r\n\t\t\t\t// remember that false/true cast respectively to 0/1\r\n\t\t\t\tmatch[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === \"even\" || match[3] === \"odd\" ) );\r\n\t\t\t\tmatch[5] = +( ( match[7] + match[8] ) || match[3] === \"odd\" );\r\n\r\n\t\t\t// other types prohibit arguments\r\n\t\t\t} else if ( match[3] ) {\r\n\t\t\t\tSizzle.error( match[0] );\r\n\t\t\t}\r\n\r\n\t\t\treturn match;\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( match ) {\r\n\t\t\tvar excess,\r\n\t\t\t\tunquoted = !match[6] && match[2];\r\n\r\n\t\t\tif ( matchExpr[\"CHILD\"].test( match[0] ) ) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\t// Accept quoted arguments as-is\r\n\t\t\tif ( match[3] ) {\r\n\t\t\t\tmatch[2] = match[4] || match[5] || \"\";\r\n\r\n\t\t\t// Strip excess characters from unquoted arguments\r\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\r\n\t\t\t\t// Get excess from tokenize (recursively)\r\n\t\t\t\t(excess = tokenize( unquoted, true )) &&\r\n\t\t\t\t// advance to the next closing parenthesis\r\n\t\t\t\t(excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length) ) {\r\n\r\n\t\t\t\t// excess is a negative index\r\n\t\t\t\tmatch[0] = match[0].slice( 0, excess );\r\n\t\t\t\tmatch[2] = unquoted.slice( 0, excess );\r\n\t\t\t}\r\n\r\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\r\n\t\t\treturn match.slice( 0, 3 );\r\n\t\t}\r\n\t},\r\n\r\n\tfilter: {\r\n\r\n\t\t\"TAG\": function( nodeNameSelector ) {\r\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn nodeNameSelector === \"*\" ?\r\n\t\t\t\tfunction() { return true; } :\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CLASS\": function( className ) {\r\n\t\t\tvar pattern = classCache[ className + \" \" ];\r\n\r\n\t\t\treturn pattern ||\r\n\t\t\t\t(pattern = new RegExp( \"(^|\" + whitespace + \")\" + className + \"(\" + whitespace + \"|$)\" )) &&\r\n\t\t\t\tclassCache( className, function( elem ) {\r\n\t\t\t\t\treturn pattern.test( typeof elem.className === \"string\" && elem.className || typeof elem.getAttribute !== \"undefined\" && elem.getAttribute(\"class\") || \"\" );\r\n\t\t\t\t});\r\n\t\t},\r\n\r\n\t\t\"ATTR\": function( name, operator, check ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar result = Sizzle.attr( elem, name );\r\n\r\n\t\t\t\tif ( result == null ) {\r\n\t\t\t\t\treturn operator === \"!=\";\r\n\t\t\t\t}\r\n\t\t\t\tif ( !operator ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tresult += \"\";\r\n\r\n\t\t\t\treturn operator === \"=\" ? result === check :\r\n\t\t\t\t\toperator === \"!=\" ? result !== check :\r\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\r\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\r\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\r\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\r\n\t\t\t\t\tfalse;\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"CHILD\": function( type, what, argument, first, last ) {\r\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\r\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\r\n\t\t\t\tofType = what === \"of-type\";\r\n\r\n\t\t\treturn first === 1 && last === 0 ?\r\n\r\n\t\t\t\t// Shortcut for :nth-*(n)\r\n\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\treturn !!elem.parentNode;\r\n\t\t\t\t} :\r\n\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\r\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\r\n\t\t\t\t\t\tparent = elem.parentNode,\r\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\r\n\t\t\t\t\t\tuseCache = !xml && !ofType,\r\n\t\t\t\t\t\tdiff = false;\r\n\r\n\t\t\t\t\tif ( parent ) {\r\n\r\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\r\n\t\t\t\t\t\tif ( simple ) {\r\n\t\t\t\t\t\t\twhile ( dir ) {\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\twhile ( (node = node[ dir ]) ) {\r\n\t\t\t\t\t\t\t\t\tif ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\r\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\r\n\r\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\r\n\t\t\t\t\t\tif ( forward && useCache ) {\r\n\r\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\r\n\r\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\tnode = parent;\r\n\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\r\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\r\n\r\n\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\r\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\r\n\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\r\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\r\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\r\n\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Use previously-cached element index if available\r\n\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\r\n\t\t\t\t\t\t\t\tnode = elem;\r\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\r\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\r\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t// xml :nth-child(...)\r\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\r\n\t\t\t\t\t\t\tif ( diff === false ) {\r\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\r\n\t\t\t\t\t\t\t\twhile ( (node = ++nodeIndex && node && node[ dir ] ||\r\n\t\t\t\t\t\t\t\t\t(diff = nodeIndex = 0) || start.pop()) ) {\r\n\r\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\r\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\r\n\t\t\t\t\t\t\t\t\t\t++diff ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\r\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\r\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] || (node[ expando ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\r\n\t\t\t\t\t\t\t\t\t\t\t\t(outerCache[ node.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\r\n\t\t\t\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\r\n\t\t\t\t\t\tdiff -= last;\r\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t},\r\n\r\n\t\t\"PSEUDO\": function( pseudo, argument ) {\r\n\t\t\t// pseudo-class names are case-insensitive\r\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\r\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\r\n\t\t\t// Remember that setFilters inherits from pseudos\r\n\t\t\tvar args,\r\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\r\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\r\n\r\n\t\t\t// The user may use createPseudo to indicate that\r\n\t\t\t// arguments are needed to create the filter function\r\n\t\t\t// just as Sizzle does\r\n\t\t\tif ( fn[ expando ] ) {\r\n\t\t\t\treturn fn( argument );\r\n\t\t\t}\r\n\r\n\t\t\t// But maintain support for old signatures\r\n\t\t\tif ( fn.length > 1 ) {\r\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\r\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\r\n\t\t\t\t\tmarkFunction(function( seed, matches ) {\r\n\t\t\t\t\t\tvar idx,\r\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\r\n\t\t\t\t\t\t\ti = matched.length;\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[i] );\r\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[i] );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}) :\r\n\t\t\t\t\tfunction( elem ) {\r\n\t\t\t\t\t\treturn fn( elem, 0, args );\r\n\t\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\treturn fn;\r\n\t\t}\r\n\t},\r\n\r\n\tpseudos: {\r\n\t\t// Potentially complex pseudos\r\n\t\t\"not\": markFunction(function( selector ) {\r\n\t\t\t// Trim the selector passed to compile\r\n\t\t\t// to avoid treating leading and trailing\r\n\t\t\t// spaces as combinators\r\n\t\t\tvar input = [],\r\n\t\t\t\tresults = [],\r\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\r\n\r\n\t\t\treturn matcher[ expando ] ?\r\n\t\t\t\tmarkFunction(function( seed, matches, context, xml ) {\r\n\t\t\t\t\tvar elem,\r\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\r\n\t\t\t\t\t\ti = seed.length;\r\n\r\n\t\t\t\t\t// Match elements unmatched by `matcher`\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\t\t\t\t\tseed[i] = !(matches[i] = elem);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}) :\r\n\t\t\t\tfunction( elem, context, xml ) {\r\n\t\t\t\t\tinput[0] = elem;\r\n\t\t\t\t\tmatcher( input, null, xml, results );\r\n\t\t\t\t\t// Don't keep the element (issue #299)\r\n\t\t\t\t\tinput[0] = null;\r\n\t\t\t\t\treturn !results.pop();\r\n\t\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"has\": markFunction(function( selector ) {\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t\"contains\": markFunction(function( text ) {\r\n\t\t\ttext = text.replace( runescape, funescape );\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\treturn ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// \"Whether an element is represented by a :lang() selector\r\n\t\t// is based solely on the element's language value\r\n\t\t// being equal to the identifier C,\r\n\t\t// or beginning with the identifier C immediately followed by \"-\".\r\n\t\t// The matching of C against the element's language value is performed case-insensitively.\r\n\t\t// The identifier C does not have to be a valid language name.\"\r\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\r\n\t\t\"lang\": markFunction( function( lang ) {\r\n\t\t\t// lang value must be a valid identifier\r\n\t\t\tif ( !ridentifier.test(lang || \"\") ) {\r\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\r\n\t\t\t}\r\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\r\n\t\t\treturn function( elem ) {\r\n\t\t\t\tvar elemLang;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tif ( (elemLang = documentIsHTML ?\r\n\t\t\t\t\t\telem.lang :\r\n\t\t\t\t\t\telem.getAttribute(\"xml:lang\") || elem.getAttribute(\"lang\")) ) {\r\n\r\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\r\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t} while ( (elem = elem.parentNode) && elem.nodeType === 1 );\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t}),\r\n\r\n\t\t// Miscellaneous\r\n\t\t\"target\": function( elem ) {\r\n\t\t\tvar hash = window.location && window.location.hash;\r\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\r\n\t\t},\r\n\r\n\t\t\"root\": function( elem ) {\r\n\t\t\treturn elem === docElem;\r\n\t\t},\r\n\r\n\t\t\"focus\": function( elem ) {\r\n\t\t\treturn elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);\r\n\t\t},\r\n\r\n\t\t// Boolean properties\r\n\t\t\"enabled\": createDisabledPseudo( false ),\r\n\t\t\"disabled\": createDisabledPseudo( true ),\r\n\r\n\t\t\"checked\": function( elem ) {\r\n\t\t\t// In CSS3, :checked should return both checked and selected elements\r\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\r\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\r\n\t\t\treturn (nodeName === \"input\" && !!elem.checked) || (nodeName === \"option\" && !!elem.selected);\r\n\t\t},\r\n\r\n\t\t\"selected\": function( elem ) {\r\n\t\t\t// Accessing this property makes selected-by-default\r\n\t\t\t// options in Safari work properly\r\n\t\t\tif ( elem.parentNode ) {\r\n\t\t\t\telem.parentNode.selectedIndex;\r\n\t\t\t}\r\n\r\n\t\t\treturn elem.selected === true;\r\n\t\t},\r\n\r\n\t\t// Contents\r\n\t\t\"empty\": function( elem ) {\r\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\r\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\r\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\r\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\r\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\r\n\t\t\t\tif ( elem.nodeType < 6 ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t},\r\n\r\n\t\t\"parent\": function( elem ) {\r\n\t\t\treturn !Expr.pseudos[\"empty\"]( elem );\r\n\t\t},\r\n\r\n\t\t// Element/input types\r\n\t\t\"header\": function( elem ) {\r\n\t\t\treturn rheader.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"input\": function( elem ) {\r\n\t\t\treturn rinputs.test( elem.nodeName );\r\n\t\t},\r\n\r\n\t\t\"button\": function( elem ) {\r\n\t\t\tvar name = elem.nodeName.toLowerCase();\r\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\r\n\t\t},\r\n\r\n\t\t\"text\": function( elem ) {\r\n\t\t\tvar attr;\r\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\r\n\t\t\t\telem.type === \"text\" &&\r\n\r\n\t\t\t\t// Support: IE<8\r\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\r\n\t\t\t\t( (attr = elem.getAttribute(\"type\")) == null || attr.toLowerCase() === \"text\" );\r\n\t\t},\r\n\r\n\t\t// Position-in-collection\r\n\t\t\"first\": createPositionalPseudo(function() {\r\n\t\t\treturn [ 0 ];\r\n\t\t}),\r\n\r\n\t\t\"last\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\treturn [ length - 1 ];\r\n\t\t}),\r\n\r\n\t\t\"eq\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\r\n\t\t}),\r\n\r\n\t\t\"even\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"odd\": createPositionalPseudo(function( matchIndexes, length ) {\r\n\t\t\tvar i = 1;\r\n\t\t\tfor ( ; i < length; i += 2 ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"lt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; --i >= 0; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t}),\r\n\r\n\t\t\"gt\": createPositionalPseudo(function( matchIndexes, length, argument ) {\r\n\t\t\tvar i = argument < 0 ? argument + length : argument;\r\n\t\t\tfor ( ; ++i < length; ) {\r\n\t\t\t\tmatchIndexes.push( i );\r\n\t\t\t}\r\n\t\t\treturn matchIndexes;\r\n\t\t})\r\n\t}\r\n};\r\n\r\nExpr.pseudos[\"nth\"] = Expr.pseudos[\"eq\"];\r\n\r\n// Add button/input type pseudos\r\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\r\n\tExpr.pseudos[ i ] = createInputPseudo( i );\r\n}\r\nfor ( i in { submit: true, reset: true } ) {\r\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\r\n}\r\n\r\n// Easy API for creating new setFilters\r\nfunction setFilters() {}\r\nsetFilters.prototype = Expr.filters = Expr.pseudos;\r\nExpr.setFilters = new setFilters();\r\n\r\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\r\n\tvar matched, match, tokens, type,\r\n\t\tsoFar, groups, preFilters,\r\n\t\tcached = tokenCache[ selector + \" \" ];\r\n\r\n\tif ( cached ) {\r\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\r\n\t}\r\n\r\n\tsoFar = selector;\r\n\tgroups = [];\r\n\tpreFilters = Expr.preFilter;\r\n\r\n\twhile ( soFar ) {\r\n\r\n\t\t// Comma and first run\r\n\t\tif ( !matched || (match = rcomma.exec( soFar )) ) {\r\n\t\t\tif ( match ) {\r\n\t\t\t\t// Don't consume trailing commas as valid\r\n\t\t\t\tsoFar = soFar.slice( match[0].length ) || soFar;\r\n\t\t\t}\r\n\t\t\tgroups.push( (tokens = []) );\r\n\t\t}\r\n\r\n\t\tmatched = false;\r\n\r\n\t\t// Combinators\r\n\t\tif ( (match = rcombinators.exec( soFar )) ) {\r\n\t\t\tmatched = match.shift();\r\n\t\t\ttokens.push({\r\n\t\t\t\tvalue: matched,\r\n\t\t\t\t// Cast descendant combinators to space\r\n\t\t\t\ttype: match[0].replace( rtrim, \" \" )\r\n\t\t\t});\r\n\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t}\r\n\r\n\t\t// Filters\r\n\t\tfor ( type in Expr.filter ) {\r\n\t\t\tif ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||\r\n\t\t\t\t(match = preFilters[ type ]( match ))) ) {\r\n\t\t\t\tmatched = match.shift();\r\n\t\t\t\ttokens.push({\r\n\t\t\t\t\tvalue: matched,\r\n\t\t\t\t\ttype: type,\r\n\t\t\t\t\tmatches: match\r\n\t\t\t\t});\r\n\t\t\t\tsoFar = soFar.slice( matched.length );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( !matched ) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the length of the invalid excess\r\n\t// if we're just parsing\r\n\t// Otherwise, throw an error or return tokens\r\n\treturn parseOnly ?\r\n\t\tsoFar.length :\r\n\t\tsoFar ?\r\n\t\t\tSizzle.error( selector ) :\r\n\t\t\t// Cache the tokens\r\n\t\t\ttokenCache( selector, groups ).slice( 0 );\r\n};\r\n\r\nfunction toSelector( tokens ) {\r\n\tvar i = 0,\r\n\t\tlen = tokens.length,\r\n\t\tselector = \"\";\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tselector += tokens[i].value;\r\n\t}\r\n\treturn selector;\r\n}\r\n\r\nfunction addCombinator( matcher, combinator, base ) {\r\n\tvar dir = combinator.dir,\r\n\t\tskip = combinator.next,\r\n\t\tkey = skip || dir,\r\n\t\tcheckNonElements = base && key === \"parentNode\",\r\n\t\tdoneName = done++;\r\n\r\n\treturn combinator.first ?\r\n\t\t// Check against closest ancestor/preceding element\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\treturn matcher( elem, context, xml );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t} :\r\n\r\n\t\t// Check against all ancestor/preceding elements\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar oldCache, uniqueCache, outerCache,\r\n\t\t\t\tnewCache = [ dirruns, doneName ];\r\n\r\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\r\n\t\t\tif ( xml ) {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\r\n\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\twhile ( (elem = elem[ dir ]) ) {\r\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\r\n\t\t\t\t\t\touterCache = elem[ expando ] || (elem[ expando ] = {});\r\n\r\n\t\t\t\t\t\t// Support: IE <9 only\r\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\r\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});\r\n\r\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\r\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\r\n\t\t\t\t\t\t} else if ( (oldCache = uniqueCache[ key ]) &&\r\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\r\n\r\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\treturn (newCache[ 2 ] = oldCache[ 2 ]);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\r\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\r\n\r\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\r\n\t\t\t\t\t\t\tif ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {\r\n\t\t\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn false;\r\n\t\t};\r\n}\r\n\r\nfunction elementMatcher( matchers ) {\r\n\treturn matchers.length > 1 ?\r\n\t\tfunction( elem, context, xml ) {\r\n\t\t\tvar i = matchers.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( !matchers[i]( elem, context, xml ) ) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn true;\r\n\t\t} :\r\n\t\tmatchers[0];\r\n}\r\n\r\nfunction multipleContexts( selector, contexts, results ) {\r\n\tvar i = 0,\r\n\t\tlen = contexts.length;\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tSizzle( selector, contexts[i], results );\r\n\t}\r\n\treturn results;\r\n}\r\n\r\nfunction condense( unmatched, map, filter, context, xml ) {\r\n\tvar elem,\r\n\t\tnewUnmatched = [],\r\n\t\ti = 0,\r\n\t\tlen = unmatched.length,\r\n\t\tmapped = map != null;\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (elem = unmatched[i]) ) {\r\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\r\n\t\t\t\tnewUnmatched.push( elem );\r\n\t\t\t\tif ( mapped ) {\r\n\t\t\t\t\tmap.push( i );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn newUnmatched;\r\n}\r\n\r\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\r\n\tif ( postFilter && !postFilter[ expando ] ) {\r\n\t\tpostFilter = setMatcher( postFilter );\r\n\t}\r\n\tif ( postFinder && !postFinder[ expando ] ) {\r\n\t\tpostFinder = setMatcher( postFinder, postSelector );\r\n\t}\r\n\treturn markFunction(function( seed, results, context, xml ) {\r\n\t\tvar temp, i, elem,\r\n\t\t\tpreMap = [],\r\n\t\t\tpostMap = [],\r\n\t\t\tpreexisting = results.length,\r\n\r\n\t\t\t// Get initial elements from seed or context\r\n\t\t\telems = seed || multipleContexts( selector || \"*\", context.nodeType ? [ context ] : context, [] ),\r\n\r\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\r\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\r\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\r\n\t\t\t\telems,\r\n\r\n\t\t\tmatcherOut = matcher ?\r\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\r\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\r\n\r\n\t\t\t\t\t// ...intermediate processing is necessary\r\n\t\t\t\t\t[] :\r\n\r\n\t\t\t\t\t// ...otherwise use results directly\r\n\t\t\t\t\tresults :\r\n\t\t\t\tmatcherIn;\r\n\r\n\t\t// Find primary matches\r\n\t\tif ( matcher ) {\r\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\r\n\t\t}\r\n\r\n\t\t// Apply postFilter\r\n\t\tif ( postFilter ) {\r\n\t\t\ttemp = condense( matcherOut, postMap );\r\n\t\t\tpostFilter( temp, [], context, xml );\r\n\r\n\t\t\t// Un-match failing elements by moving them back to matcherIn\r\n\t\t\ti = temp.length;\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tif ( (elem = temp[i]) ) {\r\n\t\t\t\t\tmatcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( seed ) {\r\n\t\t\tif ( postFinder || preFilter ) {\r\n\t\t\t\tif ( postFinder ) {\r\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\r\n\t\t\t\t\ttemp = [];\r\n\t\t\t\t\ti = matcherOut.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\tif ( (elem = matcherOut[i]) ) {\r\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\r\n\t\t\t\t\t\t\ttemp.push( (matcherIn[i] = elem) );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tpostFinder( null, (matcherOut = []), temp, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\r\n\t\t\t\ti = matcherOut.length;\r\n\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\tif ( (elem = matcherOut[i]) &&\r\n\t\t\t\t\t\t(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {\r\n\r\n\t\t\t\t\t\tseed[temp] = !(results[temp] = elem);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Add elements to results, through postFinder if defined\r\n\t\t} else {\r\n\t\t\tmatcherOut = condense(\r\n\t\t\t\tmatcherOut === results ?\r\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\r\n\t\t\t\t\tmatcherOut\r\n\t\t\t);\r\n\t\t\tif ( postFinder ) {\r\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\r\n\t\t\t} else {\r\n\t\t\t\tpush.apply( results, matcherOut );\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction matcherFromTokens( tokens ) {\r\n\tvar checkContext, matcher, j,\r\n\t\tlen = tokens.length,\r\n\t\tleadingRelative = Expr.relative[ tokens[0].type ],\r\n\t\timplicitRelative = leadingRelative || Expr.relative[\" \"],\r\n\t\ti = leadingRelative ? 1 : 0,\r\n\r\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\r\n\t\tmatchContext = addCombinator( function( elem ) {\r\n\t\t\treturn elem === checkContext;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchAnyContext = addCombinator( function( elem ) {\r\n\t\t\treturn indexOf( checkContext, elem ) > -1;\r\n\t\t}, implicitRelative, true ),\r\n\t\tmatchers = [ function( elem, context, xml ) {\r\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\r\n\t\t\t\t(checkContext = context).nodeType ?\r\n\t\t\t\t\tmatchContext( elem, context, xml ) :\r\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\r\n\t\t\t// Avoid hanging onto element (issue #299)\r\n\t\t\tcheckContext = null;\r\n\t\t\treturn ret;\r\n\t\t} ];\r\n\r\n\tfor ( ; i < len; i++ ) {\r\n\t\tif ( (matcher = Expr.relative[ tokens[i].type ]) ) {\r\n\t\t\tmatchers = [ addCombinator(elementMatcher( matchers ), matcher) ];\r\n\t\t} else {\r\n\t\t\tmatcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );\r\n\r\n\t\t\t// Return special upon seeing a positional matcher\r\n\t\t\tif ( matcher[ expando ] ) {\r\n\t\t\t\t// Find the next relative operator (if any) for proper handling\r\n\t\t\t\tj = ++i;\r\n\t\t\t\tfor ( ; j < len; j++ ) {\r\n\t\t\t\t\tif ( Expr.relative[ tokens[j].type ] ) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn setMatcher(\r\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\r\n\t\t\t\t\ti > 1 && toSelector(\r\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\r\n\t\t\t\t\t\ttokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" })\r\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\r\n\t\t\t\t\tmatcher,\r\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\r\n\t\t\t\t\tj < len && matcherFromTokens( (tokens = tokens.slice( j )) ),\r\n\t\t\t\t\tj < len && toSelector( tokens )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t\tmatchers.push( matcher );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elementMatcher( matchers );\r\n}\r\n\r\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\r\n\tvar bySet = setMatchers.length > 0,\r\n\t\tbyElement = elementMatchers.length > 0,\r\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\r\n\t\t\tvar elem, j, matcher,\r\n\t\t\t\tmatchedCount = 0,\r\n\t\t\t\ti = \"0\",\r\n\t\t\t\tunmatched = seed && [],\r\n\t\t\t\tsetMatched = [],\r\n\t\t\t\tcontextBackup = outermostContext,\r\n\t\t\t\t// We must always have either seed elements or outermost context\r\n\t\t\t\telems = seed || byElement && Expr.find[\"TAG\"]( \"*\", outermost ),\r\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\r\n\t\t\t\tdirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),\r\n\t\t\t\tlen = elems.length;\r\n\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\toutermostContext = context === document || context || outermost;\r\n\t\t\t}\r\n\r\n\t\t\t// Add elements passing elementMatchers directly to results\r\n\t\t\t// Support: IE<9, Safari\r\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\r\n\t\t\tfor ( ; i !== len && (elem = elems[i]) != null; i++ ) {\r\n\t\t\t\tif ( byElement && elem ) {\r\n\t\t\t\t\tj = 0;\r\n\t\t\t\t\tif ( !context && elem.ownerDocument !== document ) {\r\n\t\t\t\t\t\tsetDocument( elem );\r\n\t\t\t\t\t\txml = !documentIsHTML;\r\n\t\t\t\t\t}\r\n\t\t\t\t\twhile ( (matcher = elementMatchers[j++]) ) {\r\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml) ) {\r\n\t\t\t\t\t\t\tresults.push( elem );\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( outermost ) {\r\n\t\t\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Track unmatched elements for set filters\r\n\t\t\t\tif ( bySet ) {\r\n\t\t\t\t\t// They will have gone through all possible matchers\r\n\t\t\t\t\tif ( (elem = !matcher && elem) ) {\r\n\t\t\t\t\t\tmatchedCount--;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Lengthen the array for every element, matched or not\r\n\t\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t\tunmatched.push( elem );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\r\n\t\t\t// makes the latter nonnegative.\r\n\t\t\tmatchedCount += i;\r\n\r\n\t\t\t// Apply set filters to unmatched elements\r\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\r\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\r\n\t\t\t// no element matchers and no seed.\r\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\r\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\r\n\t\t\t// numerically zero.\r\n\t\t\tif ( bySet && i !== matchedCount ) {\r\n\t\t\t\tj = 0;\r\n\t\t\t\twhile ( (matcher = setMatchers[j++]) ) {\r\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( seed ) {\r\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\r\n\t\t\t\t\tif ( matchedCount > 0 ) {\r\n\t\t\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\t\t\tif ( !(unmatched[i] || setMatched[i]) ) {\r\n\t\t\t\t\t\t\t\tsetMatched[i] = pop.call( results );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\r\n\t\t\t\t\tsetMatched = condense( setMatched );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Add matches to results\r\n\t\t\t\tpush.apply( results, setMatched );\r\n\r\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\r\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\r\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\r\n\r\n\t\t\t\t\tSizzle.uniqueSort( results );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Override manipulation of globals by nested matchers\r\n\t\t\tif ( outermost ) {\r\n\t\t\t\tdirruns = dirrunsUnique;\r\n\t\t\t\toutermostContext = contextBackup;\r\n\t\t\t}\r\n\r\n\t\t\treturn unmatched;\r\n\t\t};\r\n\r\n\treturn bySet ?\r\n\t\tmarkFunction( superMatcher ) :\r\n\t\tsuperMatcher;\r\n}\r\n\r\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\r\n\tvar i,\r\n\t\tsetMatchers = [],\r\n\t\telementMatchers = [],\r\n\t\tcached = compilerCache[ selector + \" \" ];\r\n\r\n\tif ( !cached ) {\r\n\t\t// Generate a function of recursive functions that can be used to check each element\r\n\t\tif ( !match ) {\r\n\t\t\tmatch = tokenize( selector );\r\n\t\t}\r\n\t\ti = match.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\tcached = matcherFromTokens( match[i] );\r\n\t\t\tif ( cached[ expando ] ) {\r\n\t\t\t\tsetMatchers.push( cached );\r\n\t\t\t} else {\r\n\t\t\t\telementMatchers.push( cached );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Cache the compiled function\r\n\t\tcached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );\r\n\r\n\t\t// Save selector and tokenization\r\n\t\tcached.selector = selector;\r\n\t}\r\n\treturn cached;\r\n};\r\n\r\n/**\r\n * A low-level selection function that works with Sizzle's compiled\r\n * selector functions\r\n * @param {String|Function} selector A selector or a pre-compiled\r\n * selector function built with Sizzle.compile\r\n * @param {Element} context\r\n * @param {Array} [results]\r\n * @param {Array} [seed] A set of elements to match against\r\n */\r\nselect = Sizzle.select = function( selector, context, results, seed ) {\r\n\tvar i, tokens, token, type, find,\r\n\t\tcompiled = typeof selector === \"function\" && selector,\r\n\t\tmatch = !seed && tokenize( (selector = compiled.selector || selector) );\r\n\r\n\tresults = results || [];\r\n\r\n\t// Try to minimize operations if there is only one selector in the list and no seed\r\n\t// (the latter of which guarantees us context)\r\n\tif ( match.length === 1 ) {\r\n\r\n\t\t// Reduce context if the leading compound selector is an ID\r\n\t\ttokens = match[0] = match[0].slice( 0 );\r\n\t\tif ( tokens.length > 2 && (token = tokens[0]).type === \"ID\" &&\r\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {\r\n\r\n\t\t\tcontext = ( Expr.find[\"ID\"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];\r\n\t\t\tif ( !context ) {\r\n\t\t\t\treturn results;\r\n\r\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\r\n\t\t\t} else if ( compiled ) {\r\n\t\t\t\tcontext = context.parentNode;\r\n\t\t\t}\r\n\r\n\t\t\tselector = selector.slice( tokens.shift().value.length );\r\n\t\t}\r\n\r\n\t\t// Fetch a seed set for right-to-left matching\r\n\t\ti = matchExpr[\"needsContext\"].test( selector ) ? 0 : tokens.length;\r\n\t\twhile ( i-- ) {\r\n\t\t\ttoken = tokens[i];\r\n\r\n\t\t\t// Abort if we hit a combinator\r\n\t\t\tif ( Expr.relative[ (type = token.type) ] ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif ( (find = Expr.find[ type ]) ) {\r\n\t\t\t\t// Search, expanding context for leading sibling combinators\r\n\t\t\t\tif ( (seed = find(\r\n\t\t\t\t\ttoken.matches[0].replace( runescape, funescape ),\r\n\t\t\t\t\trsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context\r\n\t\t\t\t)) ) {\r\n\r\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\r\n\t\t\t\t\ttokens.splice( i, 1 );\r\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\r\n\t\t\t\t\tif ( !selector ) {\r\n\t\t\t\t\t\tpush.apply( results, seed );\r\n\t\t\t\t\t\treturn results;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Compile and execute a filtering function if one is not provided\r\n\t// Provide `match` to avoid retokenization if we modified the selector above\r\n\t( compiled || compile( selector, match ) )(\r\n\t\tseed,\r\n\t\tcontext,\r\n\t\t!documentIsHTML,\r\n\t\tresults,\r\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\r\n\t);\r\n\treturn results;\r\n};\r\n\r\n// One-time assignments\r\n\r\n// Sort stability\r\nsupport.sortStable = expando.split(\"\").sort( sortOrder ).join(\"\") === expando;\r\n\r\n// Support: Chrome 14-35+\r\n// Always assume duplicates if they aren't passed to the comparison function\r\nsupport.detectDuplicates = !!hasDuplicate;\r\n\r\n// Initialize against the default document\r\nsetDocument();\r\n\r\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\r\n// Detached nodes confoundingly follow *each other*\r\nsupport.sortDetached = assert(function( el ) {\r\n\t// Should return 1, but returns 4 (following)\r\n\treturn el.compareDocumentPosition( document.createElement(\"fieldset\") ) & 1;\r\n});\r\n\r\n// Support: IE<8\r\n// Prevent attribute/property \"interpolation\"\r\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\r\nif ( !assert(function( el ) {\r\n\tel.innerHTML = \"\";\r\n\treturn el.firstChild.getAttribute(\"href\") === \"#\" ;\r\n}) ) {\r\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use defaultValue in place of getAttribute(\"value\")\r\nif ( !support.attributes || !assert(function( el ) {\r\n\tel.innerHTML = \"\";\r\n\tel.firstChild.setAttribute( \"value\", \"\" );\r\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\r\n}) ) {\r\n\taddHandle( \"value\", function( elem, name, isXML ) {\r\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\r\n\t\t\treturn elem.defaultValue;\r\n\t\t}\r\n\t});\r\n}\r\n\r\n// Support: IE<9\r\n// Use getAttributeNode to fetch booleans when getAttribute lies\r\nif ( !assert(function( el ) {\r\n\treturn el.getAttribute(\"disabled\") == null;\r\n}) ) {\r\n\taddHandle( booleans, function( elem, name, isXML ) {\r\n\t\tvar val;\r\n\t\tif ( !isXML ) {\r\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\r\n\t\t\t\t\t(val = elem.getAttributeNode( name )) && val.specified ?\r\n\t\t\t\t\tval.value :\r\n\t\t\t\tnull;\r\n\t\t}\r\n\t});\r\n}\r\n\r\nreturn Sizzle;\r\n\r\n})( window );\r\n\r\n\r\n\r\njQuery.find = Sizzle;\r\njQuery.expr = Sizzle.selectors;\r\n\r\n// Deprecated\r\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\r\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\r\njQuery.text = Sizzle.getText;\r\njQuery.isXMLDoc = Sizzle.isXML;\r\njQuery.contains = Sizzle.contains;\r\njQuery.escapeSelector = Sizzle.escape;\r\n\r\n\r\n\r\n\r\nvar dir = function( elem, dir, until ) {\r\n\tvar matched = [],\r\n\t\ttruncate = until !== undefined;\r\n\r\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\r\n\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tmatched.push( elem );\r\n\t\t}\r\n\t}\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar siblings = function( n, elem ) {\r\n\tvar matched = [];\r\n\r\n\tfor ( ; n; n = n.nextSibling ) {\r\n\t\tif ( n.nodeType === 1 && n !== elem ) {\r\n\t\t\tmatched.push( n );\r\n\t\t}\r\n\t}\r\n\r\n\treturn matched;\r\n};\r\n\r\n\r\nvar rneedsContext = jQuery.expr.match.needsContext;\r\n\r\n\r\n\r\nfunction nodeName( elem, name ) {\r\n\r\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\r\n\r\n};\r\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\r\n\r\n\r\n\r\n// Implement the identical functionality for filter and not\r\nfunction winnow( elements, qualifier, not ) {\r\n\tif ( isFunction( qualifier ) ) {\r\n\t\treturn jQuery.grep( elements, function( elem, i ) {\r\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\r\n\t\t} );\r\n\t}\r\n\r\n\t// Single element\r\n\tif ( qualifier.nodeType ) {\r\n\t\treturn jQuery.grep( elements, function( elem ) {\r\n\t\t\treturn ( elem === qualifier ) !== not;\r\n\t\t} );\r\n\t}\r\n\r\n\t// Arraylike of elements (jQuery, arguments, Array)\r\n\tif ( typeof qualifier !== \"string\" ) {\r\n\t\treturn jQuery.grep( elements, function( elem ) {\r\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\r\n\t\t} );\r\n\t}\r\n\r\n\t// Filtered directly for both simple and complex selectors\r\n\treturn jQuery.filter( qualifier, elements, not );\r\n}\r\n\r\njQuery.filter = function( expr, elems, not ) {\r\n\tvar elem = elems[ 0 ];\r\n\r\n\tif ( not ) {\r\n\t\texpr = \":not(\" + expr + \")\";\r\n\t}\r\n\r\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\r\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\r\n\t}\r\n\r\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\r\n\t\treturn elem.nodeType === 1;\r\n\t} ) );\r\n};\r\n\r\njQuery.fn.extend( {\r\n\tfind: function( selector ) {\r\n\t\tvar i, ret,\r\n\t\t\tlen = this.length,\r\n\t\t\tself = this;\r\n\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\r\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} ) );\r\n\t\t}\r\n\r\n\t\tret = this.pushStack( [] );\r\n\r\n\t\tfor ( i = 0; i < len; i++ ) {\r\n\t\t\tjQuery.find( selector, self[ i ], ret );\r\n\t\t}\r\n\r\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\r\n\t},\r\n\tfilter: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\r\n\t},\r\n\tnot: function( selector ) {\r\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\r\n\t},\r\n\tis: function( selector ) {\r\n\t\treturn !!winnow(\r\n\t\t\tthis,\r\n\r\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\r\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\r\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\r\n\t\t\t\tjQuery( selector ) :\r\n\t\t\t\tselector || [],\r\n\t\t\tfalse\r\n\t\t).length;\r\n\t}\r\n} );\r\n\r\n\r\n// Initialize a jQuery object\r\n\r\n\r\n// A central reference to the root jQuery(document)\r\nvar rootjQuery,\r\n\r\n\t// A simple way to check for HTML strings\r\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\r\n\t// Strict HTML recognition (#11290: must start with <)\r\n\t// Shortcut simple #id case for speed\r\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\r\n\r\n\tinit = jQuery.fn.init = function( selector, context, root ) {\r\n\t\tvar match, elem;\r\n\r\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\r\n\t\tif ( !selector ) {\r\n\t\t\treturn this;\r\n\t\t}\r\n\r\n\t\t// Method init() accepts an alternate rootjQuery\r\n\t\t// so migrate can support jQuery.sub (gh-2101)\r\n\t\troot = root || rootjQuery;\r\n\r\n\t\t// Handle HTML strings\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\t\t\tif ( selector[ 0 ] === \"<\" &&\r\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\r\n\t\t\t\tselector.length >= 3 ) {\r\n\r\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\r\n\t\t\t\tmatch = [ null, selector, null ];\r\n\r\n\t\t\t} else {\r\n\t\t\t\tmatch = rquickExpr.exec( selector );\r\n\t\t\t}\r\n\r\n\t\t\t// Match html or make sure no context is specified for #id\r\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\r\n\r\n\t\t\t\t// HANDLE: $(html) -> $(array)\r\n\t\t\t\tif ( match[ 1 ] ) {\r\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\r\n\r\n\t\t\t\t\t// Option to run scripts is true for back-compat\r\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\r\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\r\n\t\t\t\t\t\tmatch[ 1 ],\r\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\r\n\t\t\t\t\t\ttrue\r\n\t\t\t\t\t) );\r\n\r\n\t\t\t\t\t// HANDLE: $(html, props)\r\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\r\n\t\t\t\t\t\tfor ( match in context ) {\r\n\r\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\r\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\r\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\r\n\r\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn this;\r\n\r\n\t\t\t\t// HANDLE: $(#id)\r\n\t\t\t\t} else {\r\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\r\n\r\n\t\t\t\t\tif ( elem ) {\r\n\r\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\r\n\t\t\t\t\t\tthis[ 0 ] = elem;\r\n\t\t\t\t\t\tthis.length = 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\r\n\t\t\t// HANDLE: $(expr, $(...))\r\n\t\t\t} else if ( !context || context.jquery ) {\r\n\t\t\t\treturn ( context || root ).find( selector );\r\n\r\n\t\t\t// HANDLE: $(expr, context)\r\n\t\t\t// (which is just equivalent to: $(context).find(expr)\r\n\t\t\t} else {\r\n\t\t\t\treturn this.constructor( context ).find( selector );\r\n\t\t\t}\r\n\r\n\t\t// HANDLE: $(DOMElement)\r\n\t\t} else if ( selector.nodeType ) {\r\n\t\t\tthis[ 0 ] = selector;\r\n\t\t\tthis.length = 1;\r\n\t\t\treturn this;\r\n\r\n\t\t// HANDLE: $(function)\r\n\t\t// Shortcut for document ready\r\n\t\t} else if ( isFunction( selector ) ) {\r\n\t\t\treturn root.ready !== undefined ?\r\n\t\t\t\troot.ready( selector ) :\r\n\r\n\t\t\t\t// Execute immediately if ready is not present\r\n\t\t\t\tselector( jQuery );\r\n\t\t}\r\n\r\n\t\treturn jQuery.makeArray( selector, this );\r\n\t};\r\n\r\n// Give the init function the jQuery prototype for later instantiation\r\ninit.prototype = jQuery.fn;\r\n\r\n// Initialize central reference\r\nrootjQuery = jQuery( document );\r\n\r\n\r\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\r\n\r\n\t// Methods guaranteed to produce a unique set when starting from a unique set\r\n\tguaranteedUnique = {\r\n\t\tchildren: true,\r\n\t\tcontents: true,\r\n\t\tnext: true,\r\n\t\tprev: true\r\n\t};\r\n\r\njQuery.fn.extend( {\r\n\thas: function( target ) {\r\n\t\tvar targets = jQuery( target, this ),\r\n\t\t\tl = targets.length;\r\n\r\n\t\treturn this.filter( function() {\r\n\t\t\tvar i = 0;\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tclosest: function( selectors, context ) {\r\n\t\tvar cur,\r\n\t\t\ti = 0,\r\n\t\t\tl = this.length,\r\n\t\t\tmatched = [],\r\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\r\n\r\n\t\t// Positional selectors never match, since there's no _selection_ context\r\n\t\tif ( !rneedsContext.test( selectors ) ) {\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\r\n\r\n\t\t\t\t\t// Always skip document fragments\r\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\r\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\r\n\r\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\r\n\t\t\t\t\t\tcur.nodeType === 1 &&\r\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\r\n\r\n\t\t\t\t\t\tmatched.push( cur );\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\r\n\t},\r\n\r\n\t// Determine the position of an element within the set\r\n\tindex: function( elem ) {\r\n\r\n\t\t// No argument, return index in parent\r\n\t\tif ( !elem ) {\r\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\r\n\t\t}\r\n\r\n\t\t// Index in selector\r\n\t\tif ( typeof elem === \"string\" ) {\r\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\r\n\t\t}\r\n\r\n\t\t// Locate the position of the desired element\r\n\t\treturn indexOf.call( this,\r\n\r\n\t\t\t// If it receives a jQuery object, the first element is used\r\n\t\t\telem.jquery ? elem[ 0 ] : elem\r\n\t\t);\r\n\t},\r\n\r\n\tadd: function( selector, context ) {\r\n\t\treturn this.pushStack(\r\n\t\t\tjQuery.uniqueSort(\r\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\r\n\t\t\t)\r\n\t\t);\r\n\t},\r\n\r\n\taddBack: function( selector ) {\r\n\t\treturn this.add( selector == null ?\r\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\r\n\t\t);\r\n\t}\r\n} );\r\n\r\nfunction sibling( cur, dir ) {\r\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\r\n\treturn cur;\r\n}\r\n\r\njQuery.each( {\r\n\tparent: function( elem ) {\r\n\t\tvar parent = elem.parentNode;\r\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\r\n\t},\r\n\tparents: function( elem ) {\r\n\t\treturn dir( elem, \"parentNode\" );\r\n\t},\r\n\tparentsUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"parentNode\", until );\r\n\t},\r\n\tnext: function( elem ) {\r\n\t\treturn sibling( elem, \"nextSibling\" );\r\n\t},\r\n\tprev: function( elem ) {\r\n\t\treturn sibling( elem, \"previousSibling\" );\r\n\t},\r\n\tnextAll: function( elem ) {\r\n\t\treturn dir( elem, \"nextSibling\" );\r\n\t},\r\n\tprevAll: function( elem ) {\r\n\t\treturn dir( elem, \"previousSibling\" );\r\n\t},\r\n\tnextUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"nextSibling\", until );\r\n\t},\r\n\tprevUntil: function( elem, i, until ) {\r\n\t\treturn dir( elem, \"previousSibling\", until );\r\n\t},\r\n\tsiblings: function( elem ) {\r\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\r\n\t},\r\n\tchildren: function( elem ) {\r\n\t\treturn siblings( elem.firstChild );\r\n\t},\r\n\tcontents: function( elem ) {\r\n if ( nodeName( elem, \"iframe\" ) ) {\r\n return elem.contentDocument;\r\n }\r\n\r\n // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\r\n // Treat the template element as a regular one in browsers that\r\n // don't support it.\r\n if ( nodeName( elem, \"template\" ) ) {\r\n elem = elem.content || elem;\r\n }\r\n\r\n return jQuery.merge( [], elem.childNodes );\r\n\t}\r\n}, function( name, fn ) {\r\n\tjQuery.fn[ name ] = function( until, selector ) {\r\n\t\tvar matched = jQuery.map( this, fn, until );\r\n\r\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\r\n\t\t\tselector = until;\r\n\t\t}\r\n\r\n\t\tif ( selector && typeof selector === \"string\" ) {\r\n\t\t\tmatched = jQuery.filter( selector, matched );\r\n\t\t}\r\n\r\n\t\tif ( this.length > 1 ) {\r\n\r\n\t\t\t// Remove duplicates\r\n\t\t\tif ( !guaranteedUnique[ name ] ) {\r\n\t\t\t\tjQuery.uniqueSort( matched );\r\n\t\t\t}\r\n\r\n\t\t\t// Reverse order for parents* and prev-derivatives\r\n\t\t\tif ( rparentsprev.test( name ) ) {\r\n\t\t\t\tmatched.reverse();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( matched );\r\n\t};\r\n} );\r\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\r\n\r\n\r\n\r\n// Convert String-formatted options into Object-formatted ones\r\nfunction createOptions( options ) {\r\n\tvar object = {};\r\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\r\n\t\tobject[ flag ] = true;\r\n\t} );\r\n\treturn object;\r\n}\r\n\r\n/*\r\n * Create a callback list using the following parameters:\r\n *\r\n *\toptions: an optional list of space-separated options that will change how\r\n *\t\t\tthe callback list behaves or a more traditional option object\r\n *\r\n * By default a callback list will act like an event callback list and can be\r\n * \"fired\" multiple times.\r\n *\r\n * Possible options:\r\n *\r\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\r\n *\r\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\r\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\r\n *\t\t\t\t\tvalues (like a Deferred)\r\n *\r\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\r\n *\r\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\r\n *\r\n */\r\njQuery.Callbacks = function( options ) {\r\n\r\n\t// Convert options from String-formatted to Object-formatted if needed\r\n\t// (we check in cache first)\r\n\toptions = typeof options === \"string\" ?\r\n\t\tcreateOptions( options ) :\r\n\t\tjQuery.extend( {}, options );\r\n\r\n\tvar // Flag to know if list is currently firing\r\n\t\tfiring,\r\n\r\n\t\t// Last fire value for non-forgettable lists\r\n\t\tmemory,\r\n\r\n\t\t// Flag to know if list was already fired\r\n\t\tfired,\r\n\r\n\t\t// Flag to prevent firing\r\n\t\tlocked,\r\n\r\n\t\t// Actual callback list\r\n\t\tlist = [],\r\n\r\n\t\t// Queue of execution data for repeatable lists\r\n\t\tqueue = [],\r\n\r\n\t\t// Index of currently firing callback (modified by add/remove as needed)\r\n\t\tfiringIndex = -1,\r\n\r\n\t\t// Fire callbacks\r\n\t\tfire = function() {\r\n\r\n\t\t\t// Enforce single-firing\r\n\t\t\tlocked = locked || options.once;\r\n\r\n\t\t\t// Execute callbacks for all pending executions,\r\n\t\t\t// respecting firingIndex overrides and runtime changes\r\n\t\t\tfired = firing = true;\r\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\r\n\t\t\t\tmemory = queue.shift();\r\n\t\t\t\twhile ( ++firingIndex < list.length ) {\r\n\r\n\t\t\t\t\t// Run callback and check for early termination\r\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\r\n\t\t\t\t\t\toptions.stopOnFalse ) {\r\n\r\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\r\n\t\t\t\t\t\tfiringIndex = list.length;\r\n\t\t\t\t\t\tmemory = false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Forget the data if we're done with it\r\n\t\t\tif ( !options.memory ) {\r\n\t\t\t\tmemory = false;\r\n\t\t\t}\r\n\r\n\t\t\tfiring = false;\r\n\r\n\t\t\t// Clean up if we're done firing for good\r\n\t\t\tif ( locked ) {\r\n\r\n\t\t\t\t// Keep an empty list if we have data for future add calls\r\n\t\t\t\tif ( memory ) {\r\n\t\t\t\t\tlist = [];\r\n\r\n\t\t\t\t// Otherwise, this object is spent\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlist = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t// Actual Callbacks object\r\n\t\tself = {\r\n\r\n\t\t\t// Add a callback or a collection of callbacks to the list\r\n\t\t\tadd: function() {\r\n\t\t\t\tif ( list ) {\r\n\r\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfiringIndex = list.length - 1;\r\n\t\t\t\t\t\tqueue.push( memory );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t( function add( args ) {\r\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\r\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\r\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\r\n\t\t\t\t\t\t\t\t\tlist.push( arg );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\r\n\r\n\t\t\t\t\t\t\t\t// Inspect recursively\r\n\t\t\t\t\t\t\t\tadd( arg );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t} )( arguments );\r\n\r\n\t\t\t\t\tif ( memory && !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove a callback from the list\r\n\t\t\tremove: function() {\r\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\r\n\t\t\t\t\tvar index;\r\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\r\n\t\t\t\t\t\tlist.splice( index, 1 );\r\n\r\n\t\t\t\t\t\t// Handle firing indexes\r\n\t\t\t\t\t\tif ( index <= firingIndex ) {\r\n\t\t\t\t\t\t\tfiringIndex--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Check if a given callback is in the list.\r\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\r\n\t\t\thas: function( fn ) {\r\n\t\t\t\treturn fn ?\r\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\r\n\t\t\t\t\tlist.length > 0;\r\n\t\t\t},\r\n\r\n\t\t\t// Remove all callbacks from the list\r\n\t\t\tempty: function() {\r\n\t\t\t\tif ( list ) {\r\n\t\t\t\t\tlist = [];\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire and .add\r\n\t\t\t// Abort any current/pending executions\r\n\t\t\t// Clear all callbacks and values\r\n\t\t\tdisable: function() {\r\n\t\t\t\tlocked = queue = [];\r\n\t\t\t\tlist = memory = \"\";\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tdisabled: function() {\r\n\t\t\t\treturn !list;\r\n\t\t\t},\r\n\r\n\t\t\t// Disable .fire\r\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\r\n\t\t\t// Abort any pending executions\r\n\t\t\tlock: function() {\r\n\t\t\t\tlocked = queue = [];\r\n\t\t\t\tif ( !memory && !firing ) {\r\n\t\t\t\t\tlist = memory = \"\";\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\t\t\tlocked: function() {\r\n\t\t\t\treturn !!locked;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all callbacks with the given context and arguments\r\n\t\t\tfireWith: function( context, args ) {\r\n\t\t\t\tif ( !locked ) {\r\n\t\t\t\t\targs = args || [];\r\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\r\n\t\t\t\t\tqueue.push( args );\r\n\t\t\t\t\tif ( !firing ) {\r\n\t\t\t\t\t\tfire();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// Call all the callbacks with the given arguments\r\n\t\t\tfire: function() {\r\n\t\t\t\tself.fireWith( this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t},\r\n\r\n\t\t\t// To know if the callbacks have already been called at least once\r\n\t\t\tfired: function() {\r\n\t\t\t\treturn !!fired;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\treturn self;\r\n};\r\n\r\n\r\nfunction Identity( v ) {\r\n\treturn v;\r\n}\r\nfunction Thrower( ex ) {\r\n\tthrow ex;\r\n}\r\n\r\nfunction adoptValue( value, resolve, reject, noValue ) {\r\n\tvar method;\r\n\r\n\ttry {\r\n\r\n\t\t// Check for promise aspect first to privilege synchronous behavior\r\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\r\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\r\n\r\n\t\t// Other thenables\r\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\r\n\t\t\tmethod.call( value, resolve, reject );\r\n\r\n\t\t// Other non-thenables\r\n\t\t} else {\r\n\r\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\r\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\r\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\r\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\r\n\t\t}\r\n\r\n\t// For Promises/A+, convert exceptions into rejections\r\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\r\n\t// Deferred#then to conditionally suppress rejection.\r\n\t} catch ( value ) {\r\n\r\n\t\t// Support: Android 4.0 only\r\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\r\n\t\treject.apply( undefined, [ value ] );\r\n\t}\r\n}\r\n\r\njQuery.extend( {\r\n\r\n\tDeferred: function( func ) {\r\n\t\tvar tuples = [\r\n\r\n\t\t\t\t// action, add listener, callbacks,\r\n\t\t\t\t// ... .then handlers, argument index, [final state]\r\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\r\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\r\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\r\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\r\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\r\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\r\n\t\t\t],\r\n\t\t\tstate = \"pending\",\r\n\t\t\tpromise = {\r\n\t\t\t\tstate: function() {\r\n\t\t\t\t\treturn state;\r\n\t\t\t\t},\r\n\t\t\t\talways: function() {\r\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\t\t\t\t\"catch\": function( fn ) {\r\n\t\t\t\t\treturn promise.then( null, fn );\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Keep pipe for back-compat\r\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\r\n\t\t\t\t\tvar fns = arguments;\r\n\r\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\r\n\t\t\t\t\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\r\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\r\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\r\n\r\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\r\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\r\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\r\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\r\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\r\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\r\n\t\t\t\t\t\t\t\t\treturned.promise()\r\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\r\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\r\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\r\n\t\t\t\t\t\t\t\t\t\tthis,\r\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t} );\r\n\t\t\t\t\t\tfns = null;\r\n\t\t\t\t\t} ).promise();\r\n\t\t\t\t},\r\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\r\n\t\t\t\t\tvar maxDepth = 0;\r\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\r\n\t\t\t\t\t\treturn function() {\r\n\t\t\t\t\t\t\tvar that = this,\r\n\t\t\t\t\t\t\t\targs = arguments,\r\n\t\t\t\t\t\t\t\tmightThrow = function() {\r\n\t\t\t\t\t\t\t\t\tvar returned, then;\r\n\r\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\r\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\r\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\r\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\r\n\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\r\n\r\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\r\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\r\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\r\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\r\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\r\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\r\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\r\n\t\t\t\t\t\t\t\t\tthen = returned &&\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\r\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\r\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\r\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\r\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\r\n\t\t\t\t\t\t\t\t\t\treturned.then;\r\n\r\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\r\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\r\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\r\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\r\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\r\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\r\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\r\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\r\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\r\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\r\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\r\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\r\n\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\r\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\r\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\r\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\r\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\r\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\r\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\r\n\t\t\t\t\t\t\t\tprocess = special ?\r\n\t\t\t\t\t\t\t\t\tmightThrow :\r\n\t\t\t\t\t\t\t\t\tfunction() {\r\n\t\t\t\t\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\r\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\r\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\r\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\r\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\r\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\r\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\r\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\r\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\r\n\t\t\t\t\t\t\t// subsequent errors\r\n\t\t\t\t\t\t\tif ( depth ) {\r\n\t\t\t\t\t\t\t\tprocess();\r\n\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\r\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\r\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\r\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\r\n\r\n\t\t\t\t\t\t// progress_handlers.add( ... )\r\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\r\n\t\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\t\tnewDefer,\r\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\r\n\t\t\t\t\t\t\t\t\tonProgress :\r\n\t\t\t\t\t\t\t\t\tIdentity,\r\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\r\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\r\n\t\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\t\tnewDefer,\r\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\r\n\t\t\t\t\t\t\t\t\tonFulfilled :\r\n\t\t\t\t\t\t\t\t\tIdentity\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\t// rejected_handlers.add( ... )\r\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\r\n\t\t\t\t\t\t\tresolve(\r\n\t\t\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t\t\tnewDefer,\r\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\r\n\t\t\t\t\t\t\t\t\tonRejected :\r\n\t\t\t\t\t\t\t\t\tThrower\r\n\t\t\t\t\t\t\t)\r\n\t\t\t\t\t\t);\r\n\t\t\t\t\t} ).promise();\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Get a promise for this deferred\r\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\r\n\t\t\t\tpromise: function( obj ) {\r\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdeferred = {};\r\n\r\n\t\t// Add list-specific methods\r\n\t\tjQuery.each( tuples, function( i, tuple ) {\r\n\t\t\tvar list = tuple[ 2 ],\r\n\t\t\t\tstateString = tuple[ 5 ];\r\n\r\n\t\t\t// promise.progress = list.add\r\n\t\t\t// promise.done = list.add\r\n\t\t\t// promise.fail = list.add\r\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\r\n\r\n\t\t\t// Handle state\r\n\t\t\tif ( stateString ) {\r\n\t\t\t\tlist.add(\r\n\t\t\t\t\tfunction() {\r\n\r\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\r\n\t\t\t\t\t\t// state = \"rejected\"\r\n\t\t\t\t\t\tstate = stateString;\r\n\t\t\t\t\t},\r\n\r\n\t\t\t\t\t// rejected_callbacks.disable\r\n\t\t\t\t\t// fulfilled_callbacks.disable\r\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\r\n\r\n\t\t\t\t\t// rejected_handlers.disable\r\n\t\t\t\t\t// fulfilled_handlers.disable\r\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\r\n\r\n\t\t\t\t\t// progress_callbacks.lock\r\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\r\n\r\n\t\t\t\t\t// progress_handlers.lock\r\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\t// progress_handlers.fire\r\n\t\t\t// fulfilled_handlers.fire\r\n\t\t\t// rejected_handlers.fire\r\n\t\t\tlist.add( tuple[ 3 ].fire );\r\n\r\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\r\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\r\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\r\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\r\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\r\n\t\t\t\treturn this;\r\n\t\t\t};\r\n\r\n\t\t\t// deferred.notifyWith = list.fireWith\r\n\t\t\t// deferred.resolveWith = list.fireWith\r\n\t\t\t// deferred.rejectWith = list.fireWith\r\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\r\n\t\t} );\r\n\r\n\t\t// Make the deferred a promise\r\n\t\tpromise.promise( deferred );\r\n\r\n\t\t// Call given func if any\r\n\t\tif ( func ) {\r\n\t\t\tfunc.call( deferred, deferred );\r\n\t\t}\r\n\r\n\t\t// All done!\r\n\t\treturn deferred;\r\n\t},\r\n\r\n\t// Deferred helper\r\n\twhen: function( singleValue ) {\r\n\t\tvar\r\n\r\n\t\t\t// count of uncompleted subordinates\r\n\t\t\tremaining = arguments.length,\r\n\r\n\t\t\t// count of unprocessed arguments\r\n\t\t\ti = remaining,\r\n\r\n\t\t\t// subordinate fulfillment data\r\n\t\t\tresolveContexts = Array( i ),\r\n\t\t\tresolveValues = slice.call( arguments ),\r\n\r\n\t\t\t// the master Deferred\r\n\t\t\tmaster = jQuery.Deferred(),\r\n\r\n\t\t\t// subordinate callback factory\r\n\t\t\tupdateFunc = function( i ) {\r\n\t\t\t\treturn function( value ) {\r\n\t\t\t\t\tresolveContexts[ i ] = this;\r\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\r\n\t\t\t\t\tif ( !( --remaining ) ) {\r\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t};\r\n\r\n\t\t// Single- and empty arguments are adopted like Promise.resolve\r\n\t\tif ( remaining <= 1 ) {\r\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\r\n\t\t\t\t!remaining );\r\n\r\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\r\n\t\t\tif ( master.state() === \"pending\" ||\r\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\r\n\r\n\t\t\t\treturn master.then();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Multiple arguments are aggregated like Promise.all array elements\r\n\t\twhile ( i-- ) {\r\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\r\n\t\t}\r\n\r\n\t\treturn master.promise();\r\n\t}\r\n} );\r\n\r\n\r\n// These usually indicate a programmer mistake during development,\r\n// warn about them ASAP rather than swallowing them by default.\r\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\r\n\r\njQuery.Deferred.exceptionHook = function( error, stack ) {\r\n\r\n\t// Support: IE 8 - 9 only\r\n\t// Console exists when dev tools are open, which can happen at any time\r\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\r\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\r\n\t}\r\n};\r\n\r\n\r\n\r\n\r\njQuery.readyException = function( error ) {\r\n\twindow.setTimeout( function() {\r\n\t\tthrow error;\r\n\t} );\r\n};\r\n\r\n\r\n\r\n\r\n// The deferred used on DOM ready\r\nvar readyList = jQuery.Deferred();\r\n\r\njQuery.fn.ready = function( fn ) {\r\n\r\n\treadyList\r\n\t\t.then( fn )\r\n\r\n\t\t// Wrap jQuery.readyException in a function so that the lookup\r\n\t\t// happens at the time of error handling instead of callback\r\n\t\t// registration.\r\n\t\t.catch( function( error ) {\r\n\t\t\tjQuery.readyException( error );\r\n\t\t} );\r\n\r\n\treturn this;\r\n};\r\n\r\njQuery.extend( {\r\n\r\n\t// Is the DOM ready to be used? Set to true once it occurs.\r\n\tisReady: false,\r\n\r\n\t// A counter to track how many items to wait for before\r\n\t// the ready event fires. See #6781\r\n\treadyWait: 1,\r\n\r\n\t// Handle when the DOM is ready\r\n\tready: function( wait ) {\r\n\r\n\t\t// Abort if there are pending holds or we're already ready\r\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Remember that the DOM is ready\r\n\t\tjQuery.isReady = true;\r\n\r\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\r\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// If there are functions bound, to execute\r\n\t\treadyList.resolveWith( document, [ jQuery ] );\r\n\t}\r\n} );\r\n\r\njQuery.ready.then = readyList.then;\r\n\r\n// The ready event handler and self cleanup method\r\nfunction completed() {\r\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\r\n\twindow.removeEventListener( \"load\", completed );\r\n\tjQuery.ready();\r\n}\r\n\r\n// Catch cases where $(document).ready() is called\r\n// after the browser event has already occurred.\r\n// Support: IE <=9 - 10 only\r\n// Older IE sometimes signals \"interactive\" too soon\r\nif ( document.readyState === \"complete\" ||\r\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\r\n\r\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\r\n\twindow.setTimeout( jQuery.ready );\r\n\r\n} else {\r\n\r\n\t// Use the handy event callback\r\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\r\n\r\n\t// A fallback to window.onload, that will always work\r\n\twindow.addEventListener( \"load\", completed );\r\n}\r\n\r\n\r\n\r\n\r\n// Multifunctional method to get and set values of a collection\r\n// The value/s can optionally be executed if it's a function\r\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\r\n\tvar i = 0,\r\n\t\tlen = elems.length,\r\n\t\tbulk = key == null;\r\n\r\n\t// Sets many values\r\n\tif ( toType( key ) === \"object\" ) {\r\n\t\tchainable = true;\r\n\t\tfor ( i in key ) {\r\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\r\n\t\t}\r\n\r\n\t// Sets one value\r\n\t} else if ( value !== undefined ) {\r\n\t\tchainable = true;\r\n\r\n\t\tif ( !isFunction( value ) ) {\r\n\t\t\traw = true;\r\n\t\t}\r\n\r\n\t\tif ( bulk ) {\r\n\r\n\t\t\t// Bulk operations run against the entire set\r\n\t\t\tif ( raw ) {\r\n\t\t\t\tfn.call( elems, value );\r\n\t\t\t\tfn = null;\r\n\r\n\t\t\t// ...except when executing function values\r\n\t\t\t} else {\r\n\t\t\t\tbulk = fn;\r\n\t\t\t\tfn = function( elem, key, value ) {\r\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\t\t\tfor ( ; i < len; i++ ) {\r\n\t\t\t\tfn(\r\n\t\t\t\t\telems[ i ], key, raw ?\r\n\t\t\t\t\tvalue :\r\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif ( chainable ) {\r\n\t\treturn elems;\r\n\t}\r\n\r\n\t// Gets\r\n\tif ( bulk ) {\r\n\t\treturn fn.call( elems );\r\n\t}\r\n\r\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\r\n};\r\n\r\n\r\n// Matches dashed string for camelizing\r\nvar rmsPrefix = /^-ms-/,\r\n\trdashAlpha = /-([a-z])/g;\r\n\r\n// Used by camelCase as callback to replace()\r\nfunction fcamelCase( all, letter ) {\r\n\treturn letter.toUpperCase();\r\n}\r\n\r\n// Convert dashed to camelCase; used by the css and data modules\r\n// Support: IE <=9 - 11, Edge 12 - 15\r\n// Microsoft forgot to hump their vendor prefix (#9572)\r\nfunction camelCase( string ) {\r\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\r\n}\r\nvar acceptData = function( owner ) {\r\n\r\n\t// Accepts only:\r\n\t// - Node\r\n\t// - Node.ELEMENT_NODE\r\n\t// - Node.DOCUMENT_NODE\r\n\t// - Object\r\n\t// - Any\r\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\r\n};\r\n\r\n\r\n\r\n\r\nfunction Data() {\r\n\tthis.expando = jQuery.expando + Data.uid++;\r\n}\r\n\r\nData.uid = 1;\r\n\r\nData.prototype = {\r\n\r\n\tcache: function( owner ) {\r\n\r\n\t\t// Check if the owner object already has a cache\r\n\t\tvar value = owner[ this.expando ];\r\n\r\n\t\t// If not, create one\r\n\t\tif ( !value ) {\r\n\t\t\tvalue = {};\r\n\r\n\t\t\t// We can accept data for non-element nodes in modern browsers,\r\n\t\t\t// but we should not, see #8335.\r\n\t\t\t// Always return an empty object.\r\n\t\t\tif ( acceptData( owner ) ) {\r\n\r\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\r\n\t\t\t\t// use plain assignment\r\n\t\t\t\tif ( owner.nodeType ) {\r\n\t\t\t\t\towner[ this.expando ] = value;\r\n\r\n\t\t\t\t// Otherwise secure it in a non-enumerable property\r\n\t\t\t\t// configurable must be true to allow the property to be\r\n\t\t\t\t// deleted when data is removed\r\n\t\t\t\t} else {\r\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\r\n\t\t\t\t\t\tvalue: value,\r\n\t\t\t\t\t\tconfigurable: true\r\n\t\t\t\t\t} );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn value;\r\n\t},\r\n\tset: function( owner, data, value ) {\r\n\t\tvar prop,\r\n\t\t\tcache = this.cache( owner );\r\n\r\n\t\t// Handle: [ owner, key, value ] args\r\n\t\t// Always use camelCase key (gh-2257)\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\tcache[ camelCase( data ) ] = value;\r\n\r\n\t\t// Handle: [ owner, { properties } ] args\r\n\t\t} else {\r\n\r\n\t\t\t// Copy the properties one-by-one to the cache object\r\n\t\t\tfor ( prop in data ) {\r\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn cache;\r\n\t},\r\n\tget: function( owner, key ) {\r\n\t\treturn key === undefined ?\r\n\t\t\tthis.cache( owner ) :\r\n\r\n\t\t\t// Always use camelCase key (gh-2257)\r\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\r\n\t},\r\n\taccess: function( owner, key, value ) {\r\n\r\n\t\t// In cases where either:\r\n\t\t//\r\n\t\t// 1. No key was specified\r\n\t\t// 2. A string key was specified, but no value provided\r\n\t\t//\r\n\t\t// Take the \"read\" path and allow the get method to determine\r\n\t\t// which value to return, respectively either:\r\n\t\t//\r\n\t\t// 1. The entire cache object\r\n\t\t// 2. The data stored at the key\r\n\t\t//\r\n\t\tif ( key === undefined ||\r\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\r\n\r\n\t\t\treturn this.get( owner, key );\r\n\t\t}\r\n\r\n\t\t// When the key is not a string, or both a key and value\r\n\t\t// are specified, set or extend (existing objects) with either:\r\n\t\t//\r\n\t\t// 1. An object of properties\r\n\t\t// 2. A key and value\r\n\t\t//\r\n\t\tthis.set( owner, key, value );\r\n\r\n\t\t// Since the \"set\" path can have two possible entry points\r\n\t\t// return the expected data based on which path was taken[*]\r\n\t\treturn value !== undefined ? value : key;\r\n\t},\r\n\tremove: function( owner, key ) {\r\n\t\tvar i,\r\n\t\t\tcache = owner[ this.expando ];\r\n\r\n\t\tif ( cache === undefined ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( key !== undefined ) {\r\n\r\n\t\t\t// Support array or space separated string of keys\r\n\t\t\tif ( Array.isArray( key ) ) {\r\n\r\n\t\t\t\t// If key is an array of keys...\r\n\t\t\t\t// We always set camelCase keys, so remove that.\r\n\t\t\t\tkey = key.map( camelCase );\r\n\t\t\t} else {\r\n\t\t\t\tkey = camelCase( key );\r\n\r\n\t\t\t\t// If a key with the spaces exists, use it.\r\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\r\n\t\t\t\tkey = key in cache ?\r\n\t\t\t\t\t[ key ] :\r\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\r\n\t\t\t}\r\n\r\n\t\t\ti = key.length;\r\n\r\n\t\t\twhile ( i-- ) {\r\n\t\t\t\tdelete cache[ key[ i ] ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove the expando if there's no more data\r\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\r\n\r\n\t\t\t// Support: Chrome <=35 - 45\r\n\t\t\t// Webkit & Blink performance suffers when deleting properties\r\n\t\t\t// from DOM nodes, so set to undefined instead\r\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\r\n\t\t\tif ( owner.nodeType ) {\r\n\t\t\t\towner[ this.expando ] = undefined;\r\n\t\t\t} else {\r\n\t\t\t\tdelete owner[ this.expando ];\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\thasData: function( owner ) {\r\n\t\tvar cache = owner[ this.expando ];\r\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\r\n\t}\r\n};\r\nvar dataPriv = new Data();\r\n\r\nvar dataUser = new Data();\r\n\r\n\r\n\r\n//\tImplementation Summary\r\n//\r\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\r\n//\t2. Improve the module's maintainability by reducing the storage\r\n//\t\tpaths to a single mechanism.\r\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\r\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\r\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\r\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\r\n\r\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\r\n\trmultiDash = /[A-Z]/g;\r\n\r\nfunction getData( data ) {\r\n\tif ( data === \"true\" ) {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tif ( data === \"false\" ) {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tif ( data === \"null\" ) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Only convert to a number if it doesn't change the string\r\n\tif ( data === +data + \"\" ) {\r\n\t\treturn +data;\r\n\t}\r\n\r\n\tif ( rbrace.test( data ) ) {\r\n\t\treturn JSON.parse( data );\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction dataAttr( elem, key, data ) {\r\n\tvar name;\r\n\r\n\t// If nothing was found internally, try to fetch any\r\n\t// data from the HTML5 data-* attribute\r\n\tif ( data === undefined && elem.nodeType === 1 ) {\r\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\r\n\t\tdata = elem.getAttribute( name );\r\n\r\n\t\tif ( typeof data === \"string\" ) {\r\n\t\t\ttry {\r\n\t\t\t\tdata = getData( data );\r\n\t\t\t} catch ( e ) {}\r\n\r\n\t\t\t// Make sure we set the data so it isn't changed later\r\n\t\t\tdataUser.set( elem, key, data );\r\n\t\t} else {\r\n\t\t\tdata = undefined;\r\n\t\t}\r\n\t}\r\n\treturn data;\r\n}\r\n\r\njQuery.extend( {\r\n\thasData: function( elem ) {\r\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\r\n\t},\r\n\r\n\tdata: function( elem, name, data ) {\r\n\t\treturn dataUser.access( elem, name, data );\r\n\t},\r\n\r\n\tremoveData: function( elem, name ) {\r\n\t\tdataUser.remove( elem, name );\r\n\t},\r\n\r\n\t// TODO: Now that all calls to _data and _removeData have been replaced\r\n\t// with direct calls to dataPriv methods, these can be deprecated.\r\n\t_data: function( elem, name, data ) {\r\n\t\treturn dataPriv.access( elem, name, data );\r\n\t},\r\n\r\n\t_removeData: function( elem, name ) {\r\n\t\tdataPriv.remove( elem, name );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tdata: function( key, value ) {\r\n\t\tvar i, name, data,\r\n\t\t\telem = this[ 0 ],\r\n\t\t\tattrs = elem && elem.attributes;\r\n\r\n\t\t// Gets all values\r\n\t\tif ( key === undefined ) {\r\n\t\t\tif ( this.length ) {\r\n\t\t\t\tdata = dataUser.get( elem );\r\n\r\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\r\n\t\t\t\t\ti = attrs.length;\r\n\t\t\t\t\twhile ( i-- ) {\r\n\r\n\t\t\t\t\t\t// Support: IE 11 only\r\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\r\n\t\t\t\t\t\tif ( attrs[ i ] ) {\r\n\t\t\t\t\t\t\tname = attrs[ i ].name;\r\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\r\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\r\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\t\t}\r\n\r\n\t\t// Sets multiple values\r\n\t\tif ( typeof key === \"object\" ) {\r\n\t\t\treturn this.each( function() {\r\n\t\t\t\tdataUser.set( this, key );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn access( this, function( value ) {\r\n\t\t\tvar data;\r\n\r\n\t\t\t// The calling jQuery object (element matches) is not empty\r\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\r\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\r\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\r\n\t\t\t// throw an exception if an attempt to read a data cache is made.\r\n\t\t\tif ( elem && value === undefined ) {\r\n\r\n\t\t\t\t// Attempt to get data from the cache\r\n\t\t\t\t// The key will always be camelCased in Data\r\n\t\t\t\tdata = dataUser.get( elem, key );\r\n\t\t\t\tif ( data !== undefined ) {\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Attempt to \"discover\" the data in\r\n\t\t\t\t// HTML5 custom data-* attrs\r\n\t\t\t\tdata = dataAttr( elem, key );\r\n\t\t\t\tif ( data !== undefined ) {\r\n\t\t\t\t\treturn data;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// We tried really hard, but the data doesn't exist.\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Set the data...\r\n\t\t\tthis.each( function() {\r\n\r\n\t\t\t\t// We always store the camelCased key\r\n\t\t\t\tdataUser.set( this, key, value );\r\n\t\t\t} );\r\n\t\t}, null, value, arguments.length > 1, null, true );\r\n\t},\r\n\r\n\tremoveData: function( key ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tdataUser.remove( this, key );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\njQuery.extend( {\r\n\tqueue: function( elem, type, data ) {\r\n\t\tvar queue;\r\n\r\n\t\tif ( elem ) {\r\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\r\n\t\t\tqueue = dataPriv.get( elem, type );\r\n\r\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\r\n\t\t\tif ( data ) {\r\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\r\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tqueue.push( data );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn queue || [];\r\n\t\t}\r\n\t},\r\n\r\n\tdequeue: function( elem, type ) {\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\tvar queue = jQuery.queue( elem, type ),\r\n\t\t\tstartLength = queue.length,\r\n\t\t\tfn = queue.shift(),\r\n\t\t\thooks = jQuery._queueHooks( elem, type ),\r\n\t\t\tnext = function() {\r\n\t\t\t\tjQuery.dequeue( elem, type );\r\n\t\t\t};\r\n\r\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\r\n\t\tif ( fn === \"inprogress\" ) {\r\n\t\t\tfn = queue.shift();\r\n\t\t\tstartLength--;\r\n\t\t}\r\n\r\n\t\tif ( fn ) {\r\n\r\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\r\n\t\t\t// automatically dequeued\r\n\t\t\tif ( type === \"fx\" ) {\r\n\t\t\t\tqueue.unshift( \"inprogress\" );\r\n\t\t\t}\r\n\r\n\t\t\t// Clear up the last queue stop function\r\n\t\t\tdelete hooks.stop;\r\n\t\t\tfn.call( elem, next, hooks );\r\n\t\t}\r\n\r\n\t\tif ( !startLength && hooks ) {\r\n\t\t\thooks.empty.fire();\r\n\t\t}\r\n\t},\r\n\r\n\t// Not public - generate a queueHooks object, or return the current one\r\n\t_queueHooks: function( elem, type ) {\r\n\t\tvar key = type + \"queueHooks\";\r\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\r\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\r\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\r\n\t\t\t} )\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tqueue: function( type, data ) {\r\n\t\tvar setter = 2;\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tdata = type;\r\n\t\t\ttype = \"fx\";\r\n\t\t\tsetter--;\r\n\t\t}\r\n\r\n\t\tif ( arguments.length < setter ) {\r\n\t\t\treturn jQuery.queue( this[ 0 ], type );\r\n\t\t}\r\n\r\n\t\treturn data === undefined ?\r\n\t\t\tthis :\r\n\t\t\tthis.each( function() {\r\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\r\n\r\n\t\t\t\t// Ensure a hooks for this queue\r\n\t\t\t\tjQuery._queueHooks( this, type );\r\n\r\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\r\n\t\t\t\t\tjQuery.dequeue( this, type );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t},\r\n\tdequeue: function( type ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.dequeue( this, type );\r\n\t\t} );\r\n\t},\r\n\tclearQueue: function( type ) {\r\n\t\treturn this.queue( type || \"fx\", [] );\r\n\t},\r\n\r\n\t// Get a promise resolved when queues of a certain type\r\n\t// are emptied (fx is the type by default)\r\n\tpromise: function( type, obj ) {\r\n\t\tvar tmp,\r\n\t\t\tcount = 1,\r\n\t\t\tdefer = jQuery.Deferred(),\r\n\t\t\telements = this,\r\n\t\t\ti = this.length,\r\n\t\t\tresolve = function() {\r\n\t\t\t\tif ( !( --count ) ) {\r\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tobj = type;\r\n\t\t\ttype = undefined;\r\n\t\t}\r\n\t\ttype = type || \"fx\";\r\n\r\n\t\twhile ( i-- ) {\r\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\r\n\t\t\tif ( tmp && tmp.empty ) {\r\n\t\t\t\tcount++;\r\n\t\t\t\ttmp.empty.add( resolve );\r\n\t\t\t}\r\n\t\t}\r\n\t\tresolve();\r\n\t\treturn defer.promise( obj );\r\n\t}\r\n} );\r\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\r\n\r\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\r\n\r\n\r\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\r\n\r\nvar isHiddenWithinTree = function( elem, el ) {\r\n\r\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\r\n\t\t// in that case, element will be second argument\r\n\t\telem = el || elem;\r\n\r\n\t\t// Inline style trumps all\r\n\t\treturn elem.style.display === \"none\" ||\r\n\t\t\telem.style.display === \"\" &&\r\n\r\n\t\t\t// Otherwise, check computed style\r\n\t\t\t// Support: Firefox <=43 - 45\r\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\r\n\t\t\t// in the document.\r\n\t\t\tjQuery.contains( elem.ownerDocument, elem ) &&\r\n\r\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\r\n\t};\r\n\r\nvar swap = function( elem, options, callback, args ) {\r\n\tvar ret, name,\r\n\t\told = {};\r\n\r\n\t// Remember the old values, and insert the new ones\r\n\tfor ( name in options ) {\r\n\t\told[ name ] = elem.style[ name ];\r\n\t\telem.style[ name ] = options[ name ];\r\n\t}\r\n\r\n\tret = callback.apply( elem, args || [] );\r\n\r\n\t// Revert the old values\r\n\tfor ( name in options ) {\r\n\t\telem.style[ name ] = old[ name ];\r\n\t}\r\n\r\n\treturn ret;\r\n};\r\n\r\n\r\n\r\n\r\nfunction adjustCSS( elem, prop, valueParts, tween ) {\r\n\tvar adjusted, scale,\r\n\t\tmaxIterations = 20,\r\n\t\tcurrentValue = tween ?\r\n\t\t\tfunction() {\r\n\t\t\t\treturn tween.cur();\r\n\t\t\t} :\r\n\t\t\tfunction() {\r\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\r\n\t\t\t},\r\n\t\tinitial = currentValue(),\r\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\r\n\r\n\t\t// Starting value computation is required for potential unit mismatches\r\n\t\tinitialInUnit = ( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\r\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\r\n\r\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\r\n\r\n\t\t// Support: Firefox <=54\r\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\r\n\t\tinitial = initial / 2;\r\n\r\n\t\t// Trust units reported by jQuery.css\r\n\t\tunit = unit || initialInUnit[ 3 ];\r\n\r\n\t\t// Iteratively approximate from a nonzero starting point\r\n\t\tinitialInUnit = +initial || 1;\r\n\r\n\t\twhile ( maxIterations-- ) {\r\n\r\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\r\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\r\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\r\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\r\n\t\t\t\tmaxIterations = 0;\r\n\t\t\t}\r\n\t\t\tinitialInUnit = initialInUnit / scale;\r\n\r\n\t\t}\r\n\r\n\t\tinitialInUnit = initialInUnit * 2;\r\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\r\n\r\n\t\t// Make sure we update the tween properties later on\r\n\t\tvalueParts = valueParts || [];\r\n\t}\r\n\r\n\tif ( valueParts ) {\r\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\r\n\r\n\t\t// Apply relative offset (+=/-=) if specified\r\n\t\tadjusted = valueParts[ 1 ] ?\r\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\r\n\t\t\t+valueParts[ 2 ];\r\n\t\tif ( tween ) {\r\n\t\t\ttween.unit = unit;\r\n\t\t\ttween.start = initialInUnit;\r\n\t\t\ttween.end = adjusted;\r\n\t\t}\r\n\t}\r\n\treturn adjusted;\r\n}\r\n\r\n\r\nvar defaultDisplayMap = {};\r\n\r\nfunction getDefaultDisplay( elem ) {\r\n\tvar temp,\r\n\t\tdoc = elem.ownerDocument,\r\n\t\tnodeName = elem.nodeName,\r\n\t\tdisplay = defaultDisplayMap[ nodeName ];\r\n\r\n\tif ( display ) {\r\n\t\treturn display;\r\n\t}\r\n\r\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\r\n\tdisplay = jQuery.css( temp, \"display\" );\r\n\r\n\ttemp.parentNode.removeChild( temp );\r\n\r\n\tif ( display === \"none\" ) {\r\n\t\tdisplay = \"block\";\r\n\t}\r\n\tdefaultDisplayMap[ nodeName ] = display;\r\n\r\n\treturn display;\r\n}\r\n\r\nfunction showHide( elements, show ) {\r\n\tvar display, elem,\r\n\t\tvalues = [],\r\n\t\tindex = 0,\r\n\t\tlength = elements.length;\r\n\r\n\t// Determine new display value for elements that need to change\r\n\tfor ( ; index < length; index++ ) {\r\n\t\telem = elements[ index ];\r\n\t\tif ( !elem.style ) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tdisplay = elem.style.display;\r\n\t\tif ( show ) {\r\n\r\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\r\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\r\n\t\t\t// inline or about-to-be-restored)\r\n\t\t\tif ( display === \"none\" ) {\r\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\r\n\t\t\t\tif ( !values[ index ] ) {\r\n\t\t\t\t\telem.style.display = \"\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\r\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif ( display !== \"none\" ) {\r\n\t\t\t\tvalues[ index ] = \"none\";\r\n\r\n\t\t\t\t// Remember what we're overwriting\r\n\t\t\t\tdataPriv.set( elem, \"display\", display );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Set the display of the elements in a second loop to avoid constant reflow\r\n\tfor ( index = 0; index < length; index++ ) {\r\n\t\tif ( values[ index ] != null ) {\r\n\t\t\telements[ index ].style.display = values[ index ];\r\n\t\t}\r\n\t}\r\n\r\n\treturn elements;\r\n}\r\n\r\njQuery.fn.extend( {\r\n\tshow: function() {\r\n\t\treturn showHide( this, true );\r\n\t},\r\n\thide: function() {\r\n\t\treturn showHide( this );\r\n\t},\r\n\ttoggle: function( state ) {\r\n\t\tif ( typeof state === \"boolean\" ) {\r\n\t\t\treturn state ? this.show() : this.hide();\r\n\t\t}\r\n\r\n\t\treturn this.each( function() {\r\n\t\t\tif ( isHiddenWithinTree( this ) ) {\r\n\t\t\t\tjQuery( this ).show();\r\n\t\t\t} else {\r\n\t\t\t\tjQuery( this ).hide();\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n} );\r\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\r\n\r\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]+)/i );\r\n\r\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\r\n\r\n\r\n\r\n// We have to close these tags to support XHTML (#13200)\r\nvar wrapMap = {\r\n\r\n\t// Support: IE <=9 only\r\n\toption: [ 1, \"\" ],\r\n\r\n\t// XHTML parsers do not magically insert elements in the\r\n\t// same way that tag soup parsers do. So we cannot shorten\r\n\t// this by omitting or other required elements.\r\n\tthead: [ 1, \"\", \"
\" ],\r\n\tcol: [ 2, \"\", \"
\" ],\r\n\ttr: [ 2, \"\", \"
\" ],\r\n\ttd: [ 3, \"\", \"
\" ],\r\n\r\n\t_default: [ 0, \"\", \"\" ]\r\n};\r\n\r\n// Support: IE <=9 only\r\nwrapMap.optgroup = wrapMap.option;\r\n\r\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\r\nwrapMap.th = wrapMap.td;\r\n\r\n\r\nfunction getAll( context, tag ) {\r\n\r\n\t// Support: IE <=9 - 11 only\r\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\r\n\tvar ret;\r\n\r\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\r\n\t\tret = context.getElementsByTagName( tag || \"*\" );\r\n\r\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\r\n\t\tret = context.querySelectorAll( tag || \"*\" );\r\n\r\n\t} else {\r\n\t\tret = [];\r\n\t}\r\n\r\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\r\n\t\treturn jQuery.merge( [ context ], ret );\r\n\t}\r\n\r\n\treturn ret;\r\n}\r\n\r\n\r\n// Mark scripts as having already been evaluated\r\nfunction setGlobalEval( elems, refElements ) {\r\n\tvar i = 0,\r\n\t\tl = elems.length;\r\n\r\n\tfor ( ; i < l; i++ ) {\r\n\t\tdataPriv.set(\r\n\t\t\telems[ i ],\r\n\t\t\t\"globalEval\",\r\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\r\n\t\t);\r\n\t}\r\n}\r\n\r\n\r\nvar rhtml = /<|&#?\\w+;/;\r\n\r\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\r\n\tvar elem, tmp, tag, wrap, contains, j,\r\n\t\tfragment = context.createDocumentFragment(),\r\n\t\tnodes = [],\r\n\t\ti = 0,\r\n\t\tl = elems.length;\r\n\r\n\tfor ( ; i < l; i++ ) {\r\n\t\telem = elems[ i ];\r\n\r\n\t\tif ( elem || elem === 0 ) {\r\n\r\n\t\t\t// Add nodes directly\r\n\t\t\tif ( toType( elem ) === \"object\" ) {\r\n\r\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\r\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\r\n\r\n\t\t\t// Convert non-html into a text node\r\n\t\t\t} else if ( !rhtml.test( elem ) ) {\r\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\r\n\r\n\t\t\t// Convert html into DOM nodes\r\n\t\t\t} else {\r\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\r\n\r\n\t\t\t\t// Deserialize a standard representation\r\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\r\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\r\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\r\n\r\n\t\t\t\t// Descend through wrappers to the right content\r\n\t\t\t\tj = wrap[ 0 ];\r\n\t\t\t\twhile ( j-- ) {\r\n\t\t\t\t\ttmp = tmp.lastChild;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\r\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\r\n\r\n\t\t\t\t// Remember the top-level container\r\n\t\t\t\ttmp = fragment.firstChild;\r\n\r\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\r\n\t\t\t\ttmp.textContent = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Remove wrapper from fragment\r\n\tfragment.textContent = \"\";\r\n\r\n\ti = 0;\r\n\twhile ( ( elem = nodes[ i++ ] ) ) {\r\n\r\n\t\t// Skip elements already in the context collection (trac-4087)\r\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\r\n\t\t\tif ( ignored ) {\r\n\t\t\t\tignored.push( elem );\r\n\t\t\t}\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tcontains = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\t// Append to fragment\r\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tif ( contains ) {\r\n\t\t\tsetGlobalEval( tmp );\r\n\t\t}\r\n\r\n\t\t// Capture executables\r\n\t\tif ( scripts ) {\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\r\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\r\n\t\t\t\t\tscripts.push( elem );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn fragment;\r\n}\r\n\r\n\r\n( function() {\r\n\tvar fragment = document.createDocumentFragment(),\r\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\r\n\t\tinput = document.createElement( \"input\" );\r\n\r\n\t// Support: Android 4.0 - 4.3 only\r\n\t// Check state lost if the name is set (#11217)\r\n\t// Support: Windows Web Apps (WWA)\r\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\r\n\tinput.setAttribute( \"type\", \"radio\" );\r\n\tinput.setAttribute( \"checked\", \"checked\" );\r\n\tinput.setAttribute( \"name\", \"t\" );\r\n\r\n\tdiv.appendChild( input );\r\n\r\n\t// Support: Android <=4.1 only\r\n\t// Older WebKit doesn't clone checked state correctly in fragments\r\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\r\n\r\n\t// Support: IE <=11 only\r\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\r\n\tdiv.innerHTML = \"\";\r\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\r\n} )();\r\nvar documentElement = document.documentElement;\r\n\r\n\r\n\r\nvar\r\n\trkeyEvent = /^key/,\r\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\r\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\r\n\r\nfunction returnTrue() {\r\n\treturn true;\r\n}\r\n\r\nfunction returnFalse() {\r\n\treturn false;\r\n}\r\n\r\n// Support: IE <=9 only\r\n// See #13393 for more info\r\nfunction safeActiveElement() {\r\n\ttry {\r\n\t\treturn document.activeElement;\r\n\t} catch ( err ) { }\r\n}\r\n\r\nfunction on( elem, types, selector, data, fn, one ) {\r\n\tvar origFn, type;\r\n\r\n\t// Types can be a map of types/handlers\r\n\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t// ( types-Object, selector, data )\r\n\t\tif ( typeof selector !== \"string\" ) {\r\n\r\n\t\t\t// ( types-Object, data )\r\n\t\t\tdata = data || selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tfor ( type in types ) {\r\n\t\t\ton( elem, type, selector, data, types[ type ], one );\r\n\t\t}\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( data == null && fn == null ) {\r\n\r\n\t\t// ( types, fn )\r\n\t\tfn = selector;\r\n\t\tdata = selector = undefined;\r\n\t} else if ( fn == null ) {\r\n\t\tif ( typeof selector === \"string\" ) {\r\n\r\n\t\t\t// ( types, selector, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = undefined;\r\n\t\t} else {\r\n\r\n\t\t\t// ( types, data, fn )\r\n\t\t\tfn = data;\r\n\t\t\tdata = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t}\r\n\tif ( fn === false ) {\r\n\t\tfn = returnFalse;\r\n\t} else if ( !fn ) {\r\n\t\treturn elem;\r\n\t}\r\n\r\n\tif ( one === 1 ) {\r\n\t\torigFn = fn;\r\n\t\tfn = function( event ) {\r\n\r\n\t\t\t// Can use an empty set, since event contains the info\r\n\t\t\tjQuery().off( event );\r\n\t\t\treturn origFn.apply( this, arguments );\r\n\t\t};\r\n\r\n\t\t// Use same guid so caller can remove using origFn\r\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\r\n\t}\r\n\treturn elem.each( function() {\r\n\t\tjQuery.event.add( this, types, fn, data, selector );\r\n\t} );\r\n}\r\n\r\n/*\r\n * Helper functions for managing events -- not part of the public interface.\r\n * Props to Dean Edwards' addEvent library for many of the ideas.\r\n */\r\njQuery.event = {\r\n\r\n\tglobal: {},\r\n\r\n\tadd: function( elem, types, handler, data, selector ) {\r\n\r\n\t\tvar handleObjIn, eventHandle, tmp,\r\n\t\t\tevents, t, handleObj,\r\n\t\t\tspecial, handlers, type, namespaces, origType,\r\n\t\t\telemData = dataPriv.get( elem );\r\n\r\n\t\t// Don't attach events to noData or text/comment nodes (but allow plain objects)\r\n\t\tif ( !elemData ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Caller can pass in an object of custom data in lieu of the handler\r\n\t\tif ( handler.handler ) {\r\n\t\t\thandleObjIn = handler;\r\n\t\t\thandler = handleObjIn.handler;\r\n\t\t\tselector = handleObjIn.selector;\r\n\t\t}\r\n\r\n\t\t// Ensure that invalid selectors throw exceptions at attach time\r\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\r\n\t\tif ( selector ) {\r\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\r\n\t\t}\r\n\r\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\r\n\t\tif ( !handler.guid ) {\r\n\t\t\thandler.guid = jQuery.guid++;\r\n\t\t}\r\n\r\n\t\t// Init the element's event structure and main handler, if this is the first\r\n\t\tif ( !( events = elemData.events ) ) {\r\n\t\t\tevents = elemData.events = {};\r\n\t\t}\r\n\t\tif ( !( eventHandle = elemData.handle ) ) {\r\n\t\t\teventHandle = elemData.handle = function( e ) {\r\n\r\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\r\n\t\t\t\t// when an event is called after a page has unloaded\r\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\r\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\t// Handle multiple events separated by a space\r\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\t// If event changes its type, use the special event handlers for the changed type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// If selector defined, determine special event api type, otherwise given type\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\r\n\t\t\t// Update special based on newly reset type\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\r\n\t\t\t// handleObj is passed to all event handlers\r\n\t\t\thandleObj = jQuery.extend( {\r\n\t\t\t\ttype: type,\r\n\t\t\t\torigType: origType,\r\n\t\t\t\tdata: data,\r\n\t\t\t\thandler: handler,\r\n\t\t\t\tguid: handler.guid,\r\n\t\t\t\tselector: selector,\r\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\r\n\t\t\t\tnamespace: namespaces.join( \".\" )\r\n\t\t\t}, handleObjIn );\r\n\r\n\t\t\t// Init the event handler queue if we're the first\r\n\t\t\tif ( !( handlers = events[ type ] ) ) {\r\n\t\t\t\thandlers = events[ type ] = [];\r\n\t\t\t\thandlers.delegateCount = 0;\r\n\r\n\t\t\t\t// Only use addEventListener if the special events handler returns false\r\n\t\t\t\tif ( !special.setup ||\r\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\r\n\r\n\t\t\t\t\tif ( elem.addEventListener ) {\r\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ( special.add ) {\r\n\t\t\t\tspecial.add.call( elem, handleObj );\r\n\r\n\t\t\t\tif ( !handleObj.handler.guid ) {\r\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Add to the element's handler list, delegates in front\r\n\t\t\tif ( selector ) {\r\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\r\n\t\t\t} else {\r\n\t\t\t\thandlers.push( handleObj );\r\n\t\t\t}\r\n\r\n\t\t\t// Keep track of which events have ever been used, for event optimization\r\n\t\t\tjQuery.event.global[ type ] = true;\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t// Detach an event or set of events from an element\r\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\r\n\r\n\t\tvar j, origCount, tmp,\r\n\t\t\tevents, t, handleObj,\r\n\t\t\tspecial, handlers, type, namespaces, origType,\r\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\r\n\r\n\t\tif ( !elemData || !( events = elemData.events ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Once for each type.namespace in types; type may be omitted\r\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\r\n\t\tt = types.length;\r\n\t\twhile ( t-- ) {\r\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\r\n\t\t\ttype = origType = tmp[ 1 ];\r\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\r\n\r\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\r\n\t\t\tif ( !type ) {\r\n\t\t\t\tfor ( type in events ) {\r\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\r\n\t\t\t\t}\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\r\n\t\t\thandlers = events[ type ] || [];\r\n\t\t\ttmp = tmp[ 2 ] &&\r\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\r\n\r\n\t\t\t// Remove matching events\r\n\t\t\torigCount = j = handlers.length;\r\n\t\t\twhile ( j-- ) {\r\n\t\t\t\thandleObj = handlers[ j ];\r\n\r\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\r\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\r\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\r\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\r\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\r\n\t\t\t\t\thandlers.splice( j, 1 );\r\n\r\n\t\t\t\t\tif ( handleObj.selector ) {\r\n\t\t\t\t\t\thandlers.delegateCount--;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( special.remove ) {\r\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\r\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\r\n\t\t\tif ( origCount && !handlers.length ) {\r\n\t\t\t\tif ( !special.teardown ||\r\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\r\n\r\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete events[ type ];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Remove data and the expando if it's no longer used\r\n\t\tif ( jQuery.isEmptyObject( events ) ) {\r\n\t\t\tdataPriv.remove( elem, \"handle events\" );\r\n\t\t}\r\n\t},\r\n\r\n\tdispatch: function( nativeEvent ) {\r\n\r\n\t\t// Make a writable jQuery.Event from the native event object\r\n\t\tvar event = jQuery.event.fix( nativeEvent );\r\n\r\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\r\n\t\t\targs = new Array( arguments.length ),\r\n\t\t\thandlers = ( dataPriv.get( this, \"events\" ) || {} )[ event.type ] || [],\r\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\r\n\r\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\r\n\t\targs[ 0 ] = event;\r\n\r\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\r\n\t\t\targs[ i ] = arguments[ i ];\r\n\t\t}\r\n\r\n\t\tevent.delegateTarget = this;\r\n\r\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\r\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine handlers\r\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\r\n\r\n\t\t// Run delegates first; they may want to stop propagation beneath us\r\n\t\ti = 0;\r\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\t\t\tevent.currentTarget = matched.elem;\r\n\r\n\t\t\tj = 0;\r\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\r\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\r\n\r\n\t\t\t\t// Triggered event must either 1) have no namespace, or 2) have namespace(s)\r\n\t\t\t\t// a subset or equal to those in the bound event (both can have no namespace).\r\n\t\t\t\tif ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {\r\n\r\n\t\t\t\t\tevent.handleObj = handleObj;\r\n\t\t\t\t\tevent.data = handleObj.data;\r\n\r\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\r\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\r\n\r\n\t\t\t\t\tif ( ret !== undefined ) {\r\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\r\n\t\t\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\t\t\tevent.stopPropagation();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Call the postDispatch hook for the mapped type\r\n\t\tif ( special.postDispatch ) {\r\n\t\t\tspecial.postDispatch.call( this, event );\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\thandlers: function( event, handlers ) {\r\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\r\n\t\t\thandlerQueue = [],\r\n\t\t\tdelegateCount = handlers.delegateCount,\r\n\t\t\tcur = event.target;\r\n\r\n\t\t// Find delegate handlers\r\n\t\tif ( delegateCount &&\r\n\r\n\t\t\t// Support: IE <=9\r\n\t\t\t// Black-hole SVG instance trees (trac-13180)\r\n\t\t\tcur.nodeType &&\r\n\r\n\t\t\t// Support: Firefox <=42\r\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\r\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\r\n\t\t\t// Support: IE 11 only\r\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\r\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\r\n\r\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\r\n\r\n\t\t\t\t// Don't check non-elements (#13208)\r\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\r\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\r\n\t\t\t\t\tmatchedHandlers = [];\r\n\t\t\t\t\tmatchedSelectors = {};\r\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\r\n\t\t\t\t\t\thandleObj = handlers[ i ];\r\n\r\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\r\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\r\n\r\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\r\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\r\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\r\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\r\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ( matchedHandlers.length ) {\r\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Add the remaining (directly-bound) handlers\r\n\t\tcur = this;\r\n\t\tif ( delegateCount < handlers.length ) {\r\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\r\n\t\t}\r\n\r\n\t\treturn handlerQueue;\r\n\t},\r\n\r\n\taddProp: function( name, hook ) {\r\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\r\n\t\t\tenumerable: true,\r\n\t\t\tconfigurable: true,\r\n\r\n\t\t\tget: isFunction( hook ) ?\r\n\t\t\t\tfunction() {\r\n\t\t\t\t\tif ( this.originalEvent ) {\r\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\r\n\t\t\t\t\t}\r\n\t\t\t\t} :\r\n\t\t\t\tfunction() {\r\n\t\t\t\t\tif ( this.originalEvent ) {\r\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\r\n\t\t\tset: function( value ) {\r\n\t\t\t\tObject.defineProperty( this, name, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tconfigurable: true,\r\n\t\t\t\t\twritable: true,\r\n\t\t\t\t\tvalue: value\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tfix: function( originalEvent ) {\r\n\t\treturn originalEvent[ jQuery.expando ] ?\r\n\t\t\toriginalEvent :\r\n\t\t\tnew jQuery.Event( originalEvent );\r\n\t},\r\n\r\n\tspecial: {\r\n\t\tload: {\r\n\r\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\r\n\t\t\tnoBubble: true\r\n\t\t},\r\n\t\tfocus: {\r\n\r\n\t\t\t// Fire native event if possible so blur/focus sequence is correct\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this !== safeActiveElement() && this.focus ) {\r\n\t\t\t\t\tthis.focus();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusin\"\r\n\t\t},\r\n\t\tblur: {\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this === safeActiveElement() && this.blur ) {\r\n\t\t\t\t\tthis.blur();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tdelegateType: \"focusout\"\r\n\t\t},\r\n\t\tclick: {\r\n\r\n\t\t\t// For checkbox, fire native event so checked state will be right\r\n\t\t\ttrigger: function() {\r\n\t\t\t\tif ( this.type === \"checkbox\" && this.click && nodeName( this, \"input\" ) ) {\r\n\t\t\t\t\tthis.click();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\t// For cross-browser consistency, don't fire native .click() on links\r\n\t\t\t_default: function( event ) {\r\n\t\t\t\treturn nodeName( event.target, \"a\" );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tbeforeunload: {\r\n\t\t\tpostDispatch: function( event ) {\r\n\r\n\t\t\t\t// Support: Firefox 20+\r\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\r\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\r\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\njQuery.removeEvent = function( elem, type, handle ) {\r\n\r\n\t// This \"if\" is needed for plain objects\r\n\tif ( elem.removeEventListener ) {\r\n\t\telem.removeEventListener( type, handle );\r\n\t}\r\n};\r\n\r\njQuery.Event = function( src, props ) {\r\n\r\n\t// Allow instantiation without the 'new' keyword\r\n\tif ( !( this instanceof jQuery.Event ) ) {\r\n\t\treturn new jQuery.Event( src, props );\r\n\t}\r\n\r\n\t// Event object\r\n\tif ( src && src.type ) {\r\n\t\tthis.originalEvent = src;\r\n\t\tthis.type = src.type;\r\n\r\n\t\t// Events bubbling up the document may have been marked as prevented\r\n\t\t// by a handler lower down the tree; reflect the correct value.\r\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\r\n\t\t\t\tsrc.defaultPrevented === undefined &&\r\n\r\n\t\t\t\t// Support: Android <=2.3 only\r\n\t\t\t\tsrc.returnValue === false ?\r\n\t\t\treturnTrue :\r\n\t\t\treturnFalse;\r\n\r\n\t\t// Create target properties\r\n\t\t// Support: Safari <=6 - 7 only\r\n\t\t// Target should not be a text node (#504, #13143)\r\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\r\n\t\t\tsrc.target.parentNode :\r\n\t\t\tsrc.target;\r\n\r\n\t\tthis.currentTarget = src.currentTarget;\r\n\t\tthis.relatedTarget = src.relatedTarget;\r\n\r\n\t// Event type\r\n\t} else {\r\n\t\tthis.type = src;\r\n\t}\r\n\r\n\t// Put explicitly provided properties onto the event object\r\n\tif ( props ) {\r\n\t\tjQuery.extend( this, props );\r\n\t}\r\n\r\n\t// Create a timestamp if incoming event doesn't have one\r\n\tthis.timeStamp = src && src.timeStamp || Date.now();\r\n\r\n\t// Mark it as fixed\r\n\tthis[ jQuery.expando ] = true;\r\n};\r\n\r\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\r\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\r\njQuery.Event.prototype = {\r\n\tconstructor: jQuery.Event,\r\n\tisDefaultPrevented: returnFalse,\r\n\tisPropagationStopped: returnFalse,\r\n\tisImmediatePropagationStopped: returnFalse,\r\n\tisSimulated: false,\r\n\r\n\tpreventDefault: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isDefaultPrevented = returnTrue;\r\n\r\n\t\tif ( e && !this.isSimulated ) {\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\t},\r\n\tstopPropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isPropagationStopped = returnTrue;\r\n\r\n\t\tif ( e && !this.isSimulated ) {\r\n\t\t\te.stopPropagation();\r\n\t\t}\r\n\t},\r\n\tstopImmediatePropagation: function() {\r\n\t\tvar e = this.originalEvent;\r\n\r\n\t\tthis.isImmediatePropagationStopped = returnTrue;\r\n\r\n\t\tif ( e && !this.isSimulated ) {\r\n\t\t\te.stopImmediatePropagation();\r\n\t\t}\r\n\r\n\t\tthis.stopPropagation();\r\n\t}\r\n};\r\n\r\n// Includes all common event props including KeyEvent and MouseEvent specific props\r\njQuery.each( {\r\n\taltKey: true,\r\n\tbubbles: true,\r\n\tcancelable: true,\r\n\tchangedTouches: true,\r\n\tctrlKey: true,\r\n\tdetail: true,\r\n\teventPhase: true,\r\n\tmetaKey: true,\r\n\tpageX: true,\r\n\tpageY: true,\r\n\tshiftKey: true,\r\n\tview: true,\r\n\t\"char\": true,\r\n\tcharCode: true,\r\n\tkey: true,\r\n\tkeyCode: true,\r\n\tbutton: true,\r\n\tbuttons: true,\r\n\tclientX: true,\r\n\tclientY: true,\r\n\toffsetX: true,\r\n\toffsetY: true,\r\n\tpointerId: true,\r\n\tpointerType: true,\r\n\tscreenX: true,\r\n\tscreenY: true,\r\n\ttargetTouches: true,\r\n\ttoElement: true,\r\n\ttouches: true,\r\n\r\n\twhich: function( event ) {\r\n\t\tvar button = event.button;\r\n\r\n\t\t// Add which for key events\r\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\r\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\r\n\t\t}\r\n\r\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\r\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\r\n\t\t\tif ( button & 1 ) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\tif ( button & 2 ) {\r\n\t\t\t\treturn 3;\r\n\t\t\t}\r\n\r\n\t\t\tif ( button & 4 ) {\r\n\t\t\t\treturn 2;\r\n\t\t\t}\r\n\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn event.which;\r\n\t}\r\n}, jQuery.event.addProp );\r\n\r\n// Create mouseenter/leave events using mouseover/out and event-time checks\r\n// so that event delegation works in jQuery.\r\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\r\n//\r\n// Support: Safari 7 only\r\n// Safari sends mouseenter too often; see:\r\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\r\n// for the description of the bug (it existed in older Chrome versions as well).\r\njQuery.each( {\r\n\tmouseenter: \"mouseover\",\r\n\tmouseleave: \"mouseout\",\r\n\tpointerenter: \"pointerover\",\r\n\tpointerleave: \"pointerout\"\r\n}, function( orig, fix ) {\r\n\tjQuery.event.special[ orig ] = {\r\n\t\tdelegateType: fix,\r\n\t\tbindType: fix,\r\n\r\n\t\thandle: function( event ) {\r\n\t\t\tvar ret,\r\n\t\t\t\ttarget = this,\r\n\t\t\t\trelated = event.relatedTarget,\r\n\t\t\t\thandleObj = event.handleObj;\r\n\r\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\r\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\r\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\r\n\t\t\t\tevent.type = handleObj.origType;\r\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\r\n\t\t\t\tevent.type = fix;\r\n\t\t\t}\r\n\t\t\treturn ret;\r\n\t\t}\r\n\t};\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\r\n\ton: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn );\r\n\t},\r\n\tone: function( types, selector, data, fn ) {\r\n\t\treturn on( this, types, selector, data, fn, 1 );\r\n\t},\r\n\toff: function( types, selector, fn ) {\r\n\t\tvar handleObj, type;\r\n\t\tif ( types && types.preventDefault && types.handleObj ) {\r\n\r\n\t\t\t// ( event ) dispatched jQuery.Event\r\n\t\t\thandleObj = types.handleObj;\r\n\t\t\tjQuery( types.delegateTarget ).off(\r\n\t\t\t\thandleObj.namespace ?\r\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\r\n\t\t\t\t\thandleObj.origType,\r\n\t\t\t\thandleObj.selector,\r\n\t\t\t\thandleObj.handler\r\n\t\t\t);\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( typeof types === \"object\" ) {\r\n\r\n\t\t\t// ( types-object [, selector] )\r\n\t\t\tfor ( type in types ) {\r\n\t\t\t\tthis.off( type, selector, types[ type ] );\r\n\t\t\t}\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\tif ( selector === false || typeof selector === \"function\" ) {\r\n\r\n\t\t\t// ( types [, fn] )\r\n\t\t\tfn = selector;\r\n\t\t\tselector = undefined;\r\n\t\t}\r\n\t\tif ( fn === false ) {\r\n\t\t\tfn = returnFalse;\r\n\t\t}\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.remove( this, types, fn, selector );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\n\r\nvar\r\n\r\n\t/* eslint-disable max-len */\r\n\r\n\t// See https://github.com/eslint/eslint/issues/3229\r\n\trxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)[^>]*)\\/>/gi,\r\n\r\n\t/* eslint-enable */\r\n\r\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\r\n\t// In IE/Edge using regex groups here causes severe slowdowns.\r\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\r\n\trnoInnerhtml = /\\s*$/g;\r\n\r\n// Prefer a tbody over its parent table for containing new rows\r\nfunction manipulationTarget( elem, content ) {\r\n\tif ( nodeName( elem, \"table\" ) &&\r\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\r\n\r\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\n// Replace/restore the type attribute of script elements for safe DOM manipulation\r\nfunction disableScript( elem ) {\r\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\r\n\treturn elem;\r\n}\r\nfunction restoreScript( elem ) {\r\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\r\n\t\telem.type = elem.type.slice( 5 );\r\n\t} else {\r\n\t\telem.removeAttribute( \"type\" );\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\nfunction cloneCopyEvent( src, dest ) {\r\n\tvar i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;\r\n\r\n\tif ( dest.nodeType !== 1 ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// 1. Copy private data: events, handlers, etc.\r\n\tif ( dataPriv.hasData( src ) ) {\r\n\t\tpdataOld = dataPriv.access( src );\r\n\t\tpdataCur = dataPriv.set( dest, pdataOld );\r\n\t\tevents = pdataOld.events;\r\n\r\n\t\tif ( events ) {\r\n\t\t\tdelete pdataCur.handle;\r\n\t\t\tpdataCur.events = {};\r\n\r\n\t\t\tfor ( type in events ) {\r\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\r\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// 2. Copy user data\r\n\tif ( dataUser.hasData( src ) ) {\r\n\t\tudataOld = dataUser.access( src );\r\n\t\tudataCur = jQuery.extend( {}, udataOld );\r\n\r\n\t\tdataUser.set( dest, udataCur );\r\n\t}\r\n}\r\n\r\n// Fix IE bugs, see support tests\r\nfunction fixInput( src, dest ) {\r\n\tvar nodeName = dest.nodeName.toLowerCase();\r\n\r\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\r\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\r\n\t\tdest.checked = src.checked;\r\n\r\n\t// Fails to return the selected option to the default selected state when cloning options\r\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\r\n\t\tdest.defaultValue = src.defaultValue;\r\n\t}\r\n}\r\n\r\nfunction domManip( collection, args, callback, ignored ) {\r\n\r\n\t// Flatten any nested arrays\r\n\targs = concat.apply( [], args );\r\n\r\n\tvar fragment, first, scripts, hasScripts, node, doc,\r\n\t\ti = 0,\r\n\t\tl = collection.length,\r\n\t\tiNoClone = l - 1,\r\n\t\tvalue = args[ 0 ],\r\n\t\tvalueIsFunction = isFunction( value );\r\n\r\n\t// We can't cloneNode fragments that contain checked, in WebKit\r\n\tif ( valueIsFunction ||\r\n\t\t\t( l > 1 && typeof value === \"string\" &&\r\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\r\n\t\treturn collection.each( function( index ) {\r\n\t\t\tvar self = collection.eq( index );\r\n\t\t\tif ( valueIsFunction ) {\r\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\r\n\t\t\t}\r\n\t\t\tdomManip( self, args, callback, ignored );\r\n\t\t} );\r\n\t}\r\n\r\n\tif ( l ) {\r\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\r\n\t\tfirst = fragment.firstChild;\r\n\r\n\t\tif ( fragment.childNodes.length === 1 ) {\r\n\t\t\tfragment = first;\r\n\t\t}\r\n\r\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\r\n\t\tif ( first || ignored ) {\r\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\r\n\t\t\thasScripts = scripts.length;\r\n\r\n\t\t\t// Use the original fragment for the last item\r\n\t\t\t// instead of the first because it can end up\r\n\t\t\t// being emptied incorrectly in certain situations (#8070).\r\n\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\tnode = fragment;\r\n\r\n\t\t\t\tif ( i !== iNoClone ) {\r\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\r\n\r\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\r\n\t\t\t\t\tif ( hasScripts ) {\r\n\r\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\r\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcallback.call( collection[ i ], node, i );\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasScripts ) {\r\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\r\n\r\n\t\t\t\t// Reenable scripts\r\n\t\t\t\tjQuery.map( scripts, restoreScript );\r\n\r\n\t\t\t\t// Evaluate executable scripts on first document insertion\r\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\r\n\t\t\t\t\tnode = scripts[ i ];\r\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\r\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\r\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\r\n\r\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\r\n\r\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\r\n\t\t\t\t\t\t\tif ( jQuery._evalUrl ) {\r\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), doc, node );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn collection;\r\n}\r\n\r\nfunction remove( elem, selector, keepData ) {\r\n\tvar node,\r\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\r\n\t\ti = 0;\r\n\r\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\r\n\t\tif ( !keepData && node.nodeType === 1 ) {\r\n\t\t\tjQuery.cleanData( getAll( node ) );\r\n\t\t}\r\n\r\n\t\tif ( node.parentNode ) {\r\n\t\t\tif ( keepData && jQuery.contains( node.ownerDocument, node ) ) {\r\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\r\n\t\t\t}\r\n\t\t\tnode.parentNode.removeChild( node );\r\n\t\t}\r\n\t}\r\n\r\n\treturn elem;\r\n}\r\n\r\njQuery.extend( {\r\n\thtmlPrefilter: function( html ) {\r\n\t\treturn html.replace( rxhtmlTag, \"<$1>\" );\r\n\t},\r\n\r\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\r\n\t\tvar i, l, srcElements, destElements,\r\n\t\t\tclone = elem.cloneNode( true ),\r\n\t\t\tinPage = jQuery.contains( elem.ownerDocument, elem );\r\n\r\n\t\t// Fix IE cloning issues\r\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\r\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\r\n\r\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\r\n\t\t\tdestElements = getAll( clone );\r\n\t\t\tsrcElements = getAll( elem );\r\n\r\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\r\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Copy the events from the original to the clone\r\n\t\tif ( dataAndEvents ) {\r\n\t\t\tif ( deepDataAndEvents ) {\r\n\t\t\t\tsrcElements = srcElements || getAll( elem );\r\n\t\t\t\tdestElements = destElements || getAll( clone );\r\n\r\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\r\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tcloneCopyEvent( elem, clone );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Preserve script evaluation history\r\n\t\tdestElements = getAll( clone, \"script\" );\r\n\t\tif ( destElements.length > 0 ) {\r\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\r\n\t\t}\r\n\r\n\t\t// Return the cloned set\r\n\t\treturn clone;\r\n\t},\r\n\r\n\tcleanData: function( elems ) {\r\n\t\tvar data, elem, type,\r\n\t\t\tspecial = jQuery.event.special,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\r\n\t\t\tif ( acceptData( elem ) ) {\r\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\r\n\t\t\t\t\tif ( data.events ) {\r\n\t\t\t\t\t\tfor ( type in data.events ) {\r\n\t\t\t\t\t\t\tif ( special[ type ] ) {\r\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\r\n\r\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Support: Chrome <=35 - 45+\r\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\r\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\r\n\t\t\t\t}\r\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\r\n\r\n\t\t\t\t\t// Support: Chrome <=35 - 45+\r\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\r\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tdetach: function( selector ) {\r\n\t\treturn remove( this, selector, true );\r\n\t},\r\n\r\n\tremove: function( selector ) {\r\n\t\treturn remove( this, selector );\r\n\t},\r\n\r\n\ttext: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\treturn value === undefined ?\r\n\t\t\t\tjQuery.text( this ) :\r\n\t\t\t\tthis.empty().each( function() {\r\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\t\t\tthis.textContent = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t} );\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\tappend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.appendChild( elem );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tprepend: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\r\n\t\t\t\tvar target = manipulationTarget( this, elem );\r\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tbefore: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tafter: function() {\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tif ( this.parentNode ) {\r\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\tempty: function() {\r\n\t\tvar elem,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\r\n\t\t\tif ( elem.nodeType === 1 ) {\r\n\r\n\t\t\t\t// Prevent memory leaks\r\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\r\n\t\t\t\t// Remove any remaining nodes\r\n\t\t\t\telem.textContent = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\r\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\r\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\r\n\r\n\t\treturn this.map( function() {\r\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\r\n\t\t} );\r\n\t},\r\n\r\n\thtml: function( value ) {\r\n\t\treturn access( this, function( value ) {\r\n\t\t\tvar elem = this[ 0 ] || {},\r\n\t\t\t\ti = 0,\r\n\t\t\t\tl = this.length;\r\n\r\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\r\n\t\t\t\treturn elem.innerHTML;\r\n\t\t\t}\r\n\r\n\t\t\t// See if we can take a shortcut and just use innerHTML\r\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\r\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\r\n\r\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\r\n\r\n\t\t\t\ttry {\r\n\t\t\t\t\tfor ( ; i < l; i++ ) {\r\n\t\t\t\t\t\telem = this[ i ] || {};\r\n\r\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\r\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\r\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\r\n\t\t\t\t\t\t\telem.innerHTML = value;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telem = 0;\r\n\r\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\r\n\t\t\t\t} catch ( e ) {}\r\n\t\t\t}\r\n\r\n\t\t\tif ( elem ) {\r\n\t\t\t\tthis.empty().append( value );\r\n\t\t\t}\r\n\t\t}, null, value, arguments.length );\r\n\t},\r\n\r\n\treplaceWith: function() {\r\n\t\tvar ignored = [];\r\n\r\n\t\t// Make the changes, replacing each non-ignored context element with the new content\r\n\t\treturn domManip( this, arguments, function( elem ) {\r\n\t\t\tvar parent = this.parentNode;\r\n\r\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\r\n\t\t\t\tjQuery.cleanData( getAll( this ) );\r\n\t\t\t\tif ( parent ) {\r\n\t\t\t\t\tparent.replaceChild( elem, this );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t// Force callback invocation\r\n\t\t}, ignored );\r\n\t}\r\n} );\r\n\r\njQuery.each( {\r\n\tappendTo: \"append\",\r\n\tprependTo: \"prepend\",\r\n\tinsertBefore: \"before\",\r\n\tinsertAfter: \"after\",\r\n\treplaceAll: \"replaceWith\"\r\n}, function( name, original ) {\r\n\tjQuery.fn[ name ] = function( selector ) {\r\n\t\tvar elems,\r\n\t\t\tret = [],\r\n\t\t\tinsert = jQuery( selector ),\r\n\t\t\tlast = insert.length - 1,\r\n\t\t\ti = 0;\r\n\r\n\t\tfor ( ; i <= last; i++ ) {\r\n\t\t\telems = i === last ? this : this.clone( true );\r\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\r\n\r\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\r\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\r\n\t\t\tpush.apply( ret, elems.get() );\r\n\t\t}\r\n\r\n\t\treturn this.pushStack( ret );\r\n\t};\r\n} );\r\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\r\n\r\nvar getStyles = function( elem ) {\r\n\r\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\r\n\t\t// IE throws on elements created in popups\r\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\r\n\t\tvar view = elem.ownerDocument.defaultView;\r\n\r\n\t\tif ( !view || !view.opener ) {\r\n\t\t\tview = window;\r\n\t\t}\r\n\r\n\t\treturn view.getComputedStyle( elem );\r\n\t};\r\n\r\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\r\n\r\n\r\n\r\n( function() {\r\n\r\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\r\n\t// so they're executed at the same time to save the second computation.\r\n\tfunction computeStyleTests() {\r\n\r\n\t\t// This is a singleton, we need to execute it only once\r\n\t\tif ( !div ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\r\n\t\t\t\"margin-top:1px;padding:0;border:0\";\r\n\t\tdiv.style.cssText =\r\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\r\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\r\n\t\t\t\"width:60%;top:1%\";\r\n\t\tdocumentElement.appendChild( container ).appendChild( div );\r\n\r\n\t\tvar divStyle = window.getComputedStyle( div );\r\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\r\n\r\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\r\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\r\n\r\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\r\n\t\t// Some styles come back with percentage values, even though they shouldn't\r\n\t\tdiv.style.right = \"60%\";\r\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\r\n\r\n\t\t// Support: IE 9 - 11 only\r\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\r\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\r\n\r\n\t\t// Support: IE 9 only\r\n\t\t// Detect overflow:scroll screwiness (gh-3699)\r\n\t\tdiv.style.position = \"absolute\";\r\n\t\tscrollboxSizeVal = div.offsetWidth === 36 || \"absolute\";\r\n\r\n\t\tdocumentElement.removeChild( container );\r\n\r\n\t\t// Nullify the div so it wouldn't be stored in the memory and\r\n\t\t// it will also be a sign that checks already performed\r\n\t\tdiv = null;\r\n\t}\r\n\r\n\tfunction roundPixelMeasures( measure ) {\r\n\t\treturn Math.round( parseFloat( measure ) );\r\n\t}\r\n\r\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\r\n\t\treliableMarginLeftVal,\r\n\t\tcontainer = document.createElement( \"div\" ),\r\n\t\tdiv = document.createElement( \"div\" );\r\n\r\n\t// Finish early in limited (non-browser) environments\r\n\tif ( !div.style ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Support: IE <=9 - 11 only\r\n\t// Style of cloned element affects source element cloned (#8908)\r\n\tdiv.style.backgroundClip = \"content-box\";\r\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\r\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\r\n\r\n\tjQuery.extend( support, {\r\n\t\tboxSizingReliable: function() {\r\n\t\t\tcomputeStyleTests();\r\n\t\t\treturn boxSizingReliableVal;\r\n\t\t},\r\n\t\tpixelBoxStyles: function() {\r\n\t\t\tcomputeStyleTests();\r\n\t\t\treturn pixelBoxStylesVal;\r\n\t\t},\r\n\t\tpixelPosition: function() {\r\n\t\t\tcomputeStyleTests();\r\n\t\t\treturn pixelPositionVal;\r\n\t\t},\r\n\t\treliableMarginLeft: function() {\r\n\t\t\tcomputeStyleTests();\r\n\t\t\treturn reliableMarginLeftVal;\r\n\t\t},\r\n\t\tscrollboxSize: function() {\r\n\t\t\tcomputeStyleTests();\r\n\t\t\treturn scrollboxSizeVal;\r\n\t\t}\r\n\t} );\r\n} )();\r\n\r\n\r\nfunction curCSS( elem, name, computed ) {\r\n\tvar width, minWidth, maxWidth, ret,\r\n\r\n\t\t// Support: Firefox 51+\r\n\t\t// Retrieving style before computed somehow\r\n\t\t// fixes an issue with getting wrong values\r\n\t\t// on detached elements\r\n\t\tstyle = elem.style;\r\n\r\n\tcomputed = computed || getStyles( elem );\r\n\r\n\t// getPropertyValue is needed for:\r\n\t// .css('filter') (IE 9 only, #12537)\r\n\t// .css('--customProperty) (#3144)\r\n\tif ( computed ) {\r\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\r\n\r\n\t\tif ( ret === \"\" && !jQuery.contains( elem.ownerDocument, elem ) ) {\r\n\t\t\tret = jQuery.style( elem, name );\r\n\t\t}\r\n\r\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\r\n\t\t// Android Browser returns percentage for some values,\r\n\t\t// but width seems to be reliably pixels.\r\n\t\t// This is against the CSSOM draft spec:\r\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\r\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\r\n\r\n\t\t\t// Remember the original values\r\n\t\t\twidth = style.width;\r\n\t\t\tminWidth = style.minWidth;\r\n\t\t\tmaxWidth = style.maxWidth;\r\n\r\n\t\t\t// Put in the new values to get a computed value out\r\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\r\n\t\t\tret = computed.width;\r\n\r\n\t\t\t// Revert the changed values\r\n\t\t\tstyle.width = width;\r\n\t\t\tstyle.minWidth = minWidth;\r\n\t\t\tstyle.maxWidth = maxWidth;\r\n\t\t}\r\n\t}\r\n\r\n\treturn ret !== undefined ?\r\n\r\n\t\t// Support: IE <=9 - 11 only\r\n\t\t// IE returns zIndex value as an integer.\r\n\t\tret + \"\" :\r\n\t\tret;\r\n}\r\n\r\n\r\nfunction addGetHookIf( conditionFn, hookFn ) {\r\n\r\n\t// Define the hook, we'll check on the first run if it's really needed.\r\n\treturn {\r\n\t\tget: function() {\r\n\t\t\tif ( conditionFn() ) {\r\n\r\n\t\t\t\t// Hook not needed (or it's not possible to use it due\r\n\t\t\t\t// to missing dependency), remove it.\r\n\t\t\t\tdelete this.get;\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\r\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\r\n\t\t}\r\n\t};\r\n}\r\n\r\n\r\nvar\r\n\r\n\t// Swappable if display is none or starts with table\r\n\t// except \"table\", \"table-cell\", or \"table-caption\"\r\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\r\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\r\n\trcustomProp = /^--/,\r\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\r\n\tcssNormalTransform = {\r\n\t\tletterSpacing: \"0\",\r\n\t\tfontWeight: \"400\"\r\n\t},\r\n\r\n\tcssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\r\n\temptyStyle = document.createElement( \"div\" ).style;\r\n\r\n// Return a css property mapped to a potentially vendor prefixed property\r\nfunction vendorPropName( name ) {\r\n\r\n\t// Shortcut for names that are not vendor prefixed\r\n\tif ( name in emptyStyle ) {\r\n\t\treturn name;\r\n\t}\r\n\r\n\t// Check for vendor prefixed names\r\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\r\n\t\ti = cssPrefixes.length;\r\n\r\n\twhile ( i-- ) {\r\n\t\tname = cssPrefixes[ i ] + capName;\r\n\t\tif ( name in emptyStyle ) {\r\n\t\t\treturn name;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// Return a property mapped along what jQuery.cssProps suggests or to\r\n// a vendor prefixed property.\r\nfunction finalPropName( name ) {\r\n\tvar ret = jQuery.cssProps[ name ];\r\n\tif ( !ret ) {\r\n\t\tret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;\r\n\t}\r\n\treturn ret;\r\n}\r\n\r\nfunction setPositiveNumber( elem, value, subtract ) {\r\n\r\n\t// Any relative (+/-) values have already been\r\n\t// normalized at this point\r\n\tvar matches = rcssNum.exec( value );\r\n\treturn matches ?\r\n\r\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\r\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\r\n\t\tvalue;\r\n}\r\n\r\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\r\n\tvar i = dimension === \"width\" ? 1 : 0,\r\n\t\textra = 0,\r\n\t\tdelta = 0;\r\n\r\n\t// Adjustment may not be necessary\r\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\r\n\t\treturn 0;\r\n\t}\r\n\r\n\tfor ( ; i < 4; i += 2 ) {\r\n\r\n\t\t// Both box models exclude margin\r\n\t\tif ( box === \"margin\" ) {\r\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\r\n\t\t}\r\n\r\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\r\n\t\tif ( !isBorderBox ) {\r\n\r\n\t\t\t// Add padding\r\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\r\n\r\n\t\t\t// For \"border\" or \"margin\", add border\r\n\t\t\tif ( box !== \"padding\" ) {\r\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\r\n\r\n\t\t\t// But still keep track of it otherwise\r\n\t\t\t} else {\r\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\r\n\t\t\t}\r\n\r\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\r\n\t\t// \"padding\" or \"margin\"\r\n\t\t} else {\r\n\r\n\t\t\t// For \"content\", subtract padding\r\n\t\t\tif ( box === \"content\" ) {\r\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\r\n\t\t\t}\r\n\r\n\t\t\t// For \"content\" or \"padding\", subtract border\r\n\t\t\tif ( box !== \"margin\" ) {\r\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\r\n\tif ( !isBorderBox && computedVal >= 0 ) {\r\n\r\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\r\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\r\n\t\tdelta += Math.max( 0, Math.ceil(\r\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\r\n\t\t\tcomputedVal -\r\n\t\t\tdelta -\r\n\t\t\textra -\r\n\t\t\t0.5\r\n\t\t) );\r\n\t}\r\n\r\n\treturn delta;\r\n}\r\n\r\nfunction getWidthOrHeight( elem, dimension, extra ) {\r\n\r\n\t// Start with computed style\r\n\tvar styles = getStyles( elem ),\r\n\t\tval = curCSS( elem, dimension, styles ),\r\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\r\n\t\tvalueIsBorderBox = isBorderBox;\r\n\r\n\t// Support: Firefox <=54\r\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\r\n\tif ( rnumnonpx.test( val ) ) {\r\n\t\tif ( !extra ) {\r\n\t\t\treturn val;\r\n\t\t}\r\n\t\tval = \"auto\";\r\n\t}\r\n\r\n\t// Check for style in case a browser which returns unreliable values\r\n\t// for getComputedStyle silently falls back to the reliable elem.style\r\n\tvalueIsBorderBox = valueIsBorderBox &&\r\n\t\t( support.boxSizingReliable() || val === elem.style[ dimension ] );\r\n\r\n\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\r\n\t// This happens for inline elements with no explicit setting (gh-3571)\r\n\t// Support: Android <=4.1 - 4.3 only\r\n\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\r\n\tif ( val === \"auto\" ||\r\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) {\r\n\r\n\t\tval = elem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];\r\n\r\n\t\t// offsetWidth/offsetHeight provide border-box values\r\n\t\tvalueIsBorderBox = true;\r\n\t}\r\n\r\n\t// Normalize \"\" and auto\r\n\tval = parseFloat( val ) || 0;\r\n\r\n\t// Adjust for the element's box model\r\n\treturn ( val +\r\n\t\tboxModelAdjustment(\r\n\t\t\telem,\r\n\t\t\tdimension,\r\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\r\n\t\t\tvalueIsBorderBox,\r\n\t\t\tstyles,\r\n\r\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\r\n\t\t\tval\r\n\t\t)\r\n\t) + \"px\";\r\n}\r\n\r\njQuery.extend( {\r\n\r\n\t// Add in style property hooks for overriding the default\r\n\t// behavior of getting and setting a style property\r\n\tcssHooks: {\r\n\t\topacity: {\r\n\t\t\tget: function( elem, computed ) {\r\n\t\t\t\tif ( computed ) {\r\n\r\n\t\t\t\t\t// We should always get a number back from opacity\r\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\r\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\t// Don't automatically add \"px\" to these possibly-unitless properties\r\n\tcssNumber: {\r\n\t\t\"animationIterationCount\": true,\r\n\t\t\"columnCount\": true,\r\n\t\t\"fillOpacity\": true,\r\n\t\t\"flexGrow\": true,\r\n\t\t\"flexShrink\": true,\r\n\t\t\"fontWeight\": true,\r\n\t\t\"lineHeight\": true,\r\n\t\t\"opacity\": true,\r\n\t\t\"order\": true,\r\n\t\t\"orphans\": true,\r\n\t\t\"widows\": true,\r\n\t\t\"zIndex\": true,\r\n\t\t\"zoom\": true\r\n\t},\r\n\r\n\t// Add in properties whose names you wish to fix before\r\n\t// setting or getting the value\r\n\tcssProps: {},\r\n\r\n\t// Get and set the style property on a DOM Node\r\n\tstyle: function( elem, name, value, extra ) {\r\n\r\n\t\t// Don't set styles on text and comment nodes\r\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Make sure that we're working with the right name\r\n\t\tvar ret, type, hooks,\r\n\t\t\torigName = camelCase( name ),\r\n\t\t\tisCustomProp = rcustomProp.test( name ),\r\n\t\t\tstyle = elem.style;\r\n\r\n\t\t// Make sure that we're working with the right name. We don't\r\n\t\t// want to query the value if it is a CSS custom property\r\n\t\t// since they are user-defined.\r\n\t\tif ( !isCustomProp ) {\r\n\t\t\tname = finalPropName( origName );\r\n\t\t}\r\n\r\n\t\t// Gets hook for the prefixed version, then unprefixed version\r\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\r\n\r\n\t\t// Check if we're setting a value\r\n\t\tif ( value !== undefined ) {\r\n\t\t\ttype = typeof value;\r\n\r\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\r\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\r\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\r\n\r\n\t\t\t\t// Fixes bug #9237\r\n\t\t\t\ttype = \"number\";\r\n\t\t\t}\r\n\r\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\r\n\t\t\tif ( value == null || value !== value ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\r\n\t\t\tif ( type === \"number\" ) {\r\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\r\n\t\t\t}\r\n\r\n\t\t\t// background-* props affect original clone's values\r\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\r\n\t\t\t\tstyle[ name ] = \"inherit\";\r\n\t\t\t}\r\n\r\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\r\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\r\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\r\n\r\n\t\t\t\tif ( isCustomProp ) {\r\n\t\t\t\t\tstyle.setProperty( name, value );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstyle[ name ] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// If a hook was provided get the non-computed value from there\r\n\t\t\tif ( hooks && \"get\" in hooks &&\r\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\r\n\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\r\n\t\t\t// Otherwise just get the value from the style object\r\n\t\t\treturn style[ name ];\r\n\t\t}\r\n\t},\r\n\r\n\tcss: function( elem, name, extra, styles ) {\r\n\t\tvar val, num, hooks,\r\n\t\t\torigName = camelCase( name ),\r\n\t\t\tisCustomProp = rcustomProp.test( name );\r\n\r\n\t\t// Make sure that we're working with the right name. We don't\r\n\t\t// want to modify the value if it is a CSS custom property\r\n\t\t// since they are user-defined.\r\n\t\tif ( !isCustomProp ) {\r\n\t\t\tname = finalPropName( origName );\r\n\t\t}\r\n\r\n\t\t// Try prefixed name followed by the unprefixed name\r\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\r\n\r\n\t\t// If a hook was provided get the computed value from there\r\n\t\tif ( hooks && \"get\" in hooks ) {\r\n\t\t\tval = hooks.get( elem, true, extra );\r\n\t\t}\r\n\r\n\t\t// Otherwise, if a way to get the computed value exists, use that\r\n\t\tif ( val === undefined ) {\r\n\t\t\tval = curCSS( elem, name, styles );\r\n\t\t}\r\n\r\n\t\t// Convert \"normal\" to computed value\r\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\r\n\t\t\tval = cssNormalTransform[ name ];\r\n\t\t}\r\n\r\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\r\n\t\tif ( extra === \"\" || extra ) {\r\n\t\t\tnum = parseFloat( val );\r\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\r\n\t\t}\r\n\r\n\t\treturn val;\r\n\t}\r\n} );\r\n\r\njQuery.each( [ \"height\", \"width\" ], function( i, dimension ) {\r\n\tjQuery.cssHooks[ dimension ] = {\r\n\t\tget: function( elem, computed, extra ) {\r\n\t\t\tif ( computed ) {\r\n\r\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\r\n\t\t\t\t// but it must have a current display style that would benefit\r\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\r\n\r\n\t\t\t\t\t// Support: Safari 8+\r\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\r\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\r\n\t\t\t\t\t// Support: IE <=11 only\r\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\r\n\t\t\t\t\t// in IE throws an error.\r\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\r\n\t\t\t\t\t\tswap( elem, cssShow, function() {\r\n\t\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\r\n\t\t\t\t\t\t} ) :\r\n\t\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\tset: function( elem, value, extra ) {\r\n\t\t\tvar matches,\r\n\t\t\t\tstyles = getStyles( elem ),\r\n\t\t\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\r\n\t\t\t\tsubtract = extra && boxModelAdjustment(\r\n\t\t\t\t\telem,\r\n\t\t\t\t\tdimension,\r\n\t\t\t\t\textra,\r\n\t\t\t\t\tisBorderBox,\r\n\t\t\t\t\tstyles\r\n\t\t\t\t);\r\n\r\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\r\n\t\t\t// faking a content-box to get border and padding (gh-3699)\r\n\t\t\tif ( isBorderBox && support.scrollboxSize() === styles.position ) {\r\n\t\t\t\tsubtract -= Math.ceil(\r\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\r\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\r\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\r\n\t\t\t\t\t0.5\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\t// Convert to pixels if value adjustment is needed\r\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\r\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\r\n\r\n\t\t\t\telem.style[ dimension ] = value;\r\n\t\t\t\tvalue = jQuery.css( elem, dimension );\r\n\t\t\t}\r\n\r\n\t\t\treturn setPositiveNumber( elem, value, subtract );\r\n\t\t}\r\n\t};\r\n} );\r\n\r\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\r\n\tfunction( elem, computed ) {\r\n\t\tif ( computed ) {\r\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\r\n\t\t\t\telem.getBoundingClientRect().left -\r\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\r\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\r\n\t\t\t\t\t} )\r\n\t\t\t\t) + \"px\";\r\n\t\t}\r\n\t}\r\n);\r\n\r\n// These hooks are used by animate to expand properties\r\njQuery.each( {\r\n\tmargin: \"\",\r\n\tpadding: \"\",\r\n\tborder: \"Width\"\r\n}, function( prefix, suffix ) {\r\n\tjQuery.cssHooks[ prefix + suffix ] = {\r\n\t\texpand: function( value ) {\r\n\t\t\tvar i = 0,\r\n\t\t\t\texpanded = {},\r\n\r\n\t\t\t\t// Assumes a single number if not a string\r\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\r\n\r\n\t\t\tfor ( ; i < 4; i++ ) {\r\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\r\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\r\n\t\t\t}\r\n\r\n\t\t\treturn expanded;\r\n\t\t}\r\n\t};\r\n\r\n\tif ( prefix !== \"margin\" ) {\r\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\r\n\t}\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\tcss: function( name, value ) {\r\n\t\treturn access( this, function( elem, name, value ) {\r\n\t\t\tvar styles, len,\r\n\t\t\t\tmap = {},\r\n\t\t\t\ti = 0;\r\n\r\n\t\t\tif ( Array.isArray( name ) ) {\r\n\t\t\t\tstyles = getStyles( elem );\r\n\t\t\t\tlen = name.length;\r\n\r\n\t\t\t\tfor ( ; i < len; i++ ) {\r\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn map;\r\n\t\t\t}\r\n\r\n\t\t\treturn value !== undefined ?\r\n\t\t\t\tjQuery.style( elem, name, value ) :\r\n\t\t\t\tjQuery.css( elem, name );\r\n\t\t}, name, value, arguments.length > 1 );\r\n\t}\r\n} );\r\n\r\n\r\nfunction Tween( elem, options, prop, end, easing ) {\r\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\r\n}\r\njQuery.Tween = Tween;\r\n\r\nTween.prototype = {\r\n\tconstructor: Tween,\r\n\tinit: function( elem, options, prop, end, easing, unit ) {\r\n\t\tthis.elem = elem;\r\n\t\tthis.prop = prop;\r\n\t\tthis.easing = easing || jQuery.easing._default;\r\n\t\tthis.options = options;\r\n\t\tthis.start = this.now = this.cur();\r\n\t\tthis.end = end;\r\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\r\n\t},\r\n\tcur: function() {\r\n\t\tvar hooks = Tween.propHooks[ this.prop ];\r\n\r\n\t\treturn hooks && hooks.get ?\r\n\t\t\thooks.get( this ) :\r\n\t\t\tTween.propHooks._default.get( this );\r\n\t},\r\n\trun: function( percent ) {\r\n\t\tvar eased,\r\n\t\t\thooks = Tween.propHooks[ this.prop ];\r\n\r\n\t\tif ( this.options.duration ) {\r\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\r\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\r\n\t\t\t);\r\n\t\t} else {\r\n\t\t\tthis.pos = eased = percent;\r\n\t\t}\r\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\r\n\r\n\t\tif ( this.options.step ) {\r\n\t\t\tthis.options.step.call( this.elem, this.now, this );\r\n\t\t}\r\n\r\n\t\tif ( hooks && hooks.set ) {\r\n\t\t\thooks.set( this );\r\n\t\t} else {\r\n\t\t\tTween.propHooks._default.set( this );\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n};\r\n\r\nTween.prototype.init.prototype = Tween.prototype;\r\n\r\nTween.propHooks = {\r\n\t_default: {\r\n\t\tget: function( tween ) {\r\n\t\t\tvar result;\r\n\r\n\t\t\t// Use a property on the element directly when it is not a DOM element,\r\n\t\t\t// or when there is no matching style property that exists.\r\n\t\t\tif ( tween.elem.nodeType !== 1 ||\r\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\r\n\t\t\t\treturn tween.elem[ tween.prop ];\r\n\t\t\t}\r\n\r\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\r\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\r\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\r\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\r\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\r\n\r\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\r\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\r\n\t\t},\r\n\t\tset: function( tween ) {\r\n\r\n\t\t\t// Use step hook for back compat.\r\n\t\t\t// Use cssHook if its there.\r\n\t\t\t// Use .style if available and use plain properties where available.\r\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\r\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\r\n\t\t\t} else if ( tween.elem.nodeType === 1 &&\r\n\t\t\t\t( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||\r\n\t\t\t\t\tjQuery.cssHooks[ tween.prop ] ) ) {\r\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\r\n\t\t\t} else {\r\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n};\r\n\r\n// Support: IE <=9 only\r\n// Panic based approach to setting things on disconnected nodes\r\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\r\n\tset: function( tween ) {\r\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\r\n\t\t\ttween.elem[ tween.prop ] = tween.now;\r\n\t\t}\r\n\t}\r\n};\r\n\r\njQuery.easing = {\r\n\tlinear: function( p ) {\r\n\t\treturn p;\r\n\t},\r\n\tswing: function( p ) {\r\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\r\n\t},\r\n\t_default: \"swing\"\r\n};\r\n\r\njQuery.fx = Tween.prototype.init;\r\n\r\n// Back compat <1.8 extension point\r\njQuery.fx.step = {};\r\n\r\n\r\n\r\n\r\nvar\r\n\tfxNow, inProgress,\r\n\trfxtypes = /^(?:toggle|show|hide)$/,\r\n\trrun = /queueHooks$/;\r\n\r\nfunction schedule() {\r\n\tif ( inProgress ) {\r\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\r\n\t\t\twindow.requestAnimationFrame( schedule );\r\n\t\t} else {\r\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\r\n\t\t}\r\n\r\n\t\tjQuery.fx.tick();\r\n\t}\r\n}\r\n\r\n// Animations created synchronously will run synchronously\r\nfunction createFxNow() {\r\n\twindow.setTimeout( function() {\r\n\t\tfxNow = undefined;\r\n\t} );\r\n\treturn ( fxNow = Date.now() );\r\n}\r\n\r\n// Generate parameters to create a standard animation\r\nfunction genFx( type, includeWidth ) {\r\n\tvar which,\r\n\t\ti = 0,\r\n\t\tattrs = { height: type };\r\n\r\n\t// If we include width, step value is 1 to do all cssExpand values,\r\n\t// otherwise step value is 2 to skip over Left and Right\r\n\tincludeWidth = includeWidth ? 1 : 0;\r\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\r\n\t\twhich = cssExpand[ i ];\r\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\r\n\t}\r\n\r\n\tif ( includeWidth ) {\r\n\t\tattrs.opacity = attrs.width = type;\r\n\t}\r\n\r\n\treturn attrs;\r\n}\r\n\r\nfunction createTween( value, prop, animation ) {\r\n\tvar tween,\r\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\r\n\t\tindex = 0,\r\n\t\tlength = collection.length;\r\n\tfor ( ; index < length; index++ ) {\r\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\r\n\r\n\t\t\t// We're done with this property\r\n\t\t\treturn tween;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction defaultPrefilter( elem, props, opts ) {\r\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\r\n\t\tisBox = \"width\" in props || \"height\" in props,\r\n\t\tanim = this,\r\n\t\torig = {},\r\n\t\tstyle = elem.style,\r\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\r\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\r\n\r\n\t// Queue-skipping animations hijack the fx hooks\r\n\tif ( !opts.queue ) {\r\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\r\n\t\tif ( hooks.unqueued == null ) {\r\n\t\t\thooks.unqueued = 0;\r\n\t\t\toldfire = hooks.empty.fire;\r\n\t\t\thooks.empty.fire = function() {\r\n\t\t\t\tif ( !hooks.unqueued ) {\r\n\t\t\t\t\toldfire();\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t}\r\n\t\thooks.unqueued++;\r\n\r\n\t\tanim.always( function() {\r\n\r\n\t\t\t// Ensure the complete handler is called before this completes\r\n\t\t\tanim.always( function() {\r\n\t\t\t\thooks.unqueued--;\r\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\r\n\t\t\t\t\thooks.empty.fire();\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t} );\r\n\t}\r\n\r\n\t// Detect show/hide animations\r\n\tfor ( prop in props ) {\r\n\t\tvalue = props[ prop ];\r\n\t\tif ( rfxtypes.test( value ) ) {\r\n\t\t\tdelete props[ prop ];\r\n\t\t\ttoggle = toggle || value === \"toggle\";\r\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\r\n\r\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\r\n\t\t\t\t// there is still data from a stopped show/hide\r\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\r\n\t\t\t\t\thidden = true;\r\n\r\n\t\t\t\t// Ignore all other no-op show/hide data\r\n\t\t\t\t} else {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\r\n\t\t}\r\n\t}\r\n\r\n\t// Bail out if this is a no-op like .hide().hide()\r\n\tpropTween = !jQuery.isEmptyObject( props );\r\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// Restrict \"overflow\" and \"display\" styles during box animations\r\n\tif ( isBox && elem.nodeType === 1 ) {\r\n\r\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\r\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\r\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\r\n\t\t// the overflowX value there.\r\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\r\n\r\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\r\n\t\trestoreDisplay = dataShow && dataShow.display;\r\n\t\tif ( restoreDisplay == null ) {\r\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\r\n\t\t}\r\n\t\tdisplay = jQuery.css( elem, \"display\" );\r\n\t\tif ( display === \"none\" ) {\r\n\t\t\tif ( restoreDisplay ) {\r\n\t\t\t\tdisplay = restoreDisplay;\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\r\n\t\t\t\tshowHide( [ elem ], true );\r\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\r\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\r\n\t\t\t\tshowHide( [ elem ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Animate inline elements as inline-block\r\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\r\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\r\n\r\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\r\n\t\t\t\tif ( !propTween ) {\r\n\t\t\t\t\tanim.done( function() {\r\n\t\t\t\t\t\tstyle.display = restoreDisplay;\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tif ( restoreDisplay == null ) {\r\n\t\t\t\t\t\tdisplay = style.display;\r\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tstyle.display = \"inline-block\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tif ( opts.overflow ) {\r\n\t\tstyle.overflow = \"hidden\";\r\n\t\tanim.always( function() {\r\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\r\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\r\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\r\n\t\t} );\r\n\t}\r\n\r\n\t// Implement show/hide animations\r\n\tpropTween = false;\r\n\tfor ( prop in orig ) {\r\n\r\n\t\t// General show/hide setup for this element animation\r\n\t\tif ( !propTween ) {\r\n\t\t\tif ( dataShow ) {\r\n\t\t\t\tif ( \"hidden\" in dataShow ) {\r\n\t\t\t\t\thidden = dataShow.hidden;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\r\n\t\t\t}\r\n\r\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\r\n\t\t\tif ( toggle ) {\r\n\t\t\t\tdataShow.hidden = !hidden;\r\n\t\t\t}\r\n\r\n\t\t\t// Show elements before animating them\r\n\t\t\tif ( hidden ) {\r\n\t\t\t\tshowHide( [ elem ], true );\r\n\t\t\t}\r\n\r\n\t\t\t/* eslint-disable no-loop-func */\r\n\r\n\t\t\tanim.done( function() {\r\n\r\n\t\t\t/* eslint-enable no-loop-func */\r\n\r\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\r\n\t\t\t\tif ( !hidden ) {\r\n\t\t\t\t\tshowHide( [ elem ] );\r\n\t\t\t\t}\r\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\r\n\t\t\t\tfor ( prop in orig ) {\r\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\r\n\t\t\t\t}\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\t// Per-property setup\r\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\r\n\t\tif ( !( prop in dataShow ) ) {\r\n\t\t\tdataShow[ prop ] = propTween.start;\r\n\t\t\tif ( hidden ) {\r\n\t\t\t\tpropTween.end = propTween.start;\r\n\t\t\t\tpropTween.start = 0;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction propFilter( props, specialEasing ) {\r\n\tvar index, name, easing, value, hooks;\r\n\r\n\t// camelCase, specialEasing and expand cssHook pass\r\n\tfor ( index in props ) {\r\n\t\tname = camelCase( index );\r\n\t\teasing = specialEasing[ name ];\r\n\t\tvalue = props[ index ];\r\n\t\tif ( Array.isArray( value ) ) {\r\n\t\t\teasing = value[ 1 ];\r\n\t\t\tvalue = props[ index ] = value[ 0 ];\r\n\t\t}\r\n\r\n\t\tif ( index !== name ) {\r\n\t\t\tprops[ name ] = value;\r\n\t\t\tdelete props[ index ];\r\n\t\t}\r\n\r\n\t\thooks = jQuery.cssHooks[ name ];\r\n\t\tif ( hooks && \"expand\" in hooks ) {\r\n\t\t\tvalue = hooks.expand( value );\r\n\t\t\tdelete props[ name ];\r\n\r\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\r\n\t\t\t// Reusing 'index' because we have the correct \"name\"\r\n\t\t\tfor ( index in value ) {\r\n\t\t\t\tif ( !( index in props ) ) {\r\n\t\t\t\t\tprops[ index ] = value[ index ];\r\n\t\t\t\t\tspecialEasing[ index ] = easing;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tspecialEasing[ name ] = easing;\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction Animation( elem, properties, options ) {\r\n\tvar result,\r\n\t\tstopped,\r\n\t\tindex = 0,\r\n\t\tlength = Animation.prefilters.length,\r\n\t\tdeferred = jQuery.Deferred().always( function() {\r\n\r\n\t\t\t// Don't match elem in the :animated selector\r\n\t\t\tdelete tick.elem;\r\n\t\t} ),\r\n\t\ttick = function() {\r\n\t\t\tif ( stopped ) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tvar currentTime = fxNow || createFxNow(),\r\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\r\n\r\n\t\t\t\t// Support: Android 2.3 only\r\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\r\n\t\t\t\ttemp = remaining / animation.duration || 0,\r\n\t\t\t\tpercent = 1 - temp,\r\n\t\t\t\tindex = 0,\r\n\t\t\t\tlength = animation.tweens.length;\r\n\r\n\t\t\tfor ( ; index < length; index++ ) {\r\n\t\t\t\tanimation.tweens[ index ].run( percent );\r\n\t\t\t}\r\n\r\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\r\n\r\n\t\t\t// If there's more to do, yield\r\n\t\t\tif ( percent < 1 && length ) {\r\n\t\t\t\treturn remaining;\r\n\t\t\t}\r\n\r\n\t\t\t// If this was an empty animation, synthesize a final progress notification\r\n\t\t\tif ( !length ) {\r\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\r\n\t\t\t}\r\n\r\n\t\t\t// Resolve the animation and report its conclusion\r\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\r\n\t\t\treturn false;\r\n\t\t},\r\n\t\tanimation = deferred.promise( {\r\n\t\t\telem: elem,\r\n\t\t\tprops: jQuery.extend( {}, properties ),\r\n\t\t\topts: jQuery.extend( true, {\r\n\t\t\t\tspecialEasing: {},\r\n\t\t\t\teasing: jQuery.easing._default\r\n\t\t\t}, options ),\r\n\t\t\toriginalProperties: properties,\r\n\t\t\toriginalOptions: options,\r\n\t\t\tstartTime: fxNow || createFxNow(),\r\n\t\t\tduration: options.duration,\r\n\t\t\ttweens: [],\r\n\t\t\tcreateTween: function( prop, end ) {\r\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\r\n\t\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\r\n\t\t\t\tanimation.tweens.push( tween );\r\n\t\t\t\treturn tween;\r\n\t\t\t},\r\n\t\t\tstop: function( gotoEnd ) {\r\n\t\t\t\tvar index = 0,\r\n\r\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\r\n\t\t\t\t\t// otherwise we skip this part\r\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\r\n\t\t\t\tif ( stopped ) {\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\t\t\t\tstopped = true;\r\n\t\t\t\tfor ( ; index < length; index++ ) {\r\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\r\n\t\t\t\tif ( gotoEnd ) {\r\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\r\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\r\n\t\t\t\t}\r\n\t\t\t\treturn this;\r\n\t\t\t}\r\n\t\t} ),\r\n\t\tprops = animation.props;\r\n\r\n\tpropFilter( props, animation.opts.specialEasing );\r\n\r\n\tfor ( ; index < length; index++ ) {\r\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\r\n\t\tif ( result ) {\r\n\t\t\tif ( isFunction( result.stop ) ) {\r\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\r\n\t\t\t\t\tresult.stop.bind( result );\r\n\t\t\t}\r\n\t\t\treturn result;\r\n\t\t}\r\n\t}\r\n\r\n\tjQuery.map( props, createTween, animation );\r\n\r\n\tif ( isFunction( animation.opts.start ) ) {\r\n\t\tanimation.opts.start.call( elem, animation );\r\n\t}\r\n\r\n\t// Attach callbacks from options\r\n\tanimation\r\n\t\t.progress( animation.opts.progress )\r\n\t\t.done( animation.opts.done, animation.opts.complete )\r\n\t\t.fail( animation.opts.fail )\r\n\t\t.always( animation.opts.always );\r\n\r\n\tjQuery.fx.timer(\r\n\t\tjQuery.extend( tick, {\r\n\t\t\telem: elem,\r\n\t\t\tanim: animation,\r\n\t\t\tqueue: animation.opts.queue\r\n\t\t} )\r\n\t);\r\n\r\n\treturn animation;\r\n}\r\n\r\njQuery.Animation = jQuery.extend( Animation, {\r\n\r\n\ttweeners: {\r\n\t\t\"*\": [ function( prop, value ) {\r\n\t\t\tvar tween = this.createTween( prop, value );\r\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\r\n\t\t\treturn tween;\r\n\t\t} ]\r\n\t},\r\n\r\n\ttweener: function( props, callback ) {\r\n\t\tif ( isFunction( props ) ) {\r\n\t\t\tcallback = props;\r\n\t\t\tprops = [ \"*\" ];\r\n\t\t} else {\r\n\t\t\tprops = props.match( rnothtmlwhite );\r\n\t\t}\r\n\r\n\t\tvar prop,\r\n\t\t\tindex = 0,\r\n\t\t\tlength = props.length;\r\n\r\n\t\tfor ( ; index < length; index++ ) {\r\n\t\t\tprop = props[ index ];\r\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\r\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\r\n\t\t}\r\n\t},\r\n\r\n\tprefilters: [ defaultPrefilter ],\r\n\r\n\tprefilter: function( callback, prepend ) {\r\n\t\tif ( prepend ) {\r\n\t\t\tAnimation.prefilters.unshift( callback );\r\n\t\t} else {\r\n\t\t\tAnimation.prefilters.push( callback );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\njQuery.speed = function( speed, easing, fn ) {\r\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\r\n\t\tcomplete: fn || !fn && easing ||\r\n\t\t\tisFunction( speed ) && speed,\r\n\t\tduration: speed,\r\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\r\n\t};\r\n\r\n\t// Go to the end state if fx are off\r\n\tif ( jQuery.fx.off ) {\r\n\t\topt.duration = 0;\r\n\r\n\t} else {\r\n\t\tif ( typeof opt.duration !== \"number\" ) {\r\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\r\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\r\n\r\n\t\t\t} else {\r\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\r\n\tif ( opt.queue == null || opt.queue === true ) {\r\n\t\topt.queue = \"fx\";\r\n\t}\r\n\r\n\t// Queueing\r\n\topt.old = opt.complete;\r\n\r\n\topt.complete = function() {\r\n\t\tif ( isFunction( opt.old ) ) {\r\n\t\t\topt.old.call( this );\r\n\t\t}\r\n\r\n\t\tif ( opt.queue ) {\r\n\t\t\tjQuery.dequeue( this, opt.queue );\r\n\t\t}\r\n\t};\r\n\r\n\treturn opt;\r\n};\r\n\r\njQuery.fn.extend( {\r\n\tfadeTo: function( speed, to, easing, callback ) {\r\n\r\n\t\t// Show any hidden elements after setting opacity to 0\r\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\r\n\r\n\t\t\t// Animate to the value specified\r\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\r\n\t},\r\n\tanimate: function( prop, speed, easing, callback ) {\r\n\t\tvar empty = jQuery.isEmptyObject( prop ),\r\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\r\n\t\t\tdoAnimation = function() {\r\n\r\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\r\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\r\n\r\n\t\t\t\t// Empty animations, or finishing resolves immediately\r\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\r\n\t\t\t\t\tanim.stop( true );\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tdoAnimation.finish = doAnimation;\r\n\r\n\t\treturn empty || optall.queue === false ?\r\n\t\t\tthis.each( doAnimation ) :\r\n\t\t\tthis.queue( optall.queue, doAnimation );\r\n\t},\r\n\tstop: function( type, clearQueue, gotoEnd ) {\r\n\t\tvar stopQueue = function( hooks ) {\r\n\t\t\tvar stop = hooks.stop;\r\n\t\t\tdelete hooks.stop;\r\n\t\t\tstop( gotoEnd );\r\n\t\t};\r\n\r\n\t\tif ( typeof type !== \"string\" ) {\r\n\t\t\tgotoEnd = clearQueue;\r\n\t\t\tclearQueue = type;\r\n\t\t\ttype = undefined;\r\n\t\t}\r\n\t\tif ( clearQueue && type !== false ) {\r\n\t\t\tthis.queue( type || \"fx\", [] );\r\n\t\t}\r\n\r\n\t\treturn this.each( function() {\r\n\t\t\tvar dequeue = true,\r\n\t\t\t\tindex = type != null && type + \"queueHooks\",\r\n\t\t\t\ttimers = jQuery.timers,\r\n\t\t\t\tdata = dataPriv.get( this );\r\n\r\n\t\t\tif ( index ) {\r\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\r\n\t\t\t\t\tstopQueue( data[ index ] );\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tfor ( index in data ) {\r\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\r\n\t\t\t\t\t\tstopQueue( data[ index ] );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfor ( index = timers.length; index--; ) {\r\n\t\t\t\tif ( timers[ index ].elem === this &&\r\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\r\n\r\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\r\n\t\t\t\t\tdequeue = false;\r\n\t\t\t\t\ttimers.splice( index, 1 );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Start the next in the queue if the last step wasn't forced.\r\n\t\t\t// Timers currently will call their complete callbacks, which\r\n\t\t\t// will dequeue but only if they were gotoEnd.\r\n\t\t\tif ( dequeue || !gotoEnd ) {\r\n\t\t\t\tjQuery.dequeue( this, type );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\tfinish: function( type ) {\r\n\t\tif ( type !== false ) {\r\n\t\t\ttype = type || \"fx\";\r\n\t\t}\r\n\t\treturn this.each( function() {\r\n\t\t\tvar index,\r\n\t\t\t\tdata = dataPriv.get( this ),\r\n\t\t\t\tqueue = data[ type + \"queue\" ],\r\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\r\n\t\t\t\ttimers = jQuery.timers,\r\n\t\t\t\tlength = queue ? queue.length : 0;\r\n\r\n\t\t\t// Enable finishing flag on private data\r\n\t\t\tdata.finish = true;\r\n\r\n\t\t\t// Empty the queue first\r\n\t\t\tjQuery.queue( this, type, [] );\r\n\r\n\t\t\tif ( hooks && hooks.stop ) {\r\n\t\t\t\thooks.stop.call( this, true );\r\n\t\t\t}\r\n\r\n\t\t\t// Look for any active animations, and finish them\r\n\t\t\tfor ( index = timers.length; index--; ) {\r\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\r\n\t\t\t\t\ttimers[ index ].anim.stop( true );\r\n\t\t\t\t\ttimers.splice( index, 1 );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Look for any animations in the old queue and finish them\r\n\t\t\tfor ( index = 0; index < length; index++ ) {\r\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\r\n\t\t\t\t\tqueue[ index ].finish.call( this );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Turn off finishing flag\r\n\t\t\tdelete data.finish;\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( i, name ) {\r\n\tvar cssFn = jQuery.fn[ name ];\r\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\r\n\t\treturn speed == null || typeof speed === \"boolean\" ?\r\n\t\t\tcssFn.apply( this, arguments ) :\r\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\r\n\t};\r\n} );\r\n\r\n// Generate shortcuts for custom animations\r\njQuery.each( {\r\n\tslideDown: genFx( \"show\" ),\r\n\tslideUp: genFx( \"hide\" ),\r\n\tslideToggle: genFx( \"toggle\" ),\r\n\tfadeIn: { opacity: \"show\" },\r\n\tfadeOut: { opacity: \"hide\" },\r\n\tfadeToggle: { opacity: \"toggle\" }\r\n}, function( name, props ) {\r\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\r\n\t\treturn this.animate( props, speed, easing, callback );\r\n\t};\r\n} );\r\n\r\njQuery.timers = [];\r\njQuery.fx.tick = function() {\r\n\tvar timer,\r\n\t\ti = 0,\r\n\t\ttimers = jQuery.timers;\r\n\r\n\tfxNow = Date.now();\r\n\r\n\tfor ( ; i < timers.length; i++ ) {\r\n\t\ttimer = timers[ i ];\r\n\r\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\r\n\t\tif ( !timer() && timers[ i ] === timer ) {\r\n\t\t\ttimers.splice( i--, 1 );\r\n\t\t}\r\n\t}\r\n\r\n\tif ( !timers.length ) {\r\n\t\tjQuery.fx.stop();\r\n\t}\r\n\tfxNow = undefined;\r\n};\r\n\r\njQuery.fx.timer = function( timer ) {\r\n\tjQuery.timers.push( timer );\r\n\tjQuery.fx.start();\r\n};\r\n\r\njQuery.fx.interval = 13;\r\njQuery.fx.start = function() {\r\n\tif ( inProgress ) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tinProgress = true;\r\n\tschedule();\r\n};\r\n\r\njQuery.fx.stop = function() {\r\n\tinProgress = null;\r\n};\r\n\r\njQuery.fx.speeds = {\r\n\tslow: 600,\r\n\tfast: 200,\r\n\r\n\t// Default speed\r\n\t_default: 400\r\n};\r\n\r\n\r\n// Based off of the plugin by Clint Helfers, with permission.\r\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\r\njQuery.fn.delay = function( time, type ) {\r\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\r\n\ttype = type || \"fx\";\r\n\r\n\treturn this.queue( type, function( next, hooks ) {\r\n\t\tvar timeout = window.setTimeout( next, time );\r\n\t\thooks.stop = function() {\r\n\t\t\twindow.clearTimeout( timeout );\r\n\t\t};\r\n\t} );\r\n};\r\n\r\n\r\n( function() {\r\n\tvar input = document.createElement( \"input\" ),\r\n\t\tselect = document.createElement( \"select\" ),\r\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\r\n\r\n\tinput.type = \"checkbox\";\r\n\r\n\t// Support: Android <=4.3 only\r\n\t// Default value for a checkbox should be \"on\"\r\n\tsupport.checkOn = input.value !== \"\";\r\n\r\n\t// Support: IE <=11 only\r\n\t// Must access selectedIndex to make default options select\r\n\tsupport.optSelected = opt.selected;\r\n\r\n\t// Support: IE <=11 only\r\n\t// An input loses its value after becoming a radio\r\n\tinput = document.createElement( \"input\" );\r\n\tinput.value = \"t\";\r\n\tinput.type = \"radio\";\r\n\tsupport.radioValue = input.value === \"t\";\r\n} )();\r\n\r\n\r\nvar boolHook,\r\n\tattrHandle = jQuery.expr.attrHandle;\r\n\r\njQuery.fn.extend( {\r\n\tattr: function( name, value ) {\r\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\r\n\t},\r\n\r\n\tremoveAttr: function( name ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.removeAttr( this, name );\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.extend( {\r\n\tattr: function( elem, name, value ) {\r\n\t\tvar ret, hooks,\r\n\t\t\tnType = elem.nodeType;\r\n\r\n\t\t// Don't get/set attributes on text, comment and attribute nodes\r\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Fallback to prop when attributes are not supported\r\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\r\n\t\t\treturn jQuery.prop( elem, name, value );\r\n\t\t}\r\n\r\n\t\t// Attribute hooks are determined by the lowercase version\r\n\t\t// Grab necessary hook if one is defined\r\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\r\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\r\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\r\n\t\t}\r\n\r\n\t\tif ( value !== undefined ) {\r\n\t\t\tif ( value === null ) {\r\n\t\t\t\tjQuery.removeAttr( elem, name );\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( hooks && \"set\" in hooks &&\r\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\r\n\t\t\telem.setAttribute( name, value + \"\" );\r\n\t\t\treturn value;\r\n\t\t}\r\n\r\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\r\n\t\t\treturn ret;\r\n\t\t}\r\n\r\n\t\tret = jQuery.find.attr( elem, name );\r\n\r\n\t\t// Non-existent attributes return null, we normalize to undefined\r\n\t\treturn ret == null ? undefined : ret;\r\n\t},\r\n\r\n\tattrHooks: {\r\n\t\ttype: {\r\n\t\t\tset: function( elem, value ) {\r\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\r\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\r\n\t\t\t\t\tvar val = elem.value;\r\n\t\t\t\t\telem.setAttribute( \"type\", value );\r\n\t\t\t\t\tif ( val ) {\r\n\t\t\t\t\t\telem.value = val;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tremoveAttr: function( elem, value ) {\r\n\t\tvar name,\r\n\t\t\ti = 0,\r\n\r\n\t\t\t// Attribute names can contain non-HTML whitespace characters\r\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\r\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\r\n\r\n\t\tif ( attrNames && elem.nodeType === 1 ) {\r\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\r\n\t\t\t\telem.removeAttribute( name );\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n// Hooks for boolean attributes\r\nboolHook = {\r\n\tset: function( elem, value, name ) {\r\n\t\tif ( value === false ) {\r\n\r\n\t\t\t// Remove boolean attributes when set to false\r\n\t\t\tjQuery.removeAttr( elem, name );\r\n\t\t} else {\r\n\t\t\telem.setAttribute( name, name );\r\n\t\t}\r\n\t\treturn name;\r\n\t}\r\n};\r\n\r\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( i, name ) {\r\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\r\n\r\n\tattrHandle[ name ] = function( elem, name, isXML ) {\r\n\t\tvar ret, handle,\r\n\t\t\tlowercaseName = name.toLowerCase();\r\n\r\n\t\tif ( !isXML ) {\r\n\r\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\r\n\t\t\thandle = attrHandle[ lowercaseName ];\r\n\t\t\tattrHandle[ lowercaseName ] = ret;\r\n\t\t\tret = getter( elem, name, isXML ) != null ?\r\n\t\t\t\tlowercaseName :\r\n\t\t\t\tnull;\r\n\t\t\tattrHandle[ lowercaseName ] = handle;\r\n\t\t}\r\n\t\treturn ret;\r\n\t};\r\n} );\r\n\r\n\r\n\r\n\r\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\r\n\trclickable = /^(?:a|area)$/i;\r\n\r\njQuery.fn.extend( {\r\n\tprop: function( name, value ) {\r\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\r\n\t},\r\n\r\n\tremoveProp: function( name ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.extend( {\r\n\tprop: function( elem, name, value ) {\r\n\t\tvar ret, hooks,\r\n\t\t\tnType = elem.nodeType;\r\n\r\n\t\t// Don't get/set properties on text, comment and attribute nodes\r\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\r\n\r\n\t\t\t// Fix name and attach hooks\r\n\t\t\tname = jQuery.propFix[ name ] || name;\r\n\t\t\thooks = jQuery.propHooks[ name ];\r\n\t\t}\r\n\r\n\t\tif ( value !== undefined ) {\r\n\t\t\tif ( hooks && \"set\" in hooks &&\r\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\r\n\t\t\t\treturn ret;\r\n\t\t\t}\r\n\r\n\t\t\treturn ( elem[ name ] = value );\r\n\t\t}\r\n\r\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\r\n\t\t\treturn ret;\r\n\t\t}\r\n\r\n\t\treturn elem[ name ];\r\n\t},\r\n\r\n\tpropHooks: {\r\n\t\ttabIndex: {\r\n\t\t\tget: function( elem ) {\r\n\r\n\t\t\t\t// Support: IE <=9 - 11 only\r\n\t\t\t\t// elem.tabIndex doesn't always return the\r\n\t\t\t\t// correct value when it hasn't been explicitly set\r\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\r\n\t\t\t\t// Use proper attribute retrieval(#12072)\r\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\r\n\r\n\t\t\t\tif ( tabindex ) {\r\n\t\t\t\t\treturn parseInt( tabindex, 10 );\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\r\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\r\n\t\t\t\t\telem.href\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t}\r\n\t},\r\n\r\n\tpropFix: {\r\n\t\t\"for\": \"htmlFor\",\r\n\t\t\"class\": \"className\"\r\n\t}\r\n} );\r\n\r\n// Support: IE <=11 only\r\n// Accessing the selectedIndex property\r\n// forces the browser to respect setting selected\r\n// on the option\r\n// The getter ensures a default option is selected\r\n// when in an optgroup\r\n// eslint rule \"no-unused-expressions\" is disabled for this code\r\n// since it considers such accessions noop\r\nif ( !support.optSelected ) {\r\n\tjQuery.propHooks.selected = {\r\n\t\tget: function( elem ) {\r\n\r\n\t\t\t/* eslint no-unused-expressions: \"off\" */\r\n\r\n\t\t\tvar parent = elem.parentNode;\r\n\t\t\tif ( parent && parent.parentNode ) {\r\n\t\t\t\tparent.parentNode.selectedIndex;\r\n\t\t\t}\r\n\t\t\treturn null;\r\n\t\t},\r\n\t\tset: function( elem ) {\r\n\r\n\t\t\t/* eslint no-unused-expressions: \"off\" */\r\n\r\n\t\t\tvar parent = elem.parentNode;\r\n\t\t\tif ( parent ) {\r\n\t\t\t\tparent.selectedIndex;\r\n\r\n\t\t\t\tif ( parent.parentNode ) {\r\n\t\t\t\t\tparent.parentNode.selectedIndex;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\njQuery.each( [\r\n\t\"tabIndex\",\r\n\t\"readOnly\",\r\n\t\"maxLength\",\r\n\t\"cellSpacing\",\r\n\t\"cellPadding\",\r\n\t\"rowSpan\",\r\n\t\"colSpan\",\r\n\t\"useMap\",\r\n\t\"frameBorder\",\r\n\t\"contentEditable\"\r\n], function() {\r\n\tjQuery.propFix[ this.toLowerCase() ] = this;\r\n} );\r\n\r\n\r\n\r\n\r\n\t// Strip and collapse whitespace according to HTML spec\r\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\r\n\tfunction stripAndCollapse( value ) {\r\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\r\n\t\treturn tokens.join( \" \" );\r\n\t}\r\n\r\n\r\nfunction getClass( elem ) {\r\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\r\n}\r\n\r\nfunction classesToArray( value ) {\r\n\tif ( Array.isArray( value ) ) {\r\n\t\treturn value;\r\n\t}\r\n\tif ( typeof value === \"string\" ) {\r\n\t\treturn value.match( rnothtmlwhite ) || [];\r\n\t}\r\n\treturn [];\r\n}\r\n\r\njQuery.fn.extend( {\r\n\taddClass: function( value ) {\r\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\r\n\t\t\ti = 0;\r\n\r\n\t\tif ( isFunction( value ) ) {\r\n\t\t\treturn this.each( function( j ) {\r\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tclasses = classesToArray( value );\r\n\r\n\t\tif ( classes.length ) {\r\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\r\n\t\t\t\tcurValue = getClass( elem );\r\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\r\n\r\n\t\t\t\tif ( cur ) {\r\n\t\t\t\t\tj = 0;\r\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\r\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\r\n\t\t\t\t\t\t\tcur += clazz + \" \";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\r\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\r\n\t\t\t\t\tif ( curValue !== finalValue ) {\r\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tremoveClass: function( value ) {\r\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\r\n\t\t\ti = 0;\r\n\r\n\t\tif ( isFunction( value ) ) {\r\n\t\t\treturn this.each( function( j ) {\r\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\tif ( !arguments.length ) {\r\n\t\t\treturn this.attr( \"class\", \"\" );\r\n\t\t}\r\n\r\n\t\tclasses = classesToArray( value );\r\n\r\n\t\tif ( classes.length ) {\r\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\r\n\t\t\t\tcurValue = getClass( elem );\r\n\r\n\t\t\t\t// This expression is here for better compressibility (see addClass)\r\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\r\n\r\n\t\t\t\tif ( cur ) {\r\n\t\t\t\t\tj = 0;\r\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\r\n\r\n\t\t\t\t\t\t// Remove *all* instances\r\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\r\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\r\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\r\n\t\t\t\t\tif ( curValue !== finalValue ) {\r\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\ttoggleClass: function( value, stateVal ) {\r\n\t\tvar type = typeof value,\r\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\r\n\r\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\r\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\r\n\t\t}\r\n\r\n\t\tif ( isFunction( value ) ) {\r\n\t\t\treturn this.each( function( i ) {\r\n\t\t\t\tjQuery( this ).toggleClass(\r\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\r\n\t\t\t\t\tstateVal\r\n\t\t\t\t);\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn this.each( function() {\r\n\t\t\tvar className, i, self, classNames;\r\n\r\n\t\t\tif ( isValidValue ) {\r\n\r\n\t\t\t\t// Toggle individual class names\r\n\t\t\t\ti = 0;\r\n\t\t\t\tself = jQuery( this );\r\n\t\t\t\tclassNames = classesToArray( value );\r\n\r\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\r\n\r\n\t\t\t\t\t// Check each className given, space separated list\r\n\t\t\t\t\tif ( self.hasClass( className ) ) {\r\n\t\t\t\t\t\tself.removeClass( className );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tself.addClass( className );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t// Toggle whole class name\r\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\r\n\t\t\t\tclassName = getClass( this );\r\n\t\t\t\tif ( className ) {\r\n\r\n\t\t\t\t\t// Store className if set\r\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// If the element has a class name or if we're passed `false`,\r\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\r\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\r\n\t\t\t\t// falling back to the empty string if nothing was stored.\r\n\t\t\t\tif ( this.setAttribute ) {\r\n\t\t\t\t\tthis.setAttribute( \"class\",\r\n\t\t\t\t\t\tclassName || value === false ?\r\n\t\t\t\t\t\t\"\" :\r\n\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\r\n\t\t\t\t\t);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\thasClass: function( selector ) {\r\n\t\tvar className, elem,\r\n\t\t\ti = 0;\r\n\r\n\t\tclassName = \" \" + selector + \" \";\r\n\t\twhile ( ( elem = this[ i++ ] ) ) {\r\n\t\t\tif ( elem.nodeType === 1 &&\r\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\r\n\t\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t}\r\n} );\r\n\r\n\r\n\r\n\r\nvar rreturn = /\\r/g;\r\n\r\njQuery.fn.extend( {\r\n\tval: function( value ) {\r\n\t\tvar hooks, ret, valueIsFunction,\r\n\t\t\telem = this[ 0 ];\r\n\r\n\t\tif ( !arguments.length ) {\r\n\t\t\tif ( elem ) {\r\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\r\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\r\n\r\n\t\t\t\tif ( hooks &&\r\n\t\t\t\t\t\"get\" in hooks &&\r\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\r\n\t\t\t\t) {\r\n\t\t\t\t\treturn ret;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tret = elem.value;\r\n\r\n\t\t\t\t// Handle most common string cases\r\n\t\t\t\tif ( typeof ret === \"string\" ) {\r\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Handle cases where value is null/undef or number\r\n\t\t\t\treturn ret == null ? \"\" : ret;\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvalueIsFunction = isFunction( value );\r\n\r\n\t\treturn this.each( function( i ) {\r\n\t\t\tvar val;\r\n\r\n\t\t\tif ( this.nodeType !== 1 ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif ( valueIsFunction ) {\r\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\r\n\t\t\t} else {\r\n\t\t\t\tval = value;\r\n\t\t\t}\r\n\r\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\r\n\t\t\tif ( val == null ) {\r\n\t\t\t\tval = \"\";\r\n\r\n\t\t\t} else if ( typeof val === \"number\" ) {\r\n\t\t\t\tval += \"\";\r\n\r\n\t\t\t} else if ( Array.isArray( val ) ) {\r\n\t\t\t\tval = jQuery.map( val, function( value ) {\r\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\r\n\r\n\t\t\t// If set returns undefined, fall back to normal setting\r\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\r\n\t\t\t\tthis.value = val;\r\n\t\t\t}\r\n\t\t} );\r\n\t}\r\n} );\r\n\r\njQuery.extend( {\r\n\tvalHooks: {\r\n\t\toption: {\r\n\t\t\tget: function( elem ) {\r\n\r\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\r\n\t\t\t\treturn val != null ?\r\n\t\t\t\t\tval :\r\n\r\n\t\t\t\t\t// Support: IE <=10 - 11 only\r\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\r\n\t\t\t\t\t// Strip and collapse whitespace\r\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\r\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\r\n\t\t\t}\r\n\t\t},\r\n\t\tselect: {\r\n\t\t\tget: function( elem ) {\r\n\t\t\t\tvar value, option, i,\r\n\t\t\t\t\toptions = elem.options,\r\n\t\t\t\t\tindex = elem.selectedIndex,\r\n\t\t\t\t\tone = elem.type === \"select-one\",\r\n\t\t\t\t\tvalues = one ? null : [],\r\n\t\t\t\t\tmax = one ? index + 1 : options.length;\r\n\r\n\t\t\t\tif ( index < 0 ) {\r\n\t\t\t\t\ti = max;\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\ti = one ? index : 0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Loop through all the selected options\r\n\t\t\t\tfor ( ; i < max; i++ ) {\r\n\t\t\t\t\toption = options[ i ];\r\n\r\n\t\t\t\t\t// Support: IE <=9 only\r\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\r\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\r\n\r\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\r\n\t\t\t\t\t\t\t!option.disabled &&\r\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\r\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\r\n\r\n\t\t\t\t\t\t// Get the specific value for the option\r\n\t\t\t\t\t\tvalue = jQuery( option ).val();\r\n\r\n\t\t\t\t\t\t// We don't need an array for one selects\r\n\t\t\t\t\t\tif ( one ) {\r\n\t\t\t\t\t\t\treturn value;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// Multi-Selects return an array\r\n\t\t\t\t\t\tvalues.push( value );\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn values;\r\n\t\t\t},\r\n\r\n\t\t\tset: function( elem, value ) {\r\n\t\t\t\tvar optionSet, option,\r\n\t\t\t\t\toptions = elem.options,\r\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\r\n\t\t\t\t\ti = options.length;\r\n\r\n\t\t\t\twhile ( i-- ) {\r\n\t\t\t\t\toption = options[ i ];\r\n\r\n\t\t\t\t\t/* eslint-disable no-cond-assign */\r\n\r\n\t\t\t\t\tif ( option.selected =\r\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\r\n\t\t\t\t\t) {\r\n\t\t\t\t\t\toptionSet = true;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t/* eslint-enable no-cond-assign */\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\r\n\t\t\t\tif ( !optionSet ) {\r\n\t\t\t\t\telem.selectedIndex = -1;\r\n\t\t\t\t}\r\n\t\t\t\treturn values;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n// Radios and checkboxes getter/setter\r\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\r\n\tjQuery.valHooks[ this ] = {\r\n\t\tset: function( elem, value ) {\r\n\t\t\tif ( Array.isArray( value ) ) {\r\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\tif ( !support.checkOn ) {\r\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\r\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\r\n\t\t};\r\n\t}\r\n} );\r\n\r\n\r\n\r\n\r\n// Return jQuery for attributes-only inclusion\r\n\r\n\r\nsupport.focusin = \"onfocusin\" in window;\r\n\r\n\r\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\r\n\tstopPropagationCallback = function( e ) {\r\n\t\te.stopPropagation();\r\n\t};\r\n\r\njQuery.extend( jQuery.event, {\r\n\r\n\ttrigger: function( event, data, elem, onlyHandlers ) {\r\n\r\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\r\n\t\t\teventPath = [ elem || document ],\r\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\r\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\r\n\r\n\t\tcur = lastElement = tmp = elem = elem || document;\r\n\r\n\t\t// Don't do events on text and comment nodes\r\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\r\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\r\n\r\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\r\n\t\t\tnamespaces = type.split( \".\" );\r\n\t\t\ttype = namespaces.shift();\r\n\t\t\tnamespaces.sort();\r\n\t\t}\r\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\r\n\r\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\r\n\t\tevent = event[ jQuery.expando ] ?\r\n\t\t\tevent :\r\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\r\n\r\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\r\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\r\n\t\tevent.namespace = namespaces.join( \".\" );\r\n\t\tevent.rnamespace = event.namespace ?\r\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\r\n\t\t\tnull;\r\n\r\n\t\t// Clean up the event in case it is being reused\r\n\t\tevent.result = undefined;\r\n\t\tif ( !event.target ) {\r\n\t\t\tevent.target = elem;\r\n\t\t}\r\n\r\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\r\n\t\tdata = data == null ?\r\n\t\t\t[ event ] :\r\n\t\t\tjQuery.makeArray( data, [ event ] );\r\n\r\n\t\t// Allow special events to draw outside the lines\r\n\t\tspecial = jQuery.event.special[ type ] || {};\r\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\r\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\r\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\r\n\r\n\t\t\tbubbleType = special.delegateType || type;\r\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\r\n\t\t\t\tcur = cur.parentNode;\r\n\t\t\t}\r\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\r\n\t\t\t\teventPath.push( cur );\r\n\t\t\t\ttmp = cur;\r\n\t\t\t}\r\n\r\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\r\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\r\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Fire handlers on the event path\r\n\t\ti = 0;\r\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\r\n\t\t\tlastElement = cur;\r\n\t\t\tevent.type = i > 1 ?\r\n\t\t\t\tbubbleType :\r\n\t\t\t\tspecial.bindType || type;\r\n\r\n\t\t\t// jQuery handler\r\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || {} )[ event.type ] &&\r\n\t\t\t\tdataPriv.get( cur, \"handle\" );\r\n\t\t\tif ( handle ) {\r\n\t\t\t\thandle.apply( cur, data );\r\n\t\t\t}\r\n\r\n\t\t\t// Native handler\r\n\t\t\thandle = ontype && cur[ ontype ];\r\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\r\n\t\t\t\tevent.result = handle.apply( cur, data );\r\n\t\t\t\tif ( event.result === false ) {\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tevent.type = type;\r\n\r\n\t\t// If nobody prevented the default action, do it now\r\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\r\n\r\n\t\t\tif ( ( !special._default ||\r\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\r\n\t\t\t\tacceptData( elem ) ) {\r\n\r\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\r\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\r\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\r\n\r\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\r\n\t\t\t\t\ttmp = elem[ ontype ];\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = null;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\r\n\t\t\t\t\tjQuery.event.triggered = type;\r\n\r\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\r\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telem[ type ]();\r\n\r\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\r\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tjQuery.event.triggered = undefined;\r\n\r\n\t\t\t\t\tif ( tmp ) {\r\n\t\t\t\t\t\telem[ ontype ] = tmp;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn event.result;\r\n\t},\r\n\r\n\t// Piggyback on a donor event to simulate a different one\r\n\t// Used only for `focus(in | out)` events\r\n\tsimulate: function( type, elem, event ) {\r\n\t\tvar e = jQuery.extend(\r\n\t\t\tnew jQuery.Event(),\r\n\t\t\tevent,\r\n\t\t\t{\r\n\t\t\t\ttype: type,\r\n\t\t\t\tisSimulated: true\r\n\t\t\t}\r\n\t\t);\r\n\r\n\t\tjQuery.event.trigger( e, null, elem );\r\n\t}\r\n\r\n} );\r\n\r\njQuery.fn.extend( {\r\n\r\n\ttrigger: function( type, data ) {\r\n\t\treturn this.each( function() {\r\n\t\t\tjQuery.event.trigger( type, data, this );\r\n\t\t} );\r\n\t},\r\n\ttriggerHandler: function( type, data ) {\r\n\t\tvar elem = this[ 0 ];\r\n\t\tif ( elem ) {\r\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n\r\n// Support: Firefox <=44\r\n// Firefox doesn't have focus(in | out) events\r\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\r\n//\r\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\r\n// focus(in | out) events fire after focus & blur events,\r\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\r\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\r\nif ( !support.focusin ) {\r\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\r\n\r\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\r\n\t\tvar handler = function( event ) {\r\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\r\n\t\t};\r\n\r\n\t\tjQuery.event.special[ fix ] = {\r\n\t\t\tsetup: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\r\n\t\t\t\t}\r\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\r\n\t\t\t},\r\n\t\t\tteardown: function() {\r\n\t\t\t\tvar doc = this.ownerDocument || this,\r\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\r\n\r\n\t\t\t\tif ( !attaches ) {\r\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\r\n\t\t\t\t\tdataPriv.remove( doc, fix );\r\n\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t} );\r\n}\r\nvar location = window.location;\r\n\r\nvar nonce = Date.now();\r\n\r\nvar rquery = ( /\\?/ );\r\n\r\n\r\n\r\n// Cross-browser xml parsing\r\njQuery.parseXML = function( data ) {\r\n\tvar xml;\r\n\tif ( !data || typeof data !== \"string\" ) {\r\n\t\treturn null;\r\n\t}\r\n\r\n\t// Support: IE 9 - 11 only\r\n\t// IE throws on parseFromString with invalid input.\r\n\ttry {\r\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\r\n\t} catch ( e ) {\r\n\t\txml = undefined;\r\n\t}\r\n\r\n\tif ( !xml || xml.getElementsByTagName( \"parsererror\" ).length ) {\r\n\t\tjQuery.error( \"Invalid XML: \" + data );\r\n\t}\r\n\treturn xml;\r\n};\r\n\r\n\r\nvar\r\n\trbracket = /\\[\\]$/,\r\n\trCRLF = /\\r?\\n/g,\r\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\r\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\r\n\r\nfunction buildParams( prefix, obj, traditional, add ) {\r\n\tvar name;\r\n\r\n\tif ( Array.isArray( obj ) ) {\r\n\r\n\t\t// Serialize array item.\r\n\t\tjQuery.each( obj, function( i, v ) {\r\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\r\n\r\n\t\t\t\t// Treat each array item as a scalar.\r\n\t\t\t\tadd( prefix, v );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\r\n\t\t\t\tbuildParams(\r\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\r\n\t\t\t\t\tv,\r\n\t\t\t\t\ttraditional,\r\n\t\t\t\t\tadd\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t} );\r\n\r\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\r\n\r\n\t\t// Serialize object item.\r\n\t\tfor ( name in obj ) {\r\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\t// Serialize scalar item.\r\n\t\tadd( prefix, obj );\r\n\t}\r\n}\r\n\r\n// Serialize an array of form elements or a set of\r\n// key/values into a query string\r\njQuery.param = function( a, traditional ) {\r\n\tvar prefix,\r\n\t\ts = [],\r\n\t\tadd = function( key, valueOrFunction ) {\r\n\r\n\t\t\t// If value is a function, invoke it and use its return value\r\n\t\t\tvar value = isFunction( valueOrFunction ) ?\r\n\t\t\t\tvalueOrFunction() :\r\n\t\t\t\tvalueOrFunction;\r\n\r\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\r\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\r\n\t\t};\r\n\r\n\t// If an array was passed in, assume that it is an array of form elements.\r\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\r\n\r\n\t\t// Serialize the form elements\r\n\t\tjQuery.each( a, function() {\r\n\t\t\tadd( this.name, this.value );\r\n\t\t} );\r\n\r\n\t} else {\r\n\r\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\r\n\t\t// did it), otherwise encode params recursively.\r\n\t\tfor ( prefix in a ) {\r\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\r\n\t\t}\r\n\t}\r\n\r\n\t// Return the resulting serialization\r\n\treturn s.join( \"&\" );\r\n};\r\n\r\njQuery.fn.extend( {\r\n\tserialize: function() {\r\n\t\treturn jQuery.param( this.serializeArray() );\r\n\t},\r\n\tserializeArray: function() {\r\n\t\treturn this.map( function() {\r\n\r\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\r\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\r\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\r\n\t\t} )\r\n\t\t.filter( function() {\r\n\t\t\tvar type = this.type;\r\n\r\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\r\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\r\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\r\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\r\n\t\t} )\r\n\t\t.map( function( i, elem ) {\r\n\t\t\tvar val = jQuery( this ).val();\r\n\r\n\t\t\tif ( val == null ) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tif ( Array.isArray( val ) ) {\r\n\t\t\t\treturn jQuery.map( val, function( val ) {\r\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\r\n\t\t\t\t} );\r\n\t\t\t}\r\n\r\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\r\n\t\t} ).get();\r\n\t}\r\n} );\r\n\r\n\r\nvar\r\n\tr20 = /%20/g,\r\n\trhash = /#.*$/,\r\n\trantiCache = /([?&])_=[^&]*/,\r\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\r\n\r\n\t// #7653, #8125, #8152: local protocol detection\r\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\r\n\trnoContent = /^(?:GET|HEAD)$/,\r\n\trprotocol = /^\\/\\//,\r\n\r\n\t/* Prefilters\r\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\r\n\t * 2) These are called:\r\n\t * - BEFORE asking for a transport\r\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\r\n\t * 3) key is the dataType\r\n\t * 4) the catchall symbol \"*\" can be used\r\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\r\n\t */\r\n\tprefilters = {},\r\n\r\n\t/* Transports bindings\r\n\t * 1) key is the dataType\r\n\t * 2) the catchall symbol \"*\" can be used\r\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\r\n\t */\r\n\ttransports = {},\r\n\r\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\r\n\tallTypes = \"*/\".concat( \"*\" ),\r\n\r\n\t// Anchor tag for parsing the document origin\r\n\toriginAnchor = document.createElement( \"a\" );\r\n\toriginAnchor.href = location.href;\r\n\r\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\r\nfunction addToPrefiltersOrTransports( structure ) {\r\n\r\n\t// dataTypeExpression is optional and defaults to \"*\"\r\n\treturn function( dataTypeExpression, func ) {\r\n\r\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\r\n\t\t\tfunc = dataTypeExpression;\r\n\t\t\tdataTypeExpression = \"*\";\r\n\t\t}\r\n\r\n\t\tvar dataType,\r\n\t\t\ti = 0,\r\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\r\n\r\n\t\tif ( isFunction( func ) ) {\r\n\r\n\t\t\t// For each dataType in the dataTypeExpression\r\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\r\n\r\n\t\t\t\t// Prepend if requested\r\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\r\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\r\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\r\n\r\n\t\t\t\t// Otherwise append\r\n\t\t\t\t} else {\r\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n}\r\n\r\n// Base inspection function for prefilters and transports\r\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\r\n\r\n\tvar inspected = {},\r\n\t\tseekingTransport = ( structure === transports );\r\n\r\n\tfunction inspect( dataType ) {\r\n\t\tvar selected;\r\n\t\tinspected[ dataType ] = true;\r\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\r\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\r\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\r\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\r\n\r\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\r\n\t\t\t\tinspect( dataTypeOrTransport );\r\n\t\t\t\treturn false;\r\n\t\t\t} else if ( seekingTransport ) {\r\n\t\t\t\treturn !( selected = dataTypeOrTransport );\r\n\t\t\t}\r\n\t\t} );\r\n\t\treturn selected;\r\n\t}\r\n\r\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\r\n}\r\n\r\n// A special extend for ajax options\r\n// that takes \"flat\" options (not to be deep extended)\r\n// Fixes #9887\r\nfunction ajaxExtend( target, src ) {\r\n\tvar key, deep,\r\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\r\n\r\n\tfor ( key in src ) {\r\n\t\tif ( src[ key ] !== undefined ) {\r\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\r\n\t\t}\r\n\t}\r\n\tif ( deep ) {\r\n\t\tjQuery.extend( true, target, deep );\r\n\t}\r\n\r\n\treturn target;\r\n}\r\n\r\n/* Handles responses to an ajax request:\r\n * - finds the right dataType (mediates between content-type and expected dataType)\r\n * - returns the corresponding response\r\n */\r\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\r\n\r\n\tvar ct, type, finalDataType, firstDataType,\r\n\t\tcontents = s.contents,\r\n\t\tdataTypes = s.dataTypes;\r\n\r\n\t// Remove auto dataType and get content-type in the process\r\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\r\n\t\tdataTypes.shift();\r\n\t\tif ( ct === undefined ) {\r\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\r\n\t\t}\r\n\t}\r\n\r\n\t// Check if we're dealing with a known content-type\r\n\tif ( ct ) {\r\n\t\tfor ( type in contents ) {\r\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\r\n\t\t\t\tdataTypes.unshift( type );\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Check to see if we have a response for the expected dataType\r\n\tif ( dataTypes[ 0 ] in responses ) {\r\n\t\tfinalDataType = dataTypes[ 0 ];\r\n\t} else {\r\n\r\n\t\t// Try convertible dataTypes\r\n\t\tfor ( type in responses ) {\r\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\r\n\t\t\t\tfinalDataType = type;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tif ( !firstDataType ) {\r\n\t\t\t\tfirstDataType = type;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Or just use first one\r\n\t\tfinalDataType = finalDataType || firstDataType;\r\n\t}\r\n\r\n\t// If we found a dataType\r\n\t// We add the dataType to the list if needed\r\n\t// and return the corresponding response\r\n\tif ( finalDataType ) {\r\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\r\n\t\t\tdataTypes.unshift( finalDataType );\r\n\t\t}\r\n\t\treturn responses[ finalDataType ];\r\n\t}\r\n}\r\n\r\n/* Chain conversions given the request and the original response\r\n * Also sets the responseXXX fields on the jqXHR instance\r\n */\r\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\r\n\tvar conv2, current, conv, tmp, prev,\r\n\t\tconverters = {},\r\n\r\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\r\n\t\tdataTypes = s.dataTypes.slice();\r\n\r\n\t// Create converters map with lowercased keys\r\n\tif ( dataTypes[ 1 ] ) {\r\n\t\tfor ( conv in s.converters ) {\r\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\r\n\t\t}\r\n\t}\r\n\r\n\tcurrent = dataTypes.shift();\r\n\r\n\t// Convert to each sequential dataType\r\n\twhile ( current ) {\r\n\r\n\t\tif ( s.responseFields[ current ] ) {\r\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\r\n\t\t}\r\n\r\n\t\t// Apply the dataFilter if provided\r\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\r\n\t\t\tresponse = s.dataFilter( response, s.dataType );\r\n\t\t}\r\n\r\n\t\tprev = current;\r\n\t\tcurrent = dataTypes.shift();\r\n\r\n\t\tif ( current ) {\r\n\r\n\t\t\t// There's only work to do if current dataType is non-auto\r\n\t\t\tif ( current === \"*\" ) {\r\n\r\n\t\t\t\tcurrent = prev;\r\n\r\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\r\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\r\n\r\n\t\t\t\t// Seek a direct converter\r\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\r\n\r\n\t\t\t\t// If none found, seek a pair\r\n\t\t\t\tif ( !conv ) {\r\n\t\t\t\t\tfor ( conv2 in converters ) {\r\n\r\n\t\t\t\t\t\t// If conv2 outputs current\r\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\r\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\r\n\r\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\r\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\r\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\r\n\t\t\t\t\t\t\tif ( conv ) {\r\n\r\n\t\t\t\t\t\t\t\t// Condense equivalence converters\r\n\t\t\t\t\t\t\t\tif ( conv === true ) {\r\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\r\n\r\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\r\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\r\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\r\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Apply converter (if not an equivalence)\r\n\t\t\t\tif ( conv !== true ) {\r\n\r\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\r\n\t\t\t\t\tif ( conv && s.throws ) {\r\n\t\t\t\t\t\tresponse = conv( response );\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttry {\r\n\t\t\t\t\t\t\tresponse = conv( response );\r\n\t\t\t\t\t\t} catch ( e ) {\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\r\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { state: \"success\", data: response };\r\n}\r\n\r\njQuery.extend( {\r\n\r\n\t// Counter for holding the number of active queries\r\n\tactive: 0,\r\n\r\n\t// Last-Modified header cache for next request\r\n\tlastModified: {},\r\n\tetag: {},\r\n\r\n\tajaxSettings: {\r\n\t\turl: location.href,\r\n\t\ttype: \"GET\",\r\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\r\n\t\tglobal: true,\r\n\t\tprocessData: true,\r\n\t\tasync: true,\r\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\r\n\r\n\t\t/*\r\n\t\ttimeout: 0,\r\n\t\tdata: null,\r\n\t\tdataType: null,\r\n\t\tusername: null,\r\n\t\tpassword: null,\r\n\t\tcache: null,\r\n\t\tthrows: false,\r\n\t\ttraditional: false,\r\n\t\theaders: {},\r\n\t\t*/\r\n\r\n\t\taccepts: {\r\n\t\t\t\"*\": allTypes,\r\n\t\t\ttext: \"text/plain\",\r\n\t\t\thtml: \"text/html\",\r\n\t\t\txml: \"application/xml, text/xml\",\r\n\t\t\tjson: \"application/json, text/javascript\"\r\n\t\t},\r\n\r\n\t\tcontents: {\r\n\t\t\txml: /\\bxml\\b/,\r\n\t\t\thtml: /\\bhtml/,\r\n\t\t\tjson: /\\bjson\\b/\r\n\t\t},\r\n\r\n\t\tresponseFields: {\r\n\t\t\txml: \"responseXML\",\r\n\t\t\ttext: \"responseText\",\r\n\t\t\tjson: \"responseJSON\"\r\n\t\t},\r\n\r\n\t\t// Data converters\r\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\r\n\t\tconverters: {\r\n\r\n\t\t\t// Convert anything to text\r\n\t\t\t\"* text\": String,\r\n\r\n\t\t\t// Text to html (true = no transformation)\r\n\t\t\t\"text html\": true,\r\n\r\n\t\t\t// Evaluate text as a json expression\r\n\t\t\t\"text json\": JSON.parse,\r\n\r\n\t\t\t// Parse text as xml\r\n\t\t\t\"text xml\": jQuery.parseXML\r\n\t\t},\r\n\r\n\t\t// For options that shouldn't be deep extended:\r\n\t\t// you can add your own custom options here if\r\n\t\t// and when you create one that shouldn't be\r\n\t\t// deep extended (see ajaxExtend)\r\n\t\tflatOptions: {\r\n\t\t\turl: true,\r\n\t\t\tcontext: true\r\n\t\t}\r\n\t},\r\n\r\n\t// Creates a full fledged settings object into target\r\n\t// with both ajaxSettings and settings fields.\r\n\t// If target is omitted, writes into ajaxSettings.\r\n\tajaxSetup: function( target, settings ) {\r\n\t\treturn settings ?\r\n\r\n\t\t\t// Building a settings object\r\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\r\n\r\n\t\t\t// Extending ajaxSettings\r\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\r\n\t},\r\n\r\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\r\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\r\n\r\n\t// Main method\r\n\tajax: function( url, options ) {\r\n\r\n\t\t// If url is an object, simulate pre-1.5 signature\r\n\t\tif ( typeof url === \"object\" ) {\r\n\t\t\toptions = url;\r\n\t\t\turl = undefined;\r\n\t\t}\r\n\r\n\t\t// Force options to be an object\r\n\t\toptions = options || {};\r\n\r\n\t\tvar transport,\r\n\r\n\t\t\t// URL without anti-cache param\r\n\t\t\tcacheURL,\r\n\r\n\t\t\t// Response headers\r\n\t\t\tresponseHeadersString,\r\n\t\t\tresponseHeaders,\r\n\r\n\t\t\t// timeout handle\r\n\t\t\ttimeoutTimer,\r\n\r\n\t\t\t// Url cleanup var\r\n\t\t\turlAnchor,\r\n\r\n\t\t\t// Request state (becomes false upon send and true upon completion)\r\n\t\t\tcompleted,\r\n\r\n\t\t\t// To know if global events are to be dispatched\r\n\t\t\tfireGlobals,\r\n\r\n\t\t\t// Loop variable\r\n\t\t\ti,\r\n\r\n\t\t\t// uncached part of the url\r\n\t\t\tuncached,\r\n\r\n\t\t\t// Create the final options object\r\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\r\n\r\n\t\t\t// Callbacks context\r\n\t\t\tcallbackContext = s.context || s,\r\n\r\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\r\n\t\t\tglobalEventContext = s.context &&\r\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\r\n\t\t\t\t\tjQuery( callbackContext ) :\r\n\t\t\t\t\tjQuery.event,\r\n\r\n\t\t\t// Deferreds\r\n\t\t\tdeferred = jQuery.Deferred(),\r\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\r\n\r\n\t\t\t// Status-dependent callbacks\r\n\t\t\tstatusCode = s.statusCode || {},\r\n\r\n\t\t\t// Headers (they are sent all at once)\r\n\t\t\trequestHeaders = {},\r\n\t\t\trequestHeadersNames = {},\r\n\r\n\t\t\t// Default abort message\r\n\t\t\tstrAbort = \"canceled\",\r\n\r\n\t\t\t// Fake xhr\r\n\t\t\tjqXHR = {\r\n\t\t\t\treadyState: 0,\r\n\r\n\t\t\t\t// Builds headers hashtable if needed\r\n\t\t\t\tgetResponseHeader: function( key ) {\r\n\t\t\t\t\tvar match;\r\n\t\t\t\t\tif ( completed ) {\r\n\t\t\t\t\t\tif ( !responseHeaders ) {\r\n\t\t\t\t\t\t\tresponseHeaders = {};\r\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\r\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() ];\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn match == null ? null : match;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Raw string\r\n\t\t\t\tgetAllResponseHeaders: function() {\r\n\t\t\t\t\treturn completed ? responseHeadersString : null;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Caches the header\r\n\t\t\t\tsetRequestHeader: function( name, value ) {\r\n\t\t\t\t\tif ( completed == null ) {\r\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\r\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\r\n\t\t\t\t\t\trequestHeaders[ name ] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Overrides response content-type header\r\n\t\t\t\toverrideMimeType: function( type ) {\r\n\t\t\t\t\tif ( completed == null ) {\r\n\t\t\t\t\t\ts.mimeType = type;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Status-dependent callbacks\r\n\t\t\t\tstatusCode: function( map ) {\r\n\t\t\t\t\tvar code;\r\n\t\t\t\t\tif ( map ) {\r\n\t\t\t\t\t\tif ( completed ) {\r\n\r\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\r\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\r\n\t\t\t\t\t\t\tfor ( code in map ) {\r\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t},\r\n\r\n\t\t\t\t// Cancel the request\r\n\t\t\t\tabort: function( statusText ) {\r\n\t\t\t\t\tvar finalText = statusText || strAbort;\r\n\t\t\t\t\tif ( transport ) {\r\n\t\t\t\t\t\ttransport.abort( finalText );\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdone( 0, finalText );\r\n\t\t\t\t\treturn this;\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t// Attach deferreds\r\n\t\tdeferred.promise( jqXHR );\r\n\r\n\t\t// Add protocol if not provided (prefilters might expect it)\r\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\r\n\t\t// We also use the url parameter if available\r\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\r\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\r\n\r\n\t\t// Alias method option to type as per ticket #12004\r\n\t\ts.type = options.method || options.type || s.method || s.type;\r\n\r\n\t\t// Extract dataTypes list\r\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\r\n\r\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\r\n\t\tif ( s.crossDomain == null ) {\r\n\t\t\turlAnchor = document.createElement( \"a\" );\r\n\r\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\r\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\r\n\t\t\t// e.g. http://example.com:80x/\r\n\t\t\ttry {\r\n\t\t\t\turlAnchor.href = s.url;\r\n\r\n\t\t\t\t// Support: IE <=8 - 11 only\r\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\r\n\t\t\t\turlAnchor.href = urlAnchor.href;\r\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\r\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\r\n\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\r\n\t\t\t\t// it can be rejected by the transport if it is invalid\r\n\t\t\t\ts.crossDomain = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Convert data if not already a string\r\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\r\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\r\n\t\t}\r\n\r\n\t\t// Apply prefilters\r\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\r\n\r\n\t\t// If request was aborted inside a prefilter, stop there\r\n\t\tif ( completed ) {\r\n\t\t\treturn jqXHR;\r\n\t\t}\r\n\r\n\t\t// We can fire global events as of now if asked to\r\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\r\n\t\tfireGlobals = jQuery.event && s.global;\r\n\r\n\t\t// Watch for a new set of requests\r\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\r\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\r\n\t\t}\r\n\r\n\t\t// Uppercase the type\r\n\t\ts.type = s.type.toUpperCase();\r\n\r\n\t\t// Determine if request has content\r\n\t\ts.hasContent = !rnoContent.test( s.type );\r\n\r\n\t\t// Save the URL in case we're toying with the If-Modified-Since\r\n\t\t// and/or If-None-Match header later on\r\n\t\t// Remove hash to simplify url manipulation\r\n\t\tcacheURL = s.url.replace( rhash, \"\" );\r\n\r\n\t\t// More options handling for requests with no content\r\n\t\tif ( !s.hasContent ) {\r\n\r\n\t\t\t// Remember the hash so we can put it back\r\n\t\t\tuncached = s.url.slice( cacheURL.length );\r\n\r\n\t\t\t// If data is available and should be processed, append data to url\r\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\r\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\r\n\r\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\r\n\t\t\t\tdelete s.data;\r\n\t\t\t}\r\n\r\n\t\t\t// Add or update anti-cache param if needed\r\n\t\t\tif ( s.cache === false ) {\r\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\r\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce++ ) + uncached;\r\n\t\t\t}\r\n\r\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\r\n\t\t\ts.url = cacheURL + uncached;\r\n\r\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\r\n\t\t} else if ( s.data && s.processData &&\r\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\r\n\t\t\ts.data = s.data.replace( r20, \"+\" );\r\n\t\t}\r\n\r\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\r\n\t\tif ( s.ifModified ) {\r\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\r\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\r\n\t\t\t}\r\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\r\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Set the correct header, if data is being sent\r\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\r\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\r\n\t\t}\r\n\r\n\t\t// Set the Accepts header for the server, depending on the dataType\r\n\t\tjqXHR.setRequestHeader(\r\n\t\t\t\"Accept\",\r\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\r\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\r\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\r\n\t\t\t\ts.accepts[ \"*\" ]\r\n\t\t);\r\n\r\n\t\t// Check for headers option\r\n\t\tfor ( i in s.headers ) {\r\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\r\n\t\t}\r\n\r\n\t\t// Allow custom headers/mimetypes and early abort\r\n\t\tif ( s.beforeSend &&\r\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\r\n\r\n\t\t\t// Abort if not done already and return\r\n\t\t\treturn jqXHR.abort();\r\n\t\t}\r\n\r\n\t\t// Aborting is no longer a cancellation\r\n\t\tstrAbort = \"abort\";\r\n\r\n\t\t// Install callbacks on deferreds\r\n\t\tcompleteDeferred.add( s.complete );\r\n\t\tjqXHR.done( s.success );\r\n\t\tjqXHR.fail( s.error );\r\n\r\n\t\t// Get transport\r\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\r\n\r\n\t\t// If no transport, we auto-abort\r\n\t\tif ( !transport ) {\r\n\t\t\tdone( -1, \"No Transport\" );\r\n\t\t} else {\r\n\t\t\tjqXHR.readyState = 1;\r\n\r\n\t\t\t// Send global event\r\n\t\t\tif ( fireGlobals ) {\r\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\r\n\t\t\t}\r\n\r\n\t\t\t// If request was aborted inside ajaxSend, stop there\r\n\t\t\tif ( completed ) {\r\n\t\t\t\treturn jqXHR;\r\n\t\t\t}\r\n\r\n\t\t\t// Timeout\r\n\t\t\tif ( s.async && s.timeout > 0 ) {\r\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\r\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\r\n\t\t\t\t}, s.timeout );\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tcompleted = false;\r\n\t\t\t\ttransport.send( requestHeaders, done );\r\n\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t// Rethrow post-completion exceptions\r\n\t\t\t\tif ( completed ) {\r\n\t\t\t\t\tthrow e;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Propagate others as results\r\n\t\t\t\tdone( -1, e );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Callback for when everything is done\r\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\r\n\t\t\tvar isSuccess, success, error, response, modified,\r\n\t\t\t\tstatusText = nativeStatusText;\r\n\r\n\t\t\t// Ignore repeat invocations\r\n\t\t\tif ( completed ) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tcompleted = true;\r\n\r\n\t\t\t// Clear timeout if it exists\r\n\t\t\tif ( timeoutTimer ) {\r\n\t\t\t\twindow.clearTimeout( timeoutTimer );\r\n\t\t\t}\r\n\r\n\t\t\t// Dereference transport for early garbage collection\r\n\t\t\t// (no matter how long the jqXHR object will be used)\r\n\t\t\ttransport = undefined;\r\n\r\n\t\t\t// Cache response headers\r\n\t\t\tresponseHeadersString = headers || \"\";\r\n\r\n\t\t\t// Set readyState\r\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\r\n\r\n\t\t\t// Determine if successful\r\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\r\n\r\n\t\t\t// Get response data\r\n\t\t\tif ( responses ) {\r\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\r\n\t\t\t}\r\n\r\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\r\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\r\n\r\n\t\t\t// If successful, handle type chaining\r\n\t\t\tif ( isSuccess ) {\r\n\r\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\r\n\t\t\t\tif ( s.ifModified ) {\r\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\r\n\t\t\t\t\tif ( modified ) {\r\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\r\n\t\t\t\t\tif ( modified ) {\r\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// if no content\r\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\r\n\t\t\t\t\tstatusText = \"nocontent\";\r\n\r\n\t\t\t\t// if not modified\r\n\t\t\t\t} else if ( status === 304 ) {\r\n\t\t\t\t\tstatusText = \"notmodified\";\r\n\r\n\t\t\t\t// If we have data, let's convert it\r\n\t\t\t\t} else {\r\n\t\t\t\t\tstatusText = response.state;\r\n\t\t\t\t\tsuccess = response.data;\r\n\t\t\t\t\terror = response.error;\r\n\t\t\t\t\tisSuccess = !error;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\r\n\t\t\t\terror = statusText;\r\n\t\t\t\tif ( status || !statusText ) {\r\n\t\t\t\t\tstatusText = \"error\";\r\n\t\t\t\t\tif ( status < 0 ) {\r\n\t\t\t\t\t\tstatus = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Set data for the fake xhr object\r\n\t\t\tjqXHR.status = status;\r\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\r\n\r\n\t\t\t// Success/Error\r\n\t\t\tif ( isSuccess ) {\r\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\r\n\t\t\t} else {\r\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\r\n\t\t\t}\r\n\r\n\t\t\t// Status-dependent callbacks\r\n\t\t\tjqXHR.statusCode( statusCode );\r\n\t\t\tstatusCode = undefined;\r\n\r\n\t\t\tif ( fireGlobals ) {\r\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\r\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\r\n\t\t\t}\r\n\r\n\t\t\t// Complete\r\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\r\n\r\n\t\t\tif ( fireGlobals ) {\r\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\r\n\r\n\t\t\t\t// Handle the global AJAX counter\r\n\t\t\t\tif ( !( --jQuery.active ) ) {\r\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn jqXHR;\r\n\t},\r\n\r\n\tgetJSON: function( url, data, callback ) {\r\n\t\treturn jQuery.get( url, data, callback, \"json\" );\r\n\t},\r\n\r\n\tgetScript: function( url, callback ) {\r\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\r\n\t}\r\n} );\r\n\r\njQuery.each( [ \"get\", \"post\" ], function( i, method ) {\r\n\tjQuery[ method ] = function( url, data, callback, type ) {\r\n\r\n\t\t// Shift arguments if data argument was omitted\r\n\t\tif ( isFunction( data ) ) {\r\n\t\t\ttype = type || callback;\r\n\t\t\tcallback = data;\r\n\t\t\tdata = undefined;\r\n\t\t}\r\n\r\n\t\t// The url can be an options object (which then must have .url)\r\n\t\treturn jQuery.ajax( jQuery.extend( {\r\n\t\t\turl: url,\r\n\t\t\ttype: method,\r\n\t\t\tdataType: type,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: callback\r\n\t\t}, jQuery.isPlainObject( url ) && url ) );\r\n\t};\r\n} );\r\n\r\n\r\njQuery._evalUrl = function( url ) {\r\n\treturn jQuery.ajax( {\r\n\t\turl: url,\r\n\r\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\r\n\t\ttype: \"GET\",\r\n\t\tdataType: \"script\",\r\n\t\tcache: true,\r\n\t\tasync: false,\r\n\t\tglobal: false,\r\n\t\t\"throws\": true\r\n\t} );\r\n};\r\n\r\n\r\njQuery.fn.extend( {\r\n\twrapAll: function( html ) {\r\n\t\tvar wrap;\r\n\r\n\t\tif ( this[ 0 ] ) {\r\n\t\t\tif ( isFunction( html ) ) {\r\n\t\t\t\thtml = html.call( this[ 0 ] );\r\n\t\t\t}\r\n\r\n\t\t\t// The elements to wrap the target around\r\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\r\n\r\n\t\t\tif ( this[ 0 ].parentNode ) {\r\n\t\t\t\twrap.insertBefore( this[ 0 ] );\r\n\t\t\t}\r\n\r\n\t\t\twrap.map( function() {\r\n\t\t\t\tvar elem = this;\r\n\r\n\t\t\t\twhile ( elem.firstElementChild ) {\r\n\t\t\t\t\telem = elem.firstElementChild;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn elem;\r\n\t\t\t} ).append( this );\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\twrapInner: function( html ) {\r\n\t\tif ( isFunction( html ) ) {\r\n\t\t\treturn this.each( function( i ) {\r\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\r\n\t\t\t} );\r\n\t\t}\r\n\r\n\t\treturn this.each( function() {\r\n\t\t\tvar self = jQuery( this ),\r\n\t\t\t\tcontents = self.contents();\r\n\r\n\t\t\tif ( contents.length ) {\r\n\t\t\t\tcontents.wrapAll( html );\r\n\r\n\t\t\t} else {\r\n\t\t\t\tself.append( html );\r\n\t\t\t}\r\n\t\t} );\r\n\t},\r\n\r\n\twrap: function( html ) {\r\n\t\tvar htmlIsFunction = isFunction( html );\r\n\r\n\t\treturn this.each( function( i ) {\r\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\r\n\t\t} );\r\n\t},\r\n\r\n\tunwrap: function( selector ) {\r\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\r\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\r\n\t\t} );\r\n\t\treturn this;\r\n\t}\r\n} );\r\n\r\n\r\njQuery.expr.pseudos.hidden = function( elem ) {\r\n\treturn !jQuery.expr.pseudos.visible( elem );\r\n};\r\njQuery.expr.pseudos.visible = function( elem ) {\r\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\r\n};\r\n\r\n\r\n\r\n\r\njQuery.ajaxSettings.xhr = function() {\r\n\ttry {\r\n\t\treturn new window.XMLHttpRequest();\r\n\t} catch ( e ) {}\r\n};\r\n\r\nvar xhrSuccessStatus = {\r\n\r\n\t\t// File protocol always yields status code 0, assume 200\r\n\t\t0: 200,\r\n\r\n\t\t// Support: IE <=9 only\r\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\r\n\t\t1223: 204\r\n\t},\r\n\txhrSupported = jQuery.ajaxSettings.xhr();\r\n\r\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\r\nsupport.ajax = xhrSupported = !!xhrSupported;\r\n\r\njQuery.ajaxTransport( function( options ) {\r\n\tvar callback, errorCallback;\r\n\r\n\t// Cross domain only allowed if supported through XMLHttpRequest\r\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\r\n\t\treturn {\r\n\t\t\tsend: function( headers, complete ) {\r\n\t\t\t\tvar i,\r\n\t\t\t\t\txhr = options.xhr();\r\n\r\n\t\t\t\txhr.open(\r\n\t\t\t\t\toptions.type,\r\n\t\t\t\t\toptions.url,\r\n\t\t\t\t\toptions.async,\r\n\t\t\t\t\toptions.username,\r\n\t\t\t\t\toptions.password\r\n\t\t\t\t);\r\n\r\n\t\t\t\t// Apply custom fields if provided\r\n\t\t\t\tif ( options.xhrFields ) {\r\n\t\t\t\t\tfor ( i in options.xhrFields ) {\r\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Override mime type if needed\r\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\r\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// X-Requested-With header\r\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\r\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\r\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\r\n\t\t\t\t// For same-domain requests, won't change header if already provided.\r\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\r\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Set headers\r\n\t\t\t\tfor ( i in headers ) {\r\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Callback\r\n\t\t\t\tcallback = function( type ) {\r\n\t\t\t\t\treturn function() {\r\n\t\t\t\t\t\tif ( callback ) {\r\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\r\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\r\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\r\n\r\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\r\n\t\t\t\t\t\t\t\txhr.abort();\r\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\r\n\r\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\r\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\r\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\r\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\r\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tcomplete(\r\n\r\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\r\n\t\t\t\t\t\t\t\t\t\txhr.status,\r\n\t\t\t\t\t\t\t\t\t\txhr.statusText\r\n\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tcomplete(\r\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\r\n\t\t\t\t\t\t\t\t\txhr.statusText,\r\n\r\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\r\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\r\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\r\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\r\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\r\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\r\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\r\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// Listen to events\r\n\t\t\t\txhr.onload = callback();\r\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\r\n\r\n\t\t\t\t// Support: IE 9 only\r\n\t\t\t\t// Use onreadystatechange to replace onabort\r\n\t\t\t\t// to handle uncaught aborts\r\n\t\t\t\tif ( xhr.onabort !== undefined ) {\r\n\t\t\t\t\txhr.onabort = errorCallback;\r\n\t\t\t\t} else {\r\n\t\t\t\t\txhr.onreadystatechange = function() {\r\n\r\n\t\t\t\t\t\t// Check readyState before timeout as it changes\r\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\r\n\r\n\t\t\t\t\t\t\t// Allow onerror to be called first,\r\n\t\t\t\t\t\t\t// but that will not handle a native abort\r\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\r\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\r\n\t\t\t\t\t\t\twindow.setTimeout( function() {\r\n\t\t\t\t\t\t\t\tif ( callback ) {\r\n\t\t\t\t\t\t\t\t\terrorCallback();\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t} );\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Create the abort callback\r\n\t\t\t\tcallback = callback( \"abort\" );\r\n\r\n\t\t\t\ttry {\r\n\r\n\t\t\t\t\t// Do send the request (this may raise an exception)\r\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\r\n\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\r\n\t\t\t\t\tif ( callback ) {\r\n\t\t\t\t\t\tthrow e;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tabort: function() {\r\n\t\t\t\tif ( callback ) {\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}\r\n} );\r\n\r\n\r\n\r\n\r\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\r\njQuery.ajaxPrefilter( function( s ) {\r\n\tif ( s.crossDomain ) {\r\n\t\ts.contents.script = false;\r\n\t}\r\n} );\r\n\r\n// Install script dataType\r\njQuery.ajaxSetup( {\r\n\taccepts: {\r\n\t\tscript: \"text/javascript, application/javascript, \" +\r\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\r\n\t},\r\n\tcontents: {\r\n\t\tscript: /\\b(?:java|ecma)script\\b/\r\n\t},\r\n\tconverters: {\r\n\t\t\"text script\": function( text ) {\r\n\t\t\tjQuery.globalEval( text );\r\n\t\t\treturn text;\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n// Handle cache's special case and crossDomain\r\njQuery.ajaxPrefilter( \"script\", function( s ) {\r\n\tif ( s.cache === undefined ) {\r\n\t\ts.cache = false;\r\n\t}\r\n\tif ( s.crossDomain ) {\r\n\t\ts.type = \"GET\";\r\n\t}\r\n} );\r\n\r\n// Bind script tag hack transport\r\njQuery.ajaxTransport( \"script\", function( s ) {\r\n\r\n\t// This transport only deals with cross domain requests\r\n\tif ( s.crossDomain ) {\r\n\t\tvar script, callback;\r\n\t\treturn {\r\n\t\t\tsend: function( _, complete ) {\r\n\t\t\t\tscript = jQuery( \"