{"version":3,"file":"js/index.60fcc218d24b074be9dc.js","mappings":"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ACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,KACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,IAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,IACV,EAAU,I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","sources":["webpack://sitecore-web-schreuderssport/webpack/runtime/load script","webpack://sitecore-web-schreuderssport/./scripts/modules/image-resize.js","webpack://sitecore-web-schreuderssport/./scripts/vendor/typeahead/typeahead.bundle.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/dist/js/npm.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/affix.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/alert.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/button.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/carousel.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/collapse.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/dropdown.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/modal.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/popover.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/scrollspy.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/tab.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/tooltip.js","webpack://sitecore-web-schreuderssport/./node_modules/bootstrap/js/transition.js","webpack://sitecore-web-schreuderssport/./node_modules/jquery/dist/jquery-exposed.js","webpack://sitecore-web-schreuderssport/./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack://sitecore-web-schreuderssport/./node_modules/jquery/dist/jquery.js","webpack://sitecore-web-schreuderssport/./node_modules/select2/dist/js/select2.js","webpack://sitecore-web-schreuderssport/webpack/bootstrap","webpack://sitecore-web-schreuderssport/webpack/runtime/amd define","webpack://sitecore-web-schreuderssport/webpack/runtime/compat get default export","webpack://sitecore-web-schreuderssport/webpack/runtime/define property getters","webpack://sitecore-web-schreuderssport/webpack/runtime/ensure chunk","webpack://sitecore-web-schreuderssport/webpack/runtime/get javascript chunk filename","webpack://sitecore-web-schreuderssport/webpack/runtime/get mini-css chunk filename","webpack://sitecore-web-schreuderssport/webpack/runtime/global","webpack://sitecore-web-schreuderssport/webpack/runtime/hasOwnProperty shorthand","webpack://sitecore-web-schreuderssport/webpack/runtime/make namespace object","webpack://sitecore-web-schreuderssport/webpack/runtime/publicPath","webpack://sitecore-web-schreuderssport/webpack/runtime/css loading","webpack://sitecore-web-schreuderssport/webpack/runtime/jsonp chunk loading","webpack://sitecore-web-schreuderssport/./scripts/utils/mobile-search-button.js","webpack://sitecore-web-schreuderssport/./scripts/modules/sidebar.js","webpack://sitecore-web-schreuderssport/./scripts/index.js","webpack://sitecore-web-schreuderssport/./scripts/main.js"],"sourcesContent":["var inProgress = {};\nvar dataWebpackPrefix = \"sitecore-web-schreuderssport:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// image-resizer.js\r\n\"use strict\";\r\n\r\nimport $ from 'jquery'; \r\n\r\nconst resizer = {\r\n defaults: {\r\n containerWidth: -1,\r\n maxHeight: -1,\r\n grid: true,\r\n centerCrop: false,\r\n ratio: -1,\r\n targetAttribute: \"src\",\r\n checkContainerHeight: false\r\n },\r\n options: null,\r\n currentOffset: null,\r\n rowImgs: null,\r\n maxHeight: null,\r\n setImageHeights: function () {\r\n for (var rowImgIdx in resizer.rowImgs) {\r\n if (resizer.rowImgs.hasOwnProperty(rowImgIdx)) {\r\n var rowImg = resizer.rowImgs[rowImgIdx];\r\n $(rowImg).attr(\"effective-height\", resizer.maxHeight.toString());\r\n resizer.processImage(rowImg);\r\n }\r\n }\r\n },\r\n processImage: function (image) {\r\n if (!resizer.options) {\r\n resizer.options = resizer.defaults;\r\n }\r\n const width = parseInt(image.attr(\"effective-width\"));\r\n const height = parseInt(image.attr(\"effective-height\"));\r\n let src = image.attr(\"data-src\");\r\n\r\n if (!src) {\r\n return;\r\n }\r\n\r\n const separator = src.indexOf(\"?\") === -1 ? \"?\" : \"&\";\r\n\r\n let newSrc = `${src}${separator}bc=ffffff&w=${width}&h=${height}`;\r\n if (image.attr(\"centerCrop\")) {\r\n newSrc += \"&useCustomFunctions=1¢erCrop=1\";\r\n }\r\n\r\n const { targetAttribute } = resizer.options; \r\n if (targetAttribute === \"src\") {\r\n image.attr(\"src\", newSrc)\r\n .attr(\"width\", width)\r\n .attr(\"height\", height);\r\n } else {\r\n image.attr(resizer.options.targetAttribute, newSrc);\r\n }\r\n },\r\n process: function (selector, options) {\r\n options = $.extend({}, resizer.defaults, options);\r\n resizer.options = options;\r\n\r\n resizer.currentOffset = -1;\r\n resizer.rowImgs = [];\r\n resizer.maxHeight = 0;\r\n\r\n $(selector).each(function () {\r\n var originalImgWidth = parseInt($(this).attr(\"data-width\"));\r\n var originalImgHeight = parseInt($(this).attr(\"data-height\"));\r\n var ratio;\r\n if (options.ratio !== -1) {\r\n ratio = options.ratio;\r\n } else {\r\n ratio = originalImgWidth / originalImgHeight;\r\n }\r\n\r\n if (options.grid) {\r\n var thisOffset = $(this).offset().top;\r\n if (thisOffset !== resizer.currentOffset) {\r\n if (resizer.currentOffset !== -1) {\r\n // Set previous heights now\r\n resizer.setImageHeights();\r\n\r\n resizer.rowImgs = [];\r\n resizer.maxHeight = 0;\r\n }\r\n\r\n resizer.currentOffset = thisOffset;\r\n }\r\n }\r\n\r\n if (options.centerCrop) {\r\n $(this).attr(\"centerCrop\", \"1\");\r\n }\r\n\r\n var effectiveWidth = options.containerWidth;\r\n\r\n var imageContainer = $(this).closest(\".image-container\");\r\n if (imageContainer.length === 0) {\r\n imageContainer = $(this).parent();\r\n }\r\n\r\n if (effectiveWidth === -1) {\r\n effectiveWidth = imageContainer.width();\r\n }\r\n\r\n if (effectiveWidth > originalImgWidth) {\r\n effectiveWidth = originalImgWidth;\r\n }\r\n\r\n var maxHeight = originalImgHeight;\r\n if (options.maxHeight !== -1) {\r\n maxHeight = Math.min(maxHeight, options.maxHeight);\r\n }\r\n\r\n if ($(this).is(\"[data-max-height]\")) {\r\n maxHeight = Math.min(maxHeight, parseInt($(this).attr('data-max-height')));\r\n }\r\n\r\n if (options.checkContainerHeight) {\r\n maxHeight = Math.min(maxHeight, imageContainer.height());\r\n }\r\n\r\n var effectiveHeight = parseInt(effectiveWidth / ratio);\r\n\r\n if (effectiveHeight > maxHeight) {\r\n effectiveHeight = maxHeight;\r\n effectiveWidth = parseInt(effectiveHeight * ratio);\r\n }\r\n\r\n $(this).attr(\"effective-width\", effectiveWidth.toString())\r\n .attr(\"effective-height\", effectiveHeight.toString());\r\n\r\n if (options.grid) {\r\n resizer.maxHeight = Math.max(resizer.maxHeight, effectiveHeight);\r\n resizer.rowImgs.push($(this));\r\n } else {\r\n resizer.processImage($(this));\r\n }\r\n });\r\n\r\n if (options.grid) {\r\n // Process any remaining images\r\n resizer.setImageHeights();\r\n }\r\n }\r\n};\r\n\r\nexport default resizer;\r\n\r\n ","/*!\r\n * typeahead.js 1.1.1\r\n * https://github.com/twitter/typeahead.js\r\n * Copyright 2013-2017 Twitter, Inc. and other contributors; Licensed MIT\r\n */\r\n\r\n(function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define([ \"jquery\" ], function(a0) {\r\n return root[\"Bloodhound\"] = factory(a0);\r\n });\r\n } else if (typeof module === \"object\" && module.exports) {\r\n module.exports = factory(require(\"jquery\"));\r\n } else {\r\n root[\"Bloodhound\"] = factory(root[\"jQuery\"]);\r\n }\r\n})(this, function($) {\r\n var _ = function() {\r\n \"use strict\";\r\n return {\r\n isMsie: function() {\r\n return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\r\n },\r\n isBlankString: function(str) {\r\n return !str || /^\\s*$/.test(str);\r\n },\r\n escapeRegExChars: function(str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\r\n },\r\n isString: function(obj) {\r\n return typeof obj === \"string\";\r\n },\r\n isNumber: function(obj) {\r\n return typeof obj === \"number\";\r\n },\r\n isArray: $.isArray,\r\n isFunction: $.isFunction,\r\n isObject: $.isPlainObject,\r\n isUndefined: function(obj) {\r\n return typeof obj === \"undefined\";\r\n },\r\n isElement: function(obj) {\r\n return !!(obj && obj.nodeType === 1);\r\n },\r\n isJQuery: function(obj) {\r\n return obj instanceof $;\r\n },\r\n toStr: function toStr(s) {\r\n return _.isUndefined(s) || s === null ? \"\" : s + \"\";\r\n },\r\n bind: $.proxy,\r\n each: function(collection, cb) {\r\n $.each(collection, reverseArgs);\r\n function reverseArgs(index, value) {\r\n return cb(value, index);\r\n }\r\n },\r\n map: $.map,\r\n filter: $.grep,\r\n every: function(obj, test) {\r\n var result = true;\r\n if (!obj) {\r\n return result;\r\n }\r\n $.each(obj, function(key, val) {\r\n if (!(result = test.call(null, val, key, obj))) {\r\n return false;\r\n }\r\n });\r\n return !!result;\r\n },\r\n some: function(obj, test) {\r\n var result = false;\r\n if (!obj) {\r\n return result;\r\n }\r\n $.each(obj, function(key, val) {\r\n if (result = test.call(null, val, key, obj)) {\r\n return false;\r\n }\r\n });\r\n return !!result;\r\n },\r\n mixin: $.extend,\r\n identity: function(x) {\r\n return x;\r\n },\r\n clone: function(obj) {\r\n return $.extend(true, {}, obj);\r\n },\r\n getIdGenerator: function() {\r\n var counter = 0;\r\n return function() {\r\n return counter++;\r\n };\r\n },\r\n templatify: function templatify(obj) {\r\n return $.isFunction(obj) ? obj : template;\r\n function template() {\r\n return String(obj);\r\n }\r\n },\r\n defer: function(fn) {\r\n setTimeout(fn, 0);\r\n },\r\n debounce: function(func, wait, immediate) {\r\n var timeout, result;\r\n return function() {\r\n var context = this, args = arguments, later, callNow;\r\n later = function() {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n }\r\n };\r\n callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n }\r\n return result;\r\n };\r\n },\r\n throttle: function(func, wait) {\r\n var context, args, timeout, result, previous, later;\r\n previous = 0;\r\n later = function() {\r\n previous = new Date();\r\n timeout = null;\r\n result = func.apply(context, args);\r\n };\r\n return function() {\r\n var now = new Date(), remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n previous = now;\r\n result = func.apply(context, args);\r\n } else if (!timeout) {\r\n timeout = setTimeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n },\r\n stringify: function(val) {\r\n return _.isString(val) ? val : JSON.stringify(val);\r\n },\r\n guid: function() {\r\n function _p8(s) {\r\n var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\r\n return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\r\n }\r\n return \"tt-\" + _p8() + _p8(true) + _p8(true) + _p8();\r\n },\r\n noop: function() {}\r\n };\r\n }();\r\n var VERSION = \"1.1.1\";\r\n var tokenizers = function() {\r\n \"use strict\";\r\n return {\r\n nonword: nonword,\r\n whitespace: whitespace,\r\n ngram: ngram,\r\n obj: {\r\n nonword: getObjTokenizer(nonword),\r\n whitespace: getObjTokenizer(whitespace),\r\n ngram: getObjTokenizer(ngram)\r\n }\r\n };\r\n function whitespace(str) {\r\n str = _.toStr(str);\r\n return str ? str.split(/\\s+/) : [];\r\n }\r\n function nonword(str) {\r\n str = _.toStr(str);\r\n return str ? str.split(/\\W+/) : [];\r\n }\r\n function ngram(str) {\r\n str = _.toStr(str);\r\n var tokens = [], word = \"\";\r\n _.each(str.split(\"\"), function(char) {\r\n if (char.match(/\\s+/)) {\r\n word = \"\";\r\n } else {\r\n tokens.push(word + char);\r\n word += char;\r\n }\r\n });\r\n return tokens;\r\n }\r\n function getObjTokenizer(tokenizer) {\r\n return function setKey(keys) {\r\n keys = _.isArray(keys) ? keys : [].slice.call(arguments, 0);\r\n return function tokenize(o) {\r\n var tokens = [];\r\n _.each(keys, function(k) {\r\n tokens = tokens.concat(tokenizer(_.toStr(o[k])));\r\n });\r\n return tokens;\r\n };\r\n };\r\n }\r\n }();\r\n var LruCache = function() {\r\n \"use strict\";\r\n function LruCache(maxSize) {\r\n this.maxSize = _.isNumber(maxSize) ? maxSize : 100;\r\n this.reset();\r\n if (this.maxSize <= 0) {\r\n this.set = this.get = $.noop;\r\n }\r\n }\r\n _.mixin(LruCache.prototype, {\r\n set: function set(key, val) {\r\n var tailItem = this.list.tail, node;\r\n if (this.size >= this.maxSize) {\r\n this.list.remove(tailItem);\r\n delete this.hash[tailItem.key];\r\n this.size--;\r\n }\r\n if (node = this.hash[key]) {\r\n node.val = val;\r\n this.list.moveToFront(node);\r\n } else {\r\n node = new Node(key, val);\r\n this.list.add(node);\r\n this.hash[key] = node;\r\n this.size++;\r\n }\r\n },\r\n get: function get(key) {\r\n var node = this.hash[key];\r\n if (node) {\r\n this.list.moveToFront(node);\r\n return node.val;\r\n }\r\n },\r\n reset: function reset() {\r\n this.size = 0;\r\n this.hash = {};\r\n this.list = new List();\r\n }\r\n });\r\n function List() {\r\n this.head = this.tail = null;\r\n }\r\n _.mixin(List.prototype, {\r\n add: function add(node) {\r\n if (this.head) {\r\n node.next = this.head;\r\n this.head.prev = node;\r\n }\r\n this.head = node;\r\n this.tail = this.tail || node;\r\n },\r\n remove: function remove(node) {\r\n node.prev ? node.prev.next = node.next : this.head = node.next;\r\n node.next ? node.next.prev = node.prev : this.tail = node.prev;\r\n },\r\n moveToFront: function(node) {\r\n this.remove(node);\r\n this.add(node);\r\n }\r\n });\r\n function Node(key, val) {\r\n this.key = key;\r\n this.val = val;\r\n this.prev = this.next = null;\r\n }\r\n return LruCache;\r\n }();\r\n var PersistentStorage = function() {\r\n \"use strict\";\r\n var LOCAL_STORAGE;\r\n try {\r\n LOCAL_STORAGE = window.localStorage;\r\n LOCAL_STORAGE.setItem(\"~~~\", \"!\");\r\n LOCAL_STORAGE.removeItem(\"~~~\");\r\n } catch (err) {\r\n LOCAL_STORAGE = null;\r\n }\r\n function PersistentStorage(namespace, override) {\r\n this.prefix = [ \"__\", namespace, \"__\" ].join(\"\");\r\n this.ttlKey = \"__ttl__\";\r\n this.keyMatcher = new RegExp(\"^\" + _.escapeRegExChars(this.prefix));\r\n this.ls = override || LOCAL_STORAGE;\r\n !this.ls && this._noop();\r\n }\r\n _.mixin(PersistentStorage.prototype, {\r\n _prefix: function(key) {\r\n return this.prefix + key;\r\n },\r\n _ttlKey: function(key) {\r\n return this._prefix(key) + this.ttlKey;\r\n },\r\n _noop: function() {\r\n this.get = this.set = this.remove = this.clear = this.isExpired = _.noop;\r\n },\r\n _safeSet: function(key, val) {\r\n try {\r\n this.ls.setItem(key, val);\r\n } catch (err) {\r\n if (err.name === \"QuotaExceededError\") {\r\n this.clear();\r\n this._noop();\r\n }\r\n }\r\n },\r\n get: function(key) {\r\n if (this.isExpired(key)) {\r\n this.remove(key);\r\n }\r\n return decode(this.ls.getItem(this._prefix(key)));\r\n },\r\n set: function(key, val, ttl) {\r\n if (_.isNumber(ttl)) {\r\n this._safeSet(this._ttlKey(key), encode(now() + ttl));\r\n } else {\r\n this.ls.removeItem(this._ttlKey(key));\r\n }\r\n return this._safeSet(this._prefix(key), encode(val));\r\n },\r\n remove: function(key) {\r\n this.ls.removeItem(this._ttlKey(key));\r\n this.ls.removeItem(this._prefix(key));\r\n return this;\r\n },\r\n clear: function() {\r\n var i, keys = gatherMatchingKeys(this.keyMatcher);\r\n for (i = keys.length; i--; ) {\r\n this.remove(keys[i]);\r\n }\r\n return this;\r\n },\r\n isExpired: function(key) {\r\n var ttl = decode(this.ls.getItem(this._ttlKey(key)));\r\n return _.isNumber(ttl) && now() > ttl ? true : false;\r\n }\r\n });\r\n return PersistentStorage;\r\n function now() {\r\n return new Date().getTime();\r\n }\r\n function encode(val) {\r\n return JSON.stringify(_.isUndefined(val) ? null : val);\r\n }\r\n function decode(val) {\r\n return $.parseJSON(val);\r\n }\r\n function gatherMatchingKeys(keyMatcher) {\r\n var i, key, keys = [], len = LOCAL_STORAGE.length;\r\n for (i = 0; i < len; i++) {\r\n if ((key = LOCAL_STORAGE.key(i)).match(keyMatcher)) {\r\n keys.push(key.replace(keyMatcher, \"\"));\r\n }\r\n }\r\n return keys;\r\n }\r\n }();\r\n var Transport = function() {\r\n \"use strict\";\r\n var pendingRequestsCount = 0, pendingRequests = {}, sharedCache = new LruCache(10);\r\n function Transport(o) {\r\n o = o || {};\r\n this.maxPendingRequests = o.maxPendingRequests || 6;\r\n this.cancelled = false;\r\n this.lastReq = null;\r\n this._send = o.transport;\r\n this._get = o.limiter ? o.limiter(this._get) : this._get;\r\n this._cache = o.cache === false ? new LruCache(0) : sharedCache;\r\n }\r\n Transport.setMaxPendingRequests = function setMaxPendingRequests(num) {\r\n this.maxPendingRequests = num;\r\n };\r\n Transport.resetCache = function resetCache() {\r\n sharedCache.reset();\r\n };\r\n _.mixin(Transport.prototype, {\r\n _fingerprint: function fingerprint(o) {\r\n o = o || {};\r\n return o.url + o.type + $.param(o.data || {});\r\n },\r\n _get: function(o, cb) {\r\n var that = this, fingerprint, jqXhr;\r\n fingerprint = this._fingerprint(o);\r\n if (this.cancelled || fingerprint !== this.lastReq) {\r\n return;\r\n }\r\n if (jqXhr = pendingRequests[fingerprint]) {\r\n jqXhr.done(done).fail(fail);\r\n } else if (pendingRequestsCount < this.maxPendingRequests) {\r\n pendingRequestsCount++;\r\n pendingRequests[fingerprint] = this._send(o).done(done).fail(fail).always(always);\r\n } else {\r\n this.onDeckRequestArgs = [].slice.call(arguments, 0);\r\n }\r\n function done(resp) {\r\n cb(null, resp);\r\n that._cache.set(fingerprint, resp);\r\n }\r\n function fail() {\r\n cb(true);\r\n }\r\n function always() {\r\n pendingRequestsCount--;\r\n delete pendingRequests[fingerprint];\r\n if (that.onDeckRequestArgs) {\r\n that._get.apply(that, that.onDeckRequestArgs);\r\n that.onDeckRequestArgs = null;\r\n }\r\n }\r\n },\r\n get: function(o, cb) {\r\n var resp, fingerprint;\r\n cb = cb || $.noop;\r\n o = _.isString(o) ? {\r\n url: o\r\n } : o || {};\r\n fingerprint = this._fingerprint(o);\r\n this.cancelled = false;\r\n this.lastReq = fingerprint;\r\n if (resp = this._cache.get(fingerprint)) {\r\n cb(null, resp);\r\n } else {\r\n this._get(o, cb);\r\n }\r\n },\r\n cancel: function() {\r\n this.cancelled = true;\r\n }\r\n });\r\n return Transport;\r\n }();\r\n var SearchIndex = window.SearchIndex = function() {\r\n \"use strict\";\r\n var CHILDREN = \"c\", IDS = \"i\";\r\n function SearchIndex(o) {\r\n o = o || {};\r\n if (!o.datumTokenizer || !o.queryTokenizer) {\r\n $.error(\"datumTokenizer and queryTokenizer are both required\");\r\n }\r\n this.identify = o.identify || _.stringify;\r\n this.datumTokenizer = o.datumTokenizer;\r\n this.queryTokenizer = o.queryTokenizer;\r\n this.matchAnyQueryToken = o.matchAnyQueryToken;\r\n this.reset();\r\n }\r\n _.mixin(SearchIndex.prototype, {\r\n bootstrap: function bootstrap(o) {\r\n this.datums = o.datums;\r\n this.trie = o.trie;\r\n },\r\n add: function(data) {\r\n var that = this;\r\n data = _.isArray(data) ? data : [ data ];\r\n _.each(data, function(datum) {\r\n var id, tokens;\r\n that.datums[id = that.identify(datum)] = datum;\r\n tokens = normalizeTokens(that.datumTokenizer(datum));\r\n _.each(tokens, function(token) {\r\n var node, chars, ch;\r\n node = that.trie;\r\n chars = token.split(\"\");\r\n while (ch = chars.shift()) {\r\n node = node[CHILDREN][ch] || (node[CHILDREN][ch] = newNode());\r\n node[IDS].push(id);\r\n }\r\n });\r\n });\r\n },\r\n get: function get(ids) {\r\n var that = this;\r\n return _.map(ids, function(id) {\r\n return that.datums[id];\r\n });\r\n },\r\n search: function search(query) {\r\n var that = this, tokens, matches;\r\n tokens = normalizeTokens(this.queryTokenizer(query));\r\n _.each(tokens, function(token) {\r\n var node, chars, ch, ids;\r\n if (matches && matches.length === 0 && !that.matchAnyQueryToken) {\r\n return false;\r\n }\r\n node = that.trie;\r\n chars = token.split(\"\");\r\n while (node && (ch = chars.shift())) {\r\n node = node[CHILDREN][ch];\r\n }\r\n if (node && chars.length === 0) {\r\n ids = node[IDS].slice(0);\r\n matches = matches ? getIntersection(matches, ids) : ids;\r\n } else {\r\n if (!that.matchAnyQueryToken) {\r\n matches = [];\r\n return false;\r\n }\r\n }\r\n });\r\n return matches ? _.map(unique(matches), function(id) {\r\n return that.datums[id];\r\n }) : [];\r\n },\r\n all: function all() {\r\n var values = [];\r\n for (var key in this.datums) {\r\n values.push(this.datums[key]);\r\n }\r\n return values;\r\n },\r\n reset: function reset() {\r\n this.datums = {};\r\n this.trie = newNode();\r\n },\r\n serialize: function serialize() {\r\n return {\r\n datums: this.datums,\r\n trie: this.trie\r\n };\r\n }\r\n });\r\n return SearchIndex;\r\n function normalizeTokens(tokens) {\r\n tokens = _.filter(tokens, function(token) {\r\n return !!token;\r\n });\r\n tokens = _.map(tokens, function(token) {\r\n return token.toLowerCase();\r\n });\r\n return tokens;\r\n }\r\n function newNode() {\r\n var node = {};\r\n node[IDS] = [];\r\n node[CHILDREN] = {};\r\n return node;\r\n }\r\n function unique(array) {\r\n var seen = {}, uniques = [];\r\n for (var i = 0, len = array.length; i < len; i++) {\r\n if (!seen[array[i]]) {\r\n seen[array[i]] = true;\r\n uniques.push(array[i]);\r\n }\r\n }\r\n return uniques;\r\n }\r\n function getIntersection(arrayA, arrayB) {\r\n var ai = 0, bi = 0, intersection = [];\r\n arrayA = arrayA.sort();\r\n arrayB = arrayB.sort();\r\n var lenArrayA = arrayA.length, lenArrayB = arrayB.length;\r\n while (ai < lenArrayA && bi < lenArrayB) {\r\n if (arrayA[ai] < arrayB[bi]) {\r\n ai++;\r\n } else if (arrayA[ai] > arrayB[bi]) {\r\n bi++;\r\n } else {\r\n intersection.push(arrayA[ai]);\r\n ai++;\r\n bi++;\r\n }\r\n }\r\n return intersection;\r\n }\r\n }();\r\n var Prefetch = function() {\r\n \"use strict\";\r\n var keys;\r\n keys = {\r\n data: \"data\",\r\n protocol: \"protocol\",\r\n thumbprint: \"thumbprint\"\r\n };\r\n function Prefetch(o) {\r\n this.url = o.url;\r\n this.ttl = o.ttl;\r\n this.cache = o.cache;\r\n this.prepare = o.prepare;\r\n this.transform = o.transform;\r\n this.transport = o.transport;\r\n this.thumbprint = o.thumbprint;\r\n this.storage = new PersistentStorage(o.cacheKey);\r\n }\r\n _.mixin(Prefetch.prototype, {\r\n _settings: function settings() {\r\n return {\r\n url: this.url,\r\n type: \"GET\",\r\n dataType: \"json\"\r\n };\r\n },\r\n store: function store(data) {\r\n if (!this.cache) {\r\n return;\r\n }\r\n this.storage.set(keys.data, data, this.ttl);\r\n this.storage.set(keys.protocol, location.protocol, this.ttl);\r\n this.storage.set(keys.thumbprint, this.thumbprint, this.ttl);\r\n },\r\n fromCache: function fromCache() {\r\n var stored = {}, isExpired;\r\n if (!this.cache) {\r\n return null;\r\n }\r\n stored.data = this.storage.get(keys.data);\r\n stored.protocol = this.storage.get(keys.protocol);\r\n stored.thumbprint = this.storage.get(keys.thumbprint);\r\n isExpired = stored.thumbprint !== this.thumbprint || stored.protocol !== location.protocol;\r\n return stored.data && !isExpired ? stored.data : null;\r\n },\r\n fromNetwork: function(cb) {\r\n var that = this, settings;\r\n if (!cb) {\r\n return;\r\n }\r\n settings = this.prepare(this._settings());\r\n this.transport(settings).fail(onError).done(onResponse);\r\n function onError() {\r\n cb(true);\r\n }\r\n function onResponse(resp) {\r\n cb(null, that.transform(resp));\r\n }\r\n },\r\n clear: function clear() {\r\n this.storage.clear();\r\n return this;\r\n }\r\n });\r\n return Prefetch;\r\n }();\r\n var Remote = function() {\r\n \"use strict\";\r\n function Remote(o) {\r\n this.url = o.url;\r\n this.prepare = o.prepare;\r\n this.transform = o.transform;\r\n this.indexResponse = o.indexResponse;\r\n this.transport = new Transport({\r\n cache: o.cache,\r\n limiter: o.limiter,\r\n transport: o.transport,\r\n maxPendingRequests: o.maxPendingRequests\r\n });\r\n }\r\n _.mixin(Remote.prototype, {\r\n _settings: function settings() {\r\n return {\r\n url: this.url,\r\n type: \"GET\",\r\n dataType: \"json\"\r\n };\r\n },\r\n get: function get(query, cb) {\r\n var that = this, settings;\r\n if (!cb) {\r\n return;\r\n }\r\n query = query || \"\";\r\n settings = this.prepare(query, this._settings());\r\n return this.transport.get(settings, onResponse);\r\n function onResponse(err, resp) {\r\n err ? cb([]) : cb(that.transform(resp));\r\n }\r\n },\r\n cancelLastRequest: function cancelLastRequest() {\r\n this.transport.cancel();\r\n }\r\n });\r\n return Remote;\r\n }();\r\n var oParser = function() {\r\n \"use strict\";\r\n return function parse(o) {\r\n var defaults, sorter;\r\n defaults = {\r\n initialize: true,\r\n identify: _.stringify,\r\n datumTokenizer: null,\r\n queryTokenizer: null,\r\n matchAnyQueryToken: false,\r\n sufficient: 5,\r\n indexRemote: false,\r\n sorter: null,\r\n local: [],\r\n prefetch: null,\r\n remote: null\r\n };\r\n o = _.mixin(defaults, o || {});\r\n !o.datumTokenizer && $.error(\"datumTokenizer is required\");\r\n !o.queryTokenizer && $.error(\"queryTokenizer is required\");\r\n sorter = o.sorter;\r\n o.sorter = sorter ? function(x) {\r\n return x.sort(sorter);\r\n } : _.identity;\r\n o.local = _.isFunction(o.local) ? o.local() : o.local;\r\n o.prefetch = parsePrefetch(o.prefetch);\r\n o.remote = parseRemote(o.remote);\r\n return o;\r\n };\r\n function parsePrefetch(o) {\r\n var defaults;\r\n if (!o) {\r\n return null;\r\n }\r\n defaults = {\r\n url: null,\r\n ttl: 24 * 60 * 60 * 1e3,\r\n cache: true,\r\n cacheKey: null,\r\n thumbprint: \"\",\r\n prepare: _.identity,\r\n transform: _.identity,\r\n transport: null\r\n };\r\n o = _.isString(o) ? {\r\n url: o\r\n } : o;\r\n o = _.mixin(defaults, o);\r\n !o.url && $.error(\"prefetch requires url to be set\");\r\n o.transform = o.filter || o.transform;\r\n o.cacheKey = o.cacheKey || o.url;\r\n o.thumbprint = VERSION + o.thumbprint;\r\n o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\r\n return o;\r\n }\r\n function parseRemote(o) {\r\n var defaults;\r\n if (!o) {\r\n return;\r\n }\r\n defaults = {\r\n url: null,\r\n cache: true,\r\n prepare: null,\r\n replace: null,\r\n wildcard: null,\r\n limiter: null,\r\n rateLimitBy: \"debounce\",\r\n rateLimitWait: 300,\r\n transform: _.identity,\r\n transport: null\r\n };\r\n o = _.isString(o) ? {\r\n url: o\r\n } : o;\r\n o = _.mixin(defaults, o);\r\n !o.url && $.error(\"remote requires url to be set\");\r\n o.transform = o.filter || o.transform;\r\n o.prepare = toRemotePrepare(o);\r\n o.limiter = toLimiter(o);\r\n o.transport = o.transport ? callbackToDeferred(o.transport) : $.ajax;\r\n delete o.replace;\r\n delete o.wildcard;\r\n delete o.rateLimitBy;\r\n delete o.rateLimitWait;\r\n return o;\r\n }\r\n function toRemotePrepare(o) {\r\n var prepare, replace, wildcard;\r\n prepare = o.prepare;\r\n replace = o.replace;\r\n wildcard = o.wildcard;\r\n if (prepare) {\r\n return prepare;\r\n }\r\n if (replace) {\r\n prepare = prepareByReplace;\r\n } else if (o.wildcard) {\r\n prepare = prepareByWildcard;\r\n } else {\r\n prepare = identityPrepare;\r\n }\r\n return prepare;\r\n function prepareByReplace(query, settings) {\r\n settings.url = replace(settings.url, query);\r\n return settings;\r\n }\r\n function prepareByWildcard(query, settings) {\r\n settings.url = settings.url.replace(wildcard, encodeURIComponent(query));\r\n return settings;\r\n }\r\n function identityPrepare(query, settings) {\r\n return settings;\r\n }\r\n }\r\n function toLimiter(o) {\r\n var limiter, method, wait;\r\n limiter = o.limiter;\r\n method = o.rateLimitBy;\r\n wait = o.rateLimitWait;\r\n if (!limiter) {\r\n limiter = /^throttle$/i.test(method) ? throttle(wait) : debounce(wait);\r\n }\r\n return limiter;\r\n function debounce(wait) {\r\n return function debounce(fn) {\r\n return _.debounce(fn, wait);\r\n };\r\n }\r\n function throttle(wait) {\r\n return function throttle(fn) {\r\n return _.throttle(fn, wait);\r\n };\r\n }\r\n }\r\n function callbackToDeferred(fn) {\r\n return function wrapper(o) {\r\n var deferred = $.Deferred();\r\n fn(o, onSuccess, onError);\r\n return deferred;\r\n function onSuccess(resp) {\r\n _.defer(function() {\r\n deferred.resolve(resp);\r\n });\r\n }\r\n function onError(err) {\r\n _.defer(function() {\r\n deferred.reject(err);\r\n });\r\n }\r\n };\r\n }\r\n }();\r\n var Bloodhound = function() {\r\n \"use strict\";\r\n var old;\r\n old = window && window.Bloodhound;\r\n function Bloodhound(o) {\r\n o = oParser(o);\r\n this.sorter = o.sorter;\r\n this.identify = o.identify;\r\n this.sufficient = o.sufficient;\r\n this.indexRemote = o.indexRemote;\r\n this.local = o.local;\r\n this.remote = o.remote ? new Remote(o.remote) : null;\r\n this.prefetch = o.prefetch ? new Prefetch(o.prefetch) : null;\r\n this.index = new SearchIndex({\r\n identify: this.identify,\r\n datumTokenizer: o.datumTokenizer,\r\n queryTokenizer: o.queryTokenizer\r\n });\r\n o.initialize !== false && this.initialize();\r\n }\r\n Bloodhound.noConflict = function noConflict() {\r\n window && (window.Bloodhound = old);\r\n return Bloodhound;\r\n };\r\n Bloodhound.tokenizers = tokenizers;\r\n _.mixin(Bloodhound.prototype, {\r\n __ttAdapter: function ttAdapter() {\r\n var that = this;\r\n return this.remote ? withAsync : withoutAsync;\r\n function withAsync(query, sync, async) {\r\n return that.search(query, sync, async);\r\n }\r\n function withoutAsync(query, sync) {\r\n return that.search(query, sync);\r\n }\r\n },\r\n _loadPrefetch: function loadPrefetch() {\r\n var that = this, deferred, serialized;\r\n deferred = $.Deferred();\r\n if (!this.prefetch) {\r\n deferred.resolve();\r\n } else if (serialized = this.prefetch.fromCache()) {\r\n this.index.bootstrap(serialized);\r\n deferred.resolve();\r\n } else {\r\n this.prefetch.fromNetwork(done);\r\n }\r\n return deferred.promise();\r\n function done(err, data) {\r\n if (err) {\r\n return deferred.reject();\r\n }\r\n that.add(data);\r\n that.prefetch.store(that.index.serialize());\r\n deferred.resolve();\r\n }\r\n },\r\n _initialize: function initialize() {\r\n var that = this, deferred;\r\n this.clear();\r\n (this.initPromise = this._loadPrefetch()).done(addLocalToIndex);\r\n return this.initPromise;\r\n function addLocalToIndex() {\r\n that.add(that.local);\r\n }\r\n },\r\n initialize: function initialize(force) {\r\n return !this.initPromise || force ? this._initialize() : this.initPromise;\r\n },\r\n add: function add(data) {\r\n this.index.add(data);\r\n return this;\r\n },\r\n get: function get(ids) {\r\n ids = _.isArray(ids) ? ids : [].slice.call(arguments);\r\n return this.index.get(ids);\r\n },\r\n search: function search(query, sync, async) {\r\n var that = this, local;\r\n sync = sync || _.noop;\r\n async = async || _.noop;\r\n local = this.sorter(this.index.search(query));\r\n sync(this.remote ? local.slice() : local);\r\n if (this.remote && local.length < this.sufficient) {\r\n this.remote.get(query, processRemote);\r\n } else if (this.remote) {\r\n this.remote.cancelLastRequest();\r\n }\r\n return this;\r\n function processRemote(remote) {\r\n var nonDuplicates = [];\r\n _.each(remote, function(r) {\r\n !_.some(local, function(l) {\r\n return that.identify(r) === that.identify(l);\r\n }) && nonDuplicates.push(r);\r\n });\r\n that.indexRemote && that.add(nonDuplicates);\r\n async(nonDuplicates);\r\n }\r\n },\r\n all: function all() {\r\n return this.index.all();\r\n },\r\n clear: function clear() {\r\n this.index.reset();\r\n return this;\r\n },\r\n clearPrefetchCache: function clearPrefetchCache() {\r\n this.prefetch && this.prefetch.clear();\r\n return this;\r\n },\r\n clearRemoteCache: function clearRemoteCache() {\r\n Transport.resetCache();\r\n return this;\r\n },\r\n ttAdapter: function ttAdapter() {\r\n return this.__ttAdapter();\r\n }\r\n });\r\n return Bloodhound;\r\n }();\r\n return Bloodhound;\r\n});\r\n\r\n(function(root, factory) {\r\n if (typeof define === \"function\" && define.amd) {\r\n define([ \"jquery\" ], function(a0) {\r\n return factory(a0);\r\n });\r\n } else if (typeof module === \"object\" && module.exports) {\r\n module.exports = factory(require(\"jquery\"));\r\n } else {\r\n factory(root[\"jQuery\"]);\r\n }\r\n})(this, function($) {\r\n var _ = function() {\r\n \"use strict\";\r\n return {\r\n isMsie: function() {\r\n return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\\d+(.\\d+)?)/i)[2] : false;\r\n },\r\n isBlankString: function(str) {\r\n return !str || /^\\s*$/.test(str);\r\n },\r\n escapeRegExChars: function(str) {\r\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\r\n },\r\n isString: function(obj) {\r\n return typeof obj === \"string\";\r\n },\r\n isNumber: function(obj) {\r\n return typeof obj === \"number\";\r\n },\r\n isArray: $.isArray,\r\n isFunction: $.isFunction,\r\n isObject: $.isPlainObject,\r\n isUndefined: function(obj) {\r\n return typeof obj === \"undefined\";\r\n },\r\n isElement: function(obj) {\r\n return !!(obj && obj.nodeType === 1);\r\n },\r\n isJQuery: function(obj) {\r\n return obj instanceof $;\r\n },\r\n toStr: function toStr(s) {\r\n return _.isUndefined(s) || s === null ? \"\" : s + \"\";\r\n },\r\n bind: $.proxy,\r\n each: function(collection, cb) {\r\n $.each(collection, reverseArgs);\r\n function reverseArgs(index, value) {\r\n return cb(value, index);\r\n }\r\n },\r\n map: $.map,\r\n filter: $.grep,\r\n every: function(obj, test) {\r\n var result = true;\r\n if (!obj) {\r\n return result;\r\n }\r\n $.each(obj, function(key, val) {\r\n if (!(result = test.call(null, val, key, obj))) {\r\n return false;\r\n }\r\n });\r\n return !!result;\r\n },\r\n some: function(obj, test) {\r\n var result = false;\r\n if (!obj) {\r\n return result;\r\n }\r\n $.each(obj, function(key, val) {\r\n if (result = test.call(null, val, key, obj)) {\r\n return false;\r\n }\r\n });\r\n return !!result;\r\n },\r\n mixin: $.extend,\r\n identity: function(x) {\r\n return x;\r\n },\r\n clone: function(obj) {\r\n return $.extend(true, {}, obj);\r\n },\r\n getIdGenerator: function() {\r\n var counter = 0;\r\n return function() {\r\n return counter++;\r\n };\r\n },\r\n templatify: function templatify(obj) {\r\n return $.isFunction(obj) ? obj : template;\r\n function template() {\r\n return String(obj);\r\n }\r\n },\r\n defer: function(fn) {\r\n setTimeout(fn, 0);\r\n },\r\n debounce: function(func, wait, immediate) {\r\n var timeout, result;\r\n return function() {\r\n var context = this, args = arguments, later, callNow;\r\n later = function() {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n }\r\n };\r\n callNow = immediate && !timeout;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(later, wait);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n }\r\n return result;\r\n };\r\n },\r\n throttle: function(func, wait) {\r\n var context, args, timeout, result, previous, later;\r\n previous = 0;\r\n later = function() {\r\n previous = new Date();\r\n timeout = null;\r\n result = func.apply(context, args);\r\n };\r\n return function() {\r\n var now = new Date(), remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n previous = now;\r\n result = func.apply(context, args);\r\n } else if (!timeout) {\r\n timeout = setTimeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n },\r\n stringify: function(val) {\r\n return _.isString(val) ? val : JSON.stringify(val);\r\n },\r\n guid: function() {\r\n function _p8(s) {\r\n var p = (Math.random().toString(16) + \"000000000\").substr(2, 8);\r\n return s ? \"-\" + p.substr(0, 4) + \"-\" + p.substr(4, 4) : p;\r\n }\r\n return \"tt-\" + _p8() + _p8(true) + _p8(true) + _p8();\r\n },\r\n noop: function() {}\r\n };\r\n }();\r\n var WWW = function() {\r\n \"use strict\";\r\n var defaultClassNames = {\r\n wrapper: \"twitter-typeahead\",\r\n input: \"tt-input\",\r\n hint: \"tt-hint\",\r\n menu: \"tt-menu\",\r\n dataset: \"tt-dataset\",\r\n suggestion: \"tt-suggestion\",\r\n selectable: \"tt-selectable\",\r\n empty: \"tt-empty\",\r\n open: \"tt-open\",\r\n cursor: \"tt-cursor\",\r\n highlight: \"tt-highlight\"\r\n };\r\n return build;\r\n function build(o) {\r\n var www, classes;\r\n classes = _.mixin({}, defaultClassNames, o);\r\n www = {\r\n css: buildCss(),\r\n classes: classes,\r\n html: buildHtml(classes),\r\n selectors: buildSelectors(classes)\r\n };\r\n return {\r\n css: www.css,\r\n html: www.html,\r\n classes: www.classes,\r\n selectors: www.selectors,\r\n mixin: function(o) {\r\n _.mixin(o, www);\r\n }\r\n };\r\n }\r\n function buildHtml(c) {\r\n return {\r\n wrapper: '<span class=\"' + c.wrapper + '\"></span>',\r\n menu: '<div role=\"listbox\" class=\"' + c.menu + '\"></div>'\r\n };\r\n }\r\n function buildSelectors(classes) {\r\n var selectors = {};\r\n _.each(classes, function(v, k) {\r\n selectors[k] = \".\" + v;\r\n });\r\n return selectors;\r\n }\r\n function buildCss() {\r\n var css = {\r\n wrapper: {\r\n position: \"relative\",\r\n display: \"inline-block\"\r\n },\r\n hint: {\r\n position: \"absolute\",\r\n top: \"0\",\r\n left: \"0\",\r\n borderColor: \"transparent\",\r\n boxShadow: \"none\",\r\n opacity: \"1\"\r\n },\r\n input: {\r\n position: \"relative\",\r\n verticalAlign: \"top\",\r\n backgroundColor: \"transparent\"\r\n },\r\n inputWithNoHint: {\r\n position: \"relative\",\r\n verticalAlign: \"top\"\r\n },\r\n menu: {\r\n position: \"absolute\",\r\n top: \"100%\",\r\n right: \"0\",\r\n zIndex: \"100\",\r\n display: \"none\"\r\n },\r\n ltr: {\r\n left: \"0\",\r\n right: \"auto\"\r\n },\r\n rtl: {\r\n left: \"auto\",\r\n right: \" 0\"\r\n }\r\n };\r\n if (_.isMsie()) {\r\n _.mixin(css.input, {\r\n backgroundImage: \"url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)\"\r\n });\r\n }\r\n return css;\r\n }\r\n }();\r\n var EventBus = function() {\r\n \"use strict\";\r\n var namespace, deprecationMap;\r\n namespace = \"typeahead:\";\r\n deprecationMap = {\r\n render: \"rendered\",\r\n cursorchange: \"cursorchanged\",\r\n select: \"selected\",\r\n autocomplete: \"autocompleted\"\r\n };\r\n function EventBus(o) {\r\n if (!o || !o.el) {\r\n $.error(\"EventBus initialized without el\");\r\n }\r\n this.$el = $(o.el);\r\n }\r\n _.mixin(EventBus.prototype, {\r\n _trigger: function(type, args) {\r\n var $e = $.Event(namespace + type);\r\n this.$el.trigger.call(this.$el, $e, args || []);\r\n return $e;\r\n },\r\n before: function(type) {\r\n var args, $e;\r\n args = [].slice.call(arguments, 1);\r\n $e = this._trigger(\"before\" + type, args);\r\n return $e.isDefaultPrevented();\r\n },\r\n trigger: function(type) {\r\n var deprecatedType;\r\n this._trigger(type, [].slice.call(arguments, 1));\r\n if (deprecatedType = deprecationMap[type]) {\r\n this._trigger(deprecatedType, [].slice.call(arguments, 1));\r\n }\r\n }\r\n });\r\n return EventBus;\r\n }();\r\n var EventEmitter = function() {\r\n \"use strict\";\r\n var splitter = /\\s+/, nextTick = getNextTick();\r\n return {\r\n onSync: onSync,\r\n onAsync: onAsync,\r\n off: off,\r\n trigger: trigger\r\n };\r\n function on(method, types, cb, context) {\r\n var type;\r\n if (!cb) {\r\n return this;\r\n }\r\n types = types.split(splitter);\r\n cb = context ? bindContext(cb, context) : cb;\r\n this._callbacks = this._callbacks || {};\r\n while (type = types.shift()) {\r\n this._callbacks[type] = this._callbacks[type] || {\r\n sync: [],\r\n async: []\r\n };\r\n this._callbacks[type][method].push(cb);\r\n }\r\n return this;\r\n }\r\n function onAsync(types, cb, context) {\r\n return on.call(this, \"async\", types, cb, context);\r\n }\r\n function onSync(types, cb, context) {\r\n return on.call(this, \"sync\", types, cb, context);\r\n }\r\n function off(types) {\r\n var type;\r\n if (!this._callbacks) {\r\n return this;\r\n }\r\n types = types.split(splitter);\r\n while (type = types.shift()) {\r\n delete this._callbacks[type];\r\n }\r\n return this;\r\n }\r\n function trigger(types) {\r\n var type, callbacks, args, syncFlush, asyncFlush;\r\n if (!this._callbacks) {\r\n return this;\r\n }\r\n types = types.split(splitter);\r\n args = [].slice.call(arguments, 1);\r\n while ((type = types.shift()) && (callbacks = this._callbacks[type])) {\r\n syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));\r\n asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));\r\n syncFlush() && nextTick(asyncFlush);\r\n }\r\n return this;\r\n }\r\n function getFlush(callbacks, context, args) {\r\n return flush;\r\n function flush() {\r\n var cancelled;\r\n for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {\r\n cancelled = callbacks[i].apply(context, args) === false;\r\n }\r\n return !cancelled;\r\n }\r\n }\r\n function getNextTick() {\r\n var nextTickFn;\r\n if (window.setImmediate) {\r\n nextTickFn = function nextTickSetImmediate(fn) {\r\n setImmediate(function() {\r\n fn();\r\n });\r\n };\r\n } else {\r\n nextTickFn = function nextTickSetTimeout(fn) {\r\n setTimeout(function() {\r\n fn();\r\n }, 0);\r\n };\r\n }\r\n return nextTickFn;\r\n }\r\n function bindContext(fn, context) {\r\n return fn.bind ? fn.bind(context) : function() {\r\n fn.apply(context, [].slice.call(arguments, 0));\r\n };\r\n }\r\n }();\r\n var highlight = function(doc) {\r\n \"use strict\";\r\n var defaults = {\r\n node: null,\r\n pattern: null,\r\n tagName: \"strong\",\r\n className: null,\r\n wordsOnly: false,\r\n caseSensitive: false,\r\n diacriticInsensitive: false\r\n };\r\n var accented = {\r\n A: \"[AaªÀ-Ã…Ã -åĀ-Ä…ÇÇŽÈ€-ȃȦȧᴬᵃḀá¸áºšáº -ảâ‚â„€â„℻⒜Ⓐâ“ã±-ã´ãŽ€-㎄㎈㎉㎩-㎯ã‚ãŠãŸã¿ï¼¡ï½]\",\r\n B: \"[BbᴮᵇḂ-ḇℬâ’â’·â“‘ã´ãŽ…-㎇ãƒãˆã”ãBb]\",\r\n C: \"[CcÇçĆ-Äᶜ℀ℂ℃℅℆â„â…ⅽ⒞Ⓒⓒã¶ãŽˆãŽ‰ãŽãŽ ㎤ã„-ã‡ï¼£ï½ƒ]\",\r\n D: \"[DdÄŽÄÇ„-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓã‹ã²ã·-ã¹ãŽ—ãŽ-㎯ã…ãˆï¼¤ï½„]\",\r\n E: \"[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔã‰ã‹ã‹Žï¼¥ï½…]\",\r\n F: \"[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]\",\r\n G: \"[GgÄœ-ģǦǧǴǵᴳáµá¸ ḡℊ⒢Ⓖⓖ㋌ã‹ãŽ‡ãŽ-ãŽãŽ“㎬ã†ã‰ã’ã¿ï¼§ï½‡]\",\r\n H: \"[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌ã±ãŽ-㎔ãŠã‹ã—Hh]\",\r\n I: \"[IiÃŒ-Ãì-ïĨ-İIJijÇÇȈ-ȋᴵᵢḬá¸á»ˆ-ịâ±â„â„‘â„¹â…ˆâ… -ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤ⒾⓘãºãŒã•ï¬ï¬ƒï¼©ï½‰]\",\r\n J: \"[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]\",\r\n K: \"[KkĶķǨǩᴷáµá¸°-ḵK⒦Ⓚⓚ㎄㎅㎉ãŽãŽ‘㎘㎞㎢㎦㎪㎸㎾ã€ã†ã-ãKk]\",\r\n L: \"[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧â“â“›ã‹ãŽˆãŽ‰ã-ã“ã•ã–ã¿ï¬‚fflLl]\",\r\n M: \"[Mmá´¹áµá¸¾-ṃ℠™ℳⅯⅿ⒨Ⓜⓜã·-ã¹ãŽƒãŽ†ãŽŽãŽ’㎖㎙-㎨㎫㎳㎷㎹㎽㎿ãã‚ãŽãã”-ã–ã˜ã™ãžãŸï¼ï½]\",\r\n N: \"[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋâ¿â„•â„–⒩Ⓝâ“ãŽãŽ‹ãŽšãŽ±ãŽµãŽ»ãŒã‘Nn]\",\r\n O: \"[OoºÒ-Öò-öŌ-Å‘Æ Æ¡Ç‘Ç’ÇªÇ«ÈŒ-ÈȮȯᴼᵒỌ-á»â‚’℅№ℴ⒪Ⓞⓞãµã‡ã’ã–Oï½]\",\r\n P: \"[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟã‰ã±ã¶ãŽ€ãŽŠãŽ©-㎬㎰㎴㎺ã‹ã—-ãšï¼°ï½]\",\r\n Q: \"[Qqℚ⒬Ⓠⓠãƒï¼±ï½‘]\",\r\n R: \"[RrÅ”-Å™È-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-â„â’Ⓡⓡã‹ã´ãŽ-㎯ãšã›ï¼²ï½’]\",\r\n S: \"[SsÅš-šſȘșˢṠ-ṣ₨â„℠⒮Ⓢⓢ㎧㎨㎮-㎳ã›ãœï¬†ï¼³ï½“]\",\r\n T: \"[TtÅ¢-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣã‰ã‹ãŽ”ãſtstTt]\",\r\n U: \"[UuÙ-Üù-üŨ-ųƯưǓǔȔ-È—áµáµ˜áµ¤á¹²-ṷỤ-ủ℆⒰Ⓤⓤã³ãºï¼µï½•]\",\r\n V: \"[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎ãµãŽ´-㎹ãœãžï¼¶ï½–]\",\r\n W: \"[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿ãï¼·ï½—]\",\r\n X: \"[XxˣẊ-áºâ‚“℻Ⅸ-â…«â…¸-ⅻ⒳â“ⓧã“Xx]\",\r\n Y: \"[YyÃýÿŶ-ŸȲȳʸẎáºáº™á»²-ỹ⒴Ⓨⓨã‰ï¼¹ï½™]\",\r\n Z: \"[ZzŹ-žDZ-dzᶻáº-ẕℤℨ⒵â“â“©ãŽ-㎔Zz]\"\r\n };\r\n return function hightlight(o) {\r\n var regex;\r\n o = _.mixin({}, defaults, o);\r\n if (!o.node || !o.pattern) {\r\n return;\r\n }\r\n o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];\r\n regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive);\r\n traverse(o.node, hightlightTextNode);\r\n function hightlightTextNode(textNode) {\r\n var match, patternNode, wrapperNode;\r\n if (match = regex.exec(textNode.data)) {\r\n wrapperNode = doc.createElement(o.tagName);\r\n o.className && (wrapperNode.className = o.className);\r\n patternNode = textNode.splitText(match.index);\r\n patternNode.splitText(match[0].length);\r\n wrapperNode.appendChild(patternNode.cloneNode(true));\r\n textNode.parentNode.replaceChild(wrapperNode, patternNode);\r\n }\r\n return !!match;\r\n }\r\n function traverse(el, hightlightTextNode) {\r\n var childNode, TEXT_NODE_TYPE = 3;\r\n for (var i = 0; i < el.childNodes.length; i++) {\r\n childNode = el.childNodes[i];\r\n if (childNode.nodeType === TEXT_NODE_TYPE) {\r\n i += hightlightTextNode(childNode) ? 1 : 0;\r\n } else {\r\n traverse(childNode, hightlightTextNode);\r\n }\r\n }\r\n }\r\n };\r\n function accent_replacer(chr) {\r\n return accented[chr.toUpperCase()] || chr;\r\n }\r\n function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) {\r\n var escapedPatterns = [], regexStr;\r\n for (var i = 0, len = patterns.length; i < len; i++) {\r\n var escapedWord = _.escapeRegExChars(patterns[i]);\r\n if (diacriticInsensitive) {\r\n escapedWord = escapedWord.replace(/\\S/g, accent_replacer);\r\n }\r\n escapedPatterns.push(escapedWord);\r\n }\r\n regexStr = wordsOnly ? \"\\\\b(\" + escapedPatterns.join(\"|\") + \")\\\\b\" : \"(\" + escapedPatterns.join(\"|\") + \")\";\r\n return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, \"i\");\r\n }\r\n }(window.document);\r\n var Input = function() {\r\n \"use strict\";\r\n var specialKeyCodeMap;\r\n specialKeyCodeMap = {\r\n 9: \"tab\",\r\n 27: \"esc\",\r\n 37: \"left\",\r\n 39: \"right\",\r\n 13: \"enter\",\r\n 38: \"up\",\r\n 40: \"down\"\r\n };\r\n function Input(o, www) {\r\n o = o || {};\r\n if (!o.input) {\r\n $.error(\"input is missing\");\r\n }\r\n www.mixin(this);\r\n this.$hint = $(o.hint);\r\n this.$input = $(o.input);\r\n this.$input.attr({\r\n \"aria-activedescendant\": \"\",\r\n \"aria-owns\": this.$input.attr(\"id\") + \"_listbox\",\r\n role: \"combobox\",\r\n \"aria-readonly\": \"true\",\r\n \"aria-autocomplete\": \"list\"\r\n });\r\n $(www.menu).attr(\"id\", this.$input.attr(\"id\") + \"_listbox\");\r\n this.query = this.$input.val();\r\n this.queryWhenFocused = this.hasFocus() ? this.query : null;\r\n this.$overflowHelper = buildOverflowHelper(this.$input);\r\n this._checkLanguageDirection();\r\n if (this.$hint.length === 0) {\r\n this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;\r\n }\r\n this.onSync(\"cursorchange\", this._updateDescendent);\r\n }\r\n Input.normalizeQuery = function(str) {\r\n return _.toStr(str).replace(/^\\s*/g, \"\").replace(/\\s{2,}/g, \" \");\r\n };\r\n _.mixin(Input.prototype, EventEmitter, {\r\n _onBlur: function onBlur() {\r\n this.resetInputValue();\r\n this.trigger(\"blurred\");\r\n },\r\n _onFocus: function onFocus() {\r\n this.queryWhenFocused = this.query;\r\n this.trigger(\"focused\");\r\n },\r\n _onKeydown: function onKeydown($e) {\r\n var keyName = specialKeyCodeMap[$e.which || $e.keyCode];\r\n this._managePreventDefault(keyName, $e);\r\n if (keyName && this._shouldTrigger(keyName, $e)) {\r\n this.trigger(keyName + \"Keyed\", $e);\r\n }\r\n },\r\n _onInput: function onInput() {\r\n this._setQuery(this.getInputValue());\r\n this.clearHintIfInvalid();\r\n this._checkLanguageDirection();\r\n },\r\n _managePreventDefault: function managePreventDefault(keyName, $e) {\r\n var preventDefault;\r\n switch (keyName) {\r\n case \"up\":\r\n case \"down\":\r\n preventDefault = !withModifier($e);\r\n break;\r\n\r\n default:\r\n preventDefault = false;\r\n }\r\n preventDefault && $e.preventDefault();\r\n },\r\n _shouldTrigger: function shouldTrigger(keyName, $e) {\r\n var trigger;\r\n switch (keyName) {\r\n case \"tab\":\r\n trigger = !withModifier($e);\r\n break;\r\n\r\n default:\r\n trigger = true;\r\n }\r\n return trigger;\r\n },\r\n _checkLanguageDirection: function checkLanguageDirection() {\r\n var dir = (this.$input.css(\"direction\") || \"ltr\").toLowerCase();\r\n if (this.dir !== dir) {\r\n this.dir = dir;\r\n this.$hint.attr(\"dir\", dir);\r\n this.trigger(\"langDirChanged\", dir);\r\n }\r\n },\r\n _setQuery: function setQuery(val, silent) {\r\n var areEquivalent, hasDifferentWhitespace;\r\n areEquivalent = areQueriesEquivalent(val, this.query);\r\n hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;\r\n this.query = val;\r\n if (!silent && !areEquivalent) {\r\n this.trigger(\"queryChanged\", this.query);\r\n } else if (!silent && hasDifferentWhitespace) {\r\n this.trigger(\"whitespaceChanged\", this.query);\r\n }\r\n },\r\n _updateDescendent: function updateDescendent(event, id) {\r\n this.$input.attr(\"aria-activedescendant\", id);\r\n },\r\n bind: function() {\r\n var that = this, onBlur, onFocus, onKeydown, onInput;\r\n onBlur = _.bind(this._onBlur, this);\r\n onFocus = _.bind(this._onFocus, this);\r\n onKeydown = _.bind(this._onKeydown, this);\r\n onInput = _.bind(this._onInput, this);\r\n this.$input.on(\"blur.tt\", onBlur).on(\"focus.tt\", onFocus).on(\"keydown.tt\", onKeydown);\r\n if (!_.isMsie() || _.isMsie() > 9) {\r\n this.$input.on(\"input.tt\", onInput);\r\n } else {\r\n this.$input.on(\"keydown.tt keypress.tt cut.tt paste.tt\", function($e) {\r\n if (specialKeyCodeMap[$e.which || $e.keyCode]) {\r\n return;\r\n }\r\n _.defer(_.bind(that._onInput, that, $e));\r\n });\r\n }\r\n return this;\r\n },\r\n focus: function focus() {\r\n this.$input.focus();\r\n },\r\n blur: function blur() {\r\n this.$input.blur();\r\n },\r\n getLangDir: function getLangDir() {\r\n return this.dir;\r\n },\r\n getQuery: function getQuery() {\r\n return this.query || \"\";\r\n },\r\n setQuery: function setQuery(val, silent) {\r\n this.setInputValue(val);\r\n this._setQuery(val, silent);\r\n },\r\n hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {\r\n return this.query !== this.queryWhenFocused;\r\n },\r\n getInputValue: function getInputValue() {\r\n return this.$input.val();\r\n },\r\n setInputValue: function setInputValue(value) {\r\n this.$input.val(value);\r\n this.clearHintIfInvalid();\r\n this._checkLanguageDirection();\r\n },\r\n resetInputValue: function resetInputValue() {\r\n this.setInputValue(this.query);\r\n },\r\n getHint: function getHint() {\r\n return this.$hint.val();\r\n },\r\n setHint: function setHint(value) {\r\n this.$hint.val(value);\r\n },\r\n clearHint: function clearHint() {\r\n this.setHint(\"\");\r\n },\r\n clearHintIfInvalid: function clearHintIfInvalid() {\r\n var val, hint, valIsPrefixOfHint, isValid;\r\n val = this.getInputValue();\r\n hint = this.getHint();\r\n valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;\r\n isValid = val !== \"\" && valIsPrefixOfHint && !this.hasOverflow();\r\n !isValid && this.clearHint();\r\n },\r\n hasFocus: function hasFocus() {\r\n return this.$input.is(\":focus\");\r\n },\r\n hasOverflow: function hasOverflow() {\r\n var constraint = this.$input.width() - 2;\r\n this.$overflowHelper.text(this.getInputValue());\r\n return this.$overflowHelper.width() >= constraint;\r\n },\r\n isCursorAtEnd: function() {\r\n var valueLength, selectionStart, range;\r\n valueLength = this.$input.val().length;\r\n selectionStart = this.$input[0].selectionStart;\r\n if (_.isNumber(selectionStart)) {\r\n return selectionStart === valueLength;\r\n } else if (document.selection) {\r\n range = document.selection.createRange();\r\n range.moveStart(\"character\", -valueLength);\r\n return valueLength === range.text.length;\r\n }\r\n return true;\r\n },\r\n destroy: function destroy() {\r\n this.$hint.off(\".tt\");\r\n this.$input.off(\".tt\");\r\n this.$overflowHelper.remove();\r\n this.$hint = this.$input = this.$overflowHelper = $(\"<div>\");\r\n }\r\n });\r\n return Input;\r\n function buildOverflowHelper($input) {\r\n return $('<pre aria-hidden=\"true\"></pre>').css({\r\n position: \"absolute\",\r\n visibility: \"hidden\",\r\n whiteSpace: \"pre\",\r\n fontFamily: $input.css(\"font-family\"),\r\n fontSize: $input.css(\"font-size\"),\r\n fontStyle: $input.css(\"font-style\"),\r\n fontVariant: $input.css(\"font-variant\"),\r\n fontWeight: $input.css(\"font-weight\"),\r\n wordSpacing: $input.css(\"word-spacing\"),\r\n letterSpacing: $input.css(\"letter-spacing\"),\r\n textIndent: $input.css(\"text-indent\"),\r\n textRendering: $input.css(\"text-rendering\"),\r\n textTransform: $input.css(\"text-transform\")\r\n }).insertAfter($input);\r\n }\r\n function areQueriesEquivalent(a, b) {\r\n return Input.normalizeQuery(a) === Input.normalizeQuery(b);\r\n }\r\n function withModifier($e) {\r\n return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;\r\n }\r\n }();\r\n var Dataset = function() {\r\n \"use strict\";\r\n var keys, nameGenerator;\r\n keys = {\r\n dataset: \"tt-selectable-dataset\",\r\n val: \"tt-selectable-display\",\r\n obj: \"tt-selectable-object\"\r\n };\r\n nameGenerator = _.getIdGenerator();\r\n function Dataset(o, www) {\r\n o = o || {};\r\n o.templates = o.templates || {};\r\n o.templates.notFound = o.templates.notFound || o.templates.empty;\r\n if (!o.source) {\r\n $.error(\"missing source\");\r\n }\r\n if (!o.node) {\r\n $.error(\"missing node\");\r\n }\r\n if (o.name && !isValidName(o.name)) {\r\n $.error(\"invalid dataset name: \" + o.name);\r\n }\r\n www.mixin(this);\r\n this.highlight = !!o.highlight;\r\n this.name = _.toStr(o.name || nameGenerator());\r\n this.limit = o.limit || 5;\r\n this.displayFn = getDisplayFn(o.display || o.displayKey);\r\n this.templates = getTemplates(o.templates, this.displayFn);\r\n this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;\r\n this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;\r\n this._resetLastSuggestion();\r\n this.$el = $(o.node).attr(\"role\", \"presentation\").addClass(this.classes.dataset).addClass(this.classes.dataset + \"-\" + this.name);\r\n }\r\n Dataset.extractData = function extractData(el) {\r\n var $el = $(el);\r\n if ($el.data(keys.obj)) {\r\n return {\r\n dataset: $el.data(keys.dataset) || \"\",\r\n val: $el.data(keys.val) || \"\",\r\n obj: $el.data(keys.obj) || null\r\n };\r\n }\r\n return null;\r\n };\r\n _.mixin(Dataset.prototype, EventEmitter, {\r\n _overwrite: function overwrite(query, suggestions) {\r\n suggestions = suggestions || [];\r\n if (suggestions.length) {\r\n this._renderSuggestions(query, suggestions);\r\n } else if (this.async && this.templates.pending) {\r\n this._renderPending(query);\r\n } else if (!this.async && this.templates.notFound) {\r\n this._renderNotFound(query);\r\n } else {\r\n this._empty();\r\n }\r\n this.trigger(\"rendered\", suggestions, false, this.name);\r\n },\r\n _append: function append(query, suggestions) {\r\n suggestions = suggestions || [];\r\n if (suggestions.length && this.$lastSuggestion.length) {\r\n this._appendSuggestions(query, suggestions);\r\n } else if (suggestions.length) {\r\n this._renderSuggestions(query, suggestions);\r\n } else if (!this.$lastSuggestion.length && this.templates.notFound) {\r\n this._renderNotFound(query);\r\n }\r\n this.trigger(\"rendered\", suggestions, true, this.name);\r\n },\r\n _renderSuggestions: function renderSuggestions(query, suggestions) {\r\n var $fragment;\r\n $fragment = this._getSuggestionsFragment(query, suggestions);\r\n this.$lastSuggestion = $fragment.children().last();\r\n this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));\r\n },\r\n _appendSuggestions: function appendSuggestions(query, suggestions) {\r\n var $fragment, $lastSuggestion;\r\n $fragment = this._getSuggestionsFragment(query, suggestions);\r\n $lastSuggestion = $fragment.children().last();\r\n this.$lastSuggestion.after($fragment);\r\n this.$lastSuggestion = $lastSuggestion;\r\n },\r\n _renderPending: function renderPending(query) {\r\n var template = this.templates.pending;\r\n this._resetLastSuggestion();\r\n template && this.$el.html(template({\r\n query: query,\r\n dataset: this.name\r\n }));\r\n },\r\n _renderNotFound: function renderNotFound(query) {\r\n var template = this.templates.notFound;\r\n this._resetLastSuggestion();\r\n template && this.$el.html(template({\r\n query: query,\r\n dataset: this.name\r\n }));\r\n },\r\n _empty: function empty() {\r\n this.$el.empty();\r\n this._resetLastSuggestion();\r\n },\r\n _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {\r\n var that = this, fragment;\r\n fragment = document.createDocumentFragment();\r\n _.each(suggestions, function getSuggestionNode(suggestion) {\r\n var $el, context;\r\n context = that._injectQuery(query, suggestion);\r\n $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + \" \" + that.classes.selectable);\r\n fragment.appendChild($el[0]);\r\n });\r\n this.highlight && highlight({\r\n className: this.classes.highlight,\r\n node: fragment,\r\n pattern: query\r\n });\r\n return $(fragment);\r\n },\r\n _getFooter: function getFooter(query, suggestions) {\r\n return this.templates.footer ? this.templates.footer({\r\n query: query,\r\n suggestions: suggestions,\r\n dataset: this.name\r\n }) : null;\r\n },\r\n _getHeader: function getHeader(query, suggestions) {\r\n return this.templates.header ? this.templates.header({\r\n query: query,\r\n suggestions: suggestions,\r\n dataset: this.name\r\n }) : null;\r\n },\r\n _resetLastSuggestion: function resetLastSuggestion() {\r\n this.$lastSuggestion = $();\r\n },\r\n _injectQuery: function injectQuery(query, obj) {\r\n return _.isObject(obj) ? _.mixin({\r\n _query: query\r\n }, obj) : obj;\r\n },\r\n update: function update(query) {\r\n var that = this, canceled = false, syncCalled = false, rendered = 0;\r\n this.cancel();\r\n this.cancel = function cancel() {\r\n canceled = true;\r\n that.cancel = $.noop;\r\n that.async && that.trigger(\"asyncCanceled\", query, that.name);\r\n };\r\n this.source(query, sync, async);\r\n !syncCalled && sync([]);\r\n function sync(suggestions) {\r\n if (syncCalled) {\r\n return;\r\n }\r\n syncCalled = true;\r\n suggestions = (suggestions || []).slice(0, that.limit);\r\n rendered = suggestions.length;\r\n that._overwrite(query, suggestions);\r\n if (rendered < that.limit && that.async) {\r\n that.trigger(\"asyncRequested\", query, that.name);\r\n }\r\n }\r\n function async(suggestions) {\r\n suggestions = suggestions || [];\r\n if (!canceled && rendered < that.limit) {\r\n that.cancel = $.noop;\r\n var idx = Math.abs(rendered - that.limit);\r\n rendered += idx;\r\n that._append(query, suggestions.slice(0, idx));\r\n that.async && that.trigger(\"asyncReceived\", query, that.name);\r\n }\r\n }\r\n },\r\n cancel: $.noop,\r\n clear: function clear() {\r\n this._empty();\r\n this.cancel();\r\n this.trigger(\"cleared\");\r\n },\r\n isEmpty: function isEmpty() {\r\n return this.$el.is(\":empty\");\r\n },\r\n destroy: function destroy() {\r\n this.$el = $(\"<div>\");\r\n }\r\n });\r\n return Dataset;\r\n function getDisplayFn(display) {\r\n display = display || _.stringify;\r\n return _.isFunction(display) ? display : displayFn;\r\n function displayFn(obj) {\r\n return obj[display];\r\n }\r\n }\r\n function getTemplates(templates, displayFn) {\r\n return {\r\n notFound: templates.notFound && _.templatify(templates.notFound),\r\n pending: templates.pending && _.templatify(templates.pending),\r\n header: templates.header && _.templatify(templates.header),\r\n footer: templates.footer && _.templatify(templates.footer),\r\n suggestion: templates.suggestion || suggestionTemplate\r\n };\r\n function suggestionTemplate(context) {\r\n return $('<div role=\"option\">').attr(\"id\", _.guid()).text(displayFn(context));\r\n }\r\n }\r\n function isValidName(str) {\r\n return /^[_a-zA-Z0-9-]+$/.test(str);\r\n }\r\n }();\r\n var Menu = function() {\r\n \"use strict\";\r\n function Menu(o, www) {\r\n var that = this;\r\n o = o || {};\r\n if (!o.node) {\r\n $.error(\"node is required\");\r\n }\r\n www.mixin(this);\r\n this.$node = $(o.node);\r\n this.query = null;\r\n this.datasets = _.map(o.datasets, initializeDataset);\r\n function initializeDataset(oDataset) {\r\n var node = that.$node.find(oDataset.node).first();\r\n oDataset.node = node.length ? node : $(\"<div>\").appendTo(that.$node);\r\n return new Dataset(oDataset, www);\r\n }\r\n }\r\n _.mixin(Menu.prototype, EventEmitter, {\r\n _onSelectableClick: function onSelectableClick($e) {\r\n this.trigger(\"selectableClicked\", $($e.currentTarget));\r\n },\r\n _onRendered: function onRendered(type, dataset, suggestions, async) {\r\n this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\r\n this.trigger(\"datasetRendered\", dataset, suggestions, async);\r\n },\r\n _onCleared: function onCleared() {\r\n this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());\r\n this.trigger(\"datasetCleared\");\r\n },\r\n _propagate: function propagate() {\r\n this.trigger.apply(this, arguments);\r\n },\r\n _allDatasetsEmpty: function allDatasetsEmpty() {\r\n return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) {\r\n var isEmpty = dataset.isEmpty();\r\n this.$node.attr(\"aria-expanded\", !isEmpty);\r\n return isEmpty;\r\n }, this));\r\n },\r\n _getSelectables: function getSelectables() {\r\n return this.$node.find(this.selectors.selectable);\r\n },\r\n _removeCursor: function _removeCursor() {\r\n var $selectable = this.getActiveSelectable();\r\n $selectable && $selectable.removeClass(this.classes.cursor);\r\n },\r\n _ensureVisible: function ensureVisible($el) {\r\n var elTop, elBottom, nodeScrollTop, nodeHeight;\r\n elTop = $el.position().top;\r\n elBottom = elTop + $el.outerHeight(true);\r\n nodeScrollTop = this.$node.scrollTop();\r\n nodeHeight = this.$node.height() + parseInt(this.$node.css(\"paddingTop\"), 10) + parseInt(this.$node.css(\"paddingBottom\"), 10);\r\n if (elTop < 0) {\r\n this.$node.scrollTop(nodeScrollTop + elTop);\r\n } else if (nodeHeight < elBottom) {\r\n this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));\r\n }\r\n },\r\n bind: function() {\r\n var that = this, onSelectableClick;\r\n onSelectableClick = _.bind(this._onSelectableClick, this);\r\n this.$node.on(\"click.tt\", this.selectors.selectable, onSelectableClick);\r\n this.$node.on(\"mouseover\", this.selectors.selectable, function() {\r\n that.setCursor($(this));\r\n });\r\n this.$node.on(\"mouseleave\", function() {\r\n that._removeCursor();\r\n });\r\n _.each(this.datasets, function(dataset) {\r\n dataset.onSync(\"asyncRequested\", that._propagate, that).onSync(\"asyncCanceled\", that._propagate, that).onSync(\"asyncReceived\", that._propagate, that).onSync(\"rendered\", that._onRendered, that).onSync(\"cleared\", that._onCleared, that);\r\n });\r\n return this;\r\n },\r\n isOpen: function isOpen() {\r\n return this.$node.hasClass(this.classes.open);\r\n },\r\n open: function open() {\r\n this.$node.scrollTop(0);\r\n this.$node.addClass(this.classes.open);\r\n },\r\n close: function close() {\r\n this.$node.attr(\"aria-expanded\", false);\r\n this.$node.removeClass(this.classes.open);\r\n this._removeCursor();\r\n },\r\n setLanguageDirection: function setLanguageDirection(dir) {\r\n this.$node.attr(\"dir\", dir);\r\n },\r\n selectableRelativeToCursor: function selectableRelativeToCursor(delta) {\r\n var $selectables, $oldCursor, oldIndex, newIndex;\r\n $oldCursor = this.getActiveSelectable();\r\n $selectables = this._getSelectables();\r\n oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;\r\n newIndex = oldIndex + delta;\r\n newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;\r\n newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;\r\n return newIndex === -1 ? null : $selectables.eq(newIndex);\r\n },\r\n setCursor: function setCursor($selectable) {\r\n this._removeCursor();\r\n if ($selectable = $selectable && $selectable.first()) {\r\n $selectable.addClass(this.classes.cursor);\r\n this._ensureVisible($selectable);\r\n }\r\n },\r\n getSelectableData: function getSelectableData($el) {\r\n return $el && $el.length ? Dataset.extractData($el) : null;\r\n },\r\n getActiveSelectable: function getActiveSelectable() {\r\n var $selectable = this._getSelectables().filter(this.selectors.cursor).first();\r\n return $selectable.length ? $selectable : null;\r\n },\r\n getTopSelectable: function getTopSelectable() {\r\n var $selectable = this._getSelectables().first();\r\n return $selectable.length ? $selectable : null;\r\n },\r\n update: function update(query) {\r\n var isValidUpdate = query !== this.query;\r\n if (isValidUpdate) {\r\n this.query = query;\r\n _.each(this.datasets, updateDataset);\r\n }\r\n return isValidUpdate;\r\n function updateDataset(dataset) {\r\n dataset.update(query);\r\n }\r\n },\r\n empty: function empty() {\r\n _.each(this.datasets, clearDataset);\r\n this.query = null;\r\n this.$node.addClass(this.classes.empty);\r\n function clearDataset(dataset) {\r\n dataset.clear();\r\n }\r\n },\r\n destroy: function destroy() {\r\n this.$node.off(\".tt\");\r\n this.$node = $(\"<div>\");\r\n _.each(this.datasets, destroyDataset);\r\n function destroyDataset(dataset) {\r\n dataset.destroy();\r\n }\r\n }\r\n });\r\n return Menu;\r\n }();\r\n var Status = function() {\r\n \"use strict\";\r\n function Status(options) {\r\n this.$el = $(\"<span></span>\", {\r\n role: \"status\",\r\n \"aria-live\": \"polite\"\r\n }).css({\r\n position: \"absolute\",\r\n padding: \"0\",\r\n border: \"0\",\r\n height: \"1px\",\r\n width: \"1px\",\r\n \"margin-bottom\": \"-1px\",\r\n \"margin-right\": \"-1px\",\r\n overflow: \"hidden\",\r\n clip: \"rect(0 0 0 0)\",\r\n \"white-space\": \"nowrap\"\r\n });\r\n options.$input.after(this.$el);\r\n _.each(options.menu.datasets, _.bind(function(dataset) {\r\n if (dataset.onSync) {\r\n dataset.onSync(\"rendered\", _.bind(this.update, this));\r\n dataset.onSync(\"cleared\", _.bind(this.cleared, this));\r\n }\r\n }, this));\r\n }\r\n _.mixin(Status.prototype, {\r\n update: function update(event, suggestions) {\r\n var length = suggestions.length;\r\n var words;\r\n if (length === 1) {\r\n words = {\r\n result: \"result\",\r\n is: \"is\"\r\n };\r\n } else {\r\n words = {\r\n result: \"results\",\r\n is: \"are\"\r\n };\r\n }\r\n this.$el.text(length + \" \" + words.result + \" \" + words.is + \" available, use up and down arrow keys to navigate.\");\r\n },\r\n cleared: function() {\r\n this.$el.text(\"\");\r\n }\r\n });\r\n return Status;\r\n }();\r\n var DefaultMenu = function() {\r\n \"use strict\";\r\n var s = Menu.prototype;\r\n function DefaultMenu() {\r\n Menu.apply(this, [].slice.call(arguments, 0));\r\n }\r\n _.mixin(DefaultMenu.prototype, Menu.prototype, {\r\n open: function open() {\r\n !this._allDatasetsEmpty() && this._show();\r\n return s.open.apply(this, [].slice.call(arguments, 0));\r\n },\r\n close: function close() {\r\n this._hide();\r\n return s.close.apply(this, [].slice.call(arguments, 0));\r\n },\r\n _onRendered: function onRendered() {\r\n if (this._allDatasetsEmpty()) {\r\n this._hide();\r\n } else {\r\n this.isOpen() && this._show();\r\n }\r\n return s._onRendered.apply(this, [].slice.call(arguments, 0));\r\n },\r\n _onCleared: function onCleared() {\r\n if (this._allDatasetsEmpty()) {\r\n this._hide();\r\n } else {\r\n this.isOpen() && this._show();\r\n }\r\n return s._onCleared.apply(this, [].slice.call(arguments, 0));\r\n },\r\n setLanguageDirection: function setLanguageDirection(dir) {\r\n this.$node.css(dir === \"ltr\" ? this.css.ltr : this.css.rtl);\r\n return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));\r\n },\r\n _hide: function hide() {\r\n this.$node.hide();\r\n },\r\n _show: function show() {\r\n this.$node.css(\"display\", \"block\");\r\n }\r\n });\r\n return DefaultMenu;\r\n }();\r\n var Typeahead = function() {\r\n \"use strict\";\r\n function Typeahead(o, www) {\r\n var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;\r\n o = o || {};\r\n if (!o.input) {\r\n $.error(\"missing input\");\r\n }\r\n if (!o.menu) {\r\n $.error(\"missing menu\");\r\n }\r\n if (!o.eventBus) {\r\n $.error(\"missing event bus\");\r\n }\r\n www.mixin(this);\r\n this.eventBus = o.eventBus;\r\n this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;\r\n this.input = o.input;\r\n this.menu = o.menu;\r\n this.enabled = true;\r\n this.active = false;\r\n this.input.hasFocus() && this.activate();\r\n this.dir = this.input.getLangDir();\r\n this._hacks();\r\n this.menu.bind().onSync(\"selectableClicked\", this._onSelectableClicked, this).onSync(\"asyncRequested\", this._onAsyncRequested, this).onSync(\"asyncCanceled\", this._onAsyncCanceled, this).onSync(\"asyncReceived\", this._onAsyncReceived, this).onSync(\"datasetRendered\", this._onDatasetRendered, this).onSync(\"datasetCleared\", this._onDatasetCleared, this);\r\n onFocused = c(this, \"activate\", \"open\", \"_onFocused\");\r\n onBlurred = c(this, \"deactivate\", \"_onBlurred\");\r\n onEnterKeyed = c(this, \"isActive\", \"isOpen\", \"_onEnterKeyed\");\r\n onTabKeyed = c(this, \"isActive\", \"isOpen\", \"_onTabKeyed\");\r\n onEscKeyed = c(this, \"isActive\", \"_onEscKeyed\");\r\n onUpKeyed = c(this, \"isActive\", \"open\", \"_onUpKeyed\");\r\n onDownKeyed = c(this, \"isActive\", \"open\", \"_onDownKeyed\");\r\n onLeftKeyed = c(this, \"isActive\", \"isOpen\", \"_onLeftKeyed\");\r\n onRightKeyed = c(this, \"isActive\", \"isOpen\", \"_onRightKeyed\");\r\n onQueryChanged = c(this, \"_openIfActive\", \"_onQueryChanged\");\r\n onWhitespaceChanged = c(this, \"_openIfActive\", \"_onWhitespaceChanged\");\r\n this.input.bind().onSync(\"focused\", onFocused, this).onSync(\"blurred\", onBlurred, this).onSync(\"enterKeyed\", onEnterKeyed, this).onSync(\"tabKeyed\", onTabKeyed, this).onSync(\"escKeyed\", onEscKeyed, this).onSync(\"upKeyed\", onUpKeyed, this).onSync(\"downKeyed\", onDownKeyed, this).onSync(\"leftKeyed\", onLeftKeyed, this).onSync(\"rightKeyed\", onRightKeyed, this).onSync(\"queryChanged\", onQueryChanged, this).onSync(\"whitespaceChanged\", onWhitespaceChanged, this).onSync(\"langDirChanged\", this._onLangDirChanged, this);\r\n }\r\n _.mixin(Typeahead.prototype, {\r\n _hacks: function hacks() {\r\n var $input, $menu;\r\n $input = this.input.$input || $(\"<div>\");\r\n $menu = this.menu.$node || $(\"<div>\");\r\n $input.on(\"blur.tt\", function($e) {\r\n var active, isActive, hasActive;\r\n active = document.activeElement;\r\n isActive = $menu.is(active);\r\n hasActive = $menu.has(active).length > 0;\r\n if (_.isMsie() && (isActive || hasActive)) {\r\n $e.preventDefault();\r\n $e.stopImmediatePropagation();\r\n _.defer(function() {\r\n $input.focus();\r\n });\r\n }\r\n });\r\n $menu.on(\"mousedown.tt\", function($e) {\r\n $e.preventDefault();\r\n });\r\n },\r\n _onSelectableClicked: function onSelectableClicked(type, $el) {\r\n this.select($el);\r\n },\r\n _onDatasetCleared: function onDatasetCleared() {\r\n this._updateHint();\r\n },\r\n _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) {\r\n this._updateHint();\r\n this.eventBus.trigger(\"render\", suggestions, async, dataset);\r\n },\r\n _onAsyncRequested: function onAsyncRequested(type, dataset, query) {\r\n this.eventBus.trigger(\"asyncrequest\", query, dataset);\r\n },\r\n _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {\r\n this.eventBus.trigger(\"asynccancel\", query, dataset);\r\n },\r\n _onAsyncReceived: function onAsyncReceived(type, dataset, query) {\r\n this.eventBus.trigger(\"asyncreceive\", query, dataset);\r\n },\r\n _onFocused: function onFocused() {\r\n this._minLengthMet() && this.menu.update(this.input.getQuery());\r\n },\r\n _onBlurred: function onBlurred() {\r\n if (this.input.hasQueryChangedSinceLastFocus()) {\r\n this.eventBus.trigger(\"change\", this.input.getQuery());\r\n }\r\n },\r\n _onEnterKeyed: function onEnterKeyed(type, $e) {\r\n var $selectable;\r\n if ($selectable = this.menu.getActiveSelectable()) {\r\n if (this.select($selectable)) {\r\n $e.preventDefault();\r\n $e.stopPropagation();\r\n }\r\n }\r\n },\r\n _onTabKeyed: function onTabKeyed(type, $e) {\r\n var $selectable;\r\n if ($selectable = this.menu.getActiveSelectable()) {\r\n this.select($selectable) && $e.preventDefault();\r\n } else if ($selectable = this.menu.getTopSelectable()) {\r\n this.autocomplete($selectable) && $e.preventDefault();\r\n }\r\n },\r\n _onEscKeyed: function onEscKeyed() {\r\n this.close();\r\n },\r\n _onUpKeyed: function onUpKeyed() {\r\n this.moveCursor(-1);\r\n },\r\n _onDownKeyed: function onDownKeyed() {\r\n this.moveCursor(+1);\r\n },\r\n _onLeftKeyed: function onLeftKeyed() {\r\n if (this.dir === \"rtl\" && this.input.isCursorAtEnd()) {\r\n this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\r\n }\r\n },\r\n _onRightKeyed: function onRightKeyed() {\r\n if (this.dir === \"ltr\" && this.input.isCursorAtEnd()) {\r\n this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());\r\n }\r\n },\r\n _onQueryChanged: function onQueryChanged(e, query) {\r\n this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();\r\n },\r\n _onWhitespaceChanged: function onWhitespaceChanged() {\r\n this._updateHint();\r\n },\r\n _onLangDirChanged: function onLangDirChanged(e, dir) {\r\n if (this.dir !== dir) {\r\n this.dir = dir;\r\n this.menu.setLanguageDirection(dir);\r\n }\r\n },\r\n _openIfActive: function openIfActive() {\r\n this.isActive() && this.open();\r\n },\r\n _minLengthMet: function minLengthMet(query) {\r\n query = _.isString(query) ? query : this.input.getQuery() || \"\";\r\n return query.length >= this.minLength;\r\n },\r\n _updateHint: function updateHint() {\r\n var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;\r\n $selectable = this.menu.getTopSelectable();\r\n data = this.menu.getSelectableData($selectable);\r\n val = this.input.getInputValue();\r\n if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {\r\n query = Input.normalizeQuery(val);\r\n escapedQuery = _.escapeRegExChars(query);\r\n frontMatchRegEx = new RegExp(\"^(?:\" + escapedQuery + \")(.+$)\", \"i\");\r\n match = frontMatchRegEx.exec(data.val);\r\n match && this.input.setHint(val + match[1]);\r\n } else {\r\n this.input.clearHint();\r\n }\r\n },\r\n isEnabled: function isEnabled() {\r\n return this.enabled;\r\n },\r\n enable: function enable() {\r\n this.enabled = true;\r\n },\r\n disable: function disable() {\r\n this.enabled = false;\r\n },\r\n isActive: function isActive() {\r\n return this.active;\r\n },\r\n activate: function activate() {\r\n if (this.isActive()) {\r\n return true;\r\n } else if (!this.isEnabled() || this.eventBus.before(\"active\")) {\r\n return false;\r\n } else {\r\n this.active = true;\r\n this.eventBus.trigger(\"active\");\r\n return true;\r\n }\r\n },\r\n deactivate: function deactivate() {\r\n if (!this.isActive()) {\r\n return true;\r\n } else if (this.eventBus.before(\"idle\")) {\r\n return false;\r\n } else {\r\n this.active = false;\r\n this.close();\r\n this.eventBus.trigger(\"idle\");\r\n return true;\r\n }\r\n },\r\n isOpen: function isOpen() {\r\n return this.menu.isOpen();\r\n },\r\n open: function open() {\r\n if (!this.isOpen() && !this.eventBus.before(\"open\")) {\r\n this.menu.open();\r\n this._updateHint();\r\n this.eventBus.trigger(\"open\");\r\n }\r\n return this.isOpen();\r\n },\r\n close: function close() {\r\n if (this.isOpen() && !this.eventBus.before(\"close\")) {\r\n this.menu.close();\r\n this.input.clearHint();\r\n this.input.resetInputValue();\r\n this.eventBus.trigger(\"close\");\r\n }\r\n return !this.isOpen();\r\n },\r\n setVal: function setVal(val) {\r\n this.input.setQuery(_.toStr(val));\r\n },\r\n getVal: function getVal() {\r\n return this.input.getQuery();\r\n },\r\n select: function select($selectable) {\r\n var data = this.menu.getSelectableData($selectable);\r\n if (data && !this.eventBus.before(\"select\", data.obj, data.dataset)) {\r\n this.input.setQuery(data.val, true);\r\n this.eventBus.trigger(\"select\", data.obj, data.dataset);\r\n this.close();\r\n return true;\r\n }\r\n return false;\r\n },\r\n autocomplete: function autocomplete($selectable) {\r\n var query, data, isValid;\r\n query = this.input.getQuery();\r\n data = this.menu.getSelectableData($selectable);\r\n isValid = data && query !== data.val;\r\n if (isValid && !this.eventBus.before(\"autocomplete\", data.obj, data.dataset)) {\r\n this.input.setQuery(data.val);\r\n this.eventBus.trigger(\"autocomplete\", data.obj, data.dataset);\r\n return true;\r\n }\r\n return false;\r\n },\r\n moveCursor: function moveCursor(delta) {\r\n var query, $candidate, data, suggestion, datasetName, cancelMove, id;\r\n query = this.input.getQuery();\r\n $candidate = this.menu.selectableRelativeToCursor(delta);\r\n data = this.menu.getSelectableData($candidate);\r\n suggestion = data ? data.obj : null;\r\n datasetName = data ? data.dataset : null;\r\n id = $candidate ? $candidate.attr(\"id\") : null;\r\n this.input.trigger(\"cursorchange\", id);\r\n cancelMove = this._minLengthMet() && this.menu.update(query);\r\n if (!cancelMove && !this.eventBus.before(\"cursorchange\", suggestion, datasetName)) {\r\n this.menu.setCursor($candidate);\r\n if (data) {\r\n this.input.setInputValue(data.val);\r\n } else {\r\n this.input.resetInputValue();\r\n this._updateHint();\r\n }\r\n this.eventBus.trigger(\"cursorchange\", suggestion, datasetName);\r\n return true;\r\n }\r\n return false;\r\n },\r\n destroy: function destroy() {\r\n this.input.destroy();\r\n this.menu.destroy();\r\n }\r\n });\r\n return Typeahead;\r\n function c(ctx) {\r\n var methods = [].slice.call(arguments, 1);\r\n return function() {\r\n var args = [].slice.call(arguments);\r\n _.each(methods, function(method) {\r\n return ctx[method].apply(ctx, args);\r\n });\r\n };\r\n }\r\n }();\r\n (function() {\r\n \"use strict\";\r\n var old, keys, methods;\r\n old = $.fn.typeahead;\r\n keys = {\r\n www: \"tt-www\",\r\n attrs: \"tt-attrs\",\r\n typeahead: \"tt-typeahead\"\r\n };\r\n methods = {\r\n initialize: function initialize(o, datasets) {\r\n var www;\r\n datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);\r\n o = o || {};\r\n www = WWW(o.classNames);\r\n return this.each(attach);\r\n function attach() {\r\n var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor;\r\n _.each(datasets, function(d) {\r\n d.highlight = !!o.highlight;\r\n });\r\n $input = $(this);\r\n $wrapper = $(www.html.wrapper);\r\n $hint = $elOrNull(o.hint);\r\n $menu = $elOrNull(o.menu);\r\n defaultHint = o.hint !== false && !$hint;\r\n defaultMenu = o.menu !== false && !$menu;\r\n defaultHint && ($hint = buildHintFromInput($input, www));\r\n defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));\r\n $hint && $hint.val(\"\");\r\n $input = prepInput($input, www);\r\n if (defaultHint || defaultMenu) {\r\n $wrapper.css(www.css.wrapper);\r\n $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);\r\n $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);\r\n }\r\n MenuConstructor = defaultMenu ? DefaultMenu : Menu;\r\n eventBus = new EventBus({\r\n el: $input\r\n });\r\n input = new Input({\r\n hint: $hint,\r\n input: $input\r\n }, www);\r\n menu = new MenuConstructor({\r\n node: $menu,\r\n datasets: datasets\r\n }, www);\r\n status = new Status({\r\n $input: $input,\r\n menu: menu\r\n });\r\n typeahead = new Typeahead({\r\n input: input,\r\n menu: menu,\r\n eventBus: eventBus,\r\n minLength: o.minLength\r\n }, www);\r\n $input.data(keys.www, www);\r\n $input.data(keys.typeahead, typeahead);\r\n }\r\n },\r\n isEnabled: function isEnabled() {\r\n var enabled;\r\n ttEach(this.first(), function(t) {\r\n enabled = t.isEnabled();\r\n });\r\n return enabled;\r\n },\r\n enable: function enable() {\r\n ttEach(this, function(t) {\r\n t.enable();\r\n });\r\n return this;\r\n },\r\n disable: function disable() {\r\n ttEach(this, function(t) {\r\n t.disable();\r\n });\r\n return this;\r\n },\r\n isActive: function isActive() {\r\n var active;\r\n ttEach(this.first(), function(t) {\r\n active = t.isActive();\r\n });\r\n return active;\r\n },\r\n activate: function activate() {\r\n ttEach(this, function(t) {\r\n t.activate();\r\n });\r\n return this;\r\n },\r\n deactivate: function deactivate() {\r\n ttEach(this, function(t) {\r\n t.deactivate();\r\n });\r\n return this;\r\n },\r\n isOpen: function isOpen() {\r\n var open;\r\n ttEach(this.first(), function(t) {\r\n open = t.isOpen();\r\n });\r\n return open;\r\n },\r\n open: function open() {\r\n ttEach(this, function(t) {\r\n t.open();\r\n });\r\n return this;\r\n },\r\n close: function close() {\r\n ttEach(this, function(t) {\r\n t.close();\r\n });\r\n return this;\r\n },\r\n select: function select(el) {\r\n var success = false, $el = $(el);\r\n ttEach(this.first(), function(t) {\r\n success = t.select($el);\r\n });\r\n return success;\r\n },\r\n autocomplete: function autocomplete(el) {\r\n var success = false, $el = $(el);\r\n ttEach(this.first(), function(t) {\r\n success = t.autocomplete($el);\r\n });\r\n return success;\r\n },\r\n moveCursor: function moveCursoe(delta) {\r\n var success = false;\r\n ttEach(this.first(), function(t) {\r\n success = t.moveCursor(delta);\r\n });\r\n return success;\r\n },\r\n val: function val(newVal) {\r\n var query;\r\n if (!arguments.length) {\r\n ttEach(this.first(), function(t) {\r\n query = t.getVal();\r\n });\r\n return query;\r\n } else {\r\n ttEach(this, function(t) {\r\n t.setVal(_.toStr(newVal));\r\n });\r\n return this;\r\n }\r\n },\r\n destroy: function destroy() {\r\n ttEach(this, function(typeahead, $input) {\r\n revert($input);\r\n typeahead.destroy();\r\n });\r\n return this;\r\n }\r\n };\r\n $.fn.typeahead = function(method) {\r\n if (methods[method]) {\r\n return methods[method].apply(this, [].slice.call(arguments, 1));\r\n } else {\r\n return methods.initialize.apply(this, arguments);\r\n }\r\n };\r\n $.fn.typeahead.noConflict = function noConflict() {\r\n $.fn.typeahead = old;\r\n return this;\r\n };\r\n function ttEach($els, fn) {\r\n $els.each(function() {\r\n var $input = $(this), typeahead;\r\n (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);\r\n });\r\n }\r\n function buildHintFromInput($input, www) {\r\n return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop(\"readonly\", true).removeAttr(\"id name placeholder required\").attr({\r\n spellcheck: \"false\",\r\n tabindex: -1\r\n });\r\n }\r\n function prepInput($input, www) {\r\n $input.data(keys.attrs, {\r\n dir: $input.attr(\"dir\"),\r\n autocomplete: $input.attr(\"autocomplete\"),\r\n spellcheck: $input.attr(\"spellcheck\"),\r\n style: $input.attr(\"style\")\r\n });\r\n $input.addClass(www.classes.input).attr({\r\n spellcheck: false\r\n });\r\n try {\r\n !$input.attr(\"dir\") && $input.attr(\"dir\", \"auto\");\r\n } catch (e) {}\r\n return $input;\r\n }\r\n function getBackgroundStyles($el) {\r\n return {\r\n backgroundAttachment: $el.css(\"background-attachment\"),\r\n backgroundClip: $el.css(\"background-clip\"),\r\n backgroundColor: $el.css(\"background-color\"),\r\n backgroundImage: $el.css(\"background-image\"),\r\n backgroundOrigin: $el.css(\"background-origin\"),\r\n backgroundPosition: $el.css(\"background-position\"),\r\n backgroundRepeat: $el.css(\"background-repeat\"),\r\n backgroundSize: $el.css(\"background-size\")\r\n };\r\n }\r\n function revert($input) {\r\n var www, $wrapper;\r\n www = $input.data(keys.www);\r\n $wrapper = $input.parent().filter(www.selectors.wrapper);\r\n _.each($input.data(keys.attrs), function(val, key) {\r\n _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);\r\n });\r\n $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);\r\n if ($wrapper.length) {\r\n $input.detach().insertAfter($wrapper);\r\n $wrapper.remove();\r\n }\r\n }\r\n function $elOrNull(obj) {\r\n var isValid, $el;\r\n isValid = _.isJQuery(obj) || _.isElement(obj);\r\n $el = isValid ? $(obj).first() : [];\r\n return $el.length ? $el : null;\r\n }\r\n })();\r\n});","// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\nrequire('../../js/transition.js')\nrequire('../../js/alert.js')\nrequire('../../js/button.js')\nrequire('../../js/carousel.js')\nrequire('../../js/collapse.js')\nrequire('../../js/dropdown.js')\nrequire('../../js/modal.js')\nrequire('../../js/tooltip.js')\nrequire('../../js/popover.js')\nrequire('../../js/scrollspy.js')\nrequire('../../js/tab.js')\nrequire('../../js/affix.js')","/* ========================================================================\n * Bootstrap: affix.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#affix\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // AFFIX CLASS DEFINITION\n // ======================\n\n var Affix = function (element, options) {\n this.options = $.extend({}, Affix.DEFAULTS, options)\n\n var target = this.options.target === Affix.DEFAULTS.target ? $(this.options.target) : $(document).find(this.options.target)\n\n this.$target = target\n .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this))\n .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))\n\n this.$element = $(element)\n this.affixed = null\n this.unpin = null\n this.pinnedOffset = null\n\n this.checkPosition()\n }\n\n Affix.VERSION = '3.4.1'\n\n Affix.RESET = 'affix affix-top affix-bottom'\n\n Affix.DEFAULTS = {\n offset: 0,\n target: window\n }\n\n Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) {\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n var targetHeight = this.$target.height()\n\n if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false\n\n if (this.affixed == 'bottom') {\n if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom'\n return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom'\n }\n\n var initializing = this.affixed == null\n var colliderTop = initializing ? scrollTop : position.top\n var colliderHeight = initializing ? targetHeight : height\n\n if (offsetTop != null && scrollTop <= offsetTop) return 'top'\n if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom'\n\n return false\n }\n\n Affix.prototype.getPinnedOffset = function () {\n if (this.pinnedOffset) return this.pinnedOffset\n this.$element.removeClass(Affix.RESET).addClass('affix')\n var scrollTop = this.$target.scrollTop()\n var position = this.$element.offset()\n return (this.pinnedOffset = position.top - scrollTop)\n }\n\n Affix.prototype.checkPositionWithEventLoop = function () {\n setTimeout($.proxy(this.checkPosition, this), 1)\n }\n\n Affix.prototype.checkPosition = function () {\n if (!this.$element.is(':visible')) return\n\n var height = this.$element.height()\n var offset = this.options.offset\n var offsetTop = offset.top\n var offsetBottom = offset.bottom\n var scrollHeight = Math.max($(document).height(), $(document.body).height())\n\n if (typeof offset != 'object') offsetBottom = offsetTop = offset\n if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)\n if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element)\n\n var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom)\n\n if (this.affixed != affix) {\n if (this.unpin != null) this.$element.css('top', '')\n\n var affixType = 'affix' + (affix ? '-' + affix : '')\n var e = $.Event(affixType + '.bs.affix')\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n this.affixed = affix\n this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null\n\n this.$element\n .removeClass(Affix.RESET)\n .addClass(affixType)\n .trigger(affixType.replace('affix', 'affixed') + '.bs.affix')\n }\n\n if (affix == 'bottom') {\n this.$element.offset({\n top: scrollHeight - height - offsetBottom\n })\n }\n }\n\n\n // AFFIX PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.affix')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.affix', (data = new Affix(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.affix\n\n $.fn.affix = Plugin\n $.fn.affix.Constructor = Affix\n\n\n // AFFIX NO CONFLICT\n // =================\n\n $.fn.affix.noConflict = function () {\n $.fn.affix = old\n return this\n }\n\n\n // AFFIX DATA-API\n // ==============\n\n $(window).on('load', function () {\n $('[data-spy=\"affix\"]').each(function () {\n var $spy = $(this)\n var data = $spy.data()\n\n data.offset = data.offset || {}\n\n if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom\n if (data.offsetTop != null) data.offset.top = data.offsetTop\n\n Plugin.call($spy, data)\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // ALERT CLASS DEFINITION\n // ======================\n\n var dismiss = '[data-dismiss=\"alert\"]'\n var Alert = function (el) {\n $(el).on('click', dismiss, this.close)\n }\n\n Alert.VERSION = '3.4.1'\n\n Alert.TRANSITION_DURATION = 150\n\n Alert.prototype.close = function (e) {\n var $this = $(this)\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n selector = selector === '#' ? [] : selector\n var $parent = $(document).find(selector)\n\n if (e) e.preventDefault()\n\n if (!$parent.length) {\n $parent = $this.closest('.alert')\n }\n\n $parent.trigger(e = $.Event('close.bs.alert'))\n\n if (e.isDefaultPrevented()) return\n\n $parent.removeClass('in')\n\n function removeElement() {\n // detach from parent, fire event then clean up data\n $parent.detach().trigger('closed.bs.alert').remove()\n }\n\n $.support.transition && $parent.hasClass('fade') ?\n $parent\n .one('bsTransitionEnd', removeElement)\n .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n removeElement()\n }\n\n\n // ALERT PLUGIN DEFINITION\n // =======================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.alert')\n\n if (!data) $this.data('bs.alert', (data = new Alert(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.alert\n\n $.fn.alert = Plugin\n $.fn.alert.Constructor = Alert\n\n\n // ALERT NO CONFLICT\n // =================\n\n $.fn.alert.noConflict = function () {\n $.fn.alert = old\n return this\n }\n\n\n // ALERT DATA-API\n // ==============\n\n $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: button.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#buttons\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // BUTTON PUBLIC CLASS DEFINITION\n // ==============================\n\n var Button = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Button.DEFAULTS, options)\n this.isLoading = false\n }\n\n Button.VERSION = '3.4.1'\n\n Button.DEFAULTS = {\n loadingText: 'loading...'\n }\n\n Button.prototype.setState = function (state) {\n var d = 'disabled'\n var $el = this.$element\n var val = $el.is('input') ? 'val' : 'html'\n var data = $el.data()\n\n state += 'Text'\n\n if (data.resetText == null) $el.data('resetText', $el[val]())\n\n // push to event loop to allow forms to submit\n setTimeout($.proxy(function () {\n $el[val](data[state] == null ? this.options[state] : data[state])\n\n if (state == 'loadingText') {\n this.isLoading = true\n $el.addClass(d).attr(d, d).prop(d, true)\n } else if (this.isLoading) {\n this.isLoading = false\n $el.removeClass(d).removeAttr(d).prop(d, false)\n }\n }, this), 0)\n }\n\n Button.prototype.toggle = function () {\n var changed = true\n var $parent = this.$element.closest('[data-toggle=\"buttons\"]')\n\n if ($parent.length) {\n var $input = this.$element.find('input')\n if ($input.prop('type') == 'radio') {\n if ($input.prop('checked')) changed = false\n $parent.find('.active').removeClass('active')\n this.$element.addClass('active')\n } else if ($input.prop('type') == 'checkbox') {\n if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false\n this.$element.toggleClass('active')\n }\n $input.prop('checked', this.$element.hasClass('active'))\n if (changed) $input.trigger('change')\n } else {\n this.$element.attr('aria-pressed', !this.$element.hasClass('active'))\n this.$element.toggleClass('active')\n }\n }\n\n\n // BUTTON PLUGIN DEFINITION\n // ========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.button')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.button', (data = new Button(this, options)))\n\n if (option == 'toggle') data.toggle()\n else if (option) data.setState(option)\n })\n }\n\n var old = $.fn.button\n\n $.fn.button = Plugin\n $.fn.button.Constructor = Button\n\n\n // BUTTON NO CONFLICT\n // ==================\n\n $.fn.button.noConflict = function () {\n $.fn.button = old\n return this\n }\n\n\n // BUTTON DATA-API\n // ===============\n\n $(document)\n .on('click.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n var $btn = $(e.target).closest('.btn')\n Plugin.call($btn, 'toggle')\n if (!($(e.target).is('input[type=\"radio\"], input[type=\"checkbox\"]'))) {\n // Prevent double click on radios, and the double selections (so cancellation) on checkboxes\n e.preventDefault()\n // The target component still receive the focus\n if ($btn.is('input,button')) $btn.trigger('focus')\n else $btn.find('input:visible,button:visible').first().trigger('focus')\n }\n })\n .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^=\"button\"]', function (e) {\n $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: carousel.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#carousel\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CAROUSEL CLASS DEFINITION\n // =========================\n\n var Carousel = function (element, options) {\n this.$element = $(element)\n this.$indicators = this.$element.find('.carousel-indicators')\n this.options = options\n this.paused = null\n this.sliding = null\n this.interval = null\n this.$active = null\n this.$items = null\n\n this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))\n\n this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element\n .on('mouseenter.bs.carousel', $.proxy(this.pause, this))\n .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))\n }\n\n Carousel.VERSION = '3.4.1'\n\n Carousel.TRANSITION_DURATION = 600\n\n Carousel.DEFAULTS = {\n interval: 5000,\n pause: 'hover',\n wrap: true,\n keyboard: true\n }\n\n Carousel.prototype.keydown = function (e) {\n if (/input|textarea/i.test(e.target.tagName)) return\n switch (e.which) {\n case 37: this.prev(); break\n case 39: this.next(); break\n default: return\n }\n\n e.preventDefault()\n }\n\n Carousel.prototype.cycle = function (e) {\n e || (this.paused = false)\n\n this.interval && clearInterval(this.interval)\n\n this.options.interval\n && !this.paused\n && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))\n\n return this\n }\n\n Carousel.prototype.getItemIndex = function (item) {\n this.$items = item.parent().children('.item')\n return this.$items.index(item || this.$active)\n }\n\n Carousel.prototype.getItemForDirection = function (direction, active) {\n var activeIndex = this.getItemIndex(active)\n var willWrap = (direction == 'prev' && activeIndex === 0)\n || (direction == 'next' && activeIndex == (this.$items.length - 1))\n if (willWrap && !this.options.wrap) return active\n var delta = direction == 'prev' ? -1 : 1\n var itemIndex = (activeIndex + delta) % this.$items.length\n return this.$items.eq(itemIndex)\n }\n\n Carousel.prototype.to = function (pos) {\n var that = this\n var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))\n\n if (pos > (this.$items.length - 1) || pos < 0) return\n\n if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, \"slid\"\n if (activeIndex == pos) return this.pause().cycle()\n\n return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))\n }\n\n Carousel.prototype.pause = function (e) {\n e || (this.paused = true)\n\n if (this.$element.find('.next, .prev').length && $.support.transition) {\n this.$element.trigger($.support.transition.end)\n this.cycle(true)\n }\n\n this.interval = clearInterval(this.interval)\n\n return this\n }\n\n Carousel.prototype.next = function () {\n if (this.sliding) return\n return this.slide('next')\n }\n\n Carousel.prototype.prev = function () {\n if (this.sliding) return\n return this.slide('prev')\n }\n\n Carousel.prototype.slide = function (type, next) {\n var $active = this.$element.find('.item.active')\n var $next = next || this.getItemForDirection(type, $active)\n var isCycling = this.interval\n var direction = type == 'next' ? 'left' : 'right'\n var that = this\n\n if ($next.hasClass('active')) return (this.sliding = false)\n\n var relatedTarget = $next[0]\n var slideEvent = $.Event('slide.bs.carousel', {\n relatedTarget: relatedTarget,\n direction: direction\n })\n this.$element.trigger(slideEvent)\n if (slideEvent.isDefaultPrevented()) return\n\n this.sliding = true\n\n isCycling && this.pause()\n\n if (this.$indicators.length) {\n this.$indicators.find('.active').removeClass('active')\n var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])\n $nextIndicator && $nextIndicator.addClass('active')\n }\n\n var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, \"slid\"\n if ($.support.transition && this.$element.hasClass('slide')) {\n $next.addClass(type)\n if (typeof $next === 'object' && $next.length) {\n $next[0].offsetWidth // force reflow\n }\n $active.addClass(direction)\n $next.addClass(direction)\n $active\n .one('bsTransitionEnd', function () {\n $next.removeClass([type, direction].join(' ')).addClass('active')\n $active.removeClass(['active', direction].join(' '))\n that.sliding = false\n setTimeout(function () {\n that.$element.trigger(slidEvent)\n }, 0)\n })\n .emulateTransitionEnd(Carousel.TRANSITION_DURATION)\n } else {\n $active.removeClass('active')\n $next.addClass('active')\n this.sliding = false\n this.$element.trigger(slidEvent)\n }\n\n isCycling && this.cycle()\n\n return this\n }\n\n\n // CAROUSEL PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.carousel')\n var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option)\n var action = typeof option == 'string' ? option : options.slide\n\n if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))\n if (typeof option == 'number') data.to(option)\n else if (action) data[action]()\n else if (options.interval) data.pause().cycle()\n })\n }\n\n var old = $.fn.carousel\n\n $.fn.carousel = Plugin\n $.fn.carousel.Constructor = Carousel\n\n\n // CAROUSEL NO CONFLICT\n // ====================\n\n $.fn.carousel.noConflict = function () {\n $.fn.carousel = old\n return this\n }\n\n\n // CAROUSEL DATA-API\n // =================\n\n var clickHandler = function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n if (href) {\n href = href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n }\n\n var target = $this.attr('data-target') || href\n var $target = $(document).find(target)\n\n if (!$target.hasClass('carousel')) return\n\n var options = $.extend({}, $target.data(), $this.data())\n var slideIndex = $this.attr('data-slide-to')\n if (slideIndex) options.interval = false\n\n Plugin.call($target, options)\n\n if (slideIndex) {\n $target.data('bs.carousel').to(slideIndex)\n }\n\n e.preventDefault()\n }\n\n $(document)\n .on('click.bs.carousel.data-api', '[data-slide]', clickHandler)\n .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)\n\n $(window).on('load', function () {\n $('[data-ride=\"carousel\"]').each(function () {\n var $carousel = $(this)\n Plugin.call($carousel, $carousel.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n 'use strict';\n\n // COLLAPSE PUBLIC CLASS DEFINITION\n // ================================\n\n var Collapse = function (element, options) {\n this.$element = $(element)\n this.options = $.extend({}, Collapse.DEFAULTS, options)\n this.$trigger = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n this.transitioning = null\n\n if (this.options.parent) {\n this.$parent = this.getParent()\n } else {\n this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n }\n\n if (this.options.toggle) this.toggle()\n }\n\n Collapse.VERSION = '3.4.1'\n\n Collapse.TRANSITION_DURATION = 350\n\n Collapse.DEFAULTS = {\n toggle: true\n }\n\n Collapse.prototype.dimension = function () {\n var hasWidth = this.$element.hasClass('width')\n return hasWidth ? 'width' : 'height'\n }\n\n Collapse.prototype.show = function () {\n if (this.transitioning || this.$element.hasClass('in')) return\n\n var activesData\n var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n if (actives && actives.length) {\n activesData = actives.data('bs.collapse')\n if (activesData && activesData.transitioning) return\n }\n\n var startEvent = $.Event('show.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n if (actives && actives.length) {\n Plugin.call(actives, 'hide')\n activesData || actives.data('bs.collapse', null)\n }\n\n var dimension = this.dimension()\n\n this.$element\n .removeClass('collapse')\n .addClass('collapsing')[dimension](0)\n .attr('aria-expanded', true)\n\n this.$trigger\n .removeClass('collapsed')\n .attr('aria-expanded', true)\n\n this.transitioning = 1\n\n var complete = function () {\n this.$element\n .removeClass('collapsing')\n .addClass('collapse in')[dimension]('')\n this.transitioning = 0\n this.$element\n .trigger('shown.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n this.$element\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n }\n\n Collapse.prototype.hide = function () {\n if (this.transitioning || !this.$element.hasClass('in')) return\n\n var startEvent = $.Event('hide.bs.collapse')\n this.$element.trigger(startEvent)\n if (startEvent.isDefaultPrevented()) return\n\n var dimension = this.dimension()\n\n this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n this.$element\n .addClass('collapsing')\n .removeClass('collapse in')\n .attr('aria-expanded', false)\n\n this.$trigger\n .addClass('collapsed')\n .attr('aria-expanded', false)\n\n this.transitioning = 1\n\n var complete = function () {\n this.transitioning = 0\n this.$element\n .removeClass('collapsing')\n .addClass('collapse')\n .trigger('hidden.bs.collapse')\n }\n\n if (!$.support.transition) return complete.call(this)\n\n this.$element\n [dimension](0)\n .one('bsTransitionEnd', $.proxy(complete, this))\n .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n }\n\n Collapse.prototype.toggle = function () {\n this[this.$element.hasClass('in') ? 'hide' : 'show']()\n }\n\n Collapse.prototype.getParent = function () {\n return $(document).find(this.options.parent)\n .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n .each($.proxy(function (i, element) {\n var $element = $(element)\n this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n }, this))\n .end()\n }\n\n Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n var isOpen = $element.hasClass('in')\n\n $element.attr('aria-expanded', isOpen)\n $trigger\n .toggleClass('collapsed', !isOpen)\n .attr('aria-expanded', isOpen)\n }\n\n function getTargetFromTrigger($trigger) {\n var href\n var target = $trigger.attr('data-target')\n || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n return $(document).find(target)\n }\n\n\n // COLLAPSE PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.collapse')\n var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.collapse\n\n $.fn.collapse = Plugin\n $.fn.collapse.Constructor = Collapse\n\n\n // COLLAPSE NO CONFLICT\n // ====================\n\n $.fn.collapse.noConflict = function () {\n $.fn.collapse = old\n return this\n }\n\n\n // COLLAPSE DATA-API\n // =================\n\n $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n var $this = $(this)\n\n if (!$this.attr('data-target')) e.preventDefault()\n\n var $target = getTargetFromTrigger($this)\n var data = $target.data('bs.collapse')\n var option = data ? 'toggle' : $this.data()\n\n Plugin.call($target, option)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // DROPDOWN CLASS DEFINITION\n // =========================\n\n var backdrop = '.dropdown-backdrop'\n var toggle = '[data-toggle=\"dropdown\"]'\n var Dropdown = function (element) {\n $(element).on('click.bs.dropdown', this.toggle)\n }\n\n Dropdown.VERSION = '3.4.1'\n\n function getParent($this) {\n var selector = $this.attr('data-target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n var $parent = selector !== '#' ? $(document).find(selector) : null\n\n return $parent && $parent.length ? $parent : $this.parent()\n }\n\n function clearMenus(e) {\n if (e && e.which === 3) return\n $(backdrop).remove()\n $(toggle).each(function () {\n var $this = $(this)\n var $parent = getParent($this)\n var relatedTarget = { relatedTarget: this }\n\n if (!$parent.hasClass('open')) return\n\n if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this.attr('aria-expanded', 'false')\n $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n })\n }\n\n Dropdown.prototype.toggle = function (e) {\n var $this = $(this)\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n clearMenus()\n\n if (!isActive) {\n if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n // if mobile we use a backdrop because click events don't delegate\n $(document.createElement('div'))\n .addClass('dropdown-backdrop')\n .insertAfter($(this))\n .on('click', clearMenus)\n }\n\n var relatedTarget = { relatedTarget: this }\n $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n if (e.isDefaultPrevented()) return\n\n $this\n .trigger('focus')\n .attr('aria-expanded', 'true')\n\n $parent\n .toggleClass('open')\n .trigger($.Event('shown.bs.dropdown', relatedTarget))\n }\n\n return false\n }\n\n Dropdown.prototype.keydown = function (e) {\n if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n var $this = $(this)\n\n e.preventDefault()\n e.stopPropagation()\n\n if ($this.is('.disabled, :disabled')) return\n\n var $parent = getParent($this)\n var isActive = $parent.hasClass('open')\n\n if (!isActive && e.which != 27 || isActive && e.which == 27) {\n if (e.which == 27) $parent.find(toggle).trigger('focus')\n return $this.trigger('click')\n }\n\n var desc = ' li:not(.disabled):visible a'\n var $items = $parent.find('.dropdown-menu' + desc)\n\n if (!$items.length) return\n\n var index = $items.index(e.target)\n\n if (e.which == 38 && index > 0) index-- // up\n if (e.which == 40 && index < $items.length - 1) index++ // down\n if (!~index) index = 0\n\n $items.eq(index).trigger('focus')\n }\n\n\n // DROPDOWN PLUGIN DEFINITION\n // ==========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.dropdown')\n\n if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n if (typeof option == 'string') data[option].call($this)\n })\n }\n\n var old = $.fn.dropdown\n\n $.fn.dropdown = Plugin\n $.fn.dropdown.Constructor = Dropdown\n\n\n // DROPDOWN NO CONFLICT\n // ====================\n\n $.fn.dropdown.noConflict = function () {\n $.fn.dropdown = old\n return this\n }\n\n\n // APPLY TO STANDARD DROPDOWN ELEMENTS\n // ===================================\n\n $(document)\n .on('click.bs.dropdown.data-api', clearMenus)\n .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // MODAL CLASS DEFINITION\n // ======================\n\n var Modal = function (element, options) {\n this.options = options\n this.$body = $(document.body)\n this.$element = $(element)\n this.$dialog = this.$element.find('.modal-dialog')\n this.$backdrop = null\n this.isShown = null\n this.originalBodyPad = null\n this.scrollbarWidth = 0\n this.ignoreBackdropClick = false\n this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n if (this.options.remote) {\n this.$element\n .find('.modal-content')\n .load(this.options.remote, $.proxy(function () {\n this.$element.trigger('loaded.bs.modal')\n }, this))\n }\n }\n\n Modal.VERSION = '3.4.1'\n\n Modal.TRANSITION_DURATION = 300\n Modal.BACKDROP_TRANSITION_DURATION = 150\n\n Modal.DEFAULTS = {\n backdrop: true,\n keyboard: true,\n show: true\n }\n\n Modal.prototype.toggle = function (_relatedTarget) {\n return this.isShown ? this.hide() : this.show(_relatedTarget)\n }\n\n Modal.prototype.show = function (_relatedTarget) {\n var that = this\n var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n this.$element.trigger(e)\n\n if (this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = true\n\n this.checkScrollbar()\n this.setScrollbar()\n this.$body.addClass('modal-open')\n\n this.escape()\n this.resize()\n\n this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n })\n })\n\n this.backdrop(function () {\n var transition = $.support.transition && that.$element.hasClass('fade')\n\n if (!that.$element.parent().length) {\n that.$element.appendTo(that.$body) // don't move modals dom position\n }\n\n that.$element\n .show()\n .scrollTop(0)\n\n that.adjustDialog()\n\n if (transition) {\n that.$element[0].offsetWidth // force reflow\n }\n\n that.$element.addClass('in')\n\n that.enforceFocus()\n\n var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n transition ?\n that.$dialog // wait for modal to slide in\n .one('bsTransitionEnd', function () {\n that.$element.trigger('focus').trigger(e)\n })\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n that.$element.trigger('focus').trigger(e)\n })\n }\n\n Modal.prototype.hide = function (e) {\n if (e) e.preventDefault()\n\n e = $.Event('hide.bs.modal')\n\n this.$element.trigger(e)\n\n if (!this.isShown || e.isDefaultPrevented()) return\n\n this.isShown = false\n\n this.escape()\n this.resize()\n\n $(document).off('focusin.bs.modal')\n\n this.$element\n .removeClass('in')\n .off('click.dismiss.bs.modal')\n .off('mouseup.dismiss.bs.modal')\n\n this.$dialog.off('mousedown.dismiss.bs.modal')\n\n $.support.transition && this.$element.hasClass('fade') ?\n this.$element\n .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n this.hideModal()\n }\n\n Modal.prototype.enforceFocus = function () {\n $(document)\n .off('focusin.bs.modal') // guard against infinite focus loop\n .on('focusin.bs.modal', $.proxy(function (e) {\n if (document !== e.target &&\n this.$element[0] !== e.target &&\n !this.$element.has(e.target).length) {\n this.$element.trigger('focus')\n }\n }, this))\n }\n\n Modal.prototype.escape = function () {\n if (this.isShown && this.options.keyboard) {\n this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n e.which == 27 && this.hide()\n }, this))\n } else if (!this.isShown) {\n this.$element.off('keydown.dismiss.bs.modal')\n }\n }\n\n Modal.prototype.resize = function () {\n if (this.isShown) {\n $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n } else {\n $(window).off('resize.bs.modal')\n }\n }\n\n Modal.prototype.hideModal = function () {\n var that = this\n this.$element.hide()\n this.backdrop(function () {\n that.$body.removeClass('modal-open')\n that.resetAdjustments()\n that.resetScrollbar()\n that.$element.trigger('hidden.bs.modal')\n })\n }\n\n Modal.prototype.removeBackdrop = function () {\n this.$backdrop && this.$backdrop.remove()\n this.$backdrop = null\n }\n\n Modal.prototype.backdrop = function (callback) {\n var that = this\n var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n if (this.isShown && this.options.backdrop) {\n var doAnimate = $.support.transition && animate\n\n this.$backdrop = $(document.createElement('div'))\n .addClass('modal-backdrop ' + animate)\n .appendTo(this.$body)\n\n this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n if (this.ignoreBackdropClick) {\n this.ignoreBackdropClick = false\n return\n }\n if (e.target !== e.currentTarget) return\n this.options.backdrop == 'static'\n ? this.$element[0].focus()\n : this.hide()\n }, this))\n\n if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n this.$backdrop.addClass('in')\n\n if (!callback) return\n\n doAnimate ?\n this.$backdrop\n .one('bsTransitionEnd', callback)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callback()\n\n } else if (!this.isShown && this.$backdrop) {\n this.$backdrop.removeClass('in')\n\n var callbackRemove = function () {\n that.removeBackdrop()\n callback && callback()\n }\n $.support.transition && this.$element.hasClass('fade') ?\n this.$backdrop\n .one('bsTransitionEnd', callbackRemove)\n .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n callbackRemove()\n\n } else if (callback) {\n callback()\n }\n }\n\n // these following methods are used to handle overflowing modals\n\n Modal.prototype.handleUpdate = function () {\n this.adjustDialog()\n }\n\n Modal.prototype.adjustDialog = function () {\n var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n this.$element.css({\n paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n })\n }\n\n Modal.prototype.resetAdjustments = function () {\n this.$element.css({\n paddingLeft: '',\n paddingRight: ''\n })\n }\n\n Modal.prototype.checkScrollbar = function () {\n var fullWindowWidth = window.innerWidth\n if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n var documentElementRect = document.documentElement.getBoundingClientRect()\n fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n }\n this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n this.scrollbarWidth = this.measureScrollbar()\n }\n\n Modal.prototype.setScrollbar = function () {\n var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n this.originalBodyPad = document.body.style.paddingRight || ''\n var scrollbarWidth = this.scrollbarWidth\n if (this.bodyIsOverflowing) {\n this.$body.css('padding-right', bodyPad + scrollbarWidth)\n $(this.fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight\n var calculatedPadding = $(element).css('padding-right')\n $(element)\n .data('padding-right', actualPadding)\n .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n })\n }\n }\n\n Modal.prototype.resetScrollbar = function () {\n this.$body.css('padding-right', this.originalBodyPad)\n $(this.fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right')\n $(element).removeData('padding-right')\n element.style.paddingRight = padding ? padding : ''\n })\n }\n\n Modal.prototype.measureScrollbar = function () { // thx walsh\n var scrollDiv = document.createElement('div')\n scrollDiv.className = 'modal-scrollbar-measure'\n this.$body.append(scrollDiv)\n var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n this.$body[0].removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n\n // MODAL PLUGIN DEFINITION\n // =======================\n\n function Plugin(option, _relatedTarget) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.modal')\n var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n if (typeof option == 'string') data[option](_relatedTarget)\n else if (options.show) data.show(_relatedTarget)\n })\n }\n\n var old = $.fn.modal\n\n $.fn.modal = Plugin\n $.fn.modal.Constructor = Modal\n\n\n // MODAL NO CONFLICT\n // =================\n\n $.fn.modal.noConflict = function () {\n $.fn.modal = old\n return this\n }\n\n\n // MODAL DATA-API\n // ==============\n\n $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n var $this = $(this)\n var href = $this.attr('href')\n var target = $this.attr('data-target') ||\n (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n var $target = $(document).find(target)\n var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n if ($this.is('a')) e.preventDefault()\n\n $target.one('show.bs.modal', function (showEvent) {\n if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n $target.one('hidden.bs.modal', function () {\n $this.is(':visible') && $this.trigger('focus')\n })\n })\n Plugin.call($target, option, this)\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // POPOVER PUBLIC CLASS DEFINITION\n // ===============================\n\n var Popover = function (element, options) {\n this.init('popover', element, options)\n }\n\n if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n Popover.VERSION = '3.4.1'\n\n Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n })\n\n\n // NOTE: POPOVER EXTENDS tooltip.js\n // ================================\n\n Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n Popover.prototype.constructor = Popover\n\n Popover.prototype.getDefaults = function () {\n return Popover.DEFAULTS\n }\n\n Popover.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n var content = this.getContent()\n\n if (this.options.html) {\n var typeContent = typeof content\n\n if (this.options.sanitize) {\n title = this.sanitizeHtml(title)\n\n if (typeContent === 'string') {\n content = this.sanitizeHtml(content)\n }\n }\n\n $tip.find('.popover-title').html(title)\n $tip.find('.popover-content').children().detach().end()[\n typeContent === 'string' ? 'html' : 'append'\n ](content)\n } else {\n $tip.find('.popover-title').text(title)\n $tip.find('.popover-content').children().detach().end().text(content)\n }\n\n $tip.removeClass('fade top bottom left right in')\n\n // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n // this manually by checking the contents.\n if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n }\n\n Popover.prototype.hasContent = function () {\n return this.getTitle() || this.getContent()\n }\n\n Popover.prototype.getContent = function () {\n var $e = this.$element\n var o = this.options\n\n return $e.attr('data-content')\n || (typeof o.content == 'function' ?\n o.content.call($e[0]) :\n o.content)\n }\n\n Popover.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n }\n\n\n // POPOVER PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.popover')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.popover\n\n $.fn.popover = Plugin\n $.fn.popover.Constructor = Popover\n\n\n // POPOVER NO CONFLICT\n // ===================\n\n $.fn.popover.noConflict = function () {\n $.fn.popover = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: scrollspy.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#scrollspy\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // SCROLLSPY CLASS DEFINITION\n // ==========================\n\n function ScrollSpy(element, options) {\n this.$body = $(document.body)\n this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)\n this.options = $.extend({}, ScrollSpy.DEFAULTS, options)\n this.selector = (this.options.target || '') + ' .nav li > a'\n this.offsets = []\n this.targets = []\n this.activeTarget = null\n this.scrollHeight = 0\n\n this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))\n this.refresh()\n this.process()\n }\n\n ScrollSpy.VERSION = '3.4.1'\n\n ScrollSpy.DEFAULTS = {\n offset: 10\n }\n\n ScrollSpy.prototype.getScrollHeight = function () {\n return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight)\n }\n\n ScrollSpy.prototype.refresh = function () {\n var that = this\n var offsetMethod = 'offset'\n var offsetBase = 0\n\n this.offsets = []\n this.targets = []\n this.scrollHeight = this.getScrollHeight()\n\n if (!$.isWindow(this.$scrollElement[0])) {\n offsetMethod = 'position'\n offsetBase = this.$scrollElement.scrollTop()\n }\n\n this.$body\n .find(this.selector)\n .map(function () {\n var $el = $(this)\n var href = $el.data('target') || $el.attr('href')\n var $href = /^#./.test(href) && $(href)\n\n return ($href\n && $href.length\n && $href.is(':visible')\n && [[$href[offsetMethod]().top + offsetBase, href]]) || null\n })\n .sort(function (a, b) { return a[0] - b[0] })\n .each(function () {\n that.offsets.push(this[0])\n that.targets.push(this[1])\n })\n }\n\n ScrollSpy.prototype.process = function () {\n var scrollTop = this.$scrollElement.scrollTop() + this.options.offset\n var scrollHeight = this.getScrollHeight()\n var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height()\n var offsets = this.offsets\n var targets = this.targets\n var activeTarget = this.activeTarget\n var i\n\n if (this.scrollHeight != scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n return activeTarget != (i = targets[targets.length - 1]) && this.activate(i)\n }\n\n if (activeTarget && scrollTop < offsets[0]) {\n this.activeTarget = null\n return this.clear()\n }\n\n for (i = offsets.length; i--;) {\n activeTarget != targets[i]\n && scrollTop >= offsets[i]\n && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1])\n && this.activate(targets[i])\n }\n }\n\n ScrollSpy.prototype.activate = function (target) {\n this.activeTarget = target\n\n this.clear()\n\n var selector = this.selector +\n '[data-target=\"' + target + '\"],' +\n this.selector + '[href=\"' + target + '\"]'\n\n var active = $(selector)\n .parents('li')\n .addClass('active')\n\n if (active.parent('.dropdown-menu').length) {\n active = active\n .closest('li.dropdown')\n .addClass('active')\n }\n\n active.trigger('activate.bs.scrollspy')\n }\n\n ScrollSpy.prototype.clear = function () {\n $(this.selector)\n .parentsUntil(this.options.target, '.active')\n .removeClass('active')\n }\n\n\n // SCROLLSPY PLUGIN DEFINITION\n // ===========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.scrollspy')\n var options = typeof option == 'object' && option\n\n if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.scrollspy\n\n $.fn.scrollspy = Plugin\n $.fn.scrollspy.Constructor = ScrollSpy\n\n\n // SCROLLSPY NO CONFLICT\n // =====================\n\n $.fn.scrollspy.noConflict = function () {\n $.fn.scrollspy = old\n return this\n }\n\n\n // SCROLLSPY DATA-API\n // ==================\n\n $(window).on('load.bs.scrollspy.data-api', function () {\n $('[data-spy=\"scroll\"]').each(function () {\n var $spy = $(this)\n Plugin.call($spy, $spy.data())\n })\n })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // TAB CLASS DEFINITION\n // ====================\n\n var Tab = function (element) {\n // jscs:disable requireDollarBeforejQueryAssignment\n this.element = $(element)\n // jscs:enable requireDollarBeforejQueryAssignment\n }\n\n Tab.VERSION = '3.4.1'\n\n Tab.TRANSITION_DURATION = 150\n\n Tab.prototype.show = function () {\n var $this = this.element\n var $ul = $this.closest('ul:not(.dropdown-menu)')\n var selector = $this.data('target')\n\n if (!selector) {\n selector = $this.attr('href')\n selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n }\n\n if ($this.parent('li').hasClass('active')) return\n\n var $previous = $ul.find('.active:last a')\n var hideEvent = $.Event('hide.bs.tab', {\n relatedTarget: $this[0]\n })\n var showEvent = $.Event('show.bs.tab', {\n relatedTarget: $previous[0]\n })\n\n $previous.trigger(hideEvent)\n $this.trigger(showEvent)\n\n if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n var $target = $(document).find(selector)\n\n this.activate($this.closest('li'), $ul)\n this.activate($target, $target.parent(), function () {\n $previous.trigger({\n type: 'hidden.bs.tab',\n relatedTarget: $this[0]\n })\n $this.trigger({\n type: 'shown.bs.tab',\n relatedTarget: $previous[0]\n })\n })\n }\n\n Tab.prototype.activate = function (element, container, callback) {\n var $active = container.find('> .active')\n var transition = callback\n && $.support.transition\n && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n function next() {\n $active\n .removeClass('active')\n .find('> .dropdown-menu > .active')\n .removeClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', false)\n\n element\n .addClass('active')\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n\n if (transition) {\n element[0].offsetWidth // reflow for transition\n element.addClass('in')\n } else {\n element.removeClass('fade')\n }\n\n if (element.parent('.dropdown-menu').length) {\n element\n .closest('li.dropdown')\n .addClass('active')\n .end()\n .find('[data-toggle=\"tab\"]')\n .attr('aria-expanded', true)\n }\n\n callback && callback()\n }\n\n $active.length && transition ?\n $active\n .one('bsTransitionEnd', next)\n .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n next()\n\n $active.removeClass('in')\n }\n\n\n // TAB PLUGIN DEFINITION\n // =====================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tab')\n\n if (!data) $this.data('bs.tab', (data = new Tab(this)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tab\n\n $.fn.tab = Plugin\n $.fn.tab.Constructor = Tab\n\n\n // TAB NO CONFLICT\n // ===============\n\n $.fn.tab.noConflict = function () {\n $.fn.tab = old\n return this\n }\n\n\n // TAB DATA-API\n // ============\n\n var clickHandler = function (e) {\n e.preventDefault()\n Plugin.call($(this), 'show')\n }\n\n $(document)\n .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n 'use strict';\n\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n var uriAttrs = [\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n ]\n\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n }\n\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase()\n\n if ($.inArray(attrName, allowedAttributeList) !== -1) {\n if ($.inArray(attrName, uriAttrs) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n }\n\n return true\n }\n\n var regExp = $(allowedAttributeList).filter(function (index, value) {\n return value instanceof RegExp\n })\n\n // Check if a regular expression validates the attribute.\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true\n }\n }\n\n return false\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n // IE 8 and below don't support createHTMLDocument\n if (!document.implementation || !document.implementation.createHTMLDocument) {\n return unsafeHtml\n }\n\n var createdDocument = document.implementation.createHTMLDocument('sanitization')\n createdDocument.body.innerHTML = unsafeHtml\n\n var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n var elements = $(createdDocument.body).find('*')\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var el = elements[i]\n var elName = el.nodeName.toLowerCase()\n\n if ($.inArray(elName, whitelistKeys) === -1) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n var attributeList = $.map(el.attributes, function (el) { return el })\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n el.removeAttribute(attributeList[j].nodeName)\n }\n }\n }\n\n return createdDocument.body.innerHTML\n }\n\n // TOOLTIP PUBLIC CLASS DEFINITION\n // ===============================\n\n var Tooltip = function (element, options) {\n this.type = null\n this.options = null\n this.enabled = null\n this.timeout = null\n this.hoverState = null\n this.$element = null\n this.inState = null\n\n this.init('tooltip', element, options)\n }\n\n Tooltip.VERSION = '3.4.1'\n\n Tooltip.TRANSITION_DURATION = 150\n\n Tooltip.DEFAULTS = {\n animation: true,\n placement: 'top',\n selector: false,\n template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n container: false,\n viewport: {\n selector: 'body',\n padding: 0\n },\n sanitize : true,\n sanitizeFn : null,\n whiteList : DefaultWhitelist\n }\n\n Tooltip.prototype.init = function (type, element, options) {\n this.enabled = true\n this.type = type\n this.$element = $(element)\n this.options = this.getOptions(options)\n this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n this.inState = { click: false, hover: false, focus: false }\n\n if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n }\n\n var triggers = this.options.trigger.split(' ')\n\n for (var i = triggers.length; i--;) {\n var trigger = triggers[i]\n\n if (trigger == 'click') {\n this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n } else if (trigger != 'manual') {\n var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin'\n var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n }\n }\n\n this.options.selector ?\n (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n this.fixTitle()\n }\n\n Tooltip.prototype.getDefaults = function () {\n return Tooltip.DEFAULTS\n }\n\n Tooltip.prototype.getOptions = function (options) {\n var dataAttributes = this.$element.data()\n\n for (var dataAttr in dataAttributes) {\n if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n delete dataAttributes[dataAttr]\n }\n }\n\n options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n if (options.delay && typeof options.delay == 'number') {\n options.delay = {\n show: options.delay,\n hide: options.delay\n }\n }\n\n if (options.sanitize) {\n options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n }\n\n return options\n }\n\n Tooltip.prototype.getDelegateOptions = function () {\n var options = {}\n var defaults = this.getDefaults()\n\n this._options && $.each(this._options, function (key, value) {\n if (defaults[key] != value) options[key] = value\n })\n\n return options\n }\n\n Tooltip.prototype.enter = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n }\n\n if (self.tip().hasClass('in') || self.hoverState == 'in') {\n self.hoverState = 'in'\n return\n }\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'in'\n\n if (!self.options.delay || !self.options.delay.show) return self.show()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'in') self.show()\n }, self.options.delay.show)\n }\n\n Tooltip.prototype.isInStateTrue = function () {\n for (var key in this.inState) {\n if (this.inState[key]) return true\n }\n\n return false\n }\n\n Tooltip.prototype.leave = function (obj) {\n var self = obj instanceof this.constructor ?\n obj : $(obj.currentTarget).data('bs.' + this.type)\n\n if (!self) {\n self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n $(obj.currentTarget).data('bs.' + this.type, self)\n }\n\n if (obj instanceof $.Event) {\n self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n }\n\n if (self.isInStateTrue()) return\n\n clearTimeout(self.timeout)\n\n self.hoverState = 'out'\n\n if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n self.timeout = setTimeout(function () {\n if (self.hoverState == 'out') self.hide()\n }, self.options.delay.hide)\n }\n\n Tooltip.prototype.show = function () {\n var e = $.Event('show.bs.' + this.type)\n\n if (this.hasContent() && this.enabled) {\n this.$element.trigger(e)\n\n var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n if (e.isDefaultPrevented() || !inDom) return\n var that = this\n\n var $tip = this.tip()\n\n var tipId = this.getUID(this.type)\n\n this.setContent()\n $tip.attr('id', tipId)\n this.$element.attr('aria-describedby', tipId)\n\n if (this.options.animation) $tip.addClass('fade')\n\n var placement = typeof this.options.placement == 'function' ?\n this.options.placement.call(this, $tip[0], this.$element[0]) :\n this.options.placement\n\n var autoToken = /\\s?auto?\\s?/i\n var autoPlace = autoToken.test(placement)\n if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n $tip\n .detach()\n .css({ top: 0, left: 0, display: 'block' })\n .addClass(placement)\n .data('bs.' + this.type, this)\n\n this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n this.$element.trigger('inserted.bs.' + this.type)\n\n var pos = this.getPosition()\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (autoPlace) {\n var orgPlacement = placement\n var viewportDim = this.getPosition(this.$viewport)\n\n placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :\n placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :\n placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :\n placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :\n placement\n\n $tip\n .removeClass(orgPlacement)\n .addClass(placement)\n }\n\n var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n this.applyPlacement(calculatedOffset, placement)\n\n var complete = function () {\n var prevHoverState = that.hoverState\n that.$element.trigger('shown.bs.' + that.type)\n that.hoverState = null\n\n if (prevHoverState == 'out') that.leave(that)\n }\n\n $.support.transition && this.$tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n }\n }\n\n Tooltip.prototype.applyPlacement = function (offset, placement) {\n var $tip = this.tip()\n var width = $tip[0].offsetWidth\n var height = $tip[0].offsetHeight\n\n // manually read margins because getBoundingClientRect includes difference\n var marginTop = parseInt($tip.css('margin-top'), 10)\n var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n // we must check for NaN for ie 8/9\n if (isNaN(marginTop)) marginTop = 0\n if (isNaN(marginLeft)) marginLeft = 0\n\n offset.top += marginTop\n offset.left += marginLeft\n\n // $.fn.offset doesn't round pixel values\n // so we use setOffset directly with our own function B-0\n $.offset.setOffset($tip[0], $.extend({\n using: function (props) {\n $tip.css({\n top: Math.round(props.top),\n left: Math.round(props.left)\n })\n }\n }, offset), 0)\n\n $tip.addClass('in')\n\n // check to see if placing tip in new offset caused the tip to resize itself\n var actualWidth = $tip[0].offsetWidth\n var actualHeight = $tip[0].offsetHeight\n\n if (placement == 'top' && actualHeight != height) {\n offset.top = offset.top + height - actualHeight\n }\n\n var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n if (delta.left) offset.left += delta.left\n else offset.top += delta.top\n\n var isVertical = /top|bottom/.test(placement)\n var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n $tip.offset(offset)\n this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n }\n\n Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n this.arrow()\n .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n .css(isVertical ? 'top' : 'left', '')\n }\n\n Tooltip.prototype.setContent = function () {\n var $tip = this.tip()\n var title = this.getTitle()\n\n if (this.options.html) {\n if (this.options.sanitize) {\n title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n }\n\n $tip.find('.tooltip-inner').html(title)\n } else {\n $tip.find('.tooltip-inner').text(title)\n }\n\n $tip.removeClass('fade in top bottom left right')\n }\n\n Tooltip.prototype.hide = function (callback) {\n var that = this\n var $tip = $(this.$tip)\n var e = $.Event('hide.bs.' + this.type)\n\n function complete() {\n if (that.hoverState != 'in') $tip.detach()\n if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n that.$element\n .removeAttr('aria-describedby')\n .trigger('hidden.bs.' + that.type)\n }\n callback && callback()\n }\n\n this.$element.trigger(e)\n\n if (e.isDefaultPrevented()) return\n\n $tip.removeClass('in')\n\n $.support.transition && $tip.hasClass('fade') ?\n $tip\n .one('bsTransitionEnd', complete)\n .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n complete()\n\n this.hoverState = null\n\n return this\n }\n\n Tooltip.prototype.fixTitle = function () {\n var $e = this.$element\n if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n }\n }\n\n Tooltip.prototype.hasContent = function () {\n return this.getTitle()\n }\n\n Tooltip.prototype.getPosition = function ($element) {\n $element = $element || this.$element\n\n var el = $element[0]\n var isBody = el.tagName == 'BODY'\n\n var elRect = el.getBoundingClientRect()\n if (elRect.width == null) {\n // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n }\n var isSvg = window.SVGElement && el instanceof window.SVGElement\n // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n // See https://github.com/twbs/bootstrap/issues/20280\n var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n return $.extend({}, elRect, scroll, outerDims, elOffset)\n }\n\n Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n }\n\n Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n var delta = { top: 0, left: 0 }\n if (!this.$viewport) return delta\n\n var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n var viewportDimensions = this.getPosition(this.$viewport)\n\n if (/right|left/.test(placement)) {\n var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll\n var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n if (topEdgeOffset < viewportDimensions.top) { // top overflow\n delta.top = viewportDimensions.top - topEdgeOffset\n } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n }\n } else {\n var leftEdgeOffset = pos.left - viewportPadding\n var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n delta.left = viewportDimensions.left - leftEdgeOffset\n } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n }\n }\n\n return delta\n }\n\n Tooltip.prototype.getTitle = function () {\n var title\n var $e = this.$element\n var o = this.options\n\n title = $e.attr('data-original-title')\n || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title)\n\n return title\n }\n\n Tooltip.prototype.getUID = function (prefix) {\n do prefix += ~~(Math.random() * 1000000)\n while (document.getElementById(prefix))\n return prefix\n }\n\n Tooltip.prototype.tip = function () {\n if (!this.$tip) {\n this.$tip = $(this.options.template)\n if (this.$tip.length != 1) {\n throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n }\n }\n return this.$tip\n }\n\n Tooltip.prototype.arrow = function () {\n return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n }\n\n Tooltip.prototype.enable = function () {\n this.enabled = true\n }\n\n Tooltip.prototype.disable = function () {\n this.enabled = false\n }\n\n Tooltip.prototype.toggleEnabled = function () {\n this.enabled = !this.enabled\n }\n\n Tooltip.prototype.toggle = function (e) {\n var self = this\n if (e) {\n self = $(e.currentTarget).data('bs.' + this.type)\n if (!self) {\n self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n $(e.currentTarget).data('bs.' + this.type, self)\n }\n }\n\n if (e) {\n self.inState.click = !self.inState.click\n if (self.isInStateTrue()) self.enter(self)\n else self.leave(self)\n } else {\n self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n }\n }\n\n Tooltip.prototype.destroy = function () {\n var that = this\n clearTimeout(this.timeout)\n this.hide(function () {\n that.$element.off('.' + that.type).removeData('bs.' + that.type)\n if (that.$tip) {\n that.$tip.detach()\n }\n that.$tip = null\n that.$arrow = null\n that.$viewport = null\n that.$element = null\n })\n }\n\n Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n }\n\n // TOOLTIP PLUGIN DEFINITION\n // =========================\n\n function Plugin(option) {\n return this.each(function () {\n var $this = $(this)\n var data = $this.data('bs.tooltip')\n var options = typeof option == 'object' && option\n\n if (!data && /destroy|hide/.test(option)) return\n if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n if (typeof option == 'string') data[option]()\n })\n }\n\n var old = $.fn.tooltip\n\n $.fn.tooltip = Plugin\n $.fn.tooltip.Constructor = Tooltip\n\n\n // TOOLTIP NO CONFLICT\n // ===================\n\n $.fn.tooltip.noConflict = function () {\n $.fn.tooltip = old\n return this\n }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n 'use strict';\n\n // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n // ============================================================\n\n function transitionEnd() {\n var el = document.createElement('bootstrap')\n\n var transEndEventNames = {\n WebkitTransition : 'webkitTransitionEnd',\n MozTransition : 'transitionend',\n OTransition : 'oTransitionEnd otransitionend',\n transition : 'transitionend'\n }\n\n for (var name in transEndEventNames) {\n if (el.style[name] !== undefined) {\n return { end: transEndEventNames[name] }\n }\n }\n\n return false // explicit for ie8 ( ._.)\n }\n\n // https://blog.alexmaccaw.com/css-transitions\n $.fn.emulateTransitionEnd = function (duration) {\n var called = false\n var $el = this\n $(this).one('bsTransitionEnd', function () { called = true })\n var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n setTimeout(callback, duration)\n return this\n }\n\n $(function () {\n $.support.transition = transitionEnd()\n\n if (!$.support.transition) return\n\n $.event.special.bsTransitionEnd = {\n bindType: $.support.transition.end,\n delegateType: $.support.transition.end,\n handle: function (e) {\n if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n }\n }\n })\n\n}(jQuery);\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./jquery.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"$\"] = ___EXPOSE_LOADER_IMPORT___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"jQuery\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n var g;\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n }\n\n // This works if the self reference is available\n if (typeof self === \"object\") {\n return self;\n }\n\n // This works if the global reference is available\n if (typeof global !== \"undefined\") {\n return global;\n }\n }\n return g;\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 <object> 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\"<a id='\" + expando + \"' href='' disabled='disabled'></a>\" +\n\t\t\t\"<select id='\" + expando + \"-\\r\\\\' disabled='disabled'>\" +\n\t\t\t\"<option selected=''></option></select>\";\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: <number>) 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 <tag> 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// <object> 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 = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\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 <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\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, \"<select multiple='multiple'>\", \"</select>\" ];\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 <use> 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 = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\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( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\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\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t// documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this\n\t\t\t.on( \"mouseenter\", fnOver )\n\t\t\t.on( \"mouseleave\", fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n","/*!\n * Select2 4.1.0-rc.0\n * https://select2.github.io\n *\n * Released under the MIT license\n * https://github.com/select2/select2/blob/master/LICENSE.md\n */\n;(function (factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof module === 'object' && module.exports) {\n // Node/CommonJS\n module.exports = function (root, jQuery) {\n if (jQuery === undefined) {\n // require('jQuery') returns a factory that requires window to\n // build a jQuery instance, we normalize how we use modules\n // that require this pattern but the window provided is a noop\n // if it's defined (how jquery works)\n if (typeof window !== 'undefined') {\n jQuery = require('jquery');\n }\n else {\n jQuery = require('jquery')(root);\n }\n }\n factory(jQuery);\n return jQuery;\n };\n } else {\n // Browser globals\n factory(jQuery);\n }\n} (function (jQuery) {\n // This is needed so we can catch the AMD loader configuration and use it\n // The inner file should be wrapped (by `banner.start.js`) in a function that\n // returns the AMD loader references.\n var S2 =(function () {\n // Restore the Select2 AMD loader so it can be used\n // Needed mostly in the language files, where the loader is not inserted\n if (jQuery && jQuery.fn && jQuery.fn.select2 && jQuery.fn.select2.amd) {\n var S2 = jQuery.fn.select2.amd;\n }\nvar S2;(function () { if (!S2 || !S2.requirejs) {\nif (!S2) { S2 = {}; } else { require = S2; }\n/**\n * @license almond 0.3.3 Copyright jQuery Foundation and other contributors.\n * Released under MIT license, http://github.com/requirejs/almond/LICENSE\n */\n//Going sloppy to avoid 'use strict' string cost, but strict practices should\n//be followed.\n/*global setTimeout: false */\n\nvar requirejs, require, define;\n(function (undef) {\n var main, req, makeMap, handlers,\n defined = {},\n waiting = {},\n config = {},\n defining = {},\n hasOwn = Object.prototype.hasOwnProperty,\n aps = [].slice,\n jsSuffixRegExp = /\\.js$/;\n\n function hasProp(obj, prop) {\n return hasOwn.call(obj, prop);\n }\n\n /**\n * Given a relative module name, like ./something, normalize it to\n * a real name that can be mapped to a path.\n * @param {String} name the relative name\n * @param {String} baseName a real name that the name arg is relative\n * to.\n * @returns {String} normalized name\n */\n function normalize(name, baseName) {\n var nameParts, nameSegment, mapValue, foundMap, lastIndex,\n foundI, foundStarMap, starI, i, j, part, normalizedBaseParts,\n baseParts = baseName && baseName.split(\"/\"),\n map = config.map,\n starMap = (map && map['*']) || {};\n\n //Adjust any relative paths.\n if (name) {\n name = name.split('/');\n lastIndex = name.length - 1;\n\n // If wanting node ID compatibility, strip .js from end\n // of IDs. Have to do this here, and not in nameToUrl\n // because node allows either .js or non .js to map\n // to same file.\n if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {\n name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, '');\n }\n\n // Starts with a '.' so need the baseName\n if (name[0].charAt(0) === '.' && baseParts) {\n //Convert baseName to array, and lop off the last part,\n //so that . matches that 'directory' and not name of the baseName's\n //module. For instance, baseName of 'one/two/three', maps to\n //'one/two/three.js', but we want the directory, 'one/two' for\n //this normalization.\n normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);\n name = normalizedBaseParts.concat(name);\n }\n\n //start trimDots\n for (i = 0; i < name.length; i++) {\n part = name[i];\n if (part === '.') {\n name.splice(i, 1);\n i -= 1;\n } else if (part === '..') {\n // If at the start, or previous value is still ..,\n // keep them so that when converted to a path it may\n // still work when converted to a path, even though\n // as an ID it is less than ideal. In larger point\n // releases, may be better to just kick out an error.\n if (i === 0 || (i === 1 && name[2] === '..') || name[i - 1] === '..') {\n continue;\n } else if (i > 0) {\n name.splice(i - 1, 2);\n i -= 2;\n }\n }\n }\n //end trimDots\n\n name = name.join('/');\n }\n\n //Apply map config if available.\n if ((baseParts || starMap) && map) {\n nameParts = name.split('/');\n\n for (i = nameParts.length; i > 0; i -= 1) {\n nameSegment = nameParts.slice(0, i).join(\"/\");\n\n if (baseParts) {\n //Find the longest baseName segment match in the config.\n //So, do joins on the biggest to smallest lengths of baseParts.\n for (j = baseParts.length; j > 0; j -= 1) {\n mapValue = map[baseParts.slice(0, j).join('/')];\n\n //baseName segment has config, find if it has one for\n //this name.\n if (mapValue) {\n mapValue = mapValue[nameSegment];\n if (mapValue) {\n //Match, update name to the new value.\n foundMap = mapValue;\n foundI = i;\n break;\n }\n }\n }\n }\n\n if (foundMap) {\n break;\n }\n\n //Check for a star map match, but just hold on to it,\n //if there is a shorter segment match later in a matching\n //config, then favor over this star map.\n if (!foundStarMap && starMap && starMap[nameSegment]) {\n foundStarMap = starMap[nameSegment];\n starI = i;\n }\n }\n\n if (!foundMap && foundStarMap) {\n foundMap = foundStarMap;\n foundI = starI;\n }\n\n if (foundMap) {\n nameParts.splice(0, foundI, foundMap);\n name = nameParts.join('/');\n }\n }\n\n return name;\n }\n\n function makeRequire(relName, forceSync) {\n return function () {\n //A version of a require function that passes a moduleName\n //value for items that may need to\n //look up paths relative to the moduleName\n var args = aps.call(arguments, 0);\n\n //If first arg is not require('string'), and there is only\n //one arg, it is the array form without a callback. Insert\n //a null so that the following concat is correct.\n if (typeof args[0] !== 'string' && args.length === 1) {\n args.push(null);\n }\n return req.apply(undef, args.concat([relName, forceSync]));\n };\n }\n\n function makeNormalize(relName) {\n return function (name) {\n return normalize(name, relName);\n };\n }\n\n function makeLoad(depName) {\n return function (value) {\n defined[depName] = value;\n };\n }\n\n function callDep(name) {\n if (hasProp(waiting, name)) {\n var args = waiting[name];\n delete waiting[name];\n defining[name] = true;\n main.apply(undef, args);\n }\n\n if (!hasProp(defined, name) && !hasProp(defining, name)) {\n throw new Error('No ' + name);\n }\n return defined[name];\n }\n\n //Turns a plugin!resource to [plugin, resource]\n //with the plugin being undefined if the name\n //did not have a plugin prefix.\n function splitPrefix(name) {\n var prefix,\n index = name ? name.indexOf('!') : -1;\n if (index > -1) {\n prefix = name.substring(0, index);\n name = name.substring(index + 1, name.length);\n }\n return [prefix, name];\n }\n\n //Creates a parts array for a relName where first part is plugin ID,\n //second part is resource ID. Assumes relName has already been normalized.\n function makeRelParts(relName) {\n return relName ? splitPrefix(relName) : [];\n }\n\n /**\n * Makes a name map, normalizing the name, and using a plugin\n * for normalization if necessary. Grabs a ref to plugin\n * too, as an optimization.\n */\n makeMap = function (name, relParts) {\n var plugin,\n parts = splitPrefix(name),\n prefix = parts[0],\n relResourceName = relParts[1];\n\n name = parts[1];\n\n if (prefix) {\n prefix = normalize(prefix, relResourceName);\n plugin = callDep(prefix);\n }\n\n //Normalize according\n if (prefix) {\n if (plugin && plugin.normalize) {\n name = plugin.normalize(name, makeNormalize(relResourceName));\n } else {\n name = normalize(name, relResourceName);\n }\n } else {\n name = normalize(name, relResourceName);\n parts = splitPrefix(name);\n prefix = parts[0];\n name = parts[1];\n if (prefix) {\n plugin = callDep(prefix);\n }\n }\n\n //Using ridiculous property names for space reasons\n return {\n f: prefix ? prefix + '!' + name : name, //fullName\n n: name,\n pr: prefix,\n p: plugin\n };\n };\n\n function makeConfig(name) {\n return function () {\n return (config && config.config && config.config[name]) || {};\n };\n }\n\n handlers = {\n require: function (name) {\n return makeRequire(name);\n },\n exports: function (name) {\n var e = defined[name];\n if (typeof e !== 'undefined') {\n return e;\n } else {\n return (defined[name] = {});\n }\n },\n module: function (name) {\n return {\n id: name,\n uri: '',\n exports: defined[name],\n config: makeConfig(name)\n };\n }\n };\n\n main = function (name, deps, callback, relName) {\n var cjsModule, depName, ret, map, i, relParts,\n args = [],\n callbackType = typeof callback,\n usingExports;\n\n //Use name if no relName\n relName = relName || name;\n relParts = makeRelParts(relName);\n\n //Call the callback to define the module, if necessary.\n if (callbackType === 'undefined' || callbackType === 'function') {\n //Pull out the defined dependencies and pass the ordered\n //values to the callback.\n //Default to [require, exports, module] if no deps\n deps = !deps.length && callback.length ? ['require', 'exports', 'module'] : deps;\n for (i = 0; i < deps.length; i += 1) {\n map = makeMap(deps[i], relParts);\n depName = map.f;\n\n //Fast path CommonJS standard dependencies.\n if (depName === \"require\") {\n args[i] = handlers.require(name);\n } else if (depName === \"exports\") {\n //CommonJS module spec 1.1\n args[i] = handlers.exports(name);\n usingExports = true;\n } else if (depName === \"module\") {\n //CommonJS module spec 1.1\n cjsModule = args[i] = handlers.module(name);\n } else if (hasProp(defined, depName) ||\n hasProp(waiting, depName) ||\n hasProp(defining, depName)) {\n args[i] = callDep(depName);\n } else if (map.p) {\n map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});\n args[i] = defined[depName];\n } else {\n throw new Error(name + ' missing ' + depName);\n }\n }\n\n ret = callback ? callback.apply(defined[name], args) : undefined;\n\n if (name) {\n //If setting exports via \"module\" is in play,\n //favor that over return value and exports. After that,\n //favor a non-undefined return value over exports use.\n if (cjsModule && cjsModule.exports !== undef &&\n cjsModule.exports !== defined[name]) {\n defined[name] = cjsModule.exports;\n } else if (ret !== undef || !usingExports) {\n //Use the return value from the function.\n defined[name] = ret;\n }\n }\n } else if (name) {\n //May just be an object definition for the module. Only\n //worry about defining if have a module name.\n defined[name] = callback;\n }\n };\n\n requirejs = require = req = function (deps, callback, relName, forceSync, alt) {\n if (typeof deps === \"string\") {\n if (handlers[deps]) {\n //callback in this case is really relName\n return handlers[deps](callback);\n }\n //Just return the module wanted. In this scenario, the\n //deps arg is the module name, and second arg (if passed)\n //is just the relName.\n //Normalize module name, if it contains . or ..\n return callDep(makeMap(deps, makeRelParts(callback)).f);\n } else if (!deps.splice) {\n //deps is a config object, not an array.\n config = deps;\n if (config.deps) {\n req(config.deps, config.callback);\n }\n if (!callback) {\n return;\n }\n\n if (callback.splice) {\n //callback is an array, which means it is a dependency list.\n //Adjust args if there are dependencies\n deps = callback;\n callback = relName;\n relName = null;\n } else {\n deps = undef;\n }\n }\n\n //Support require(['a'])\n callback = callback || function () {};\n\n //If relName is a function, it is an errback handler,\n //so remove it.\n if (typeof relName === 'function') {\n relName = forceSync;\n forceSync = alt;\n }\n\n //Simulate async callback;\n if (forceSync) {\n main(undef, deps, callback, relName);\n } else {\n //Using a non-zero value because of concern for what old browsers\n //do, and latest browsers \"upgrade\" to 4 if lower value is used:\n //http://www.whatwg.org/specs/web-apps/current-work/multipage/timers.html#dom-windowtimers-settimeout:\n //If want a value immediately, use require('id') instead -- something\n //that works in almond on the global level, but not guaranteed and\n //unlikely to work in other AMD implementations.\n setTimeout(function () {\n main(undef, deps, callback, relName);\n }, 4);\n }\n\n return req;\n };\n\n /**\n * Just drops the config on the floor, but returns req in case\n * the config return value is used.\n */\n req.config = function (cfg) {\n return req(cfg);\n };\n\n /**\n * Expose module registry for debugging and tooling\n */\n requirejs._defined = defined;\n\n define = function (name, deps, callback) {\n if (typeof name !== 'string') {\n throw new Error('See almond README: incorrect module build, no module name');\n }\n\n //This module may not have dependencies\n if (!deps.splice) {\n //deps is not an array, so probably means\n //an object literal or factory function for\n //the value. Adjust args.\n callback = deps;\n deps = [];\n }\n\n if (!hasProp(defined, name) && !hasProp(waiting, name)) {\n waiting[name] = [name, deps, callback];\n }\n };\n\n define.amd = {\n jQuery: true\n };\n}());\n\nS2.requirejs = requirejs;S2.require = require;S2.define = define;\n}\n}());\nS2.define(\"almond\", function(){});\n\n/* global jQuery:false, $:false */\nS2.define('jquery',[],function () {\n var _$ = jQuery || $;\n\n if (_$ == null && console && console.error) {\n console.error(\n 'Select2: An instance of jQuery or a jQuery-compatible library was not ' +\n 'found. Make sure that you are including jQuery before Select2 on your ' +\n 'web page.'\n );\n }\n\n return _$;\n});\n\nS2.define('select2/utils',[\n 'jquery'\n], function ($) {\n var Utils = {};\n\n Utils.Extend = function (ChildClass, SuperClass) {\n var __hasProp = {}.hasOwnProperty;\n\n function BaseConstructor () {\n this.constructor = ChildClass;\n }\n\n for (var key in SuperClass) {\n if (__hasProp.call(SuperClass, key)) {\n ChildClass[key] = SuperClass[key];\n }\n }\n\n BaseConstructor.prototype = SuperClass.prototype;\n ChildClass.prototype = new BaseConstructor();\n ChildClass.__super__ = SuperClass.prototype;\n\n return ChildClass;\n };\n\n function getMethods (theClass) {\n var proto = theClass.prototype;\n\n var methods = [];\n\n for (var methodName in proto) {\n var m = proto[methodName];\n\n if (typeof m !== 'function') {\n continue;\n }\n\n if (methodName === 'constructor') {\n continue;\n }\n\n methods.push(methodName);\n }\n\n return methods;\n }\n\n Utils.Decorate = function (SuperClass, DecoratorClass) {\n var decoratedMethods = getMethods(DecoratorClass);\n var superMethods = getMethods(SuperClass);\n\n function DecoratedClass () {\n var unshift = Array.prototype.unshift;\n\n var argCount = DecoratorClass.prototype.constructor.length;\n\n var calledConstructor = SuperClass.prototype.constructor;\n\n if (argCount > 0) {\n unshift.call(arguments, SuperClass.prototype.constructor);\n\n calledConstructor = DecoratorClass.prototype.constructor;\n }\n\n calledConstructor.apply(this, arguments);\n }\n\n DecoratorClass.displayName = SuperClass.displayName;\n\n function ctr () {\n this.constructor = DecoratedClass;\n }\n\n DecoratedClass.prototype = new ctr();\n\n for (var m = 0; m < superMethods.length; m++) {\n var superMethod = superMethods[m];\n\n DecoratedClass.prototype[superMethod] =\n SuperClass.prototype[superMethod];\n }\n\n var calledMethod = function (methodName) {\n // Stub out the original method if it's not decorating an actual method\n var originalMethod = function () {};\n\n if (methodName in DecoratedClass.prototype) {\n originalMethod = DecoratedClass.prototype[methodName];\n }\n\n var decoratedMethod = DecoratorClass.prototype[methodName];\n\n return function () {\n var unshift = Array.prototype.unshift;\n\n unshift.call(arguments, originalMethod);\n\n return decoratedMethod.apply(this, arguments);\n };\n };\n\n for (var d = 0; d < decoratedMethods.length; d++) {\n var decoratedMethod = decoratedMethods[d];\n\n DecoratedClass.prototype[decoratedMethod] = calledMethod(decoratedMethod);\n }\n\n return DecoratedClass;\n };\n\n var Observable = function () {\n this.listeners = {};\n };\n\n Observable.prototype.on = function (event, callback) {\n this.listeners = this.listeners || {};\n\n if (event in this.listeners) {\n this.listeners[event].push(callback);\n } else {\n this.listeners[event] = [callback];\n }\n };\n\n Observable.prototype.trigger = function (event) {\n var slice = Array.prototype.slice;\n var params = slice.call(arguments, 1);\n\n this.listeners = this.listeners || {};\n\n // Params should always come in as an array\n if (params == null) {\n params = [];\n }\n\n // If there are no arguments to the event, use a temporary object\n if (params.length === 0) {\n params.push({});\n }\n\n // Set the `_type` of the first object to the event\n params[0]._type = event;\n\n if (event in this.listeners) {\n this.invoke(this.listeners[event], slice.call(arguments, 1));\n }\n\n if ('*' in this.listeners) {\n this.invoke(this.listeners['*'], arguments);\n }\n };\n\n Observable.prototype.invoke = function (listeners, params) {\n for (var i = 0, len = listeners.length; i < len; i++) {\n listeners[i].apply(this, params);\n }\n };\n\n Utils.Observable = Observable;\n\n Utils.generateChars = function (length) {\n var chars = '';\n\n for (var i = 0; i < length; i++) {\n var randomChar = Math.floor(Math.random() * 36);\n chars += randomChar.toString(36);\n }\n\n return chars;\n };\n\n Utils.bind = function (func, context) {\n return function () {\n func.apply(context, arguments);\n };\n };\n\n Utils._convertData = function (data) {\n for (var originalKey in data) {\n var keys = originalKey.split('-');\n\n var dataLevel = data;\n\n if (keys.length === 1) {\n continue;\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n\n // Lowercase the first letter\n // By default, dash-separated becomes camelCase\n key = key.substring(0, 1).toLowerCase() + key.substring(1);\n\n if (!(key in dataLevel)) {\n dataLevel[key] = {};\n }\n\n if (k == keys.length - 1) {\n dataLevel[key] = data[originalKey];\n }\n\n dataLevel = dataLevel[key];\n }\n\n delete data[originalKey];\n }\n\n return data;\n };\n\n Utils.hasScroll = function (index, el) {\n // Adapted from the function created by @ShadowScripter\n // and adapted by @BillBarry on the Stack Exchange Code Review website.\n // The original code can be found at\n // http://codereview.stackexchange.com/q/13338\n // and was designed to be used with the Sizzle selector engine.\n\n var $el = $(el);\n var overflowX = el.style.overflowX;\n var overflowY = el.style.overflowY;\n\n //Check both x and y declarations\n if (overflowX === overflowY &&\n (overflowY === 'hidden' || overflowY === 'visible')) {\n return false;\n }\n\n if (overflowX === 'scroll' || overflowY === 'scroll') {\n return true;\n }\n\n return ($el.innerHeight() < el.scrollHeight ||\n $el.innerWidth() < el.scrollWidth);\n };\n\n Utils.escapeMarkup = function (markup) {\n var replaceMap = {\n '\\\\': '\',\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n '\\'': ''',\n '/': '/'\n };\n\n // Do not try to escape the markup if it's not a string\n if (typeof markup !== 'string') {\n return markup;\n }\n\n return String(markup).replace(/[&<>\"'\\/\\\\]/g, function (match) {\n return replaceMap[match];\n });\n };\n\n // Cache objects in Utils.__cache instead of $.data (see #4346)\n Utils.__cache = {};\n\n var id = 0;\n Utils.GetUniqueElementId = function (element) {\n // Get a unique element Id. If element has no id,\n // creates a new unique number, stores it in the id\n // attribute and returns the new id with a prefix.\n // If an id already exists, it simply returns it with a prefix.\n\n var select2Id = element.getAttribute('data-select2-id');\n\n if (select2Id != null) {\n return select2Id;\n }\n\n // If element has id, use it.\n if (element.id) {\n select2Id = 'select2-data-' + element.id;\n } else {\n select2Id = 'select2-data-' + (++id).toString() +\n '-' + Utils.generateChars(4);\n }\n\n element.setAttribute('data-select2-id', select2Id);\n\n return select2Id;\n };\n\n Utils.StoreData = function (element, name, value) {\n // Stores an item in the cache for a specified element.\n // name is the cache key.\n var id = Utils.GetUniqueElementId(element);\n if (!Utils.__cache[id]) {\n Utils.__cache[id] = {};\n }\n\n Utils.__cache[id][name] = value;\n };\n\n Utils.GetData = function (element, name) {\n // Retrieves a value from the cache by its key (name)\n // name is optional. If no name specified, return\n // all cache items for the specified element.\n // and for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (name) {\n if (Utils.__cache[id]) {\n if (Utils.__cache[id][name] != null) {\n return Utils.__cache[id][name];\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n }\n return $(element).data(name); // Fallback to HTML5 data attribs.\n } else {\n return Utils.__cache[id];\n }\n };\n\n Utils.RemoveData = function (element) {\n // Removes all cached items for a specified element.\n var id = Utils.GetUniqueElementId(element);\n if (Utils.__cache[id] != null) {\n delete Utils.__cache[id];\n }\n\n element.removeAttribute('data-select2-id');\n };\n\n Utils.copyNonInternalCssClasses = function (dest, src) {\n var classes;\n\n var destinationClasses = dest.getAttribute('class').trim().split(/\\s+/);\n\n destinationClasses = destinationClasses.filter(function (clazz) {\n // Save all Select2 classes\n return clazz.indexOf('select2-') === 0;\n });\n\n var sourceClasses = src.getAttribute('class').trim().split(/\\s+/);\n\n sourceClasses = sourceClasses.filter(function (clazz) {\n // Only copy non-Select2 classes\n return clazz.indexOf('select2-') !== 0;\n });\n\n var replacements = destinationClasses.concat(sourceClasses);\n\n dest.setAttribute('class', replacements.join(' '));\n };\n\n return Utils;\n});\n\nS2.define('select2/results',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Results ($element, options, dataAdapter) {\n this.$element = $element;\n this.data = dataAdapter;\n this.options = options;\n\n Results.__super__.constructor.call(this);\n }\n\n Utils.Extend(Results, Utils.Observable);\n\n Results.prototype.render = function () {\n var $results = $(\n '<ul class=\"select2-results__options\" role=\"listbox\"></ul>'\n );\n\n if (this.options.get('multiple')) {\n $results.attr('aria-multiselectable', 'true');\n }\n\n this.$results = $results;\n\n return $results;\n };\n\n Results.prototype.clear = function () {\n this.$results.empty();\n };\n\n Results.prototype.displayMessage = function (params) {\n var escapeMarkup = this.options.get('escapeMarkup');\n\n this.clear();\n this.hideLoading();\n\n var $message = $(\n '<li role=\"alert\" aria-live=\"assertive\"' +\n ' class=\"select2-results__option\"></li>'\n );\n\n var message = this.options.get('translations').get(params.message);\n\n $message.append(\n escapeMarkup(\n message(params.args)\n )\n );\n\n $message[0].className += ' select2-results__message';\n\n this.$results.append($message);\n };\n\n Results.prototype.hideMessages = function () {\n this.$results.find('.select2-results__message').remove();\n };\n\n Results.prototype.append = function (data) {\n this.hideLoading();\n\n var $options = [];\n\n if (data.results == null || data.results.length === 0) {\n if (this.$results.children().length === 0) {\n this.trigger('results:message', {\n message: 'noResults'\n });\n }\n\n return;\n }\n\n data.results = this.sort(data.results);\n\n for (var d = 0; d < data.results.length; d++) {\n var item = data.results[d];\n\n var $option = this.option(item);\n\n $options.push($option);\n }\n\n this.$results.append($options);\n };\n\n Results.prototype.position = function ($results, $dropdown) {\n var $resultsContainer = $dropdown.find('.select2-results');\n $resultsContainer.append($results);\n };\n\n Results.prototype.sort = function (data) {\n var sorter = this.options.get('sorter');\n\n return sorter(data);\n };\n\n Results.prototype.highlightFirstItem = function () {\n var $options = this.$results\n .find('.select2-results__option--selectable');\n\n var $selected = $options.filter('.select2-results__option--selected');\n\n // Check if there are any selected options\n if ($selected.length > 0) {\n // If there are selected options, highlight the first\n $selected.first().trigger('mouseenter');\n } else {\n // If there are no selected options, highlight the first option\n // in the dropdown\n $options.first().trigger('mouseenter');\n }\n\n this.ensureHighlightVisible();\n };\n\n Results.prototype.setClasses = function () {\n var self = this;\n\n this.data.current(function (selected) {\n var selectedIds = selected.map(function (s) {\n return s.id.toString();\n });\n\n var $options = self.$results\n .find('.select2-results__option--selectable');\n\n $options.each(function () {\n var $option = $(this);\n\n var item = Utils.GetData(this, 'data');\n\n // id needs to be converted to a string when comparing\n var id = '' + item.id;\n\n if ((item.element != null && item.element.selected) ||\n (item.element == null && selectedIds.indexOf(id) > -1)) {\n this.classList.add('select2-results__option--selected');\n $option.attr('aria-selected', 'true');\n } else {\n this.classList.remove('select2-results__option--selected');\n $option.attr('aria-selected', 'false');\n }\n });\n\n });\n };\n\n Results.prototype.showLoading = function (params) {\n this.hideLoading();\n\n var loadingMore = this.options.get('translations').get('searching');\n\n var loading = {\n disabled: true,\n loading: true,\n text: loadingMore(params)\n };\n var $loading = this.option(loading);\n $loading.className += ' loading-results';\n\n this.$results.prepend($loading);\n };\n\n Results.prototype.hideLoading = function () {\n this.$results.find('.loading-results').remove();\n };\n\n Results.prototype.option = function (data) {\n var option = document.createElement('li');\n option.classList.add('select2-results__option');\n option.classList.add('select2-results__option--selectable');\n\n var attrs = {\n 'role': 'option'\n };\n\n var matches = window.Element.prototype.matches ||\n window.Element.prototype.msMatchesSelector ||\n window.Element.prototype.webkitMatchesSelector;\n\n if ((data.element != null && matches.call(data.element, ':disabled')) ||\n (data.element == null && data.disabled)) {\n attrs['aria-disabled'] = 'true';\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--disabled');\n }\n\n if (data.id == null) {\n option.classList.remove('select2-results__option--selectable');\n }\n\n if (data._resultId != null) {\n option.id = data._resultId;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n if (data.children) {\n attrs.role = 'group';\n attrs['aria-label'] = data.text;\n\n option.classList.remove('select2-results__option--selectable');\n option.classList.add('select2-results__option--group');\n }\n\n for (var attr in attrs) {\n var val = attrs[attr];\n\n option.setAttribute(attr, val);\n }\n\n if (data.children) {\n var $option = $(option);\n\n var label = document.createElement('strong');\n label.className = 'select2-results__group';\n\n this.template(data, label);\n\n var $children = [];\n\n for (var c = 0; c < data.children.length; c++) {\n var child = data.children[c];\n\n var $child = this.option(child);\n\n $children.push($child);\n }\n\n var $childrenContainer = $('<ul></ul>', {\n 'class': 'select2-results__options select2-results__options--nested',\n 'role': 'none'\n });\n\n $childrenContainer.append($children);\n\n $option.append(label);\n $option.append($childrenContainer);\n } else {\n this.template(data, option);\n }\n\n Utils.StoreData(option, 'data', data);\n\n return option;\n };\n\n Results.prototype.bind = function (container, $container) {\n var self = this;\n\n var id = container.id + '-results';\n\n this.$results.attr('id', id);\n\n container.on('results:all', function (params) {\n self.clear();\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n self.highlightFirstItem();\n }\n });\n\n container.on('results:append', function (params) {\n self.append(params.data);\n\n if (container.isOpen()) {\n self.setClasses();\n }\n });\n\n container.on('query', function (params) {\n self.hideMessages();\n self.showLoading(params);\n });\n\n container.on('select', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('unselect', function () {\n if (!container.isOpen()) {\n return;\n }\n\n self.setClasses();\n\n if (self.options.get('scrollAfterSelect')) {\n self.highlightFirstItem();\n }\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expended=\"true\"\n self.$results.attr('aria-expanded', 'true');\n self.$results.attr('aria-hidden', 'false');\n\n self.setClasses();\n self.ensureHighlightVisible();\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expended=\"false\"\n self.$results.attr('aria-expanded', 'false');\n self.$results.attr('aria-hidden', 'true');\n self.$results.removeAttr('aria-activedescendant');\n });\n\n container.on('results:toggle', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n $highlighted.trigger('mouseup');\n });\n\n container.on('results:select', function () {\n var $highlighted = self.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var data = Utils.GetData($highlighted[0], 'data');\n\n if ($highlighted.hasClass('select2-results__option--selected')) {\n self.trigger('close', {});\n } else {\n self.trigger('select', {\n data: data\n });\n }\n });\n\n container.on('results:previous', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n // If we are already at the top, don't move further\n // If no options, currentIndex will be -1\n if (currentIndex <= 0) {\n return;\n }\n\n var nextIndex = currentIndex - 1;\n\n // If none are highlighted, highlight the first\n if ($highlighted.length === 0) {\n nextIndex = 0;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top;\n var nextTop = $next.offset().top;\n var nextOffset = self.$results.scrollTop() + (nextTop - currentOffset);\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextTop - currentOffset < 0) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:next', function () {\n var $highlighted = self.getHighlightedResults();\n\n var $options = self.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var nextIndex = currentIndex + 1;\n\n // If we are at the last option, stay there\n if (nextIndex >= $options.length) {\n return;\n }\n\n var $next = $options.eq(nextIndex);\n\n $next.trigger('mouseenter');\n\n var currentOffset = self.$results.offset().top +\n self.$results.outerHeight(false);\n var nextBottom = $next.offset().top + $next.outerHeight(false);\n var nextOffset = self.$results.scrollTop() + nextBottom - currentOffset;\n\n if (nextIndex === 0) {\n self.$results.scrollTop(0);\n } else if (nextBottom > currentOffset) {\n self.$results.scrollTop(nextOffset);\n }\n });\n\n container.on('results:focus', function (params) {\n params.element[0].classList.add('select2-results__option--highlighted');\n params.element[0].setAttribute('aria-selected', 'true');\n });\n\n container.on('results:message', function (params) {\n self.displayMessage(params);\n });\n\n if ($.fn.mousewheel) {\n this.$results.on('mousewheel', function (e) {\n var top = self.$results.scrollTop();\n\n var bottom = self.$results.get(0).scrollHeight - top + e.deltaY;\n\n var isAtTop = e.deltaY > 0 && top - e.deltaY <= 0;\n var isAtBottom = e.deltaY < 0 && bottom <= self.$results.height();\n\n if (isAtTop) {\n self.$results.scrollTop(0);\n\n e.preventDefault();\n e.stopPropagation();\n } else if (isAtBottom) {\n self.$results.scrollTop(\n self.$results.get(0).scrollHeight - self.$results.height()\n );\n\n e.preventDefault();\n e.stopPropagation();\n }\n });\n }\n\n this.$results.on('mouseup', '.select2-results__option--selectable',\n function (evt) {\n var $this = $(this);\n\n var data = Utils.GetData(this, 'data');\n\n if ($this.hasClass('select2-results__option--selected')) {\n if (self.options.get('multiple')) {\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n } else {\n self.trigger('close', {});\n }\n\n return;\n }\n\n self.trigger('select', {\n originalEvent: evt,\n data: data\n });\n });\n\n this.$results.on('mouseenter', '.select2-results__option--selectable',\n function (evt) {\n var data = Utils.GetData(this, 'data');\n\n self.getHighlightedResults()\n .removeClass('select2-results__option--highlighted')\n .attr('aria-selected', 'false');\n\n self.trigger('results:focus', {\n data: data,\n element: $(this)\n });\n });\n };\n\n Results.prototype.getHighlightedResults = function () {\n var $highlighted = this.$results\n .find('.select2-results__option--highlighted');\n\n return $highlighted;\n };\n\n Results.prototype.destroy = function () {\n this.$results.remove();\n };\n\n Results.prototype.ensureHighlightVisible = function () {\n var $highlighted = this.getHighlightedResults();\n\n if ($highlighted.length === 0) {\n return;\n }\n\n var $options = this.$results.find('.select2-results__option--selectable');\n\n var currentIndex = $options.index($highlighted);\n\n var currentOffset = this.$results.offset().top;\n var nextTop = $highlighted.offset().top;\n var nextOffset = this.$results.scrollTop() + (nextTop - currentOffset);\n\n var offsetDelta = nextTop - currentOffset;\n nextOffset -= $highlighted.outerHeight(false) * 2;\n\n if (currentIndex <= 2) {\n this.$results.scrollTop(0);\n } else if (offsetDelta > this.$results.outerHeight() || offsetDelta < 0) {\n this.$results.scrollTop(nextOffset);\n }\n };\n\n Results.prototype.template = function (result, container) {\n var template = this.options.get('templateResult');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n var content = template(result, container);\n\n if (content == null) {\n container.style.display = 'none';\n } else if (typeof content === 'string') {\n container.innerHTML = escapeMarkup(content);\n } else {\n $(container).append(content);\n }\n };\n\n return Results;\n});\n\nS2.define('select2/keys',[\n\n], function () {\n var KEYS = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n SHIFT: 16,\n CTRL: 17,\n ALT: 18,\n ESC: 27,\n SPACE: 32,\n PAGE_UP: 33,\n PAGE_DOWN: 34,\n END: 35,\n HOME: 36,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n\n return KEYS;\n});\n\nS2.define('select2/selection/base',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function BaseSelection ($element, options) {\n this.$element = $element;\n this.options = options;\n\n BaseSelection.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseSelection, Utils.Observable);\n\n BaseSelection.prototype.render = function () {\n var $selection = $(\n '<span class=\"select2-selection\" role=\"combobox\" ' +\n ' aria-haspopup=\"true\" aria-expanded=\"false\">' +\n '</span>'\n );\n\n this._tabindex = 0;\n\n if (Utils.GetData(this.$element[0], 'old-tabindex') != null) {\n this._tabindex = Utils.GetData(this.$element[0], 'old-tabindex');\n } else if (this.$element.attr('tabindex') != null) {\n this._tabindex = this.$element.attr('tabindex');\n }\n\n $selection.attr('title', this.$element.attr('title'));\n $selection.attr('tabindex', this._tabindex);\n $selection.attr('aria-disabled', 'false');\n\n this.$selection = $selection;\n\n return $selection;\n };\n\n BaseSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n this.container = container;\n\n this.$selection.on('focus', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('blur', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n if (evt.which === KEYS.SPACE) {\n evt.preventDefault();\n }\n });\n\n container.on('results:focus', function (params) {\n self.$selection.attr('aria-activedescendant', params.data._resultId);\n });\n\n container.on('selection:update', function (params) {\n self.update(params.data);\n });\n\n container.on('open', function () {\n // When the dropdown is open, aria-expanded=\"true\"\n self.$selection.attr('aria-expanded', 'true');\n self.$selection.attr('aria-owns', resultsId);\n\n self._attachCloseHandler(container);\n });\n\n container.on('close', function () {\n // When the dropdown is closed, aria-expanded=\"false\"\n self.$selection.attr('aria-expanded', 'false');\n self.$selection.removeAttr('aria-activedescendant');\n self.$selection.removeAttr('aria-owns');\n\n self.$selection.trigger('focus');\n\n self._detachCloseHandler(container);\n });\n\n container.on('enable', function () {\n self.$selection.attr('tabindex', self._tabindex);\n self.$selection.attr('aria-disabled', 'false');\n });\n\n container.on('disable', function () {\n self.$selection.attr('tabindex', '-1');\n self.$selection.attr('aria-disabled', 'true');\n });\n };\n\n BaseSelection.prototype._handleBlur = function (evt) {\n var self = this;\n\n // This needs to be delayed as the active element is the body when the tab\n // key is pressed, possibly along with others.\n window.setTimeout(function () {\n // Don't trigger `blur` if the focus is still in the selection\n if (\n (document.activeElement == self.$selection[0]) ||\n ($.contains(self.$selection[0], document.activeElement))\n ) {\n return;\n }\n\n self.trigger('blur', evt);\n }, 1);\n };\n\n BaseSelection.prototype._attachCloseHandler = function (container) {\n\n $(document.body).on('mousedown.select2.' + container.id, function (e) {\n var $target = $(e.target);\n\n var $select = $target.closest('.select2');\n\n var $all = $('.select2.select2-container--open');\n\n $all.each(function () {\n if (this == $select[0]) {\n return;\n }\n\n var $element = Utils.GetData(this, 'element');\n\n $element.select2('close');\n });\n });\n };\n\n BaseSelection.prototype._detachCloseHandler = function (container) {\n $(document.body).off('mousedown.select2.' + container.id);\n };\n\n BaseSelection.prototype.position = function ($selection, $container) {\n var $selectionContainer = $container.find('.selection');\n $selectionContainer.append($selection);\n };\n\n BaseSelection.prototype.destroy = function () {\n this._detachCloseHandler(this.container);\n };\n\n BaseSelection.prototype.update = function (data) {\n throw new Error('The `update` method must be defined in child classes.');\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n BaseSelection.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n BaseSelection.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n return BaseSelection;\n});\n\nS2.define('select2/selection/single',[\n 'jquery',\n './base',\n '../utils',\n '../keys'\n], function ($, BaseSelection, Utils, KEYS) {\n function SingleSelection () {\n SingleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(SingleSelection, BaseSelection);\n\n SingleSelection.prototype.render = function () {\n var $selection = SingleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--single');\n\n $selection.html(\n '<span class=\"select2-selection__rendered\"></span>' +\n '<span class=\"select2-selection__arrow\" role=\"presentation\">' +\n '<b role=\"presentation\"></b>' +\n '</span>'\n );\n\n return $selection;\n };\n\n SingleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n SingleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n\n this.$selection.find('.select2-selection__rendered')\n .attr('id', id)\n .attr('role', 'textbox')\n .attr('aria-readonly', 'true');\n this.$selection.attr('aria-labelledby', id);\n this.$selection.attr('aria-controls', id);\n\n this.$selection.on('mousedown', function (evt) {\n // Only respond to left clicks\n if (evt.which !== 1) {\n return;\n }\n\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on('focus', function (evt) {\n // User focuses on the container\n });\n\n this.$selection.on('blur', function (evt) {\n // User exits the container\n });\n\n container.on('focus', function (evt) {\n if (!container.isOpen()) {\n self.$selection.trigger('focus');\n }\n });\n };\n\n SingleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title'); // clear tooltip on empty\n };\n\n SingleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n SingleSelection.prototype.selectionContainer = function () {\n return $('<span></span>');\n };\n\n SingleSelection.prototype.update = function (data) {\n if (data.length === 0) {\n this.clear();\n return;\n }\n\n var selection = data[0];\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n var formatted = this.display(selection, $rendered);\n\n $rendered.empty().append(formatted);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $rendered.attr('title', title);\n } else {\n $rendered.removeAttr('title');\n }\n };\n\n return SingleSelection;\n});\n\nS2.define('select2/selection/multiple',[\n 'jquery',\n './base',\n '../utils'\n], function ($, BaseSelection, Utils) {\n function MultipleSelection ($element, options) {\n MultipleSelection.__super__.constructor.apply(this, arguments);\n }\n\n Utils.Extend(MultipleSelection, BaseSelection);\n\n MultipleSelection.prototype.render = function () {\n var $selection = MultipleSelection.__super__.render.call(this);\n\n $selection[0].classList.add('select2-selection--multiple');\n\n $selection.html(\n '<ul class=\"select2-selection__rendered\"></ul>'\n );\n\n return $selection;\n };\n\n MultipleSelection.prototype.bind = function (container, $container) {\n var self = this;\n\n MultipleSelection.__super__.bind.apply(this, arguments);\n\n var id = container.id + '-container';\n this.$selection.find('.select2-selection__rendered').attr('id', id);\n\n this.$selection.on('click', function (evt) {\n self.trigger('toggle', {\n originalEvent: evt\n });\n });\n\n this.$selection.on(\n 'click',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n var $remove = $(this);\n var $selection = $remove.parent();\n\n var data = Utils.GetData($selection[0], 'data');\n\n self.trigger('unselect', {\n originalEvent: evt,\n data: data\n });\n }\n );\n\n this.$selection.on(\n 'keydown',\n '.select2-selection__choice__remove',\n function (evt) {\n // Ignore the event if it is disabled\n if (self.isDisabled()) {\n return;\n }\n\n evt.stopPropagation();\n }\n );\n };\n\n MultipleSelection.prototype.clear = function () {\n var $rendered = this.$selection.find('.select2-selection__rendered');\n $rendered.empty();\n $rendered.removeAttr('title');\n };\n\n MultipleSelection.prototype.display = function (data, container) {\n var template = this.options.get('templateSelection');\n var escapeMarkup = this.options.get('escapeMarkup');\n\n return escapeMarkup(template(data, container));\n };\n\n MultipleSelection.prototype.selectionContainer = function () {\n var $container = $(\n '<li class=\"select2-selection__choice\">' +\n '<button type=\"button\" class=\"select2-selection__choice__remove\" ' +\n 'tabindex=\"-1\">' +\n '<span aria-hidden=\"true\">×</span>' +\n '</button>' +\n '<span class=\"select2-selection__choice__display\"></span>' +\n '</li>'\n );\n\n return $container;\n };\n\n MultipleSelection.prototype.update = function (data) {\n this.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var $selections = [];\n\n var selectionIdPrefix = this.$selection.find('.select2-selection__rendered')\n .attr('id') + '-choice-';\n\n for (var d = 0; d < data.length; d++) {\n var selection = data[d];\n\n var $selection = this.selectionContainer();\n var formatted = this.display(selection, $selection);\n\n var selectionId = selectionIdPrefix + Utils.generateChars(4) + '-';\n\n if (selection.id) {\n selectionId += selection.id;\n } else {\n selectionId += Utils.generateChars(4);\n }\n\n $selection.find('.select2-selection__choice__display')\n .append(formatted)\n .attr('id', selectionId);\n\n var title = selection.title || selection.text;\n\n if (title) {\n $selection.attr('title', title);\n }\n\n var removeItem = this.options.get('translations').get('removeItem');\n\n var $remove = $selection.find('.select2-selection__choice__remove');\n\n $remove.attr('title', removeItem());\n $remove.attr('aria-label', removeItem());\n $remove.attr('aria-describedby', selectionId);\n\n Utils.StoreData($selection[0], 'data', selection);\n\n $selections.push($selection);\n }\n\n var $rendered = this.$selection.find('.select2-selection__rendered');\n\n $rendered.append($selections);\n };\n\n return MultipleSelection;\n});\n\nS2.define('select2/selection/placeholder',[\n\n], function () {\n function Placeholder (decorated, $element, options) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options);\n }\n\n Placeholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n Placeholder.prototype.createPlaceholder = function (decorated, placeholder) {\n var $placeholder = this.selectionContainer();\n\n $placeholder.html(this.display(placeholder));\n $placeholder[0].classList.add('select2-selection__placeholder');\n $placeholder[0].classList.remove('select2-selection__choice');\n\n var placeholderTitle = placeholder.title ||\n placeholder.text ||\n $placeholder.text();\n\n this.$selection.find('.select2-selection__rendered').attr(\n 'title',\n placeholderTitle\n );\n\n return $placeholder;\n };\n\n Placeholder.prototype.update = function (decorated, data) {\n var singlePlaceholder = (\n data.length == 1 && data[0].id != this.placeholder.id\n );\n var multipleSelections = data.length > 1;\n\n if (multipleSelections || singlePlaceholder) {\n return decorated.call(this, data);\n }\n\n this.clear();\n\n var $placeholder = this.createPlaceholder(this.placeholder);\n\n this.$selection.find('.select2-selection__rendered').append($placeholder);\n };\n\n return Placeholder;\n});\n\nS2.define('select2/selection/allowClear',[\n 'jquery',\n '../keys',\n '../utils'\n], function ($, KEYS, Utils) {\n function AllowClear () { }\n\n AllowClear.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n if (this.placeholder == null) {\n if (this.options.get('debug') && window.console && console.error) {\n console.error(\n 'Select2: The `allowClear` option should be used in combination ' +\n 'with the `placeholder` option.'\n );\n }\n }\n\n this.$selection.on('mousedown', '.select2-selection__clear',\n function (evt) {\n self._handleClear(evt);\n });\n\n container.on('keypress', function (evt) {\n self._handleKeyboardClear(evt, container);\n });\n };\n\n AllowClear.prototype._handleClear = function (_, evt) {\n // Ignore the event if it is disabled\n if (this.isDisabled()) {\n return;\n }\n\n var $clear = this.$selection.find('.select2-selection__clear');\n\n // Ignore the event if nothing has been selected\n if ($clear.length === 0) {\n return;\n }\n\n evt.stopPropagation();\n\n var data = Utils.GetData($clear[0], 'data');\n\n var previousVal = this.$element.val();\n this.$element.val(this.placeholder.id);\n\n var unselectData = {\n data: data\n };\n this.trigger('clear', unselectData);\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n\n for (var d = 0; d < data.length; d++) {\n unselectData = {\n data: data[d]\n };\n\n // Trigger the `unselect` event, so people can prevent it from being\n // cleared.\n this.trigger('unselect', unselectData);\n\n // If the event was prevented, don't clear it out.\n if (unselectData.prevented) {\n this.$element.val(previousVal);\n return;\n }\n }\n\n this.$element.trigger('input').trigger('change');\n\n this.trigger('toggle', {});\n };\n\n AllowClear.prototype._handleKeyboardClear = function (_, evt, container) {\n if (container.isOpen()) {\n return;\n }\n\n if (evt.which == KEYS.DELETE || evt.which == KEYS.BACKSPACE) {\n this._handleClear(evt);\n }\n };\n\n AllowClear.prototype.update = function (decorated, data) {\n decorated.call(this, data);\n\n this.$selection.find('.select2-selection__clear').remove();\n this.$selection[0].classList.remove('select2-selection--clearable');\n\n if (this.$selection.find('.select2-selection__placeholder').length > 0 ||\n data.length === 0) {\n return;\n }\n\n var selectionId = this.$selection.find('.select2-selection__rendered')\n .attr('id');\n\n var removeAll = this.options.get('translations').get('removeAllItems');\n\n var $remove = $(\n '<button type=\"button\" class=\"select2-selection__clear\" tabindex=\"-1\">' +\n '<span aria-hidden=\"true\">×</span>' +\n '</button>'\n );\n $remove.attr('title', removeAll());\n $remove.attr('aria-label', removeAll());\n $remove.attr('aria-describedby', selectionId);\n Utils.StoreData($remove[0], 'data', data);\n\n this.$selection.prepend($remove);\n this.$selection[0].classList.add('select2-selection--clearable');\n };\n\n return AllowClear;\n});\n\nS2.define('select2/selection/search',[\n 'jquery',\n '../utils',\n '../keys'\n], function ($, Utils, KEYS) {\n function Search (decorated, $element, options) {\n decorated.call(this, $element, options);\n }\n\n Search.prototype.render = function (decorated) {\n var searchLabel = this.options.get('translations').get('search');\n var $search = $(\n '<span class=\"select2-search select2-search--inline\">' +\n '<textarea class=\"select2-search__field\"'+\n ' type=\"search\" tabindex=\"-1\"' +\n ' autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" >' +\n '</textarea>' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('textarea');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n var $rendered = decorated.call(this);\n\n this._transferTabIndex();\n $rendered.append(this.$searchContainer);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n var selectionId = container.id + '-container';\n\n decorated.call(this, container, $container);\n\n self.$search.attr('aria-describedby', selectionId);\n\n container.on('open', function () {\n self.$search.attr('aria-controls', resultsId);\n self.$search.trigger('focus');\n });\n\n container.on('close', function () {\n self.$search.val('');\n self.resizeSearch();\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n self.$search.trigger('focus');\n });\n\n container.on('enable', function () {\n self.$search.prop('disabled', false);\n\n self._transferTabIndex();\n });\n\n container.on('disable', function () {\n self.$search.prop('disabled', true);\n });\n\n container.on('focus', function (evt) {\n self.$search.trigger('focus');\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n\n this.$selection.on('focusin', '.select2-search--inline', function (evt) {\n self.trigger('focus', evt);\n });\n\n this.$selection.on('focusout', '.select2-search--inline', function (evt) {\n self._handleBlur(evt);\n });\n\n this.$selection.on('keydown', '.select2-search--inline', function (evt) {\n evt.stopPropagation();\n\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n\n var key = evt.which;\n\n if (key === KEYS.BACKSPACE && self.$search.val() === '') {\n var $previousChoice = self.$selection\n .find('.select2-selection__choice').last();\n\n if ($previousChoice.length > 0) {\n var item = Utils.GetData($previousChoice[0], 'data');\n\n self.searchRemoveChoice(item);\n\n evt.preventDefault();\n }\n }\n });\n\n this.$selection.on('click', '.select2-search--inline', function (evt) {\n if (self.$search.val()) {\n evt.stopPropagation();\n }\n });\n\n // Try to detect the IE version should the `documentMode` property that\n // is stored on the document. This is only implemented in IE and is\n // slightly cleaner than doing a user agent check.\n // This property is not available in Edge, but Edge also doesn't have\n // this bug.\n var msie = document.documentMode;\n var disableInputEvents = msie && msie <= 11;\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$selection.on(\n 'input.searchcheck',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents) {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n // Unbind the duplicated `keyup` event\n self.$selection.off('keyup.search');\n }\n );\n\n this.$selection.on(\n 'keyup.search input.search',\n '.select2-search--inline',\n function (evt) {\n // IE will trigger the `input` event when a placeholder is used on a\n // search box. To get around this issue, we are forced to ignore all\n // `input` events in IE and keep using `keyup`.\n if (disableInputEvents && evt.type === 'input') {\n self.$selection.off('input.search input.searchcheck');\n return;\n }\n\n var key = evt.which;\n\n // We can freely ignore events from modifier keys\n if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) {\n return;\n }\n\n // Tabbing will be handled during the `keydown` phase\n if (key == KEYS.TAB) {\n return;\n }\n\n self.handleSearch(evt);\n }\n );\n };\n\n /**\n * This method will transfer the tabindex attribute from the rendered\n * selection to the search box. This allows for the search box to be used as\n * the primary focus instead of the selection container.\n *\n * @private\n */\n Search.prototype._transferTabIndex = function (decorated) {\n this.$search.attr('tabindex', this.$selection.attr('tabindex'));\n this.$selection.attr('tabindex', '-1');\n };\n\n Search.prototype.createPlaceholder = function (decorated, placeholder) {\n this.$search.attr('placeholder', placeholder.text);\n };\n\n Search.prototype.update = function (decorated, data) {\n var searchHadFocus = this.$search[0] == document.activeElement;\n\n this.$search.attr('placeholder', '');\n\n decorated.call(this, data);\n\n this.resizeSearch();\n if (searchHadFocus) {\n this.$search.trigger('focus');\n }\n };\n\n Search.prototype.handleSearch = function () {\n this.resizeSearch();\n\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.searchRemoveChoice = function (decorated, item) {\n this.trigger('unselect', {\n data: item\n });\n\n this.$search.val(item.text);\n this.handleSearch();\n };\n\n Search.prototype.resizeSearch = function () {\n this.$search.css('width', '25px');\n\n var width = '100%';\n\n if (this.$search.attr('placeholder') === '') {\n var minimumWidth = this.$search.val().length + 1;\n\n width = (minimumWidth * 0.75) + 'em';\n }\n\n this.$search.css('width', width);\n };\n\n return Search;\n});\n\nS2.define('select2/selection/selectionCss',[\n '../utils'\n], function (Utils) {\n function SelectionCSS () { }\n\n SelectionCSS.prototype.render = function (decorated) {\n var $selection = decorated.call(this);\n\n var selectionCssClass = this.options.get('selectionCssClass') || '';\n\n if (selectionCssClass.indexOf(':all:') !== -1) {\n selectionCssClass = selectionCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($selection[0], this.$element[0]);\n }\n\n $selection.addClass(selectionCssClass);\n\n return $selection;\n };\n\n return SelectionCSS;\n});\n\nS2.define('select2/selection/eventRelay',[\n 'jquery'\n], function ($) {\n function EventRelay () { }\n\n EventRelay.prototype.bind = function (decorated, container, $container) {\n var self = this;\n var relayEvents = [\n 'open', 'opening',\n 'close', 'closing',\n 'select', 'selecting',\n 'unselect', 'unselecting',\n 'clear', 'clearing'\n ];\n\n var preventableEvents = [\n 'opening', 'closing', 'selecting', 'unselecting', 'clearing'\n ];\n\n decorated.call(this, container, $container);\n\n container.on('*', function (name, params) {\n // Ignore events that should not be relayed\n if (relayEvents.indexOf(name) === -1) {\n return;\n }\n\n // The parameters should always be an object\n params = params || {};\n\n // Generate the jQuery event for the Select2 event\n var evt = $.Event('select2:' + name, {\n params: params\n });\n\n self.$element.trigger(evt);\n\n // Only handle preventable events if it was one\n if (preventableEvents.indexOf(name) === -1) {\n return;\n }\n\n params.prevented = evt.isDefaultPrevented();\n });\n };\n\n return EventRelay;\n});\n\nS2.define('select2/translation',[\n 'jquery',\n 'require'\n], function ($, require) {\n function Translation (dict) {\n this.dict = dict || {};\n }\n\n Translation.prototype.all = function () {\n return this.dict;\n };\n\n Translation.prototype.get = function (key) {\n return this.dict[key];\n };\n\n Translation.prototype.extend = function (translation) {\n this.dict = $.extend({}, translation.all(), this.dict);\n };\n\n // Static functions\n\n Translation._cache = {};\n\n Translation.loadPath = function (path) {\n if (!(path in Translation._cache)) {\n var translations = require(path);\n\n Translation._cache[path] = translations;\n }\n\n return new Translation(Translation._cache[path]);\n };\n\n return Translation;\n});\n\nS2.define('select2/diacritics',[\n\n], function () {\n var diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u0152': 'OE',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u0153': 'oe',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03CE': '\\u03C9',\n '\\u03C2': '\\u03C3',\n '\\u2019': '\\''\n };\n\n return diacritics;\n});\n\nS2.define('select2/data/base',[\n '../utils'\n], function (Utils) {\n function BaseAdapter ($element, options) {\n BaseAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(BaseAdapter, Utils.Observable);\n\n BaseAdapter.prototype.current = function (callback) {\n throw new Error('The `current` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.query = function (params, callback) {\n throw new Error('The `query` method must be defined in child classes.');\n };\n\n BaseAdapter.prototype.bind = function (container, $container) {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.destroy = function () {\n // Can be implemented in subclasses\n };\n\n BaseAdapter.prototype.generateResultId = function (container, data) {\n var id = container.id + '-result-';\n\n id += Utils.generateChars(4);\n\n if (data.id != null) {\n id += '-' + data.id.toString();\n } else {\n id += '-' + Utils.generateChars(4);\n }\n return id;\n };\n\n return BaseAdapter;\n});\n\nS2.define('select2/data/select',[\n './base',\n '../utils',\n 'jquery'\n], function (BaseAdapter, Utils, $) {\n function SelectAdapter ($element, options) {\n this.$element = $element;\n this.options = options;\n\n SelectAdapter.__super__.constructor.call(this);\n }\n\n Utils.Extend(SelectAdapter, BaseAdapter);\n\n SelectAdapter.prototype.current = function (callback) {\n var self = this;\n\n var data = Array.prototype.map.call(\n this.$element[0].querySelectorAll(':checked'),\n function (selectedElement) {\n return self.item($(selectedElement));\n }\n );\n\n callback(data);\n };\n\n SelectAdapter.prototype.select = function (data) {\n var self = this;\n\n data.selected = true;\n\n // If data.element is a DOM node, use it instead\n if (\n data.element != null && data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = true;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n if (this.$element.prop('multiple')) {\n this.current(function (currentData) {\n var val = [];\n\n data = [data];\n data.push.apply(data, currentData);\n\n for (var d = 0; d < data.length; d++) {\n var id = data[d].id;\n\n if (val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n self.$element.trigger('input').trigger('change');\n });\n } else {\n var val = data.id;\n\n this.$element.val(val);\n this.$element.trigger('input').trigger('change');\n }\n };\n\n SelectAdapter.prototype.unselect = function (data) {\n var self = this;\n\n if (!this.$element.prop('multiple')) {\n return;\n }\n\n data.selected = false;\n\n if (\n data.element != null &&\n data.element.tagName.toLowerCase() === 'option'\n ) {\n data.element.selected = false;\n\n this.$element.trigger('input').trigger('change');\n\n return;\n }\n\n this.current(function (currentData) {\n var val = [];\n\n for (var d = 0; d < currentData.length; d++) {\n var id = currentData[d].id;\n\n if (id !== data.id && val.indexOf(id) === -1) {\n val.push(id);\n }\n }\n\n self.$element.val(val);\n\n self.$element.trigger('input').trigger('change');\n });\n };\n\n SelectAdapter.prototype.bind = function (container, $container) {\n var self = this;\n\n this.container = container;\n\n container.on('select', function (params) {\n self.select(params.data);\n });\n\n container.on('unselect', function (params) {\n self.unselect(params.data);\n });\n };\n\n SelectAdapter.prototype.destroy = function () {\n // Remove anything added to child elements\n this.$element.find('*').each(function () {\n // Remove any custom data set by Select2\n Utils.RemoveData(this);\n });\n };\n\n SelectAdapter.prototype.query = function (params, callback) {\n var data = [];\n var self = this;\n\n var $options = this.$element.children();\n\n $options.each(function () {\n if (\n this.tagName.toLowerCase() !== 'option' &&\n this.tagName.toLowerCase() !== 'optgroup'\n ) {\n return;\n }\n\n var $option = $(this);\n\n var option = self.item($option);\n\n var matches = self.matches(params, option);\n\n if (matches !== null) {\n data.push(matches);\n }\n });\n\n callback({\n results: data\n });\n };\n\n SelectAdapter.prototype.addOptions = function ($options) {\n this.$element.append($options);\n };\n\n SelectAdapter.prototype.option = function (data) {\n var option;\n\n if (data.children) {\n option = document.createElement('optgroup');\n option.label = data.text;\n } else {\n option = document.createElement('option');\n\n if (option.textContent !== undefined) {\n option.textContent = data.text;\n } else {\n option.innerText = data.text;\n }\n }\n\n if (data.id !== undefined) {\n option.value = data.id;\n }\n\n if (data.disabled) {\n option.disabled = true;\n }\n\n if (data.selected) {\n option.selected = true;\n }\n\n if (data.title) {\n option.title = data.title;\n }\n\n var normalizedData = this._normalizeItem(data);\n normalizedData.element = option;\n\n // Override the option's data with the combined data\n Utils.StoreData(option, 'data', normalizedData);\n\n return $(option);\n };\n\n SelectAdapter.prototype.item = function ($option) {\n var data = {};\n\n data = Utils.GetData($option[0], 'data');\n\n if (data != null) {\n return data;\n }\n\n var option = $option[0];\n\n if (option.tagName.toLowerCase() === 'option') {\n data = {\n id: $option.val(),\n text: $option.text(),\n disabled: $option.prop('disabled'),\n selected: $option.prop('selected'),\n title: $option.prop('title')\n };\n } else if (option.tagName.toLowerCase() === 'optgroup') {\n data = {\n text: $option.prop('label'),\n children: [],\n title: $option.prop('title')\n };\n\n var $children = $option.children('option');\n var children = [];\n\n for (var c = 0; c < $children.length; c++) {\n var $child = $($children[c]);\n\n var child = this.item($child);\n\n children.push(child);\n }\n\n data.children = children;\n }\n\n data = this._normalizeItem(data);\n data.element = $option[0];\n\n Utils.StoreData($option[0], 'data', data);\n\n return data;\n };\n\n SelectAdapter.prototype._normalizeItem = function (item) {\n if (item !== Object(item)) {\n item = {\n id: item,\n text: item\n };\n }\n\n item = $.extend({}, {\n text: ''\n }, item);\n\n var defaults = {\n selected: false,\n disabled: false\n };\n\n if (item.id != null) {\n item.id = item.id.toString();\n }\n\n if (item.text != null) {\n item.text = item.text.toString();\n }\n\n if (item._resultId == null && item.id && this.container != null) {\n item._resultId = this.generateResultId(this.container, item);\n }\n\n return $.extend({}, defaults, item);\n };\n\n SelectAdapter.prototype.matches = function (params, data) {\n var matcher = this.options.get('matcher');\n\n return matcher(params, data);\n };\n\n return SelectAdapter;\n});\n\nS2.define('select2/data/array',[\n './select',\n '../utils',\n 'jquery'\n], function (SelectAdapter, Utils, $) {\n function ArrayAdapter ($element, options) {\n this._dataToConvert = options.get('data') || [];\n\n ArrayAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(ArrayAdapter, SelectAdapter);\n\n ArrayAdapter.prototype.bind = function (container, $container) {\n ArrayAdapter.__super__.bind.call(this, container, $container);\n\n this.addOptions(this.convertToOptions(this._dataToConvert));\n };\n\n ArrayAdapter.prototype.select = function (data) {\n var $option = this.$element.find('option').filter(function (i, elm) {\n return elm.value == data.id.toString();\n });\n\n if ($option.length === 0) {\n $option = this.option(data);\n\n this.addOptions($option);\n }\n\n ArrayAdapter.__super__.select.call(this, data);\n };\n\n ArrayAdapter.prototype.convertToOptions = function (data) {\n var self = this;\n\n var $existing = this.$element.find('option');\n var existingIds = $existing.map(function () {\n return self.item($(this)).id;\n }).get();\n\n var $options = [];\n\n // Filter out all items except for the one passed in the argument\n function onlyItem (item) {\n return function () {\n return $(this).val() == item.id;\n };\n }\n\n for (var d = 0; d < data.length; d++) {\n var item = this._normalizeItem(data[d]);\n\n // Skip items which were pre-loaded, only merge the data\n if (existingIds.indexOf(item.id) >= 0) {\n var $existingOption = $existing.filter(onlyItem(item));\n\n var existingData = this.item($existingOption);\n var newData = $.extend(true, {}, item, existingData);\n\n var $newOption = this.option(newData);\n\n $existingOption.replaceWith($newOption);\n\n continue;\n }\n\n var $option = this.option(item);\n\n if (item.children) {\n var $children = this.convertToOptions(item.children);\n\n $option.append($children);\n }\n\n $options.push($option);\n }\n\n return $options;\n };\n\n return ArrayAdapter;\n});\n\nS2.define('select2/data/ajax',[\n './array',\n '../utils',\n 'jquery'\n], function (ArrayAdapter, Utils, $) {\n function AjaxAdapter ($element, options) {\n this.ajaxOptions = this._applyDefaults(options.get('ajax'));\n\n if (this.ajaxOptions.processResults != null) {\n this.processResults = this.ajaxOptions.processResults;\n }\n\n AjaxAdapter.__super__.constructor.call(this, $element, options);\n }\n\n Utils.Extend(AjaxAdapter, ArrayAdapter);\n\n AjaxAdapter.prototype._applyDefaults = function (options) {\n var defaults = {\n data: function (params) {\n return $.extend({}, params, {\n q: params.term\n });\n },\n transport: function (params, success, failure) {\n var $request = $.ajax(params);\n\n $request.then(success);\n $request.fail(failure);\n\n return $request;\n }\n };\n\n return $.extend({}, defaults, options, true);\n };\n\n AjaxAdapter.prototype.processResults = function (results) {\n return results;\n };\n\n AjaxAdapter.prototype.query = function (params, callback) {\n var matches = [];\n var self = this;\n\n if (this._request != null) {\n // JSONP requests cannot always be aborted\n if (typeof this._request.abort === 'function') {\n this._request.abort();\n }\n\n this._request = null;\n }\n\n var options = $.extend({\n type: 'GET'\n }, this.ajaxOptions);\n\n if (typeof options.url === 'function') {\n options.url = options.url.call(this.$element, params);\n }\n\n if (typeof options.data === 'function') {\n options.data = options.data.call(this.$element, params);\n }\n\n function request () {\n var $request = options.transport(options, function (data) {\n var results = self.processResults(data, params);\n\n if (self.options.get('debug') && window.console && console.error) {\n // Check to make sure that the response included a `results` key.\n if (!results || !results.results || !Array.isArray(results.results)) {\n console.error(\n 'Select2: The AJAX results did not return an array in the ' +\n '`results` key of the response.'\n );\n }\n }\n\n callback(results);\n }, function () {\n // Attempt to detect if a request was aborted\n // Only works if the transport exposes a status property\n if ('status' in $request &&\n ($request.status === 0 || $request.status === '0')) {\n return;\n }\n\n self.trigger('results:message', {\n message: 'errorLoading'\n });\n });\n\n self._request = $request;\n }\n\n if (this.ajaxOptions.delay && params.term != null) {\n if (this._queryTimeout) {\n window.clearTimeout(this._queryTimeout);\n }\n\n this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay);\n } else {\n request();\n }\n };\n\n return AjaxAdapter;\n});\n\nS2.define('select2/data/tags',[\n 'jquery'\n], function ($) {\n function Tags (decorated, $element, options) {\n var tags = options.get('tags');\n\n var createTag = options.get('createTag');\n\n if (createTag !== undefined) {\n this.createTag = createTag;\n }\n\n var insertTag = options.get('insertTag');\n\n if (insertTag !== undefined) {\n this.insertTag = insertTag;\n }\n\n decorated.call(this, $element, options);\n\n if (Array.isArray(tags)) {\n for (var t = 0; t < tags.length; t++) {\n var tag = tags[t];\n var item = this._normalizeItem(tag);\n\n var $option = this.option(item);\n\n this.$element.append($option);\n }\n }\n }\n\n Tags.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n this._removeOldTags();\n\n if (params.term == null || params.page != null) {\n decorated.call(this, params, callback);\n return;\n }\n\n function wrapper (obj, child) {\n var data = obj.results;\n\n for (var i = 0; i < data.length; i++) {\n var option = data[i];\n\n var checkChildren = (\n option.children != null &&\n !wrapper({\n results: option.children\n }, true)\n );\n\n var optionText = (option.text || '').toUpperCase();\n var paramsTerm = (params.term || '').toUpperCase();\n\n var checkText = optionText === paramsTerm;\n\n if (checkText || checkChildren) {\n if (child) {\n return false;\n }\n\n obj.data = data;\n callback(obj);\n\n return;\n }\n }\n\n if (child) {\n return true;\n }\n\n var tag = self.createTag(params);\n\n if (tag != null) {\n var $option = self.option(tag);\n $option.attr('data-select2-tag', 'true');\n\n self.addOptions([$option]);\n\n self.insertTag(data, tag);\n }\n\n obj.results = data;\n\n callback(obj);\n }\n\n decorated.call(this, params, wrapper);\n };\n\n Tags.prototype.createTag = function (decorated, params) {\n if (params.term == null) {\n return null;\n }\n\n var term = params.term.trim();\n\n if (term === '') {\n return null;\n }\n\n return {\n id: term,\n text: term\n };\n };\n\n Tags.prototype.insertTag = function (_, data, tag) {\n data.unshift(tag);\n };\n\n Tags.prototype._removeOldTags = function (_) {\n var $options = this.$element.find('option[data-select2-tag]');\n\n $options.each(function () {\n if (this.selected) {\n return;\n }\n\n $(this).remove();\n });\n };\n\n return Tags;\n});\n\nS2.define('select2/data/tokenizer',[\n 'jquery'\n], function ($) {\n function Tokenizer (decorated, $element, options) {\n var tokenizer = options.get('tokenizer');\n\n if (tokenizer !== undefined) {\n this.tokenizer = tokenizer;\n }\n\n decorated.call(this, $element, options);\n }\n\n Tokenizer.prototype.bind = function (decorated, container, $container) {\n decorated.call(this, container, $container);\n\n this.$search = container.dropdown.$search || container.selection.$search ||\n $container.find('.select2-search__field');\n };\n\n Tokenizer.prototype.query = function (decorated, params, callback) {\n var self = this;\n\n function createAndSelect (data) {\n // Normalize the data object so we can use it for checks\n var item = self._normalizeItem(data);\n\n // Check if the data object already exists as a tag\n // Select it if it doesn't\n var $existingOptions = self.$element.find('option').filter(function () {\n return $(this).val() === item.id;\n });\n\n // If an existing option wasn't found for it, create the option\n if (!$existingOptions.length) {\n var $option = self.option(item);\n $option.attr('data-select2-tag', true);\n\n self._removeOldTags();\n self.addOptions([$option]);\n }\n\n // Select the item, now that we know there is an option for it\n select(item);\n }\n\n function select (data) {\n self.trigger('select', {\n data: data\n });\n }\n\n params.term = params.term || '';\n\n var tokenData = this.tokenizer(params, this.options, createAndSelect);\n\n if (tokenData.term !== params.term) {\n // Replace the search term if we have the search box\n if (this.$search.length) {\n this.$search.val(tokenData.term);\n this.$search.trigger('focus');\n }\n\n params.term = tokenData.term;\n }\n\n decorated.call(this, params, callback);\n };\n\n Tokenizer.prototype.tokenizer = function (_, params, options, callback) {\n var separators = options.get('tokenSeparators') || [];\n var term = params.term;\n var i = 0;\n\n var createTag = this.createTag || function (params) {\n return {\n id: params.term,\n text: params.term\n };\n };\n\n while (i < term.length) {\n var termChar = term[i];\n\n if (separators.indexOf(termChar) === -1) {\n i++;\n\n continue;\n }\n\n var part = term.substr(0, i);\n var partParams = $.extend({}, params, {\n term: part\n });\n\n var data = createTag(partParams);\n\n if (data == null) {\n i++;\n continue;\n }\n\n callback(data);\n\n // Reset the term to not include the tokenized portion\n term = term.substr(i + 1) || '';\n i = 0;\n }\n\n return {\n term: term\n };\n };\n\n return Tokenizer;\n});\n\nS2.define('select2/data/minimumInputLength',[\n\n], function () {\n function MinimumInputLength (decorated, $e, options) {\n this.minimumInputLength = options.get('minimumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MinimumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (params.term.length < this.minimumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooShort',\n args: {\n minimum: this.minimumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MinimumInputLength;\n});\n\nS2.define('select2/data/maximumInputLength',[\n\n], function () {\n function MaximumInputLength (decorated, $e, options) {\n this.maximumInputLength = options.get('maximumInputLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumInputLength.prototype.query = function (decorated, params, callback) {\n params.term = params.term || '';\n\n if (this.maximumInputLength > 0 &&\n params.term.length > this.maximumInputLength) {\n this.trigger('results:message', {\n message: 'inputTooLong',\n args: {\n maximum: this.maximumInputLength,\n input: params.term,\n params: params\n }\n });\n\n return;\n }\n\n decorated.call(this, params, callback);\n };\n\n return MaximumInputLength;\n});\n\nS2.define('select2/data/maximumSelectionLength',[\n\n], function (){\n function MaximumSelectionLength (decorated, $e, options) {\n this.maximumSelectionLength = options.get('maximumSelectionLength');\n\n decorated.call(this, $e, options);\n }\n\n MaximumSelectionLength.prototype.bind =\n function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function () {\n self._checkIfMaximumSelected();\n });\n };\n\n MaximumSelectionLength.prototype.query =\n function (decorated, params, callback) {\n var self = this;\n\n this._checkIfMaximumSelected(function () {\n decorated.call(self, params, callback);\n });\n };\n\n MaximumSelectionLength.prototype._checkIfMaximumSelected =\n function (_, successCallback) {\n var self = this;\n\n this.current(function (currentData) {\n var count = currentData != null ? currentData.length : 0;\n if (self.maximumSelectionLength > 0 &&\n count >= self.maximumSelectionLength) {\n self.trigger('results:message', {\n message: 'maximumSelected',\n args: {\n maximum: self.maximumSelectionLength\n }\n });\n return;\n }\n\n if (successCallback) {\n successCallback();\n }\n });\n };\n\n return MaximumSelectionLength;\n});\n\nS2.define('select2/dropdown',[\n 'jquery',\n './utils'\n], function ($, Utils) {\n function Dropdown ($element, options) {\n this.$element = $element;\n this.options = options;\n\n Dropdown.__super__.constructor.call(this);\n }\n\n Utils.Extend(Dropdown, Utils.Observable);\n\n Dropdown.prototype.render = function () {\n var $dropdown = $(\n '<span class=\"select2-dropdown\">' +\n '<span class=\"select2-results\"></span>' +\n '</span>'\n );\n\n $dropdown.attr('dir', this.options.get('dir'));\n\n this.$dropdown = $dropdown;\n\n return $dropdown;\n };\n\n Dropdown.prototype.bind = function () {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.position = function ($dropdown, $container) {\n // Should be implemented in subclasses\n };\n\n Dropdown.prototype.destroy = function () {\n // Remove the dropdown from the DOM\n this.$dropdown.remove();\n };\n\n return Dropdown;\n});\n\nS2.define('select2/dropdown/search',[\n 'jquery'\n], function ($) {\n function Search () { }\n\n Search.prototype.render = function (decorated) {\n var $rendered = decorated.call(this);\n var searchLabel = this.options.get('translations').get('search');\n\n var $search = $(\n '<span class=\"select2-search select2-search--dropdown\">' +\n '<input class=\"select2-search__field\" type=\"search\" tabindex=\"-1\"' +\n ' autocorrect=\"off\" autocapitalize=\"none\"' +\n ' spellcheck=\"false\" role=\"searchbox\" aria-autocomplete=\"list\" />' +\n '</span>'\n );\n\n this.$searchContainer = $search;\n this.$search = $search.find('input');\n\n this.$search.prop('autocomplete', this.options.get('autocomplete'));\n this.$search.attr('aria-label', searchLabel());\n\n $rendered.prepend($search);\n\n return $rendered;\n };\n\n Search.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n var resultsId = container.id + '-results';\n\n decorated.call(this, container, $container);\n\n this.$search.on('keydown', function (evt) {\n self.trigger('keypress', evt);\n\n self._keyUpPrevented = evt.isDefaultPrevented();\n });\n\n // Workaround for browsers which do not support the `input` event\n // This will prevent double-triggering of events for browsers which support\n // both the `keyup` and `input` events.\n this.$search.on('input', function (evt) {\n // Unbind the duplicated `keyup` event\n $(this).off('keyup');\n });\n\n this.$search.on('keyup input', function (evt) {\n self.handleSearch(evt);\n });\n\n container.on('open', function () {\n self.$search.attr('tabindex', 0);\n self.$search.attr('aria-controls', resultsId);\n\n self.$search.trigger('focus');\n\n window.setTimeout(function () {\n self.$search.trigger('focus');\n }, 0);\n });\n\n container.on('close', function () {\n self.$search.attr('tabindex', -1);\n self.$search.removeAttr('aria-controls');\n self.$search.removeAttr('aria-activedescendant');\n\n self.$search.val('');\n self.$search.trigger('blur');\n });\n\n container.on('focus', function () {\n if (!container.isOpen()) {\n self.$search.trigger('focus');\n }\n });\n\n container.on('results:all', function (params) {\n if (params.query.term == null || params.query.term === '') {\n var showSearch = self.showSearch(params);\n\n if (showSearch) {\n self.$searchContainer[0].classList.remove('select2-search--hide');\n } else {\n self.$searchContainer[0].classList.add('select2-search--hide');\n }\n }\n });\n\n container.on('results:focus', function (params) {\n if (params.data._resultId) {\n self.$search.attr('aria-activedescendant', params.data._resultId);\n } else {\n self.$search.removeAttr('aria-activedescendant');\n }\n });\n };\n\n Search.prototype.handleSearch = function (evt) {\n if (!this._keyUpPrevented) {\n var input = this.$search.val();\n\n this.trigger('query', {\n term: input\n });\n }\n\n this._keyUpPrevented = false;\n };\n\n Search.prototype.showSearch = function (_, params) {\n return true;\n };\n\n return Search;\n});\n\nS2.define('select2/dropdown/hidePlaceholder',[\n\n], function () {\n function HidePlaceholder (decorated, $element, options, dataAdapter) {\n this.placeholder = this.normalizePlaceholder(options.get('placeholder'));\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n HidePlaceholder.prototype.append = function (decorated, data) {\n data.results = this.removePlaceholder(data.results);\n\n decorated.call(this, data);\n };\n\n HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) {\n if (typeof placeholder === 'string') {\n placeholder = {\n id: '',\n text: placeholder\n };\n }\n\n return placeholder;\n };\n\n HidePlaceholder.prototype.removePlaceholder = function (_, data) {\n var modifiedData = data.slice(0);\n\n for (var d = data.length - 1; d >= 0; d--) {\n var item = data[d];\n\n if (this.placeholder.id === item.id) {\n modifiedData.splice(d, 1);\n }\n }\n\n return modifiedData;\n };\n\n return HidePlaceholder;\n});\n\nS2.define('select2/dropdown/infiniteScroll',[\n 'jquery'\n], function ($) {\n function InfiniteScroll (decorated, $element, options, dataAdapter) {\n this.lastParams = {};\n\n decorated.call(this, $element, options, dataAdapter);\n\n this.$loadingMore = this.createLoadingMore();\n this.loading = false;\n }\n\n InfiniteScroll.prototype.append = function (decorated, data) {\n this.$loadingMore.remove();\n this.loading = false;\n\n decorated.call(this, data);\n\n if (this.showLoadingMore(data)) {\n this.$results.append(this.$loadingMore);\n this.loadMoreIfNeeded();\n }\n };\n\n InfiniteScroll.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('query', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n container.on('query:append', function (params) {\n self.lastParams = params;\n self.loading = true;\n });\n\n this.$results.on('scroll', this.loadMoreIfNeeded.bind(this));\n };\n\n InfiniteScroll.prototype.loadMoreIfNeeded = function () {\n var isLoadMoreVisible = $.contains(\n document.documentElement,\n this.$loadingMore[0]\n );\n\n if (this.loading || !isLoadMoreVisible) {\n return;\n }\n\n var currentOffset = this.$results.offset().top +\n this.$results.outerHeight(false);\n var loadingMoreOffset = this.$loadingMore.offset().top +\n this.$loadingMore.outerHeight(false);\n\n if (currentOffset + 50 >= loadingMoreOffset) {\n this.loadMore();\n }\n };\n\n InfiniteScroll.prototype.loadMore = function () {\n this.loading = true;\n\n var params = $.extend({}, {page: 1}, this.lastParams);\n\n params.page++;\n\n this.trigger('query:append', params);\n };\n\n InfiniteScroll.prototype.showLoadingMore = function (_, data) {\n return data.pagination && data.pagination.more;\n };\n\n InfiniteScroll.prototype.createLoadingMore = function () {\n var $option = $(\n '<li ' +\n 'class=\"select2-results__option select2-results__option--load-more\"' +\n 'role=\"option\" aria-disabled=\"true\"></li>'\n );\n\n var message = this.options.get('translations').get('loadingMore');\n\n $option.html(message(this.lastParams));\n\n return $option;\n };\n\n return InfiniteScroll;\n});\n\nS2.define('select2/dropdown/attachBody',[\n 'jquery',\n '../utils'\n], function ($, Utils) {\n function AttachBody (decorated, $element, options) {\n this.$dropdownParent = $(options.get('dropdownParent') || document.body);\n\n decorated.call(this, $element, options);\n }\n\n AttachBody.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('open', function () {\n self._showDropdown();\n self._attachPositioningHandler(container);\n\n // Must bind after the results handlers to ensure correct sizing\n self._bindContainerResultHandlers(container);\n });\n\n container.on('close', function () {\n self._hideDropdown();\n self._detachPositioningHandler(container);\n });\n\n this.$dropdownContainer.on('mousedown', function (evt) {\n evt.stopPropagation();\n });\n };\n\n AttachBody.prototype.destroy = function (decorated) {\n decorated.call(this);\n\n this.$dropdownContainer.remove();\n };\n\n AttachBody.prototype.position = function (decorated, $dropdown, $container) {\n // Clone all of the container classes\n $dropdown.attr('class', $container.attr('class'));\n\n $dropdown[0].classList.remove('select2');\n $dropdown[0].classList.add('select2-container--open');\n\n $dropdown.css({\n position: 'absolute',\n top: -999999\n });\n\n this.$container = $container;\n };\n\n AttachBody.prototype.render = function (decorated) {\n var $container = $('<span></span>');\n\n var $dropdown = decorated.call(this);\n $container.append($dropdown);\n\n this.$dropdownContainer = $container;\n\n return $container;\n };\n\n AttachBody.prototype._hideDropdown = function (decorated) {\n this.$dropdownContainer.detach();\n };\n\n AttachBody.prototype._bindContainerResultHandlers =\n function (decorated, container) {\n\n // These should only be bound once\n if (this._containerResultsHandlersBound) {\n return;\n }\n\n var self = this;\n\n container.on('results:all', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:append', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('results:message', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('select', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n container.on('unselect', function () {\n self._positionDropdown();\n self._resizeDropdown();\n });\n\n this._containerResultsHandlersBound = true;\n };\n\n AttachBody.prototype._attachPositioningHandler =\n function (decorated, container) {\n var self = this;\n\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.each(function () {\n Utils.StoreData(this, 'select2-scroll-position', {\n x: $(this).scrollLeft(),\n y: $(this).scrollTop()\n });\n });\n\n $watchers.on(scrollEvent, function (ev) {\n var position = Utils.GetData(this, 'select2-scroll-position');\n $(this).scrollTop(position.y);\n });\n\n $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent,\n function (e) {\n self._positionDropdown();\n self._resizeDropdown();\n });\n };\n\n AttachBody.prototype._detachPositioningHandler =\n function (decorated, container) {\n var scrollEvent = 'scroll.select2.' + container.id;\n var resizeEvent = 'resize.select2.' + container.id;\n var orientationEvent = 'orientationchange.select2.' + container.id;\n\n var $watchers = this.$container.parents().filter(Utils.hasScroll);\n $watchers.off(scrollEvent);\n\n $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent);\n };\n\n AttachBody.prototype._positionDropdown = function () {\n var $window = $(window);\n\n var isCurrentlyAbove = this.$dropdown[0].classList\n .contains('select2-dropdown--above');\n var isCurrentlyBelow = this.$dropdown[0].classList\n .contains('select2-dropdown--below');\n\n var newDirection = null;\n\n var offset = this.$container.offset();\n\n offset.bottom = offset.top + this.$container.outerHeight(false);\n\n var container = {\n height: this.$container.outerHeight(false)\n };\n\n container.top = offset.top;\n container.bottom = offset.top + container.height;\n\n var dropdown = {\n height: this.$dropdown.outerHeight(false)\n };\n\n var viewport = {\n top: $window.scrollTop(),\n bottom: $window.scrollTop() + $window.height()\n };\n\n var enoughRoomAbove = viewport.top < (offset.top - dropdown.height);\n var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height);\n\n var css = {\n left: offset.left,\n top: container.bottom\n };\n\n // Determine what the parent element is to use for calculating the offset\n var $offsetParent = this.$dropdownParent;\n\n // For statically positioned elements, we need to get the element\n // that is determining the offset\n if ($offsetParent.css('position') === 'static') {\n $offsetParent = $offsetParent.offsetParent();\n }\n\n var parentOffset = {\n top: 0,\n left: 0\n };\n\n if (\n $.contains(document.body, $offsetParent[0]) ||\n $offsetParent[0].isConnected\n ) {\n parentOffset = $offsetParent.offset();\n }\n\n css.top -= parentOffset.top;\n css.left -= parentOffset.left;\n\n if (!isCurrentlyAbove && !isCurrentlyBelow) {\n newDirection = 'below';\n }\n\n if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) {\n newDirection = 'above';\n } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) {\n newDirection = 'below';\n }\n\n if (newDirection == 'above' ||\n (isCurrentlyAbove && newDirection !== 'below')) {\n css.top = container.top - parentOffset.top - dropdown.height;\n }\n\n if (newDirection != null) {\n this.$dropdown[0].classList.remove('select2-dropdown--below');\n this.$dropdown[0].classList.remove('select2-dropdown--above');\n this.$dropdown[0].classList.add('select2-dropdown--' + newDirection);\n\n this.$container[0].classList.remove('select2-container--below');\n this.$container[0].classList.remove('select2-container--above');\n this.$container[0].classList.add('select2-container--' + newDirection);\n }\n\n this.$dropdownContainer.css(css);\n };\n\n AttachBody.prototype._resizeDropdown = function () {\n var css = {\n width: this.$container.outerWidth(false) + 'px'\n };\n\n if (this.options.get('dropdownAutoWidth')) {\n css.minWidth = css.width;\n css.position = 'relative';\n css.width = 'auto';\n }\n\n this.$dropdown.css(css);\n };\n\n AttachBody.prototype._showDropdown = function (decorated) {\n this.$dropdownContainer.appendTo(this.$dropdownParent);\n\n this._positionDropdown();\n this._resizeDropdown();\n };\n\n return AttachBody;\n});\n\nS2.define('select2/dropdown/minimumResultsForSearch',[\n\n], function () {\n function countResults (data) {\n var count = 0;\n\n for (var d = 0; d < data.length; d++) {\n var item = data[d];\n\n if (item.children) {\n count += countResults(item.children);\n } else {\n count++;\n }\n }\n\n return count;\n }\n\n function MinimumResultsForSearch (decorated, $element, options, dataAdapter) {\n this.minimumResultsForSearch = options.get('minimumResultsForSearch');\n\n if (this.minimumResultsForSearch < 0) {\n this.minimumResultsForSearch = Infinity;\n }\n\n decorated.call(this, $element, options, dataAdapter);\n }\n\n MinimumResultsForSearch.prototype.showSearch = function (decorated, params) {\n if (countResults(params.data.results) < this.minimumResultsForSearch) {\n return false;\n }\n\n return decorated.call(this, params);\n };\n\n return MinimumResultsForSearch;\n});\n\nS2.define('select2/dropdown/selectOnClose',[\n '../utils'\n], function (Utils) {\n function SelectOnClose () { }\n\n SelectOnClose.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('close', function (params) {\n self._handleSelectOnClose(params);\n });\n };\n\n SelectOnClose.prototype._handleSelectOnClose = function (_, params) {\n if (params && params.originalSelect2Event != null) {\n var event = params.originalSelect2Event;\n\n // Don't select an item if the close event was triggered from a select or\n // unselect event\n if (event._type === 'select' || event._type === 'unselect') {\n return;\n }\n }\n\n var $highlightedResults = this.getHighlightedResults();\n\n // Only select highlighted results\n if ($highlightedResults.length < 1) {\n return;\n }\n\n var data = Utils.GetData($highlightedResults[0], 'data');\n\n // Don't re-select already selected resulte\n if (\n (data.element != null && data.element.selected) ||\n (data.element == null && data.selected)\n ) {\n return;\n }\n\n this.trigger('select', {\n data: data\n });\n };\n\n return SelectOnClose;\n});\n\nS2.define('select2/dropdown/closeOnSelect',[\n\n], function () {\n function CloseOnSelect () { }\n\n CloseOnSelect.prototype.bind = function (decorated, container, $container) {\n var self = this;\n\n decorated.call(this, container, $container);\n\n container.on('select', function (evt) {\n self._selectTriggered(evt);\n });\n\n container.on('unselect', function (evt) {\n self._selectTriggered(evt);\n });\n };\n\n CloseOnSelect.prototype._selectTriggered = function (_, evt) {\n var originalEvent = evt.originalEvent;\n\n // Don't close if the control key is being held\n if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) {\n return;\n }\n\n this.trigger('close', {\n originalEvent: originalEvent,\n originalSelect2Event: evt\n });\n };\n\n return CloseOnSelect;\n});\n\nS2.define('select2/dropdown/dropdownCss',[\n '../utils'\n], function (Utils) {\n function DropdownCSS () { }\n\n DropdownCSS.prototype.render = function (decorated) {\n var $dropdown = decorated.call(this);\n\n var dropdownCssClass = this.options.get('dropdownCssClass') || '';\n\n if (dropdownCssClass.indexOf(':all:') !== -1) {\n dropdownCssClass = dropdownCssClass.replace(':all:', '');\n\n Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]);\n }\n\n $dropdown.addClass(dropdownCssClass);\n\n return $dropdown;\n };\n\n return DropdownCSS;\n});\n\nS2.define('select2/dropdown/tagsSearchHighlight',[\n '../utils'\n], function (Utils) {\n function TagsSearchHighlight () { }\n\n TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) {\n var $options = this.$results\n .find(\n '.select2-results__option--selectable' +\n ':not(.select2-results__option--selected)'\n );\n\n if ($options.length > 0) {\n var $firstOption = $options.first();\n var data = Utils.GetData($firstOption[0], 'data');\n var firstElement = data.element;\n\n if (firstElement && firstElement.getAttribute) {\n if (firstElement.getAttribute('data-select2-tag') === 'true') {\n $firstOption.trigger('mouseenter');\n\n return;\n }\n }\n }\n\n decorated.call(this);\n };\n\n return TagsSearchHighlight;\n});\n\nS2.define('select2/i18n/en',[],function () {\n // English\n return {\n errorLoading: function () {\n return 'The results could not be loaded.';\n },\n inputTooLong: function (args) {\n var overChars = args.input.length - args.maximum;\n\n var message = 'Please delete ' + overChars + ' character';\n\n if (overChars != 1) {\n message += 's';\n }\n\n return message;\n },\n inputTooShort: function (args) {\n var remainingChars = args.minimum - args.input.length;\n\n var message = 'Please enter ' + remainingChars + ' or more characters';\n\n return message;\n },\n loadingMore: function () {\n return 'Loading more results…';\n },\n maximumSelected: function (args) {\n var message = 'You can only select ' + args.maximum + ' item';\n\n if (args.maximum != 1) {\n message += 's';\n }\n\n return message;\n },\n noResults: function () {\n return 'No results found';\n },\n searching: function () {\n return 'Searching…';\n },\n removeAllItems: function () {\n return 'Remove all items';\n },\n removeItem: function () {\n return 'Remove item';\n },\n search: function() {\n return 'Search';\n }\n };\n});\n\nS2.define('select2/defaults',[\n 'jquery',\n\n './results',\n\n './selection/single',\n './selection/multiple',\n './selection/placeholder',\n './selection/allowClear',\n './selection/search',\n './selection/selectionCss',\n './selection/eventRelay',\n\n './utils',\n './translation',\n './diacritics',\n\n './data/select',\n './data/array',\n './data/ajax',\n './data/tags',\n './data/tokenizer',\n './data/minimumInputLength',\n './data/maximumInputLength',\n './data/maximumSelectionLength',\n\n './dropdown',\n './dropdown/search',\n './dropdown/hidePlaceholder',\n './dropdown/infiniteScroll',\n './dropdown/attachBody',\n './dropdown/minimumResultsForSearch',\n './dropdown/selectOnClose',\n './dropdown/closeOnSelect',\n './dropdown/dropdownCss',\n './dropdown/tagsSearchHighlight',\n\n './i18n/en'\n], function ($,\n\n ResultsList,\n\n SingleSelection, MultipleSelection, Placeholder, AllowClear,\n SelectionSearch, SelectionCSS, EventRelay,\n\n Utils, Translation, DIACRITICS,\n\n SelectData, ArrayData, AjaxData, Tags, Tokenizer,\n MinimumInputLength, MaximumInputLength, MaximumSelectionLength,\n\n Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll,\n AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect,\n DropdownCSS, TagsSearchHighlight,\n\n EnglishTranslation) {\n function Defaults () {\n this.reset();\n }\n\n Defaults.prototype.apply = function (options) {\n options = $.extend(true, {}, this.defaults, options);\n\n if (options.dataAdapter == null) {\n if (options.ajax != null) {\n options.dataAdapter = AjaxData;\n } else if (options.data != null) {\n options.dataAdapter = ArrayData;\n } else {\n options.dataAdapter = SelectData;\n }\n\n if (options.minimumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MinimumInputLength\n );\n }\n\n if (options.maximumInputLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumInputLength\n );\n }\n\n if (options.maximumSelectionLength > 0) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n MaximumSelectionLength\n );\n }\n\n if (options.tags) {\n options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags);\n }\n\n if (options.tokenSeparators != null || options.tokenizer != null) {\n options.dataAdapter = Utils.Decorate(\n options.dataAdapter,\n Tokenizer\n );\n }\n }\n\n if (options.resultsAdapter == null) {\n options.resultsAdapter = ResultsList;\n\n if (options.ajax != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n InfiniteScroll\n );\n }\n\n if (options.placeholder != null) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n HidePlaceholder\n );\n }\n\n if (options.selectOnClose) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n SelectOnClose\n );\n }\n\n if (options.tags) {\n options.resultsAdapter = Utils.Decorate(\n options.resultsAdapter,\n TagsSearchHighlight\n );\n }\n }\n\n if (options.dropdownAdapter == null) {\n if (options.multiple) {\n options.dropdownAdapter = Dropdown;\n } else {\n var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch);\n\n options.dropdownAdapter = SearchableDropdown;\n }\n\n if (options.minimumResultsForSearch !== 0) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n MinimumResultsForSearch\n );\n }\n\n if (options.closeOnSelect) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n CloseOnSelect\n );\n }\n\n if (options.dropdownCssClass != null) {\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n DropdownCSS\n );\n }\n\n options.dropdownAdapter = Utils.Decorate(\n options.dropdownAdapter,\n AttachBody\n );\n }\n\n if (options.selectionAdapter == null) {\n if (options.multiple) {\n options.selectionAdapter = MultipleSelection;\n } else {\n options.selectionAdapter = SingleSelection;\n }\n\n // Add the placeholder mixin if a placeholder was specified\n if (options.placeholder != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n Placeholder\n );\n }\n\n if (options.allowClear) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n AllowClear\n );\n }\n\n if (options.multiple) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionSearch\n );\n }\n\n if (options.selectionCssClass != null) {\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n SelectionCSS\n );\n }\n\n options.selectionAdapter = Utils.Decorate(\n options.selectionAdapter,\n EventRelay\n );\n }\n\n // If the defaults were not previously applied from an element, it is\n // possible for the language option to have not been resolved\n options.language = this._resolveLanguage(options.language);\n\n // Always fall back to English since it will always be complete\n options.language.push('en');\n\n var uniqueLanguages = [];\n\n for (var l = 0; l < options.language.length; l++) {\n var language = options.language[l];\n\n if (uniqueLanguages.indexOf(language) === -1) {\n uniqueLanguages.push(language);\n }\n }\n\n options.language = uniqueLanguages;\n\n options.translations = this._processTranslations(\n options.language,\n options.debug\n );\n\n return options;\n };\n\n Defaults.prototype.reset = function () {\n function stripDiacritics (text) {\n // Used 'uni range + named function' from http://jsperf.com/diacritics/18\n function match(a) {\n return DIACRITICS[a] || a;\n }\n\n return text.replace(/[^\\u0000-\\u007E]/g, match);\n }\n\n function matcher (params, data) {\n // Always return the object if there is nothing to compare\n if (params.term == null || params.term.trim() === '') {\n return data;\n }\n\n // Do a recursive check for options with children\n if (data.children && data.children.length > 0) {\n // Clone the data object if there are children\n // This is required as we modify the object to remove any non-matches\n var match = $.extend(true, {}, data);\n\n // Check each child of the option\n for (var c = data.children.length - 1; c >= 0; c--) {\n var child = data.children[c];\n\n var matches = matcher(params, child);\n\n // If there wasn't a match, remove the object in the array\n if (matches == null) {\n match.children.splice(c, 1);\n }\n }\n\n // If any children matched, return the new object\n if (match.children.length > 0) {\n return match;\n }\n\n // If there were no matching children, check just the plain object\n return matcher(params, match);\n }\n\n var original = stripDiacritics(data.text).toUpperCase();\n var term = stripDiacritics(params.term).toUpperCase();\n\n // Check if the text contains the term\n if (original.indexOf(term) > -1) {\n return data;\n }\n\n // If it doesn't contain the term, don't return anything\n return null;\n }\n\n this.defaults = {\n amdLanguageBase: './i18n/',\n autocomplete: 'off',\n closeOnSelect: true,\n debug: false,\n dropdownAutoWidth: false,\n escapeMarkup: Utils.escapeMarkup,\n language: {},\n matcher: matcher,\n minimumInputLength: 0,\n maximumInputLength: 0,\n maximumSelectionLength: 0,\n minimumResultsForSearch: 0,\n selectOnClose: false,\n scrollAfterSelect: false,\n sorter: function (data) {\n return data;\n },\n templateResult: function (result) {\n return result.text;\n },\n templateSelection: function (selection) {\n return selection.text;\n },\n theme: 'default',\n width: 'resolve'\n };\n };\n\n Defaults.prototype.applyFromElement = function (options, $element) {\n var optionLanguage = options.language;\n var defaultLanguage = this.defaults.language;\n var elementLanguage = $element.prop('lang');\n var parentLanguage = $element.closest('[lang]').prop('lang');\n\n var languages = Array.prototype.concat.call(\n this._resolveLanguage(elementLanguage),\n this._resolveLanguage(optionLanguage),\n this._resolveLanguage(defaultLanguage),\n this._resolveLanguage(parentLanguage)\n );\n\n options.language = languages;\n\n return options;\n };\n\n Defaults.prototype._resolveLanguage = function (language) {\n if (!language) {\n return [];\n }\n\n if ($.isEmptyObject(language)) {\n return [];\n }\n\n if ($.isPlainObject(language)) {\n return [language];\n }\n\n var languages;\n\n if (!Array.isArray(language)) {\n languages = [language];\n } else {\n languages = language;\n }\n\n var resolvedLanguages = [];\n\n for (var l = 0; l < languages.length; l++) {\n resolvedLanguages.push(languages[l]);\n\n if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) {\n // Extract the region information if it is included\n var languageParts = languages[l].split('-');\n var baseLanguage = languageParts[0];\n\n resolvedLanguages.push(baseLanguage);\n }\n }\n\n return resolvedLanguages;\n };\n\n Defaults.prototype._processTranslations = function (languages, debug) {\n var translations = new Translation();\n\n for (var l = 0; l < languages.length; l++) {\n var languageData = new Translation();\n\n var language = languages[l];\n\n if (typeof language === 'string') {\n try {\n // Try to load it with the original name\n languageData = Translation.loadPath(language);\n } catch (e) {\n try {\n // If we couldn't load it, check if it wasn't the full path\n language = this.defaults.amdLanguageBase + language;\n languageData = Translation.loadPath(language);\n } catch (ex) {\n // The translation could not be loaded at all. Sometimes this is\n // because of a configuration problem, other times this can be\n // because of how Select2 helps load all possible translation files\n if (debug && window.console && console.warn) {\n console.warn(\n 'Select2: The language file for \"' + language + '\" could ' +\n 'not be automatically loaded. A fallback will be used instead.'\n );\n }\n }\n }\n } else if ($.isPlainObject(language)) {\n languageData = new Translation(language);\n } else {\n languageData = language;\n }\n\n translations.extend(languageData);\n }\n\n return translations;\n };\n\n Defaults.prototype.set = function (key, value) {\n var camelKey = $.camelCase(key);\n\n var data = {};\n data[camelKey] = value;\n\n var convertedData = Utils._convertData(data);\n\n $.extend(true, this.defaults, convertedData);\n };\n\n var defaults = new Defaults();\n\n return defaults;\n});\n\nS2.define('select2/options',[\n 'jquery',\n './defaults',\n './utils'\n], function ($, Defaults, Utils) {\n function Options (options, $element) {\n this.options = options;\n\n if ($element != null) {\n this.fromElement($element);\n }\n\n if ($element != null) {\n this.options = Defaults.applyFromElement(this.options, $element);\n }\n\n this.options = Defaults.apply(this.options);\n }\n\n Options.prototype.fromElement = function ($e) {\n var excludedData = ['select2'];\n\n if (this.options.multiple == null) {\n this.options.multiple = $e.prop('multiple');\n }\n\n if (this.options.disabled == null) {\n this.options.disabled = $e.prop('disabled');\n }\n\n if (this.options.autocomplete == null && $e.prop('autocomplete')) {\n this.options.autocomplete = $e.prop('autocomplete');\n }\n\n if (this.options.dir == null) {\n if ($e.prop('dir')) {\n this.options.dir = $e.prop('dir');\n } else if ($e.closest('[dir]').prop('dir')) {\n this.options.dir = $e.closest('[dir]').prop('dir');\n } else {\n this.options.dir = 'ltr';\n }\n }\n\n $e.prop('disabled', this.options.disabled);\n $e.prop('multiple', this.options.multiple);\n\n if (Utils.GetData($e[0], 'select2Tags')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-select2-tags` attribute has been changed to ' +\n 'use the `data-data` and `data-tags=\"true\"` attributes and will be ' +\n 'removed in future versions of Select2.'\n );\n }\n\n Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags'));\n Utils.StoreData($e[0], 'tags', true);\n }\n\n if (Utils.GetData($e[0], 'ajaxUrl')) {\n if (this.options.debug && window.console && console.warn) {\n console.warn(\n 'Select2: The `data-ajax-url` attribute has been changed to ' +\n '`data-ajax--url` and support for the old attribute will be removed' +\n ' in future versions of Select2.'\n );\n }\n\n $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl'));\n Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl'));\n }\n\n var dataset = {};\n\n function upperCaseLetter(_, letter) {\n return letter.toUpperCase();\n }\n\n // Pre-load all of the attributes which are prefixed with `data-`\n for (var attr = 0; attr < $e[0].attributes.length; attr++) {\n var attributeName = $e[0].attributes[attr].name;\n var prefix = 'data-';\n\n if (attributeName.substr(0, prefix.length) == prefix) {\n // Get the contents of the attribute after `data-`\n var dataName = attributeName.substring(prefix.length);\n\n // Get the data contents from the consistent source\n // This is more than likely the jQuery data helper\n var dataValue = Utils.GetData($e[0], dataName);\n\n // camelCase the attribute name to match the spec\n var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter);\n\n // Store the data attribute contents into the dataset since\n dataset[camelDataName] = dataValue;\n }\n }\n\n // Prefer the element's `dataset` attribute if it exists\n // jQuery 1.x does not correctly handle data attributes with multiple dashes\n if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) {\n dataset = $.extend(true, {}, $e[0].dataset, dataset);\n }\n\n // Prefer our internal data cache if it exists\n var data = $.extend(true, {}, Utils.GetData($e[0]), dataset);\n\n data = Utils._convertData(data);\n\n for (var key in data) {\n if (excludedData.indexOf(key) > -1) {\n continue;\n }\n\n if ($.isPlainObject(this.options[key])) {\n $.extend(this.options[key], data[key]);\n } else {\n this.options[key] = data[key];\n }\n }\n\n return this;\n };\n\n Options.prototype.get = function (key) {\n return this.options[key];\n };\n\n Options.prototype.set = function (key, val) {\n this.options[key] = val;\n };\n\n return Options;\n});\n\nS2.define('select2/core',[\n 'jquery',\n './options',\n './utils',\n './keys'\n], function ($, Options, Utils, KEYS) {\n var Select2 = function ($element, options) {\n if (Utils.GetData($element[0], 'select2') != null) {\n Utils.GetData($element[0], 'select2').destroy();\n }\n\n this.$element = $element;\n\n this.id = this._generateId($element);\n\n options = options || {};\n\n this.options = new Options(options, $element);\n\n Select2.__super__.constructor.call(this);\n\n // Set up the tabindex\n\n var tabindex = $element.attr('tabindex') || 0;\n Utils.StoreData($element[0], 'old-tabindex', tabindex);\n $element.attr('tabindex', '-1');\n\n // Set up containers and adapters\n\n var DataAdapter = this.options.get('dataAdapter');\n this.dataAdapter = new DataAdapter($element, this.options);\n\n var $container = this.render();\n\n this._placeContainer($container);\n\n var SelectionAdapter = this.options.get('selectionAdapter');\n this.selection = new SelectionAdapter($element, this.options);\n this.$selection = this.selection.render();\n\n this.selection.position(this.$selection, $container);\n\n var DropdownAdapter = this.options.get('dropdownAdapter');\n this.dropdown = new DropdownAdapter($element, this.options);\n this.$dropdown = this.dropdown.render();\n\n this.dropdown.position(this.$dropdown, $container);\n\n var ResultsAdapter = this.options.get('resultsAdapter');\n this.results = new ResultsAdapter($element, this.options, this.dataAdapter);\n this.$results = this.results.render();\n\n this.results.position(this.$results, this.$dropdown);\n\n // Bind events\n\n var self = this;\n\n // Bind the container to all of the adapters\n this._bindAdapters();\n\n // Register any DOM event handlers\n this._registerDomEvents();\n\n // Register any internal event handlers\n this._registerDataEvents();\n this._registerSelectionEvents();\n this._registerDropdownEvents();\n this._registerResultsEvents();\n this._registerEvents();\n\n // Set the initial state\n this.dataAdapter.current(function (initialData) {\n self.trigger('selection:update', {\n data: initialData\n });\n });\n\n // Hide the original select\n $element[0].classList.add('select2-hidden-accessible');\n $element.attr('aria-hidden', 'true');\n\n // Synchronize any monitored attributes\n this._syncAttributes();\n\n Utils.StoreData($element[0], 'select2', this);\n\n // Ensure backwards compatibility with $element.data('select2').\n $element.data('select2', this);\n };\n\n Utils.Extend(Select2, Utils.Observable);\n\n Select2.prototype._generateId = function ($element) {\n var id = '';\n\n if ($element.attr('id') != null) {\n id = $element.attr('id');\n } else if ($element.attr('name') != null) {\n id = $element.attr('name') + '-' + Utils.generateChars(2);\n } else {\n id = Utils.generateChars(4);\n }\n\n id = id.replace(/(:|\\.|\\[|\\]|,)/g, '');\n id = 'select2-' + id;\n\n return id;\n };\n\n Select2.prototype._placeContainer = function ($container) {\n $container.insertAfter(this.$element);\n\n var width = this._resolveWidth(this.$element, this.options.get('width'));\n\n if (width != null) {\n $container.css('width', width);\n }\n };\n\n Select2.prototype._resolveWidth = function ($element, method) {\n var WIDTH = /^width:(([-+]?([0-9]*\\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;\n\n if (method == 'resolve') {\n var styleWidth = this._resolveWidth($element, 'style');\n\n if (styleWidth != null) {\n return styleWidth;\n }\n\n return this._resolveWidth($element, 'element');\n }\n\n if (method == 'element') {\n var elementWidth = $element.outerWidth(false);\n\n if (elementWidth <= 0) {\n return 'auto';\n }\n\n return elementWidth + 'px';\n }\n\n if (method == 'style') {\n var style = $element.attr('style');\n\n if (typeof(style) !== 'string') {\n return null;\n }\n\n var attrs = style.split(';');\n\n for (var i = 0, l = attrs.length; i < l; i = i + 1) {\n var attr = attrs[i].replace(/\\s/g, '');\n var matches = attr.match(WIDTH);\n\n if (matches !== null && matches.length >= 1) {\n return matches[1];\n }\n }\n\n return null;\n }\n\n if (method == 'computedstyle') {\n var computedStyle = window.getComputedStyle($element[0]);\n\n return computedStyle.width;\n }\n\n return method;\n };\n\n Select2.prototype._bindAdapters = function () {\n this.dataAdapter.bind(this, this.$container);\n this.selection.bind(this, this.$container);\n\n this.dropdown.bind(this, this.$container);\n this.results.bind(this, this.$container);\n };\n\n Select2.prototype._registerDomEvents = function () {\n var self = this;\n\n this.$element.on('change.select2', function () {\n self.dataAdapter.current(function (data) {\n self.trigger('selection:update', {\n data: data\n });\n });\n });\n\n this.$element.on('focus.select2', function (evt) {\n self.trigger('focus', evt);\n });\n\n this._syncA = Utils.bind(this._syncAttributes, this);\n this._syncS = Utils.bind(this._syncSubtree, this);\n\n this._observer = new window.MutationObserver(function (mutations) {\n self._syncA();\n self._syncS(mutations);\n });\n this._observer.observe(this.$element[0], {\n attributes: true,\n childList: true,\n subtree: false\n });\n };\n\n Select2.prototype._registerDataEvents = function () {\n var self = this;\n\n this.dataAdapter.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerSelectionEvents = function () {\n var self = this;\n var nonRelayEvents = ['toggle', 'focus'];\n\n this.selection.on('toggle', function () {\n self.toggleDropdown();\n });\n\n this.selection.on('focus', function (params) {\n self.focus(params);\n });\n\n this.selection.on('*', function (name, params) {\n if (nonRelayEvents.indexOf(name) !== -1) {\n return;\n }\n\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerDropdownEvents = function () {\n var self = this;\n\n this.dropdown.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerResultsEvents = function () {\n var self = this;\n\n this.results.on('*', function (name, params) {\n self.trigger(name, params);\n });\n };\n\n Select2.prototype._registerEvents = function () {\n var self = this;\n\n this.on('open', function () {\n self.$container[0].classList.add('select2-container--open');\n });\n\n this.on('close', function () {\n self.$container[0].classList.remove('select2-container--open');\n });\n\n this.on('enable', function () {\n self.$container[0].classList.remove('select2-container--disabled');\n });\n\n this.on('disable', function () {\n self.$container[0].classList.add('select2-container--disabled');\n });\n\n this.on('blur', function () {\n self.$container[0].classList.remove('select2-container--focus');\n });\n\n this.on('query', function (params) {\n if (!self.isOpen()) {\n self.trigger('open', {});\n }\n\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:all', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('query:append', function (params) {\n this.dataAdapter.query(params, function (data) {\n self.trigger('results:append', {\n data: data,\n query: params\n });\n });\n });\n\n this.on('keypress', function (evt) {\n var key = evt.which;\n\n if (self.isOpen()) {\n if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) {\n self.close(evt);\n\n evt.preventDefault();\n } else if (key === KEYS.ENTER || key === KEYS.TAB) {\n self.trigger('results:select', {});\n\n evt.preventDefault();\n } else if ((key === KEYS.SPACE && evt.ctrlKey)) {\n self.trigger('results:toggle', {});\n\n evt.preventDefault();\n } else if (key === KEYS.UP) {\n self.trigger('results:previous', {});\n\n evt.preventDefault();\n } else if (key === KEYS.DOWN) {\n self.trigger('results:next', {});\n\n evt.preventDefault();\n }\n } else {\n if (key === KEYS.ENTER || key === KEYS.SPACE ||\n (key === KEYS.DOWN && evt.altKey)) {\n self.open();\n\n evt.preventDefault();\n }\n }\n });\n };\n\n Select2.prototype._syncAttributes = function () {\n this.options.set('disabled', this.$element.prop('disabled'));\n\n if (this.isDisabled()) {\n if (this.isOpen()) {\n this.close();\n }\n\n this.trigger('disable', {});\n } else {\n this.trigger('enable', {});\n }\n };\n\n Select2.prototype._isChangeMutation = function (mutations) {\n var self = this;\n\n if (mutations.addedNodes && mutations.addedNodes.length > 0) {\n for (var n = 0; n < mutations.addedNodes.length; n++) {\n var node = mutations.addedNodes[n];\n\n if (node.selected) {\n return true;\n }\n }\n } else if (mutations.removedNodes && mutations.removedNodes.length > 0) {\n return true;\n } else if (Array.isArray(mutations)) {\n return mutations.some(function (mutation) {\n return self._isChangeMutation(mutation);\n });\n }\n\n return false;\n };\n\n Select2.prototype._syncSubtree = function (mutations) {\n var changed = this._isChangeMutation(mutations);\n var self = this;\n\n // Only re-pull the data if we think there is a change\n if (changed) {\n this.dataAdapter.current(function (currentData) {\n self.trigger('selection:update', {\n data: currentData\n });\n });\n }\n };\n\n /**\n * Override the trigger method to automatically trigger pre-events when\n * there are events that can be prevented.\n */\n Select2.prototype.trigger = function (name, args) {\n var actualTrigger = Select2.__super__.trigger;\n var preTriggerMap = {\n 'open': 'opening',\n 'close': 'closing',\n 'select': 'selecting',\n 'unselect': 'unselecting',\n 'clear': 'clearing'\n };\n\n if (args === undefined) {\n args = {};\n }\n\n if (name in preTriggerMap) {\n var preTriggerName = preTriggerMap[name];\n var preTriggerArgs = {\n prevented: false,\n name: name,\n args: args\n };\n\n actualTrigger.call(this, preTriggerName, preTriggerArgs);\n\n if (preTriggerArgs.prevented) {\n args.prevented = true;\n\n return;\n }\n }\n\n actualTrigger.call(this, name, args);\n };\n\n Select2.prototype.toggleDropdown = function () {\n if (this.isDisabled()) {\n return;\n }\n\n if (this.isOpen()) {\n this.close();\n } else {\n this.open();\n }\n };\n\n Select2.prototype.open = function () {\n if (this.isOpen()) {\n return;\n }\n\n if (this.isDisabled()) {\n return;\n }\n\n this.trigger('query', {});\n };\n\n Select2.prototype.close = function (evt) {\n if (!this.isOpen()) {\n return;\n }\n\n this.trigger('close', { originalEvent : evt });\n };\n\n /**\n * Helper method to abstract the \"enabled\" (not \"disabled\") state of this\n * object.\n *\n * @return {true} if the instance is not disabled.\n * @return {false} if the instance is disabled.\n */\n Select2.prototype.isEnabled = function () {\n return !this.isDisabled();\n };\n\n /**\n * Helper method to abstract the \"disabled\" state of this object.\n *\n * @return {true} if the disabled option is true.\n * @return {false} if the disabled option is false.\n */\n Select2.prototype.isDisabled = function () {\n return this.options.get('disabled');\n };\n\n Select2.prototype.isOpen = function () {\n return this.$container[0].classList.contains('select2-container--open');\n };\n\n Select2.prototype.hasFocus = function () {\n return this.$container[0].classList.contains('select2-container--focus');\n };\n\n Select2.prototype.focus = function (data) {\n // No need to re-trigger focus events if we are already focused\n if (this.hasFocus()) {\n return;\n }\n\n this.$container[0].classList.add('select2-container--focus');\n this.trigger('focus', {});\n };\n\n Select2.prototype.enable = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"enable\")` method has been deprecated and will' +\n ' be removed in later Select2 versions. Use $element.prop(\"disabled\")' +\n ' instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n args = [true];\n }\n\n var disabled = !args[0];\n\n this.$element.prop('disabled', disabled);\n };\n\n Select2.prototype.data = function () {\n if (this.options.get('debug') &&\n arguments.length > 0 && window.console && console.warn) {\n console.warn(\n 'Select2: Data can no longer be set using `select2(\"data\")`. You ' +\n 'should consider setting the value instead using `$element.val()`.'\n );\n }\n\n var data = [];\n\n this.dataAdapter.current(function (currentData) {\n data = currentData;\n });\n\n return data;\n };\n\n Select2.prototype.val = function (args) {\n if (this.options.get('debug') && window.console && console.warn) {\n console.warn(\n 'Select2: The `select2(\"val\")` method has been deprecated and will be' +\n ' removed in later Select2 versions. Use $element.val() instead.'\n );\n }\n\n if (args == null || args.length === 0) {\n return this.$element.val();\n }\n\n var newVal = args[0];\n\n if (Array.isArray(newVal)) {\n newVal = newVal.map(function (obj) {\n return obj.toString();\n });\n }\n\n this.$element.val(newVal).trigger('input').trigger('change');\n };\n\n Select2.prototype.destroy = function () {\n Utils.RemoveData(this.$container[0]);\n this.$container.remove();\n\n this._observer.disconnect();\n this._observer = null;\n\n this._syncA = null;\n this._syncS = null;\n\n this.$element.off('.select2');\n this.$element.attr('tabindex',\n Utils.GetData(this.$element[0], 'old-tabindex'));\n\n this.$element[0].classList.remove('select2-hidden-accessible');\n this.$element.attr('aria-hidden', 'false');\n Utils.RemoveData(this.$element[0]);\n this.$element.removeData('select2');\n\n this.dataAdapter.destroy();\n this.selection.destroy();\n this.dropdown.destroy();\n this.results.destroy();\n\n this.dataAdapter = null;\n this.selection = null;\n this.dropdown = null;\n this.results = null;\n };\n\n Select2.prototype.render = function () {\n var $container = $(\n '<span class=\"select2 select2-container\">' +\n '<span class=\"selection\"></span>' +\n '<span class=\"dropdown-wrapper\" aria-hidden=\"true\"></span>' +\n '</span>'\n );\n\n $container.attr('dir', this.options.get('dir'));\n\n this.$container = $container;\n\n this.$container[0].classList\n .add('select2-container--' + this.options.get('theme'));\n\n Utils.StoreData($container[0], 'element', this.$element);\n\n return $container;\n };\n\n return Select2;\n});\n\nS2.define('jquery-mousewheel',[\n 'jquery'\n], function ($) {\n // Used to shim jQuery.mousewheel for non-full builds.\n return $;\n});\n\nS2.define('jquery.select2',[\n 'jquery',\n 'jquery-mousewheel',\n\n './select2/core',\n './select2/defaults',\n './select2/utils'\n], function ($, _, Select2, Defaults, Utils) {\n if ($.fn.select2 == null) {\n // All methods that should return the element\n var thisMethods = ['open', 'close', 'destroy'];\n\n $.fn.select2 = function (options) {\n options = options || {};\n\n if (typeof options === 'object') {\n this.each(function () {\n var instanceOptions = $.extend(true, {}, options);\n\n var instance = new Select2($(this), instanceOptions);\n });\n\n return this;\n } else if (typeof options === 'string') {\n var ret;\n var args = Array.prototype.slice.call(arguments, 1);\n\n this.each(function () {\n var instance = Utils.GetData(this, 'select2');\n\n if (instance == null && window.console && console.error) {\n console.error(\n 'The select2(\\'' + options + '\\') method was called on an ' +\n 'element that is not using Select2.'\n );\n }\n\n ret = instance[options].apply(instance, args);\n });\n\n // Check if we should be returning `this`\n if (thisMethods.indexOf(options) > -1) {\n return this;\n }\n\n return ret;\n } else {\n throw new Error('Invalid arguments for Select2: ' + options);\n }\n };\n }\n\n if ($.fn.select2.defaults == null) {\n $.fn.select2.defaults = Defaults;\n }\n\n return Select2;\n});\n\n // Return the AMD loader configuration so it can be used outside of this file\n return {\n define: S2.define,\n require: S2.require\n };\n}());\n\n // Autoload the jQuery bindings\n // We know that all of the modules exist above this, so we're safe\n var select2 = S2.require('jquery.select2');\n\n // Hold the AMD module references on the jQuery function that was just loaded\n // This allows Select2 to use the internal loader outside of this file, such\n // as in the language files.\n jQuery.fn.select2.amd = S2;\n\n // Return the Select2 instance for anyone who is importing it.\n return select2;\n}));\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"22\":\"89c045666acbad0ded5e\",\"30\":\"634297dc3101a84f2c00\",\"131\":\"afe0481f50f56607f6e1\",\"133\":\"f49e0ff78ad827cf31ed\",\"134\":\"35e450c5a28d8fc2bdde\",\"146\":\"eb4e90d46463f40abb50\",\"175\":\"c667f2799399526f891c\",\"176\":\"716b0ab2ab8111358a14\",\"194\":\"40eeb10b6853d3000e19\",\"258\":\"b84f7c3dfdae1bcc2083\",\"279\":\"7a2341fc36179390bf60\",\"300\":\"ae9868519d134432afa2\",\"329\":\"3c92515f0dcf562cee46\",\"360\":\"7ee6bf528a935b8045c8\",\"409\":\"e6bfc4a8f4daf0552b3f\",\"492\":\"6317e38f264677c7874c\",\"512\":\"c712104f8e7ff18282c1\",\"584\":\"a9889cc99e64c0af63ff\",\"622\":\"1bb8d73b41a461cc1774\",\"639\":\"190b8c4333d82b91ff4e\",\"649\":\"482ba92b34c14ff7b564\",\"680\":\"837d47e8294891847e42\",\"701\":\"8e03ce9d8ca5ea5fae6d\",\"730\":\"6c0c6c7592221b6b5cda\",\"731\":\"739e45a3baab92e7fb48\",\"765\":\"96f621078934495f9e89\",\"794\":\"53f18e428e806f41e39a\",\"882\":\"28913fa738e7d74b1533\",\"911\":\"2959d41ea8af7bc5d17b\",\"960\":\"eb4381206e6810294b0c\",\"982\":\"37e52e566aab64667024\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"131\":\"900a46dfa9b21a9a303c\",\"175\":\"846b76f68b65a9aea950\",\"794\":\"1fb5505fde030abea106\",\"982\":\"95b263a0b56945215d60\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/dist/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"131\":1,\"175\":1,\"794\":1,\"982\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t57: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\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\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksitecore_web_schreuderssport\"] = self[\"webpackChunksitecore_web_schreuderssport\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// mobile search button\r\n\"use strict\";\r\n\r\nclass MobileSearchHandler {\r\n constructor() {\r\n this.searchFull = document.querySelector(\".search-full\");\r\n this.hiddenSearchBar = document.getElementById(\"hiddenSearchBar\"); \r\n this.mobileSearchButton = document.querySelector(\"[data-test='search-icon-mobile']\");\r\n this.searchClose = document.querySelector(\".search-close\");\r\n this.searchButton = document.querySelector(\".search-box button\");\r\n }\r\n\r\n init() {\r\n if (this.mobileSearchButton) {\r\n this.mobileSearchButton.addEventListener(\"click\", (e) => {\r\n this.searchFull.classList.add(\"active\");\r\n if (this.hiddenSearchBar) {\r\n this.hiddenSearchBar.focus();\r\n }\r\n e.preventDefault();\r\n });\r\n }\r\n\r\n if (this.searchButton) {\r\n this.searchButton.addEventListener(\"click\", (e) => {\r\n this.searchFull.classList.add(\"active\");\r\n if (this.hiddenSearchBar) {\r\n this.hiddenSearchBar.focus();\r\n }\r\n e.preventDefault();\r\n });\r\n }\r\n\r\n if (this.searchClose) {\r\n this.searchClose.addEventListener(\"click\", (e) => {\r\n this.searchFull.classList.remove(\"active\");\r\n e.preventDefault();\r\n });\r\n }\r\n }\r\n}\r\n\r\nexport default MobileSearchHandler;\r\n","//sidebar.js\r\n\"use strict\";\r\n\r\nimport $ from 'jquery'; \r\n\r\nexport default class Sidebar {\r\n constructor() {\r\n this.menuSidebarToggle = document.querySelector(\".menu-sidebar-toggle\");\r\n this.cartSidebarToggles = document.querySelectorAll(\".cart-sidebar-toggle\");\r\n this.handleScroll();\r\n \r\n if (this.cartSidebarToggles.length > 0) {\r\n this.handleSidebarToggle();\r\n }\r\n\r\n if (this.menuSidebarToggle) {\r\n this.handleMenuSidebar();\r\n }\r\n \r\n $(\".menu-close-trigger, .menu-overly-mask\").on('click', function (event) {\r\n event.preventDefault();\r\n $('.menu-overly-mask').toggleClass('is-visible');\r\n $('.menu-sidebar-toggle').toggleClass('active');\r\n $('.menu-sidebar').toggleClass('is-visible');\r\n });\r\n\r\n $(\".overly-mask, .cart-close-trigger\").on('click', function (event) {\r\n event.preventDefault();\r\n $('.overly-mask').toggleClass('is-visible');\r\n $('.cart-sidebar').toggleClass('is-visible')\r\n $('.cart-sidebar-toggle').toggleClass('active');\r\n $('.cartMenu ').toggleClass('open');\r\n });\r\n\r\n $(\".search-trigger\").on('click', function (e) {\r\n $('.search-overly-mask').toggleClass(\"open\"); //you can list several class names\r\n e.preventDefault();\r\n });\r\n\r\n $(\".search-overly-close-trigger\").on('click', function (e) {\r\n $('.search-overly-mask').removeClass(\"open\"); //you can list several class names\r\n e.preventDefault();\r\n });\r\n }\r\n\r\n handleScroll() {\r\n window.addEventListener('scroll', function () {\r\n const navbarHero = document.querySelector('.navbar-hero');\r\n if (navbarHero) {\r\n if (window.scrollY > 1) {\r\n navbarHero.classList.add(\"sticky\");\r\n } else {\r\n navbarHero.classList.remove(\"sticky\");\r\n }\r\n } \r\n });\r\n }\r\n\r\n handleMenuSidebar() {\r\n this.menuSidebarToggle.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n this.menuSidebarToggle.classList.toggle(\"active\");\r\n document.querySelector(\".menu-overly-mask\").classList.toggle(\"is-visible\");\r\n document.querySelector(\".menu-sidebar\").classList.toggle(\"is-visible\");\r\n });\r\n } \r\n\r\n handleSidebarToggle() {\r\n this.cartSidebarToggles.forEach(cartSidebarToggle => {\r\n cartSidebarToggle.addEventListener(\"click\", (e) => {\r\n e.preventDefault();\r\n cartSidebarToggle.classList.toggle(\"active\");\r\n document.querySelector(\".cart-sidebar\").classList.toggle(\"is-visible\");\r\n document.querySelector(\".cartMenu\").classList.toggle(\"open\");\r\n if (document.querySelector(\".megamenu\").classList.contains(\"stuck\")) {\r\n document.querySelector(\".cart-sidebar\").classList.add(\"hasTopBar\");\r\n } else {\r\n document.querySelector(\".cart-sidebar\").classList.remove(\"hasTopBar\");\r\n }\r\n });\r\n });\r\n\r\n document.body.addEventListener(\"click\", (e) => {\r\n this.cartSidebarToggles.forEach(cartSidebarToggle => {\r\n if (cartSidebarToggle.classList.contains(\"active\") && !e.target.closest(\".cart-sidebar\") && !e.target.closest(\".cart-sidebar-toggle\")) {\r\n cartSidebarToggle.classList.remove(\"active\");\r\n document.querySelector(\".cart-sidebar\").classList.remove(\"is-visible\");\r\n document.querySelector(\".cartMenu\").classList.remove(\"open\");\r\n }\r\n });\r\n });\r\n }\r\n}","// index.js\r\n\"use strict\";\r\n\r\nimport $ from \"jquery\";\r\n\r\n// global\r\nwindow.jQuery = $;\r\nwindow.$ = $;\r\n\r\nimport main from './main.js';\r\nimport Sidebar from \"./modules/sidebar.js\";\r\n\r\nmain();\r\n\r\ndocument.addEventListener('DOMContentLoaded', () => {\r\n new Sidebar();\r\n});\r\n\r\nif (document.querySelector('[js-hook-latestnews]') !== null) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n import('./modules/news.js').then(module => {\r\n new module.default();\r\n });\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-home]') !== null) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n import('./modules/carousel.js').then(module => {\r\n new module.default();\r\n });\r\n });\r\n\r\n import('./modules/home.js').then(module => {\r\n new module.default();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-minicart]') !== null) {\r\n import('./modules/minicart.js').then(module => {\r\n new module.default();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-productdetail]') !== null) { \r\n import('./modules/sticky-basket.js').then(module => {\r\n new module.default();\r\n });\r\n\r\n import('./modules/products/product-detail.js').then(module => {\r\n let config = window.productDetailsBasketConfig;\r\n const thumbs = document.querySelector('#product-images-thumbnails');\r\n const images = thumbs ? thumbs.querySelectorAll(\"li\") : [];\r\n const details = new module.default(config, images);\r\n details.init(); \r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-contact]') !== null) {\r\n import('./modules/contact.js').then(module => {\r\n const contact = new module.default();\r\n contact.init();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-products-view-filter]') !== null) {\r\n document.addEventListener('DOMContentLoaded', () => {\r\n import('./modules/products/product-viewfilter.js').then(module => {\r\n const productViewFilter = new module.default();\r\n productViewFilter.init();\r\n });\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-data-feed]') !== null) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n import('./modules/feeds.js').then(module => {\r\n const feeds = new module.default();\r\n feeds.init();\r\n });\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-client-registration]')) {\r\n import('./modules/account/registration.js').then(module => {\r\n new module.default();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-becomeclient]')) {\r\n import('./modules/account/become-client.js').then(module => {\r\n const translations = window.translations;\r\n const client = new module.default(translations);\r\n client.init();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-account-takeover]')) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n import('./modules/account/takeover.js').then(module => {\r\n const takeover = new module.default();\r\n takeover.init();\r\n });\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-account-newsletter]')) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n import('./modules/account/newsletters.js').then(module => {\r\n const newsletter = new module.default();\r\n newsletter.init();\r\n });\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-account-apps]')) {\r\n import('./modules/account/api-apps.js').then(module => {\r\n const config = window.apiAppsConfig;\r\n const apps = new module.default(config);\r\n apps.init();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-account-details]')) {\r\n import('./modules/account/details.js').then(module => {\r\n const config = window.accountMyDetailsConfig;\r\n const details = new module.default(config);\r\n details.init();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-basket]')) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n import('./modules/checkout/basket.js').then(module => {\r\n module.default();\r\n });\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-catalogue]')) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n import('./modules/catalogues.js').then(module => {\r\n new module.default();\r\n }); \r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-checkout-step1]')) {\r\n import('./modules/checkout/step1.js').then(module => {\r\n const config = window.checkout1config\r\n module.default(config);\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-checkout-step2]')) {\r\n document.addEventListener('DOMContentLoaded', function () {\r\n import('./modules/checkout/step2.js').then(module => {\r\n const config = window.checkout2config\r\n const checkout = new module.default(config);\r\n });\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-changepassword-form]')) {\r\n import('./modules/account/change-password.js').then(module => {\r\n new module.default();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-resetpassword-form]')) {\r\n import('./modules/account/reset-password.js').then(module => {\r\n new module.default();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-firstpassw-form]')) {\r\n import('./modules/account/first-password.js').then(module => {\r\n new module.default();\r\n });\r\n}\r\n\r\nif (document.querySelector('[js-hook-ideal-form]')) {\r\n import('./modules/ideal/ideal.js').then(module => {\r\n new module.default();\r\n });\r\n}\r\n","// main.js\r\n\"use strict\";\r\n\r\nimport $ from 'jquery';\r\nimport resizer from './modules/image-resize';\r\nimport { Select2 } from 'select2';\r\nimport Bloodhound from 'vendor/typeahead/typeahead.bundle';\r\nimport { Collapse } from \"bootstrap\";\r\nimport MobileSearchHandler from './utils/mobile-search-button';\r\n\r\nexport default function () {\r\n\r\n // Mobile device detection and apply class to body\r\n document.addEventListener('DOMContentLoaded', function() {\r\n function isMobileDevice() {\r\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n }\r\n \r\n if (isMobileDevice()) {\r\n document.body.classList.add('mobile-device');\r\n }\r\n });\r\n \r\n $(function () {\r\n if ($(\"body\").hasClass(\"loggedIn\")) {\r\n if (accountVariables.HasIdealInvoice) {\r\n $(\"#liIdealAccount\").show();\r\n }\r\n }\r\n\r\n let images = $(\"img.img-responsive-content\");\r\n resizer.process(images);\r\n\r\n var searchResults = new Bloodhound({\r\n datumTokenizer: Bloodhound.tokenizers.obj.whitespace('value'),\r\n queryTokenizer: Bloodhound.tokenizers.whitespace,\r\n remote: {\r\n url: '/api/ssi/search/%QUERY',\r\n wildcard: '%QUERY'\r\n }\r\n });\r\n\r\n $('.search-input').typeahead({\r\n autoselect: false,\r\n minLength: 2,\r\n hint: false\r\n }, {\r\n name: 'search-results',\r\n display: 'Title',\r\n source: searchResults,\r\n limit: 10\r\n });\r\n\r\n $('.search-input').on('typeahead:select', function (_ev, suggestion) {\r\n window.location.href = suggestion.Url;\r\n });\r\n\r\n $(\"#accordionNo .panel-collapse\").each(function () {\r\n $(this).on(\"hidden.bs.collapse\", function () {\r\n $(this).parent().find(\".collapseWill\").removeClass(\"active\").addClass(\"hasPlus\");\r\n });\r\n\r\n $(this).on(\"show.bs.collapse\", function () {\r\n $(this).parent().find(\".collapseWill\").removeClass(\"hasPlus\").addClass(\"active\");\r\n });\r\n });\r\n\r\n if ($(\"body\").width() < 992) {\r\n $(\"#accordionNo .panel-collapse\").collapse(\"hide\");\r\n }\r\n\r\n // Customs tree menu script\r\n $(\".dropdown-tree-a\").on('click', function () {\r\n $(this).parent(\".dropdown-tree\").toggleClass(\"open-tree active\");\r\n });\r\n\r\n $(function () {\r\n var navTree = $(\".nav-tree li:has(ul)\");\r\n var navTreeA = navTree.addClass(\"parent_li\").find(\" > a\");\r\n\r\n navTreeA.each(function () {\r\n if ($(this).hasClass(\"child-has-open\")) {\r\n\r\n } else {\r\n $(this).addClass(\"child-has-close\");\r\n var navTreeAchildren = $(this).parent(\"li.parent_li\").find(\" > ul > li\");\r\n navTreeAchildren.hide();\r\n }\r\n });\r\n\r\n $(\".nav-tree li.parent_li > a\").on(\"click\", function (e) {\r\n var children = $(this).parent(\"li.parent_li\").find(\" > ul > li\");\r\n if (children.is(\":visible\")) {\r\n children.hide(\"fast\");\r\n $(this).addClass(\"child-has-close\").removeClass(\"child-has-open\");\r\n\r\n } else {\r\n children.show(\"fast\");\r\n $(this).addClass(\"child-has-open\").removeClass(\"child-has-close\");\r\n }\r\n e.stopPropagation();\r\n });\r\n });\r\n\r\n if (/IEMobile/i.test(navigator.userAgent)) {\r\n // Detect windows phone//..\r\n $(\".navbar-brand\").addClass(\"windowsphone\");\r\n }\r\n\r\n // top navbar IE & Mobile Device fix\r\n var isMobile = function () {\r\n return /(iPad)|(iPhone)|(iPod)|(Android)|(PlayBook)|(BB10)|(BlackBerry)|(Opera Mini)|(IEMobile)|(webOS)|(MeeGo)/i.test(navigator.userAgent);\r\n };\r\n\r\n // Enable or disable click event on mega menu main menu item on mobile\r\n if (isMobile()) {\r\n $(\"a.dropdown-toggle\").removeClass(\"disabled\");\r\n }\r\n\r\n $(function () {\r\n var updateStickyNav = function () {\r\n //Sets the current scroll position\r\n var scrollTop = $(this).scrollTop() || 0;\r\n\r\n if (scrollTop < threshold) {\r\n $body.removeClass(\"stuckNav\").addClass(\"unstuckNav\");\r\n } else {\r\n $body.addClass(\"stuckNav\").removeClass(\"unstuckNav\");\r\n }\r\n\r\n tshopScroll = scrollTop; // Updates scroll position\r\n };\r\n\r\n // Keep track of last scroll\r\n var tshopScroll = 0;\r\n var threshold = $(\".navbar\").height() - $(\"#nav\").height();\r\n var $body = $(\"body\");\r\n $(window).on('scroll', updateStickyNav);\r\n updateStickyNav();\r\n });\r\n\r\n if (/iPhone|iPad|iPod/i.test(navigator.userAgent)) {\r\n // Detect ios User // \r\n const parallaxSection = document.querySelector(\".parallax-section\");\r\n if (parallaxSection) {\r\n parallaxSection.classList.add(\"isios\");\r\n }\r\n\r\n const navbarHeader = document.querySelector(\".navbar-header\")\r\n if (navbarHeader) {\r\n navbarHeader.classList.add(\"isios\");\r\n }\r\n\r\n const blogIntro = document.querySelector(\".blog-intro\");\r\n if (blogIntro) {\r\n blogIntro.classList.add(\"isios\");\r\n }\r\n\r\n const productStoryHasbg = document.querySelector(\".product-story-hasbg\");\r\n if (productStoryHasbg) {\r\n productStoryHasbg.classList.add(\"isios\");\r\n }\r\n }\r\n\r\n if (/Android|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n // Detect Android User // \r\n const parallaxSection = document.querySelector(\".parallax-section\");\r\n if (parallaxSection) {\r\n parallaxSection.classList.add(\"isandroid\");\r\n }\r\n }\r\n\r\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\r\n // Detect Mobile User // No parallax \r\n const parallaxSection = document.querySelector(\".parallax-section\");\r\n if (parallaxSection) {\r\n parallaxSection.classList.add(\"ismobile\");\r\n }\r\n\r\n const parallaximg = document.querySelector(\".parallaximg\");\r\n if (parallaximg) {\r\n parallaximg.classList.add(\"ismobile\");\r\n }\r\n } else {\r\n // All Desktop \r\n $(window).on(\"scroll\", function () {\r\n parallaxScroll();\r\n });\r\n\r\n function parallaxScroll() {\r\n var scrolledY = $(window).scrollTop();\r\n $(\".parallaximg\").css(\"marginTop\", \"\" + ((scrolledY * 0.3)) + \"px\");\r\n $(\".parallax-windowz\").css(\"background-position\", \"center -\" + ((scrolledY * 0.1)) + \"px\");\r\n }\r\n }\r\n\r\n $(function () {\r\n $(\"select.select2\").select2();\r\n });\r\n\r\n $(\".scrollto\").on('click', function (event) {\r\n event.preventDefault();\r\n //calculate destination place\r\n var dest;\r\n if ($(this.hash).offset().top > $(document).height() - $(window).height()) {\r\n dest = $(document).height() - $(window).height();\r\n } else {\r\n dest = $(this.hash).offset().top;\r\n }\r\n\r\n // go to destination\r\n $(\"html,body\").animate({\r\n scrollTop: dest - 51\r\n }, 1000, \"swing\");\r\n });\r\n\r\n // Mobile search button\r\n const mobileSearchHandler = new MobileSearchHandler();\r\n mobileSearchHandler.init();\r\n });\r\n}"],"names":["inProgress","dataWebpackPrefix","resizer","defaults","containerWidth","maxHeight","grid","centerCrop","ratio","targetAttribute","checkContainerHeight","options","currentOffset","rowImgs","setImageHeights","rowImgIdx","hasOwnProperty","rowImg","$","attr","toString","processImage","image","width","parseInt","height","src","separator","indexOf","newSrc","concat","process","selector","each","originalImgWidth","this","originalImgHeight","thisOffset","offset","top","effectiveWidth","imageContainer","closest","length","parent","Math","min","is","effectiveHeight","max","push","root","define","a0","_","isMsie","test","navigator","userAgent","match","isBlankString","str","escapeRegExChars","replace","isString","obj","isNumber","isArray","isFunction","isObject","isPlainObject","isUndefined","isElement","nodeType","isJQuery","toStr","s","bind","proxy","collection","cb","reverseArgs","index","value","map","filter","grep","every","result","key","val","call","some","mixin","extend","identity","x","clone","getIdGenerator","counter","templatify","template","String","defer","fn","setTimeout","debounce","func","wait","immediate","timeout","later","callNow","context","args","arguments","apply","clearTimeout","throttle","previous","Date","now","remaining","stringify","JSON","guid","_p8","p","random","substr","noop","VERSION","tokenizers","nonword","whitespace","ngram","getObjTokenizer","split","tokens","word","char","tokenizer","keys","slice","o","k","LruCache","maxSize","reset","set","get","List","head","tail","Node","prev","next","prototype","node","tailItem","list","size","remove","hash","moveToFront","add","PersistentStorage","LOCAL_STORAGE","window","localStorage","setItem","removeItem","err","namespace","override","prefix","join","ttlKey","keyMatcher","RegExp","ls","_noop","_prefix","_ttlKey","clear","isExpired","_safeSet","name","decode","getItem","ttl","encode","i","gatherMatchingKeys","getTime","parseJSON","len","Transport","pendingRequestsCount","pendingRequests","sharedCache","maxPendingRequests","cancelled","lastReq","_send","transport","_get","limiter","_cache","cache","setMaxPendingRequests","num","resetCache","_fingerprint","url","type","param","data","fingerprint","jqXhr","that","done","resp","fail","always","onDeckRequestArgs","cancel","SearchIndex","CHILDREN","IDS","datumTokenizer","queryTokenizer","error","identify","matchAnyQueryToken","bootstrap","datums","trie","datum","id","normalizeTokens","token","chars","ch","shift","newNode","ids","search","query","matches","getIntersection","unique","all","values","serialize","toLowerCase","array","seen","uniques","arrayA","arrayB","ai","bi","intersection","sort","lenArrayA","lenArrayB","Prefetch","prepare","transform","thumbprint","storage","cacheKey","protocol","_settings","dataType","store","location","fromCache","stored","fromNetwork","settings","onError","onResponse","Remote","indexResponse","cancelLastRequest","oParser","sorter","initialize","sufficient","indexRemote","local","prefetch","remote","parsePrefetch","parseRemote","callbackToDeferred","ajax","wildcard","rateLimitBy","rateLimitWait","toRemotePrepare","toLimiter","prepareByReplace","prepareByWildcard","identityPrepare","encodeURIComponent","method","deferred","Deferred","onSuccess","resolve","reject","Bloodhound","old","noConflict","__ttAdapter","withAsync","withoutAsync","sync","async","_loadPrefetch","serialized","promise","_initialize","initPromise","addLocalToIndex","force","processRemote","nonDuplicates","r","l","clearPrefetchCache","clearRemoteCache","ttAdapter","WWW","defaultClassNames","wrapper","input","hint","menu","dataset","suggestion","selectable","empty","open","cursor","highlight","build","www","classes","css","buildCss","html","buildHtml","selectors","buildSelectors","c","v","position","display","left","borderColor","boxShadow","opacity","verticalAlign","backgroundColor","inputWithNoHint","right","zIndex","ltr","rtl","backgroundImage","EventBus","deprecationMap","el","$el","render","cursorchange","select","autocomplete","_trigger","$e","Event","trigger","before","isDefaultPrevented","deprecatedType","EventEmitter","splitter","nextTick","getNextTick","onSync","onAsync","off","on","types","bindContext","_callbacks","callbacks","syncFlush","asyncFlush","getFlush","flush","setImmediate","doc","pattern","tagName","className","wordsOnly","caseSensitive","diacriticInsensitive","accented","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","regex","hightlightTextNode","textNode","patternNode","wrapperNode","exec","createElement","splitText","appendChild","cloneNode","parentNode","replaceChild","traverse","childNode","TEXT_NODE_TYPE","childNodes","getRegex","accent_replacer","chr","toUpperCase","patterns","regexStr","escapedPatterns","escapedWord","document","Input","specialKeyCodeMap","$hint","$input","role","queryWhenFocused","hasFocus","$overflowHelper","buildOverflowHelper","_checkLanguageDirection","setHint","getHint","clearHint","clearHintIfInvalid","_updateDescendent","normalizeQuery","_onBlur","resetInputValue","_onFocus","_onKeydown","keyName","which","keyCode","_managePreventDefault","_shouldTrigger","_onInput","_setQuery","getInputValue","preventDefault","withModifier","dir","silent","areEquivalent","hasDifferentWhitespace","areQueriesEquivalent","event","onBlur","onFocus","onKeydown","onInput","focus","blur","getLangDir","getQuery","setQuery","setInputValue","hasQueryChangedSinceLastFocus","valIsPrefixOfHint","hasOverflow","constraint","text","isCursorAtEnd","valueLength","selectionStart","range","selection","createRange","moveStart","destroy","visibility","whiteSpace","fontFamily","fontSize","fontStyle","fontVariant","fontWeight","wordSpacing","letterSpacing","textIndent","textRendering","textTransform","insertAfter","a","b","altKey","ctrlKey","metaKey","shiftKey","Dataset","nameGenerator","templates","notFound","source","isValidName","limit","displayFn","getDisplayFn","displayKey","getTemplates","_resetLastSuggestion","addClass","extractData","_overwrite","suggestions","_renderSuggestions","pending","_renderPending","_renderNotFound","_empty","_append","$lastSuggestion","_appendSuggestions","$fragment","_getSuggestionsFragment","children","last","prepend","_getHeader","append","_getFooter","after","fragment","createDocumentFragment","_injectQuery","footer","header","_query","update","canceled","syncCalled","rendered","idx","abs","isEmpty","suggestionTemplate","Menu","initializeDataset","oDataset","$node","find","first","appendTo","datasets","_onSelectableClick","currentTarget","_onRendered","toggleClass","_allDatasetsEmpty","_onCleared","_propagate","_getSelectables","_removeCursor","$selectable","getActiveSelectable","removeClass","_ensureVisible","elTop","elBottom","nodeScrollTop","nodeHeight","outerHeight","scrollTop","onSelectableClick","setCursor","isOpen","hasClass","close","setLanguageDirection","selectableRelativeToCursor","delta","$selectables","$oldCursor","newIndex","eq","getSelectableData","getTopSelectable","isValidUpdate","updateDataset","clearDataset","destroyDataset","Status","padding","border","overflow","clip","cleared","words","DefaultMenu","_show","_hide","hide","Typeahead","onFocused","onBlurred","onEnterKeyed","onTabKeyed","onEscKeyed","onUpKeyed","onDownKeyed","onLeftKeyed","onRightKeyed","onQueryChanged","onWhitespaceChanged","eventBus","minLength","enabled","active","activate","_hacks","_onSelectableClicked","_onAsyncRequested","_onAsyncCanceled","_onAsyncReceived","_onDatasetRendered","_onDatasetCleared","_onLangDirChanged","$menu","isActive","hasActive","activeElement","has","stopImmediatePropagation","_updateHint","_onFocused","_minLengthMet","_onBlurred","_onEnterKeyed","stopPropagation","_onTabKeyed","_onEscKeyed","_onUpKeyed","moveCursor","_onDownKeyed","_onLeftKeyed","_onRightKeyed","_onQueryChanged","e","_onWhitespaceChanged","_openIfActive","escapedQuery","isEnabled","enable","disable","deactivate","setVal","getVal","$candidate","datasetName","ctx","methods","ttEach","$els","typeahead","buildHintFromInput","removeData","getBackgroundStyles","prop","removeAttr","spellcheck","tabindex","prepInput","attrs","style","backgroundAttachment","backgroundClip","backgroundOrigin","backgroundPosition","backgroundRepeat","backgroundSize","revert","$wrapper","detach","$elOrNull","classNames","attach","defaultHint","defaultMenu","MenuConstructor","d","wrap","t","success","newVal","Affix","element","DEFAULTS","target","$target","checkPosition","checkPositionWithEventLoop","$element","affixed","unpin","pinnedOffset","Plugin","option","$this","RESET","getState","scrollHeight","offsetTop","offsetBottom","targetHeight","initializing","colliderTop","getPinnedOffset","bottom","body","affix","affixType","Constructor","$spy","dismiss","Alert","TRANSITION_DURATION","$parent","removeElement","support","transition","one","emulateTransitionEnd","alert","Button","isLoading","toggle","setState","loadingText","state","resetText","changed","button","$btn","Carousel","$indicators","paused","sliding","interval","$active","$items","keyboard","keydown","pause","documentElement","cycle","action","slide","to","clearInterval","setInterval","getItemIndex","item","getItemForDirection","direction","activeIndex","itemIndex","pos","end","$next","isCycling","relatedTarget","slideEvent","$nextIndicator","slidEvent","offsetWidth","carousel","clickHandler","href","slideIndex","$carousel","Collapse","$trigger","transitioning","getParent","addAriaAndCollapsedClass","getTargetFromTrigger","dimension","show","activesData","actives","startEvent","complete","scrollSize","camelCase","offsetHeight","collapse","Dropdown","clearMenus","contains","dropdown","Modal","$body","$dialog","$backdrop","isShown","originalBodyPad","scrollbarWidth","ignoreBackdropClick","fixedContent","load","_relatedTarget","BACKDROP_TRANSITION_DURATION","backdrop","checkScrollbar","setScrollbar","escape","resize","adjustDialog","enforceFocus","hideModal","handleUpdate","resetAdjustments","resetScrollbar","removeBackdrop","callback","animate","doAnimate","callbackRemove","modalIsOverflowing","clientHeight","paddingLeft","bodyIsOverflowing","paddingRight","fullWindowWidth","innerWidth","documentElementRect","getBoundingClientRect","clientWidth","measureScrollbar","bodyPad","actualPadding","calculatedPadding","parseFloat","scrollDiv","removeChild","modal","showEvent","Popover","init","tooltip","Error","placement","content","constructor","getDefaults","setContent","$tip","tip","title","getTitle","getContent","typeContent","sanitize","sanitizeHtml","hasContent","arrow","$arrow","popover","ScrollSpy","$scrollElement","offsets","targets","activeTarget","refresh","getScrollHeight","offsetMethod","offsetBase","isWindow","$href","maxScroll","undefined","parents","parentsUntil","scrollspy","Tab","$ul","$previous","hideEvent","container","tab","DISALLOWED_ATTRIBUTES","uriAttrs","DefaultWhitelist","area","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","pre","small","span","sub","sup","strong","u","ul","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","allowedAttributeList","attrName","nodeName","inArray","Boolean","nodeValue","regExp","unsafeHtml","whiteList","sanitizeFn","implementation","createHTMLDocument","createdDocument","innerHTML","whitelistKeys","elements","elName","attributeList","attributes","whitelistedAttributes","j","len2","removeAttribute","Tooltip","hoverState","inState","animation","delay","viewport","getOptions","$viewport","click","hover","triggers","eventIn","eventOut","enter","leave","_options","fixTitle","dataAttributes","dataAttr","getDelegateOptions","self","isInStateTrue","inDom","ownerDocument","tipId","getUID","autoToken","autoPlace","getPosition","actualWidth","actualHeight","orgPlacement","viewportDim","calculatedOffset","getCalculatedOffset","applyPlacement","prevHoverState","marginTop","marginLeft","isNaN","setOffset","using","props","round","getViewportAdjustedDelta","isVertical","arrowDelta","arrowOffsetPosition","replaceArrow","isBody","elRect","isSvg","SVGElement","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","getElementById","toggleEnabled","duration","called","transEndEventNames","WebkitTransition","MozTransition","OTransition","transitionEnd","special","bsTransitionEnd","bindType","delegateType","handle","handleObj","handler","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","module","exports","globalThis","g","Function","global","factory","w","noGlobal","arr","getProto","Object","getPrototypeOf","flat","class2type","hasOwn","fnToString","ObjectFunctionString","preservedScriptAttributes","nonce","noModule","DOMEval","script","getAttribute","setAttribute","toType","version","rhtmlSuffix","jQuery","isArrayLike","elem","jquery","toArray","pushStack","elems","ret","merge","prevObject","even","_elem","odd","splice","copy","copyIsArray","deep","Array","expando","isReady","msg","proto","Ctor","isEmptyObject","globalEval","textContent","makeArray","results","isXMLDoc","namespaceURI","docElem","second","invert","callbackExpect","arg","Symbol","iterator","_i","pop","rtrimCSS","bup","compareDocumentPosition","rcssescape","fcssescape","asCodePoint","charCodeAt","escapeSelector","sel","preferredDoc","pushNative","Expr","outermostContext","sortInput","hasDuplicate","documentIsHTML","rbuggyQSA","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","booleans","identifier","pseudos","rwhitespace","rcomma","rleadingCombinator","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rinputs","rheader","rquickExpr","rsibling","runescape","funescape","nonHex","high","fromCharCode","unloadHandler","setDocument","inDisabledFieldset","addCombinator","disabled","els","seed","m","nid","groups","newSelector","newContext","getElementsByTagName","getElementsByClassName","testContext","scope","tokenize","toSelector","querySelectorAll","qsaError","cacheLength","markFunction","assert","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","subWindow","webkitMatchesSelector","msMatchesSelector","defaultView","addEventListener","getById","getElementsByName","disconnectedMatch","cssHas","querySelector","attrId","getAttributeNode","tag","compare","sortDetached","expr","matchesSelector","attrHandle","uniqueSort","duplicates","sortStable","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","expectedNodeName","operator","check","what","_argument","simple","forward","ofType","_context","xml","outerCache","nodeIndex","start","useCache","diff","firstChild","lastChild","pseudo","setFilters","matched","not","matcher","compile","unmatched","lang","elemLang","safeActiveElement","tabIndex","checked","selected","selectedIndex","nextSibling","_matchIndexes","lt","gt","nth","radio","checkbox","file","password","submit","parseOnly","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","matcherOut","preMap","postMap","preexisting","contexts","multipleContexts","matcherIn","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","setMatchers","elementMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","matcherFromGroupMatchers","compiled","filters","getText","isXML","until","truncate","siblings","n","rneedsContext","rsingleTag","winnow","qualifier","rootjQuery","parseHTML","ready","rparentsprev","guaranteedUnique","contents","sibling","cur","prevAll","addBack","nextAll","nextUntil","prevUntil","contentDocument","reverse","rnothtmlwhite","Identity","Thrower","ex","adoptValue","noValue","then","Callbacks","object","flag","createOptions","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","lock","fireWith","tuples","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","mightThrow","TypeError","notifyWith","resolveWith","exceptionHook","rejectWith","getErrorHook","getStackHook","stateString","when","singleValue","resolveContexts","resolveValues","primary","updateFunc","rerrorNames","asyncError","console","warn","message","stack","readyException","readyList","completed","removeEventListener","catch","readyWait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","string","acceptData","owner","Data","uid","defineProperty","configurable","hasData","dataPriv","dataUser","rbrace","rmultiDash","parse","getData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","unshift","stop","setter","clearQueue","tmp","count","pnum","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","showHide","rcheckableType","rtagName","rscriptType","checkClone","noCloneChecked","defaultValue","wrapMap","thead","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","rhtml","buildFragment","scripts","ignored","attached","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","origFn","leverageNative","isSetup","saved","isTrigger","isImmediatePropagationStopped","handleObjIn","eventHandle","events","handlers","namespaces","origType","elemData","create","triggered","dispatch","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","noBubble","beforeunload","returnValue","defaultPrevented","timeStamp","isSimulated","bubbles","cancelable","changedTouches","detail","eventPhase","pageX","pageY","view","charCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","focusMappedHandler","documentMode","simulate","attaches","dataHolder","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","fixInput","domManip","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","insertBefore","replaceWith","prependTo","replaceAll","original","insert","rnumnonpx","rcustomProp","getStyles","opener","getComputedStyle","swap","rboxStyle","curCSS","computed","minWidth","maxWidth","isCustomProp","getPropertyValue","pixelBoxStyles","addGetHookIf","conditionFn","hookFn","computeStyleTests","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","pixelBoxStylesVal","boxSizingReliableVal","scrollboxSizeVal","measure","reliableTrDimensionsVal","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","borderTopWidth","borderBottomWidth","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","vendorPropName","rdisplayswap","cssShow","cssNormalTransform","setPositiveNumber","subtract","boxModelAdjustment","box","isBorderBox","styles","computedVal","extra","marginDelta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","animationIterationCount","aspectRatio","borderImageSlice","columnCount","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeMiterlimit","strokeOpacity","origName","setProperty","isFinite","scrollboxSizeBuggy","margin","suffix","expand","expanded","parts","propHooks","run","percent","eased","step","fx","scrollLeft","linear","swing","cos","PI","fxNow","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","propFilter","timer","anim","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflowX","overflowY","prefilter","speed","opt","speeds","fadeTo","optall","doAnimation","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","time","checkOn","optSelected","radioValue","boolHook","nType","attrHooks","attrNames","getter","lowercaseName","rfocusable","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","curValue","finalValue","stateVal","isValidValue","rreturn","valHooks","optionSet","rquery","parseXML","parserErrorElem","DOMParser","parseFromString","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","triggerHandler","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","valueOrFunction","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","lastModified","etag","isLocal","processData","contentType","accepts","json","responseFields","converters","ajaxSetup","ajaxPrefilter","ajaxTransport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","host","ifModified","headers","beforeSend","send","nativeStatusText","responses","isSuccess","response","modified","ct","finalDataType","firstDataType","ajaxHandleResponses","conv2","current","conv","dataFilter","throws","ajaxConvert","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","keepScripts","parsed","params","animated","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","curElem","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","fnOver","fnOut","rtrim","holdReady","hold","isNumeric","trim","_jQuery","_$","S2","select2","amd","requirejs","require","undef","main","req","makeMap","defined","waiting","config","defining","aps","jsSuffixRegExp","hasProp","normalize","baseName","nameParts","nameSegment","mapValue","foundMap","lastIndex","foundI","foundStarMap","starI","part","baseParts","starMap","nodeIdCompat","charAt","makeRequire","relName","forceSync","makeNormalize","makeLoad","depName","callDep","splitPrefix","substring","makeRelParts","makeConfig","relParts","plugin","relResourceName","f","pr","uri","deps","cjsModule","usingExports","callbackType","alt","cfg","_defined","Utils","getMethods","theClass","methodName","Extend","ChildClass","SuperClass","__hasProp","BaseConstructor","__super__","Decorate","DecoratorClass","decoratedMethods","superMethods","DecoratedClass","argCount","calledConstructor","ctr","displayName","superMethod","calledMethod","originalMethod","decoratedMethod","Observable","listeners","_type","invoke","generateChars","floor","_convertData","originalKey","dataLevel","hasScroll","innerHeight","scrollWidth","escapeMarkup","markup","replaceMap","__cache","GetUniqueElementId","select2Id","StoreData","GetData","RemoveData","copyNonInternalCssClasses","destinationClasses","clazz","sourceClasses","replacements","Results","dataAdapter","$results","displayMessage","hideLoading","$message","hideMessages","$options","$option","$dropdown","highlightFirstItem","$selected","ensureHighlightVisible","setClasses","selectedIds","classList","showLoading","loading","loadingMore","$loading","Element","_resultId","label","$children","child","$child","$childrenContainer","$container","$highlighted","getHighlightedResults","currentIndex","nextIndex","nextTop","nextOffset","nextBottom","mousewheel","deltaY","isAtTop","isAtBottom","offsetDelta","BACKSPACE","TAB","ENTER","SHIFT","CTRL","ALT","ESC","SPACE","PAGE_UP","PAGE_DOWN","END","HOME","LEFT","UP","RIGHT","DOWN","DELETE","KEYS","BaseSelection","$selection","_tabindex","resultsId","_handleBlur","_attachCloseHandler","_detachCloseHandler","$select","SingleSelection","$rendered","selectionContainer","formatted","MultipleSelection","$selections","selectionIdPrefix","selectionId","$remove","Placeholder","decorated","placeholder","normalizePlaceholder","createPlaceholder","$placeholder","placeholderTitle","singlePlaceholder","AllowClear","_handleClear","_handleKeyboardClear","$clear","previousVal","unselectData","prevented","removeAll","Search","searchLabel","$search","$searchContainer","_transferTabIndex","resizeSearch","_keyUpPrevented","$previousChoice","searchRemoveChoice","msie","disableInputEvents","handleSearch","searchHadFocus","term","SelectionCSS","selectionCssClass","EventRelay","relayEvents","preventableEvents","Translation","dict","translation","loadPath","path","translations","BaseAdapter","generateResultId","SelectAdapter","selectedElement","currentData","unselect","addOptions","innerText","normalizedData","_normalizeItem","ArrayAdapter","_dataToConvert","convertToOptions","elm","$existing","existingIds","onlyItem","$existingOption","existingData","newData","$newOption","AjaxAdapter","ajaxOptions","_applyDefaults","processResults","q","failure","$request","_request","request","_queryTimeout","Tags","tags","createTag","insertTag","checkChildren","_removeOldTags","page","Tokenizer","createAndSelect","tokenData","separators","termChar","MinimumInputLength","minimumInputLength","minimum","MaximumInputLength","maximumInputLength","maximum","MaximumSelectionLength","maximumSelectionLength","_checkIfMaximumSelected","successCallback","showSearch","HidePlaceholder","removePlaceholder","modifiedData","InfiniteScroll","lastParams","$loadingMore","createLoadingMore","showLoadingMore","loadMoreIfNeeded","isLoadMoreVisible","loadMore","pagination","more","AttachBody","$dropdownParent","_showDropdown","_attachPositioningHandler","_bindContainerResultHandlers","_hideDropdown","_detachPositioningHandler","$dropdownContainer","_containerResultsHandlersBound","_positionDropdown","_resizeDropdown","scrollEvent","resizeEvent","orientationEvent","$watchers","y","ev","$window","isCurrentlyAbove","isCurrentlyBelow","newDirection","enoughRoomAbove","enoughRoomBelow","$offsetParent","isConnected","outerWidth","countResults","MinimumResultsForSearch","minimumResultsForSearch","Infinity","SelectOnClose","_handleSelectOnClose","originalSelect2Event","$highlightedResults","CloseOnSelect","_selectTriggered","DropdownCSS","dropdownCssClass","TagsSearchHighlight","$firstOption","firstElement","errorLoading","inputTooLong","overChars","inputTooShort","maximumSelected","noResults","searching","removeAllItems","ResultsList","SelectionSearch","DIACRITICS","SelectData","ArrayData","AjaxData","DropdownSearch","EnglishTranslation","Defaults","tokenSeparators","resultsAdapter","selectOnClose","dropdownAdapter","multiple","SearchableDropdown","closeOnSelect","selectionAdapter","allowClear","language","_resolveLanguage","uniqueLanguages","_processTranslations","debug","stripDiacritics","amdLanguageBase","dropdownAutoWidth","scrollAfterSelect","templateResult","templateSelection","theme","applyFromElement","optionLanguage","defaultLanguage","elementLanguage","parentLanguage","languages","resolvedLanguages","baseLanguage","languageData","convertedData","Options","fromElement","excludedData","upperCaseLetter","attributeName","dataName","dataValue","Select2","_generateId","DataAdapter","_placeContainer","SelectionAdapter","DropdownAdapter","ResultsAdapter","_bindAdapters","_registerDomEvents","_registerDataEvents","_registerSelectionEvents","_registerDropdownEvents","_registerResultsEvents","_registerEvents","initialData","_syncAttributes","_resolveWidth","WIDTH","styleWidth","elementWidth","_syncA","_syncS","_syncSubtree","_observer","MutationObserver","mutations","observe","childList","subtree","nonRelayEvents","toggleDropdown","_isChangeMutation","addedNodes","removedNodes","mutation","actualTrigger","preTriggerMap","preTriggerName","preTriggerArgs","disconnect","thisMethods","instanceOptions","instance","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","amdD","__esModule","definition","chunkId","Promise","reduce","promises","miniCssF","needAttach","nc","onScriptComplete","doneFns","forEach","toStringTag","loadStylesheet","fullhref","existingLinkTags","dataHref","rel","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","chunkLoadingGlobal","_typeof","_defineProperties","_toPropertyKey","toPrimitive","Number","_toPrimitive","MobileSearchHandler","_classCallCheck","searchFull","hiddenSearchBar","mobileSearchButton","searchClose","searchButton","_this","Sidebar","menuSidebarToggle","cartSidebarToggles","handleScroll","handleSidebarToggle","handleMenuSidebar","navbarHero","scrollY","_this2","cartSidebarToggle","accountVariables","HasIdealInvoice","images","searchResults","autoselect","_ev","Url","updateStickyNav","threshold","parallaxSection","navbarHeader","blogIntro","productStoryHasbg","parallaximg","scrolledY","productDetailsBasketConfig","thumbs","apiAppsConfig","accountMyDetailsConfig","checkout1config","checkout2config"],"sourceRoot":""}