{"version":3,"file":"bundle.js","mappings":"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AiB6uD,EAAAnoD,EAAuB,kDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,0CCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,8CCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,2CCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,8CCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,+CCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,oDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,+CCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,mDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,wDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,mDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,oDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,oDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,mDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,kDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,oDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,wDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,uDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,wDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,wDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,oDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,iDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,8CCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,yCCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,gECAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,gECAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,gECAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,kECAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,kDCAxCjP,EAAAuI,QAAiB6uD,EAAAnoD,EAAuB,6CCAxCjP,EAAAuI,QAAA,2MCAAvI,EAAAuI,QAAA,ojBAAkl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","sources":["webpack://giving-in-america/./node_modules/angular-sanitize/angular-sanitize.js","webpack://giving-in-america/./node_modules/angular-sanitize/index.js","webpack://giving-in-america/./node_modules/angular-ui-router/release/angular-ui-router.js","webpack://giving-in-america/./node_modules/axios/index.js","webpack://giving-in-america/./node_modules/axios/lib/adapters/xhr.js","webpack://giving-in-america/./node_modules/axios/lib/axios.js","webpack://giving-in-america/./node_modules/axios/lib/cancel/Cancel.js","webpack://giving-in-america/./node_modules/axios/lib/cancel/CancelToken.js","webpack://giving-in-america/./node_modules/axios/lib/cancel/isCancel.js","webpack://giving-in-america/./node_modules/axios/lib/core/Axios.js","webpack://giving-in-america/./node_modules/axios/lib/core/InterceptorManager.js","webpack://giving-in-america/./node_modules/axios/lib/core/buildFullPath.js","webpack://giving-in-america/./node_modules/axios/lib/core/createError.js","webpack://giving-in-america/./node_modules/axios/lib/core/dispatchRequest.js","webpack://giving-in-america/./node_modules/axios/lib/core/enhanceError.js","webpack://giving-in-america/./node_modules/axios/lib/core/mergeConfig.js","webpack://giving-in-america/./node_modules/axios/lib/core/settle.js","webpack://giving-in-america/./node_modules/axios/lib/core/transformData.js","webpack://giving-in-america/./node_modules/axios/lib/defaults.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/bind.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/buildURL.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/combineURLs.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/cookies.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/spread.js","webpack://giving-in-america/./node_modules/axios/lib/helpers/validator.js","webpack://giving-in-america/./node_modules/axios/lib/utils.js","webpack://giving-in-america/./node_modules/css-loader/lib/css-base.js","webpack://giving-in-america/./node_modules/css-loader/lib/url/escape.js","webpack://giving-in-america/./node_modules/jquery/dist/jquery.js","webpack://giving-in-america/./node_modules/style-loader/lib/urls.js","webpack://giving-in-america/./src/app.config.js","webpack://giving-in-america/./src/directives/imgPreload.directive.js","webpack://giving-in-america/./src/directives/paneResize.directive.js","webpack://giving-in-america/./src/directives/timeoutModal.directive.js","webpack://giving-in-america/./src/features/attract/attract.controller.js","webpack://giving-in-america/./src/features/attract/attract.routes.js","webpack://giving-in-america/./src/features/attract/index.js","webpack://giving-in-america/./src/features/carnegie/carnegie.routes.js","webpack://giving-in-america/./src/features/carnegie/index.js","webpack://giving-in-america/./src/features/carnegie/map.controller.js","webpack://giving-in-america/./src/features/carnegie/postcard.controller.js","webpack://giving-in-america/./src/features/credits/credits.controller.js","webpack://giving-in-america/./src/features/credits/credits.routes.js","webpack://giving-in-america/./src/features/credits/index.js","webpack://giving-in-america/./src/features/howDoWeGive/charity/charity.controller.js","webpack://giving-in-america/./src/features/howDoWeGive/howDoWeGive.routes.js","webpack://giving-in-america/./src/features/howDoWeGive/index.js","webpack://giving-in-america/./src/features/letters/index.js","webpack://giving-in-america/./src/features/letters/landing.controller.js","webpack://giving-in-america/./src/features/letters/letters.routes.js","webpack://giving-in-america/./src/features/letters/view.controller.js","webpack://giving-in-america/./src/features/letters/zoom.controller.js","webpack://giving-in-america/./src/features/main/index.js","webpack://giving-in-america/./src/features/main/main.controller.js","webpack://giving-in-america/./src/features/main/main.routes.js","webpack://giving-in-america/./src/features/marysCenter/index.js","webpack://giving-in-america/./src/features/marysCenter/marysCenter.routes.js","webpack://giving-in-america/./src/features/shared/hero/hero.controller.js","webpack://giving-in-america/./src/features/shared/hero/hero.routes.js","webpack://giving-in-america/./src/features/shared/hero/index.js","webpack://giving-in-america/./src/features/shared/item/item.controller.js","webpack://giving-in-america/./src/features/shared/landing/landing.controller.js","webpack://giving-in-america/./src/features/shared/page/page.controller.js","webpack://giving-in-america/./src/features/whatDoWeGive/habitat/habitat.controller.js","webpack://giving-in-america/./src/features/whatDoWeGive/habitat/habitatViewer.controller.js","webpack://giving-in-america/./src/features/whatDoWeGive/index.js","webpack://giving-in-america/./src/features/whatDoWeGive/whatDoWeGive.routes.js","webpack://giving-in-america/./src/features/whoGives/index.js","webpack://giving-in-america/./src/features/whoGives/whoGives.routes.js","webpack://giving-in-america/./src/features/whyDoWeGive/index.js","webpack://giving-in-america/./src/features/whyDoWeGive/unicef/unicef.controller.js","webpack://giving-in-america/./src/features/whyDoWeGive/whyDoWeGive.routes.js","webpack://giving-in-america/./src/services/displayManagement.service.js","webpack://giving-in-america/./src/services/eventsManagement.service.js","webpack://giving-in-america/./src/services/lettersService.service.js","webpack://giving-in-america/./src/services/timeoutService.service.js","webpack://giving-in-america/./node_modules/bootstrap/dist/css/bootstrap.css","webpack://giving-in-america/./src/styles/kiosk.scss","webpack://giving-in-america/./src/assets/libs/ng-scrollbar/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css","webpack://giving-in-america/./src/assets/webfonts/BodoniFLF_Bold/stylesheet.css","webpack://giving-in-america/./src/assets/webfonts/BodoniFLF_Roman/stylesheet.css","webpack://giving-in-america/./node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.svg","webpack://giving-in-america/./src/assets/img/Current_Active.png","webpack://giving-in-america/./src/assets/img/Current_Inactive.png","webpack://giving-in-america/./src/assets/img/LandingHeader.png","webpack://giving-in-america/./src/assets/img/Original_Active.png","webpack://giving-in-america/./src/assets/img/Original_Inactive.png","webpack://giving-in-america/./src/assets/img/how/full/How_EmbroideryFull.png","webpack://giving-in-america/./src/assets/img/shared/bg/BG_Default.png","webpack://giving-in-america/./src/assets/img/shared/bg/Carnegie_Map.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_BlurLight.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_corkboard.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_habitatLanding.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_habitatViewer.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_landing.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_letters.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_lettersZoom.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_main.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_postcard.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_scrapbook.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_scrapbookHero.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_slideshow.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_slideshowHero.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_table.png","webpack://giving-in-america/./src/assets/img/shared/bg/bg_tableHero.png","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_Back.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_HotSpot.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_NextItem.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_NextItemWhite.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_NextPage.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_PreviousItem.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_PreviousItemWhite.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_PreviousPage.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_ScrollbarDown.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_ScrollbarLeft.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_ScrollbarRight.svg","webpack://giving-in-america/./src/assets/img/shared/icons/Icon_ScrollbarUp.svg","webpack://giving-in-america/./src/assets/img/shared/icons/icon_scrollbarLine.svg","webpack://giving-in-america/./src/assets/img/shared/icons/icon_scrollbarLineHorz.svg","webpack://giving-in-america/./src/assets/img/what/thumbs/licensed/Habitat_ToolbeltThumb.png","webpack://giving-in-america/./src/assets/img/what/thumbs/licensed/habitat_timesheetThumb.png","webpack://giving-in-america/./src/assets/img/what/thumbs/unlicensed/habitat_timelapseThumb.png","webpack://giving-in-america/./src/assets/img/whoGives/thumbs/Carnegie_BustThumb.png","webpack://giving-in-america/./src/assets/img/why/thumbs/Unicef_BoxThumb.png","webpack://giving-in-america/./src/assets/libs/ng-scrollbar/malihu-custom-scrollbar-plugin/mCSB_buttons.png","webpack://giving-in-america/./src/assets/video/Attract.mp4","webpack://giving-in-america/./node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.eot","webpack://giving-in-america/./node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.ttf","webpack://giving-in-america/./node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.woff","webpack://giving-in-america/./node_modules/bootstrap/dist/fonts/glyphicons-halflings-regular.woff2","webpack://giving-in-america/./src/assets/webfonts/BodoniFLF_Bold/BodoniFLF-Bold.ttf","webpack://giving-in-america/./src/assets/webfonts/BodoniFLF_Roman/BodoniFLF-Roman.ttf","webpack://giving-in-america/./src/features/attract/attract.html","webpack://giving-in-america/./src/features/carnegie/carnegieMain.html","webpack://giving-in-america/./src/features/carnegie/postcard.html","webpack://giving-in-america/./src/features/credits/credits.html","webpack://giving-in-america/./src/features/howDoWeGive/charity/charity.html","webpack://giving-in-america/./src/features/letters/lettersLanding.html","webpack://giving-in-america/./src/features/letters/lettersView.html","webpack://giving-in-america/./src/features/letters/lettersZoom.html","webpack://giving-in-america/./src/features/main/main.html","webpack://giving-in-america/./src/features/shared/hero/hero.html","webpack://giving-in-america/./src/features/shared/item/item.html","webpack://giving-in-america/./src/features/shared/landing/landing.html","webpack://giving-in-america/./src/features/shared/page/page.html","webpack://giving-in-america/./src/features/timeout/timeout.html","webpack://giving-in-america/./src/features/whatDoWeGive/habitat/habitatMain.html","webpack://giving-in-america/./src/features/whatDoWeGive/habitat/habitatViewer.html","webpack://giving-in-america/./src/features/whyDoWeGive/unicef/unicef.html","webpack://giving-in-america/./node_modules/style-loader/lib/addStyles.js","webpack://giving-in-america/./node_modules/bootstrap/dist/css/bootstrap.css?6ba0","webpack://giving-in-america/./src/styles/kiosk.scss?6352","webpack://giving-in-america/./src/assets/libs/ng-scrollbar/malihu-custom-scrollbar-plugin/jquery.mCustomScrollbar.css?bf14","webpack://giving-in-america/./src/features/ sync ^\\.\\/.*\\.json$","webpack://giving-in-america/webpack/bootstrap","webpack://giving-in-america/webpack/runtime/global","webpack://giving-in-america/webpack/runtime/hasOwnProperty shorthand","webpack://giving-in-america/webpack/runtime/node module decorator","webpack://giving-in-america/webpack/runtime/publicPath","webpack://giving-in-america/./src/app.js"],"sourcesContent":["/**\n * @license AngularJS v1.8.3\n * (c) 2010-2020 Google LLC. http://angularjs.org\n * License: MIT\n */\n(function(window, angular) {'use strict';\n\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n * Any commits to this file should be reviewed with security in mind. *\n * Changes to this file can potentially create security vulnerabilities. *\n * An approval from 2 Core members with history of modifying *\n * this file is required. *\n * *\n * Does the change somehow allow for arbitrary javascript to be executed? *\n * Or allows for someone to change the prototype of built-in objects? *\n * Or gives undesired access to variables likes document or window? *\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\n\nvar $sanitizeMinErr = angular.$$minErr('$sanitize');\nvar bind;\nvar extend;\nvar forEach;\nvar isArray;\nvar isDefined;\nvar lowercase;\nvar noop;\nvar nodeContains;\nvar htmlParser;\nvar htmlSanitizeWriter;\n\n/**\n * @ngdoc module\n * @name ngSanitize\n * @description\n *\n * The `ngSanitize` module provides functionality to sanitize HTML.\n *\n * See {@link ngSanitize.$sanitize `$sanitize`} for usage.\n */\n\n/**\n * @ngdoc service\n * @name $sanitize\n * @kind function\n *\n * @description\n * Sanitizes an html string by stripping all potentially dangerous tokens.\n *\n * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a trusted URI list) are\n * then serialized back to a properly escaped HTML string. This means that no unsafe input can make\n * it into the returned string.\n *\n * The trusted URIs for URL sanitization of attribute values is configured using the functions\n * `aHrefSanitizationTrustedUrlList` and `imgSrcSanitizationTrustedUrlList` of {@link $compileProvider}.\n *\n * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.\n *\n * @param {string} html HTML input.\n * @returns {string} Sanitized HTML.\n *\n * @example\n \n \n \n
\n Snippet: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html=\"snippet\">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value\n
<div ng-bind-html=\"deliberatelyTrustDangerousSnippet()\">\n</div>
\n
ng-bindAutomatically escapes
<div ng-bind=\"snippet\">
</div>
\n
\n
\n \n it('should sanitize the html snippet by default', function() {\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n toBe('

an html\\nclick here\\nsnippet

');\n });\n\n it('should inline raw snippet if bound to a trusted value', function() {\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).\n toBe(\"

an html\\n\" +\n \"click here\\n\" +\n \"snippet

\");\n });\n\n it('should escape snippet without any filter', function() {\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).\n toBe(\"<p style=\\\"color:blue\\\">an html\\n\" +\n \"<em onmouseover=\\\"this.textContent='PWN3D!'\\\">click here</em>\\n\" +\n \"snippet</p>\");\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new text');\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\n toBe('new text');\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(\n 'new text');\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(\n \"new <b onclick=\\\"alert(1)\\\">text</b>\");\n });\n
\n
\n */\n\n\n/**\n * @ngdoc provider\n * @name $sanitizeProvider\n * @this\n *\n * @description\n * Creates and configures {@link $sanitize} instance.\n */\nfunction $SanitizeProvider() {\n var hasBeenInstantiated = false;\n var svgEnabled = false;\n\n this.$get = ['$$sanitizeUri', function($$sanitizeUri) {\n hasBeenInstantiated = true;\n if (svgEnabled) {\n extend(validElements, svgElements);\n }\n return function(html) {\n var buf = [];\n htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {\n return !/^unsafe:/.test($$sanitizeUri(uri, isImage));\n }));\n return buf.join('');\n };\n }];\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#enableSvg\n * @kind function\n *\n * @description\n * Enables a subset of svg to be supported by the sanitizer.\n *\n *
\n *

By enabling this setting without taking other precautions, you might expose your\n * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned\n * outside of the containing element and be rendered over other elements on the page (e.g. a login\n * link). Such behavior can then result in phishing incidents.

\n *\n *

To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg\n * tags within the sanitized content:

\n *\n *
\n *\n *
\n   *   .rootOfTheIncludedContent svg {\n   *     overflow: hidden !important;\n   *   }\n   *   
\n *
\n *\n * @param {boolean=} flag Enable or disable SVG support in the sanitizer.\n * @returns {boolean|$sanitizeProvider} Returns the currently configured value if called\n * without an argument or self for chaining otherwise.\n */\n this.enableSvg = function(enableSvg) {\n if (isDefined(enableSvg)) {\n svgEnabled = enableSvg;\n return this;\n } else {\n return svgEnabled;\n }\n };\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#addValidElements\n * @kind function\n *\n * @description\n * Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe\n * and are not stripped off during sanitization. You can extend the following lists of elements:\n *\n * - `htmlElements`: A list of elements (tag names) to extend the current list of safe HTML\n * elements. HTML elements considered safe will not be removed during sanitization. All other\n * elements will be stripped off.\n *\n * - `htmlVoidElements`: This is similar to `htmlElements`, but marks the elements as\n * \"void elements\" (similar to HTML\n * [void elements](https://rawgit.com/w3c/html/html5.1-2/single-page.html#void-elements)). These\n * elements have no end tag and cannot have content.\n *\n * - `svgElements`: This is similar to `htmlElements`, but for SVG elements. This list is only\n * taken into account if SVG is {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for\n * `$sanitize`.\n *\n *
\n * This method must be called during the {@link angular.Module#config config} phase. Once the\n * `$sanitize` service has been instantiated, this method has no effect.\n *
\n *\n *
\n * Keep in mind that extending the built-in lists of elements may expose your app to XSS or\n * other vulnerabilities. Be very mindful of the elements you add.\n *
\n *\n * @param {Array|Object} elements - A list of valid HTML elements or an object with one or\n * more of the following properties:\n * - **htmlElements** - `{Array}` - A list of elements to extend the current list of\n * HTML elements.\n * - **htmlVoidElements** - `{Array}` - A list of elements to extend the current list of\n * void HTML elements; i.e. elements that do not have an end tag.\n * - **svgElements** - `{Array}` - A list of elements to extend the current list of SVG\n * elements. The list of SVG elements is only taken into account if SVG is\n * {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for `$sanitize`.\n *\n * Passing an array (`[...]`) is equivalent to passing `{htmlElements: [...]}`.\n *\n * @return {$sanitizeProvider} Returns self for chaining.\n */\n this.addValidElements = function(elements) {\n if (!hasBeenInstantiated) {\n if (isArray(elements)) {\n elements = {htmlElements: elements};\n }\n\n addElementsTo(svgElements, elements.svgElements);\n addElementsTo(voidElements, elements.htmlVoidElements);\n addElementsTo(validElements, elements.htmlVoidElements);\n addElementsTo(validElements, elements.htmlElements);\n }\n\n return this;\n };\n\n\n /**\n * @ngdoc method\n * @name $sanitizeProvider#addValidAttrs\n * @kind function\n *\n * @description\n * Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are\n * not stripped off during sanitization.\n *\n * **Note**:\n * The new attributes will not be treated as URI attributes, which means their values will not be\n * sanitized as URIs using `$compileProvider`'s\n * {@link ng.$compileProvider#aHrefSanitizationTrustedUrlList aHrefSanitizationTrustedUrlList} and\n * {@link ng.$compileProvider#imgSrcSanitizationTrustedUrlList imgSrcSanitizationTrustedUrlList}.\n *\n *
\n * This method must be called during the {@link angular.Module#config config} phase. Once the\n * `$sanitize` service has been instantiated, this method has no effect.\n *
\n *\n *
\n * Keep in mind that extending the built-in list of attributes may expose your app to XSS or\n * other vulnerabilities. Be very mindful of the attributes you add.\n *
\n *\n * @param {Array} attrs - A list of valid attributes.\n *\n * @returns {$sanitizeProvider} Returns self for chaining.\n */\n this.addValidAttrs = function(attrs) {\n if (!hasBeenInstantiated) {\n extend(validAttrs, arrayToMap(attrs, true));\n }\n return this;\n };\n\n //////////////////////////////////////////////////////////////////////////////////////////////////\n // Private stuff\n //////////////////////////////////////////////////////////////////////////////////////////////////\n\n bind = angular.bind;\n extend = angular.extend;\n forEach = angular.forEach;\n isArray = angular.isArray;\n isDefined = angular.isDefined;\n lowercase = angular.$$lowercase;\n noop = angular.noop;\n\n htmlParser = htmlParserImpl;\n htmlSanitizeWriter = htmlSanitizeWriterImpl;\n\n nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {\n // eslint-disable-next-line no-bitwise\n return !!(this.compareDocumentPosition(arg) & 16);\n };\n\n // Regular Expressions for parsing tags and attributes\n var SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\n // Match everything outside of normal chars and \" (quote character)\n NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;\n\n\n // Good source of info about elements and attributes\n // http://dev.w3.org/html5/spec/Overview.html#semantics\n // http://simon.html5.org/html-elements\n\n // Safe Void Elements - HTML5\n // http://dev.w3.org/html5/spec/Overview.html#void-elements\n var voidElements = stringToMap('area,br,col,hr,img,wbr');\n\n // Elements that you can, intentionally, leave open (and which close themselves)\n // http://dev.w3.org/html5/spec/Overview.html#optional-tags\n var optionalEndTagBlockElements = stringToMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),\n optionalEndTagInlineElements = stringToMap('rp,rt'),\n optionalEndTagElements = extend({},\n optionalEndTagInlineElements,\n optionalEndTagBlockElements);\n\n // Safe Block Elements - HTML5\n var blockElements = extend({}, optionalEndTagBlockElements, stringToMap('address,article,' +\n 'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\n 'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));\n\n // Inline Elements - HTML5\n var inlineElements = extend({}, optionalEndTagInlineElements, stringToMap('a,abbr,acronym,b,' +\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +\n 'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));\n\n // SVG Elements\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements\n // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.\n // They can potentially allow for arbitrary javascript to be executed. See #11290\n var svgElements = stringToMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +\n 'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +\n 'radialGradient,rect,stop,svg,switch,text,title,tspan');\n\n // Blocked Elements (will be stripped)\n var blockedElements = stringToMap('script,style');\n\n var validElements = extend({},\n voidElements,\n blockElements,\n inlineElements,\n optionalEndTagElements);\n\n //Attributes that have href and hence need to be sanitized\n var uriAttrs = stringToMap('background,cite,href,longdesc,src,xlink:href,xml:base');\n\n var htmlAttrs = stringToMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +\n 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +\n 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +\n 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +\n 'valign,value,vspace,width');\n\n // SVG attributes (without \"id\" and \"name\" attributes)\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes\n var svgAttrs = stringToMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +\n 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +\n 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +\n 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +\n 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +\n 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +\n 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +\n 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +\n 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +\n 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +\n 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +\n 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +\n 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +\n 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +\n 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);\n\n var validAttrs = extend({},\n uriAttrs,\n svgAttrs,\n htmlAttrs);\n\n function stringToMap(str, lowercaseKeys) {\n return arrayToMap(str.split(','), lowercaseKeys);\n }\n\n function arrayToMap(items, lowercaseKeys) {\n var obj = {}, i;\n for (i = 0; i < items.length; i++) {\n obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;\n }\n return obj;\n }\n\n function addElementsTo(elementsMap, newElements) {\n if (newElements && newElements.length) {\n extend(elementsMap, arrayToMap(newElements));\n }\n }\n\n /**\n * Create an inert document that contains the dirty HTML that needs sanitizing.\n * We use the DOMParser API by default and fall back to createHTMLDocument if DOMParser is not\n * available.\n */\n var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {\n if (isDOMParserAvailable()) {\n return getInertBodyElement_DOMParser;\n }\n\n if (!document || !document.implementation) {\n throw $sanitizeMinErr('noinert', 'Can\\'t create an inert html document');\n }\n var inertDocument = document.implementation.createHTMLDocument('inert');\n var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');\n return getInertBodyElement_InertDocument;\n\n function isDOMParserAvailable() {\n try {\n return !!getInertBodyElement_DOMParser('');\n } catch (e) {\n return false;\n }\n }\n\n function getInertBodyElement_DOMParser(html) {\n // We add this dummy element to ensure that the rest of the content is parsed as expected\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\n html = '' + html;\n try {\n var body = new window.DOMParser().parseFromString(html, 'text/html').body;\n body.firstChild.remove();\n return body;\n } catch (e) {\n return undefined;\n }\n }\n\n function getInertBodyElement_InertDocument(html) {\n inertBodyElement.innerHTML = html;\n\n // Support: IE 9-11 only\n // strip custom-namespaced attributes on IE<=11\n if (document.documentMode) {\n stripCustomNsAttrs(inertBodyElement);\n }\n\n return inertBodyElement;\n }\n })(window, window.document);\n\n /**\n * @example\n * htmlParser(htmlString, {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * });\n *\n * @param {string} html string\n * @param {object} handler\n */\n function htmlParserImpl(html, handler) {\n if (html === null || html === undefined) {\n html = '';\n } else if (typeof html !== 'string') {\n html = '' + html;\n }\n\n var inertBodyElement = getInertBodyElement(html);\n if (!inertBodyElement) return '';\n\n //mXSS protection\n var mXSSAttempts = 5;\n do {\n if (mXSSAttempts === 0) {\n throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');\n }\n mXSSAttempts--;\n\n // trigger mXSS if it is going to happen by reading and writing the innerHTML\n html = inertBodyElement.innerHTML;\n inertBodyElement = getInertBodyElement(html);\n } while (html !== inertBodyElement.innerHTML);\n\n var node = inertBodyElement.firstChild;\n while (node) {\n switch (node.nodeType) {\n case 1: // ELEMENT_NODE\n handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\n break;\n case 3: // TEXT NODE\n handler.chars(node.textContent);\n break;\n }\n\n var nextNode;\n if (!(nextNode = node.firstChild)) {\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n nextNode = getNonDescendant('nextSibling', node);\n if (!nextNode) {\n while (nextNode == null) {\n node = getNonDescendant('parentNode', node);\n if (node === inertBodyElement) break;\n nextNode = getNonDescendant('nextSibling', node);\n if (node.nodeType === 1) {\n handler.end(node.nodeName.toLowerCase());\n }\n }\n }\n }\n node = nextNode;\n }\n\n while ((node = inertBodyElement.firstChild)) {\n inertBodyElement.removeChild(node);\n }\n }\n\n function attrToMap(attrs) {\n var map = {};\n for (var i = 0, ii = attrs.length; i < ii; i++) {\n var attr = attrs[i];\n map[attr.name] = attr.value;\n }\n return map;\n }\n\n\n /**\n * Escapes all potentially dangerous characters, so that the\n * resulting string can be safely inserted into attribute or\n * element text.\n * @param value\n * @returns {string} escaped text\n */\n function encodeEntities(value) {\n return value.\n replace(/&/g, '&').\n replace(SURROGATE_PAIR_REGEXP, function(value) {\n var hi = value.charCodeAt(0);\n var low = value.charCodeAt(1);\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\n }).\n replace(NON_ALPHANUMERIC_REGEXP, function(value) {\n return '&#' + value.charCodeAt(0) + ';';\n }).\n replace(//g, '>');\n }\n\n /**\n * create an HTML/XML writer which writes to buffer\n * @param {Array} buf use buf.join('') to get out sanitized html string\n * @returns {object} in the form of {\n * start: function(tag, attrs) {},\n * end: function(tag) {},\n * chars: function(text) {},\n * comment: function(text) {}\n * }\n */\n function htmlSanitizeWriterImpl(buf, uriValidator) {\n var ignoreCurrentElement = false;\n var out = bind(buf, buf.push);\n return {\n start: function(tag, attrs) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && blockedElements[tag]) {\n ignoreCurrentElement = tag;\n }\n if (!ignoreCurrentElement && validElements[tag] === true) {\n out('<');\n out(tag);\n forEach(attrs, function(value, key) {\n var lkey = lowercase(key);\n var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\n if (validAttrs[lkey] === true &&\n (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\n out(' ');\n out(key);\n out('=\"');\n out(encodeEntities(value));\n out('\"');\n }\n });\n out('>');\n }\n },\n end: function(tag) {\n tag = lowercase(tag);\n if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\n out('');\n }\n // eslint-disable-next-line eqeqeq\n if (tag == ignoreCurrentElement) {\n ignoreCurrentElement = false;\n }\n },\n chars: function(chars) {\n if (!ignoreCurrentElement) {\n out(encodeEntities(chars));\n }\n }\n };\n }\n\n\n /**\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\n * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\n * to allow any of these custom attributes. This method strips them all.\n *\n * @param node Root element to process\n */\n function stripCustomNsAttrs(node) {\n while (node) {\n if (node.nodeType === window.Node.ELEMENT_NODE) {\n var attrs = node.attributes;\n for (var i = 0, l = attrs.length; i < l; i++) {\n var attrNode = attrs[i];\n var attrName = attrNode.name.toLowerCase();\n if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {\n node.removeAttributeNode(attrNode);\n i--;\n l--;\n }\n }\n }\n\n var nextNode = node.firstChild;\n if (nextNode) {\n stripCustomNsAttrs(nextNode);\n }\n\n node = getNonDescendant('nextSibling', node);\n }\n }\n\n function getNonDescendant(propName, node) {\n // An element is clobbered if its `propName` property points to one of its descendants\n var nextNode = node[propName];\n if (nextNode && nodeContains.call(node, nextNode)) {\n throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);\n }\n return nextNode;\n }\n}\n\nfunction sanitizeText(chars) {\n var buf = [];\n var writer = htmlSanitizeWriter(buf, noop);\n writer.chars(chars);\n return buf.join('');\n}\n\n\n// define ngSanitize module and register $sanitize service\nangular.module('ngSanitize', [])\n .provider('$sanitize', $SanitizeProvider)\n .info({ angularVersion: '1.8.3' });\n\n/**\n * @ngdoc filter\n * @name linky\n * @kind function\n *\n * @description\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and\n * plain email address links.\n *\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\n *\n * @param {string} text Input text.\n * @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\n *\n * Can be one of:\n *\n * - `object`: A map of attributes\n * - `function`: Takes the url as a parameter and returns a map of attributes\n *\n * If the map of attributes contains a value for `target`, it overrides the value of\n * the target parameter.\n *\n *\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\n *\n * @usage\n \n *\n * @example\n \n \n
\n Snippet: \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FilterSourceRendered
linky filter\n
<div ng-bind-html=\"snippet | linky\">
</div>
\n
\n
\n
linky target\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\">
</div>
\n
\n
\n
linky custom attributes\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\">
</div>
\n
\n
\n
no filter
<div ng-bind=\"snippet\">
</div>
\n \n \n angular.module('linkyExample', ['ngSanitize'])\n .controller('ExampleController', ['$scope', function($scope) {\n $scope.snippet =\n 'Pretty text with some links:\\n' +\n 'http://angularjs.org/,\\n' +\n 'mailto:us@somewhere.org,\\n' +\n 'another@somewhere.org,\\n' +\n 'and one more: ftp://127.0.0.1/.';\n $scope.snippetWithSingleURL = 'http://angularjs.org/';\n }]);\n \n \n it('should linkify the snippet with urls', function() {\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\n });\n\n it('should not linkify snippet without the linky filter', function() {\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\n toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\n expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\n });\n\n it('should update', function() {\n element(by.model('snippet')).clear();\n element(by.model('snippet')).sendKeys('new http://link.');\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\n toBe('new http://link.');\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\n .toBe('new http://link.');\n });\n\n it('should work with the target property', function() {\n expect(element(by.id('linky-target')).\n element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\n });\n\n it('should optionally add custom attributes', function() {\n expect(element(by.id('linky-custom-attributes')).\n element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\n toBe('http://angularjs.org/');\n expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\n });\n \n \n */\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\n var LINKY_URL_REGEXP =\n /((s?ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\n MAILTO_REGEXP = /^mailto:/i;\n\n var linkyMinErr = angular.$$minErr('linky');\n var isDefined = angular.isDefined;\n var isFunction = angular.isFunction;\n var isObject = angular.isObject;\n var isString = angular.isString;\n\n return function(text, target, attributes) {\n if (text == null || text === '') return text;\n if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\n\n var attributesFn =\n isFunction(attributes) ? attributes :\n isObject(attributes) ? function getAttributesObject() {return attributes;} :\n function getEmptyAttributesObject() {return {};};\n\n var match;\n var raw = text;\n var html = [];\n var url;\n var i;\n while ((match = raw.match(LINKY_URL_REGEXP))) {\n // We can not end in these as they are sometimes found at the end of the sentence\n url = match[0];\n // if we did not match ftp/http/www/mailto then assume mailto\n if (!match[2] && !match[4]) {\n url = (match[3] ? 'http://' : 'mailto:') + url;\n }\n i = match.index;\n addText(raw.substr(0, i));\n addLink(url, match[0].replace(MAILTO_REGEXP, ''));\n raw = raw.substring(i + match[0].length);\n }\n addText(raw);\n return $sanitize(html.join(''));\n\n function addText(text) {\n if (!text) {\n return;\n }\n html.push(sanitizeText(text));\n }\n\n function addLink(url, text) {\n var key, linkAttributes = attributesFn(url);\n html.push('');\n addText(text);\n html.push('');\n }\n };\n}]);\n\n\n})(window, window.angular);\n","require('./angular-sanitize');\nmodule.exports = 'ngSanitize';\n","/**\n * State-based routing for AngularJS\n * @version v0.4.3\n * @link http://angular-ui.github.com/\n * @license MIT License, http://www.opensource.org/licenses/MIT\n */\n\n/* commonjs package manager support (eg componentjs) */\nif (typeof module !== \"undefined\" && typeof exports !== \"undefined\" && module.exports === exports){\n module.exports = 'ui.router';\n}\n\n(function (window, angular, undefined) {\n/*jshint globalstrict:true*/\n/*global angular:false*/\n'use strict';\n\nvar isDefined = angular.isDefined,\n isFunction = angular.isFunction,\n isString = angular.isString,\n isObject = angular.isObject,\n isArray = angular.isArray,\n forEach = angular.forEach,\n extend = angular.extend,\n copy = angular.copy,\n toJson = angular.toJson;\n\nfunction inherit(parent, extra) {\n return extend(new (extend(function() {}, { prototype: parent }))(), extra);\n}\n\nfunction merge(dst) {\n forEach(arguments, function(obj) {\n if (obj !== dst) {\n forEach(obj, function(value, key) {\n if (!dst.hasOwnProperty(key)) dst[key] = value;\n });\n }\n });\n return dst;\n}\n\n/**\n * Finds the common ancestor path between two states.\n *\n * @param {Object} first The first state.\n * @param {Object} second The second state.\n * @return {Array} Returns an array of state names in descending order, not including the root.\n */\nfunction ancestors(first, second) {\n var path = [];\n\n for (var n in first.path) {\n if (first.path[n] !== second.path[n]) break;\n path.push(first.path[n]);\n }\n return path;\n}\n\n/**\n * IE8-safe wrapper for `Object.keys()`.\n *\n * @param {Object} object A JavaScript object.\n * @return {Array} Returns the keys of the object as an array.\n */\nfunction objectKeys(object) {\n if (Object.keys) {\n return Object.keys(object);\n }\n var result = [];\n\n forEach(object, function(val, key) {\n result.push(key);\n });\n return result;\n}\n\n/**\n * IE8-safe wrapper for `Array.prototype.indexOf()`.\n *\n * @param {Array} array A JavaScript array.\n * @param {*} value A value to search the array for.\n * @return {Number} Returns the array index value of `value`, or `-1` if not present.\n */\nfunction indexOf(array, value) {\n if (Array.prototype.indexOf) {\n return array.indexOf(value, Number(arguments[2]) || 0);\n }\n var len = array.length >>> 0, from = Number(arguments[2]) || 0;\n from = (from < 0) ? Math.ceil(from) : Math.floor(from);\n\n if (from < 0) from += len;\n\n for (; from < len; from++) {\n if (from in array && array[from] === value) return from;\n }\n return -1;\n}\n\n/**\n * Merges a set of parameters with all parameters inherited between the common parents of the\n * current state and a given destination state.\n *\n * @param {Object} currentParams The value of the current state parameters ($stateParams).\n * @param {Object} newParams The set of parameters which will be composited with inherited params.\n * @param {Object} $current Internal definition of object representing the current state.\n * @param {Object} $to Internal definition of object representing state to transition to.\n */\nfunction inheritParams(currentParams, newParams, $current, $to) {\n var parents = ancestors($current, $to), parentParams, inherited = {}, inheritList = [];\n\n for (var i in parents) {\n if (!parents[i] || !parents[i].params) continue;\n parentParams = objectKeys(parents[i].params);\n if (!parentParams.length) continue;\n\n for (var j in parentParams) {\n if (indexOf(inheritList, parentParams[j]) >= 0) continue;\n inheritList.push(parentParams[j]);\n inherited[parentParams[j]] = currentParams[parentParams[j]];\n }\n }\n return extend({}, inherited, newParams);\n}\n\n/**\n * Performs a non-strict comparison of the subset of two objects, defined by a list of keys.\n *\n * @param {Object} a The first object.\n * @param {Object} b The second object.\n * @param {Array} keys The list of keys within each object to compare. If the list is empty or not specified,\n * it defaults to the list of keys in `a`.\n * @return {Boolean} Returns `true` if the keys match, otherwise `false`.\n */\nfunction equalForKeys(a, b, keys) {\n if (!keys) {\n keys = [];\n for (var n in a) keys.push(n); // Used instead of Object.keys() for IE8 compatibility\n }\n\n for (var i=0; i\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n * \n */\nangular.module('ui.router', ['ui.router.state']);\n\nangular.module('ui.router.compat', ['ui.router']);\n\n/**\n * @ngdoc object\n * @name ui.router.util.$resolve\n *\n * @requires $q\n * @requires $injector\n *\n * @description\n * Manages resolution of (acyclic) graphs of promises.\n */\n$Resolve.$inject = ['$q', '$injector'];\nfunction $Resolve( $q, $injector) {\n \n var VISIT_IN_PROGRESS = 1,\n VISIT_DONE = 2,\n NOTHING = {},\n NO_DEPENDENCIES = [],\n NO_LOCALS = NOTHING,\n NO_PARENT = extend($q.when(NOTHING), { $$promises: NOTHING, $$values: NOTHING });\n \n\n /**\n * @ngdoc function\n * @name ui.router.util.$resolve#study\n * @methodOf ui.router.util.$resolve\n *\n * @description\n * Studies a set of invocables that are likely to be used multiple times.\n *
\n   * $resolve.study(invocables)(locals, parent, self)\n   * 
\n * is equivalent to\n *
\n   * $resolve.resolve(invocables, locals, parent, self)\n   * 
\n * but the former is more efficient (in fact `resolve` just calls `study` \n * internally).\n *\n * @param {object} invocables Invocable objects\n * @return {function} a function to pass in locals, parent and self\n */\n this.study = function (invocables) {\n if (!isObject(invocables)) throw new Error(\"'invocables' must be an object\");\n var invocableKeys = objectKeys(invocables || {});\n \n // Perform a topological sort of invocables to build an ordered plan\n var plan = [], cycle = [], visited = {};\n function visit(value, key) {\n if (visited[key] === VISIT_DONE) return;\n \n cycle.push(key);\n if (visited[key] === VISIT_IN_PROGRESS) {\n cycle.splice(0, indexOf(cycle, key));\n throw new Error(\"Cyclic dependency: \" + cycle.join(\" -> \"));\n }\n visited[key] = VISIT_IN_PROGRESS;\n \n if (isString(value)) {\n plan.push(key, [ function() { return $injector.get(value); }], NO_DEPENDENCIES);\n } else {\n var params = $injector.annotate(value);\n forEach(params, function (param) {\n if (param !== key && invocables.hasOwnProperty(param)) visit(invocables[param], param);\n });\n plan.push(key, value, params);\n }\n \n cycle.pop();\n visited[key] = VISIT_DONE;\n }\n forEach(invocables, visit);\n invocables = cycle = visited = null; // plan is all that's required\n \n function isResolve(value) {\n return isObject(value) && value.then && value.$$promises;\n }\n \n return function (locals, parent, self) {\n if (isResolve(locals) && self === undefined) {\n self = parent; parent = locals; locals = null;\n }\n if (!locals) locals = NO_LOCALS;\n else if (!isObject(locals)) {\n throw new Error(\"'locals' must be an object\");\n } \n if (!parent) parent = NO_PARENT;\n else if (!isResolve(parent)) {\n throw new Error(\"'parent' must be a promise returned by $resolve.resolve()\");\n }\n \n // To complete the overall resolution, we have to wait for the parent\n // promise and for the promise for each invokable in our plan.\n var resolution = $q.defer(),\n result = silenceUncaughtInPromise(resolution.promise),\n promises = result.$$promises = {},\n values = extend({}, locals),\n wait = 1 + plan.length/3,\n merged = false;\n\n silenceUncaughtInPromise(result);\n \n function done() {\n // Merge parent values we haven't got yet and publish our own $$values\n if (!--wait) {\n if (!merged) merge(values, parent.$$values); \n result.$$values = values;\n result.$$promises = result.$$promises || true; // keep for isResolve()\n delete result.$$inheritedValues;\n resolution.resolve(values);\n }\n }\n \n function fail(reason) {\n result.$$failure = reason;\n resolution.reject(reason);\n }\n\n // Short-circuit if parent has already failed\n if (isDefined(parent.$$failure)) {\n fail(parent.$$failure);\n return result;\n }\n \n if (parent.$$inheritedValues) {\n merge(values, omit(parent.$$inheritedValues, invocableKeys));\n }\n\n // Merge parent values if the parent has already resolved, or merge\n // parent promises and wait if the parent resolve is still in progress.\n extend(promises, parent.$$promises);\n if (parent.$$values) {\n merged = merge(values, omit(parent.$$values, invocableKeys));\n result.$$inheritedValues = omit(parent.$$values, invocableKeys);\n done();\n } else {\n if (parent.$$inheritedValues) {\n result.$$inheritedValues = omit(parent.$$inheritedValues, invocableKeys);\n } \n parent.then(done, fail);\n }\n \n // Process each invocable in the plan, but ignore any where a local of the same name exists.\n for (var i=0, ii=plan.length; i\n * Impact on loading templates for more details about this mechanism.\n *\n * @param {boolean} value\n */\n this.shouldUnsafelyUseHttp = function(value) {\n shouldUnsafelyUseHttp = !!value;\n };\n\n /**\n * @ngdoc object\n * @name ui.router.util.$templateFactory\n *\n * @requires $http\n * @requires $templateCache\n * @requires $injector\n *\n * @description\n * Service. Manages loading of templates.\n */\n this.$get = ['$http', '$templateCache', '$injector', function($http, $templateCache, $injector){\n return new TemplateFactory($http, $templateCache, $injector, shouldUnsafelyUseHttp);}];\n}\n\n\n/**\n * @ngdoc object\n * @name ui.router.util.$templateFactory\n *\n * @requires $http\n * @requires $templateCache\n * @requires $injector\n *\n * @description\n * Service. Manages loading of templates.\n */\nfunction TemplateFactory($http, $templateCache, $injector, shouldUnsafelyUseHttp) {\n\n /**\n * @ngdoc function\n * @name ui.router.util.$templateFactory#fromConfig\n * @methodOf ui.router.util.$templateFactory\n *\n * @description\n * Creates a template from a configuration object. \n *\n * @param {object} config Configuration object for which to load a template. \n * The following properties are search in the specified order, and the first one \n * that is defined is used to create the template:\n *\n * @param {string|object} config.template html string template or function to \n * load via {@link ui.router.util.$templateFactory#fromString fromString}.\n * @param {string|object} config.templateUrl url to load or a function returning \n * the url to load via {@link ui.router.util.$templateFactory#fromUrl fromUrl}.\n * @param {Function} config.templateProvider function to invoke via \n * {@link ui.router.util.$templateFactory#fromProvider fromProvider}.\n * @param {object} params Parameters to pass to the template function.\n * @param {object} locals Locals to pass to `invoke` if the template is loaded \n * via a `templateProvider`. Defaults to `{ params: params }`.\n *\n * @return {string|object} The template html as a string, or a promise for \n * that string,or `null` if no template is configured.\n */\n this.fromConfig = function (config, params, locals) {\n return (\n isDefined(config.template) ? this.fromString(config.template, params) :\n isDefined(config.templateUrl) ? this.fromUrl(config.templateUrl, params) :\n isDefined(config.templateProvider) ? this.fromProvider(config.templateProvider, params, locals) :\n null\n );\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$templateFactory#fromString\n * @methodOf ui.router.util.$templateFactory\n *\n * @description\n * Creates a template from a string or a function returning a string.\n *\n * @param {string|object} template html template as a string or function that \n * returns an html template as a string.\n * @param {object} params Parameters to pass to the template function.\n *\n * @return {string|object} The template html as a string, or a promise for that \n * string.\n */\n this.fromString = function (template, params) {\n return isFunction(template) ? template(params) : template;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$templateFactory#fromUrl\n * @methodOf ui.router.util.$templateFactory\n * \n * @description\n * Loads a template from the a URL via `$http` and `$templateCache`.\n *\n * @param {string|Function} url url of the template to load, or a function \n * that returns a url.\n * @param {Object} params Parameters to pass to the url function.\n * @return {string|Promise.} The template html as a string, or a promise \n * for that string.\n */\n this.fromUrl = function (url, params) {\n if (isFunction(url)) url = url(params);\n if (url == null) return null;\n else {\n if(!shouldUnsafelyUseHttp) {\n return $injector.get('$templateRequest')(url);\n } else {\n return $http\n .get(url, { cache: $templateCache, headers: { Accept: 'text/html' }})\n .then(function(response) { return response.data; });\n }\n }\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$templateFactory#fromProvider\n * @methodOf ui.router.util.$templateFactory\n *\n * @description\n * Creates a template by invoking an injectable provider function.\n *\n * @param {Function} provider Function to invoke via `$injector.invoke`\n * @param {Object} params Parameters for the template.\n * @param {Object} locals Locals to pass to `invoke`. Defaults to \n * `{ params: params }`.\n * @return {string|Promise.} The template html as a string, or a promise \n * for that string.\n */\n this.fromProvider = function (provider, params, locals) {\n return $injector.invoke(provider, null, locals || { params: params });\n };\n}\n\nangular.module('ui.router.util').provider('$templateFactory', TemplateFactoryProvider);\n\nvar $$UMFP; // reference to $UrlMatcherFactoryProvider\n\n/**\n * @ngdoc object\n * @name ui.router.util.type:UrlMatcher\n *\n * @description\n * Matches URLs against patterns and extracts named parameters from the path or the search\n * part of the URL. A URL pattern consists of a path pattern, optionally followed by '?' and a list\n * of search parameters. Multiple search parameter names are separated by '&'. Search parameters\n * do not influence whether or not a URL is matched, but their values are passed through into\n * the matched parameters returned by {@link ui.router.util.type:UrlMatcher#methods_exec exec}.\n *\n * Path parameter placeholders can be specified using simple colon/catch-all syntax or curly brace\n * syntax, which optionally allows a regular expression for the parameter to be specified:\n *\n * * `':'` name - colon placeholder\n * * `'*'` name - catch-all placeholder\n * * `'{' name '}'` - curly placeholder\n * * `'{' name ':' regexp|type '}'` - curly placeholder with regexp or type name. Should the\n * regexp itself contain curly braces, they must be in matched pairs or escaped with a backslash.\n *\n * Parameter names may contain only word characters (latin letters, digits, and underscore) and\n * must be unique within the pattern (across both path and search parameters). For colon\n * placeholders or curly placeholders without an explicit regexp, a path parameter matches any\n * number of characters other than '/'. For catch-all placeholders the path parameter matches\n * any number of characters.\n *\n * Examples:\n *\n * * `'/hello/'` - Matches only if the path is exactly '/hello/'. There is no special treatment for\n * trailing slashes, and patterns have to match the entire path, not just a prefix.\n * * `'/user/:id'` - Matches '/user/bob' or '/user/1234!!!' or even '/user/' but not '/user' or\n * '/user/bob/details'. The second path segment will be captured as the parameter 'id'.\n * * `'/user/{id}'` - Same as the previous example, but using curly brace syntax.\n * * `'/user/{id:[^/]*}'` - Same as the previous example.\n * * `'/user/{id:[0-9a-fA-F]{1,8}}'` - Similar to the previous example, but only matches if the id\n * parameter consists of 1 to 8 hex digits.\n * * `'/files/{path:.*}'` - Matches any URL starting with '/files/' and captures the rest of the\n * path into the parameter 'path'.\n * * `'/files/*path'` - ditto.\n * * `'/calendar/{start:date}'` - Matches \"/calendar/2014-11-12\" (because the pattern defined\n * in the built-in `date` Type matches `2014-11-12`) and provides a Date object in $stateParams.start\n *\n * @param {string} pattern The pattern to compile into a matcher.\n * @param {Object} config A configuration object hash:\n * @param {Object=} parentMatcher Used to concatenate the pattern/config onto\n * an existing UrlMatcher\n *\n * * `caseInsensitive` - `true` if URL matching should be case insensitive, otherwise `false`, the default value (for backward compatibility) is `false`.\n * * `strict` - `false` if matching against a URL with a trailing slash should be treated as equivalent to a URL without a trailing slash, the default value is `true`.\n *\n * @property {string} prefix A static prefix of this pattern. The matcher guarantees that any\n * URL matching this matcher (i.e. any string for which {@link ui.router.util.type:UrlMatcher#methods_exec exec()} returns\n * non-null) will start with this prefix.\n *\n * @property {string} source The pattern that was passed into the constructor\n *\n * @property {string} sourcePath The path portion of the source property\n *\n * @property {string} sourceSearch The search portion of the source property\n *\n * @property {string} regex The constructed regex that will be used to match against the url when\n * it is time to determine which url will match.\n *\n * @returns {Object} New `UrlMatcher` object\n */\nfunction UrlMatcher(pattern, config, parentMatcher) {\n config = extend({ params: {} }, isObject(config) ? config : {});\n\n // Find all placeholders and create a compiled pattern, using either classic or curly syntax:\n // '*' name\n // ':' name\n // '{' name '}'\n // '{' name ':' regexp '}'\n // The regular expression is somewhat complicated due to the need to allow curly braces\n // inside the regular expression. The placeholder regexp breaks down as follows:\n // ([:*])([\\w\\[\\]]+) - classic placeholder ($1 / $2) (search version has - for snake-case)\n // \\{([\\w\\[\\]]+)(?:\\:\\s*( ... ))?\\} - curly brace placeholder ($3) with optional regexp/type ... ($4) (search version has - for snake-case\n // (?: ... | ... | ... )+ - the regexp consists of any number of atoms, an atom being either\n // [^{}\\\\]+ - anything other than curly braces or backslash\n // \\\\. - a backslash escape\n // \\{(?:[^{}\\\\]+|\\\\.)*\\} - a matched set of curly braces containing other atoms\n var placeholder = /([:*])([\\w\\[\\]]+)|\\{([\\w\\[\\]]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g,\n searchPlaceholder = /([:]?)([\\w\\[\\].-]+)|\\{([\\w\\[\\].-]+)(?:\\:\\s*((?:[^{}\\\\]+|\\\\.|\\{(?:[^{}\\\\]+|\\\\.)*\\})+))?\\}/g,\n compiled = '^', last = 0, m,\n segments = this.segments = [],\n parentParams = parentMatcher ? parentMatcher.params : {},\n params = this.params = parentMatcher ? parentMatcher.params.$$new() : new $$UMFP.ParamSet(),\n paramNames = [];\n\n function addParameter(id, type, config, location) {\n paramNames.push(id);\n if (parentParams[id]) return parentParams[id];\n if (!/^\\w+([-.]+\\w+)*(?:\\[\\])?$/.test(id)) throw new Error(\"Invalid parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n if (params[id]) throw new Error(\"Duplicate parameter name '\" + id + \"' in pattern '\" + pattern + \"'\");\n params[id] = new $$UMFP.Param(id, type, config, location);\n return params[id];\n }\n\n function quoteRegExp(string, pattern, squash, optional) {\n var surroundPattern = ['',''], result = string.replace(/[\\\\\\[\\]\\^$*+?.()|{}]/g, \"\\\\$&\");\n if (!pattern) return result;\n switch(squash) {\n case false: surroundPattern = ['(', ')' + (optional ? \"?\" : \"\")]; break;\n case true:\n result = result.replace(/\\/$/, '');\n surroundPattern = ['(?:\\/(', ')|\\/)?'];\n break;\n default: surroundPattern = ['(' + squash + \"|\", ')?']; break;\n }\n return result + surroundPattern[0] + pattern + surroundPattern[1];\n }\n\n this.source = pattern;\n\n // Split into static segments separated by path parameter placeholders.\n // The number of segments is always 1 more than the number of parameters.\n function matchDetails(m, isSearch) {\n var id, regexp, segment, type, cfg, arrayMode;\n id = m[2] || m[3]; // IE[78] returns '' for unmatched groups instead of null\n cfg = config.params[id];\n segment = pattern.substring(last, m.index);\n regexp = isSearch ? m[4] : m[4] || (m[1] == '*' ? '.*' : null);\n\n if (regexp) {\n type = $$UMFP.type(regexp) || inherit($$UMFP.type(\"string\"), { pattern: new RegExp(regexp, config.caseInsensitive ? 'i' : undefined) });\n }\n\n return {\n id: id, regexp: regexp, segment: segment, type: type, cfg: cfg\n };\n }\n\n var p, param, segment;\n while ((m = placeholder.exec(pattern))) {\n p = matchDetails(m, false);\n if (p.segment.indexOf('?') >= 0) break; // we're into the search part\n\n param = addParameter(p.id, p.type, p.cfg, \"path\");\n compiled += quoteRegExp(p.segment, param.type.pattern.source, param.squash, param.isOptional);\n segments.push(p.segment);\n last = placeholder.lastIndex;\n }\n segment = pattern.substring(last);\n\n // Find any search parameter names and remove them from the last segment\n var i = segment.indexOf('?');\n\n if (i >= 0) {\n var search = this.sourceSearch = segment.substring(i);\n segment = segment.substring(0, i);\n this.sourcePath = pattern.substring(0, last + i);\n\n if (search.length > 0) {\n last = 0;\n while ((m = searchPlaceholder.exec(search))) {\n p = matchDetails(m, true);\n param = addParameter(p.id, p.type, p.cfg, \"search\");\n last = placeholder.lastIndex;\n // check if ?&\n }\n }\n } else {\n this.sourcePath = pattern;\n this.sourceSearch = '';\n }\n\n compiled += quoteRegExp(segment) + (config.strict === false ? '\\/?' : '') + '$';\n segments.push(segment);\n\n this.regexp = new RegExp(compiled, config.caseInsensitive ? 'i' : undefined);\n this.prefix = segments[0];\n this.$$paramNames = paramNames;\n}\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#concat\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Returns a new matcher for a pattern constructed by appending the path part and adding the\n * search parameters of the specified pattern to this pattern. The current pattern is not\n * modified. This can be understood as creating a pattern for URLs that are relative to (or\n * suffixes of) the current pattern.\n *\n * @example\n * The following two matchers are equivalent:\n *
\n * new UrlMatcher('/user/{id}?q').concat('/details?date');\n * new UrlMatcher('/user/{id}/details?q&date');\n * 
\n *\n * @param {string} pattern The pattern to append.\n * @param {Object} config An object hash of the configuration for the matcher.\n * @returns {UrlMatcher} A matcher for the concatenated pattern.\n */\nUrlMatcher.prototype.concat = function (pattern, config) {\n // Because order of search parameters is irrelevant, we can add our own search\n // parameters to the end of the new pattern. Parse the new pattern by itself\n // and then join the bits together, but it's much easier to do this on a string level.\n var defaultConfig = {\n caseInsensitive: $$UMFP.caseInsensitive(),\n strict: $$UMFP.strictMode(),\n squash: $$UMFP.defaultSquashPolicy()\n };\n return new UrlMatcher(this.sourcePath + pattern + this.sourceSearch, extend(defaultConfig, config), this);\n};\n\nUrlMatcher.prototype.toString = function () {\n return this.source;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#exec\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Tests the specified path against this matcher, and returns an object containing the captured\n * parameter values, or null if the path does not match. The returned object contains the values\n * of any search parameters that are mentioned in the pattern, but their value may be null if\n * they are not present in `searchParams`. This means that search parameters are always treated\n * as optional.\n *\n * @example\n *
\n * new UrlMatcher('/user/{id}?q&r').exec('/user/bob', {\n *   x: '1', q: 'hello'\n * });\n * // returns { id: 'bob', q: 'hello', r: null }\n * 
\n *\n * @param {string} path The URL path to match, e.g. `$location.path()`.\n * @param {Object} searchParams URL search parameters, e.g. `$location.search()`.\n * @returns {Object} The captured parameter values.\n */\nUrlMatcher.prototype.exec = function (path, searchParams) {\n var m = this.regexp.exec(path);\n if (!m) return null;\n searchParams = searchParams || {};\n\n var paramNames = this.parameters(), nTotal = paramNames.length,\n nPath = this.segments.length - 1,\n values = {}, i, j, cfg, paramName;\n\n if (nPath !== m.length - 1) throw new Error(\"Unbalanced capture group in route '\" + this.source + \"'\");\n\n function decodePathArray(string) {\n function reverseString(str) { return str.split(\"\").reverse().join(\"\"); }\n function unquoteDashes(str) { return str.replace(/\\\\-/g, \"-\"); }\n\n var split = reverseString(string).split(/-(?!\\\\)/);\n var allReversed = map(split, reverseString);\n return map(allReversed, unquoteDashes).reverse();\n }\n\n var param, paramVal;\n for (i = 0; i < nPath; i++) {\n paramName = paramNames[i];\n param = this.params[paramName];\n paramVal = m[i+1];\n // if the param value matches a pre-replace pair, replace the value before decoding.\n for (j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === paramVal) paramVal = param.replace[j].to;\n }\n if (paramVal && param.array === true) paramVal = decodePathArray(paramVal);\n if (isDefined(paramVal)) paramVal = param.type.decode(paramVal);\n values[paramName] = param.value(paramVal);\n }\n for (/**/; i < nTotal; i++) {\n paramName = paramNames[i];\n values[paramName] = this.params[paramName].value(searchParams[paramName]);\n param = this.params[paramName];\n paramVal = searchParams[paramName];\n for (j = 0; j < param.replace.length; j++) {\n if (param.replace[j].from === paramVal) paramVal = param.replace[j].to;\n }\n if (isDefined(paramVal)) paramVal = param.type.decode(paramVal);\n values[paramName] = param.value(paramVal);\n }\n\n return values;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#parameters\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Returns the names of all path and search parameters of this pattern in an unspecified order.\n *\n * @returns {Array.} An array of parameter names. Must be treated as read-only. If the\n * pattern has no parameters, an empty array is returned.\n */\nUrlMatcher.prototype.parameters = function (param) {\n if (!isDefined(param)) return this.$$paramNames;\n return this.params[param] || null;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#validates\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Checks an object hash of parameters to validate their correctness according to the parameter\n * types of this `UrlMatcher`.\n *\n * @param {Object} params The object hash of parameters to validate.\n * @returns {boolean} Returns `true` if `params` validates, otherwise `false`.\n */\nUrlMatcher.prototype.validates = function (params) {\n return this.params.$$validates(params);\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:UrlMatcher#format\n * @methodOf ui.router.util.type:UrlMatcher\n *\n * @description\n * Creates a URL that matches this pattern by substituting the specified values\n * for the path and search parameters. Null values for path parameters are\n * treated as empty strings.\n *\n * @example\n *
\n * new UrlMatcher('/user/{id}?q').format({ id:'bob', q:'yes' });\n * // returns '/user/bob?q=yes'\n * 
\n *\n * @param {Object} values the values to substitute for the parameters in this pattern.\n * @returns {string} the formatted URL (path and optionally search part).\n */\nUrlMatcher.prototype.format = function (values) {\n values = values || {};\n var segments = this.segments, params = this.parameters(), paramset = this.params;\n if (!this.validates(values)) return null;\n\n var i, search = false, nPath = segments.length - 1, nTotal = params.length, result = segments[0];\n\n function encodeDashes(str) { // Replace dashes with encoded \"\\-\"\n return encodeURIComponent(str).replace(/-/g, function(c) { return '%5C%' + c.charCodeAt(0).toString(16).toUpperCase(); });\n }\n\n for (i = 0; i < nTotal; i++) {\n var isPathParam = i < nPath;\n var name = params[i], param = paramset[name], value = param.value(values[name]);\n var isDefaultValue = param.isOptional && param.type.equals(param.value(), value);\n var squash = isDefaultValue ? param.squash : false;\n var encoded = param.type.encode(value);\n\n if (isPathParam) {\n var nextSegment = segments[i + 1];\n var isFinalPathParam = i + 1 === nPath;\n\n if (squash === false) {\n if (encoded != null) {\n if (isArray(encoded)) {\n result += map(encoded, encodeDashes).join(\"-\");\n } else {\n result += encodeURIComponent(encoded);\n }\n }\n result += nextSegment;\n } else if (squash === true) {\n var capture = result.match(/\\/$/) ? /\\/?(.*)/ : /(.*)/;\n result += nextSegment.match(capture)[1];\n } else if (isString(squash)) {\n result += squash + nextSegment;\n }\n\n if (isFinalPathParam && param.squash === true && result.slice(-1) === '/') result = result.slice(0, -1);\n } else {\n if (encoded == null || (isDefaultValue && squash !== false)) continue;\n if (!isArray(encoded)) encoded = [ encoded ];\n if (encoded.length === 0) continue;\n encoded = map(encoded, encodeURIComponent).join('&' + name + '=');\n result += (search ? '&' : '?') + (name + '=' + encoded);\n search = true;\n }\n }\n\n return result;\n};\n\n/**\n * @ngdoc object\n * @name ui.router.util.type:Type\n *\n * @description\n * Implements an interface to define custom parameter types that can be decoded from and encoded to\n * string parameters matched in a URL. Used by {@link ui.router.util.type:UrlMatcher `UrlMatcher`}\n * objects when matching or formatting URLs, or comparing or validating parameter values.\n *\n * See {@link ui.router.util.$urlMatcherFactory#methods_type `$urlMatcherFactory#type()`} for more\n * information on registering custom types.\n *\n * @param {Object} config A configuration object which contains the custom type definition. The object's\n * properties will override the default methods and/or pattern in `Type`'s public interface.\n * @example\n *
\n * {\n *   decode: function(val) { return parseInt(val, 10); },\n *   encode: function(val) { return val && val.toString(); },\n *   equals: function(a, b) { return this.is(a) && a === b; },\n *   is: function(val) { return angular.isNumber(val) isFinite(val) && val % 1 === 0; },\n *   pattern: /\\d+/\n * }\n * 
\n *\n * @property {RegExp} pattern The regular expression pattern used to match values of this type when\n * coming from a substring of a URL.\n *\n * @returns {Object} Returns a new `Type` object.\n */\nfunction Type(config) {\n extend(this, config);\n}\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:Type#is\n * @methodOf ui.router.util.type:Type\n *\n * @description\n * Detects whether a value is of a particular type. Accepts a native (decoded) value\n * and determines whether it matches the current `Type` object.\n *\n * @param {*} val The value to check.\n * @param {string} key Optional. If the type check is happening in the context of a specific\n * {@link ui.router.util.type:UrlMatcher `UrlMatcher`} object, this is the name of the\n * parameter in which `val` is stored. Can be used for meta-programming of `Type` objects.\n * @returns {Boolean} Returns `true` if the value matches the type, otherwise `false`.\n */\nType.prototype.is = function(val, key) {\n return true;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:Type#encode\n * @methodOf ui.router.util.type:Type\n *\n * @description\n * Encodes a custom/native type value to a string that can be embedded in a URL. Note that the\n * return value does *not* need to be URL-safe (i.e. passed through `encodeURIComponent()`), it\n * only needs to be a representation of `val` that has been coerced to a string.\n *\n * @param {*} val The value to encode.\n * @param {string} key The name of the parameter in which `val` is stored. Can be used for\n * meta-programming of `Type` objects.\n * @returns {string} Returns a string representation of `val` that can be encoded in a URL.\n */\nType.prototype.encode = function(val, key) {\n return val;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:Type#decode\n * @methodOf ui.router.util.type:Type\n *\n * @description\n * Converts a parameter value (from URL string or transition param) to a custom/native value.\n *\n * @param {string} val The URL parameter value to decode.\n * @param {string} key The name of the parameter in which `val` is stored. Can be used for\n * meta-programming of `Type` objects.\n * @returns {*} Returns a custom representation of the URL parameter value.\n */\nType.prototype.decode = function(val, key) {\n return val;\n};\n\n/**\n * @ngdoc function\n * @name ui.router.util.type:Type#equals\n * @methodOf ui.router.util.type:Type\n *\n * @description\n * Determines whether two decoded values are equivalent.\n *\n * @param {*} a A value to compare against.\n * @param {*} b A value to compare against.\n * @returns {Boolean} Returns `true` if the values are equivalent/equal, otherwise `false`.\n */\nType.prototype.equals = function(a, b) {\n return a == b;\n};\n\nType.prototype.$subPattern = function() {\n var sub = this.pattern.toString();\n return sub.substr(1, sub.length - 2);\n};\n\nType.prototype.pattern = /.*/;\n\nType.prototype.toString = function() { return \"{Type:\" + this.name + \"}\"; };\n\n/** Given an encoded string, or a decoded object, returns a decoded object */\nType.prototype.$normalize = function(val) {\n return this.is(val) ? val : this.decode(val);\n};\n\n/*\n * Wraps an existing custom Type as an array of Type, depending on 'mode'.\n * e.g.:\n * - urlmatcher pattern \"/path?{queryParam[]:int}\"\n * - url: \"/path?queryParam=1&queryParam=2\n * - $stateParams.queryParam will be [1, 2]\n * if `mode` is \"auto\", then\n * - url: \"/path?queryParam=1 will create $stateParams.queryParam: 1\n * - url: \"/path?queryParam=1&queryParam=2 will create $stateParams.queryParam: [1, 2]\n */\nType.prototype.$asArray = function(mode, isSearch) {\n if (!mode) return this;\n if (mode === \"auto\" && !isSearch) throw new Error(\"'auto' array mode is for query parameters only\");\n\n function ArrayType(type, mode) {\n function bindTo(type, callbackName) {\n return function() {\n return type[callbackName].apply(type, arguments);\n };\n }\n\n // Wrap non-array value as array\n function arrayWrap(val) { return isArray(val) ? val : (isDefined(val) ? [ val ] : []); }\n // Unwrap array value for \"auto\" mode. Return undefined for empty array.\n function arrayUnwrap(val) {\n switch(val.length) {\n case 0: return undefined;\n case 1: return mode === \"auto\" ? val[0] : val;\n default: return val;\n }\n }\n function falsey(val) { return !val; }\n\n // Wraps type (.is/.encode/.decode) functions to operate on each value of an array\n function arrayHandler(callback, allTruthyMode) {\n return function handleArray(val) {\n if (isArray(val) && val.length === 0) return val;\n val = arrayWrap(val);\n var result = map(val, callback);\n if (allTruthyMode === true)\n return filter(result, falsey).length === 0;\n return arrayUnwrap(result);\n };\n }\n\n // Wraps type (.equals) functions to operate on each value of an array\n function arrayEqualsHandler(callback) {\n return function handleArray(val1, val2) {\n var left = arrayWrap(val1), right = arrayWrap(val2);\n if (left.length !== right.length) return false;\n for (var i = 0; i < left.length; i++) {\n if (!callback(left[i], right[i])) return false;\n }\n return true;\n };\n }\n\n this.encode = arrayHandler(bindTo(type, 'encode'));\n this.decode = arrayHandler(bindTo(type, 'decode'));\n this.is = arrayHandler(bindTo(type, 'is'), true);\n this.equals = arrayEqualsHandler(bindTo(type, 'equals'));\n this.pattern = type.pattern;\n this.$normalize = arrayHandler(bindTo(type, '$normalize'));\n this.name = type.name;\n this.$arrayMode = mode;\n }\n\n return new ArrayType(this, mode);\n};\n\n\n\n/**\n * @ngdoc object\n * @name ui.router.util.$urlMatcherFactory\n *\n * @description\n * Factory for {@link ui.router.util.type:UrlMatcher `UrlMatcher`} instances. The factory\n * is also available to providers under the name `$urlMatcherFactoryProvider`.\n */\nfunction $UrlMatcherFactory() {\n $$UMFP = this;\n\n var isCaseInsensitive = false, isStrictMode = true, defaultSquashPolicy = false;\n\n // Use tildes to pre-encode slashes.\n // If the slashes are simply URLEncoded, the browser can choose to pre-decode them,\n // and bidirectional encoding/decoding fails.\n // Tilde was chosen because it's not a RFC 3986 section 2.2 Reserved Character\n function valToString(val) { return val != null ? val.toString().replace(/(~|\\/)/g, function (m) { return {'~':'~~', '/':'~2F'}[m]; }) : val; }\n function valFromString(val) { return val != null ? val.toString().replace(/(~~|~2F)/g, function (m) { return {'~~':'~', '~2F':'/'}[m]; }) : val; }\n\n var $types = {}, enqueue = true, typeQueue = [], injector, defaultTypes = {\n \"string\": {\n encode: valToString,\n decode: valFromString,\n // TODO: in 1.0, make string .is() return false if value is undefined/null by default.\n // In 0.2.x, string params are optional by default for backwards compat\n is: function(val) { return val == null || !isDefined(val) || typeof val === \"string\"; },\n pattern: /[^/]*/\n },\n \"int\": {\n encode: valToString,\n decode: function(val) { return parseInt(val, 10); },\n is: function(val) { return val !== undefined && val !== null && this.decode(val.toString()) === val; },\n pattern: /-?\\d+/\n },\n \"bool\": {\n encode: function(val) { return val ? 1 : 0; },\n decode: function(val) { return parseInt(val, 10) !== 0; },\n is: function(val) { return val === true || val === false; },\n pattern: /0|1/\n },\n \"date\": {\n encode: function (val) {\n if (!this.is(val))\n return undefined;\n return [ val.getFullYear(),\n ('0' + (val.getMonth() + 1)).slice(-2),\n ('0' + val.getDate()).slice(-2)\n ].join(\"-\");\n },\n decode: function (val) {\n if (this.is(val)) return val;\n var match = this.capture.exec(val);\n return match ? new Date(match[1], match[2] - 1, match[3]) : undefined;\n },\n is: function(val) { return val instanceof Date && !isNaN(val.valueOf()); },\n equals: function (a, b) { return this.is(a) && this.is(b) && a.toISOString() === b.toISOString(); },\n pattern: /[0-9]{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2][0-9]|3[0-1])/,\n capture: /([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])/\n },\n \"json\": {\n encode: angular.toJson,\n decode: angular.fromJson,\n is: angular.isObject,\n equals: angular.equals,\n pattern: /[^/]*/\n },\n \"any\": { // does not encode/decode\n encode: angular.identity,\n decode: angular.identity,\n equals: angular.equals,\n pattern: /.*/\n }\n };\n\n function getDefaultConfig() {\n return {\n strict: isStrictMode,\n caseInsensitive: isCaseInsensitive\n };\n }\n\n function isInjectable(value) {\n return (isFunction(value) || (isArray(value) && isFunction(value[value.length - 1])));\n }\n\n /**\n * [Internal] Get the default value of a parameter, which may be an injectable function.\n */\n $UrlMatcherFactory.$$getDefaultValue = function(config) {\n if (!isInjectable(config.value)) return config.value;\n if (!injector) throw new Error(\"Injectable functions cannot be called at configuration time\");\n return injector.invoke(config.value);\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#caseInsensitive\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Defines whether URL matching should be case sensitive (the default behavior), or not.\n *\n * @param {boolean} value `false` to match URL in a case sensitive manner; otherwise `true`;\n * @returns {boolean} the current value of caseInsensitive\n */\n this.caseInsensitive = function(value) {\n if (isDefined(value))\n isCaseInsensitive = value;\n return isCaseInsensitive;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#strictMode\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Defines whether URLs should match trailing slashes, or not (the default behavior).\n *\n * @param {boolean=} value `false` to match trailing slashes in URLs, otherwise `true`.\n * @returns {boolean} the current value of strictMode\n */\n this.strictMode = function(value) {\n if (isDefined(value))\n isStrictMode = value;\n return isStrictMode;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#defaultSquashPolicy\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Sets the default behavior when generating or matching URLs with default parameter values.\n *\n * @param {string} value A string that defines the default parameter URL squashing behavior.\n * `nosquash`: When generating an href with a default parameter value, do not squash the parameter value from the URL\n * `slash`: When generating an href with a default parameter value, squash (remove) the parameter value, and, if the\n * parameter is surrounded by slashes, squash (remove) one slash from the URL\n * any other string, e.g. \"~\": When generating an href with a default parameter value, squash (remove)\n * the parameter value from the URL and replace it with this string.\n */\n this.defaultSquashPolicy = function(value) {\n if (!isDefined(value)) return defaultSquashPolicy;\n if (value !== true && value !== false && !isString(value))\n throw new Error(\"Invalid squash policy: \" + value + \". Valid policies: false, true, arbitrary-string\");\n defaultSquashPolicy = value;\n return value;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#compile\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Creates a {@link ui.router.util.type:UrlMatcher `UrlMatcher`} for the specified pattern.\n *\n * @param {string} pattern The URL pattern.\n * @param {Object} config The config object hash.\n * @returns {UrlMatcher} The UrlMatcher.\n */\n this.compile = function (pattern, config) {\n return new UrlMatcher(pattern, extend(getDefaultConfig(), config));\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#isMatcher\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Returns true if the specified object is a `UrlMatcher`, or false otherwise.\n *\n * @param {Object} object The object to perform the type check against.\n * @returns {Boolean} Returns `true` if the object matches the `UrlMatcher` interface, by\n * implementing all the same methods.\n */\n this.isMatcher = function (o) {\n if (!isObject(o)) return false;\n var result = true;\n\n forEach(UrlMatcher.prototype, function(val, name) {\n if (isFunction(val)) {\n result = result && (isDefined(o[name]) && isFunction(o[name]));\n }\n });\n return result;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.util.$urlMatcherFactory#type\n * @methodOf ui.router.util.$urlMatcherFactory\n *\n * @description\n * Registers a custom {@link ui.router.util.type:Type `Type`} object that can be used to\n * generate URLs with typed parameters.\n *\n * @param {string} name The type name.\n * @param {Object|Function} definition The type definition. See\n * {@link ui.router.util.type:Type `Type`} for information on the values accepted.\n * @param {Object|Function} definitionFn (optional) A function that is injected before the app\n * runtime starts. The result of this function is merged into the existing `definition`.\n * See {@link ui.router.util.type:Type `Type`} for information on the values accepted.\n *\n * @returns {Object} Returns `$urlMatcherFactoryProvider`.\n *\n * @example\n * This is a simple example of a custom type that encodes and decodes items from an\n * array, using the array index as the URL-encoded value:\n *\n *
\n   * var list = ['John', 'Paul', 'George', 'Ringo'];\n   *\n   * $urlMatcherFactoryProvider.type('listItem', {\n   *   encode: function(item) {\n   *     // Represent the list item in the URL using its corresponding index\n   *     return list.indexOf(item);\n   *   },\n   *   decode: function(item) {\n   *     // Look up the list item by index\n   *     return list[parseInt(item, 10)];\n   *   },\n   *   is: function(item) {\n   *     // Ensure the item is valid by checking to see that it appears\n   *     // in the list\n   *     return list.indexOf(item) > -1;\n   *   }\n   * });\n   *\n   * $stateProvider.state('list', {\n   *   url: \"/list/{item:listItem}\",\n   *   controller: function($scope, $stateParams) {\n   *     console.log($stateParams.item);\n   *   }\n   * });\n   *\n   * // ...\n   *\n   * // Changes URL to '/list/3', logs \"Ringo\" to the console\n   * $state.go('list', { item: \"Ringo\" });\n   * 
\n *\n * This is a more complex example of a type that relies on dependency injection to\n * interact with services, and uses the parameter name from the URL to infer how to\n * handle encoding and decoding parameter values:\n *\n *
\n   * // Defines a custom type that gets a value from a service,\n   * // where each service gets different types of values from\n   * // a backend API:\n   * $urlMatcherFactoryProvider.type('dbObject', {}, function(Users, Posts) {\n   *\n   *   // Matches up services to URL parameter names\n   *   var services = {\n   *     user: Users,\n   *     post: Posts\n   *   };\n   *\n   *   return {\n   *     encode: function(object) {\n   *       // Represent the object in the URL using its unique ID\n   *       return object.id;\n   *     },\n   *     decode: function(value, key) {\n   *       // Look up the object by ID, using the parameter\n   *       // name (key) to call the correct service\n   *       return services[key].findById(value);\n   *     },\n   *     is: function(object, key) {\n   *       // Check that object is a valid dbObject\n   *       return angular.isObject(object) && object.id && services[key];\n   *     }\n   *     equals: function(a, b) {\n   *       // Check the equality of decoded objects by comparing\n   *       // their unique IDs\n   *       return a.id === b.id;\n   *     }\n   *   };\n   * });\n   *\n   * // In a config() block, you can then attach URLs with\n   * // type-annotated parameters:\n   * $stateProvider.state('users', {\n   *   url: \"/users\",\n   *   // ...\n   * }).state('users.item', {\n   *   url: \"/{user:dbObject}\",\n   *   controller: function($scope, $stateParams) {\n   *     // $stateParams.user will now be an object returned from\n   *     // the Users service\n   *   },\n   *   // ...\n   * });\n   * 
\n */\n this.type = function (name, definition, definitionFn) {\n if (!isDefined(definition)) return $types[name];\n if ($types.hasOwnProperty(name)) throw new Error(\"A type named '\" + name + \"' has already been defined.\");\n\n $types[name] = new Type(extend({ name: name }, definition));\n if (definitionFn) {\n typeQueue.push({ name: name, def: definitionFn });\n if (!enqueue) flushTypeQueue();\n }\n return this;\n };\n\n // `flushTypeQueue()` waits until `$urlMatcherFactory` is injected before invoking the queued `definitionFn`s\n function flushTypeQueue() {\n while(typeQueue.length) {\n var type = typeQueue.shift();\n if (type.pattern) throw new Error(\"You cannot override a type's .pattern at runtime.\");\n angular.extend($types[type.name], injector.invoke(type.def));\n }\n }\n\n // Register default types. Store them in the prototype of $types.\n forEach(defaultTypes, function(type, name) { $types[name] = new Type(extend({name: name}, type)); });\n $types = inherit($types, {});\n\n /* No need to document $get, since it returns this */\n this.$get = ['$injector', function ($injector) {\n injector = $injector;\n enqueue = false;\n flushTypeQueue();\n\n forEach(defaultTypes, function(type, name) {\n if (!$types[name]) $types[name] = new Type(type);\n });\n return this;\n }];\n\n this.Param = function Param(id, type, config, location) {\n var self = this;\n config = unwrapShorthand(config);\n type = getType(config, type, location);\n var arrayMode = getArrayMode();\n type = arrayMode ? type.$asArray(arrayMode, location === \"search\") : type;\n if (type.name === \"string\" && !arrayMode && location === \"path\" && config.value === undefined)\n config.value = \"\"; // for 0.2.x; in 0.3.0+ do not automatically default to \"\"\n var isOptional = config.value !== undefined;\n var squash = getSquashPolicy(config, isOptional);\n var replace = getReplace(config, arrayMode, isOptional, squash);\n\n function unwrapShorthand(config) {\n var keys = isObject(config) ? objectKeys(config) : [];\n var isShorthand = indexOf(keys, \"value\") === -1 && indexOf(keys, \"type\") === -1 &&\n indexOf(keys, \"squash\") === -1 && indexOf(keys, \"array\") === -1;\n if (isShorthand) config = { value: config };\n config.$$fn = isInjectable(config.value) ? config.value : function () { return config.value; };\n return config;\n }\n\n function getType(config, urlType, location) {\n if (config.type && urlType) throw new Error(\"Param '\"+id+\"' has two type configurations.\");\n if (urlType) return urlType;\n if (!config.type) return (location === \"config\" ? $types.any : $types.string);\n\n if (angular.isString(config.type))\n return $types[config.type];\n if (config.type instanceof Type)\n return config.type;\n return new Type(config.type);\n }\n\n // array config: param name (param[]) overrides default settings. explicit config overrides param name.\n function getArrayMode() {\n var arrayDefaults = { array: (location === \"search\" ? \"auto\" : false) };\n var arrayParamNomenclature = id.match(/\\[\\]$/) ? { array: true } : {};\n return extend(arrayDefaults, arrayParamNomenclature, config).array;\n }\n\n /**\n * returns false, true, or the squash value to indicate the \"default parameter url squash policy\".\n */\n function getSquashPolicy(config, isOptional) {\n var squash = config.squash;\n if (!isOptional || squash === false) return false;\n if (!isDefined(squash) || squash == null) return defaultSquashPolicy;\n if (squash === true || isString(squash)) return squash;\n throw new Error(\"Invalid squash policy: '\" + squash + \"'. Valid policies: false, true, or arbitrary string\");\n }\n\n function getReplace(config, arrayMode, isOptional, squash) {\n var replace, configuredKeys, defaultPolicy = [\n { from: \"\", to: (isOptional || arrayMode ? undefined : \"\") },\n { from: null, to: (isOptional || arrayMode ? undefined : \"\") }\n ];\n replace = isArray(config.replace) ? config.replace : [];\n if (isString(squash))\n replace.push({ from: squash, to: undefined });\n configuredKeys = map(replace, function(item) { return item.from; } );\n return filter(defaultPolicy, function(item) { return indexOf(configuredKeys, item.from) === -1; }).concat(replace);\n }\n\n /**\n * [Internal] Get the default value of a parameter, which may be an injectable function.\n */\n function $$getDefaultValue() {\n if (!injector) throw new Error(\"Injectable functions cannot be called at configuration time\");\n var defaultValue = injector.invoke(config.$$fn);\n if (defaultValue !== null && defaultValue !== undefined && !self.type.is(defaultValue))\n throw new Error(\"Default value (\" + defaultValue + \") for parameter '\" + self.id + \"' is not an instance of Type (\" + self.type.name + \")\");\n return defaultValue;\n }\n\n /**\n * [Internal] Gets the decoded representation of a value if the value is defined, otherwise, returns the\n * default value, which may be the result of an injectable function.\n */\n function $value(value) {\n function hasReplaceVal(val) { return function(obj) { return obj.from === val; }; }\n function $replace(value) {\n var replacement = map(filter(self.replace, hasReplaceVal(value)), function(obj) { return obj.to; });\n return replacement.length ? replacement[0] : value;\n }\n value = $replace(value);\n return !isDefined(value) ? $$getDefaultValue() : self.type.$normalize(value);\n }\n\n function toString() { return \"{Param:\" + id + \" \" + type + \" squash: '\" + squash + \"' optional: \" + isOptional + \"}\"; }\n\n extend(this, {\n id: id,\n type: type,\n location: location,\n array: arrayMode,\n squash: squash,\n replace: replace,\n isOptional: isOptional,\n value: $value,\n dynamic: undefined,\n config: config,\n toString: toString\n });\n };\n\n function ParamSet(params) {\n extend(this, params || {});\n }\n\n ParamSet.prototype = {\n $$new: function() {\n return inherit(this, extend(new ParamSet(), { $$parent: this}));\n },\n $$keys: function () {\n var keys = [], chain = [], parent = this,\n ignore = objectKeys(ParamSet.prototype);\n while (parent) { chain.push(parent); parent = parent.$$parent; }\n chain.reverse();\n forEach(chain, function(paramset) {\n forEach(objectKeys(paramset), function(key) {\n if (indexOf(keys, key) === -1 && indexOf(ignore, key) === -1) keys.push(key);\n });\n });\n return keys;\n },\n $$values: function(paramValues) {\n var values = {}, self = this;\n forEach(self.$$keys(), function(key) {\n values[key] = self[key].value(paramValues && paramValues[key]);\n });\n return values;\n },\n $$equals: function(paramValues1, paramValues2) {\n var equal = true, self = this;\n forEach(self.$$keys(), function(key) {\n var left = paramValues1 && paramValues1[key], right = paramValues2 && paramValues2[key];\n if (!self[key].type.equals(left, right)) equal = false;\n });\n return equal;\n },\n $$validates: function $$validate(paramValues) {\n var keys = this.$$keys(), i, param, rawVal, normalized, encoded;\n for (i = 0; i < keys.length; i++) {\n param = this[keys[i]];\n rawVal = paramValues[keys[i]];\n if ((rawVal === undefined || rawVal === null) && param.isOptional)\n break; // There was no parameter value, but the param is optional\n normalized = param.type.$normalize(rawVal);\n if (!param.type.is(normalized))\n return false; // The value was not of the correct Type, and could not be decoded to the correct Type\n encoded = param.type.encode(normalized);\n if (angular.isString(encoded) && !param.type.pattern.exec(encoded))\n return false; // The value was of the correct type, but when encoded, did not match the Type's regexp\n }\n return true;\n },\n $$parent: undefined\n };\n\n this.ParamSet = ParamSet;\n}\n\n// Register as a provider so it's available to other providers\nangular.module('ui.router.util').provider('$urlMatcherFactory', $UrlMatcherFactory);\nangular.module('ui.router.util').run(['$urlMatcherFactory', function($urlMatcherFactory) { }]);\n\n/**\n * @ngdoc object\n * @name ui.router.router.$urlRouterProvider\n *\n * @requires ui.router.util.$urlMatcherFactoryProvider\n * @requires $locationProvider\n *\n * @description\n * `$urlRouterProvider` has the responsibility of watching `$location`. \n * When `$location` changes it runs through a list of rules one by one until a \n * match is found. `$urlRouterProvider` is used behind the scenes anytime you specify \n * a url in a state configuration. All urls are compiled into a UrlMatcher object.\n *\n * There are several methods on `$urlRouterProvider` that make it useful to use directly\n * in your module config.\n */\n$UrlRouterProvider.$inject = ['$locationProvider', '$urlMatcherFactoryProvider'];\nfunction $UrlRouterProvider( $locationProvider, $urlMatcherFactory) {\n var rules = [], otherwise = null, interceptDeferred = false, listener;\n\n // Returns a string that is a prefix of all strings matching the RegExp\n function regExpPrefix(re) {\n var prefix = /^\\^((?:\\\\[^a-zA-Z0-9]|[^\\\\\\[\\]\\^$*+?.()|{}]+)*)/.exec(re.source);\n return (prefix != null) ? prefix[1].replace(/\\\\(.)/g, \"$1\") : '';\n }\n\n // Interpolates matched values into a String.replace()-style pattern\n function interpolate(pattern, match) {\n return pattern.replace(/\\$(\\$|\\d{1,2})/, function (m, what) {\n return match[what === '$' ? 0 : Number(what)];\n });\n }\n\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouterProvider#rule\n * @methodOf ui.router.router.$urlRouterProvider\n *\n * @description\n * Defines rules that are used by `$urlRouterProvider` to find matches for\n * specific URLs.\n *\n * @example\n *
\n   * var app = angular.module('app', ['ui.router.router']);\n   *\n   * app.config(function ($urlRouterProvider) {\n   *   // Here's an example of how you might allow case insensitive urls\n   *   $urlRouterProvider.rule(function ($injector, $location) {\n   *     var path = $location.path(),\n   *         normalized = path.toLowerCase();\n   *\n   *     if (path !== normalized) {\n   *       return normalized;\n   *     }\n   *   });\n   * });\n   * 
\n *\n * @param {function} rule Handler function that takes `$injector` and `$location`\n * services as arguments. You can use them to return a valid path as a string.\n *\n * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance\n */\n this.rule = function (rule) {\n if (!isFunction(rule)) throw new Error(\"'rule' must be a function\");\n rules.push(rule);\n return this;\n };\n\n /**\n * @ngdoc object\n * @name ui.router.router.$urlRouterProvider#otherwise\n * @methodOf ui.router.router.$urlRouterProvider\n *\n * @description\n * Defines a path that is used when an invalid route is requested.\n *\n * @example\n *
\n   * var app = angular.module('app', ['ui.router.router']);\n   *\n   * app.config(function ($urlRouterProvider) {\n   *   // if the path doesn't match any of the urls you configured\n   *   // otherwise will take care of routing the user to the\n   *   // specified url\n   *   $urlRouterProvider.otherwise('/index');\n   *\n   *   // Example of using function rule as param\n   *   $urlRouterProvider.otherwise(function ($injector, $location) {\n   *     return '/a/valid/url';\n   *   });\n   * });\n   * 
\n *\n * @param {string|function} rule The url path you want to redirect to or a function \n * rule that returns the url path. The function version is passed two params: \n * `$injector` and `$location` services, and must return a url string.\n *\n * @return {object} `$urlRouterProvider` - `$urlRouterProvider` instance\n */\n this.otherwise = function (rule) {\n if (isString(rule)) {\n var redirect = rule;\n rule = function () { return redirect; };\n }\n else if (!isFunction(rule)) throw new Error(\"'rule' must be a function\");\n otherwise = rule;\n return this;\n };\n\n\n function handleIfMatch($injector, handler, match) {\n if (!match) return false;\n var result = $injector.invoke(handler, handler, { $match: match });\n return isDefined(result) ? result : true;\n }\n\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouterProvider#when\n * @methodOf ui.router.router.$urlRouterProvider\n *\n * @description\n * Registers a handler for a given url matching. \n * \n * If the handler is a string, it is\n * treated as a redirect, and is interpolated according to the syntax of match\n * (i.e. like `String.replace()` for `RegExp`, or like a `UrlMatcher` pattern otherwise).\n *\n * If the handler is a function, it is injectable. It gets invoked if `$location`\n * matches. You have the option of inject the match object as `$match`.\n *\n * The handler can return\n *\n * - **falsy** to indicate that the rule didn't match after all, then `$urlRouter`\n * will continue trying to find another one that matches.\n * - **string** which is treated as a redirect and passed to `$location.url()`\n * - **void** or any **truthy** value tells `$urlRouter` that the url was handled.\n *\n * @example\n *
\n   * var app = angular.module('app', ['ui.router.router']);\n   *\n   * app.config(function ($urlRouterProvider) {\n   *   $urlRouterProvider.when($state.url, function ($match, $stateParams) {\n   *     if ($state.$current.navigable !== state ||\n   *         !equalForKeys($match, $stateParams) {\n   *      $state.transitionTo(state, $match, false);\n   *     }\n   *   });\n   * });\n   * 
\n *\n * @param {string|object} what The incoming path that you want to redirect.\n * @param {string|function} handler The path you want to redirect your user to.\n */\n this.when = function (what, handler) {\n var redirect, handlerIsString = isString(handler);\n if (isString(what)) what = $urlMatcherFactory.compile(what);\n\n if (!handlerIsString && !isFunction(handler) && !isArray(handler))\n throw new Error(\"invalid 'handler' in when()\");\n\n var strategies = {\n matcher: function (what, handler) {\n if (handlerIsString) {\n redirect = $urlMatcherFactory.compile(handler);\n handler = ['$match', function ($match) { return redirect.format($match); }];\n }\n return extend(function ($injector, $location) {\n return handleIfMatch($injector, handler, what.exec($location.path(), $location.search()));\n }, {\n prefix: isString(what.prefix) ? what.prefix : ''\n });\n },\n regex: function (what, handler) {\n if (what.global || what.sticky) throw new Error(\"when() RegExp must not be global or sticky\");\n\n if (handlerIsString) {\n redirect = handler;\n handler = ['$match', function ($match) { return interpolate(redirect, $match); }];\n }\n return extend(function ($injector, $location) {\n return handleIfMatch($injector, handler, what.exec($location.path()));\n }, {\n prefix: regExpPrefix(what)\n });\n }\n };\n\n var check = { matcher: $urlMatcherFactory.isMatcher(what), regex: what instanceof RegExp };\n\n for (var n in check) {\n if (check[n]) return this.rule(strategies[n](what, handler));\n }\n\n throw new Error(\"invalid 'what' in when()\");\n };\n\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouterProvider#deferIntercept\n * @methodOf ui.router.router.$urlRouterProvider\n *\n * @description\n * Disables (or enables) deferring location change interception.\n *\n * If you wish to customize the behavior of syncing the URL (for example, if you wish to\n * defer a transition but maintain the current URL), call this method at configuration time.\n * Then, at run time, call `$urlRouter.listen()` after you have configured your own\n * `$locationChangeSuccess` event handler.\n *\n * @example\n *
\n   * var app = angular.module('app', ['ui.router.router']);\n   *\n   * app.config(function ($urlRouterProvider) {\n   *\n   *   // Prevent $urlRouter from automatically intercepting URL changes;\n   *   // this allows you to configure custom behavior in between\n   *   // location changes and route synchronization:\n   *   $urlRouterProvider.deferIntercept();\n   *\n   * }).run(function ($rootScope, $urlRouter, UserService) {\n   *\n   *   $rootScope.$on('$locationChangeSuccess', function(e) {\n   *     // UserService is an example service for managing user state\n   *     if (UserService.isLoggedIn()) return;\n   *\n   *     // Prevent $urlRouter's default handler from firing\n   *     e.preventDefault();\n   *\n   *     UserService.handleLogin().then(function() {\n   *       // Once the user has logged in, sync the current URL\n   *       // to the router:\n   *       $urlRouter.sync();\n   *     });\n   *   });\n   *\n   *   // Configures $urlRouter's listener *after* your custom listener\n   *   $urlRouter.listen();\n   * });\n   * 
\n *\n * @param {boolean} defer Indicates whether to defer location change interception. Passing\n no parameter is equivalent to `true`.\n */\n this.deferIntercept = function (defer) {\n if (defer === undefined) defer = true;\n interceptDeferred = defer;\n };\n\n /**\n * @ngdoc object\n * @name ui.router.router.$urlRouter\n *\n * @requires $location\n * @requires $rootScope\n * @requires $injector\n * @requires $browser\n *\n * @description\n *\n */\n this.$get = $get;\n $get.$inject = ['$location', '$rootScope', '$injector', '$browser', '$sniffer'];\n function $get( $location, $rootScope, $injector, $browser, $sniffer) {\n\n var baseHref = $browser.baseHref(), location = $location.url(), lastPushedUrl;\n\n function appendBasePath(url, isHtml5, absolute) {\n if (baseHref === '/') return url;\n if (isHtml5) return baseHref.slice(0, -1) + url;\n if (absolute) return baseHref.slice(1) + url;\n return url;\n }\n\n // TODO: Optimize groups of rules with non-empty prefix into some sort of decision tree\n function update(evt) {\n if (evt && evt.defaultPrevented) return;\n var ignoreUpdate = lastPushedUrl && $location.url() === lastPushedUrl;\n lastPushedUrl = undefined;\n // TODO: Re-implement this in 1.0 for https://github.com/angular-ui/ui-router/issues/1573\n //if (ignoreUpdate) return true;\n\n function check(rule) {\n var handled = rule($injector, $location);\n\n if (!handled) return false;\n if (isString(handled)) $location.replace().url(handled);\n return true;\n }\n var n = rules.length, i;\n\n for (i = 0; i < n; i++) {\n if (check(rules[i])) return;\n }\n // always check otherwise last to allow dynamic updates to the set of rules\n if (otherwise) check(otherwise);\n }\n\n function listen() {\n listener = listener || $rootScope.$on('$locationChangeSuccess', update);\n return listener;\n }\n\n if (!interceptDeferred) listen();\n\n return {\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouter#sync\n * @methodOf ui.router.router.$urlRouter\n *\n * @description\n * Triggers an update; the same update that happens when the address bar url changes, aka `$locationChangeSuccess`.\n * This method is useful when you need to use `preventDefault()` on the `$locationChangeSuccess` event,\n * perform some custom logic (route protection, auth, config, redirection, etc) and then finally proceed\n * with the transition by calling `$urlRouter.sync()`.\n *\n * @example\n *
\n       * angular.module('app', ['ui.router'])\n       *   .run(function($rootScope, $urlRouter) {\n       *     $rootScope.$on('$locationChangeSuccess', function(evt) {\n       *       // Halt state change from even starting\n       *       evt.preventDefault();\n       *       // Perform custom logic\n       *       var meetsRequirement = ...\n       *       // Continue with the update and state transition if logic allows\n       *       if (meetsRequirement) $urlRouter.sync();\n       *     });\n       * });\n       * 
\n */\n sync: function() {\n update();\n },\n\n listen: function() {\n return listen();\n },\n\n update: function(read) {\n if (read) {\n location = $location.url();\n return;\n }\n if ($location.url() === location) return;\n\n $location.url(location);\n $location.replace();\n },\n\n push: function(urlMatcher, params, options) {\n var url = urlMatcher.format(params || {});\n\n // Handle the special hash param, if needed\n if (url !== null && params && params['#']) {\n url += '#' + params['#'];\n }\n\n $location.url(url);\n lastPushedUrl = options && options.$$avoidResync ? $location.url() : undefined;\n if (options && options.replace) $location.replace();\n },\n\n /**\n * @ngdoc function\n * @name ui.router.router.$urlRouter#href\n * @methodOf ui.router.router.$urlRouter\n *\n * @description\n * A URL generation method that returns the compiled URL for a given\n * {@link ui.router.util.type:UrlMatcher `UrlMatcher`}, populated with the provided parameters.\n *\n * @example\n *
\n       * $bob = $urlRouter.href(new UrlMatcher(\"/about/:person\"), {\n       *   person: \"bob\"\n       * });\n       * // $bob == \"/about/bob\";\n       * 
\n *\n * @param {UrlMatcher} urlMatcher The `UrlMatcher` object which is used as the template of the URL to generate.\n * @param {object=} params An object of parameter values to fill the matcher's required parameters.\n * @param {object=} options Options object. The options are:\n *\n * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n *\n * @returns {string} Returns the fully compiled URL, or `null` if `params` fail validation against `urlMatcher`\n */\n href: function(urlMatcher, params, options) {\n if (!urlMatcher.validates(params)) return null;\n\n var isHtml5 = $locationProvider.html5Mode();\n if (angular.isObject(isHtml5)) {\n isHtml5 = isHtml5.enabled;\n }\n\n isHtml5 = isHtml5 && $sniffer.history;\n \n var url = urlMatcher.format(params);\n options = options || {};\n\n if (!isHtml5 && url !== null) {\n url = \"#\" + $locationProvider.hashPrefix() + url;\n }\n\n // Handle special hash param, if needed\n if (url !== null && params && params['#']) {\n url += '#' + params['#'];\n }\n\n url = appendBasePath(url, isHtml5, options.absolute);\n\n if (!options.absolute || !url) {\n return url;\n }\n\n var slash = (!isHtml5 && url ? '/' : ''), port = $location.port();\n port = (port === 80 || port === 443 ? '' : ':' + port);\n\n return [$location.protocol(), '://', $location.host(), port, slash, url].join('');\n }\n };\n }\n}\n\nangular.module('ui.router.router').provider('$urlRouter', $UrlRouterProvider);\n\n/**\n * @ngdoc object\n * @name ui.router.state.$stateProvider\n *\n * @requires ui.router.router.$urlRouterProvider\n * @requires ui.router.util.$urlMatcherFactoryProvider\n *\n * @description\n * The new `$stateProvider` works similar to Angular's v1 router, but it focuses purely\n * on state.\n *\n * A state corresponds to a \"place\" in the application in terms of the overall UI and\n * navigation. A state describes (via the controller / template / view properties) what\n * the UI looks like and does at that place.\n *\n * States often have things in common, and the primary way of factoring out these\n * commonalities in this model is via the state hierarchy, i.e. parent/child states aka\n * nested states.\n *\n * The `$stateProvider` provides interfaces to declare these states for your app.\n */\n$StateProvider.$inject = ['$urlRouterProvider', '$urlMatcherFactoryProvider'];\nfunction $StateProvider( $urlRouterProvider, $urlMatcherFactory) {\n\n var root, states = {}, $state, queue = {}, abstractKey = 'abstract';\n\n // Builds state properties from definition passed to registerState()\n var stateBuilder = {\n\n // Derive parent state from a hierarchical name only if 'parent' is not explicitly defined.\n // state.children = [];\n // if (parent) parent.children.push(state);\n parent: function(state) {\n if (isDefined(state.parent) && state.parent) return findState(state.parent);\n // regex matches any valid composite state name\n // would match \"contact.list\" but not \"contacts\"\n var compositeName = /^(.+)\\.[^.]+$/.exec(state.name);\n return compositeName ? findState(compositeName[1]) : root;\n },\n\n // inherit 'data' from parent and override by own values (if any)\n data: function(state) {\n if (state.parent && state.parent.data) {\n state.data = state.self.data = inherit(state.parent.data, state.data);\n }\n return state.data;\n },\n\n // Build a URLMatcher if necessary, either via a relative or absolute URL\n url: function(state) {\n var url = state.url, config = { params: state.params || {} };\n\n if (isString(url)) {\n if (url.charAt(0) == '^') return $urlMatcherFactory.compile(url.substring(1), config);\n return (state.parent.navigable || root).url.concat(url, config);\n }\n\n if (!url || $urlMatcherFactory.isMatcher(url)) return url;\n throw new Error(\"Invalid url '\" + url + \"' in state '\" + state + \"'\");\n },\n\n // Keep track of the closest ancestor state that has a URL (i.e. is navigable)\n navigable: function(state) {\n return state.url ? state : (state.parent ? state.parent.navigable : null);\n },\n\n // Own parameters for this state. state.url.params is already built at this point. Create and add non-url params\n ownParams: function(state) {\n var params = state.url && state.url.params || new $$UMFP.ParamSet();\n forEach(state.params || {}, function(config, id) {\n if (!params[id]) params[id] = new $$UMFP.Param(id, null, config, \"config\");\n });\n return params;\n },\n\n // Derive parameters for this state and ensure they're a super-set of parent's parameters\n params: function(state) {\n var ownParams = pick(state.ownParams, state.ownParams.$$keys());\n return state.parent && state.parent.params ? extend(state.parent.params.$$new(), ownParams) : new $$UMFP.ParamSet();\n },\n\n // If there is no explicit multi-view configuration, make one up so we don't have\n // to handle both cases in the view directive later. Note that having an explicit\n // 'views' property will mean the default unnamed view properties are ignored. This\n // is also a good time to resolve view names to absolute names, so everything is a\n // straight lookup at link time.\n views: function(state) {\n var views = {};\n\n forEach(isDefined(state.views) ? state.views : { '': state }, function (view, name) {\n if (name.indexOf('@') < 0) name += '@' + state.parent.name;\n view.resolveAs = view.resolveAs || state.resolveAs || '$resolve';\n views[name] = view;\n });\n return views;\n },\n\n // Keep a full path from the root down to this state as this is needed for state activation.\n path: function(state) {\n return state.parent ? state.parent.path.concat(state) : []; // exclude root from path\n },\n\n // Speed up $state.contains() as it's used a lot\n includes: function(state) {\n var includes = state.parent ? extend({}, state.parent.includes) : {};\n includes[state.name] = true;\n return includes;\n },\n\n $delegates: {}\n };\n\n function isRelative(stateName) {\n return stateName.indexOf(\".\") === 0 || stateName.indexOf(\"^\") === 0;\n }\n\n function findState(stateOrName, base) {\n if (!stateOrName) return undefined;\n\n var isStr = isString(stateOrName),\n name = isStr ? stateOrName : stateOrName.name,\n path = isRelative(name);\n\n if (path) {\n if (!base) throw new Error(\"No reference point given for path '\" + name + \"'\");\n base = findState(base);\n \n var rel = name.split(\".\"), i = 0, pathLength = rel.length, current = base;\n\n for (; i < pathLength; i++) {\n if (rel[i] === \"\" && i === 0) {\n current = base;\n continue;\n }\n if (rel[i] === \"^\") {\n if (!current.parent) throw new Error(\"Path '\" + name + \"' not valid for state '\" + base.name + \"'\");\n current = current.parent;\n continue;\n }\n break;\n }\n rel = rel.slice(i).join(\".\");\n name = current.name + (current.name && rel ? \".\" : \"\") + rel;\n }\n var state = states[name];\n\n if (state && (isStr || (!isStr && (state === stateOrName || state.self === stateOrName)))) {\n return state;\n }\n return undefined;\n }\n\n function queueState(parentName, state) {\n if (!queue[parentName]) {\n queue[parentName] = [];\n }\n queue[parentName].push(state);\n }\n\n function flushQueuedChildren(parentName) {\n var queued = queue[parentName] || [];\n while(queued.length) {\n registerState(queued.shift());\n }\n }\n\n function registerState(state) {\n // Wrap a new object around the state so we can store our private details easily.\n state = inherit(state, {\n self: state,\n resolve: state.resolve || {},\n toString: function() { return this.name; }\n });\n\n var name = state.name;\n if (!isString(name) || name.indexOf('@') >= 0) throw new Error(\"State must have a valid name\");\n if (states.hasOwnProperty(name)) throw new Error(\"State '\" + name + \"' is already defined\");\n\n // Get parent name\n var parentName = (name.indexOf('.') !== -1) ? name.substring(0, name.lastIndexOf('.'))\n : (isString(state.parent)) ? state.parent\n : (isObject(state.parent) && isString(state.parent.name)) ? state.parent.name\n : '';\n\n // If parent is not registered yet, add state to queue and register later\n if (parentName && !states[parentName]) {\n return queueState(parentName, state.self);\n }\n\n for (var key in stateBuilder) {\n if (isFunction(stateBuilder[key])) state[key] = stateBuilder[key](state, stateBuilder.$delegates[key]);\n }\n states[name] = state;\n\n // Register the state in the global state list and with $urlRouter if necessary.\n if (!state[abstractKey] && state.url) {\n $urlRouterProvider.when(state.url, ['$match', '$stateParams', function ($match, $stateParams) {\n if ($state.$current.navigable != state || !equalForKeys($match, $stateParams)) {\n $state.transitionTo(state, $match, { inherit: true, location: false });\n }\n }]);\n }\n\n // Register any queued children\n flushQueuedChildren(name);\n\n return state;\n }\n\n // Checks text to see if it looks like a glob.\n function isGlob (text) {\n return text.indexOf('*') > -1;\n }\n\n // Returns true if glob matches current $state name.\n function doesStateMatchGlob (glob) {\n var globSegments = glob.split('.'),\n segments = $state.$current.name.split('.');\n\n //match single stars\n for (var i = 0, l = globSegments.length; i < l; i++) {\n if (globSegments[i] === '*') {\n segments[i] = '*';\n }\n }\n\n //match greedy starts\n if (globSegments[0] === '**') {\n segments = segments.slice(indexOf(segments, globSegments[1]));\n segments.unshift('**');\n }\n //match greedy ends\n if (globSegments[globSegments.length - 1] === '**') {\n segments.splice(indexOf(segments, globSegments[globSegments.length - 2]) + 1, Number.MAX_VALUE);\n segments.push('**');\n }\n\n if (globSegments.length != segments.length) {\n return false;\n }\n\n return segments.join('') === globSegments.join('');\n }\n\n\n // Implicit root state that is always active\n root = registerState({\n name: '',\n url: '^',\n views: null,\n 'abstract': true\n });\n root.navigable = null;\n\n\n /**\n * @ngdoc function\n * @name ui.router.state.$stateProvider#decorator\n * @methodOf ui.router.state.$stateProvider\n *\n * @description\n * Allows you to extend (carefully) or override (at your own peril) the \n * `stateBuilder` object used internally by `$stateProvider`. This can be used \n * to add custom functionality to ui-router, for example inferring templateUrl \n * based on the state name.\n *\n * When passing only a name, it returns the current (original or decorated) builder\n * function that matches `name`.\n *\n * The builder functions that can be decorated are listed below. Though not all\n * necessarily have a good use case for decoration, that is up to you to decide.\n *\n * In addition, users can attach custom decorators, which will generate new \n * properties within the state's internal definition. There is currently no clear \n * use-case for this beyond accessing internal states (i.e. $state.$current), \n * however, expect this to become increasingly relevant as we introduce additional \n * meta-programming features.\n *\n * **Warning**: Decorators should not be interdependent because the order of \n * execution of the builder functions in non-deterministic. Builder functions \n * should only be dependent on the state definition object and super function.\n *\n *\n * Existing builder functions and current return values:\n *\n * - **parent** `{object}` - returns the parent state object.\n * - **data** `{object}` - returns state data, including any inherited data that is not\n * overridden by own values (if any).\n * - **url** `{object}` - returns a {@link ui.router.util.type:UrlMatcher UrlMatcher}\n * or `null`.\n * - **navigable** `{object}` - returns closest ancestor state that has a URL (aka is \n * navigable).\n * - **params** `{object}` - returns an array of state params that are ensured to \n * be a super-set of parent's params.\n * - **views** `{object}` - returns a views object where each key is an absolute view \n * name (i.e. \"viewName@stateName\") and each value is the config object \n * (template, controller) for the view. Even when you don't use the views object \n * explicitly on a state config, one is still created for you internally.\n * So by decorating this builder function you have access to decorating template \n * and controller properties.\n * - **ownParams** `{object}` - returns an array of params that belong to the state, \n * not including any params defined by ancestor states.\n * - **path** `{string}` - returns the full path from the root down to this state. \n * Needed for state activation.\n * - **includes** `{object}` - returns an object that includes every state that \n * would pass a `$state.includes()` test.\n *\n * @example\n *
\n   * // Override the internal 'views' builder with a function that takes the state\n   * // definition, and a reference to the internal function being overridden:\n   * $stateProvider.decorator('views', function (state, parent) {\n   *   var result = {},\n   *       views = parent(state);\n   *\n   *   angular.forEach(views, function (config, name) {\n   *     var autoName = (state.name + '.' + name).replace('.', '/');\n   *     config.templateUrl = config.templateUrl || '/partials/' + autoName + '.html';\n   *     result[name] = config;\n   *   });\n   *   return result;\n   * });\n   *\n   * $stateProvider.state('home', {\n   *   views: {\n   *     'contact.list': { controller: 'ListController' },\n   *     'contact.item': { controller: 'ItemController' }\n   *   }\n   * });\n   *\n   * // ...\n   *\n   * $state.go('home');\n   * // Auto-populates list and item views with /partials/home/contact/list.html,\n   * // and /partials/home/contact/item.html, respectively.\n   * 
\n *\n * @param {string} name The name of the builder function to decorate. \n * @param {object} func A function that is responsible for decorating the original \n * builder function. The function receives two parameters:\n *\n * - `{object}` - state - The state config object.\n * - `{object}` - super - The original builder function.\n *\n * @return {object} $stateProvider - $stateProvider instance\n */\n this.decorator = decorator;\n function decorator(name, func) {\n /*jshint validthis: true */\n if (isString(name) && !isDefined(func)) {\n return stateBuilder[name];\n }\n if (!isFunction(func) || !isString(name)) {\n return this;\n }\n if (stateBuilder[name] && !stateBuilder.$delegates[name]) {\n stateBuilder.$delegates[name] = stateBuilder[name];\n }\n stateBuilder[name] = func;\n return this;\n }\n\n /**\n * @ngdoc function\n * @name ui.router.state.$stateProvider#state\n * @methodOf ui.router.state.$stateProvider\n *\n * @description\n * Registers a state configuration under a given state name. The stateConfig object\n * has the following acceptable properties.\n *\n * @param {string} name A unique state name, e.g. \"home\", \"about\", \"contacts\".\n * To create a parent/child state use a dot, e.g. \"about.sales\", \"home.newest\".\n * @param {object} stateConfig State configuration object.\n * @param {string|function=} stateConfig.template\n * \n * html template as a string or a function that returns\n * an html template as a string which should be used by the uiView directives. This property \n * takes precedence over templateUrl.\n * \n * If `template` is a function, it will be called with the following parameters:\n *\n * - {array.<object>} - state parameters extracted from the current $location.path() by\n * applying the current state\n *\n *
template:\n   *   \"

inline template definition

\" +\n * \"
\"
\n *
template: function(params) {\n   *       return \"

generated template

\"; }
\n *
\n *\n * @param {string|function=} stateConfig.templateUrl\n * \n *\n * path or function that returns a path to an html\n * template that should be used by uiView.\n * \n * If `templateUrl` is a function, it will be called with the following parameters:\n *\n * - {array.<object>} - state parameters extracted from the current $location.path() by \n * applying the current state\n *\n *
templateUrl: \"home.html\"
\n *
templateUrl: function(params) {\n   *     return myTemplates[params.pageId]; }
\n *\n * @param {function=} stateConfig.templateProvider\n * \n * Provider function that returns HTML content string.\n *
 templateProvider:\n   *       function(MyTemplateService, params) {\n   *         return MyTemplateService.getTemplate(params.pageId);\n   *       }
\n *\n * @param {string|function=} stateConfig.controller\n * \n *\n * Controller fn that should be associated with newly\n * related scope or the name of a registered controller if passed as a string.\n * Optionally, the ControllerAs may be declared here.\n *
controller: \"MyRegisteredController\"
\n *
controller:\n   *     \"MyRegisteredController as fooCtrl\"}
\n *
controller: function($scope, MyService) {\n   *     $scope.data = MyService.getData(); }
\n *\n * @param {function=} stateConfig.controllerProvider\n * \n *\n * Injectable provider function that returns the actual controller or string.\n *
controllerProvider:\n   *   function(MyResolveData) {\n   *     if (MyResolveData.foo)\n   *       return \"FooCtrl\"\n   *     else if (MyResolveData.bar)\n   *       return \"BarCtrl\";\n   *     else return function($scope) {\n   *       $scope.baz = \"Qux\";\n   *     }\n   *   }
\n *\n * @param {string=} stateConfig.controllerAs\n * \n * \n * A controller alias name. If present the controller will be\n * published to scope under the controllerAs name.\n *
controllerAs: \"myCtrl\"
\n *\n * @param {string|object=} stateConfig.parent\n * \n * Optionally specifies the parent state of this state.\n *\n *
parent: 'parentState'
\n *
parent: parentState // JS variable
\n *\n * @param {object=} stateConfig.resolve\n * \n *\n * An optional map<string, function> of dependencies which\n * should be injected into the controller. If any of these dependencies are promises, \n * the router will wait for them all to be resolved before the controller is instantiated.\n * If all the promises are resolved successfully, the $stateChangeSuccess event is fired\n * and the values of the resolved promises are injected into any controllers that reference them.\n * If any of the promises are rejected the $stateChangeError event is fired.\n *\n * The map object is:\n * \n * - key - {string}: name of dependency to be injected into controller\n * - factory - {string|function}: If string then it is alias for service. Otherwise if function, \n * it is injected and return value it treated as dependency. If result is a promise, it is \n * resolved before its value is injected into controller.\n *\n *
resolve: {\n   *     myResolve1:\n   *       function($http, $stateParams) {\n   *         return $http.get(\"/api/foos/\"+stateParams.fooID);\n   *       }\n   *     }
\n *\n * @param {string=} stateConfig.url\n * \n *\n * A url fragment with optional parameters. When a state is navigated or\n * transitioned to, the `$stateParams` service will be populated with any \n * parameters that were passed.\n *\n * (See {@link ui.router.util.type:UrlMatcher UrlMatcher} `UrlMatcher`} for\n * more details on acceptable patterns )\n *\n * examples:\n *
url: \"/home\"\n   * url: \"/users/:userid\"\n   * url: \"/books/{bookid:[a-zA-Z_-]}\"\n   * url: \"/books/{categoryid:int}\"\n   * url: \"/books/{publishername:string}/{categoryid:int}\"\n   * url: \"/messages?before&after\"\n   * url: \"/messages?{before:date}&{after:date}\"\n   * url: \"/messages/:mailboxid?{before:date}&{after:date}\"\n   * 
\n *\n * @param {object=} stateConfig.views\n * \n * an optional map<string, object> which defined multiple views, or targets views\n * manually/explicitly.\n *\n * Examples:\n *\n * Targets three named `ui-view`s in the parent state's template\n *
views: {\n   *     header: {\n   *       controller: \"headerCtrl\",\n   *       templateUrl: \"header.html\"\n   *     }, body: {\n   *       controller: \"bodyCtrl\",\n   *       templateUrl: \"body.html\"\n   *     }, footer: {\n   *       controller: \"footCtrl\",\n   *       templateUrl: \"footer.html\"\n   *     }\n   *   }
\n *\n * Targets named `ui-view=\"header\"` from grandparent state 'top''s template, and named `ui-view=\"body\" from parent state's template.\n *
views: {\n   *     'header@top': {\n   *       controller: \"msgHeaderCtrl\",\n   *       templateUrl: \"msgHeader.html\"\n   *     }, 'body': {\n   *       controller: \"messagesCtrl\",\n   *       templateUrl: \"messages.html\"\n   *     }\n   *   }
\n *\n * @param {boolean=} [stateConfig.abstract=false]\n * \n * An abstract state will never be directly activated,\n * but can provide inherited properties to its common children states.\n *
abstract: true
\n *\n * @param {function=} stateConfig.onEnter\n * \n *\n * Callback function for when a state is entered. Good way\n * to trigger an action or dispatch an event, such as opening a dialog.\n * If minifying your scripts, make sure to explicitly annotate this function,\n * because it won't be automatically annotated by your build tools.\n *\n *
onEnter: function(MyService, $stateParams) {\n   *     MyService.foo($stateParams.myParam);\n   * }
\n *\n * @param {function=} stateConfig.onExit\n * \n *\n * Callback function for when a state is exited. Good way to\n * trigger an action or dispatch an event, such as opening a dialog.\n * If minifying your scripts, make sure to explicitly annotate this function,\n * because it won't be automatically annotated by your build tools.\n *\n *
onExit: function(MyService, $stateParams) {\n   *     MyService.cleanup($stateParams.myParam);\n   * }
\n *\n * @param {boolean=} [stateConfig.reloadOnSearch=true]\n * \n *\n * If `false`, will not retrigger the same state\n * just because a search/query parameter has changed (via $location.search() or $location.hash()). \n * Useful for when you'd like to modify $location.search() without triggering a reload.\n *
reloadOnSearch: false
\n *\n * @param {object=} stateConfig.data\n * \n *\n * Arbitrary data object, useful for custom configuration. The parent state's `data` is\n * prototypally inherited. In other words, adding a data property to a state adds it to\n * the entire subtree via prototypal inheritance.\n *\n *
data: {\n   *     requiredRole: 'foo'\n   * } 
\n *\n * @param {object=} stateConfig.params\n * \n *\n * A map which optionally configures parameters declared in the `url`, or\n * defines additional non-url parameters. For each parameter being\n * configured, add a configuration object keyed to the name of the parameter.\n *\n * Each parameter configuration object may contain the following properties:\n *\n * - ** value ** - {object|function=}: specifies the default value for this\n * parameter. This implicitly sets this parameter as optional.\n *\n * When UI-Router routes to a state and no value is\n * specified for this parameter in the URL or transition, the\n * default value will be used instead. If `value` is a function,\n * it will be injected and invoked, and the return value used.\n *\n * *Note*: `undefined` is treated as \"no default value\" while `null`\n * is treated as \"the default value is `null`\".\n *\n * *Shorthand*: If you only need to configure the default value of the\n * parameter, you may use a shorthand syntax. In the **`params`**\n * map, instead mapping the param name to a full parameter configuration\n * object, simply set map it to the default parameter value, e.g.:\n *\n *
// define a parameter's default value\n   * params: {\n   *     param1: { value: \"defaultValue\" }\n   * }\n   * // shorthand default values\n   * params: {\n   *     param1: \"defaultValue\",\n   *     param2: \"param2Default\"\n   * }
\n *\n * - ** array ** - {boolean=}: *(default: false)* If true, the param value will be\n * treated as an array of values. If you specified a Type, the value will be\n * treated as an array of the specified Type. Note: query parameter values\n * default to a special `\"auto\"` mode.\n *\n * For query parameters in `\"auto\"` mode, if multiple values for a single parameter\n * are present in the URL (e.g.: `/foo?bar=1&bar=2&bar=3`) then the values\n * are mapped to an array (e.g.: `{ foo: [ '1', '2', '3' ] }`). However, if\n * only one value is present (e.g.: `/foo?bar=1`) then the value is treated as single\n * value (e.g.: `{ foo: '1' }`).\n *\n *
params: {\n   *     param1: { array: true }\n   * }
\n *\n * - ** squash ** - {bool|string=}: `squash` configures how a default parameter value is represented in the URL when\n * the current parameter value is the same as the default value. If `squash` is not set, it uses the\n * configured default squash policy.\n * (See {@link ui.router.util.$urlMatcherFactory#methods_defaultSquashPolicy `defaultSquashPolicy()`})\n *\n * There are three squash settings:\n *\n * - false: The parameter's default value is not squashed. It is encoded and included in the URL\n * - true: The parameter's default value is omitted from the URL. If the parameter is preceeded and followed\n * by slashes in the state's `url` declaration, then one of those slashes are omitted.\n * This can allow for cleaner looking URLs.\n * - `\"\"`: The parameter's default value is replaced with an arbitrary placeholder of your choice.\n *\n *
params: {\n   *     param1: {\n   *       value: \"defaultId\",\n   *       squash: true\n   * } }\n   * // squash \"defaultValue\" to \"~\"\n   * params: {\n   *     param1: {\n   *       value: \"defaultValue\",\n   *       squash: \"~\"\n   * } }\n   * 
\n *\n *\n * @example\n *
\n   * // Some state name examples\n   *\n   * // stateName can be a single top-level name (must be unique).\n   * $stateProvider.state(\"home\", {});\n   *\n   * // Or it can be a nested state name. This state is a child of the\n   * // above \"home\" state.\n   * $stateProvider.state(\"home.newest\", {});\n   *\n   * // Nest states as deeply as needed.\n   * $stateProvider.state(\"home.newest.abc.xyz.inception\", {});\n   *\n   * // state() returns $stateProvider, so you can chain state declarations.\n   * $stateProvider\n   *   .state(\"home\", {})\n   *   .state(\"about\", {})\n   *   .state(\"contacts\", {});\n   * 
\n *\n */\n this.state = state;\n function state(name, definition) {\n /*jshint validthis: true */\n if (isObject(name)) definition = name;\n else definition.name = name;\n registerState(definition);\n return this;\n }\n\n /**\n * @ngdoc object\n * @name ui.router.state.$state\n *\n * @requires $rootScope\n * @requires $q\n * @requires ui.router.state.$view\n * @requires $injector\n * @requires ui.router.util.$resolve\n * @requires ui.router.state.$stateParams\n * @requires ui.router.router.$urlRouter\n *\n * @property {object} params A param object, e.g. {sectionId: section.id)}, that \n * you'd like to test against the current active state.\n * @property {object} current A reference to the state's config object. However \n * you passed it in. Useful for accessing custom data.\n * @property {object} transition Currently pending transition. A promise that'll \n * resolve or reject.\n *\n * @description\n * `$state` service is responsible for representing states as well as transitioning\n * between them. It also provides interfaces to ask for current state or even states\n * you're coming from.\n */\n this.$get = $get;\n $get.$inject = ['$rootScope', '$q', '$view', '$injector', '$resolve', '$stateParams', '$urlRouter', '$location', '$urlMatcherFactory'];\n function $get( $rootScope, $q, $view, $injector, $resolve, $stateParams, $urlRouter, $location, $urlMatcherFactory) {\n\n var TransitionSupersededError = new Error('transition superseded');\n\n var TransitionSuperseded = silenceUncaughtInPromise($q.reject(TransitionSupersededError));\n var TransitionPrevented = silenceUncaughtInPromise($q.reject(new Error('transition prevented')));\n var TransitionAborted = silenceUncaughtInPromise($q.reject(new Error('transition aborted')));\n var TransitionFailed = silenceUncaughtInPromise($q.reject(new Error('transition failed')));\n\n // Handles the case where a state which is the target of a transition is not found, and the user\n // can optionally retry or defer the transition\n function handleRedirect(redirect, state, params, options) {\n /**\n * @ngdoc event\n * @name ui.router.state.$state#$stateNotFound\n * @eventOf ui.router.state.$state\n * @eventType broadcast on root scope\n * @description\n * Fired when a requested state **cannot be found** using the provided state name during transition.\n * The event is broadcast allowing any handlers a single chance to deal with the error (usually by\n * lazy-loading the unfound state). A special `unfoundState` object is passed to the listener handler,\n * you can see its three properties in the example. You can use `event.preventDefault()` to abort the\n * transition and the promise returned from `go` will be rejected with a `'transition aborted'` value.\n *\n * @param {Object} event Event object.\n * @param {Object} unfoundState Unfound State information. Contains: `to, toParams, options` properties.\n * @param {State} fromState Current state object.\n * @param {Object} fromParams Current state params.\n *\n * @example\n *\n *
\n       * // somewhere, assume lazy.state has not been defined\n       * $state.go(\"lazy.state\", {a:1, b:2}, {inherit:false});\n       *\n       * // somewhere else\n       * $scope.$on('$stateNotFound',\n       * function(event, unfoundState, fromState, fromParams){\n       *     console.log(unfoundState.to); // \"lazy.state\"\n       *     console.log(unfoundState.toParams); // {a:1, b:2}\n       *     console.log(unfoundState.options); // {inherit:false} + default options\n       * })\n       * 
\n */\n var evt = $rootScope.$broadcast('$stateNotFound', redirect, state, params);\n\n if (evt.defaultPrevented) {\n $urlRouter.update();\n return TransitionAborted;\n }\n\n if (!evt.retry) {\n return null;\n }\n\n // Allow the handler to return a promise to defer state lookup retry\n if (options.$retry) {\n $urlRouter.update();\n return TransitionFailed;\n }\n var retryTransition = $state.transition = $q.when(evt.retry);\n\n retryTransition.then(function() {\n if (retryTransition !== $state.transition) {\n $rootScope.$broadcast('$stateChangeCancel', redirect.to, redirect.toParams, state, params);\n return TransitionSuperseded;\n }\n redirect.options.$retry = true;\n return $state.transitionTo(redirect.to, redirect.toParams, redirect.options);\n }, function() {\n return TransitionAborted;\n });\n $urlRouter.update();\n\n return retryTransition;\n }\n\n root.locals = { resolve: null, globals: { $stateParams: {} } };\n\n $state = {\n params: {},\n current: root.self,\n $current: root,\n transition: null\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#reload\n * @methodOf ui.router.state.$state\n *\n * @description\n * A method that force reloads the current state. All resolves are re-resolved,\n * controllers reinstantiated, and events re-fired.\n *\n * @example\n *
\n     * var app angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.reload = function(){\n     *     $state.reload();\n     *   }\n     * });\n     * 
\n *\n * `reload()` is just an alias for:\n *
\n     * $state.transitionTo($state.current, $stateParams, { \n     *   reload: true, inherit: false, notify: true\n     * });\n     * 
\n *\n * @param {string=|object=} state - A state name or a state object, which is the root of the resolves to be re-resolved.\n * @example\n *
\n     * //assuming app application consists of 3 states: 'contacts', 'contacts.detail', 'contacts.detail.item' \n     * //and current state is 'contacts.detail.item'\n     * var app angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.reload = function(){\n     *     //will reload 'contact.detail' and 'contact.detail.item' states\n     *     $state.reload('contact.detail');\n     *   }\n     * });\n     * 
\n *\n * `reload()` is just an alias for:\n *
\n     * $state.transitionTo($state.current, $stateParams, { \n     *   reload: true, inherit: false, notify: true\n     * });\n     * 
\n\n * @returns {promise} A promise representing the state of the new transition. See\n * {@link ui.router.state.$state#methods_go $state.go}.\n */\n $state.reload = function reload(state) {\n return $state.transitionTo($state.current, $stateParams, { reload: state || true, inherit: false, notify: true});\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#go\n * @methodOf ui.router.state.$state\n *\n * @description\n * Convenience method for transitioning to a new state. `$state.go` calls \n * `$state.transitionTo` internally but automatically sets options to \n * `{ location: true, inherit: true, relative: $state.$current, notify: true }`. \n * This allows you to easily use an absolute or relative to path and specify \n * only the parameters you'd like to update (while letting unspecified parameters \n * inherit from the currently active ancestor states).\n *\n * @example\n *
\n     * var app = angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.changeState = function () {\n     *     $state.go('contact.detail');\n     *   };\n     * });\n     * 
\n * \n *\n * @param {string} to Absolute state name or relative state path. Some examples:\n *\n * - `$state.go('contact.detail')` - will go to the `contact.detail` state\n * - `$state.go('^')` - will go to a parent state\n * - `$state.go('^.sibling')` - will go to a sibling state\n * - `$state.go('.child.grandchild')` - will go to grandchild state\n *\n * @param {object=} params A map of the parameters that will be sent to the state, \n * will populate $stateParams. Any parameters that are not specified will be inherited from currently \n * defined parameters. Only parameters specified in the state definition can be overridden, new \n * parameters will be ignored. This allows, for example, going to a sibling state that shares parameters\n * specified in a parent state. Parameter inheritance only works between common ancestor states, I.e.\n * transitioning to a sibling will get you the parameters for all parents, transitioning to a child\n * will get you all current parameters, etc.\n * @param {object=} options Options object. The options are:\n *\n * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false`\n * will not. If string, must be `\"replace\"`, which will update url and also replace last history record.\n * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url.\n * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), \n * defines which state to be relative from.\n * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events.\n * - **`reload`** (v0.2.5) - {boolean=false|string|object}, If `true` will force transition even if no state or params\n * have changed. It will reload the resolves and views of the current state and parent states.\n * If `reload` is a string (or state object), the state object is fetched (by name, or object reference); and \\\n * the transition reloads the resolves and views for that matched state, and all its children states.\n *\n * @returns {promise} A promise representing the state of the new transition.\n *\n * Possible success values:\n *\n * - $state.current\n *\n *
Possible rejection values:\n *\n * - 'transition superseded' - when a newer transition has been started after this one\n * - 'transition prevented' - when `event.preventDefault()` has been called in a `$stateChangeStart` listener\n * - 'transition aborted' - when `event.preventDefault()` has been called in a `$stateNotFound` listener or\n * when a `$stateNotFound` `event.retry` promise errors.\n * - 'transition failed' - when a state has been unsuccessfully found after 2 tries.\n * - *resolve error* - when an error has occurred with a `resolve`\n *\n */\n $state.go = function go(to, params, options) {\n return $state.transitionTo(to, params, extend({ inherit: true, relative: $state.$current }, options));\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#transitionTo\n * @methodOf ui.router.state.$state\n *\n * @description\n * Low-level method for transitioning to a new state. {@link ui.router.state.$state#methods_go $state.go}\n * uses `transitionTo` internally. `$state.go` is recommended in most situations.\n *\n * @example\n *
\n     * var app = angular.module('app', ['ui.router']);\n     *\n     * app.controller('ctrl', function ($scope, $state) {\n     *   $scope.changeState = function () {\n     *     $state.transitionTo('contact.detail');\n     *   };\n     * });\n     * 
\n *\n * @param {string} to State name.\n * @param {object=} toParams A map of the parameters that will be sent to the state,\n * will populate $stateParams.\n * @param {object=} options Options object. The options are:\n *\n * - **`location`** - {boolean=true|string=} - If `true` will update the url in the location bar, if `false`\n * will not. If string, must be `\"replace\"`, which will update url and also replace last history record.\n * - **`inherit`** - {boolean=false}, If `true` will inherit url parameters from current url.\n * - **`relative`** - {object=}, When transitioning with relative path (e.g '^'), \n * defines which state to be relative from.\n * - **`notify`** - {boolean=true}, If `true` will broadcast $stateChangeStart and $stateChangeSuccess events.\n * - **`reload`** (v0.2.5) - {boolean=false|string=|object=}, If `true` will force transition even if the state or params \n * have not changed, aka a reload of the same state. It differs from reloadOnSearch because you'd\n * use this when you want to force a reload when *everything* is the same, including search params.\n * if String, then will reload the state with the name given in reload, and any children.\n * if Object, then a stateObj is expected, will reload the state found in stateObj, and any children.\n *\n * @returns {promise} A promise representing the state of the new transition. See\n * {@link ui.router.state.$state#methods_go $state.go}.\n */\n $state.transitionTo = function transitionTo(to, toParams, options) {\n toParams = toParams || {};\n options = extend({\n location: true, inherit: false, relative: null, notify: true, reload: false, $retry: false\n }, options || {});\n\n var from = $state.$current, fromParams = $state.params, fromPath = from.path;\n var evt, toState = findState(to, options.relative);\n\n // Store the hash param for later (since it will be stripped out by various methods)\n var hash = toParams['#'];\n\n if (!isDefined(toState)) {\n var redirect = { to: to, toParams: toParams, options: options };\n var redirectResult = handleRedirect(redirect, from.self, fromParams, options);\n\n if (redirectResult) {\n return redirectResult;\n }\n\n // Always retry once if the $stateNotFound was not prevented\n // (handles either redirect changed or state lazy-definition)\n to = redirect.to;\n toParams = redirect.toParams;\n options = redirect.options;\n toState = findState(to, options.relative);\n\n if (!isDefined(toState)) {\n if (!options.relative) throw new Error(\"No such state '\" + to + \"'\");\n throw new Error(\"Could not resolve '\" + to + \"' from state '\" + options.relative + \"'\");\n }\n }\n if (toState[abstractKey]) throw new Error(\"Cannot transition to abstract state '\" + to + \"'\");\n if (options.inherit) toParams = inheritParams($stateParams, toParams || {}, $state.$current, toState);\n if (!toState.params.$$validates(toParams)) return TransitionFailed;\n\n toParams = toState.params.$$values(toParams);\n to = toState;\n\n var toPath = to.path;\n\n // Starting from the root of the path, keep all levels that haven't changed\n var keep = 0, state = toPath[keep], locals = root.locals, toLocals = [];\n\n if (!options.reload) {\n while (state && state === fromPath[keep] && state.ownParams.$$equals(toParams, fromParams)) {\n locals = toLocals[keep] = state.locals;\n keep++;\n state = toPath[keep];\n }\n } else if (isString(options.reload) || isObject(options.reload)) {\n if (isObject(options.reload) && !options.reload.name) {\n throw new Error('Invalid reload state object');\n }\n \n var reloadState = options.reload === true ? fromPath[0] : findState(options.reload);\n if (options.reload && !reloadState) {\n throw new Error(\"No such reload state '\" + (isString(options.reload) ? options.reload : options.reload.name) + \"'\");\n }\n\n while (state && state === fromPath[keep] && state !== reloadState) {\n locals = toLocals[keep] = state.locals;\n keep++;\n state = toPath[keep];\n }\n }\n\n // If we're going to the same state and all locals are kept, we've got nothing to do.\n // But clear 'transition', as we still want to cancel any other pending transitions.\n // TODO: We may not want to bump 'transition' if we're called from a location change\n // that we've initiated ourselves, because we might accidentally abort a legitimate\n // transition initiated from code?\n if (shouldSkipReload(to, toParams, from, fromParams, locals, options)) {\n if (hash) toParams['#'] = hash;\n $state.params = toParams;\n copy($state.params, $stateParams);\n copy(filterByKeys(to.params.$$keys(), $stateParams), to.locals.globals.$stateParams);\n if (options.location && to.navigable && to.navigable.url) {\n $urlRouter.push(to.navigable.url, toParams, {\n $$avoidResync: true, replace: options.location === 'replace'\n });\n $urlRouter.update(true);\n }\n $state.transition = null;\n return $q.when($state.current);\n }\n\n // Filter parameters before we pass them to event handlers etc.\n toParams = filterByKeys(to.params.$$keys(), toParams || {});\n \n // Re-add the saved hash before we start returning things or broadcasting $stateChangeStart\n if (hash) toParams['#'] = hash;\n \n // Broadcast start event and cancel the transition if requested\n if (options.notify) {\n /**\n * @ngdoc event\n * @name ui.router.state.$state#$stateChangeStart\n * @eventOf ui.router.state.$state\n * @eventType broadcast on root scope\n * @description\n * Fired when the state transition **begins**. You can use `event.preventDefault()`\n * to prevent the transition from happening and then the transition promise will be\n * rejected with a `'transition prevented'` value.\n *\n * @param {Object} event Event object.\n * @param {State} toState The state being transitioned to.\n * @param {Object} toParams The params supplied to the `toState`.\n * @param {State} fromState The current state, pre-transition.\n * @param {Object} fromParams The params supplied to the `fromState`.\n *\n * @example\n *\n *
\n         * $rootScope.$on('$stateChangeStart',\n         * function(event, toState, toParams, fromState, fromParams){\n         *     event.preventDefault();\n         *     // transitionTo() promise will be rejected with\n         *     // a 'transition prevented' error\n         * })\n         * 
\n */\n if ($rootScope.$broadcast('$stateChangeStart', to.self, toParams, from.self, fromParams, options).defaultPrevented) {\n $rootScope.$broadcast('$stateChangeCancel', to.self, toParams, from.self, fromParams);\n //Don't update and resync url if there's been a new transition started. see issue #2238, #600\n if ($state.transition == null) $urlRouter.update();\n return TransitionPrevented;\n }\n }\n\n // Resolve locals for the remaining states, but don't update any global state just\n // yet -- if anything fails to resolve the current state needs to remain untouched.\n // We also set up an inheritance chain for the locals here. This allows the view directive\n // to quickly look up the correct definition for each view in the current state. Even\n // though we create the locals object itself outside resolveState(), it is initially\n // empty and gets filled asynchronously. We need to keep track of the promise for the\n // (fully resolved) current locals, and pass this down the chain.\n var resolved = $q.when(locals);\n\n for (var l = keep; l < toPath.length; l++, state = toPath[l]) {\n locals = toLocals[l] = inherit(locals);\n resolved = resolveState(state, toParams, state === to, resolved, locals, options);\n }\n\n // Once everything is resolved, we are ready to perform the actual transition\n // and return a promise for the new state. We also keep track of what the\n // current promise is, so that we can detect overlapping transitions and\n // keep only the outcome of the last transition.\n var transition = $state.transition = resolved.then(function () {\n var l, entering, exiting;\n\n if ($state.transition !== transition) {\n $rootScope.$broadcast('$stateChangeCancel', to.self, toParams, from.self, fromParams);\n return TransitionSuperseded;\n }\n\n // Exit 'from' states not kept\n for (l = fromPath.length - 1; l >= keep; l--) {\n exiting = fromPath[l];\n if (exiting.self.onExit) {\n $injector.invoke(exiting.self.onExit, exiting.self, exiting.locals.globals);\n }\n exiting.locals = null;\n }\n\n // Enter 'to' states not kept\n for (l = keep; l < toPath.length; l++) {\n entering = toPath[l];\n entering.locals = toLocals[l];\n if (entering.self.onEnter) {\n $injector.invoke(entering.self.onEnter, entering.self, entering.locals.globals);\n }\n }\n\n // Run it again, to catch any transitions in callbacks\n if ($state.transition !== transition) {\n $rootScope.$broadcast('$stateChangeCancel', to.self, toParams, from.self, fromParams);\n return TransitionSuperseded;\n }\n\n // Update globals in $state\n $state.$current = to;\n $state.current = to.self;\n $state.params = toParams;\n copy($state.params, $stateParams);\n $state.transition = null;\n\n if (options.location && to.navigable) {\n $urlRouter.push(to.navigable.url, to.navigable.locals.globals.$stateParams, {\n $$avoidResync: true, replace: options.location === 'replace'\n });\n }\n\n if (options.notify) {\n /**\n * @ngdoc event\n * @name ui.router.state.$state#$stateChangeSuccess\n * @eventOf ui.router.state.$state\n * @eventType broadcast on root scope\n * @description\n * Fired once the state transition is **complete**.\n *\n * @param {Object} event Event object.\n * @param {State} toState The state being transitioned to.\n * @param {Object} toParams The params supplied to the `toState`.\n * @param {State} fromState The current state, pre-transition.\n * @param {Object} fromParams The params supplied to the `fromState`.\n */\n $rootScope.$broadcast('$stateChangeSuccess', to.self, toParams, from.self, fromParams);\n }\n $urlRouter.update(true);\n\n return $state.current;\n }).then(null, function (error) {\n // propagate TransitionSuperseded error without emitting $stateChangeCancel\n // as it was already emitted in the success handler above\n if (error === TransitionSupersededError) return TransitionSuperseded;\n\n if ($state.transition !== transition) {\n $rootScope.$broadcast('$stateChangeCancel', to.self, toParams, from.self, fromParams);\n return TransitionSuperseded;\n }\n\n $state.transition = null;\n /**\n * @ngdoc event\n * @name ui.router.state.$state#$stateChangeError\n * @eventOf ui.router.state.$state\n * @eventType broadcast on root scope\n * @description\n * Fired when an **error occurs** during transition. It's important to note that if you\n * have any errors in your resolve functions (javascript errors, non-existent services, etc)\n * they will not throw traditionally. You must listen for this $stateChangeError event to\n * catch **ALL** errors.\n *\n * @param {Object} event Event object.\n * @param {State} toState The state being transitioned to.\n * @param {Object} toParams The params supplied to the `toState`.\n * @param {State} fromState The current state, pre-transition.\n * @param {Object} fromParams The params supplied to the `fromState`.\n * @param {Error} error The resolve error object.\n */\n evt = $rootScope.$broadcast('$stateChangeError', to.self, toParams, from.self, fromParams, error);\n\n if (!evt.defaultPrevented) {\n $urlRouter.update();\n }\n\n return $q.reject(error);\n });\n\n silenceUncaughtInPromise(transition);\n return transition;\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#is\n * @methodOf ui.router.state.$state\n *\n * @description\n * Similar to {@link ui.router.state.$state#methods_includes $state.includes},\n * but only checks for the full state name. If params is supplied then it will be\n * tested for strict equality against the current active params object, so all params\n * must match with none missing and no extras.\n *\n * @example\n *
\n     * $state.$current.name = 'contacts.details.item';\n     *\n     * // absolute name\n     * $state.is('contact.details.item'); // returns true\n     * $state.is(contactDetailItemStateObject); // returns true\n     *\n     * // relative name (. and ^), typically from a template\n     * // E.g. from the 'contacts.details' template\n     * 
Item
\n *
\n *\n * @param {string|object} stateOrName The state name (absolute or relative) or state object you'd like to check.\n * @param {object=} params A param object, e.g. `{sectionId: section.id}`, that you'd like\n * to test against the current active state.\n * @param {object=} options An options object. The options are:\n *\n * - **`relative`** - {string|object} - If `stateOrName` is a relative state name and `options.relative` is set, .is will\n * test relative to `options.relative` state (or name).\n *\n * @returns {boolean} Returns true if it is the state.\n */\n $state.is = function is(stateOrName, params, options) {\n options = extend({ relative: $state.$current }, options || {});\n var state = findState(stateOrName, options.relative);\n\n if (!isDefined(state)) { return undefined; }\n if ($state.$current !== state) { return false; }\n\n return !params || objectKeys(params).reduce(function(acc, key) {\n var paramDef = state.params[key];\n return acc && (!paramDef || paramDef.type.equals($stateParams[key], params[key]));\n }, true);\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#includes\n * @methodOf ui.router.state.$state\n *\n * @description\n * A method to determine if the current active state is equal to or is the child of the\n * state stateName. If any params are passed then they will be tested for a match as well.\n * Not all the parameters need to be passed, just the ones you'd like to test for equality.\n *\n * @example\n * Partial and relative names\n *
\n     * $state.$current.name = 'contacts.details.item';\n     *\n     * // Using partial names\n     * $state.includes(\"contacts\"); // returns true\n     * $state.includes(\"contacts.details\"); // returns true\n     * $state.includes(\"contacts.details.item\"); // returns true\n     * $state.includes(\"contacts.list\"); // returns false\n     * $state.includes(\"about\"); // returns false\n     *\n     * // Using relative names (. and ^), typically from a template\n     * // E.g. from the 'contacts.details' template\n     * 
Item
\n *
\n *\n * Basic globbing patterns\n *
\n     * $state.$current.name = 'contacts.details.item.url';\n     *\n     * $state.includes(\"*.details.*.*\"); // returns true\n     * $state.includes(\"*.details.**\"); // returns true\n     * $state.includes(\"**.item.**\"); // returns true\n     * $state.includes(\"*.details.item.url\"); // returns true\n     * $state.includes(\"*.details.*.url\"); // returns true\n     * $state.includes(\"*.details.*\"); // returns false\n     * $state.includes(\"item.**\"); // returns false\n     * 
\n *\n * @param {string} stateOrName A partial name, relative name, or glob pattern\n * to be searched for within the current state name.\n * @param {object=} params A param object, e.g. `{sectionId: section.id}`,\n * that you'd like to test against the current active state.\n * @param {object=} options An options object. The options are:\n *\n * - **`relative`** - {string|object=} - If `stateOrName` is a relative state reference and `options.relative` is set,\n * .includes will test relative to `options.relative` state (or name).\n *\n * @returns {boolean} Returns true if it does include the state\n */\n $state.includes = function includes(stateOrName, params, options) {\n options = extend({ relative: $state.$current }, options || {});\n if (isString(stateOrName) && isGlob(stateOrName)) {\n if (!doesStateMatchGlob(stateOrName)) {\n return false;\n }\n stateOrName = $state.$current.name;\n }\n\n var state = findState(stateOrName, options.relative);\n if (!isDefined(state)) { return undefined; }\n if (!isDefined($state.$current.includes[state.name])) { return false; }\n if (!params) { return true; }\n\n var keys = objectKeys(params);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i], paramDef = state.params[key];\n if (paramDef && !paramDef.type.equals($stateParams[key], params[key])) {\n return false;\n }\n }\n\n return objectKeys(params).reduce(function(acc, key) {\n var paramDef = state.params[key];\n return acc && !paramDef || paramDef.type.equals($stateParams[key], params[key]);\n }, true);\n };\n\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#href\n * @methodOf ui.router.state.$state\n *\n * @description\n * A url generation method that returns the compiled url for the given state populated with the given params.\n *\n * @example\n *
\n     * expect($state.href(\"about.person\", { person: \"bob\" })).toEqual(\"/about/bob\");\n     * 
\n *\n * @param {string|object} stateOrName The state name or state object you'd like to generate a url from.\n * @param {object=} params An object of parameter values to fill the state's required parameters.\n * @param {object=} options Options object. The options are:\n *\n * - **`lossy`** - {boolean=true} - If true, and if there is no url associated with the state provided in the\n * first parameter, then the constructed href url will be built from the first navigable ancestor (aka\n * ancestor with a valid url).\n * - **`inherit`** - {boolean=true}, If `true` will inherit url parameters from current url.\n * - **`relative`** - {object=$state.$current}, When transitioning with relative path (e.g '^'), \n * defines which state to be relative from.\n * - **`absolute`** - {boolean=false}, If true will generate an absolute url, e.g. \"http://www.example.com/fullurl\".\n * \n * @returns {string} compiled state url\n */\n $state.href = function href(stateOrName, params, options) {\n options = extend({\n lossy: true,\n inherit: true,\n absolute: false,\n relative: $state.$current\n }, options || {});\n\n var state = findState(stateOrName, options.relative);\n\n if (!isDefined(state)) return null;\n if (options.inherit) params = inheritParams($stateParams, params || {}, $state.$current, state);\n \n var nav = (state && options.lossy) ? state.navigable : state;\n\n if (!nav || nav.url === undefined || nav.url === null) {\n return null;\n }\n return $urlRouter.href(nav.url, filterByKeys(state.params.$$keys().concat('#'), params || {}), {\n absolute: options.absolute\n });\n };\n\n /**\n * @ngdoc function\n * @name ui.router.state.$state#get\n * @methodOf ui.router.state.$state\n *\n * @description\n * Returns the state configuration object for any specific state or all states.\n *\n * @param {string|object=} stateOrName (absolute or relative) If provided, will only get the config for\n * the requested state. If not provided, returns an array of ALL state configs.\n * @param {string|object=} context When stateOrName is a relative state reference, the state will be retrieved relative to context.\n * @returns {Object|Array} State configuration object or array of all objects.\n */\n $state.get = function (stateOrName, context) {\n if (arguments.length === 0) return map(objectKeys(states), function(name) { return states[name].self; });\n var state = findState(stateOrName, context || $state.$current);\n return (state && state.self) ? state.self : null;\n };\n\n function resolveState(state, params, paramsAreFiltered, inherited, dst, options) {\n // Make a restricted $stateParams with only the parameters that apply to this state if\n // necessary. In addition to being available to the controller and onEnter/onExit callbacks,\n // we also need $stateParams to be available for any $injector calls we make during the\n // dependency resolution process.\n var $stateParams = (paramsAreFiltered) ? params : filterByKeys(state.params.$$keys(), params);\n var locals = { $stateParams: $stateParams };\n\n // Resolve 'global' dependencies for the state, i.e. those not specific to a view.\n // We're also including $stateParams in this; that way the parameters are restricted\n // to the set that should be visible to the state, and are independent of when we update\n // the global $state and $stateParams values.\n dst.resolve = $resolve.resolve(state.resolve, locals, dst.resolve, state);\n var promises = [dst.resolve.then(function (globals) {\n dst.globals = globals;\n })];\n if (inherited) promises.push(inherited);\n\n function resolveViews() {\n var viewsPromises = [];\n\n // Resolve template and dependencies for all views.\n forEach(state.views, function (view, name) {\n var injectables = (view.resolve && view.resolve !== state.resolve ? view.resolve : {});\n injectables.$template = [ function () {\n return $view.load(name, { view: view, locals: dst.globals, params: $stateParams, notify: options.notify }) || '';\n }];\n\n viewsPromises.push($resolve.resolve(injectables, dst.globals, dst.resolve, state).then(function (result) {\n // References to the controller (only instantiated at link time)\n if (isFunction(view.controllerProvider) || isArray(view.controllerProvider)) {\n var injectLocals = angular.extend({}, injectables, dst.globals);\n result.$$controller = $injector.invoke(view.controllerProvider, null, injectLocals);\n } else {\n result.$$controller = view.controller;\n }\n // Provide access to the state itself for internal use\n result.$$state = state;\n result.$$controllerAs = view.controllerAs;\n result.$$resolveAs = view.resolveAs;\n dst[name] = result;\n }));\n });\n\n return $q.all(viewsPromises).then(function(){\n return dst.globals;\n });\n }\n\n // Wait for all the promises and then return the activation object\n return $q.all(promises).then(resolveViews).then(function (values) {\n return dst;\n });\n }\n\n return $state;\n }\n\n function shouldSkipReload(to, toParams, from, fromParams, locals, options) {\n // Return true if there are no differences in non-search (path/object) params, false if there are differences\n function nonSearchParamsEqual(fromAndToState, fromParams, toParams) {\n // Identify whether all the parameters that differ between `fromParams` and `toParams` were search params.\n function notSearchParam(key) {\n return fromAndToState.params[key].location != \"search\";\n }\n var nonQueryParamKeys = fromAndToState.params.$$keys().filter(notSearchParam);\n var nonQueryParams = pick.apply({}, [fromAndToState.params].concat(nonQueryParamKeys));\n var nonQueryParamSet = new $$UMFP.ParamSet(nonQueryParams);\n return nonQueryParamSet.$$equals(fromParams, toParams);\n }\n\n // If reload was not explicitly requested\n // and we're transitioning to the same state we're already in\n // and the locals didn't change\n // or they changed in a way that doesn't merit reloading\n // (reloadOnParams:false, or reloadOnSearch.false and only search params changed)\n // Then return true.\n if (!options.reload && to === from &&\n (locals === from.locals || (to.self.reloadOnSearch === false && nonSearchParamsEqual(from, fromParams, toParams)))) {\n return true;\n }\n }\n}\n\nangular.module('ui.router.state')\n .factory('$stateParams', function () { return {}; })\n .constant(\"$state.runtime\", { autoinject: true })\n .provider('$state', $StateProvider)\n // Inject $state to initialize when entering runtime. #2574\n .run(['$injector', function ($injector) {\n // Allow tests (stateSpec.js) to turn this off by defining this constant\n if ($injector.get(\"$state.runtime\").autoinject) {\n $injector.get('$state');\n }\n }]);\n\n\n$ViewProvider.$inject = [];\nfunction $ViewProvider() {\n\n this.$get = $get;\n /**\n * @ngdoc object\n * @name ui.router.state.$view\n *\n * @requires ui.router.util.$templateFactory\n * @requires $rootScope\n *\n * @description\n *\n */\n $get.$inject = ['$rootScope', '$templateFactory'];\n function $get( $rootScope, $templateFactory) {\n return {\n // $view.load('full.viewName', { template: ..., controller: ..., resolve: ..., async: false, params: ... })\n /**\n * @ngdoc function\n * @name ui.router.state.$view#load\n * @methodOf ui.router.state.$view\n *\n * @description\n *\n * @param {string} name name\n * @param {object} options option object.\n */\n load: function load(name, options) {\n var result, defaults = {\n template: null, controller: null, view: null, locals: null, notify: true, async: true, params: {}\n };\n options = extend(defaults, options);\n\n if (options.view) {\n result = $templateFactory.fromConfig(options.view, options.params, options.locals);\n }\n return result;\n }\n };\n }\n}\n\nangular.module('ui.router.state').provider('$view', $ViewProvider);\n\n/**\n * @ngdoc object\n * @name ui.router.state.$uiViewScrollProvider\n *\n * @description\n * Provider that returns the {@link ui.router.state.$uiViewScroll} service function.\n */\nfunction $ViewScrollProvider() {\n\n var useAnchorScroll = false;\n\n /**\n * @ngdoc function\n * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll\n * @methodOf ui.router.state.$uiViewScrollProvider\n *\n * @description\n * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for\n * scrolling based on the url anchor.\n */\n this.useAnchorScroll = function () {\n useAnchorScroll = true;\n };\n\n /**\n * @ngdoc object\n * @name ui.router.state.$uiViewScroll\n *\n * @requires $anchorScroll\n * @requires $timeout\n *\n * @description\n * When called with a jqLite element, it scrolls the element into view (after a\n * `$timeout` so the DOM has time to refresh).\n *\n * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor,\n * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}.\n */\n this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) {\n if (useAnchorScroll) {\n return $anchorScroll;\n }\n\n return function ($element) {\n return $timeout(function () {\n $element[0].scrollIntoView();\n }, 0, false);\n };\n }];\n}\n\nangular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider);\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-view\n *\n * @requires ui.router.state.$state\n * @requires $compile\n * @requires $controller\n * @requires $injector\n * @requires ui.router.state.$uiViewScroll\n * @requires $document\n *\n * @restrict ECA\n *\n * @description\n * The ui-view directive tells $state where to place your templates.\n *\n * @param {string=} name A view name. The name should be unique amongst the other views in the\n * same state. You can have views of the same name that live in different states.\n *\n * @param {string=} autoscroll It allows you to set the scroll behavior of the browser window\n * when a view is populated. By default, $anchorScroll is overridden by ui-router's custom scroll\n * service, {@link ui.router.state.$uiViewScroll}. This custom service let's you\n * scroll ui-view elements into view when they are populated during a state activation.\n *\n * *Note: To revert back to old [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll)\n * functionality, call `$uiViewScrollProvider.useAnchorScroll()`.*\n *\n * @param {string=} onload Expression to evaluate whenever the view updates.\n *\n * @example\n * A view can be unnamed or named.\n *
\n * \n * 
\n *\n * \n *
\n *
\n *\n * You can only have one unnamed view within any template (or root html). If you are only using a\n * single view and it is unnamed then you can populate it like so:\n *
\n * 
\n * $stateProvider.state(\"home\", {\n * template: \"

HELLO!

\"\n * })\n *
\n *\n * The above is a convenient shortcut equivalent to specifying your view explicitly with the {@link ui.router.state.$stateProvider#methods_state `views`}\n * config property, by name, in this case an empty name:\n *
\n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"\": {\n *       template: \"

HELLO!

\"\n * }\n * } \n * })\n *
\n *\n * But typically you'll only use the views property if you name your view or have more than one view\n * in the same template. There's not really a compelling reason to name a view if its the only one,\n * but you could if you wanted, like so:\n *
\n * 
\n *
\n *
\n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"main\": {\n *       template: \"

HELLO!

\"\n * }\n * } \n * })\n *
\n *\n * Really though, you'll use views to set up multiple views:\n *
\n * 
\n *
\n *
\n *
\n *\n *
\n * $stateProvider.state(\"home\", {\n *   views: {\n *     \"\": {\n *       template: \"

HELLO!

\"\n * },\n * \"chart\": {\n * template: \"\"\n * },\n * \"data\": {\n * template: \"\"\n * }\n * } \n * })\n *
\n *\n * Examples for `autoscroll`:\n *\n *
\n * \n * \n *\n * \n * \n * \n * \n * 
\n *\n * Resolve data:\n *\n * The resolved data from the state's `resolve` block is placed on the scope as `$resolve` (this\n * can be customized using [[ViewDeclaration.resolveAs]]). This can be then accessed from the template.\n *\n * Note that when `controllerAs` is being used, `$resolve` is set on the controller instance *after* the\n * controller is instantiated. The `$onInit()` hook can be used to perform initialization code which\n * depends on `$resolve` data.\n *\n * Example usage of $resolve in a view template\n *
\n * $stateProvider.state('home', {\n *   template: '',\n *   resolve: {\n *     user: function(UserService) { return UserService.fetchUser(); }\n *   }\n * });\n * 
\n */\n$ViewDirective.$inject = ['$state', '$injector', '$uiViewScroll', '$interpolate', '$q'];\nfunction $ViewDirective( $state, $injector, $uiViewScroll, $interpolate, $q) {\n\n function getService() {\n return ($injector.has) ? function(service) {\n return $injector.has(service) ? $injector.get(service) : null;\n } : function(service) {\n try {\n return $injector.get(service);\n } catch (e) {\n return null;\n }\n };\n }\n\n var service = getService(),\n $animator = service('$animator'),\n $animate = service('$animate');\n\n // Returns a set of DOM manipulation functions based on which Angular version\n // it should use\n function getRenderer(attrs, scope) {\n var statics = function() {\n return {\n enter: function (element, target, cb) { target.after(element); cb(); },\n leave: function (element, cb) { element.remove(); cb(); }\n };\n };\n\n if ($animate) {\n return {\n enter: function(element, target, cb) {\n if (angular.version.minor > 2) {\n $animate.enter(element, null, target).then(cb);\n } else {\n $animate.enter(element, null, target, cb);\n }\n },\n leave: function(element, cb) {\n if (angular.version.minor > 2) {\n $animate.leave(element).then(cb);\n } else {\n $animate.leave(element, cb);\n }\n }\n };\n }\n\n if ($animator) {\n var animate = $animator && $animator(scope, attrs);\n\n return {\n enter: function(element, target, cb) {animate.enter(element, null, target); cb(); },\n leave: function(element, cb) { animate.leave(element); cb(); }\n };\n }\n\n return statics();\n }\n\n var directive = {\n restrict: 'ECA',\n terminal: true,\n priority: 400,\n transclude: 'element',\n compile: function (tElement, tAttrs, $transclude) {\n return function (scope, $element, attrs) {\n var previousEl, currentEl, currentScope, latestLocals,\n onloadExp = attrs.onload || '',\n autoScrollExp = attrs.autoscroll,\n renderer = getRenderer(attrs, scope),\n inherited = $element.inheritedData('$uiView');\n\n scope.$on('$stateChangeSuccess', function() {\n updateView(false);\n });\n\n updateView(true);\n\n function cleanupLastView() {\n if (previousEl) {\n previousEl.remove();\n previousEl = null;\n }\n\n if (currentScope) {\n currentScope.$destroy();\n currentScope = null;\n }\n\n if (currentEl) {\n var $uiViewData = currentEl.data('$uiViewAnim');\n renderer.leave(currentEl, function() {\n $uiViewData.$$animLeave.resolve();\n previousEl = null;\n });\n\n previousEl = currentEl;\n currentEl = null;\n }\n }\n\n function updateView(firstTime) {\n var newScope,\n name = getUiViewName(scope, attrs, $element, $interpolate),\n previousLocals = name && $state.$current && $state.$current.locals[name];\n\n if (!firstTime && previousLocals === latestLocals) return; // nothing to do\n newScope = scope.$new();\n latestLocals = $state.$current.locals[name];\n\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoading\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description\n *\n * Fired once the view **begins loading**, *before* the DOM is rendered.\n *\n * @param {Object} event Event object.\n * @param {string} viewName Name of the view.\n */\n newScope.$emit('$viewContentLoading', name);\n\n var clone = $transclude(newScope, function(clone) {\n var animEnter = $q.defer(), animLeave = $q.defer();\n var viewAnimData = {\n $animEnter: animEnter.promise,\n $animLeave: animLeave.promise,\n $$animLeave: animLeave\n };\n\n clone.data('$uiViewAnim', viewAnimData);\n renderer.enter(clone, $element, function onUiViewEnter() {\n animEnter.resolve();\n if(currentScope) {\n currentScope.$emit('$viewContentAnimationEnded');\n }\n\n if (angular.isDefined(autoScrollExp) && !autoScrollExp || scope.$eval(autoScrollExp)) {\n $uiViewScroll(clone);\n }\n });\n cleanupLastView();\n });\n\n currentEl = clone;\n currentScope = newScope;\n /**\n * @ngdoc event\n * @name ui.router.state.directive:ui-view#$viewContentLoaded\n * @eventOf ui.router.state.directive:ui-view\n * @eventType emits on ui-view directive scope\n * @description\n * Fired once the view is **loaded**, *after* the DOM is rendered.\n *\n * @param {Object} event Event object.\n * @param {string} viewName Name of the view.\n */\n currentScope.$emit('$viewContentLoaded', name);\n currentScope.$eval(onloadExp);\n }\n };\n }\n };\n\n return directive;\n}\n\n$ViewDirectiveFill.$inject = ['$compile', '$controller', '$state', '$interpolate'];\nfunction $ViewDirectiveFill ( $compile, $controller, $state, $interpolate) {\n return {\n restrict: 'ECA',\n priority: -400,\n compile: function (tElement) {\n var initial = tElement.html();\n if (tElement.empty) {\n tElement.empty();\n } else {\n // ng 1.0.0 doesn't have empty(), which cleans up data and handlers\n tElement[0].innerHTML = null;\n }\n\n return function (scope, $element, attrs) {\n var current = $state.$current,\n name = getUiViewName(scope, attrs, $element, $interpolate),\n locals = current && current.locals[name];\n\n if (! locals) {\n $element.html(initial);\n $compile($element.contents())(scope);\n return;\n }\n\n $element.data('$uiView', { name: name, state: locals.$$state });\n $element.html(locals.$template ? locals.$template : initial);\n\n var resolveData = angular.extend({}, locals);\n scope[locals.$$resolveAs] = resolveData;\n\n var link = $compile($element.contents());\n\n if (locals.$$controller) {\n locals.$scope = scope;\n locals.$element = $element;\n var controller = $controller(locals.$$controller, locals);\n if (locals.$$controllerAs) {\n scope[locals.$$controllerAs] = controller;\n scope[locals.$$controllerAs][locals.$$resolveAs] = resolveData;\n }\n if (isFunction(controller.$onInit)) controller.$onInit();\n $element.data('$ngControllerController', controller);\n $element.children().data('$ngControllerController', controller);\n }\n\n link(scope);\n };\n }\n };\n}\n\n/**\n * Shared ui-view code for both directives:\n * Given scope, element, and its attributes, return the view's name\n */\nfunction getUiViewName(scope, attrs, element, $interpolate) {\n var name = $interpolate(attrs.uiView || attrs.name || '')(scope);\n var uiViewCreatedBy = element.inheritedData('$uiView');\n return name.indexOf('@') >= 0 ? name : (name + '@' + (uiViewCreatedBy ? uiViewCreatedBy.state.name : ''));\n}\n\nangular.module('ui.router.state').directive('uiView', $ViewDirective);\nangular.module('ui.router.state').directive('uiView', $ViewDirectiveFill);\n\nfunction parseStateRef(ref, current) {\n var preparsed = ref.match(/^\\s*({[^}]*})\\s*$/), parsed;\n if (preparsed) ref = current + '(' + preparsed[1] + ')';\n parsed = ref.replace(/\\n/g, \" \").match(/^([^(]+?)\\s*(\\((.*)\\))?$/);\n if (!parsed || parsed.length !== 4) throw new Error(\"Invalid state ref '\" + ref + \"'\");\n return { state: parsed[1], paramExpr: parsed[3] || null };\n}\n\nfunction stateContext(el) {\n var stateData = el.parent().inheritedData('$uiView');\n\n if (stateData && stateData.state && stateData.state.name) {\n return stateData.state;\n }\n}\n\nfunction getTypeInfo(el) {\n // SVGAElement does not use the href attribute, but rather the 'xlinkHref' attribute.\n var isSvg = Object.prototype.toString.call(el.prop('href')) === '[object SVGAnimatedString]';\n var isForm = el[0].nodeName === \"FORM\";\n\n return {\n attr: isForm ? \"action\" : (isSvg ? 'xlink:href' : 'href'),\n isAnchor: el.prop(\"tagName\").toUpperCase() === \"A\",\n clickable: !isForm\n };\n}\n\nfunction clickHook(el, $state, $timeout, type, current) {\n return function(e) {\n var button = e.which || e.button, target = current();\n\n if (!(button > 1 || e.ctrlKey || e.metaKey || e.shiftKey || el.attr('target'))) {\n // HACK: This is to allow ng-clicks to be processed before the transition is initiated:\n var transition = $timeout(function() {\n $state.go(target.state, target.params, target.options);\n });\n e.preventDefault();\n\n // if the state has no URL, ignore one preventDefault from the directive.\n var ignorePreventDefaultCount = type.isAnchor && !target.href ? 1: 0;\n\n e.preventDefault = function() {\n if (ignorePreventDefaultCount-- <= 0) $timeout.cancel(transition);\n };\n }\n };\n}\n\nfunction defaultOpts(el, $state) {\n return { relative: stateContext(el) || $state.$current, inherit: true };\n}\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-sref\n *\n * @requires ui.router.state.$state\n * @requires $timeout\n *\n * @restrict A\n *\n * @description\n * A directive that binds a link (`` tag) to a state. If the state has an associated\n * URL, the directive will automatically generate & update the `href` attribute via\n * the {@link ui.router.state.$state#methods_href $state.href()} method. Clicking\n * the link will trigger a state transition with optional parameters.\n *\n * Also middle-clicking, right-clicking, and ctrl-clicking on the link will be\n * handled natively by the browser.\n *\n * You can also use relative state paths within ui-sref, just like the relative\n * paths passed to `$state.go()`. You just need to be aware that the path is relative\n * to the state that the link lives in, in other words the state that loaded the\n * template containing the link.\n *\n * You can specify options to pass to {@link ui.router.state.$state#methods_go $state.go()}\n * using the `ui-sref-opts` attribute. Options are restricted to `location`, `inherit`,\n * and `reload`.\n *\n * @example\n * Here's an example of how you'd use ui-sref and how it would compile. If you have the\n * following template:\n *
\n * Home | About | Next page\n *\n * \n * 
\n *\n * Then the compiled html would be (assuming Html5Mode is off and current state is contacts):\n *
\n * Home | About | Next page\n *\n * 
    \n *
  • \n * Joe\n *
  • \n *
  • \n * Alice\n *
  • \n *
  • \n * Bob\n *
  • \n *
\n *\n * Home\n *
\n *\n * @param {string} ui-sref 'stateName' can be any valid absolute or relative state\n * @param {Object} ui-sref-opts options to pass to {@link ui.router.state.$state#methods_go $state.go()}\n */\n$StateRefDirective.$inject = ['$state', '$timeout'];\nfunction $StateRefDirective($state, $timeout) {\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function(scope, element, attrs, uiSrefActive) {\n var ref = parseStateRef(attrs.uiSref, $state.current.name);\n var def = { state: ref.state, href: null, params: null };\n var type = getTypeInfo(element);\n var active = uiSrefActive[1] || uiSrefActive[0];\n var unlinkInfoFn = null;\n var hookFn;\n\n def.options = extend(defaultOpts(element, $state), attrs.uiSrefOpts ? scope.$eval(attrs.uiSrefOpts) : {});\n\n var update = function(val) {\n if (val) def.params = angular.copy(val);\n def.href = $state.href(ref.state, def.params, def.options);\n\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(ref.state, def.params);\n if (def.href !== null) attrs.$set(type.attr, def.href);\n };\n\n if (ref.paramExpr) {\n scope.$watch(ref.paramExpr, function(val) { if (val !== def.params) update(val); }, true);\n def.params = angular.copy(scope.$eval(ref.paramExpr));\n }\n update();\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, function() { return def; });\n element[element.on ? 'on' : 'bind'](\"click\", hookFn);\n scope.$on('$destroy', function() {\n element[element.off ? 'off' : 'unbind'](\"click\", hookFn);\n });\n }\n };\n}\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-state\n *\n * @requires ui.router.state.uiSref\n *\n * @restrict A\n *\n * @description\n * Much like ui-sref, but will accept named $scope properties to evaluate for a state definition,\n * params and override options.\n *\n * @param {string} ui-state 'stateName' can be any valid absolute or relative state\n * @param {Object} ui-state-params params to pass to {@link ui.router.state.$state#methods_href $state.href()}\n * @param {Object} ui-state-opts options to pass to {@link ui.router.state.$state#methods_go $state.go()}\n */\n$StateRefDynamicDirective.$inject = ['$state', '$timeout'];\nfunction $StateRefDynamicDirective($state, $timeout) {\n return {\n restrict: 'A',\n require: ['?^uiSrefActive', '?^uiSrefActiveEq'],\n link: function(scope, element, attrs, uiSrefActive) {\n var type = getTypeInfo(element);\n var active = uiSrefActive[1] || uiSrefActive[0];\n var group = [attrs.uiState, attrs.uiStateParams || null, attrs.uiStateOpts || null];\n var watch = '[' + group.map(function(val) { return val || 'null'; }).join(', ') + ']';\n var def = { state: null, params: null, options: null, href: null };\n var unlinkInfoFn = null;\n var hookFn;\n\n function runStateRefLink (group) {\n def.state = group[0]; def.params = group[1]; def.options = group[2];\n def.href = $state.href(def.state, def.params, def.options);\n\n if (unlinkInfoFn) unlinkInfoFn();\n if (active) unlinkInfoFn = active.$$addStateInfo(def.state, def.params);\n if (def.href) attrs.$set(type.attr, def.href);\n }\n\n scope.$watch(watch, runStateRefLink, true);\n runStateRefLink(scope.$eval(watch));\n\n if (!type.clickable) return;\n hookFn = clickHook(element, $state, $timeout, type, function() { return def; });\n element[element.on ? 'on' : 'bind'](\"click\", hookFn);\n scope.$on('$destroy', function() {\n element[element.off ? 'off' : 'unbind'](\"click\", hookFn);\n });\n }\n };\n}\n\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-sref-active\n *\n * @requires ui.router.state.$state\n * @requires ui.router.state.$stateParams\n * @requires $interpolate\n *\n * @restrict A\n *\n * @description\n * A directive working alongside ui-sref to add classes to an element when the\n * related ui-sref directive's state is active, and removing them when it is inactive.\n * The primary use-case is to simplify the special appearance of navigation menus\n * relying on `ui-sref`, by having the \"active\" state's menu button appear different,\n * distinguishing it from the inactive menu items.\n *\n * ui-sref-active can live on the same element as ui-sref or on a parent element. The first\n * ui-sref-active found at the same level or above the ui-sref will be used.\n *\n * Will activate when the ui-sref's target state or any child state is active. If you\n * need to activate only when the ui-sref target state is active and *not* any of\n * it's children, then you will use\n * {@link ui.router.state.directive:ui-sref-active-eq ui-sref-active-eq}\n *\n * @example\n * Given the following template:\n *
\n * \n * 
\n *\n *\n * When the app state is \"app.user\" (or any children states), and contains the state parameter \"user\" with value \"bilbobaggins\",\n * the resulting HTML will appear as (note the 'active' class):\n *
\n * \n * 
\n *\n * The class name is interpolated **once** during the directives link time (any further changes to the\n * interpolated value are ignored).\n *\n * Multiple classes may be specified in a space-separated format:\n *
\n * 
    \n *
  • \n * link\n *
  • \n *
\n *
\n *\n * It is also possible to pass ui-sref-active an expression that evaluates\n * to an object hash, whose keys represent active class names and whose\n * values represent the respective state names/globs.\n * ui-sref-active will match if the current active state **includes** any of\n * the specified state names/globs, even the abstract ones.\n *\n * @Example\n * Given the following template, with \"admin\" being an abstract state:\n *
\n * 
\n * Roles\n *
\n *
\n *\n * When the current state is \"admin.roles\" the \"active\" class will be applied\n * to both the
and elements. It is important to note that the state\n * names/globs passed to ui-sref-active shadow the state provided by ui-sref.\n */\n\n/**\n * @ngdoc directive\n * @name ui.router.state.directive:ui-sref-active-eq\n *\n * @requires ui.router.state.$state\n * @requires ui.router.state.$stateParams\n * @requires $interpolate\n *\n * @restrict A\n *\n * @description\n * The same as {@link ui.router.state.directive:ui-sref-active ui-sref-active} but will only activate\n * when the exact target state used in the `ui-sref` is active; no child states.\n *\n */\n$StateRefActiveDirective.$inject = ['$state', '$stateParams', '$interpolate'];\nfunction $StateRefActiveDirective($state, $stateParams, $interpolate) {\n return {\n restrict: \"A\",\n controller: ['$scope', '$element', '$attrs', '$timeout', function ($scope, $element, $attrs, $timeout) {\n var states = [], activeClasses = {}, activeEqClass, uiSrefActive;\n\n // There probably isn't much point in $observing this\n // uiSrefActive and uiSrefActiveEq share the same directive object with some\n // slight difference in logic routing\n activeEqClass = $interpolate($attrs.uiSrefActiveEq || '', false)($scope);\n\n try {\n uiSrefActive = $scope.$eval($attrs.uiSrefActive);\n } catch (e) {\n // Do nothing. uiSrefActive is not a valid expression.\n // Fall back to using $interpolate below\n }\n uiSrefActive = uiSrefActive || $interpolate($attrs.uiSrefActive || '', false)($scope);\n if (isObject(uiSrefActive)) {\n forEach(uiSrefActive, function(stateOrName, activeClass) {\n if (isString(stateOrName)) {\n var ref = parseStateRef(stateOrName, $state.current.name);\n addState(ref.state, $scope.$eval(ref.paramExpr), activeClass);\n }\n });\n }\n\n // Allow uiSref to communicate with uiSrefActive[Equals]\n this.$$addStateInfo = function (newState, newParams) {\n // we already got an explicit state provided by ui-sref-active, so we\n // shadow the one that comes from ui-sref\n if (isObject(uiSrefActive) && states.length > 0) {\n return;\n }\n var deregister = addState(newState, newParams, uiSrefActive);\n update();\n return deregister;\n };\n\n $scope.$on('$stateChangeSuccess', update);\n\n function addState(stateName, stateParams, activeClass) {\n var state = $state.get(stateName, stateContext($element));\n var stateHash = createStateHash(stateName, stateParams);\n\n var stateInfo = {\n state: state || { name: stateName },\n params: stateParams,\n hash: stateHash\n };\n\n states.push(stateInfo);\n activeClasses[stateHash] = activeClass;\n\n return function removeState() {\n var idx = states.indexOf(stateInfo);\n if (idx !== -1) states.splice(idx, 1);\n };\n }\n\n /**\n * @param {string} state\n * @param {Object|string} [params]\n * @return {string}\n */\n function createStateHash(state, params) {\n if (!isString(state)) {\n throw new Error('state should be a string');\n }\n if (isObject(params)) {\n return state + toJson(params);\n }\n params = $scope.$eval(params);\n if (isObject(params)) {\n return state + toJson(params);\n }\n return state;\n }\n\n // Update route state\n function update() {\n for (var i = 0; i < states.length; i++) {\n if (anyMatch(states[i].state, states[i].params)) {\n addClass($element, activeClasses[states[i].hash]);\n } else {\n removeClass($element, activeClasses[states[i].hash]);\n }\n\n if (exactMatch(states[i].state, states[i].params)) {\n addClass($element, activeEqClass);\n } else {\n removeClass($element, activeEqClass);\n }\n }\n }\n\n function addClass(el, className) { $timeout(function () { el.addClass(className); }); }\n function removeClass(el, className) { el.removeClass(className); }\n function anyMatch(state, params) { return $state.includes(state.name, params); }\n function exactMatch(state, params) { return $state.is(state.name, params); }\n\n update();\n }]\n };\n}\n\nangular.module('ui.router.state')\n .directive('uiSref', $StateRefDirective)\n .directive('uiSrefActive', $StateRefActiveDirective)\n .directive('uiSrefActiveEq', $StateRefActiveDirective)\n .directive('uiState', $StateRefDynamicDirective);\n\n/**\n * @ngdoc filter\n * @name ui.router.state.filter:isState\n *\n * @requires ui.router.state.$state\n *\n * @description\n * Translates to {@link ui.router.state.$state#methods_is $state.is(\"stateName\")}.\n */\n$IsStateFilter.$inject = ['$state'];\nfunction $IsStateFilter($state) {\n var isFilter = function (state, params) {\n return $state.is(state, params);\n };\n isFilter.$stateful = true;\n return isFilter;\n}\n\n/**\n * @ngdoc filter\n * @name ui.router.state.filter:includedByState\n *\n * @requires ui.router.state.$state\n *\n * @description\n * Translates to {@link ui.router.state.$state#methods_includes $state.includes('fullOrPartialStateName')}.\n */\n$IncludedByStateFilter.$inject = ['$state'];\nfunction $IncludedByStateFilter($state) {\n var includesFilter = function (state, params, options) {\n return $state.includes(state, params, options);\n };\n includesFilter.$stateful = true;\n return includesFilter;\n}\n\nangular.module('ui.router.state')\n .filter('isState', $IsStateFilter)\n .filter('includedByState', $IncludedByStateFilter);\n})(window, window.angular);","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(\n timeoutErrorMessage,\n config,\n config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return (typeof payload === 'object') && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar pkg = require('./../../package.json');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\n\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function(useSourceMap) {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\treturn this.map(function (item) {\n\t\t\tvar content = cssWithMappingToString(item, useSourceMap);\n\t\t\tif(item[2]) {\n\t\t\t\treturn \"@media \" + item[2] + \"{\" + content + \"}\";\n\t\t\t} else {\n\t\t\t\treturn content;\n\t\t\t}\n\t\t}).join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\nfunction cssWithMappingToString(item, useSourceMap) {\n\tvar content = item[1] || '';\n\tvar cssMapping = item[3];\n\tif (!cssMapping) {\n\t\treturn content;\n\t}\n\n\tif (useSourceMap && typeof btoa === 'function') {\n\t\tvar sourceMapping = toComment(cssMapping);\n\t\tvar sourceURLs = cssMapping.sources.map(function (source) {\n\t\t\treturn '/*# sourceURL=' + cssMapping.sourceRoot + source + ' */'\n\t\t});\n\n\t\treturn [content].concat(sourceURLs).concat([sourceMapping]).join('\\n');\n\t}\n\n\treturn [content].join('\\n');\n}\n\n// Adapted from convert-source-map (MIT)\nfunction toComment(sourceMap) {\n\t// eslint-disable-next-line no-undef\n\tvar base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));\n\tvar data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;\n\n\treturn '/*# ' + data + ' */';\n}\n","module.exports = function escape(url) {\n if (typeof url !== 'string') {\n return url\n }\n // If url is already wrapped in quotes, remove them\n if (/^['\"].*['\"]$/.test(url)) {\n url = url.slice(1, -1);\n }\n // Should url be wrapped?\n // See https://drafts.csswg.org/css-values-3/#urls\n if (/[\"'() \\t\\n]/.test(url)) {\n return '\"' + url.replace(/\"/g, '\\\\\"').replace(/\\n/g, '\\\\n') + '\"'\n }\n\n return url\n}\n","/*!\n * jQuery JavaScript Library v3.7.1\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-08-28T13:37Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.1\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t}\n\t\tif ( nodeType === 1 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t}\n\t\tif ( nodeType === 9 ) {\n\t\t\treturn elem.documentElement.textContent;\n\t\t}\n\t\tif ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors\n\t// (see trac-13936).\n\t// Limit the fix to IE & Edge Legacy; despite Edge 15+ implementing `matches`,\n\t// all IE 9+ and Edge Legacy versions implement `msMatchesSelector` as well.\n\tif ( documentElement.msMatchesSelector &&\n\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tpreferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented as part of\n// Sizzle so let's maintain them for now for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\nfind.tokenize = tokenize;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
\" ],\n\tcol: [ 2, \"\", \"
\" ],\n\ttr: [ 2, \"\", \"
\" ],\n\ttd: [ 3, \"\", \"
\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Re-enable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"box-sizing:content-box;border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is `display: block`\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"