{"version":3,"sources":["webpack:///global-bundle.js","webpack:///webpack/bootstrap f471b296a4707de38fba","webpack:///./node_modules/axios/lib/utils.js","webpack:///(webpack)/buildin/global.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/element-closest/element-closest.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./Static/javascript/common/global.ts","webpack:///./Static/javascript/modules/constants.ts","webpack:///./Static/javascript/modules/svg-injection.ts","webpack:///./Static/javascript/modules/carousel-init.ts","webpack:///./node_modules/lory.js/dist/lory.js","webpack:///./Static/javascript/modules/aria-toggling.ts","webpack:///./Static/javascript/modules/mobile-menu.ts","webpack:///./Static/javascript/modules/header-search.ts","webpack:///./Static/javascript/modules/nodelist-to-array.ts","webpack:///./Static/javascript/modules/accordion.ts","webpack:///./Static/javascript/modules/scrollspy-nav.ts","webpack:///./Static/javascript/vendor/gumshoe.js","webpack:///./node_modules/stickyfilljs/dist/stickyfill.js","webpack:///./node_modules/smooth-scroll/dist/js/smooth-scroll.min.js","webpack:///./Static/javascript/modules/youtube-hero.ts","webpack:///./Static/javascript/modules/curriculum-download.ts","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/is-buffer/index.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/btoa.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./Static/javascript/modules/nearest-parent.ts","webpack:///./node_modules/a11y-dialog/a11y-dialog.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","isArray","val","toString","isArrayBuffer","isFormData","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isString","isNumber","isUndefined","isObject","isDate","isFile","isBlob","isFunction","isStream","pipe","isURLSearchParams","URLSearchParams","trim","str","replace","isStandardBrowserEnv","navigator","product","window","document","forEach","obj","fn","length","key","merge","assignValue","result","arguments","extend","a","b","thisArg","bind","isBuffer","g","this","Function","eval","e","setContentTypeIfUnset","headers","value","utils","normalizeHeaderName","DEFAULT_CONTENT_TYPE","defaults","adapter","XMLHttpRequest","process","transformRequest","data","JSON","stringify","transformResponse","parse","timeout","xsrfCookieName","xsrfHeaderName","maxContentLength","validateStatus","status","common","method","ElementProto","matches","msMatchesSelector","mozMatchesSelector","webkitMatchesSelector","selector","element","elements","ownerDocument","querySelectorAll","index","Boolean","closest","nodeType","parentNode","Element","args","Array","apply","settle","buildURL","parseHeaders","isURLSameOrigin","createError","btoa","config","Promise","resolve","reject","requestData","requestHeaders","request","loadEvent","xDomain","XDomainRequest","url","onprogress","ontimeout","auth","username","password","Authorization","open","toUpperCase","params","paramsSerializer","readyState","responseURL","indexOf","responseHeaders","getAllResponseHeaders","responseData","responseType","response","responseText","statusText","onerror","cookies","xsrfValue","withCredentials","read","undefined","toLowerCase","setRequestHeader","onDownloadProgress","addEventListener","onUploadProgress","upload","cancelToken","promise","then","cancel","abort","send","enhanceError","message","code","error","Error","__CANCEL__","Cancel","CONSTANTS","GLOBAL_HTML","classList","remove","HeaderSearch","GLOBAL_BODY","svgInject","MobileMenu","AriaToggling","nodeListToArray","Accordions","ScrollspyNav","SmoothScroll","ignore","header","speed","offset","easing","before","anchor","toggle","after","modal","modalInstance","A11yDialog","on","dialog","add","getElementsByTagName","UTILITY_NAV","getElementById","HEADER","svgUrl","onload","div","createElement","innerHTML","body","insertBefore","childNodes","console","log","lory","initCarousel","carouselId","slidesToScrollNum","handleDotEvent","type","len","clone","cloneNode","appendChild","children","evt","target","slideTo","slidesToScrollAtOnce","which","next","prev","detail","currentSlide","infiniteBuffer","startAnimating","interval","autoSlide","sliderButton","startTime","Date","now","nextSlide","animate","reqAnimation","requestAnimationFrame","currentTime","elapsed","carouselItem","loryOptions","enableMouseEvents","infinite","slideSpeed","slidesToScroll","ease","querySelector","tabIndex","transitionSpeed","getAttribute","innerWidth","cancelAnimationFrame","playPause","playPauseSvg","playPauseText","svg","playPauseElement","setAttribute","root","factory","id","loaded","_interopRequireDefault","default","slider","opts","setActiveElement","slides","currentIndex","_options","options","classNameActiveSlide","contains","setupInfinite","slideArray","_options2","front","slice","back","cloned","slideContainer","reverse","firstChild","prefixes","transitionEnd","onTransitionEnd","dispatchSliderEvent","phase","_dispatchEvent2","translate","to","duration","style","transition","hasTranslate3d","transform","slide","nextIndex","direction","_options3","rewind","rewindSpeed","maxOffset","Math","round","slidesWidth","frameWidth","prevCtrl","nextCtrl","min","max","nextOffset","offsetLeft","abs","position","x","transitionEndCallback","setup","_detectPrefixes2","_extends","_defaults2","_options4","classNameFrame","classNameSlideContainer","classNamePrevCtrl","classNameNextCtrl","frame","getElementsByClassName","y","offsetTop","reset","onTouchstart","onClick","onResize","_options5","rewindOnResize","getBoundingClientRect","width","offsetWidth","reduce","previousValue","returnIndex","destroy","removeEventListener","onTouchmove","onTouchend","removeChild","lastChild","event","_options6","touches","pageX","pageY","touchOffset","time","isScrolling","delta","preventDefault","isValid","Number","isOutOfBounds","snapBackSpeed","jQuery","assign","source","_detectPrefixes","_dispatchEvent","_defaults","global","detectPrefixes","el","prop","getComputedStyle","getPropertyValue","dispatchEvent","_customEvent2","bubbles","cancelable","_customEvent","NativeCustomEvent","CustomEvent","foo","createEvent","initCustomEvent","createEventObject","links","showClass","mNav","ownerdocument","queryselectorall","item","parentelement","link","linkParent","focusOn","blurOut","outSideClicks","checkClick","stopPropagation","cancelBubble","setTimeout","toggleOff","toggleOn","viewableLinks","viewableLink","activeElement","items","bodyElement","closeAllSubs","allOpenSubs","mobileSubnavTriggers","mobileSubnavTrigger","mobileTrigger","mobileMenu","subnavID","subnavToOpen","showSearch","isVisible","headerSearch","headerSearchTrigger","parentElement","searchActive","bodySearchHandler","nodes","resizeTimer","convertToArray","nodeList","accordionLists","openClass","singleAccordion","optArg","AccordionsOptions","triggerSetAccordionHeights","accordionList","accordionClick","standardsAccordion","openStandardsAccordion","setAccordionHeights","openAccordions","openAccordion","accordionToReCalc","accordionRecalcedHeight","height","currentTarget","accordionToOpenId","accordionToToggle","accordionContentHeight","closeOpenAccordions","closeAccordion","accordionToOpen","accordionToOpenHeight","parentContainer","itemTabPanel","accordionToClose","clearTimeout","exception","standardsAccordionChild","firstElementChild","gumshoe","navContainer","history","pushState","location","hash","scrollTo","jumpSections","section","sectionTitle","sectionContainer","sectionTarget","init","container","activeClass","scrollDelay","stickyRail","Stickyfill","documentElement","clientHeight","innerHeight","matchMedia","stickyMobileTrigger","currentPos","pageYOffset","scrollTop","settings","eventTimeout","docHeight","headerHeight","currentNav","scrollEventDelay","supports","navs","selectorHeader","callback","collection","scope","extended","deep","getHeight","elem","scrollHeight","offsetHeight","getDocumentHeight","getOffsetTop","offsetParent","isInViewport","distance","top","left","bottom","right","clientWidth","sortNavs","sort","setDistances","nav","getNavs","navLinks","push","parent","tagName","deactivateCurrentNav","activateNav","getCurrentNav","setInitCurrentNav","eventThrottler","scrollStop","_classCallCheck","instance","Constructor","TypeError","targetObj","sourceObject","parseNumeric","parseFloat","getDocOffsetTop","node","docOffsetTop","_createClass","defineProperties","props","descriptor","writable","protoProps","staticProps","seppuku","testNode","some","prefix","shadowRootExists","ShadowRoot","scroll","stickies","Sticky","HTMLElement","sticky","_node","_stickyMode","_active","refresh","_removed","_deactivate","nodeComputedStyle","nodeComputedProps","display","marginTop","marginBottom","marginLeft","marginRight","cssFloat","isNaN","referenceNode","host","nodeWinOffset","parentWinOffset","parentComputedStyle","_parent","styles","_offsetToWindow","_offsetToParent","borderTopWidth","borderLeftWidth","borderRightWidth","_styles","nodeTopValue","_limits","start","end","borderBottomWidth","parentPosition","_recalcPosition","_clone","padding","border","borderSpacing","fontSize","stickyMode","_this","_this2","splice","addOne","addedStickies","refreshAll","removeOne","removeAll","checkScroll","pageXOffset","startFastCheckTimer","fastCheckTimer","setInterval","_fastCheck","stopFastCheckTimer","clearInterval","docHiddenKey","visibilityChangeEventName","t","customEasing","parseInt","r","charAt","substr","String","charCodeAt","InvalidCharacterError","u","focus","outline","f","h","v","S","cancelScroll","animateScroll","E","I","O","A","C","w","Q","floor","button","metaKey","ctrlKey","hostname","pathname","test","href","decodeURIComponent","substring","onYouTubeIframeAPIReady","ytElement","videoId","YT","Player","playerVars","autoplay","controls","showinfo","rel","modestbranding","loop","fs","iv_load_policy","autohide","playlist","events","onReady","mute","selectAllCheckbox","selectAllResourcesCheckbox","sections","images","downloadButton","form","nearestTagName","unique","disableDownload","iterateSections","func","iterateImages","iterateCheckboxes","setupListeners","checkAllSections","checked","checkDownloadButton","checkAllResources","submitDownloadRequest","innerText","enableDownload","catch","submit","canDownload","removeAttribute","CurriculumDownload","checkboxes","createInstance","defaultConfig","context","Axios","axios","create","instanceConfig","CancelToken","isCancel","all","promises","spread","constructor","isSlowBuffer","readFloatLE","_isBuffer","interceptors","InterceptorManager","dispatchRequest","chain","interceptor","unshift","fulfilled","rejected","shift","defaultSetTimout","defaultClearTimeout","runTimeout","fun","cachedSetTimeout","runClearTimeout","marker","cachedClearTimeout","cleanUpNextTick","draining","currentQueue","queue","concat","queueIndex","drainQueue","run","Item","array","noop","nextTick","title","browser","env","argv","version","versions","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","normalizedName","encode","encodeURIComponent","serializedParams","parts","toISOString","join","ignoreDuplicateOf","parsed","split","line","resolveURL","msie","urlParsingNode","protocol","search","port","originURL","userAgent","requestURL","input","block","charCode","output","idx","map","chars","write","expires","path","domain","secure","cookie","toGMTString","match","RegExp","handlers","use","eject","throwIfCancellationRequested","throwIfRequested","transformData","isAbsoluteURL","combineURLs","baseURL","reason","fns","relativeURL","executor","resolvePromise","token","arr","className","targets","_show","show","_hide","hide","_maintainFocus","_bindKeypress","_listeners","toArray","$$","collect","NodeList","isPrototypeOf","setFocusToFirstItem","focusableChildren","getFocusableChildren","FOCUSABLE_ELEMENTS","filter","child","getClientRects","trapTabKey","focusedItemIndex","shiftKey","getSiblings","siblings","focusedBeforeDialog","_targets","shown","_openers","opener","_closers","closer","_fire","original","handler","listener"],"mappings":"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","file":"global-bundle.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 9);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar bind = __webpack_require__(4);\nvar isBuffer = __webpack_require__(27);\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nvar g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nvar utils = __webpack_require__(0);\nvar normalizeHeaderName = __webpack_require__(30);\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = __webpack_require__(5);\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = __webpack_require__(5);\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(29)))\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// element-closest | CC0-1.0 | github.com/jonathantneal/closest\n\n(function (ElementProto) {\n\tif (typeof ElementProto.matches !== 'function') {\n\t\tElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {\n\t\t\tvar element = this;\n\t\t\tvar elements = (element.document || element.ownerDocument).querySelectorAll(selector);\n\t\t\tvar index = 0;\n\n\t\t\twhile (elements[index] && elements[index] !== element) {\n\t\t\t\t++index;\n\t\t\t}\n\n\t\t\treturn Boolean(elements[index]);\n\t\t};\n\t}\n\n\tif (typeof ElementProto.closest !== 'function') {\n\t\tElementProto.closest = function closest(selector) {\n\t\t\tvar element = this;\n\n\t\t\twhile (element && element.nodeType === 1) {\n\t\t\t\tif (element.matches(selector)) {\n\t\t\t\t\treturn element;\n\t\t\t\t}\n\n\t\t\t\telement = element.parentNode;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\t}\n})(window.Element.prototype);\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar settle = __webpack_require__(31);\nvar buildURL = __webpack_require__(33);\nvar parseHeaders = __webpack_require__(34);\nvar isURLSameOrigin = __webpack_require__(35);\nvar createError = __webpack_require__(6);\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || __webpack_require__(36);\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (\"production\" !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = __webpack_require__(37);\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar enhanceError = __webpack_require__(32);\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar CONSTANTS = __webpack_require__(10);\r\nvar svg_injection_1 = __webpack_require__(11);\r\n__webpack_require__(12);\r\nvar aria_toggling_1 = __webpack_require__(14);\r\nvar mobile_menu_1 = __webpack_require__(15);\r\nvar header_search_1 = __webpack_require__(16);\r\nvar nodelist_to_array_1 = __webpack_require__(17);\r\nvar accordion_1 = __webpack_require__(18);\r\nvar scrollspy_nav_1 = __webpack_require__(19);\r\nvar SmoothScroll = __webpack_require__(22);\r\n__webpack_require__(23);\r\n__webpack_require__(24);\r\nvar A11yDialog = __webpack_require__(46);\r\n(function () {\r\n CONSTANTS.GLOBAL_HTML.classList.remove('no-js');\r\n new header_search_1.HeaderSearch(CONSTANTS.GLOBAL_BODY);\r\n svg_injection_1.svgInject('/Static/images/svg-sprite.svg');\r\n new mobile_menu_1.MobileMenu(CONSTANTS.GLOBAL_BODY);\r\n new aria_toggling_1.AriaToggling(nodelist_to_array_1.nodeListToArray(document.querySelectorAll('#mNav .mnav-list-item > a')));\r\n // Accordion\r\n new accordion_1.Accordions();\r\n //document.addEventListener(\"DOMContentLoaded\", () => {\r\n // (window as any).initCarousel();\r\n //});\r\n new scrollspy_nav_1.ScrollspyNav();\r\n var scroll = new SmoothScroll('a[href*=\"#\"]', {\r\n // Selectors\r\n ignore: '[data-scroll-ignore]',\r\n header: '#siteHeader',\r\n // Speed & Easing\r\n speed: 500,\r\n offset: 100,\r\n easing: 'easeInOutCubic',\r\n // Callback API\r\n before: function (anchor, toggle) { },\r\n after: function (anchor, toggle) { } // Callback to run after scroll\r\n });\r\n // Global Modals\r\n var modalsArray = nodelist_to_array_1.nodeListToArray(document.querySelectorAll('.modal-js'));\r\n modalsArray.forEach(function (modal) {\r\n var modalInstance = new A11yDialog(modal);\r\n modalInstance.on('show', function (dialog, e) {\r\n CONSTANTS.GLOBAL_HTML.classList.add('modal-visible');\r\n });\r\n modalInstance.on('hide', function (dialog, e) {\r\n CONSTANTS.GLOBAL_HTML.classList.remove('modal-visible');\r\n });\r\n });\r\n})();\r\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n/**\r\n These are global constants that you can import on to partials\r\n*/\r\nexports.GLOBAL_BODY = document.getElementsByTagName('body')[0];\r\nexports.GLOBAL_HTML = document.getElementsByTagName('html')[0];\r\nexports.UTILITY_NAV = document.getElementById('utility');\r\nexports.HEADER = document.getElementById('header');\r\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction svgInject(svgUrl) {\r\n var request = new XMLHttpRequest();\r\n request.open('GET', svgUrl, true);\r\n request.onload = function () {\r\n if (request.status >= 200 && request.status < 400) {\r\n var data = request.responseText;\r\n // Create node with response data and insert into DOM\r\n var div = document.createElement('div');\r\n div.innerHTML = data;\r\n document.body.insertBefore(div, document.body.childNodes[0]);\r\n }\r\n else {\r\n console.log('Could not load SVG sprite');\r\n }\r\n };\r\n request.onerror = function () {\r\n console.log(\"Couldn't load SVG sprite - connection error\");\r\n };\r\n request.send();\r\n}\r\nexports.svgInject = svgInject;\r\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar lory = __webpack_require__(13).lory;\r\nwindow.initCarousel = function (carouselId, slidesToScrollNum) {\r\n var carouselItem = document.getElementById(carouselId);\r\n var slidesToScrollAtOnce = slidesToScrollNum ? slidesToScrollNum : 1;\r\n var infiniteBuffer = slidesToScrollNum ? slidesToScrollNum : 2;\r\n if (carouselItem) {\r\n var loryOptions = {\r\n enableMouseEvents: true,\r\n infinite: infiniteBuffer,\r\n slideSpeed: 1000,\r\n slidesToScroll: slidesToScrollAtOnce,\r\n ease: 'cubic-bezier(0, 0, 1, 1)'\r\n };\r\n var dot_count_1 = carouselItem.querySelectorAll('.js_slide').length / slidesToScrollAtOnce;\r\n var dot_container_1 = carouselItem.querySelector('.js_dots');\r\n var dot_list_item_1 = document.createElement('li');\r\n var nextBtn_1 = carouselItem.querySelector('.js_next');\r\n var prevBtn_1 = carouselItem.querySelector('.js_prev');\r\n dot_list_item_1.tabIndex = 0;\r\n function handleDotEvent(e) {\r\n if (e.type === 'before.lory.init') {\r\n for (var i = 0, len = dot_count_1; i < len; i++) {\r\n var clone = dot_list_item_1.cloneNode();\r\n clone.innerHTML = \"Select slide \" + (i + 1);\r\n dot_container_1.appendChild(clone);\r\n }\r\n dot_container_1.children[0].classList.add('active');\r\n }\r\n if (e.type === 'after.lory.init') {\r\n for (var i = 0, len = dot_count_1; i < len; i++) {\r\n dot_container_1.children[i].addEventListener('click', function (evt) {\r\n if (Array.prototype.indexOf.call(dot_container_1.children, evt.target) != 0) {\r\n carouselContainer_1.slideTo(Array.prototype.indexOf.call(dot_container_1.children, evt.target) + (slidesToScrollAtOnce - 1));\r\n }\r\n else {\r\n carouselContainer_1.slideTo(Array.prototype.indexOf.call(dot_container_1.children, evt.target));\r\n }\r\n });\r\n dot_container_1.children[i].addEventListener('keyup', function (evt) {\r\n if (evt.which == 13) {\r\n if (Array.prototype.indexOf.call(dot_container_1.children, evt.target) != 0) {\r\n carouselContainer_1.slideTo(Array.prototype.indexOf.call(dot_container_1.children, evt.target) + (slidesToScrollAtOnce - 1));\r\n }\r\n else {\r\n carouselContainer_1.slideTo(Array.prototype.indexOf.call(dot_container_1.children, evt.target));\r\n }\r\n }\r\n });\r\n }\r\n nextBtn_1.addEventListener('keyup', function (evt) {\r\n if (evt.which == 13) {\r\n carouselContainer_1.next();\r\n }\r\n });\r\n prevBtn_1.addEventListener('keyup', function (evt) {\r\n if (evt.which == 13) {\r\n carouselContainer_1.prev();\r\n }\r\n });\r\n }\r\n if (e.type === 'after.lory.slide') {\r\n for (var i = 0, len = dot_container_1.children.length; i < len; i++) {\r\n dot_container_1.children[i].classList.remove('active');\r\n }\r\n dot_container_1.children[(e.detail.currentSlide - infiniteBuffer + dot_count_1) % dot_count_1].classList.add('active'); //complex to reference because of the \"infinite\" thing\r\n }\r\n if (e.type === 'on.lory.resize') {\r\n for (var i = 0, len = dot_container_1.children.length; i < len; i++) {\r\n dot_container_1.children[i].classList.remove('active');\r\n }\r\n dot_container_1.children[0].classList.add('active');\r\n }\r\n }\r\n carouselItem.addEventListener('before.lory.init', handleDotEvent);\r\n carouselItem.addEventListener('after.lory.init', handleDotEvent);\r\n carouselItem.addEventListener('after.lory.slide', handleDotEvent);\r\n carouselItem.addEventListener('on.lory.resize', handleDotEvent);\r\n var carouselContainer_1 = lory(carouselItem, loryOptions);\r\n /* Automatic transition\r\n Dev Notes: The transition speed is the property available only for the home page carousel.\r\n This property is used as a condition to automate the carousel rotation.\r\n */\r\n var transitionSpeed = carouselItem.getAttribute(\"data-transition-speed\");\r\n if (transitionSpeed != null) {\r\n var notDesktop = window.innerWidth <= 768;\r\n if (notDesktop) {\r\n window.cancelAnimationFrame(reqAnimation);\r\n }\r\n else {\r\n var autoSlide, interval, startTime, currentTime, elapsed, reqAnimation;\r\n var playPause = document.getElementById(\"carouselPlayPauseJS\");\r\n var playPauseSvg = playPause.querySelector(\"svg use\");\r\n var sliderButton = document.querySelector(\".carousel-buttons-inner-js\");\r\n startAnimating(transitionSpeed);\r\n function startAnimating(speed) {\r\n interval = (speed * 1000);\r\n autoSlide = true;\r\n sliderButton.addEventListener('click', function (e) {\r\n autoSlide = false;\r\n startTime = Date.now();\r\n nextSlide();\r\n });\r\n if (autoSlide) {\r\n startTime = Date.now();\r\n animate();\r\n }\r\n }\r\n function animate() {\r\n reqAnimation = requestAnimationFrame(animate);\r\n nextSlide();\r\n }\r\n function nextSlide() {\r\n currentTime = Date.now();\r\n elapsed = currentTime - startTime;\r\n if (elapsed > interval) {\r\n startTime = currentTime - (elapsed % interval);\r\n carouselContainer_1.next();\r\n }\r\n }\r\n playPause.addEventListener('click', function (e) {\r\n var xlinkHref = 'xlink:href';\r\n var svg = playPauseSvg.getAttribute(xlinkHref);\r\n var playPauseElement = document.getElementById(\"playPauseTextJS\");\r\n var playPauseText;\r\n if (svg.indexOf('play') != -1) {\r\n startAnimating(transitionSpeed);\r\n playPauseSvg.setAttribute(xlinkHref, \"#icon-pause\");\r\n playPauseText = \"Stop automatic transition\";\r\n }\r\n else {\r\n window.cancelAnimationFrame(reqAnimation);\r\n playPauseSvg.setAttribute(xlinkHref, \"#icon-play\");\r\n playPauseText = \"Start automatic transition\";\r\n }\r\n playPauseElement.innerHTML = playPauseText;\r\n });\r\n }\r\n }\r\n }\r\n};\r\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(true)\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* globals jQuery */\n\t\n\texports.lory = lory;\n\t\n\tvar _detectPrefixes = __webpack_require__(2);\n\t\n\tvar _detectPrefixes2 = _interopRequireDefault(_detectPrefixes);\n\t\n\tvar _dispatchEvent = __webpack_require__(3);\n\t\n\tvar _dispatchEvent2 = _interopRequireDefault(_dispatchEvent);\n\t\n\tvar _defaults = __webpack_require__(5);\n\t\n\tvar _defaults2 = _interopRequireDefault(_defaults);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar slice = Array.prototype.slice;\n\t\n\tfunction lory(slider, opts) {\n\t var position = void 0;\n\t var slidesWidth = void 0;\n\t var frameWidth = void 0;\n\t var slides = void 0;\n\t\n\t /**\n\t * slider DOM elements\n\t */\n\t var frame = void 0;\n\t var slideContainer = void 0;\n\t var prevCtrl = void 0;\n\t var nextCtrl = void 0;\n\t var prefixes = void 0;\n\t var transitionEndCallback = void 0;\n\t\n\t var index = 0;\n\t var options = {};\n\t\n\t /**\n\t * if object is jQuery convert to native DOM element\n\t */\n\t if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n\t slider = slider[0];\n\t }\n\t\n\t /**\n\t * private\n\t * set active class to element which is the current slide\n\t */\n\t function setActiveElement(slides, currentIndex) {\n\t var _options = options,\n\t classNameActiveSlide = _options.classNameActiveSlide;\n\t\n\t\n\t slides.forEach(function (element, index) {\n\t if (element.classList.contains(classNameActiveSlide)) {\n\t element.classList.remove(classNameActiveSlide);\n\t }\n\t });\n\t\n\t slides[currentIndex].classList.add(classNameActiveSlide);\n\t }\n\t\n\t /**\n\t * private\n\t * setupInfinite: function to setup if infinite is set\n\t *\n\t * @param {array} slideArray\n\t * @return {array} array of updated slideContainer elements\n\t */\n\t function setupInfinite(slideArray) {\n\t var _options2 = options,\n\t infinite = _options2.infinite;\n\t\n\t\n\t var front = slideArray.slice(0, infinite);\n\t var back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\t\n\t front.forEach(function (element) {\n\t var cloned = element.cloneNode(true);\n\t\n\t slideContainer.appendChild(cloned);\n\t });\n\t\n\t back.reverse().forEach(function (element) {\n\t var cloned = element.cloneNode(true);\n\t\n\t slideContainer.insertBefore(cloned, slideContainer.firstChild);\n\t });\n\t\n\t slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\t\n\t return slice.call(slideContainer.children);\n\t }\n\t\n\t /**\n\t * [dispatchSliderEvent description]\n\t * @return {[type]} [description]\n\t */\n\t function dispatchSliderEvent(phase, type, detail) {\n\t (0, _dispatchEvent2.default)(slider, phase + '.lory.' + type, detail);\n\t }\n\t\n\t /**\n\t * translates to a given position in a given time in milliseconds\n\t *\n\t * @to {number} number in pixels where to translate to\n\t * @duration {number} time in milliseconds for the transistion\n\t * @ease {string} easing css property\n\t */\n\t function translate(to, duration, ease) {\n\t var style = slideContainer && slideContainer.style;\n\t\n\t if (style) {\n\t style[prefixes.transition + 'TimingFunction'] = ease;\n\t style[prefixes.transition + 'Duration'] = duration + 'ms';\n\t\n\t if (prefixes.hasTranslate3d) {\n\t style[prefixes.transform] = 'translate3d(' + to + 'px, 0, 0)';\n\t } else {\n\t style[prefixes.transform] = 'translate(' + to + 'px, 0)';\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * slidefunction called by prev, next & touchend\n\t *\n\t * determine nextIndex and slide to next postion\n\t * under restrictions of the defined options\n\t *\n\t * @direction {boolean}\n\t */\n\t function slide(nextIndex, direction) {\n\t var _options3 = options,\n\t slideSpeed = _options3.slideSpeed,\n\t slidesToScroll = _options3.slidesToScroll,\n\t infinite = _options3.infinite,\n\t rewind = _options3.rewind,\n\t rewindSpeed = _options3.rewindSpeed,\n\t ease = _options3.ease,\n\t classNameActiveSlide = _options3.classNameActiveSlide;\n\t\n\t\n\t var duration = slideSpeed;\n\t\n\t var nextSlide = direction ? index + 1 : index - 1;\n\t var maxOffset = Math.round(slidesWidth - frameWidth);\n\t\n\t dispatchSliderEvent('before', 'slide', {\n\t index: index,\n\t nextSlide: nextSlide\n\t });\n\t\n\t /**\n\t * Reset control classes\n\t */\n\t if (prevCtrl) {\n\t prevCtrl.classList.remove('disabled');\n\t }\n\t if (nextCtrl) {\n\t nextCtrl.classList.remove('disabled');\n\t }\n\t\n\t if (typeof nextIndex !== 'number') {\n\t if (direction) {\n\t nextIndex = index + slidesToScroll;\n\t } else {\n\t nextIndex = index - slidesToScroll;\n\t }\n\t }\n\t\n\t nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\t\n\t if (infinite && direction === undefined) {\n\t nextIndex += infinite;\n\t }\n\t\n\t var nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\t\n\t if (rewind && Math.abs(position.x) === maxOffset && direction) {\n\t nextOffset = 0;\n\t nextIndex = 0;\n\t duration = rewindSpeed;\n\t }\n\t\n\t /**\n\t * translate to the nextOffset by a defined duration and ease function\n\t */\n\t translate(nextOffset, duration, ease);\n\t\n\t /**\n\t * update the position with the next position\n\t */\n\t position.x = nextOffset;\n\t\n\t /**\n\t * update the index with the nextIndex only if\n\t * the offset of the nextIndex is in the range of the maxOffset\n\t */\n\t if (slides[nextIndex].offsetLeft <= maxOffset) {\n\t index = nextIndex;\n\t }\n\t\n\t if (infinite && (nextIndex === slides.length - infinite || nextIndex === 0)) {\n\t if (direction) {\n\t index = infinite;\n\t }\n\t\n\t if (!direction) {\n\t index = slides.length - infinite * 2;\n\t }\n\t\n\t position.x = slides[index].offsetLeft * -1;\n\t\n\t transitionEndCallback = function transitionEndCallback() {\n\t translate(slides[index].offsetLeft * -1, 0, undefined);\n\t };\n\t }\n\t\n\t if (classNameActiveSlide) {\n\t setActiveElement(slice.call(slides), index);\n\t }\n\t\n\t /**\n\t * update classes for next and prev arrows\n\t * based on user settings\n\t */\n\t if (prevCtrl && !infinite && nextIndex === 0) {\n\t prevCtrl.classList.add('disabled');\n\t }\n\t\n\t if (nextCtrl && !infinite && !rewind && nextIndex + 1 === slides.length) {\n\t nextCtrl.classList.add('disabled');\n\t }\n\t\n\t dispatchSliderEvent('after', 'slide', {\n\t currentSlide: index\n\t });\n\t }\n\t\n\t /**\n\t * public\n\t * setup function\n\t */\n\t function setup() {\n\t dispatchSliderEvent('before', 'init');\n\t\n\t prefixes = (0, _detectPrefixes2.default)();\n\t options = _extends({}, _defaults2.default, opts);\n\t\n\t var _options4 = options,\n\t classNameFrame = _options4.classNameFrame,\n\t classNameSlideContainer = _options4.classNameSlideContainer,\n\t classNamePrevCtrl = _options4.classNamePrevCtrl,\n\t classNameNextCtrl = _options4.classNameNextCtrl,\n\t enableMouseEvents = _options4.enableMouseEvents,\n\t classNameActiveSlide = _options4.classNameActiveSlide;\n\t\n\t\n\t frame = slider.getElementsByClassName(classNameFrame)[0];\n\t slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n\t prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n\t nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\t\n\t position = {\n\t x: slideContainer.offsetLeft,\n\t y: slideContainer.offsetTop\n\t };\n\t\n\t if (options.infinite) {\n\t slides = setupInfinite(slice.call(slideContainer.children));\n\t } else {\n\t slides = slice.call(slideContainer.children);\n\t\n\t if (prevCtrl) {\n\t prevCtrl.classList.add('disabled');\n\t }\n\t\n\t if (nextCtrl && slides.length === 1 && !options.rewind) {\n\t nextCtrl.classList.add('disabled');\n\t }\n\t }\n\t\n\t reset();\n\t\n\t if (classNameActiveSlide) {\n\t setActiveElement(slides, index);\n\t }\n\t\n\t if (prevCtrl && nextCtrl) {\n\t prevCtrl.addEventListener('click', prev);\n\t nextCtrl.addEventListener('click', next);\n\t }\n\t\n\t frame.addEventListener('touchstart', onTouchstart);\n\t\n\t if (enableMouseEvents) {\n\t frame.addEventListener('mousedown', onTouchstart);\n\t frame.addEventListener('click', onClick);\n\t }\n\t\n\t options.window.addEventListener('resize', onResize);\n\t\n\t dispatchSliderEvent('after', 'init');\n\t }\n\t\n\t /**\n\t * public\n\t * reset function: called on resize\n\t */\n\t function reset() {\n\t var _options5 = options,\n\t infinite = _options5.infinite,\n\t ease = _options5.ease,\n\t rewindSpeed = _options5.rewindSpeed,\n\t rewindOnResize = _options5.rewindOnResize,\n\t classNameActiveSlide = _options5.classNameActiveSlide;\n\t\n\t\n\t slidesWidth = slideContainer.getBoundingClientRect().width || slideContainer.offsetWidth;\n\t frameWidth = frame.getBoundingClientRect().width || frame.offsetWidth;\n\t\n\t if (frameWidth === slidesWidth) {\n\t slidesWidth = slides.reduce(function (previousValue, slide) {\n\t return previousValue + slide.getBoundingClientRect().width || slide.offsetWidth;\n\t }, 0);\n\t }\n\t\n\t if (rewindOnResize) {\n\t index = 0;\n\t } else {\n\t ease = null;\n\t rewindSpeed = 0;\n\t }\n\t\n\t if (infinite) {\n\t translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\t\n\t index = index + infinite;\n\t position.x = slides[index].offsetLeft * -1;\n\t } else {\n\t translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n\t position.x = slides[index].offsetLeft * -1;\n\t }\n\t\n\t if (classNameActiveSlide) {\n\t setActiveElement(slice.call(slides), index);\n\t }\n\t }\n\t\n\t /**\n\t * public\n\t * slideTo: called on clickhandler\n\t */\n\t function slideTo(index) {\n\t slide(index);\n\t }\n\t\n\t /**\n\t * public\n\t * returnIndex function: called on clickhandler\n\t */\n\t function returnIndex() {\n\t return index - options.infinite || 0;\n\t }\n\t\n\t /**\n\t * public\n\t * prev function: called on clickhandler\n\t */\n\t function prev() {\n\t slide(false, false);\n\t }\n\t\n\t /**\n\t * public\n\t * next function: called on clickhandler\n\t */\n\t function next() {\n\t slide(false, true);\n\t }\n\t\n\t /**\n\t * public\n\t * destroy function: called to gracefully destroy the lory instance\n\t */\n\t function destroy() {\n\t dispatchSliderEvent('before', 'destroy');\n\t\n\t // remove event listeners\n\t frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n\t frame.removeEventListener('touchstart', onTouchstart);\n\t frame.removeEventListener('touchmove', onTouchmove);\n\t frame.removeEventListener('touchend', onTouchend);\n\t frame.removeEventListener('mousemove', onTouchmove);\n\t frame.removeEventListener('mousedown', onTouchstart);\n\t frame.removeEventListener('mouseup', onTouchend);\n\t frame.removeEventListener('mouseleave', onTouchend);\n\t frame.removeEventListener('click', onClick);\n\t\n\t options.window.removeEventListener('resize', onResize);\n\t\n\t if (prevCtrl) {\n\t prevCtrl.removeEventListener('click', prev);\n\t }\n\t\n\t if (nextCtrl) {\n\t nextCtrl.removeEventListener('click', next);\n\t }\n\t\n\t // remove cloned slides if infinite is set\n\t if (options.infinite) {\n\t Array.apply(null, Array(options.infinite)).forEach(function () {\n\t slideContainer.removeChild(slideContainer.firstChild);\n\t slideContainer.removeChild(slideContainer.lastChild);\n\t });\n\t }\n\t\n\t dispatchSliderEvent('after', 'destroy');\n\t }\n\t\n\t // event handling\n\t\n\t var touchOffset = void 0;\n\t var delta = void 0;\n\t var isScrolling = void 0;\n\t\n\t function onTransitionEnd() {\n\t if (transitionEndCallback) {\n\t transitionEndCallback();\n\t\n\t transitionEndCallback = undefined;\n\t }\n\t }\n\t\n\t function onTouchstart(event) {\n\t var _options6 = options,\n\t enableMouseEvents = _options6.enableMouseEvents;\n\t\n\t var touches = event.touches ? event.touches[0] : event;\n\t\n\t if (enableMouseEvents) {\n\t frame.addEventListener('mousemove', onTouchmove);\n\t frame.addEventListener('mouseup', onTouchend);\n\t frame.addEventListener('mouseleave', onTouchend);\n\t }\n\t\n\t frame.addEventListener('touchmove', onTouchmove);\n\t frame.addEventListener('touchend', onTouchend);\n\t\n\t var pageX = touches.pageX,\n\t pageY = touches.pageY;\n\t\n\t\n\t touchOffset = {\n\t x: pageX,\n\t y: pageY,\n\t time: Date.now()\n\t };\n\t\n\t isScrolling = undefined;\n\t\n\t delta = {};\n\t\n\t dispatchSliderEvent('on', 'touchstart', {\n\t event: event\n\t });\n\t }\n\t\n\t function onTouchmove(event) {\n\t var touches = event.touches ? event.touches[0] : event;\n\t var pageX = touches.pageX,\n\t pageY = touches.pageY;\n\t\n\t\n\t delta = {\n\t x: pageX - touchOffset.x,\n\t y: pageY - touchOffset.y\n\t };\n\t\n\t if (typeof isScrolling === 'undefined') {\n\t isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n\t }\n\t\n\t if (!isScrolling && touchOffset) {\n\t event.preventDefault();\n\t translate(position.x + delta.x, 0, null);\n\t }\n\t\n\t // may be\n\t dispatchSliderEvent('on', 'touchmove', {\n\t event: event\n\t });\n\t }\n\t\n\t function onTouchend(event) {\n\t /**\n\t * time between touchstart and touchend in milliseconds\n\t * @duration {number}\n\t */\n\t var duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\t\n\t /**\n\t * is valid if:\n\t *\n\t * -> swipe attempt time is over 300 ms\n\t * and\n\t * -> swipe distance is greater than 25px\n\t * or\n\t * -> swipe distance is more then a third of the swipe area\n\t *\n\t * @isValidSlide {Boolean}\n\t */\n\t var isValid = Number(duration) < 300 && Math.abs(delta.x) > 25 || Math.abs(delta.x) > frameWidth / 3;\n\t\n\t /**\n\t * is out of bounds if:\n\t *\n\t * -> index is 0 and delta x is greater than 0\n\t * or\n\t * -> index is the last slide and delta is smaller than 0\n\t *\n\t * @isOutOfBounds {Boolean}\n\t */\n\t var isOutOfBounds = !index && delta.x > 0 || index === slides.length - 1 && delta.x < 0;\n\t\n\t var direction = delta.x < 0;\n\t\n\t if (!isScrolling) {\n\t if (isValid && !isOutOfBounds) {\n\t slide(false, direction);\n\t } else {\n\t translate(position.x, options.snapBackSpeed);\n\t }\n\t }\n\t\n\t touchOffset = undefined;\n\t\n\t /**\n\t * remove eventlisteners after swipe attempt\n\t */\n\t frame.removeEventListener('touchmove', onTouchmove);\n\t frame.removeEventListener('touchend', onTouchend);\n\t frame.removeEventListener('mousemove', onTouchmove);\n\t frame.removeEventListener('mouseup', onTouchend);\n\t frame.removeEventListener('mouseleave', onTouchend);\n\t\n\t dispatchSliderEvent('on', 'touchend', {\n\t event: event\n\t });\n\t }\n\t\n\t function onClick(event) {\n\t if (delta.x) {\n\t event.preventDefault();\n\t }\n\t }\n\t\n\t function onResize(event) {\n\t reset();\n\t\n\t dispatchSliderEvent('on', 'resize', {\n\t event: event\n\t });\n\t }\n\t\n\t // trigger initial setup\n\t setup();\n\t\n\t // expose public api\n\t return {\n\t setup: setup,\n\t reset: reset,\n\t slideTo: slideTo,\n\t returnIndex: returnIndex,\n\t prev: prev,\n\t next: next,\n\t destroy: destroy\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = detectPrefixes;\n\t/**\n\t * Detecting prefixes for saving time and bytes\n\t */\n\tfunction detectPrefixes() {\n\t var transform = void 0;\n\t var transition = void 0;\n\t var transitionEnd = void 0;\n\t var hasTranslate3d = void 0;\n\t\n\t (function () {\n\t var el = document.createElement('_');\n\t var style = el.style;\n\t\n\t var prop = void 0;\n\t\n\t if (style[prop = 'webkitTransition'] === '') {\n\t transitionEnd = 'webkitTransitionEnd';\n\t transition = prop;\n\t }\n\t\n\t if (style[prop = 'transition'] === '') {\n\t transitionEnd = 'transitionend';\n\t transition = prop;\n\t }\n\t\n\t if (style[prop = 'webkitTransform'] === '') {\n\t transform = prop;\n\t }\n\t\n\t if (style[prop = 'msTransform'] === '') {\n\t transform = prop;\n\t }\n\t\n\t if (style[prop = 'transform'] === '') {\n\t transform = prop;\n\t }\n\t\n\t document.body.insertBefore(el, null);\n\t style[transform] = 'translate3d(0, 0, 0)';\n\t hasTranslate3d = !!global.getComputedStyle(el).getPropertyValue(transform);\n\t document.body.removeChild(el);\n\t })();\n\t\n\t return {\n\t transform: transform,\n\t transition: transition,\n\t transitionEnd: transitionEnd,\n\t hasTranslate3d: hasTranslate3d\n\t };\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = dispatchEvent;\n\t\n\tvar _customEvent = __webpack_require__(4);\n\t\n\tvar _customEvent2 = _interopRequireDefault(_customEvent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * dispatch custom events\n\t *\n\t * @param {element} el slideshow element\n\t * @param {string} type custom event name\n\t * @param {object} detail custom detail information\n\t */\n\tfunction dispatchEvent(target, type, detail) {\n\t var event = new _customEvent2.default(type, {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: detail\n\t });\n\t\n\t target.dispatchEvent(event);\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\n\tvar NativeCustomEvent = global.CustomEvent;\n\t\n\tfunction useNative () {\n\t try {\n\t var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n\t return 'cat' === p.type && 'bar' === p.detail.foo;\n\t } catch (e) {\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Cross-browser `CustomEvent` constructor.\n\t *\n\t * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n\t *\n\t * @public\n\t */\n\t\n\tmodule.exports = useNative() ? NativeCustomEvent :\n\t\n\t// IE >= 9\n\t'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n\t var e = document.createEvent('CustomEvent');\n\t if (params) {\n\t e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n\t } else {\n\t e.initCustomEvent(type, false, false, void 0);\n\t }\n\t return e;\n\t} :\n\t\n\t// IE <= 8\n\tfunction CustomEvent (type, params) {\n\t var e = document.createEventObject();\n\t e.type = type;\n\t if (params) {\n\t e.bubbles = Boolean(params.bubbles);\n\t e.cancelable = Boolean(params.cancelable);\n\t e.detail = params.detail;\n\t } else {\n\t e.bubbles = false;\n\t e.cancelable = false;\n\t e.detail = void 0;\n\t }\n\t return e;\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = {\n\t /**\n\t * slides scrolled at once\n\t * @slidesToScroll {Number}\n\t */\n\t slidesToScroll: 1,\n\t\n\t /**\n\t * time in milliseconds for the animation of a valid slide attempt\n\t * @slideSpeed {Number}\n\t */\n\t slideSpeed: 300,\n\t\n\t /**\n\t * time in milliseconds for the animation of the rewind after the last slide\n\t * @rewindSpeed {Number}\n\t */\n\t rewindSpeed: 600,\n\t\n\t /**\n\t * time for the snapBack of the slider if the slide attempt was not valid\n\t * @snapBackSpeed {Number}\n\t */\n\t snapBackSpeed: 200,\n\t\n\t /**\n\t * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n\t * cubic bezier easing functions: http://easings.net/de\n\t * @ease {String}\n\t */\n\t ease: 'ease',\n\t\n\t /**\n\t * if slider reached the last slide, with next click the slider goes back to the startindex.\n\t * use infinite or rewind, not both\n\t * @rewind {Boolean}\n\t */\n\t rewind: false,\n\t\n\t /**\n\t * number of visible slides or false\n\t * use infinite or rewind, not both\n\t * @infinite {number}\n\t */\n\t infinite: false,\n\t\n\t /**\n\t * class name for slider frame\n\t * @classNameFrame {string}\n\t */\n\t classNameFrame: 'js_frame',\n\t\n\t /**\n\t * class name for slides container\n\t * @classNameSlideContainer {string}\n\t */\n\t classNameSlideContainer: 'js_slides',\n\t\n\t /**\n\t * class name for slider prev control\n\t * @classNamePrevCtrl {string}\n\t */\n\t classNamePrevCtrl: 'js_prev',\n\t\n\t /**\n\t * class name for slider next control\n\t * @classNameNextCtrl {string}\n\t */\n\t classNameNextCtrl: 'js_next',\n\t\n\t /**\n\t * class name for current active slide\n\t * if emptyString then no class is set\n\t * @classNameActiveSlide {string}\n\t */\n\t classNameActiveSlide: 'active',\n\t\n\t /**\n\t * enables mouse events for swiping on desktop devices\n\t * @enableMouseEvents {boolean}\n\t */\n\t enableMouseEvents: false,\n\t\n\t /**\n\t * window instance\n\t * @window {object}\n\t */\n\t window: window,\n\t\n\t /**\n\t * If false, slides lory to the first slide on window resize.\n\t * @rewindOnResize {boolean}\n\t */\n\t rewindOnResize: true\n\t};\n\n/***/ }\n/******/ ])\n});\n;\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar AriaToggling = /** @class */ (function () {\r\n function AriaToggling(links) {\r\n var _this = this;\r\n this.links = links;\r\n this.showClass = 'show-menu';\r\n this.mNav = '#mNav';\r\n //Keyboard Navigation\r\n if (window.innerWidth > 1025 && !document.getElementsByTagName('html')[0].classList.contains('mod-touchevents')) {\r\n if (window[\"element\"] && !Element.prototype[\"closest\"]) {\r\n Element.prototype[\"closest\"] =\r\n function (s) {\r\n var matches = (this.document || this.ownerdocument).queryselectorall(s), i, el = this;\r\n do {\r\n i = matches.length;\r\n while (--i >= 0 && matches.item(i) !== el) { }\r\n ;\r\n } while ((i < 0) && (el = el.parentelement));\r\n return el;\r\n };\r\n }\r\n links.forEach(function (link) {\r\n var linkParent = link.parentNode;\r\n link.addEventListener('focus', function (e) {\r\n _this.focusOn(e, link, linkParent);\r\n });\r\n link.addEventListener('blur', function (e) {\r\n _this.blurOut(e, linkParent);\r\n });\r\n });\r\n }\r\n //Tablet landscape view to allow users to tap a parent link to see the children.\r\n if (window.innerWidth <= 1600 && window.innerWidth > 767 && document.getElementsByTagName('html')[0].classList.contains('mod-touchevents')) {\r\n //Click outside of the header\r\n this.outSideClicks();\r\n links.forEach(function (link) {\r\n var linkParent = link.parentNode;\r\n link.addEventListener('click', function (e) {\r\n if (!linkParent.classList.contains(_this.showClass)) {\r\n e.preventDefault();\r\n if (document.querySelector('.' + _this.showClass) !== null) {\r\n document.querySelector('.' + _this.showClass).classList.remove(_this.showClass);\r\n }\r\n linkParent.classList.add(_this.showClass);\r\n }\r\n });\r\n });\r\n }\r\n }\r\n AriaToggling.prototype.outSideClicks = function () {\r\n var _this = this;\r\n var mNav = document.querySelector(this.mNav);\r\n if (mNav) {\r\n // For clicks inside the element\r\n document.querySelector(this.mNav).addEventListener('click', function (e) {\r\n _this.checkClick(e);\r\n });\r\n // For clicks elsewhere on the page\r\n document.addEventListener('click', function () {\r\n //close stuff\r\n if (document.querySelector('.' + _this.showClass) !== null) {\r\n document.querySelector('.' + _this.showClass).classList.remove(_this.showClass);\r\n }\r\n });\r\n // For clicks elsewhere on the page\r\n document.addEventListener('touchstart', function () {\r\n //close stuff\r\n if (document.querySelector('.' + _this.showClass) !== null) {\r\n document.querySelector('.' + _this.showClass).classList.remove(_this.showClass);\r\n }\r\n });\r\n }\r\n };\r\n AriaToggling.prototype.checkClick = function (e) {\r\n // Make sure the event doesn't bubble from your element\r\n if (e) {\r\n e.stopPropagation();\r\n }\r\n else {\r\n window.event.cancelBubble = true;\r\n }\r\n };\r\n AriaToggling.prototype.focusOn = function (e, link, linkParent) {\r\n var _this = this;\r\n setTimeout(function () {\r\n _this.toggleOff();\r\n if (link.classList.contains('has-sub-js') && !linkParent.classList.contains(_this.showClass)) {\r\n _this.toggleOn(linkParent);\r\n }\r\n e.stopPropagation();\r\n var viewableLinks = Array.prototype.slice.call(linkParent.querySelectorAll('[aria-hidden=\"false\"] a'));\r\n if (viewableLinks.length > 0) {\r\n viewableLinks.forEach(function (viewableLink) {\r\n viewableLink.addEventListener('blur', function (e) {\r\n _this.blurOut(e, linkParent);\r\n });\r\n });\r\n }\r\n }, 10);\r\n };\r\n AriaToggling.prototype.toggleOn = function (linkParent) {\r\n linkParent.classList.add(this.showClass);\r\n linkParent.querySelector('[aria-hidden=\"true\"]').setAttribute('aria-hidden', 'false');\r\n };\r\n AriaToggling.prototype.blurOut = function (e, linkParent) {\r\n var _this = this;\r\n setTimeout(function () {\r\n if (document.activeElement[\"closest\"]('[aria-haspopup=\"true\"]') !== linkParent || document.activeElement[\"closest\"]('[aria-haspopup=\"true\"]') === null) {\r\n _this.toggleOff();\r\n }\r\n e.stopPropagation();\r\n }, 10);\r\n };\r\n AriaToggling.prototype.toggleOff = function () {\r\n var items = Array.prototype.slice.call(document.querySelectorAll('.mnav-list-item.show-menu'));\r\n if (items.length > 0) {\r\n items.forEach(function (item) {\r\n item.classList.remove('show-menu');\r\n item.querySelector('[aria-hidden=\"false\"]').setAttribute('aria-hidden', 'true');\r\n });\r\n }\r\n };\r\n return AriaToggling;\r\n}());\r\nexports.AriaToggling = AriaToggling;\r\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar MobileMenu = /** @class */ (function () {\r\n function MobileMenu(bodyElement) {\r\n var _this = this;\r\n this.bodyElement = bodyElement;\r\n var mobileTrigger = document.getElementById('mobileTrigger');\r\n var mobileMenu = document.getElementById('menuBar');\r\n var mobileSubnavTriggers = [].slice.call(document.getElementsByClassName('mnav-list-submenu-trigger-js'));\r\n function closeAllSubs() {\r\n var allOpenSubs = [].slice.call(document.querySelectorAll('.mnav-list-submenu.open'));\r\n for (var i = 0, l = allOpenSubs.length; i < l; i++) {\r\n allOpenSubs[i].setAttribute('aria-hidden', 'true');\r\n allOpenSubs[i].classList.remove('open');\r\n }\r\n ;\r\n mobileSubnavTriggers.forEach(function (mobileSubnavTrigger) {\r\n mobileSubnavTrigger.classList.remove('open');\r\n });\r\n }\r\n ;\r\n if (mobileTrigger) {\r\n mobileTrigger.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n closeAllSubs();\r\n mobileMenu.classList.toggle('open');\r\n mobileTrigger.classList.toggle('open');\r\n _this.bodyElement.classList.toggle('nav-open');\r\n });\r\n mobileSubnavTriggers.forEach(function (mobileSubnavTrigger) {\r\n mobileSubnavTrigger.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n var subnavID = this.getAttribute('data-trigger-id');\r\n var subnavToOpen = document.querySelector('[data-id=\"' + subnavID + '\"]');\r\n if (subnavToOpen.getAttribute('aria-hidden') === \"true\") {\r\n closeAllSubs();\r\n this.classList.add('open');\r\n subnavToOpen.classList.add('open');\r\n subnavToOpen.setAttribute('aria-hidden', 'false');\r\n }\r\n else {\r\n this.classList.remove('open');\r\n subnavToOpen.classList.remove('open');\r\n subnavToOpen.setAttribute('aria-hidden', 'true');\r\n }\r\n });\r\n });\r\n }\r\n }\r\n return MobileMenu;\r\n}());\r\nexports.MobileMenu = MobileMenu;\r\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar HeaderSearch = /** @class */ (function () {\r\n function HeaderSearch(bodyElement) {\r\n this.bodyElement = bodyElement;\r\n var headerSearchTrigger = document.getElementById('searchTrigger');\r\n var headerSearch = document.getElementById('headerSearch');\r\n var searchActive = false;\r\n var bodySearchHandler = function () {\r\n if (searchActive === true) {\r\n showSearch(false);\r\n }\r\n };\r\n function showSearch(isVisible) {\r\n if (isVisible) {\r\n headerSearch.classList.add('active');\r\n headerSearchTrigger.parentElement.classList.add('show-menu');\r\n searchActive = true;\r\n bodyElement.addEventListener('click', bodySearchHandler);\r\n }\r\n else {\r\n headerSearch.classList.remove('active');\r\n headerSearchTrigger.parentElement.classList.remove('show-menu');\r\n searchActive = false;\r\n bodyElement.removeEventListener('click', bodySearchHandler);\r\n }\r\n ;\r\n }\r\n ;\r\n if (headerSearchTrigger) {\r\n headerSearchTrigger.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n if (searchActive === true) {\r\n showSearch(false);\r\n }\r\n else {\r\n showSearch(true);\r\n }\r\n ;\r\n });\r\n headerSearch.addEventListener('click', function (e) {\r\n e.stopPropagation();\r\n });\r\n }\r\n }\r\n return HeaderSearch;\r\n}());\r\nexports.HeaderSearch = HeaderSearch;\r\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction nodeListToArray(nodes) {\r\n return [].slice.call(nodes);\r\n}\r\nexports.nodeListToArray = nodeListToArray;\r\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\n__webpack_require__(3);\r\nvar convertToArray = function (nodeList) {\r\n return [].slice.call(nodeList);\r\n};\r\nvar accordionLists = convertToArray(document.querySelectorAll('[data-accordion-list]'));\r\nvar resizeTimer;\r\nvar openClass = 'libaccordion-open-js';\r\nvar openClassCss = 'libaccordion-open';\r\nvar standardsAccordion = 'standards-accordion-js';\r\nvar AccordionsOptions = /** @class */ (function () {\r\n function AccordionsOptions() {\r\n this.singleAccordion = false;\r\n }\r\n return AccordionsOptions;\r\n}());\r\nvar Accordions = /** @class */ (function () {\r\n function Accordions(optArg) {\r\n var _this = this;\r\n this.optArg = optArg;\r\n this.options = new AccordionsOptions();\r\n window.addEventListener('resize', function () {\r\n requestAnimationFrame(_this.triggerSetAccordionHeights.bind(_this));\r\n });\r\n accordionLists.forEach(function (accordionList) {\r\n accordionList.addEventListener('click', _this.accordionClick.bind(_this), false);\r\n });\r\n // Check for Options\r\n if (this.optArg === undefined)\r\n this.optArg = new AccordionsOptions();\r\n else {\r\n this.options.singleAccordion =\r\n this.optArg.singleAccordion === undefined ? this.options.singleAccordion : this.optArg.singleAccordion;\r\n }\r\n // Open first child item of standards accordion\r\n // Only one per curriculum landing page\r\n var standardsAccordion = document.querySelector('.standards-accordion');\r\n if (standardsAccordion) {\r\n this.openStandardsAccordion(standardsAccordion);\r\n }\r\n }\r\n Accordions.prototype.setAccordionHeights = function () {\r\n setTimeout(function () {\r\n accordionLists.forEach(function (accordionList) {\r\n var openAccordions = accordionList.querySelectorAll('.' + openClass);\r\n if (openAccordions.length > 0) {\r\n openAccordions.forEach(function (openAccordion) {\r\n var accordionToReCalc = openAccordion.querySelector('[data-accordion-content-id]');\r\n var accordionRecalcedHeight = accordionToReCalc.getBoundingClientRect().height;\r\n openAccordion.style.height = accordionRecalcedHeight + 'px';\r\n });\r\n }\r\n });\r\n }, 100);\r\n };\r\n Accordions.prototype.accordionClick = function (e) {\r\n e.preventDefault();\r\n if (e.target !== e.currentTarget) {\r\n var accordionToOpenId = e.target.getAttribute('data-accordion-trigger');\r\n if (accordionToOpenId === null) {\r\n if (e.target.closest('.libaccordion-trigger')) {\r\n accordionToOpenId = e.target.closest('.libaccordion-trigger').getAttribute('data-accordion-trigger');\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n var accordionToToggle = document.querySelector('[data-accordion-id=\"' + accordionToOpenId + '\"]');\r\n var accordionContentHeight = document\r\n .querySelector('[data-accordion-content-id=\"' + accordionToOpenId + '\"]')\r\n .getBoundingClientRect().height;\r\n if (this.options.singleAccordion) {\r\n this.closeOpenAccordions(accordionToToggle);\r\n }\r\n if (accordionToToggle.classList.contains(openClass)) {\r\n this.closeAccordion(accordionToToggle);\r\n }\r\n else {\r\n this.openAccordion(accordionToToggle, accordionContentHeight);\r\n }\r\n this.setAccordionHeights();\r\n }\r\n e.stopPropagation();\r\n };\r\n Accordions.prototype.openAccordion = function (accordionToOpen, accordionToOpenHeight) {\r\n if (accordionToOpen.parentElement.classList.contains('libaccordion-show-multiple-false')) {\r\n var parentContainer = accordionToOpen.parentElement.parentElement;\r\n var collapsableItems = Array.prototype.slice.call(parentContainer.querySelectorAll('.libaccordion-show-multiple-false'));\r\n collapsableItems.forEach(function (item) {\r\n if (item.classList.contains(openClassCss)) {\r\n item.classList.remove(openClassCss);\r\n item.querySelector('.libaccordion-trigger').setAttribute('aria-expanded', 'false');\r\n }\r\n if (item.querySelector('.libaccordion-content').classList.contains('libaccordion-open-js')) {\r\n var itemTabPanel = item.querySelector('.libaccordion-content');\r\n itemTabPanel.classList.remove('libaccordion-open-js');\r\n itemTabPanel.setAttribute('style', 'height: 0px;');\r\n }\r\n });\r\n }\r\n accordionToOpen.classList.add(openClass);\r\n accordionToOpen.setAttribute('style', 'height:' + accordionToOpenHeight + 'px');\r\n // accordionToOpen.setAttribute('aria-hidden', 'false');\r\n accordionToOpen.parentElement.classList.add(openClassCss);\r\n accordionToOpen.parentElement.querySelector('.libaccordion-trigger').setAttribute('aria-expanded', 'true');\r\n };\r\n Accordions.prototype.closeAccordion = function (accordionToClose) {\r\n accordionToClose.classList.remove(openClass);\r\n accordionToClose.setAttribute('style', 'height: 0px');\r\n // accordionToClose.setAttribute('aria-hidden', 'true');\r\n accordionToClose.parentElement.classList.remove(openClassCss);\r\n accordionToClose.parentElement.querySelector('.libaccordion-trigger').setAttribute('aria-expanded', 'false');\r\n };\r\n Accordions.prototype.triggerSetAccordionHeights = function () {\r\n var _this = this;\r\n clearTimeout(resizeTimer);\r\n resizeTimer = setTimeout(function () {\r\n _this.setAccordionHeights();\r\n }, 100);\r\n };\r\n Accordions.prototype.closeOpenAccordions = function (exception) {\r\n var _this = this;\r\n var openAccordions = convertToArray(document.querySelectorAll('.libaccordion-open-js'));\r\n openAccordions.forEach(function (openAccordion) {\r\n if (openAccordion !== exception) {\r\n _this.closeAccordion(openAccordion);\r\n }\r\n });\r\n };\r\n Accordions.prototype.openStandardsAccordion = function (standardsAccordion) {\r\n var standardsAccordionChild = standardsAccordion.querySelector('.libaccordion').firstElementChild.querySelector('.libaccordion-trigger');\r\n var accordionToOpenId = standardsAccordionChild.getAttribute('data-accordion-trigger');\r\n var accordionToToggle = document.querySelector('[data-accordion-id=\"' + accordionToOpenId + '\"]');\r\n var accordionContentHeight = document\r\n .querySelector('[data-accordion-content-id=\"' + accordionToOpenId + '\"]')\r\n .getBoundingClientRect().height;\r\n this.openAccordion(accordionToToggle, accordionContentHeight);\r\n };\r\n return Accordions;\r\n}());\r\nexports.Accordions = Accordions;\r\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar gumshoe = __webpack_require__(20);\r\n__webpack_require__(3);\r\nvar Stickyfill = __webpack_require__(21);\r\nvar ScrollspyNav = /** @class */ (function () {\r\n function ScrollspyNav() {\r\n if (document.querySelector('.scrollspy-nav')) {\r\n var navContainer = document.querySelectorAll('.scrollspy-nav')[0];\r\n if (navContainer.querySelector('.top-trigger')) {\r\n var jumpToTop = navContainer.querySelectorAll('.top-trigger')[0];\r\n jumpToTop.addEventListener('click', function (e) {\r\n e.preventDefault();\r\n if (history.pushState) {\r\n history.pushState(null, null, '#top');\r\n }\r\n else {\r\n location.hash = '#top';\r\n }\r\n window.scrollTo(0, 0);\r\n });\r\n }\r\n ;\r\n // Find all sections to add to scrollspy nav list\r\n var jumpSections = Array.prototype.slice.call(document.querySelectorAll('[data-scrollspy=\"true\"]'));\r\n var jumpList_1 = '';\r\n // Create list item by looping through each section\r\n jumpSections.forEach(function (section) {\r\n var sectionTitle = section.innerHTML;\r\n var sectionContainer = section.closest('.layout-section');\r\n var sectionTarget = sectionContainer.id;\r\n jumpList_1 += \"
  • \" + sectionTitle + \"
  • \";\r\n });\r\n // Add string of list items to scrollspy nav\r\n var jumpListContainer = navContainer.querySelectorAll('nav ul')[0];\r\n jumpListContainer.innerHTML = jumpList_1;\r\n // Handler when the DOM is fully loaded\r\n document.addEventListener(\"DOMContentLoaded\", function () {\r\n gumshoe.init({\r\n selector: '.scrollspy-nav a',\r\n //selectorHeader: '#siteHeader', // Fixed header selector (must use a valid CSS selector)\r\n container: window,\r\n offset: 200,\r\n activeClass: 'active',\r\n scrollDelay: false // Wait until scrolling has stopped before updating the navigation\r\n });\r\n });\r\n // Setup sticky polyfill to sticky container element\r\n var stickyRail = navContainer.parentElement;\r\n Stickyfill.add(stickyRail);\r\n var footer = document.querySelector(\".site-container > .footer\");\r\n var siteContainer = document.querySelector('.site-container');\r\n var viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\r\n var lastScrollTop = 0;\r\n var navOffset = stickyRail.getBoundingClientRect();\r\n if (window.matchMedia(\"(max-width: 64rem)\").matches) {\r\n var stickyMobileTrigger = stickyRail.querySelector('.rail-nav-mobile-trigger');\r\n var stickyMobileNav_1 = stickyRail.querySelector('.rail-nav');\r\n var stickyMobileNavContent_1 = stickyMobileNav_1.querySelector('ul');\r\n stickyMobileTrigger.addEventListener('click', function (e) {\r\n e.stopPropagation();\r\n //stickyMobileNavContent.classList.add('visible');\r\n stickyMobileNavContent_1.classList.add('visible');\r\n });\r\n // For clicks elsewhere on the page\r\n document.addEventListener('click', function () {\r\n //close stuff\r\n if (stickyMobileNavContent_1.classList.contains('visible')) {\r\n stickyMobileNavContent_1.classList.remove('visible');\r\n }\r\n });\r\n // For clicks elsewhere on the page\r\n document.addEventListener('touchstart', function () {\r\n //close stuff\r\n if (stickyMobileNavContent_1.classList.contains('visible')) {\r\n stickyMobileNavContent_1.classList.remove('visible');\r\n }\r\n });\r\n window.addEventListener(\"scroll\", function () {\r\n return window.requestAnimationFrame(function () {\r\n var currentPos = window.pageYOffset || document.documentElement.scrollTop; // Credits: \"https://github.com/qeremy/so/blob/master/so.dom.js#L426\"\r\n if (currentPos >= 200 && !stickyMobileNav_1.classList.contains('visible')) {\r\n stickyMobileNav_1.classList.add('visible');\r\n }\r\n else if (currentPos < 200 && stickyMobileNav_1.classList.contains('visible')) {\r\n stickyMobileNav_1.classList.remove('visible');\r\n }\r\n });\r\n });\r\n }\r\n ;\r\n }\r\n ;\r\n }\r\n ;\r\n return ScrollspyNav;\r\n}());\r\nexports.ScrollspyNav = ScrollspyNav;\r\n;\r\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n * gumshoe v3.5.0: A simple, framework-agnostic scrollspy script.\n * (c) 2017 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory(root)),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof exports === 'object') {\n module.exports = factory(root);\n } else {\n root.gumshoe = factory(root);\n }\n})(typeof global !== 'undefined' ? global : this.window || this.global, (function (root) {\n\n 'use strict';\n\n //\n // Variables\n //\n\n var gumshoe = {}; // Object for public APIs\n var supports = 'querySelector' in document && 'addEventListener' in root && 'classList' in document.createElement('_'); // Feature test\n var navs = []; // Array for nav elements\n var settings, eventTimeout, docHeight, header, headerHeight, currentNav, scrollEventDelay;\n\n // Default settings\n var defaults = {\n selector: '[data-gumshoe] a',\n selectorHeader: '[data-gumshoe-header]',\n container: root,\n offset: 0,\n activeClass: 'active',\n scrollDelay: false,\n callback: function () { }\n };\n\n\n //\n // Methods\n //\n\n\t/**\n\t * A simple forEach() implementation for Arrays, Objects and NodeLists.\n\t * @private\n\t * @author Todd Motto\n\t * @link https://github.com/toddmotto/foreach\n\t * @param {Array|Object|NodeList} collection Collection of items to iterate\n\t * @param {Function} callback Callback function for each iteration\n\t * @param {Array|Object|NodeList} scope Object/NodeList/Array that forEach is iterating over (aka `this`)\n\t */\n var forEach = function (collection, callback, scope) {\n if (Object.prototype.toString.call(collection) === '[object Object]') {\n for (var prop in collection) {\n if (Object.prototype.hasOwnProperty.call(collection, prop)) {\n callback.call(scope, collection[prop], prop, collection);\n }\n }\n } else {\n for (var i = 0, len = collection.length; i < len; i++) {\n callback.call(scope, collection[i], i, collection);\n }\n }\n };\n\n\t/**\n\t * Merge two or more objects. Returns a new object.\n\t * @private\n\t * @param {Boolean} deep If true, do a deep (or recursive) merge [optional]\n\t * @param {Object} objects The objects to merge together\n\t * @returns {Object} Merged values of defaults and options\n\t */\n var extend = function () {\n\n // Variables\n var extended = {};\n var deep = false;\n var i = 0;\n var length = arguments.length;\n\n // Check if a deep merge\n if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') {\n deep = arguments[0];\n i++;\n }\n\n // Merge the object into the extended object\n var merge = function (obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n // If deep merge and property is an object, merge properties\n if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') {\n extended[prop] = extend(true, extended[prop], obj[prop]);\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n // Loop through each object and conduct a merge\n for (; i < length; i++) {\n var obj = arguments[i];\n merge(obj);\n }\n\n return extended;\n\n };\n\n\t/**\n\t * Get the height of an element.\n\t * @private\n\t * @param {Node} elem The element to get the height of\n\t * @return {Number} The element's height in pixels\n\t */\n var getHeight = function (elem) {\n return Math.max(elem.scrollHeight, elem.offsetHeight, elem.clientHeight);\n };\n\n\t/**\n\t * Get the document element's height\n\t * @private\n\t * @returns {Number}\n\t */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight, document.documentElement.scrollHeight,\n document.body.offsetHeight, document.documentElement.offsetHeight,\n document.body.clientHeight, document.documentElement.clientHeight\n );\n };\n\n\t/**\n\t * Get an element's distance from the top of the Document.\n\t * @private\n\t * @param {Node} elem The element\n\t * @return {Number} Distance from the top in pixels\n\t */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n do {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n } while (elem);\n } else {\n location = elem.offsetTop;\n }\n location = location - headerHeight - settings.offset;\n return location >= 0 ? location : 0;\n };\n\n\t/**\n\t * Determine if an element is in the viewport\n\t * @param {Node} elem The element\n\t * @return {Boolean} Returns true if element is in the viewport\n\t */\n var isInViewport = function (elem) {\n var distance = elem.getBoundingClientRect();\n return (\n distance.top >= 0 &&\n distance.left >= 0 &&\n distance.bottom <= (root.innerHeight || document.documentElement.clientHeight) &&\n distance.right <= (root.innerWidth || document.documentElement.clientWidth)\n );\n };\n\n\t/**\n\t * Arrange nagivation elements from furthest from the top to closest\n\t * @private\n\t */\n var sortNavs = function () {\n navs.sort((function (a, b) {\n if (a.distance > b.distance) {\n return -1;\n }\n if (a.distance < b.distance) {\n return 1;\n }\n return 0;\n }));\n };\n\n\t/**\n\t * Calculate the distance of elements from the top of the document\n\t * @public\n\t */\n gumshoe.setDistances = function () {\n\n // Calculate distances\n docHeight = getDocumentHeight(); // The document\n headerHeight = header ? (getHeight(header) + getOffsetTop(header)) : 0; // The fixed header\n forEach(navs, (function (nav) {\n nav.distance = getOffsetTop(nav.target); // Each navigation target\n }));\n\n // When done, organization navigation elements\n sortNavs();\n\n };\n\n\t/**\n\t * Get all navigation elements and store them in an array\n\t * @private\n\t */\n var getNavs = function () {\n\n // Get all navigation links\n var navLinks = document.querySelectorAll(settings.selector);\n\n // For each link, create an object of attributes and push to an array\n forEach(navLinks, (function (nav) {\n if (!nav.hash) return;\n var target = document.querySelector(nav.hash);\n if (!target) return;\n navs.push({\n nav: nav,\n target: target,\n parent: nav.parentNode.tagName.toLowerCase() === 'li' ? nav.parentNode : null,\n distance: 0\n });\n }));\n\n };\n\n\n\t/**\n\t * Remove the activation class from the currently active navigation element\n\t * @private\n\t */\n var deactivateCurrentNav = function () {\n if (currentNav) {\n currentNav.nav.classList.remove(settings.activeClass);\n if (currentNav.parent) {\n currentNav.parent.classList.remove(settings.activeClass);\n }\n }\n };\n\n\t/**\n\t * Add the activation class to the currently active navigation element\n\t * @private\n\t * @param {Node} nav The currently active nav\n\t */\n var activateNav = function (nav) {\n\n // If a current Nav is set, deactivate it\n deactivateCurrentNav();\n\n // Activate the current target's navigation element\n nav.nav.classList.add(settings.activeClass);\n if (nav.parent) {\n nav.parent.classList.add(settings.activeClass);\n }\n\n settings.callback(nav); // Callback after methods are run\n\n // Set new currentNav\n currentNav = {\n nav: nav.nav,\n parent: nav.parent\n };\n\n };\n\n\t/**\n\t * Determine which navigation element is currently active and run activation method\n\t * @public\n\t * @returns {Object} The current nav data.\n\t */\n gumshoe.getCurrentNav = function () {\n\n // Get current position from top of the document\n var position = root.pageYOffset;\n\n // If at the bottom of the page and last section is in the viewport, activate the last nav\n if ((root.innerHeight + position) >= docHeight && isInViewport(navs[0].target)) {\n activateNav(navs[0]);\n return navs[0];\n }\n\n // Otherwise, loop through each nav until you find the active one\n for (var i = 0, len = navs.length; i < len; i++) {\n var nav = navs[i];\n if (nav.distance <= position) {\n activateNav(nav);\n return nav;\n }\n }\n\n // If no active nav is found, deactivate the current nav\n deactivateCurrentNav();\n settings.callback();\n\n };\n\n\t/**\n\t * If nav element has active class on load, set it as currently active navigation\n\t * @private\n\t */\n var setInitCurrentNav = function () {\n forEach(navs, (function (nav) {\n if (nav.nav.classList.contains(settings.activeClass)) {\n currentNav = {\n nav: nav.nav,\n parent: nav.parent\n };\n }\n }));\n };\n\n\t/**\n\t * Destroy the current initialization.\n\t * @public\n\t */\n gumshoe.destroy = function () {\n\n // If plugin isn't already initialized, stop\n if (!settings) return;\n\n // Remove event listeners\n settings.container.removeEventListener('resize', eventThrottler, false);\n settings.container.removeEventListener('scroll', eventThrottler, false);\n\n // Reset variables\n navs = [];\n settings = null;\n eventTimeout = null;\n docHeight = null;\n header = null;\n headerHeight = null;\n currentNav = null;\n scrollEventDelay = null;\n\n };\n\n\t/**\n\t * Run functions after scrolling stops\n\t * @param {[type]} event [description]\n\t * @return {[type]} [description]\n\t */\n var scrollStop = function (event) {\n\n // Clear our timeout throughout the scroll\n window.clearTimeout(eventTimeout);\n\n // recalculate distances and then get currently active nav\n eventTimeout = setTimeout((function () {\n gumshoe.setDistances();\n gumshoe.getCurrentNav();\n }), 66);\n\n };\n\n\t/**\n\t * On window scroll and resize, only run events at a rate of 15fps for better performance\n\t * @private\n\t * @param {Function} eventTimeout Timeout function\n\t * @param {Object} settings\n\t */\n var eventThrottler = function (event) {\n if (!eventTimeout) {\n eventTimeout = setTimeout((function () {\n\n eventTimeout = null; // Reset timeout\n\n // If scroll event, get currently active nav\n if (event.type === 'scroll') {\n gumshoe.getCurrentNav();\n }\n\n // If resize event, recalculate distances and then get currently active nav\n if (event.type === 'resize') {\n gumshoe.setDistances();\n gumshoe.getCurrentNav();\n }\n\n }), 66);\n }\n };\n\n\t/**\n\t * Initialize Plugin\n\t * @public\n\t * @param {Object} options User settings\n\t */\n gumshoe.init = function (options) {\n\n // feature test\n if (!supports) return;\n\n // Destroy any existing initializations\n gumshoe.destroy();\n\n // Set variables\n settings = extend(defaults, options || {}); // Merge user options with defaults\n header = document.querySelector(settings.selectorHeader); // Get fixed header\n getNavs(); // Get navigation elements\n\n // If no navigation elements exist, stop running gumshoe\n if (navs.length === 0) return;\n\n // Run init methods\n setInitCurrentNav();\n gumshoe.setDistances();\n gumshoe.getCurrentNav();\n\n // Listen for events\n settings.container.addEventListener('resize', eventThrottler, false);\n if (settings.scrollDelay) {\n settings.container.addEventListener('scroll', scrollStop, false);\n } else {\n settings.container.addEventListener('scroll', eventThrottler, false);\n }\n\n };\n\n\n //\n // Public APIs\n //\n\n return gumshoe;\n\n}));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports) {\n\n/*!\r\n * Stickyfill – `position: sticky` polyfill\r\n * v. 2.0.3 | https://github.com/wilddeer/stickyfill\r\n * MIT License\r\n */\r\n\r\n;(function(window, document) {\r\n 'use strict';\r\n \r\n /*\r\n * 1. Check if the browser supports `position: sticky` natively or is too old to run the polyfill.\r\n * If either of these is the case set `seppuku` flag. It will be checked later to disable key features\r\n * of the polyfill, but the API will remain functional to avoid breaking things.\r\n */\r\n \r\n var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n \r\n function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n \r\n var seppuku = false;\r\n \r\n // The polyfill cant’t function properly without `getComputedStyle`.\r\n if (!window.getComputedStyle) seppuku = true;\r\n // Dont’t get in a way if the browser supports `position: sticky` natively.\r\n else {\r\n (function () {\r\n var testNode = document.createElement('div');\r\n \r\n if (['', '-webkit-', '-moz-', '-ms-'].some(function (prefix) {\r\n try {\r\n testNode.style.position = prefix + 'sticky';\r\n } catch (e) {}\r\n \r\n return testNode.style.position != '';\r\n })) seppuku = true;\r\n })();\r\n }\r\n \r\n /*\r\n * 2. “Global” vars used across the polyfill\r\n */\r\n \r\n // Check if Shadow Root constructor exists to make further checks simpler\r\n var shadowRootExists = typeof ShadowRoot !== 'undefined';\r\n \r\n // Last saved scroll position\r\n var scroll = {\r\n top: null,\r\n left: null\r\n };\r\n \r\n // Array of created Sticky instances\r\n var stickies = [];\r\n \r\n /*\r\n * 3. Utility functions\r\n */\r\n function extend(targetObj, sourceObject) {\r\n for (var key in sourceObject) {\r\n if (sourceObject.hasOwnProperty(key)) {\r\n targetObj[key] = sourceObject[key];\r\n }\r\n }\r\n }\r\n \r\n function parseNumeric(val) {\r\n return parseFloat(val) || 0;\r\n }\r\n \r\n function getDocOffsetTop(node) {\r\n var docOffsetTop = 0;\r\n \r\n while (node) {\r\n docOffsetTop += node.offsetTop;\r\n node = node.offsetParent;\r\n }\r\n \r\n return docOffsetTop;\r\n }\r\n \r\n /*\r\n * 4. Sticky class\r\n */\r\n \r\n var Sticky = function () {\r\n function Sticky(node) {\r\n _classCallCheck(this, Sticky);\r\n \r\n if (!(node instanceof HTMLElement)) throw new Error('First argument must be HTMLElement');\r\n if (stickies.some(function (sticky) {\r\n return sticky._node === node;\r\n })) throw new Error('Stickyfill is already applied to this node');\r\n \r\n this._node = node;\r\n this._stickyMode = null;\r\n this._active = false;\r\n \r\n stickies.push(this);\r\n \r\n this.refresh();\r\n }\r\n \r\n _createClass(Sticky, [{\r\n key: 'refresh',\r\n value: function refresh() {\r\n if (seppuku || this._removed) return;\r\n if (this._active) this._deactivate();\r\n \r\n var node = this._node;\r\n \r\n /*\r\n * 1. Save node computed props\r\n */\r\n var nodeComputedStyle = getComputedStyle(node);\r\n var nodeComputedProps = {\r\n top: nodeComputedStyle.top,\r\n display: nodeComputedStyle.display,\r\n marginTop: nodeComputedStyle.marginTop,\r\n marginBottom: nodeComputedStyle.marginBottom,\r\n marginLeft: nodeComputedStyle.marginLeft,\r\n marginRight: nodeComputedStyle.marginRight,\r\n cssFloat: nodeComputedStyle.cssFloat\r\n };\r\n \r\n /*\r\n * 2. Check if the node can be activated\r\n */\r\n if (isNaN(parseFloat(nodeComputedProps.top)) || nodeComputedProps.display == 'table-cell' || nodeComputedProps.display == 'none') return;\r\n \r\n this._active = true;\r\n \r\n /*\r\n * 3. Get necessary node parameters\r\n */\r\n var referenceNode = node.parentNode;\r\n var parentNode = shadowRootExists && referenceNode instanceof ShadowRoot ? referenceNode.host : referenceNode;\r\n var nodeWinOffset = node.getBoundingClientRect();\r\n var parentWinOffset = parentNode.getBoundingClientRect();\r\n var parentComputedStyle = getComputedStyle(parentNode);\r\n \r\n this._parent = {\r\n node: parentNode,\r\n styles: {\r\n position: parentNode.style.position\r\n },\r\n offsetHeight: parentNode.offsetHeight\r\n };\r\n this._offsetToWindow = {\r\n left: nodeWinOffset.left,\r\n right: document.documentElement.clientWidth - nodeWinOffset.right\r\n };\r\n this._offsetToParent = {\r\n top: nodeWinOffset.top - parentWinOffset.top - parseNumeric(parentComputedStyle.borderTopWidth),\r\n left: nodeWinOffset.left - parentWinOffset.left - parseNumeric(parentComputedStyle.borderLeftWidth),\r\n right: -nodeWinOffset.right + parentWinOffset.right - parseNumeric(parentComputedStyle.borderRightWidth)\r\n };\r\n this._styles = {\r\n position: node.style.position,\r\n top: node.style.top,\r\n bottom: node.style.bottom,\r\n left: node.style.left,\r\n right: node.style.right,\r\n width: node.style.width,\r\n marginTop: node.style.marginTop,\r\n marginLeft: node.style.marginLeft,\r\n marginRight: node.style.marginRight\r\n };\r\n \r\n var nodeTopValue = parseNumeric(nodeComputedProps.top);\r\n this._limits = {\r\n start: nodeWinOffset.top + window.pageYOffset - nodeTopValue,\r\n end: parentWinOffset.top + window.pageYOffset + parentNode.offsetHeight - parseNumeric(parentComputedStyle.borderBottomWidth) - node.offsetHeight - nodeTopValue - parseNumeric(nodeComputedProps.marginBottom)\r\n };\r\n \r\n /*\r\n * 4. Ensure that the node will be positioned relatively to the parent node\r\n */\r\n var parentPosition = parentComputedStyle.position;\r\n \r\n if (parentPosition != 'absolute' && parentPosition != 'relative') {\r\n parentNode.style.position = 'relative';\r\n }\r\n \r\n /*\r\n * 5. Recalc node position.\r\n * It’s important to do this before clone injection to avoid scrolling bug in Chrome.\r\n */\r\n this._recalcPosition();\r\n \r\n /*\r\n * 6. Create a clone\r\n */\r\n var clone = this._clone = {};\r\n clone.node = document.createElement('div');\r\n \r\n // Apply styles to the clone\r\n extend(clone.node.style, {\r\n width: nodeWinOffset.right - nodeWinOffset.left + 'px',\r\n height: nodeWinOffset.bottom - nodeWinOffset.top + 'px',\r\n marginTop: nodeComputedProps.marginTop,\r\n marginBottom: nodeComputedProps.marginBottom,\r\n marginLeft: nodeComputedProps.marginLeft,\r\n marginRight: nodeComputedProps.marginRight,\r\n cssFloat: nodeComputedProps.cssFloat,\r\n padding: 0,\r\n border: 0,\r\n borderSpacing: 0,\r\n fontSize: '1em',\r\n position: 'static'\r\n });\r\n \r\n referenceNode.insertBefore(clone.node, node);\r\n clone.docOffsetTop = getDocOffsetTop(clone.node);\r\n }\r\n }, {\r\n key: '_recalcPosition',\r\n value: function _recalcPosition() {\r\n if (!this._active || this._removed) return;\r\n \r\n var stickyMode = scroll.top <= this._limits.start ? 'start' : scroll.top >= this._limits.end ? 'end' : 'middle';\r\n \r\n if (this._stickyMode == stickyMode) return;\r\n \r\n switch (stickyMode) {\r\n case 'start':\r\n extend(this._node.style, {\r\n position: 'absolute',\r\n left: this._offsetToParent.left + 'px',\r\n right: this._offsetToParent.right + 'px',\r\n top: this._offsetToParent.top + 'px',\r\n bottom: 'auto',\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginTop: 0\r\n });\r\n break;\r\n \r\n case 'middle':\r\n extend(this._node.style, {\r\n position: 'fixed',\r\n left: this._offsetToWindow.left + 'px',\r\n right: this._offsetToWindow.right + 'px',\r\n top: this._styles.top,\r\n bottom: 'auto',\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginTop: 0\r\n });\r\n break;\r\n \r\n case 'end':\r\n extend(this._node.style, {\r\n position: 'absolute',\r\n left: this._offsetToParent.left + 'px',\r\n right: this._offsetToParent.right + 'px',\r\n top: 'auto',\r\n bottom: 0,\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0\r\n });\r\n break;\r\n }\r\n \r\n this._stickyMode = stickyMode;\r\n }\r\n }, {\r\n key: '_fastCheck',\r\n value: function _fastCheck() {\r\n if (!this._active || this._removed) return;\r\n \r\n if (Math.abs(getDocOffsetTop(this._clone.node) - this._clone.docOffsetTop) > 1 || Math.abs(this._parent.node.offsetHeight - this._parent.offsetHeight) > 1) this.refresh();\r\n }\r\n }, {\r\n key: '_deactivate',\r\n value: function _deactivate() {\r\n var _this = this;\r\n \r\n if (!this._active || this._removed) return;\r\n \r\n this._clone.node.parentNode.removeChild(this._clone.node);\r\n delete this._clone;\r\n \r\n extend(this._node.style, this._styles);\r\n delete this._styles;\r\n \r\n // Check whether element’s parent node is used by other stickies.\r\n // If not, restore parent node’s styles.\r\n if (!stickies.some(function (sticky) {\r\n return sticky !== _this && sticky._parent && sticky._parent.node === _this._parent.node;\r\n })) {\r\n extend(this._parent.node.style, this._parent.styles);\r\n }\r\n delete this._parent;\r\n \r\n this._stickyMode = null;\r\n this._active = false;\r\n \r\n delete this._offsetToWindow;\r\n delete this._offsetToParent;\r\n delete this._limits;\r\n }\r\n }, {\r\n key: 'remove',\r\n value: function remove() {\r\n var _this2 = this;\r\n \r\n this._deactivate();\r\n \r\n stickies.some(function (sticky, index) {\r\n if (sticky._node === _this2._node) {\r\n stickies.splice(index, 1);\r\n return true;\r\n }\r\n });\r\n \r\n this._removed = true;\r\n }\r\n }]);\r\n \r\n return Sticky;\r\n }();\r\n \r\n /*\r\n * 5. Stickyfill API\r\n */\r\n \r\n \r\n var Stickyfill = {\r\n stickies: stickies,\r\n Sticky: Sticky,\r\n \r\n addOne: function addOne(node) {\r\n // Check whether it’s a node\r\n if (!(node instanceof HTMLElement)) {\r\n // Maybe it’s a node list of some sort?\r\n // Take first node from the list then\r\n if (node.length && node[0]) node = node[0];else return;\r\n }\r\n \r\n // Check if Stickyfill is already applied to the node\r\n // and return existing sticky\r\n for (var i = 0; i < stickies.length; i++) {\r\n if (stickies[i]._node === node) return stickies[i];\r\n }\r\n \r\n // Create and return new sticky\r\n return new Sticky(node);\r\n },\r\n add: function add(nodeList) {\r\n // If it’s a node make an array of one node\r\n if (nodeList instanceof HTMLElement) nodeList = [nodeList];\r\n // Check if the argument is an iterable of some sort\r\n if (!nodeList.length) return;\r\n \r\n // Add every element as a sticky and return an array of created Sticky instances\r\n var addedStickies = [];\r\n \r\n var _loop = function _loop(i) {\r\n var node = nodeList[i];\r\n \r\n // If it’s not an HTMLElement – create an empty element to preserve 1-to-1\r\n // correlation with input list\r\n if (!(node instanceof HTMLElement)) {\r\n addedStickies.push(void 0);\r\n return 'continue';\r\n }\r\n \r\n // If Stickyfill is already applied to the node\r\n // add existing sticky\r\n if (stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n addedStickies.push(sticky);\r\n return true;\r\n }\r\n })) return 'continue';\r\n \r\n // Create and add new sticky\r\n addedStickies.push(new Sticky(node));\r\n };\r\n \r\n for (var i = 0; i < nodeList.length; i++) {\r\n var _ret2 = _loop(i);\r\n \r\n if (_ret2 === 'continue') continue;\r\n }\r\n \r\n return addedStickies;\r\n },\r\n refreshAll: function refreshAll() {\r\n stickies.forEach(function (sticky) {\r\n return sticky.refresh();\r\n });\r\n },\r\n removeOne: function removeOne(node) {\r\n // Check whether it’s a node\r\n if (!(node instanceof HTMLElement)) {\r\n // Maybe it’s a node list of some sort?\r\n // Take first node from the list then\r\n if (node.length && node[0]) node = node[0];else return;\r\n }\r\n \r\n // Remove the stickies bound to the nodes in the list\r\n stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n sticky.remove();\r\n return true;\r\n }\r\n });\r\n },\r\n remove: function remove(nodeList) {\r\n // If it’s a node make an array of one node\r\n if (nodeList instanceof HTMLElement) nodeList = [nodeList];\r\n // Check if the argument is an iterable of some sort\r\n if (!nodeList.length) return;\r\n \r\n // Remove the stickies bound to the nodes in the list\r\n \r\n var _loop2 = function _loop2(i) {\r\n var node = nodeList[i];\r\n \r\n stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n sticky.remove();\r\n return true;\r\n }\r\n });\r\n };\r\n \r\n for (var i = 0; i < nodeList.length; i++) {\r\n _loop2(i);\r\n }\r\n },\r\n removeAll: function removeAll() {\r\n while (stickies.length) {\r\n stickies[0].remove();\r\n }\r\n }\r\n };\r\n \r\n /*\r\n * 6. Setup events (unless the polyfill was disabled)\r\n */\r\n function init() {\r\n // Watch for scroll position changes and trigger recalc/refresh if needed\r\n function checkScroll() {\r\n if (window.pageXOffset != scroll.left) {\r\n scroll.top = window.pageYOffset;\r\n scroll.left = window.pageXOffset;\r\n \r\n Stickyfill.refreshAll();\r\n } else if (window.pageYOffset != scroll.top) {\r\n scroll.top = window.pageYOffset;\r\n scroll.left = window.pageXOffset;\r\n \r\n // recalc position for all stickies\r\n stickies.forEach(function (sticky) {\r\n return sticky._recalcPosition();\r\n });\r\n }\r\n }\r\n \r\n checkScroll();\r\n window.addEventListener('scroll', checkScroll);\r\n \r\n // Watch for window resizes and device orientation cahnges and trigger refresh\r\n window.addEventListener('resize', Stickyfill.refreshAll);\r\n window.addEventListener('orientationchange', Stickyfill.refreshAll);\r\n \r\n //Fast dirty check for layout changes every 500ms\r\n var fastCheckTimer = void 0;\r\n \r\n function startFastCheckTimer() {\r\n fastCheckTimer = setInterval(function () {\r\n stickies.forEach(function (sticky) {\r\n return sticky._fastCheck();\r\n });\r\n }, 500);\r\n }\r\n \r\n function stopFastCheckTimer() {\r\n clearInterval(fastCheckTimer);\r\n }\r\n \r\n var docHiddenKey = void 0;\r\n var visibilityChangeEventName = void 0;\r\n \r\n if ('hidden' in document) {\r\n docHiddenKey = 'hidden';\r\n visibilityChangeEventName = 'visibilitychange';\r\n } else if ('webkitHidden' in document) {\r\n docHiddenKey = 'webkitHidden';\r\n visibilityChangeEventName = 'webkitvisibilitychange';\r\n }\r\n \r\n if (visibilityChangeEventName) {\r\n if (!document[docHiddenKey]) startFastCheckTimer();\r\n \r\n document.addEventListener(visibilityChangeEventName, function () {\r\n if (document[docHiddenKey]) {\r\n stopFastCheckTimer();\r\n } else {\r\n startFastCheckTimer();\r\n }\r\n });\r\n } else startFastCheckTimer();\r\n }\r\n \r\n if (!seppuku) init();\r\n \r\n /*\r\n * 7. Expose Stickyfill\r\n */\r\n if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Stickyfill;\r\n } else {\r\n window.Stickyfill = Stickyfill;\r\n }\r\n \r\n})(window, document);\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! smooth-scroll v12.1.5 | (c) 2017 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\n!(function(e,t){ true?!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function(){return t(e)}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)):\"object\"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)})(\"undefined\"!=typeof global?global:\"undefined\"!=typeof window?window:this,(function(e){\"use strict\";var t=\"querySelector\"in document&&\"addEventListener\"in e&&\"requestAnimationFrame\"in e&&\"closest\"in e.Element.prototype,n={ignore:\"[data-scroll-ignore]\",header:null,speed:500,offset:0,easing:\"easeInOutCubic\",customEasing:null,before:function(){},after:function(){}},o=function(){for(var e={},t=0,n=arguments.length;t=1&&t<=31||127==t||0===a&&t>=48&&t<=57||1===a&&t>=48&&t<=57&&45===i?r+=\"\\\\\"+t.toString(16)+\" \":r+=t>=128||45===t||95===t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122?n.charAt(a):\"\\\\\"+n.charAt(a)}return\"#\"+r},i=function(e,t){var n;return\"easeInQuad\"===e.easing&&(n=t*t),\"easeOutQuad\"===e.easing&&(n=t*(2-t)),\"easeInOutQuad\"===e.easing&&(n=t<.5?2*t*t:(4-2*t)*t-1),\"easeInCubic\"===e.easing&&(n=t*t*t),\"easeOutCubic\"===e.easing&&(n=--t*t*t+1),\"easeInOutCubic\"===e.easing&&(n=t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),\"easeInQuart\"===e.easing&&(n=t*t*t*t),\"easeOutQuart\"===e.easing&&(n=1- --t*t*t*t),\"easeInOutQuart\"===e.easing&&(n=t<.5?8*t*t*t*t:1-8*--t*t*t*t),\"easeInQuint\"===e.easing&&(n=t*t*t*t*t),\"easeOutQuint\"===e.easing&&(n=1+--t*t*t*t*t),\"easeInOutQuint\"===e.easing&&(n=t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t),e.customEasing&&(n=e.customEasing(t)),n||t},u=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},c=function(e,t,n){var o=0;if(e.offsetParent)do{o+=e.offsetTop,e=e.offsetParent}while(e);return o=Math.max(o-t-n,0)},s=function(e){return e?a(e)+e.offsetTop:0},l=function(t,n,o){o||(t.focus(),document.activeElement.id!==t.id&&(t.setAttribute(\"tabindex\",\"-1\"),t.focus(),t.style.outline=\"none\"),e.scrollTo(0,n))},f=function(t){return!!(\"matchMedia\"in e&&e.matchMedia(\"(prefers-reduced-motion)\").matches)};return function(a,d){var m,h,g,p,v,b,y,S={};S.cancelScroll=function(){cancelAnimationFrame(y)},S.animateScroll=function(t,a,r){var f=o(m||n,r||{}),d=\"[object Number]\"===Object.prototype.toString.call(t),h=d||!t.tagName?null:t;if(d||h){var g=e.pageYOffset;f.header&&!p&&(p=document.querySelector(f.header)),v||(v=s(p));var b,y,E,I=d?t:c(h,v,parseInt(\"function\"==typeof f.offset?f.offset():f.offset,10)),O=I-g,A=u(),C=0,w=function(n,o){var r=e.pageYOffset;if(n==o||r==o||(g=A)return S.cancelScroll(),l(t,o,d),f.after(t,a),b=null,!0},Q=function(t){b||(b=t),C+=t-b,y=C/parseInt(f.speed,10),y=y>1?1:y,E=g+O*i(f,y),e.scrollTo(0,Math.floor(E)),w(E,I)||(e.requestAnimationFrame(Q),b=t)};0===e.pageYOffset&&e.scrollTo(0,0),f.before(t,a),S.cancelScroll(),e.requestAnimationFrame(Q)}};var E=function(e){h&&(h.id=h.getAttribute(\"data-scroll-id\"),S.animateScroll(h,g),h=null,g=null)},I=function(t){if(!f()&&0===t.button&&!t.metaKey&&!t.ctrlKey&&(g=t.target.closest(a))&&\"a\"===g.tagName.toLowerCase()&&!t.target.closest(m.ignore)&&g.hostname===e.location.hostname&&g.pathname===e.location.pathname&&/#/.test(g.href)){var n;try{n=r(decodeURIComponent(g.hash))}catch(e){n=r(g.hash)}if(\"#\"===n){t.preventDefault(),h=document.body;var o=h.id?h.id:\"smooth-scroll-top\";return h.setAttribute(\"data-scroll-id\",o),h.id=\"\",void(e.location.hash.substring(1)===o?E():e.location.hash=o)}h=document.querySelector(n),h&&(h.setAttribute(\"data-scroll-id\",h.id),h.id=\"\",g.hash===e.location.hash&&(t.preventDefault(),E()))}},O=function(e){b||(b=setTimeout((function(){b=null,v=s(p)}),66))};return S.destroy=function(){m&&(document.removeEventListener(\"click\",I,!1),e.removeEventListener(\"resize\",O,!1),S.cancelScroll(),m=null,h=null,g=null,p=null,v=null,b=null,y=null)},S.init=function(a){t&&(S.destroy(),m=o(n,a||{}),p=m.header?document.querySelector(m.header):null,v=s(p),document.addEventListener(\"click\",I,!1),e.addEventListener(\"hashchange\",E,!1),p&&e.addEventListener(\"resize\",O,!1))},S.init(d),S}}));\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports) {\n\nwindow.onYouTubeIframeAPIReady = function () {\r\n var ytElement = document.getElementById(\"heroYoutube\");\r\n if (ytElement) {\r\n var videoId = ytElement.getAttribute(\"data-youtube-id\");\r\n var player = new YT.Player('heroYoutube', {\r\n //video id and playlist id will come from Episerver Youtube field\r\n videoId: videoId,\r\n playerVars: {\r\n autoplay: 1,\r\n controls: 0,\r\n showinfo: 0,\r\n rel: 0,\r\n modestbranding: 1,\r\n loop: 1,\r\n fs: 0,\r\n iv_load_policy: 3,\r\n autohide: 0,\r\n playlist: videoId\r\n },\r\n events: {\r\n onReady: function (e) {\r\n e.target.mute();\r\n }\r\n }\r\n });\r\n }\r\n};\r\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nvar axios_1 = __webpack_require__(25);\r\nvar nearest_parent_1 = __webpack_require__(45);\r\nvar CurriculumDownload = /** @class */ (function () {\r\n function CurriculumDownload() {\r\n this.selectAllCheckbox = document.getElementById(\"allSections\");\r\n this.selectAllResourcesCheckbox = document.getElementById(\"allResources\");\r\n this.sections = document.getElementsByClassName(\"curriculum-section-js\");\r\n this.images = document.getElementsByClassName(\"curriculum-image-js\");\r\n this.downloadButton = document.getElementsByClassName(\"btn-curriculum-download-js\")[0];\r\n this.form = nearest_parent_1.nearestTagName(this.downloadButton, \"form\");\r\n this.unique = document.getElementById(\"unique\");\r\n this.disableDownload();\r\n }\r\n CurriculumDownload.prototype.iterateSections = function (func) {\r\n for (var i = 0; i < this.sections.length; ++i) {\r\n func(this.sections[i]);\r\n }\r\n };\r\n CurriculumDownload.prototype.iterateImages = function (func) {\r\n for (var i = 0; i < this.images.length; ++i) {\r\n func(this.images[i]);\r\n }\r\n };\r\n CurriculumDownload.prototype.iterateCheckboxes = function (func) {\r\n this.iterateSections(func);\r\n this.iterateImages(func);\r\n };\r\n CurriculumDownload.prototype.setupListeners = function () {\r\n var _this = this;\r\n if (this.selectAllCheckbox != null) {\r\n this.selectAllCheckbox.addEventListener(\"change\", function (event) {\r\n _this.checkAllSections(_this.selectAllCheckbox.checked);\r\n _this.checkDownloadButton();\r\n });\r\n }\r\n if (this.selectAllResourcesCheckbox != null) {\r\n this.selectAllResourcesCheckbox.addEventListener(\"change\", function (event) {\r\n _this.checkAllResources(_this.selectAllResourcesCheckbox.checked);\r\n _this.checkDownloadButton();\r\n });\r\n }\r\n this.iterateCheckboxes(function (section) {\r\n if (section != null) {\r\n section.addEventListener(\"change\", function (event) {\r\n _this.checkDownloadButton();\r\n });\r\n }\r\n });\r\n if (this.downloadButton != null) {\r\n this.downloadButton.addEventListener(\"click\", function (evt) {\r\n _this.submitDownloadRequest();\r\n });\r\n }\r\n };\r\n CurriculumDownload.prototype.submitDownloadRequest = function () {\r\n var _this = this;\r\n this.disableDownload();\r\n this.downloadButton.innerText = \"Downloading...\";\r\n // We don't really care about the result, if it returns something, disable the download button.\r\n axios_1.default.get(\"/umbraco/Surface/DownloadCurriculumSurface/CheckPdf?pageId=\" + this.downloadButton.getAttribute(\"data-page-id\") + \"&unique=\" + this.unique.getAttribute(\"value\"), { withCredentials: true }).then(function () {\r\n _this.enableDownload();\r\n _this.downloadButton.innerText = \"Download\";\r\n }).catch(function () {\r\n _this.enableDownload();\r\n _this.downloadButton.innerText = \"Download\";\r\n });\r\n this.form.submit();\r\n };\r\n CurriculumDownload.prototype.checkAllSections = function (to) {\r\n this.iterateSections(function (section) {\r\n section.checked = to;\r\n });\r\n };\r\n CurriculumDownload.prototype.checkAllResources = function (to) {\r\n this.iterateImages(function (section) {\r\n section.checked = to;\r\n });\r\n };\r\n CurriculumDownload.prototype.checkDownloadButton = function () {\r\n var canDownload = false;\r\n this.iterateCheckboxes(function (section) {\r\n if (section.checked) {\r\n canDownload = true;\r\n }\r\n });\r\n if (canDownload)\r\n this.enableDownload();\r\n else\r\n this.disableDownload();\r\n };\r\n CurriculumDownload.prototype.disableDownload = function () {\r\n if (this.downloadButton != null) {\r\n if (!this.downloadButton.getAttribute(\"disabled\"))\r\n this.downloadButton.setAttribute(\"disabled\", \"disabled\");\r\n }\r\n };\r\n CurriculumDownload.prototype.enableDownload = function () {\r\n if (this.downloadButton != null) {\r\n if (this.downloadButton.getAttribute(\"disabled\"))\r\n this.downloadButton.removeAttribute(\"disabled\");\r\n }\r\n };\r\n return CurriculumDownload;\r\n}());\r\nexports.CurriculumDownload = CurriculumDownload;\r\nvar checkboxes = new CurriculumDownload();\r\ncheckboxes.setupListeners();\r\nexports.default = checkboxes;\r\n\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(26);\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar bind = __webpack_require__(4);\nvar Axios = __webpack_require__(28);\nvar defaults = __webpack_require__(2);\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = __webpack_require__(8);\naxios.CancelToken = __webpack_require__(43);\naxios.isCancel = __webpack_require__(7);\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = __webpack_require__(44);\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports) {\n\n/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar defaults = __webpack_require__(2);\nvar utils = __webpack_require__(0);\nvar InterceptorManager = __webpack_require__(38);\nvar dispatchRequest = __webpack_require__(39);\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar createError = __webpack_require__(6);\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n }\n\n if (!utils.isArray(val)) {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\nvar transformData = __webpack_require__(40);\nvar isCancel = __webpack_require__(7);\nvar defaults = __webpack_require__(2);\nvar isAbsoluteURL = __webpack_require__(41);\nvar combineURLs = __webpack_require__(42);\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar utils = __webpack_require__(0);\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar Cancel = __webpack_require__(8);\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nfunction nearestParent(el, className) {\r\n while (el && !el.classList.contains(className))\r\n el = el.parentElement;\r\n return el;\r\n}\r\nexports.default = nearestParent;\r\nfunction nearestTagName(el, tagName) {\r\n while (el && el.tagName.toLowerCase() !== tagName.toLowerCase())\r\n el = el.parentElement;\r\n return el;\r\n}\r\nexports.nearestTagName = nearestTagName;\r\n\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/* WEBPACK VAR INJECTION */(function(global) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* global NodeList, Element, define */\n\n(function (global) {\n 'use strict';\n\n var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=\"-\"])'];\n var TAB_KEY = 9;\n var ESCAPE_KEY = 27;\n var focusedBeforeDialog;\n\n /**\n * Define the constructor to instantiate a dialog\n *\n * @constructor\n * @param {Element} node\n * @param {(NodeList | Element | string)} targets\n */\n function A11yDialog (node, targets) {\n // Prebind the functions that will be bound in addEventListener and\n // removeEventListener to avoid losing references\n this._show = this.show.bind(this);\n this._hide = this.hide.bind(this);\n this._maintainFocus = this._maintainFocus.bind(this);\n this._bindKeypress = this._bindKeypress.bind(this);\n\n // Keep a reference of the node on the instance\n this.node = node;\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n // Initialise everything needed for the dialog to work properly\n this.create(targets);\n }\n\n /**\n * Set up everything necessary for the dialog to be functioning\n *\n * @param {(NodeList | Element | string)} targets\n * @return {this}\n */\n A11yDialog.prototype.create = function (targets) {\n // Keep a collection of nodes to disable/enable when toggling the dialog\n this._targets = this._targets || collect(targets) || getSiblings(this.node);\n\n // Make sure the dialog element is disabled on load, and that the `shown`\n // property is synced with its value\n this.node.setAttribute('aria-hidden', true);\n this.shown = false;\n\n // Keep a collection of dialog openers, each of which will be bound a click\n // event listener to open the dialog\n this._openers = $$('[data-a11y-dialog-show=\"' + this.node.id + '\"]');\n this._openers.forEach(function (opener) {\n opener.addEventListener('click', this._show);\n }.bind(this));\n\n // Keep a collection of dialog closers, each of which will be bound a click\n // event listener to close the dialog\n this._closers = $$('[data-a11y-dialog-hide]', this.node)\n .concat($$('[data-a11y-dialog-hide=\"' + this.node.id + '\"]'));\n this._closers.forEach(function (closer) {\n closer.addEventListener('click', this._hide);\n }.bind(this));\n\n // Execute all callbacks registered for the `create` event\n this._fire('create');\n\n return this;\n };\n\n /**\n * Show the dialog element, disable all the targets (siblings), trap the\n * current focus within it, listen for some specific key presses and fire all\n * registered callbacks for `show` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.show = function (event) {\n // If the dialog is already open, abort\n if (this.shown) {\n return this;\n }\n\n this.shown = true;\n this.node.removeAttribute('aria-hidden');\n\n // Iterate over the targets to disable them by setting their `aria-hidden`\n // attribute to `true`; in case they already have this attribute, keep a\n // reference of their original value to be able to restore it later\n this._targets.forEach(function (target) {\n var original = target.getAttribute('aria-hidden');\n\n if (original) {\n target.setAttribute('data-a11y-dialog-original', original);\n }\n\n target.setAttribute('aria-hidden', 'true');\n });\n\n // Keep a reference to the currently focused element to be able to restore\n // it later, then set the focus to the first focusable child of the dialog\n // element\n focusedBeforeDialog = document.activeElement;\n setFocusToFirstItem(this.node);\n\n // Bind a focus event listener to the body element to make sure the focus\n // stays trapped inside the dialog while open, and start listening for some\n // specific key presses (TAB and ESC)\n document.body.addEventListener('focus', this._maintainFocus, true);\n document.addEventListener('keydown', this._bindKeypress);\n\n // Execute all callbacks registered for the `show` event\n this._fire('show', event);\n\n return this;\n };\n\n /**\n * Hide the dialog element, enable all the targets (siblings), restore the\n * focus to the previously active element, stop listening for some specific\n * key presses and fire all registered callbacks for `hide` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.hide = function (event) {\n // If the dialog is already closed, abort\n if (!this.shown) {\n return this;\n }\n\n this.shown = false;\n this.node.setAttribute('aria-hidden', 'true');\n\n // Iterate over the targets to enable them by remove their `aria-hidden`\n // attribute or resetting them to their initial value\n this._targets.forEach(function (target) {\n var original = target.getAttribute('data-a11y-dialog-original');\n\n if (original) {\n target.setAttribute('aria-hidden', original);\n target.removeAttribute('data-a11y-dialog-original');\n } else {\n target.removeAttribute('aria-hidden');\n }\n });\n\n // If their was a focused element before the dialog was opened, restore the\n // focus back to it\n if (focusedBeforeDialog) {\n focusedBeforeDialog.focus();\n }\n\n // Remove the focus event listener to the body element and stop listening\n // for specific key presses\n document.body.removeEventListener('focus', this._maintainFocus, true);\n document.removeEventListener('keydown', this._bindKeypress);\n\n // Execute all callbacks registered for the `hide` event\n this._fire('hide', event);\n\n return this;\n };\n\n /**\n * Destroy the current instance (after making sure the dialog has been hidden)\n * and remove all associated listeners from dialog openers and closers\n *\n * @return {this}\n */\n A11yDialog.prototype.destroy = function () {\n // Hide the dialog to avoid destroying an open instance\n this.hide();\n\n // Remove the click event listener from all dialog openers\n this._openers.forEach(function (opener) {\n opener.removeEventListener('click', this._show);\n }.bind(this));\n\n // Remove the click event listener from all dialog closers\n this._closers.forEach(function (closer) {\n closer.removeEventListener('click', this._hide);\n }.bind(this));\n\n // Execute all callbacks registered for the `destroy` event\n this._fire('destroy');\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n return this;\n };\n\n /**\n * Register a new callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.on = function (type, handler) {\n if (typeof this._listeners[type] === 'undefined') {\n this._listeners[type] = [];\n }\n\n this._listeners[type].push(handler);\n\n return this;\n };\n\n /**\n * Unregister an existing callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.off = function (type, handler) {\n var index = this._listeners[type].indexOf(handler);\n\n if (index > -1) {\n this._listeners[type].splice(index, 1);\n }\n\n return this;\n };\n\n /**\n * Iterate over all registered handlers for given type and call them all with\n * the dialog element as first argument, event as second argument (if any).\n *\n * @access private\n * @param {string} type\n * @param {Event} event\n */\n A11yDialog.prototype._fire = function (type, event) {\n var listeners = this._listeners[type] || [];\n\n listeners.forEach(function (listener) {\n listener(this.node, event);\n }.bind(this));\n };\n\n /**\n * Private event handler used when listening to some specific key presses\n * (namely ESCAPE and TAB)\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._bindKeypress = function (event) {\n // If the dialog is shown and the ESCAPE key is being pressed, prevent any\n // further effects from the ESCAPE key and hide the dialog\n if (this.shown && event.which === ESCAPE_KEY) {\n event.preventDefault();\n this.hide();\n }\n\n // If the dialog is shown and the TAB key is being pressed, make sure the\n // focus stays trapped within the dialog element\n if (this.shown && event.which === TAB_KEY) {\n trapTabKey(this.node, event);\n }\n };\n\n /**\n * Private event handler used when making sure the focus stays within the\n * currently open dialog\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._maintainFocus = function (event) {\n // If the dialog is shown and the focus is not within the dialog element,\n // move it back to its first focusable child\n if (this.shown && !this.node.contains(event.target)) {\n setFocusToFirstItem(this.node);\n }\n };\n\n /**\n * Convert a NodeList into an array\n *\n * @param {NodeList} collection\n * @return {Array}\n */\n function toArray (collection) {\n return Array.prototype.slice.call(collection);\n }\n\n /**\n * Query the DOM for nodes matching the given selector, scoped to context (or\n * the whole document)\n *\n * @param {String} selector\n * @param {Element} [context = document]\n * @return {Array}\n */\n function $$ (selector, context) {\n return toArray((context || document).querySelectorAll(selector));\n }\n\n /**\n * Return an array of Element based on given argument (NodeList, Element or\n * string representing a selector)\n *\n * @param {(NodeList | Element | string)} target\n * @return {Array}\n */\n function collect (target) {\n if (NodeList.prototype.isPrototypeOf(target)) {\n return toArray(target);\n }\n\n if (Element.prototype.isPrototypeOf(target)) {\n return [target];\n }\n\n if (typeof target === 'string') {\n return $$(target);\n }\n }\n\n /**\n * Set the focus to the first focusable child of the given element\n *\n * @param {Element} node\n */\n function setFocusToFirstItem (node) {\n var focusableChildren = getFocusableChildren(node);\n\n if (focusableChildren.length) {\n focusableChildren[0].focus();\n }\n }\n\n /**\n * Get the focusable children of the given element\n *\n * @param {Element} node\n * @return {Array}\n */\n function getFocusableChildren (node) {\n return $$(FOCUSABLE_ELEMENTS.join(','), node).filter(function (child) {\n return !!(child.offsetWidth || child.offsetHeight || child.getClientRects().length);\n });\n }\n\n /**\n * Trap the focus inside the given element\n *\n * @param {Element} node\n * @param {Event} event\n */\n function trapTabKey (node, event) {\n var focusableChildren = getFocusableChildren(node);\n var focusedItemIndex = focusableChildren.indexOf(document.activeElement);\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren[focusableChildren.length - 1].focus();\n event.preventDefault();\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n } else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n }\n\n /**\n * Retrieve siblings from given element\n *\n * @param {Element} node\n * @return {Array}\n */\n function getSiblings (node) {\n var nodes = toArray(node.parentNode.childNodes);\n var siblings = nodes.filter(function (node) {\n return node.nodeType === 1;\n });\n\n siblings.splice(siblings.indexOf(node), 1);\n\n return siblings;\n }\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = A11yDialog;\n } else if (true) {\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function () {\n return A11yDialog;\n }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else if (typeof global === 'object') {\n global.A11yDialog = A11yDialog;\n }\n}(typeof global !== 'undefined' ? global : window));\n\n/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))\n\n/***/ })\n/******/ ]);\n\n\n// WEBPACK FOOTER //\n// global-bundle.js"," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 9);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap f471b296a4707de38fba","'use strict';\n\nvar bind = require('./helpers/bind');\nvar isBuffer = require('is-buffer');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && navigator.product === 'ReactNative') {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/utils.js\n// module id = 0\n// module chunks = 0","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 1\n// module chunks = 0","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/defaults.js\n// module id = 2\n// module chunks = 0","// element-closest | CC0-1.0 | github.com/jonathantneal/closest\n\n(function (ElementProto) {\n\tif (typeof ElementProto.matches !== 'function') {\n\t\tElementProto.matches = ElementProto.msMatchesSelector || ElementProto.mozMatchesSelector || ElementProto.webkitMatchesSelector || function matches(selector) {\n\t\t\tvar element = this;\n\t\t\tvar elements = (element.document || element.ownerDocument).querySelectorAll(selector);\n\t\t\tvar index = 0;\n\n\t\t\twhile (elements[index] && elements[index] !== element) {\n\t\t\t\t++index;\n\t\t\t}\n\n\t\t\treturn Boolean(elements[index]);\n\t\t};\n\t}\n\n\tif (typeof ElementProto.closest !== 'function') {\n\t\tElementProto.closest = function closest(selector) {\n\t\t\tvar element = this;\n\n\t\t\twhile (element && element.nodeType === 1) {\n\t\t\t\tif (element.matches(selector)) {\n\t\t\t\t\treturn element;\n\t\t\t\t}\n\n\t\t\t\telement = element.parentNode;\n\t\t\t}\n\n\t\t\treturn null;\n\t\t};\n\t}\n})(window.Element.prototype);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/element-closest/element-closest.js\n// module id = 3\n// module chunks = 0","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/bind.js\n// module id = 4\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nvar btoa = (typeof window !== 'undefined' && window.btoa && window.btoa.bind(window)) || require('./../helpers/btoa');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n var loadEvent = 'onreadystatechange';\n var xDomain = false;\n\n // For IE 8/9 CORS support\n // Only supports POST and GET calls and doesn't returns the response headers.\n // DON'T do this for testing b/c XMLHttpRequest is mocked, not XDomainRequest.\n if (process.env.NODE_ENV !== 'test' &&\n typeof window !== 'undefined' &&\n window.XDomainRequest && !('withCredentials' in request) &&\n !isURLSameOrigin(config.url)) {\n request = new window.XDomainRequest();\n loadEvent = 'onload';\n xDomain = true;\n request.onprogress = function handleProgress() {};\n request.ontimeout = function handleTimeout() {};\n }\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n request.open(config.method.toUpperCase(), buildURL(config.url, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request[loadEvent] = function handleLoad() {\n if (!request || (request.readyState !== 4 && !xDomain)) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n // IE sends 1223 instead of 204 (https://github.com/axios/axios/issues/201)\n status: request.status === 1223 ? 204 : request.status,\n statusText: request.status === 1223 ? 'No Content' : request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n reject(createError('timeout of ' + config.timeout + 'ms exceeded', config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(config.url)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (config.withCredentials) {\n request.withCredentials = true;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/adapters/xhr.js\n// module id = 5\n// module chunks = 0","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/createError.js\n// module id = 6\n// module chunks = 0","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/isCancel.js\n// module id = 7\n// module chunks = 0","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/Cancel.js\n// module id = 8\n// module chunks = 0","import * as CONSTANTS from '../modules/constants';\nimport { svgInject } from '../modules/svg-injection';\nimport '../modules/carousel-init';\nimport { AriaToggling } from '../modules/aria-toggling';\nimport { MobileMenu } from '../modules/mobile-menu';\nimport { HeaderSearch } from '../modules/header-search';\nimport { nodeListToArray } from '../modules/nodelist-to-array';\nimport { Accordions } from '../modules/accordion';\nimport { ScrollspyNav } from '../modules/scrollspy-nav';\nimport * as SmoothScroll from 'smooth-scroll';\nimport '../modules/youtube-hero';\nimport '../modules/curriculum-download';\nimport * as A11yDialog from 'a11y-dialog';\n\n(function () {\n CONSTANTS.GLOBAL_HTML.classList.remove('no-js');\n\n new HeaderSearch(CONSTANTS.GLOBAL_BODY);\n svgInject('/Static/images/svg-sprite.svg');\n new MobileMenu(CONSTANTS.GLOBAL_BODY);\n new AriaToggling(nodeListToArray(document.querySelectorAll('#mNav .mnav-list-item > a')));\n\n // Accordion\n new Accordions();\n\n //document.addEventListener(\"DOMContentLoaded\", () => {\n // (window as any).initCarousel();\n //});\n\n new ScrollspyNav();\n\n var scroll = new SmoothScroll('a[href*=\"#\"]', {\n // Selectors\n ignore: '[data-scroll-ignore]', // Selector for links to ignore (must be a valid CSS selector)\n header: '#siteHeader', // Selector for fixed headers (must be a valid CSS selector)\n \n // Speed & Easing\n speed: 500, // Integer. How fast to complete the scroll in milliseconds\n offset: 100, // Integer or Function returning an integer. How far to offset the scrolling anchor location in pixels\n easing: 'easeInOutCubic', // Easing pattern to use\n \n // Callback API\n before: function (anchor, toggle) {}, // Callback to run before scroll\n after: function (anchor, toggle) {} // Callback to run after scroll\n });\n\n // Global Modals\n const modalsArray = nodeListToArray(document.querySelectorAll('.modal-js'));\n modalsArray.forEach(function (modal) {\n const modalInstance = new A11yDialog(modal);\n\n modalInstance.on('show', (dialog, e) => {\n CONSTANTS.GLOBAL_HTML.classList.add('modal-visible');\n });\n modalInstance.on('hide', (dialog, e) => {\n CONSTANTS.GLOBAL_HTML.classList.remove('modal-visible');\n })\n });\n})();\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/common/global.ts","/**\n These are global constants that you can import on to partials\n*/\nexport const GLOBAL_BODY = document.getElementsByTagName('body')[0];\nexport const GLOBAL_HTML = document.getElementsByTagName('html')[0];\nexport const UTILITY_NAV = document.getElementById('utility');\nexport const HEADER = document.getElementById('header');\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/constants.ts","\nexport function svgInject(svgUrl) {\n const request = new XMLHttpRequest();\n request.open('GET', svgUrl, true);\n request.onload = function () {\n if (request.status >= 200 && request.status < 400) {\n let data = request.responseText;\n\n // Create node with response data and insert into DOM\n let div = document.createElement('div');\n div.innerHTML = data;\n document.body.insertBefore(div, document.body.childNodes[0]);\n } else {\n console.log('Could not load SVG sprite');\n }\n };\n request.onerror = function () {\n console.log(\"Couldn't load SVG sprite - connection error\");\n };\n request.send();\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/svg-injection.ts","var lory: LoryStatic = require('lory.js').lory;\n\n(window as any).initCarousel = function (carouselId: string, slidesToScrollNum: number) {\n const carouselItem = document.getElementById(carouselId);\n const slidesToScrollAtOnce = slidesToScrollNum ? slidesToScrollNum : 1; \n const infiniteBuffer = slidesToScrollNum ? slidesToScrollNum : 2;\n\n if (carouselItem) {\n const loryOptions: LoryOptions = {\n enableMouseEvents: true,\n infinite: infiniteBuffer,\n slideSpeed: 1000,\n slidesToScroll: slidesToScrollAtOnce,\n ease: 'cubic-bezier(0, 0, 1, 1)'\n };\n\n let dot_count = carouselItem.querySelectorAll('.js_slide').length / slidesToScrollAtOnce;\n let dot_container = carouselItem.querySelector('.js_dots');\n let dot_list_item = document.createElement('li');\n let nextBtn = carouselItem.querySelector('.js_next') as HTMLElement;\n let prevBtn = carouselItem.querySelector('.js_prev') as HTMLElement;\n dot_list_item.tabIndex = 0;\n\n function handleDotEvent(e) {\n if (e.type === 'before.lory.init') {\n for (var i = 0, len = dot_count; i < len; i++) {\n var clone = dot_list_item.cloneNode() as HTMLElement;\n clone.innerHTML = `Select slide ${i + 1}`;\n dot_container.appendChild(clone);\n }\n dot_container.children[0].classList.add('active');\n }\n if (e.type === 'after.lory.init') {\n for (var i = 0, len = dot_count; i < len; i++) {\n dot_container.children[i].addEventListener('click', evt => {\n if (Array.prototype.indexOf.call(dot_container.children, evt.target) != 0) {\n carouselContainer.slideTo(Array.prototype.indexOf.call(dot_container.children, evt.target) + (slidesToScrollAtOnce - 1));\n }\n else {\n carouselContainer.slideTo(Array.prototype.indexOf.call(dot_container.children, evt.target));\n }\n });\n dot_container.children[i].addEventListener('keyup', (evt: KeyboardEvent) => {\n if (evt.which == 13) {\n if (Array.prototype.indexOf.call(dot_container.children, evt.target) != 0) {\n carouselContainer.slideTo(Array.prototype.indexOf.call(dot_container.children, evt.target) + (slidesToScrollAtOnce - 1));\n }\n else {\n carouselContainer.slideTo(Array.prototype.indexOf.call(dot_container.children, evt.target));\n }\n }\n });\n }\n nextBtn.addEventListener('keyup', (evt: KeyboardEvent) => {\n if (evt.which == 13) {\n carouselContainer.next();\n }\n });\n prevBtn.addEventListener('keyup', (evt: KeyboardEvent) => {\n if (evt.which == 13) {\n carouselContainer.prev();\n }\n });\n }\n if (e.type === 'after.lory.slide') {\n for (var i = 0, len = dot_container.children.length; i < len; i++) {\n dot_container.children[i].classList.remove('active');\n }\n dot_container.children[(e.detail.currentSlide - infiniteBuffer + dot_count) % dot_count].classList.add('active'); //complex to reference because of the \"infinite\" thing\n }\n if (e.type === 'on.lory.resize') {\n for (var i = 0, len = dot_container.children.length; i < len; i++) {\n dot_container.children[i].classList.remove('active');\n }\n dot_container.children[0].classList.add('active');\n }\n }\n carouselItem.addEventListener('before.lory.init', handleDotEvent);\n carouselItem.addEventListener('after.lory.init', handleDotEvent);\n carouselItem.addEventListener('after.lory.slide', handleDotEvent);\n carouselItem.addEventListener('on.lory.resize', handleDotEvent);\n\n let carouselContainer = lory(carouselItem, loryOptions);\n /* Automatic transition \n Dev Notes: The transition speed is the property available only for the home page carousel.\n This property is used as a condition to automate the carousel rotation.\n */\n var transitionSpeed = carouselItem.getAttribute(\"data-transition-speed\");\n if (transitionSpeed != null) {\n var notDesktop = window.innerWidth <= 768;\n if (notDesktop) {\n window.cancelAnimationFrame(reqAnimation);\n }\n else {\n var autoSlide, interval, startTime, currentTime, elapsed, reqAnimation;\n var playPause = document.getElementById(\"carouselPlayPauseJS\");\n var playPauseSvg = playPause.querySelector(\"svg use\");\n var sliderButton = document.querySelector(\".carousel-buttons-inner-js\");\n\n startAnimating(transitionSpeed);\n\n function startAnimating(speed) {\n interval = (speed * 1000);\n autoSlide = true;\n sliderButton.addEventListener('click', (e) => {\n autoSlide = false;\n startTime = Date.now();\n nextSlide();\n });\n\n if (autoSlide) {\n startTime = Date.now();\n animate();\n }\n }\n\n function animate() {\n reqAnimation = requestAnimationFrame(animate);\n nextSlide();\n }\n\n function nextSlide() {\n currentTime = Date.now();\n elapsed = currentTime - startTime;\n\n if (elapsed > interval) {\n startTime = currentTime - (elapsed % interval);\n carouselContainer.next();\n }\n }\n\n playPause.addEventListener('click', (e) => {\n var xlinkHref = 'xlink:href';\n var svg = playPauseSvg.getAttribute(xlinkHref);\n var playPauseElement = document.getElementById(\"playPauseTextJS\")\n var playPauseText: string;\n if (svg.indexOf('play') != -1) {\n startAnimating(transitionSpeed);\n playPauseSvg.setAttribute(xlinkHref, \"#icon-pause\");\n playPauseText = \"Stop automatic transition\";\n }\n else {\n window.cancelAnimationFrame(reqAnimation);\n playPauseSvg.setAttribute(xlinkHref, \"#icon-play\");\n playPauseText = \"Start automatic transition\";\n }\n playPauseElement.innerHTML = playPauseText;\n });\n }\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/carousel-init.ts","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tmodule.exports = __webpack_require__(1);\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* globals jQuery */\n\t\n\texports.lory = lory;\n\t\n\tvar _detectPrefixes = __webpack_require__(2);\n\t\n\tvar _detectPrefixes2 = _interopRequireDefault(_detectPrefixes);\n\t\n\tvar _dispatchEvent = __webpack_require__(3);\n\t\n\tvar _dispatchEvent2 = _interopRequireDefault(_dispatchEvent);\n\t\n\tvar _defaults = __webpack_require__(5);\n\t\n\tvar _defaults2 = _interopRequireDefault(_defaults);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar slice = Array.prototype.slice;\n\t\n\tfunction lory(slider, opts) {\n\t var position = void 0;\n\t var slidesWidth = void 0;\n\t var frameWidth = void 0;\n\t var slides = void 0;\n\t\n\t /**\n\t * slider DOM elements\n\t */\n\t var frame = void 0;\n\t var slideContainer = void 0;\n\t var prevCtrl = void 0;\n\t var nextCtrl = void 0;\n\t var prefixes = void 0;\n\t var transitionEndCallback = void 0;\n\t\n\t var index = 0;\n\t var options = {};\n\t\n\t /**\n\t * if object is jQuery convert to native DOM element\n\t */\n\t if (typeof jQuery !== 'undefined' && slider instanceof jQuery) {\n\t slider = slider[0];\n\t }\n\t\n\t /**\n\t * private\n\t * set active class to element which is the current slide\n\t */\n\t function setActiveElement(slides, currentIndex) {\n\t var _options = options,\n\t classNameActiveSlide = _options.classNameActiveSlide;\n\t\n\t\n\t slides.forEach(function (element, index) {\n\t if (element.classList.contains(classNameActiveSlide)) {\n\t element.classList.remove(classNameActiveSlide);\n\t }\n\t });\n\t\n\t slides[currentIndex].classList.add(classNameActiveSlide);\n\t }\n\t\n\t /**\n\t * private\n\t * setupInfinite: function to setup if infinite is set\n\t *\n\t * @param {array} slideArray\n\t * @return {array} array of updated slideContainer elements\n\t */\n\t function setupInfinite(slideArray) {\n\t var _options2 = options,\n\t infinite = _options2.infinite;\n\t\n\t\n\t var front = slideArray.slice(0, infinite);\n\t var back = slideArray.slice(slideArray.length - infinite, slideArray.length);\n\t\n\t front.forEach(function (element) {\n\t var cloned = element.cloneNode(true);\n\t\n\t slideContainer.appendChild(cloned);\n\t });\n\t\n\t back.reverse().forEach(function (element) {\n\t var cloned = element.cloneNode(true);\n\t\n\t slideContainer.insertBefore(cloned, slideContainer.firstChild);\n\t });\n\t\n\t slideContainer.addEventListener(prefixes.transitionEnd, onTransitionEnd);\n\t\n\t return slice.call(slideContainer.children);\n\t }\n\t\n\t /**\n\t * [dispatchSliderEvent description]\n\t * @return {[type]} [description]\n\t */\n\t function dispatchSliderEvent(phase, type, detail) {\n\t (0, _dispatchEvent2.default)(slider, phase + '.lory.' + type, detail);\n\t }\n\t\n\t /**\n\t * translates to a given position in a given time in milliseconds\n\t *\n\t * @to {number} number in pixels where to translate to\n\t * @duration {number} time in milliseconds for the transistion\n\t * @ease {string} easing css property\n\t */\n\t function translate(to, duration, ease) {\n\t var style = slideContainer && slideContainer.style;\n\t\n\t if (style) {\n\t style[prefixes.transition + 'TimingFunction'] = ease;\n\t style[prefixes.transition + 'Duration'] = duration + 'ms';\n\t\n\t if (prefixes.hasTranslate3d) {\n\t style[prefixes.transform] = 'translate3d(' + to + 'px, 0, 0)';\n\t } else {\n\t style[prefixes.transform] = 'translate(' + to + 'px, 0)';\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * slidefunction called by prev, next & touchend\n\t *\n\t * determine nextIndex and slide to next postion\n\t * under restrictions of the defined options\n\t *\n\t * @direction {boolean}\n\t */\n\t function slide(nextIndex, direction) {\n\t var _options3 = options,\n\t slideSpeed = _options3.slideSpeed,\n\t slidesToScroll = _options3.slidesToScroll,\n\t infinite = _options3.infinite,\n\t rewind = _options3.rewind,\n\t rewindSpeed = _options3.rewindSpeed,\n\t ease = _options3.ease,\n\t classNameActiveSlide = _options3.classNameActiveSlide;\n\t\n\t\n\t var duration = slideSpeed;\n\t\n\t var nextSlide = direction ? index + 1 : index - 1;\n\t var maxOffset = Math.round(slidesWidth - frameWidth);\n\t\n\t dispatchSliderEvent('before', 'slide', {\n\t index: index,\n\t nextSlide: nextSlide\n\t });\n\t\n\t /**\n\t * Reset control classes\n\t */\n\t if (prevCtrl) {\n\t prevCtrl.classList.remove('disabled');\n\t }\n\t if (nextCtrl) {\n\t nextCtrl.classList.remove('disabled');\n\t }\n\t\n\t if (typeof nextIndex !== 'number') {\n\t if (direction) {\n\t nextIndex = index + slidesToScroll;\n\t } else {\n\t nextIndex = index - slidesToScroll;\n\t }\n\t }\n\t\n\t nextIndex = Math.min(Math.max(nextIndex, 0), slides.length - 1);\n\t\n\t if (infinite && direction === undefined) {\n\t nextIndex += infinite;\n\t }\n\t\n\t var nextOffset = Math.min(Math.max(slides[nextIndex].offsetLeft * -1, maxOffset * -1), 0);\n\t\n\t if (rewind && Math.abs(position.x) === maxOffset && direction) {\n\t nextOffset = 0;\n\t nextIndex = 0;\n\t duration = rewindSpeed;\n\t }\n\t\n\t /**\n\t * translate to the nextOffset by a defined duration and ease function\n\t */\n\t translate(nextOffset, duration, ease);\n\t\n\t /**\n\t * update the position with the next position\n\t */\n\t position.x = nextOffset;\n\t\n\t /**\n\t * update the index with the nextIndex only if\n\t * the offset of the nextIndex is in the range of the maxOffset\n\t */\n\t if (slides[nextIndex].offsetLeft <= maxOffset) {\n\t index = nextIndex;\n\t }\n\t\n\t if (infinite && (nextIndex === slides.length - infinite || nextIndex === 0)) {\n\t if (direction) {\n\t index = infinite;\n\t }\n\t\n\t if (!direction) {\n\t index = slides.length - infinite * 2;\n\t }\n\t\n\t position.x = slides[index].offsetLeft * -1;\n\t\n\t transitionEndCallback = function transitionEndCallback() {\n\t translate(slides[index].offsetLeft * -1, 0, undefined);\n\t };\n\t }\n\t\n\t if (classNameActiveSlide) {\n\t setActiveElement(slice.call(slides), index);\n\t }\n\t\n\t /**\n\t * update classes for next and prev arrows\n\t * based on user settings\n\t */\n\t if (prevCtrl && !infinite && nextIndex === 0) {\n\t prevCtrl.classList.add('disabled');\n\t }\n\t\n\t if (nextCtrl && !infinite && !rewind && nextIndex + 1 === slides.length) {\n\t nextCtrl.classList.add('disabled');\n\t }\n\t\n\t dispatchSliderEvent('after', 'slide', {\n\t currentSlide: index\n\t });\n\t }\n\t\n\t /**\n\t * public\n\t * setup function\n\t */\n\t function setup() {\n\t dispatchSliderEvent('before', 'init');\n\t\n\t prefixes = (0, _detectPrefixes2.default)();\n\t options = _extends({}, _defaults2.default, opts);\n\t\n\t var _options4 = options,\n\t classNameFrame = _options4.classNameFrame,\n\t classNameSlideContainer = _options4.classNameSlideContainer,\n\t classNamePrevCtrl = _options4.classNamePrevCtrl,\n\t classNameNextCtrl = _options4.classNameNextCtrl,\n\t enableMouseEvents = _options4.enableMouseEvents,\n\t classNameActiveSlide = _options4.classNameActiveSlide;\n\t\n\t\n\t frame = slider.getElementsByClassName(classNameFrame)[0];\n\t slideContainer = frame.getElementsByClassName(classNameSlideContainer)[0];\n\t prevCtrl = slider.getElementsByClassName(classNamePrevCtrl)[0];\n\t nextCtrl = slider.getElementsByClassName(classNameNextCtrl)[0];\n\t\n\t position = {\n\t x: slideContainer.offsetLeft,\n\t y: slideContainer.offsetTop\n\t };\n\t\n\t if (options.infinite) {\n\t slides = setupInfinite(slice.call(slideContainer.children));\n\t } else {\n\t slides = slice.call(slideContainer.children);\n\t\n\t if (prevCtrl) {\n\t prevCtrl.classList.add('disabled');\n\t }\n\t\n\t if (nextCtrl && slides.length === 1 && !options.rewind) {\n\t nextCtrl.classList.add('disabled');\n\t }\n\t }\n\t\n\t reset();\n\t\n\t if (classNameActiveSlide) {\n\t setActiveElement(slides, index);\n\t }\n\t\n\t if (prevCtrl && nextCtrl) {\n\t prevCtrl.addEventListener('click', prev);\n\t nextCtrl.addEventListener('click', next);\n\t }\n\t\n\t frame.addEventListener('touchstart', onTouchstart);\n\t\n\t if (enableMouseEvents) {\n\t frame.addEventListener('mousedown', onTouchstart);\n\t frame.addEventListener('click', onClick);\n\t }\n\t\n\t options.window.addEventListener('resize', onResize);\n\t\n\t dispatchSliderEvent('after', 'init');\n\t }\n\t\n\t /**\n\t * public\n\t * reset function: called on resize\n\t */\n\t function reset() {\n\t var _options5 = options,\n\t infinite = _options5.infinite,\n\t ease = _options5.ease,\n\t rewindSpeed = _options5.rewindSpeed,\n\t rewindOnResize = _options5.rewindOnResize,\n\t classNameActiveSlide = _options5.classNameActiveSlide;\n\t\n\t\n\t slidesWidth = slideContainer.getBoundingClientRect().width || slideContainer.offsetWidth;\n\t frameWidth = frame.getBoundingClientRect().width || frame.offsetWidth;\n\t\n\t if (frameWidth === slidesWidth) {\n\t slidesWidth = slides.reduce(function (previousValue, slide) {\n\t return previousValue + slide.getBoundingClientRect().width || slide.offsetWidth;\n\t }, 0);\n\t }\n\t\n\t if (rewindOnResize) {\n\t index = 0;\n\t } else {\n\t ease = null;\n\t rewindSpeed = 0;\n\t }\n\t\n\t if (infinite) {\n\t translate(slides[index + infinite].offsetLeft * -1, 0, null);\n\t\n\t index = index + infinite;\n\t position.x = slides[index].offsetLeft * -1;\n\t } else {\n\t translate(slides[index].offsetLeft * -1, rewindSpeed, ease);\n\t position.x = slides[index].offsetLeft * -1;\n\t }\n\t\n\t if (classNameActiveSlide) {\n\t setActiveElement(slice.call(slides), index);\n\t }\n\t }\n\t\n\t /**\n\t * public\n\t * slideTo: called on clickhandler\n\t */\n\t function slideTo(index) {\n\t slide(index);\n\t }\n\t\n\t /**\n\t * public\n\t * returnIndex function: called on clickhandler\n\t */\n\t function returnIndex() {\n\t return index - options.infinite || 0;\n\t }\n\t\n\t /**\n\t * public\n\t * prev function: called on clickhandler\n\t */\n\t function prev() {\n\t slide(false, false);\n\t }\n\t\n\t /**\n\t * public\n\t * next function: called on clickhandler\n\t */\n\t function next() {\n\t slide(false, true);\n\t }\n\t\n\t /**\n\t * public\n\t * destroy function: called to gracefully destroy the lory instance\n\t */\n\t function destroy() {\n\t dispatchSliderEvent('before', 'destroy');\n\t\n\t // remove event listeners\n\t frame.removeEventListener(prefixes.transitionEnd, onTransitionEnd);\n\t frame.removeEventListener('touchstart', onTouchstart);\n\t frame.removeEventListener('touchmove', onTouchmove);\n\t frame.removeEventListener('touchend', onTouchend);\n\t frame.removeEventListener('mousemove', onTouchmove);\n\t frame.removeEventListener('mousedown', onTouchstart);\n\t frame.removeEventListener('mouseup', onTouchend);\n\t frame.removeEventListener('mouseleave', onTouchend);\n\t frame.removeEventListener('click', onClick);\n\t\n\t options.window.removeEventListener('resize', onResize);\n\t\n\t if (prevCtrl) {\n\t prevCtrl.removeEventListener('click', prev);\n\t }\n\t\n\t if (nextCtrl) {\n\t nextCtrl.removeEventListener('click', next);\n\t }\n\t\n\t // remove cloned slides if infinite is set\n\t if (options.infinite) {\n\t Array.apply(null, Array(options.infinite)).forEach(function () {\n\t slideContainer.removeChild(slideContainer.firstChild);\n\t slideContainer.removeChild(slideContainer.lastChild);\n\t });\n\t }\n\t\n\t dispatchSliderEvent('after', 'destroy');\n\t }\n\t\n\t // event handling\n\t\n\t var touchOffset = void 0;\n\t var delta = void 0;\n\t var isScrolling = void 0;\n\t\n\t function onTransitionEnd() {\n\t if (transitionEndCallback) {\n\t transitionEndCallback();\n\t\n\t transitionEndCallback = undefined;\n\t }\n\t }\n\t\n\t function onTouchstart(event) {\n\t var _options6 = options,\n\t enableMouseEvents = _options6.enableMouseEvents;\n\t\n\t var touches = event.touches ? event.touches[0] : event;\n\t\n\t if (enableMouseEvents) {\n\t frame.addEventListener('mousemove', onTouchmove);\n\t frame.addEventListener('mouseup', onTouchend);\n\t frame.addEventListener('mouseleave', onTouchend);\n\t }\n\t\n\t frame.addEventListener('touchmove', onTouchmove);\n\t frame.addEventListener('touchend', onTouchend);\n\t\n\t var pageX = touches.pageX,\n\t pageY = touches.pageY;\n\t\n\t\n\t touchOffset = {\n\t x: pageX,\n\t y: pageY,\n\t time: Date.now()\n\t };\n\t\n\t isScrolling = undefined;\n\t\n\t delta = {};\n\t\n\t dispatchSliderEvent('on', 'touchstart', {\n\t event: event\n\t });\n\t }\n\t\n\t function onTouchmove(event) {\n\t var touches = event.touches ? event.touches[0] : event;\n\t var pageX = touches.pageX,\n\t pageY = touches.pageY;\n\t\n\t\n\t delta = {\n\t x: pageX - touchOffset.x,\n\t y: pageY - touchOffset.y\n\t };\n\t\n\t if (typeof isScrolling === 'undefined') {\n\t isScrolling = !!(isScrolling || Math.abs(delta.x) < Math.abs(delta.y));\n\t }\n\t\n\t if (!isScrolling && touchOffset) {\n\t event.preventDefault();\n\t translate(position.x + delta.x, 0, null);\n\t }\n\t\n\t // may be\n\t dispatchSliderEvent('on', 'touchmove', {\n\t event: event\n\t });\n\t }\n\t\n\t function onTouchend(event) {\n\t /**\n\t * time between touchstart and touchend in milliseconds\n\t * @duration {number}\n\t */\n\t var duration = touchOffset ? Date.now() - touchOffset.time : undefined;\n\t\n\t /**\n\t * is valid if:\n\t *\n\t * -> swipe attempt time is over 300 ms\n\t * and\n\t * -> swipe distance is greater than 25px\n\t * or\n\t * -> swipe distance is more then a third of the swipe area\n\t *\n\t * @isValidSlide {Boolean}\n\t */\n\t var isValid = Number(duration) < 300 && Math.abs(delta.x) > 25 || Math.abs(delta.x) > frameWidth / 3;\n\t\n\t /**\n\t * is out of bounds if:\n\t *\n\t * -> index is 0 and delta x is greater than 0\n\t * or\n\t * -> index is the last slide and delta is smaller than 0\n\t *\n\t * @isOutOfBounds {Boolean}\n\t */\n\t var isOutOfBounds = !index && delta.x > 0 || index === slides.length - 1 && delta.x < 0;\n\t\n\t var direction = delta.x < 0;\n\t\n\t if (!isScrolling) {\n\t if (isValid && !isOutOfBounds) {\n\t slide(false, direction);\n\t } else {\n\t translate(position.x, options.snapBackSpeed);\n\t }\n\t }\n\t\n\t touchOffset = undefined;\n\t\n\t /**\n\t * remove eventlisteners after swipe attempt\n\t */\n\t frame.removeEventListener('touchmove', onTouchmove);\n\t frame.removeEventListener('touchend', onTouchend);\n\t frame.removeEventListener('mousemove', onTouchmove);\n\t frame.removeEventListener('mouseup', onTouchend);\n\t frame.removeEventListener('mouseleave', onTouchend);\n\t\n\t dispatchSliderEvent('on', 'touchend', {\n\t event: event\n\t });\n\t }\n\t\n\t function onClick(event) {\n\t if (delta.x) {\n\t event.preventDefault();\n\t }\n\t }\n\t\n\t function onResize(event) {\n\t reset();\n\t\n\t dispatchSliderEvent('on', 'resize', {\n\t event: event\n\t });\n\t }\n\t\n\t // trigger initial setup\n\t setup();\n\t\n\t // expose public api\n\t return {\n\t setup: setup,\n\t reset: reset,\n\t slideTo: slideTo,\n\t returnIndex: returnIndex,\n\t prev: prev,\n\t next: next,\n\t destroy: destroy\n\t };\n\t}\n\n/***/ },\n/* 2 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = detectPrefixes;\n\t/**\n\t * Detecting prefixes for saving time and bytes\n\t */\n\tfunction detectPrefixes() {\n\t var transform = void 0;\n\t var transition = void 0;\n\t var transitionEnd = void 0;\n\t var hasTranslate3d = void 0;\n\t\n\t (function () {\n\t var el = document.createElement('_');\n\t var style = el.style;\n\t\n\t var prop = void 0;\n\t\n\t if (style[prop = 'webkitTransition'] === '') {\n\t transitionEnd = 'webkitTransitionEnd';\n\t transition = prop;\n\t }\n\t\n\t if (style[prop = 'transition'] === '') {\n\t transitionEnd = 'transitionend';\n\t transition = prop;\n\t }\n\t\n\t if (style[prop = 'webkitTransform'] === '') {\n\t transform = prop;\n\t }\n\t\n\t if (style[prop = 'msTransform'] === '') {\n\t transform = prop;\n\t }\n\t\n\t if (style[prop = 'transform'] === '') {\n\t transform = prop;\n\t }\n\t\n\t document.body.insertBefore(el, null);\n\t style[transform] = 'translate3d(0, 0, 0)';\n\t hasTranslate3d = !!global.getComputedStyle(el).getPropertyValue(transform);\n\t document.body.removeChild(el);\n\t })();\n\t\n\t return {\n\t transform: transform,\n\t transition: transition,\n\t transitionEnd: transitionEnd,\n\t hasTranslate3d: hasTranslate3d\n\t };\n\t}\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = dispatchEvent;\n\t\n\tvar _customEvent = __webpack_require__(4);\n\t\n\tvar _customEvent2 = _interopRequireDefault(_customEvent);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t/**\n\t * dispatch custom events\n\t *\n\t * @param {element} el slideshow element\n\t * @param {string} type custom event name\n\t * @param {object} detail custom detail information\n\t */\n\tfunction dispatchEvent(target, type, detail) {\n\t var event = new _customEvent2.default(type, {\n\t bubbles: true,\n\t cancelable: true,\n\t detail: detail\n\t });\n\t\n\t target.dispatchEvent(event);\n\t}\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/* WEBPACK VAR INJECTION */(function(global) {\n\tvar NativeCustomEvent = global.CustomEvent;\n\t\n\tfunction useNative () {\n\t try {\n\t var p = new NativeCustomEvent('cat', { detail: { foo: 'bar' } });\n\t return 'cat' === p.type && 'bar' === p.detail.foo;\n\t } catch (e) {\n\t }\n\t return false;\n\t}\n\t\n\t/**\n\t * Cross-browser `CustomEvent` constructor.\n\t *\n\t * https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.CustomEvent\n\t *\n\t * @public\n\t */\n\t\n\tmodule.exports = useNative() ? NativeCustomEvent :\n\t\n\t// IE >= 9\n\t'undefined' !== typeof document && 'function' === typeof document.createEvent ? function CustomEvent (type, params) {\n\t var e = document.createEvent('CustomEvent');\n\t if (params) {\n\t e.initCustomEvent(type, params.bubbles, params.cancelable, params.detail);\n\t } else {\n\t e.initCustomEvent(type, false, false, void 0);\n\t }\n\t return e;\n\t} :\n\t\n\t// IE <= 8\n\tfunction CustomEvent (type, params) {\n\t var e = document.createEventObject();\n\t e.type = type;\n\t if (params) {\n\t e.bubbles = Boolean(params.bubbles);\n\t e.cancelable = Boolean(params.cancelable);\n\t e.detail = params.detail;\n\t } else {\n\t e.bubbles = false;\n\t e.cancelable = false;\n\t e.detail = void 0;\n\t }\n\t return e;\n\t}\n\t\n\t/* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))\n\n/***/ },\n/* 5 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = {\n\t /**\n\t * slides scrolled at once\n\t * @slidesToScroll {Number}\n\t */\n\t slidesToScroll: 1,\n\t\n\t /**\n\t * time in milliseconds for the animation of a valid slide attempt\n\t * @slideSpeed {Number}\n\t */\n\t slideSpeed: 300,\n\t\n\t /**\n\t * time in milliseconds for the animation of the rewind after the last slide\n\t * @rewindSpeed {Number}\n\t */\n\t rewindSpeed: 600,\n\t\n\t /**\n\t * time for the snapBack of the slider if the slide attempt was not valid\n\t * @snapBackSpeed {Number}\n\t */\n\t snapBackSpeed: 200,\n\t\n\t /**\n\t * Basic easing functions: https://developer.mozilla.org/de/docs/Web/CSS/transition-timing-function\n\t * cubic bezier easing functions: http://easings.net/de\n\t * @ease {String}\n\t */\n\t ease: 'ease',\n\t\n\t /**\n\t * if slider reached the last slide, with next click the slider goes back to the startindex.\n\t * use infinite or rewind, not both\n\t * @rewind {Boolean}\n\t */\n\t rewind: false,\n\t\n\t /**\n\t * number of visible slides or false\n\t * use infinite or rewind, not both\n\t * @infinite {number}\n\t */\n\t infinite: false,\n\t\n\t /**\n\t * class name for slider frame\n\t * @classNameFrame {string}\n\t */\n\t classNameFrame: 'js_frame',\n\t\n\t /**\n\t * class name for slides container\n\t * @classNameSlideContainer {string}\n\t */\n\t classNameSlideContainer: 'js_slides',\n\t\n\t /**\n\t * class name for slider prev control\n\t * @classNamePrevCtrl {string}\n\t */\n\t classNamePrevCtrl: 'js_prev',\n\t\n\t /**\n\t * class name for slider next control\n\t * @classNameNextCtrl {string}\n\t */\n\t classNameNextCtrl: 'js_next',\n\t\n\t /**\n\t * class name for current active slide\n\t * if emptyString then no class is set\n\t * @classNameActiveSlide {string}\n\t */\n\t classNameActiveSlide: 'active',\n\t\n\t /**\n\t * enables mouse events for swiping on desktop devices\n\t * @enableMouseEvents {boolean}\n\t */\n\t enableMouseEvents: false,\n\t\n\t /**\n\t * window instance\n\t * @window {object}\n\t */\n\t window: window,\n\t\n\t /**\n\t * If false, slides lory to the first slide on window resize.\n\t * @rewindOnResize {boolean}\n\t */\n\t rewindOnResize: true\n\t};\n\n/***/ }\n/******/ ])\n});\n;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/lory.js/dist/lory.js\n// module id = 13\n// module chunks = 0","export class AriaToggling {\n showClass: string = 'show-menu';\n mNav: string = '#mNav';\n constructor(public links) {\n //Keyboard Navigation\n if (window.innerWidth > 1025 && !document.getElementsByTagName('html')[0].classList.contains('mod-touchevents')) {\n if (window[\"element\"] && !Element.prototype[\"closest\"]) {\n Element.prototype[\"closest\"] =\n function (s) {\n var matches = (this.document || this.ownerdocument).queryselectorall(s),\n i,\n el = this;\n do {\n i = matches.length;\n while (--i >= 0 && matches.item(i) !== el) { };\n } while ((i < 0) && (el = el.parentelement));\n return el;\n };\n }\n links.forEach((link) => {\n let linkParent = link.parentNode;\n link.addEventListener('focus', (e) => {\n this.focusOn(e,link,linkParent);\n });\n link.addEventListener('blur', (e) => {\n this.blurOut(e, linkParent);\n });\n });\n }\n //Tablet landscape view to allow users to tap a parent link to see the children.\n if (window.innerWidth <= 1600 && window.innerWidth > 767 && document.getElementsByTagName('html')[0].classList.contains('mod-touchevents')) {\n //Click outside of the header\n this.outSideClicks();\n links.forEach((link) => { \n let linkParent = link.parentNode;\n link.addEventListener('click', (e) => {\n if (!linkParent.classList.contains(this.showClass)) {\n e.preventDefault();\n if (document.querySelector('.'+this.showClass) !== null) {\n document.querySelector('.' + this.showClass).classList.remove(this.showClass);\n }\n linkParent.classList.add(this.showClass);\n }\n });\n });\n }\n }\n outSideClicks() {\n let mNav = document.querySelector(this.mNav);\n if (mNav) {\n // For clicks inside the element\n document.querySelector(this.mNav).addEventListener('click', (e) => {\n this.checkClick(e);\n });\n // For clicks elsewhere on the page\n document.addEventListener('click', () => {\n //close stuff\n if (document.querySelector('.' + this.showClass) !== null) {\n document.querySelector('.' + this.showClass).classList.remove(this.showClass);\n }\n });\n // For clicks elsewhere on the page\n document.addEventListener('touchstart', () => {\n //close stuff\n if (document.querySelector('.' + this.showClass) !== null) {\n document.querySelector('.' + this.showClass).classList.remove(this.showClass);\n }\n });\n }\n }\n checkClick(e) {\n // Make sure the event doesn't bubble from your element\n if (e) { e.stopPropagation(); }\n else { window.event.cancelBubble = true; }\n }\n focusOn(e,link,linkParent) {\n setTimeout(() => {\n this.toggleOff();\n if (link.classList.contains('has-sub-js') && !linkParent.classList.contains(this.showClass)) {\n this.toggleOn(linkParent);\n }\n e.stopPropagation();\n var viewableLinks = Array.prototype.slice.call(linkParent.querySelectorAll('[aria-hidden=\"false\"] a'));\n if (viewableLinks.length > 0) {\n viewableLinks.forEach((viewableLink) => {\n viewableLink.addEventListener('blur', (e) => {\n this.blurOut(e, linkParent);\n });\n });\n }\n }, 10);\n }\n toggleOn(linkParent) {\n linkParent.classList.add(this.showClass);\n linkParent.querySelector('[aria-hidden=\"true\"]').setAttribute('aria-hidden', 'false');\n }\n blurOut(e, linkParent) {\n setTimeout(() => {\n if (document.activeElement[\"closest\"]('[aria-haspopup=\"true\"]') !== linkParent || document.activeElement[\"closest\"]('[aria-haspopup=\"true\"]') === null) {\n this.toggleOff();\n }\n e.stopPropagation();\n }, 10);\n }\n toggleOff() {\n var items = Array.prototype.slice.call(document.querySelectorAll('.mnav-list-item.show-menu'));\n if (items.length > 0) {\n items.forEach(function (item) {\n item.classList.remove('show-menu');\n item.querySelector('[aria-hidden=\"false\"]').setAttribute('aria-hidden', 'true');\n });\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/aria-toggling.ts","export class MobileMenu {\n constructor(public bodyElement:any) {\n let mobileTrigger = document.getElementById('mobileTrigger');\n let mobileMenu = document.getElementById('menuBar');\n let mobileSubnavTriggers = [].slice.call(document.getElementsByClassName('mnav-list-submenu-trigger-js'));\n\n function closeAllSubs() {\n let allOpenSubs = [].slice.call(document.querySelectorAll('.mnav-list-submenu.open'))\n\n for (var i = 0, l = allOpenSubs.length; i < l; i++) {\n allOpenSubs[i].setAttribute('aria-hidden', 'true');\n allOpenSubs[i].classList.remove('open');\n };\n\n mobileSubnavTriggers.forEach((mobileSubnavTrigger) => {\n mobileSubnavTrigger.classList.remove('open');\n });\n };\n\n if (mobileTrigger) {\n mobileTrigger.addEventListener('click', (e) => {\n e.preventDefault();\n closeAllSubs();\n mobileMenu.classList.toggle('open');\n mobileTrigger.classList.toggle('open');\n this.bodyElement.classList.toggle('nav-open');\n });\n\n mobileSubnavTriggers.forEach((mobileSubnavTrigger) => {\n mobileSubnavTrigger.addEventListener('click', function (e) {\n e.preventDefault();\n var subnavID = this.getAttribute('data-trigger-id');\n var subnavToOpen = document.querySelector('[data-id=\"' + subnavID + '\"]');\n\n if (subnavToOpen.getAttribute('aria-hidden') === \"true\") {\n closeAllSubs();\n this.classList.add('open');\n subnavToOpen.classList.add('open');\n subnavToOpen.setAttribute('aria-hidden', 'false');\n } else {\n this.classList.remove('open');\n subnavToOpen.classList.remove('open');\n subnavToOpen.setAttribute('aria-hidden', 'true');\n }\n });\n });\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/mobile-menu.ts","export class HeaderSearch {\n constructor(public bodyElement: any) {\n let headerSearchTrigger = document.getElementById('searchTrigger');\n let headerSearch = document.getElementById('headerSearch');\n let searchActive = false;\n \n let bodySearchHandler = function() {\n if (searchActive === true) {\n showSearch(false);\n }\n }\n\n function showSearch(isVisible) {\n if (isVisible) {\n headerSearch.classList.add('active');\n headerSearchTrigger.parentElement.classList.add('show-menu');\n searchActive = true;\n bodyElement.addEventListener('click', bodySearchHandler);\n } else {\n headerSearch.classList.remove('active');\n headerSearchTrigger.parentElement.classList.remove('show-menu');\n searchActive = false;\n bodyElement.removeEventListener('click', bodySearchHandler);\n };\n };\n\n if (headerSearchTrigger) {\n headerSearchTrigger.addEventListener('click', (e) => {\n e.preventDefault();\n e.stopPropagation();\n \n if (searchActive === true) {\n showSearch(false);\n } else {\n showSearch(true);\n };\n });\n\n headerSearch.addEventListener('click', (e) => {\n e.stopPropagation();\n });\n }\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/header-search.ts","function nodeListToArray(nodes: NodeList): Array {\n return [].slice.call(nodes);\n}\n\nexport { nodeListToArray };\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/nodelist-to-array.ts","import 'element-closest';\n\nlet convertToArray = function(nodeList) {\n return [].slice.call(nodeList);\n};\n\nlet accordionLists: Array = convertToArray(document.querySelectorAll('[data-accordion-list]'));\nlet resizeTimer;\nconst openClass = 'libaccordion-open-js';\nconst openClassCss = 'libaccordion-open';\nconst standardsAccordion = 'standards-accordion-js';\n\nclass AccordionsOptions {\n singleAccordion: boolean = false;\n}\n\nexport class Accordions {\n options: AccordionsOptions = new AccordionsOptions();\n\n constructor(private optArg?: any) {\n window.addEventListener('resize', () => {\n requestAnimationFrame(this.triggerSetAccordionHeights.bind(this));\n });\n accordionLists.forEach(accordionList => {\n accordionList.addEventListener('click', this.accordionClick.bind(this), false);\n });\n\n // Check for Options\n if (this.optArg === undefined) this.optArg = new AccordionsOptions();\n else {\n this.options.singleAccordion =\n this.optArg.singleAccordion === undefined ? this.options.singleAccordion : this.optArg.singleAccordion;\n }\n\n // Open first child item of standards accordion\n // Only one per curriculum landing page\n let standardsAccordion = document.querySelector('.standards-accordion') as HTMLElement;\n\n if (standardsAccordion) {\n this.openStandardsAccordion(standardsAccordion);\n }\n }\n\n setAccordionHeights() {\n setTimeout(function() {\n accordionLists.forEach(accordionList => {\n let openAccordions = accordionList.querySelectorAll('.' + openClass);\n if (openAccordions.length > 0) {\n openAccordions.forEach(openAccordion => {\n let accordionToReCalc = openAccordion.querySelector('[data-accordion-content-id]');\n let accordionRecalcedHeight = accordionToReCalc.getBoundingClientRect().height;\n\n openAccordion.style.height = accordionRecalcedHeight + 'px';\n });\n }\n });\n }, 100);\n }\n\n accordionClick(e) {\n e.preventDefault();\n\n if (e.target !== e.currentTarget) {\n let accordionToOpenId = e.target.getAttribute('data-accordion-trigger');\n\n if (accordionToOpenId === null) {\n if (e.target.closest('.libaccordion-trigger')) {\n accordionToOpenId = e.target.closest('.libaccordion-trigger').getAttribute('data-accordion-trigger');\n } else {\n return;\n }\n }\n\n let accordionToToggle = document.querySelector('[data-accordion-id=\"' + accordionToOpenId + '\"]');\n let accordionContentHeight = document\n .querySelector('[data-accordion-content-id=\"' + accordionToOpenId + '\"]')\n .getBoundingClientRect().height;\n\n if (this.options.singleAccordion) {\n this.closeOpenAccordions(accordionToToggle);\n }\n\n if (accordionToToggle.classList.contains(openClass)) {\n this.closeAccordion(accordionToToggle);\n } else {\n this.openAccordion(accordionToToggle, accordionContentHeight);\n }\n this.setAccordionHeights();\n }\n\n e.stopPropagation();\n }\n\n openAccordion(accordionToOpen, accordionToOpenHeight) {\n if (accordionToOpen.parentElement.classList.contains('libaccordion-show-multiple-false')) {\n let parentContainer = accordionToOpen.parentElement.parentElement;\n let collapsableItems = Array.prototype.slice.call(parentContainer.querySelectorAll('.libaccordion-show-multiple-false'));\n collapsableItems.forEach(function(item) {\n if (item.classList.contains(openClassCss)) {\n item.classList.remove(openClassCss);\n item.querySelector('.libaccordion-trigger').setAttribute('aria-expanded', 'false');\n }\n if (item.querySelector('.libaccordion-content').classList.contains('libaccordion-open-js')) {\n let itemTabPanel = item.querySelector('.libaccordion-content');\n\n itemTabPanel.classList.remove('libaccordion-open-js');\n itemTabPanel.setAttribute('style', 'height: 0px;');\n }\n });\n }\n\n accordionToOpen.classList.add(openClass);\n accordionToOpen.setAttribute('style', 'height:' + accordionToOpenHeight + 'px');\n // accordionToOpen.setAttribute('aria-hidden', 'false');\n accordionToOpen.parentElement.classList.add(openClassCss);\n accordionToOpen.parentElement.querySelector('.libaccordion-trigger').setAttribute('aria-expanded', 'true');\n }\n\n closeAccordion(accordionToClose) {\n accordionToClose.classList.remove(openClass);\n accordionToClose.setAttribute('style', 'height: 0px');\n // accordionToClose.setAttribute('aria-hidden', 'true');\n accordionToClose.parentElement.classList.remove(openClassCss);\n accordionToClose.parentElement.querySelector('.libaccordion-trigger').setAttribute('aria-expanded', 'false');\n }\n\n triggerSetAccordionHeights() {\n clearTimeout(resizeTimer);\n resizeTimer = setTimeout(() => {\n this.setAccordionHeights();\n }, 100);\n }\n\n closeOpenAccordions(exception) {\n let openAccordions = convertToArray(document.querySelectorAll('.libaccordion-open-js'));\n openAccordions.forEach(openAccordion => {\n if (openAccordion !== exception) {\n this.closeAccordion(openAccordion);\n }\n });\n }\n\n openStandardsAccordion(standardsAccordion: HTMLElement) {\n let standardsAccordionChild = standardsAccordion.querySelector('.libaccordion').firstElementChild.querySelector('.libaccordion-trigger');\n let accordionToOpenId = standardsAccordionChild.getAttribute('data-accordion-trigger');\n let accordionToToggle = document.querySelector('[data-accordion-id=\"' + accordionToOpenId + '\"]');\n let accordionContentHeight = document\n .querySelector('[data-accordion-content-id=\"' + accordionToOpenId + '\"]')\n .getBoundingClientRect().height;\n\n this.openAccordion(accordionToToggle, accordionContentHeight);\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/accordion.ts","var gumshoe = require('../vendor/gumshoe');\nimport 'element-closest';\nimport * as Stickyfill from 'stickyfilljs';\n\nexport class ScrollspyNav {\n constructor() {\n\n if (document.querySelector('.scrollspy-nav')) {\n let navContainer = document.querySelectorAll('.scrollspy-nav')[0];\n\n if (navContainer.querySelector('.top-trigger')) {\n let jumpToTop = navContainer.querySelectorAll('.top-trigger')[0];\n\n jumpToTop.addEventListener('click', function (e) {\n e.preventDefault();\n\n if (history.pushState) {\n history.pushState(null, null, '#top');\n } else {\n location.hash = '#top';\n }\n\n window.scrollTo(0, 0);\n });\n };\n\n // Find all sections to add to scrollspy nav list\n const jumpSections = Array.prototype.slice.call(document.querySelectorAll('[data-scrollspy=\"true\"]'));\n let jumpList = '';\n\n // Create list item by looping through each section\n jumpSections.forEach(section => {\n let sectionTitle = section.innerHTML;\n let sectionContainer = section.closest('.layout-section');\n let sectionTarget = sectionContainer.id;\n\n jumpList += `
  • ${sectionTitle}
  • `;\n });\n\n // Add string of list items to scrollspy nav\n const jumpListContainer = navContainer.querySelectorAll('nav ul')[0];\n jumpListContainer.innerHTML = jumpList;\n\n // Handler when the DOM is fully loaded\n document.addEventListener(\"DOMContentLoaded\", function () {\n gumshoe.init({\n selector: '.scrollspy-nav a', // Default link selector (must use a valid CSS selector)\n //selectorHeader: '#siteHeader', // Fixed header selector (must use a valid CSS selector)\n container: window, // The element to spy on scrolling in (must be a valid DOM Node)\n offset: 200, // Distance in pixels to offset calculations\n activeClass: 'active', // Class to apply to active navigation link and its parent list item\n scrollDelay: false // Wait until scrolling has stopped before updating the navigation\n });\n });\n\n // Setup sticky polyfill to sticky container element\n const stickyRail = navContainer.parentElement;\n Stickyfill.add(stickyRail);\n\n const footer = document.querySelector(\".site-container > .footer\");\n const siteContainer = document.querySelector('.site-container');\n const viewHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n let lastScrollTop = 0;\n let navOffset = stickyRail.getBoundingClientRect();\n\n if (window.matchMedia(\"(max-width: 64rem)\").matches) {\n let stickyMobileTrigger = stickyRail.querySelector('.rail-nav-mobile-trigger');\n let stickyMobileNav = stickyRail.querySelector('.rail-nav');\n let stickyMobileNavContent = stickyMobileNav.querySelector('ul');\n \n stickyMobileTrigger.addEventListener('click', function(e) {\n e.stopPropagation();\n //stickyMobileNavContent.classList.add('visible');\n stickyMobileNavContent.classList.add('visible');\n });\n\n // For clicks elsewhere on the page\n document.addEventListener('click', function () {\n //close stuff\n if (stickyMobileNavContent.classList.contains('visible')) {\n stickyMobileNavContent.classList.remove('visible')\n }\n });\n\n // For clicks elsewhere on the page\n document.addEventListener('touchstart', function () {\n //close stuff\n if (stickyMobileNavContent.classList.contains('visible')) {\n stickyMobileNavContent.classList.remove('visible')\n }\n });\n\n \n window.addEventListener(\"scroll\", () =>\n window.requestAnimationFrame(() => {\n var currentPos = window.pageYOffset || document.documentElement.scrollTop; // Credits: \"https://github.com/qeremy/so/blob/master/so.dom.js#L426\"\n\n if (currentPos >= 200 && !stickyMobileNav.classList.contains('visible')) {\n stickyMobileNav.classList.add('visible');\n } else if (currentPos < 200 && stickyMobileNav.classList.contains('visible')) {\n stickyMobileNav.classList.remove('visible');\n }\n })\n );\n };\n\n };\n };\n};\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/scrollspy-nav.ts","/*!\n * gumshoe v3.5.0: A simple, framework-agnostic scrollspy script.\n * (c) 2017 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory(root));\n } else if (typeof exports === 'object') {\n module.exports = factory(root);\n } else {\n root.gumshoe = factory(root);\n }\n})(typeof global !== 'undefined' ? global : this.window || this.global, (function (root) {\n\n 'use strict';\n\n //\n // Variables\n //\n\n var gumshoe = {}; // Object for public APIs\n var supports = 'querySelector' in document && 'addEventListener' in root && 'classList' in document.createElement('_'); // Feature test\n var navs = []; // Array for nav elements\n var settings, eventTimeout, docHeight, header, headerHeight, currentNav, scrollEventDelay;\n\n // Default settings\n var defaults = {\n selector: '[data-gumshoe] a',\n selectorHeader: '[data-gumshoe-header]',\n container: root,\n offset: 0,\n activeClass: 'active',\n scrollDelay: false,\n callback: function () { }\n };\n\n\n //\n // Methods\n //\n\n\t/**\n\t * A simple forEach() implementation for Arrays, Objects and NodeLists.\n\t * @private\n\t * @author Todd Motto\n\t * @link https://github.com/toddmotto/foreach\n\t * @param {Array|Object|NodeList} collection Collection of items to iterate\n\t * @param {Function} callback Callback function for each iteration\n\t * @param {Array|Object|NodeList} scope Object/NodeList/Array that forEach is iterating over (aka `this`)\n\t */\n var forEach = function (collection, callback, scope) {\n if (Object.prototype.toString.call(collection) === '[object Object]') {\n for (var prop in collection) {\n if (Object.prototype.hasOwnProperty.call(collection, prop)) {\n callback.call(scope, collection[prop], prop, collection);\n }\n }\n } else {\n for (var i = 0, len = collection.length; i < len; i++) {\n callback.call(scope, collection[i], i, collection);\n }\n }\n };\n\n\t/**\n\t * Merge two or more objects. Returns a new object.\n\t * @private\n\t * @param {Boolean} deep If true, do a deep (or recursive) merge [optional]\n\t * @param {Object} objects The objects to merge together\n\t * @returns {Object} Merged values of defaults and options\n\t */\n var extend = function () {\n\n // Variables\n var extended = {};\n var deep = false;\n var i = 0;\n var length = arguments.length;\n\n // Check if a deep merge\n if (Object.prototype.toString.call(arguments[0]) === '[object Boolean]') {\n deep = arguments[0];\n i++;\n }\n\n // Merge the object into the extended object\n var merge = function (obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n // If deep merge and property is an object, merge properties\n if (deep && Object.prototype.toString.call(obj[prop]) === '[object Object]') {\n extended[prop] = extend(true, extended[prop], obj[prop]);\n } else {\n extended[prop] = obj[prop];\n }\n }\n }\n };\n\n // Loop through each object and conduct a merge\n for (; i < length; i++) {\n var obj = arguments[i];\n merge(obj);\n }\n\n return extended;\n\n };\n\n\t/**\n\t * Get the height of an element.\n\t * @private\n\t * @param {Node} elem The element to get the height of\n\t * @return {Number} The element's height in pixels\n\t */\n var getHeight = function (elem) {\n return Math.max(elem.scrollHeight, elem.offsetHeight, elem.clientHeight);\n };\n\n\t/**\n\t * Get the document element's height\n\t * @private\n\t * @returns {Number}\n\t */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight, document.documentElement.scrollHeight,\n document.body.offsetHeight, document.documentElement.offsetHeight,\n document.body.clientHeight, document.documentElement.clientHeight\n );\n };\n\n\t/**\n\t * Get an element's distance from the top of the Document.\n\t * @private\n\t * @param {Node} elem The element\n\t * @return {Number} Distance from the top in pixels\n\t */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n do {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n } while (elem);\n } else {\n location = elem.offsetTop;\n }\n location = location - headerHeight - settings.offset;\n return location >= 0 ? location : 0;\n };\n\n\t/**\n\t * Determine if an element is in the viewport\n\t * @param {Node} elem The element\n\t * @return {Boolean} Returns true if element is in the viewport\n\t */\n var isInViewport = function (elem) {\n var distance = elem.getBoundingClientRect();\n return (\n distance.top >= 0 &&\n distance.left >= 0 &&\n distance.bottom <= (root.innerHeight || document.documentElement.clientHeight) &&\n distance.right <= (root.innerWidth || document.documentElement.clientWidth)\n );\n };\n\n\t/**\n\t * Arrange nagivation elements from furthest from the top to closest\n\t * @private\n\t */\n var sortNavs = function () {\n navs.sort((function (a, b) {\n if (a.distance > b.distance) {\n return -1;\n }\n if (a.distance < b.distance) {\n return 1;\n }\n return 0;\n }));\n };\n\n\t/**\n\t * Calculate the distance of elements from the top of the document\n\t * @public\n\t */\n gumshoe.setDistances = function () {\n\n // Calculate distances\n docHeight = getDocumentHeight(); // The document\n headerHeight = header ? (getHeight(header) + getOffsetTop(header)) : 0; // The fixed header\n forEach(navs, (function (nav) {\n nav.distance = getOffsetTop(nav.target); // Each navigation target\n }));\n\n // When done, organization navigation elements\n sortNavs();\n\n };\n\n\t/**\n\t * Get all navigation elements and store them in an array\n\t * @private\n\t */\n var getNavs = function () {\n\n // Get all navigation links\n var navLinks = document.querySelectorAll(settings.selector);\n\n // For each link, create an object of attributes and push to an array\n forEach(navLinks, (function (nav) {\n if (!nav.hash) return;\n var target = document.querySelector(nav.hash);\n if (!target) return;\n navs.push({\n nav: nav,\n target: target,\n parent: nav.parentNode.tagName.toLowerCase() === 'li' ? nav.parentNode : null,\n distance: 0\n });\n }));\n\n };\n\n\n\t/**\n\t * Remove the activation class from the currently active navigation element\n\t * @private\n\t */\n var deactivateCurrentNav = function () {\n if (currentNav) {\n currentNav.nav.classList.remove(settings.activeClass);\n if (currentNav.parent) {\n currentNav.parent.classList.remove(settings.activeClass);\n }\n }\n };\n\n\t/**\n\t * Add the activation class to the currently active navigation element\n\t * @private\n\t * @param {Node} nav The currently active nav\n\t */\n var activateNav = function (nav) {\n\n // If a current Nav is set, deactivate it\n deactivateCurrentNav();\n\n // Activate the current target's navigation element\n nav.nav.classList.add(settings.activeClass);\n if (nav.parent) {\n nav.parent.classList.add(settings.activeClass);\n }\n\n settings.callback(nav); // Callback after methods are run\n\n // Set new currentNav\n currentNav = {\n nav: nav.nav,\n parent: nav.parent\n };\n\n };\n\n\t/**\n\t * Determine which navigation element is currently active and run activation method\n\t * @public\n\t * @returns {Object} The current nav data.\n\t */\n gumshoe.getCurrentNav = function () {\n\n // Get current position from top of the document\n var position = root.pageYOffset;\n\n // If at the bottom of the page and last section is in the viewport, activate the last nav\n if ((root.innerHeight + position) >= docHeight && isInViewport(navs[0].target)) {\n activateNav(navs[0]);\n return navs[0];\n }\n\n // Otherwise, loop through each nav until you find the active one\n for (var i = 0, len = navs.length; i < len; i++) {\n var nav = navs[i];\n if (nav.distance <= position) {\n activateNav(nav);\n return nav;\n }\n }\n\n // If no active nav is found, deactivate the current nav\n deactivateCurrentNav();\n settings.callback();\n\n };\n\n\t/**\n\t * If nav element has active class on load, set it as currently active navigation\n\t * @private\n\t */\n var setInitCurrentNav = function () {\n forEach(navs, (function (nav) {\n if (nav.nav.classList.contains(settings.activeClass)) {\n currentNav = {\n nav: nav.nav,\n parent: nav.parent\n };\n }\n }));\n };\n\n\t/**\n\t * Destroy the current initialization.\n\t * @public\n\t */\n gumshoe.destroy = function () {\n\n // If plugin isn't already initialized, stop\n if (!settings) return;\n\n // Remove event listeners\n settings.container.removeEventListener('resize', eventThrottler, false);\n settings.container.removeEventListener('scroll', eventThrottler, false);\n\n // Reset variables\n navs = [];\n settings = null;\n eventTimeout = null;\n docHeight = null;\n header = null;\n headerHeight = null;\n currentNav = null;\n scrollEventDelay = null;\n\n };\n\n\t/**\n\t * Run functions after scrolling stops\n\t * @param {[type]} event [description]\n\t * @return {[type]} [description]\n\t */\n var scrollStop = function (event) {\n\n // Clear our timeout throughout the scroll\n window.clearTimeout(eventTimeout);\n\n // recalculate distances and then get currently active nav\n eventTimeout = setTimeout((function () {\n gumshoe.setDistances();\n gumshoe.getCurrentNav();\n }), 66);\n\n };\n\n\t/**\n\t * On window scroll and resize, only run events at a rate of 15fps for better performance\n\t * @private\n\t * @param {Function} eventTimeout Timeout function\n\t * @param {Object} settings\n\t */\n var eventThrottler = function (event) {\n if (!eventTimeout) {\n eventTimeout = setTimeout((function () {\n\n eventTimeout = null; // Reset timeout\n\n // If scroll event, get currently active nav\n if (event.type === 'scroll') {\n gumshoe.getCurrentNav();\n }\n\n // If resize event, recalculate distances and then get currently active nav\n if (event.type === 'resize') {\n gumshoe.setDistances();\n gumshoe.getCurrentNav();\n }\n\n }), 66);\n }\n };\n\n\t/**\n\t * Initialize Plugin\n\t * @public\n\t * @param {Object} options User settings\n\t */\n gumshoe.init = function (options) {\n\n // feature test\n if (!supports) return;\n\n // Destroy any existing initializations\n gumshoe.destroy();\n\n // Set variables\n settings = extend(defaults, options || {}); // Merge user options with defaults\n header = document.querySelector(settings.selectorHeader); // Get fixed header\n getNavs(); // Get navigation elements\n\n // If no navigation elements exist, stop running gumshoe\n if (navs.length === 0) return;\n\n // Run init methods\n setInitCurrentNav();\n gumshoe.setDistances();\n gumshoe.getCurrentNav();\n\n // Listen for events\n settings.container.addEventListener('resize', eventThrottler, false);\n if (settings.scrollDelay) {\n settings.container.addEventListener('scroll', scrollStop, false);\n } else {\n settings.container.addEventListener('scroll', eventThrottler, false);\n }\n\n };\n\n\n //\n // Public APIs\n //\n\n return gumshoe;\n\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./Static/javascript/vendor/gumshoe.js\n// module id = 20\n// module chunks = 0","/*!\r\n * Stickyfill – `position: sticky` polyfill\r\n * v. 2.0.3 | https://github.com/wilddeer/stickyfill\r\n * MIT License\r\n */\r\n\r\n;(function(window, document) {\r\n 'use strict';\r\n \r\n /*\r\n * 1. Check if the browser supports `position: sticky` natively or is too old to run the polyfill.\r\n * If either of these is the case set `seppuku` flag. It will be checked later to disable key features\r\n * of the polyfill, but the API will remain functional to avoid breaking things.\r\n */\r\n \r\n var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\r\n \r\n function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\r\n \r\n var seppuku = false;\r\n \r\n // The polyfill cant’t function properly without `getComputedStyle`.\r\n if (!window.getComputedStyle) seppuku = true;\r\n // Dont’t get in a way if the browser supports `position: sticky` natively.\r\n else {\r\n (function () {\r\n var testNode = document.createElement('div');\r\n \r\n if (['', '-webkit-', '-moz-', '-ms-'].some(function (prefix) {\r\n try {\r\n testNode.style.position = prefix + 'sticky';\r\n } catch (e) {}\r\n \r\n return testNode.style.position != '';\r\n })) seppuku = true;\r\n })();\r\n }\r\n \r\n /*\r\n * 2. “Global” vars used across the polyfill\r\n */\r\n \r\n // Check if Shadow Root constructor exists to make further checks simpler\r\n var shadowRootExists = typeof ShadowRoot !== 'undefined';\r\n \r\n // Last saved scroll position\r\n var scroll = {\r\n top: null,\r\n left: null\r\n };\r\n \r\n // Array of created Sticky instances\r\n var stickies = [];\r\n \r\n /*\r\n * 3. Utility functions\r\n */\r\n function extend(targetObj, sourceObject) {\r\n for (var key in sourceObject) {\r\n if (sourceObject.hasOwnProperty(key)) {\r\n targetObj[key] = sourceObject[key];\r\n }\r\n }\r\n }\r\n \r\n function parseNumeric(val) {\r\n return parseFloat(val) || 0;\r\n }\r\n \r\n function getDocOffsetTop(node) {\r\n var docOffsetTop = 0;\r\n \r\n while (node) {\r\n docOffsetTop += node.offsetTop;\r\n node = node.offsetParent;\r\n }\r\n \r\n return docOffsetTop;\r\n }\r\n \r\n /*\r\n * 4. Sticky class\r\n */\r\n \r\n var Sticky = function () {\r\n function Sticky(node) {\r\n _classCallCheck(this, Sticky);\r\n \r\n if (!(node instanceof HTMLElement)) throw new Error('First argument must be HTMLElement');\r\n if (stickies.some(function (sticky) {\r\n return sticky._node === node;\r\n })) throw new Error('Stickyfill is already applied to this node');\r\n \r\n this._node = node;\r\n this._stickyMode = null;\r\n this._active = false;\r\n \r\n stickies.push(this);\r\n \r\n this.refresh();\r\n }\r\n \r\n _createClass(Sticky, [{\r\n key: 'refresh',\r\n value: function refresh() {\r\n if (seppuku || this._removed) return;\r\n if (this._active) this._deactivate();\r\n \r\n var node = this._node;\r\n \r\n /*\r\n * 1. Save node computed props\r\n */\r\n var nodeComputedStyle = getComputedStyle(node);\r\n var nodeComputedProps = {\r\n top: nodeComputedStyle.top,\r\n display: nodeComputedStyle.display,\r\n marginTop: nodeComputedStyle.marginTop,\r\n marginBottom: nodeComputedStyle.marginBottom,\r\n marginLeft: nodeComputedStyle.marginLeft,\r\n marginRight: nodeComputedStyle.marginRight,\r\n cssFloat: nodeComputedStyle.cssFloat\r\n };\r\n \r\n /*\r\n * 2. Check if the node can be activated\r\n */\r\n if (isNaN(parseFloat(nodeComputedProps.top)) || nodeComputedProps.display == 'table-cell' || nodeComputedProps.display == 'none') return;\r\n \r\n this._active = true;\r\n \r\n /*\r\n * 3. Get necessary node parameters\r\n */\r\n var referenceNode = node.parentNode;\r\n var parentNode = shadowRootExists && referenceNode instanceof ShadowRoot ? referenceNode.host : referenceNode;\r\n var nodeWinOffset = node.getBoundingClientRect();\r\n var parentWinOffset = parentNode.getBoundingClientRect();\r\n var parentComputedStyle = getComputedStyle(parentNode);\r\n \r\n this._parent = {\r\n node: parentNode,\r\n styles: {\r\n position: parentNode.style.position\r\n },\r\n offsetHeight: parentNode.offsetHeight\r\n };\r\n this._offsetToWindow = {\r\n left: nodeWinOffset.left,\r\n right: document.documentElement.clientWidth - nodeWinOffset.right\r\n };\r\n this._offsetToParent = {\r\n top: nodeWinOffset.top - parentWinOffset.top - parseNumeric(parentComputedStyle.borderTopWidth),\r\n left: nodeWinOffset.left - parentWinOffset.left - parseNumeric(parentComputedStyle.borderLeftWidth),\r\n right: -nodeWinOffset.right + parentWinOffset.right - parseNumeric(parentComputedStyle.borderRightWidth)\r\n };\r\n this._styles = {\r\n position: node.style.position,\r\n top: node.style.top,\r\n bottom: node.style.bottom,\r\n left: node.style.left,\r\n right: node.style.right,\r\n width: node.style.width,\r\n marginTop: node.style.marginTop,\r\n marginLeft: node.style.marginLeft,\r\n marginRight: node.style.marginRight\r\n };\r\n \r\n var nodeTopValue = parseNumeric(nodeComputedProps.top);\r\n this._limits = {\r\n start: nodeWinOffset.top + window.pageYOffset - nodeTopValue,\r\n end: parentWinOffset.top + window.pageYOffset + parentNode.offsetHeight - parseNumeric(parentComputedStyle.borderBottomWidth) - node.offsetHeight - nodeTopValue - parseNumeric(nodeComputedProps.marginBottom)\r\n };\r\n \r\n /*\r\n * 4. Ensure that the node will be positioned relatively to the parent node\r\n */\r\n var parentPosition = parentComputedStyle.position;\r\n \r\n if (parentPosition != 'absolute' && parentPosition != 'relative') {\r\n parentNode.style.position = 'relative';\r\n }\r\n \r\n /*\r\n * 5. Recalc node position.\r\n * It’s important to do this before clone injection to avoid scrolling bug in Chrome.\r\n */\r\n this._recalcPosition();\r\n \r\n /*\r\n * 6. Create a clone\r\n */\r\n var clone = this._clone = {};\r\n clone.node = document.createElement('div');\r\n \r\n // Apply styles to the clone\r\n extend(clone.node.style, {\r\n width: nodeWinOffset.right - nodeWinOffset.left + 'px',\r\n height: nodeWinOffset.bottom - nodeWinOffset.top + 'px',\r\n marginTop: nodeComputedProps.marginTop,\r\n marginBottom: nodeComputedProps.marginBottom,\r\n marginLeft: nodeComputedProps.marginLeft,\r\n marginRight: nodeComputedProps.marginRight,\r\n cssFloat: nodeComputedProps.cssFloat,\r\n padding: 0,\r\n border: 0,\r\n borderSpacing: 0,\r\n fontSize: '1em',\r\n position: 'static'\r\n });\r\n \r\n referenceNode.insertBefore(clone.node, node);\r\n clone.docOffsetTop = getDocOffsetTop(clone.node);\r\n }\r\n }, {\r\n key: '_recalcPosition',\r\n value: function _recalcPosition() {\r\n if (!this._active || this._removed) return;\r\n \r\n var stickyMode = scroll.top <= this._limits.start ? 'start' : scroll.top >= this._limits.end ? 'end' : 'middle';\r\n \r\n if (this._stickyMode == stickyMode) return;\r\n \r\n switch (stickyMode) {\r\n case 'start':\r\n extend(this._node.style, {\r\n position: 'absolute',\r\n left: this._offsetToParent.left + 'px',\r\n right: this._offsetToParent.right + 'px',\r\n top: this._offsetToParent.top + 'px',\r\n bottom: 'auto',\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginTop: 0\r\n });\r\n break;\r\n \r\n case 'middle':\r\n extend(this._node.style, {\r\n position: 'fixed',\r\n left: this._offsetToWindow.left + 'px',\r\n right: this._offsetToWindow.right + 'px',\r\n top: this._styles.top,\r\n bottom: 'auto',\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0,\r\n marginTop: 0\r\n });\r\n break;\r\n \r\n case 'end':\r\n extend(this._node.style, {\r\n position: 'absolute',\r\n left: this._offsetToParent.left + 'px',\r\n right: this._offsetToParent.right + 'px',\r\n top: 'auto',\r\n bottom: 0,\r\n width: 'auto',\r\n marginLeft: 0,\r\n marginRight: 0\r\n });\r\n break;\r\n }\r\n \r\n this._stickyMode = stickyMode;\r\n }\r\n }, {\r\n key: '_fastCheck',\r\n value: function _fastCheck() {\r\n if (!this._active || this._removed) return;\r\n \r\n if (Math.abs(getDocOffsetTop(this._clone.node) - this._clone.docOffsetTop) > 1 || Math.abs(this._parent.node.offsetHeight - this._parent.offsetHeight) > 1) this.refresh();\r\n }\r\n }, {\r\n key: '_deactivate',\r\n value: function _deactivate() {\r\n var _this = this;\r\n \r\n if (!this._active || this._removed) return;\r\n \r\n this._clone.node.parentNode.removeChild(this._clone.node);\r\n delete this._clone;\r\n \r\n extend(this._node.style, this._styles);\r\n delete this._styles;\r\n \r\n // Check whether element’s parent node is used by other stickies.\r\n // If not, restore parent node’s styles.\r\n if (!stickies.some(function (sticky) {\r\n return sticky !== _this && sticky._parent && sticky._parent.node === _this._parent.node;\r\n })) {\r\n extend(this._parent.node.style, this._parent.styles);\r\n }\r\n delete this._parent;\r\n \r\n this._stickyMode = null;\r\n this._active = false;\r\n \r\n delete this._offsetToWindow;\r\n delete this._offsetToParent;\r\n delete this._limits;\r\n }\r\n }, {\r\n key: 'remove',\r\n value: function remove() {\r\n var _this2 = this;\r\n \r\n this._deactivate();\r\n \r\n stickies.some(function (sticky, index) {\r\n if (sticky._node === _this2._node) {\r\n stickies.splice(index, 1);\r\n return true;\r\n }\r\n });\r\n \r\n this._removed = true;\r\n }\r\n }]);\r\n \r\n return Sticky;\r\n }();\r\n \r\n /*\r\n * 5. Stickyfill API\r\n */\r\n \r\n \r\n var Stickyfill = {\r\n stickies: stickies,\r\n Sticky: Sticky,\r\n \r\n addOne: function addOne(node) {\r\n // Check whether it’s a node\r\n if (!(node instanceof HTMLElement)) {\r\n // Maybe it’s a node list of some sort?\r\n // Take first node from the list then\r\n if (node.length && node[0]) node = node[0];else return;\r\n }\r\n \r\n // Check if Stickyfill is already applied to the node\r\n // and return existing sticky\r\n for (var i = 0; i < stickies.length; i++) {\r\n if (stickies[i]._node === node) return stickies[i];\r\n }\r\n \r\n // Create and return new sticky\r\n return new Sticky(node);\r\n },\r\n add: function add(nodeList) {\r\n // If it’s a node make an array of one node\r\n if (nodeList instanceof HTMLElement) nodeList = [nodeList];\r\n // Check if the argument is an iterable of some sort\r\n if (!nodeList.length) return;\r\n \r\n // Add every element as a sticky and return an array of created Sticky instances\r\n var addedStickies = [];\r\n \r\n var _loop = function _loop(i) {\r\n var node = nodeList[i];\r\n \r\n // If it’s not an HTMLElement – create an empty element to preserve 1-to-1\r\n // correlation with input list\r\n if (!(node instanceof HTMLElement)) {\r\n addedStickies.push(void 0);\r\n return 'continue';\r\n }\r\n \r\n // If Stickyfill is already applied to the node\r\n // add existing sticky\r\n if (stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n addedStickies.push(sticky);\r\n return true;\r\n }\r\n })) return 'continue';\r\n \r\n // Create and add new sticky\r\n addedStickies.push(new Sticky(node));\r\n };\r\n \r\n for (var i = 0; i < nodeList.length; i++) {\r\n var _ret2 = _loop(i);\r\n \r\n if (_ret2 === 'continue') continue;\r\n }\r\n \r\n return addedStickies;\r\n },\r\n refreshAll: function refreshAll() {\r\n stickies.forEach(function (sticky) {\r\n return sticky.refresh();\r\n });\r\n },\r\n removeOne: function removeOne(node) {\r\n // Check whether it’s a node\r\n if (!(node instanceof HTMLElement)) {\r\n // Maybe it’s a node list of some sort?\r\n // Take first node from the list then\r\n if (node.length && node[0]) node = node[0];else return;\r\n }\r\n \r\n // Remove the stickies bound to the nodes in the list\r\n stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n sticky.remove();\r\n return true;\r\n }\r\n });\r\n },\r\n remove: function remove(nodeList) {\r\n // If it’s a node make an array of one node\r\n if (nodeList instanceof HTMLElement) nodeList = [nodeList];\r\n // Check if the argument is an iterable of some sort\r\n if (!nodeList.length) return;\r\n \r\n // Remove the stickies bound to the nodes in the list\r\n \r\n var _loop2 = function _loop2(i) {\r\n var node = nodeList[i];\r\n \r\n stickies.some(function (sticky) {\r\n if (sticky._node === node) {\r\n sticky.remove();\r\n return true;\r\n }\r\n });\r\n };\r\n \r\n for (var i = 0; i < nodeList.length; i++) {\r\n _loop2(i);\r\n }\r\n },\r\n removeAll: function removeAll() {\r\n while (stickies.length) {\r\n stickies[0].remove();\r\n }\r\n }\r\n };\r\n \r\n /*\r\n * 6. Setup events (unless the polyfill was disabled)\r\n */\r\n function init() {\r\n // Watch for scroll position changes and trigger recalc/refresh if needed\r\n function checkScroll() {\r\n if (window.pageXOffset != scroll.left) {\r\n scroll.top = window.pageYOffset;\r\n scroll.left = window.pageXOffset;\r\n \r\n Stickyfill.refreshAll();\r\n } else if (window.pageYOffset != scroll.top) {\r\n scroll.top = window.pageYOffset;\r\n scroll.left = window.pageXOffset;\r\n \r\n // recalc position for all stickies\r\n stickies.forEach(function (sticky) {\r\n return sticky._recalcPosition();\r\n });\r\n }\r\n }\r\n \r\n checkScroll();\r\n window.addEventListener('scroll', checkScroll);\r\n \r\n // Watch for window resizes and device orientation cahnges and trigger refresh\r\n window.addEventListener('resize', Stickyfill.refreshAll);\r\n window.addEventListener('orientationchange', Stickyfill.refreshAll);\r\n \r\n //Fast dirty check for layout changes every 500ms\r\n var fastCheckTimer = void 0;\r\n \r\n function startFastCheckTimer() {\r\n fastCheckTimer = setInterval(function () {\r\n stickies.forEach(function (sticky) {\r\n return sticky._fastCheck();\r\n });\r\n }, 500);\r\n }\r\n \r\n function stopFastCheckTimer() {\r\n clearInterval(fastCheckTimer);\r\n }\r\n \r\n var docHiddenKey = void 0;\r\n var visibilityChangeEventName = void 0;\r\n \r\n if ('hidden' in document) {\r\n docHiddenKey = 'hidden';\r\n visibilityChangeEventName = 'visibilitychange';\r\n } else if ('webkitHidden' in document) {\r\n docHiddenKey = 'webkitHidden';\r\n visibilityChangeEventName = 'webkitvisibilitychange';\r\n }\r\n \r\n if (visibilityChangeEventName) {\r\n if (!document[docHiddenKey]) startFastCheckTimer();\r\n \r\n document.addEventListener(visibilityChangeEventName, function () {\r\n if (document[docHiddenKey]) {\r\n stopFastCheckTimer();\r\n } else {\r\n startFastCheckTimer();\r\n }\r\n });\r\n } else startFastCheckTimer();\r\n }\r\n \r\n if (!seppuku) init();\r\n \r\n /*\r\n * 7. Expose Stickyfill\r\n */\r\n if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Stickyfill;\r\n } else {\r\n window.Stickyfill = Stickyfill;\r\n }\r\n \r\n})(window, document);\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/stickyfilljs/dist/stickyfill.js\n// module id = 21\n// module chunks = 0","/*! smooth-scroll v12.1.5 | (c) 2017 Chris Ferdinandi | MIT License | http://github.com/cferdinandi/smooth-scroll */\n!(function(e,t){\"function\"==typeof define&&define.amd?define([],(function(){return t(e)})):\"object\"==typeof exports?module.exports=t(e):e.SmoothScroll=t(e)})(\"undefined\"!=typeof global?global:\"undefined\"!=typeof window?window:this,(function(e){\"use strict\";var t=\"querySelector\"in document&&\"addEventListener\"in e&&\"requestAnimationFrame\"in e&&\"closest\"in e.Element.prototype,n={ignore:\"[data-scroll-ignore]\",header:null,speed:500,offset:0,easing:\"easeInOutCubic\",customEasing:null,before:function(){},after:function(){}},o=function(){for(var e={},t=0,n=arguments.length;t=1&&t<=31||127==t||0===a&&t>=48&&t<=57||1===a&&t>=48&&t<=57&&45===i?r+=\"\\\\\"+t.toString(16)+\" \":r+=t>=128||45===t||95===t||t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122?n.charAt(a):\"\\\\\"+n.charAt(a)}return\"#\"+r},i=function(e,t){var n;return\"easeInQuad\"===e.easing&&(n=t*t),\"easeOutQuad\"===e.easing&&(n=t*(2-t)),\"easeInOutQuad\"===e.easing&&(n=t<.5?2*t*t:(4-2*t)*t-1),\"easeInCubic\"===e.easing&&(n=t*t*t),\"easeOutCubic\"===e.easing&&(n=--t*t*t+1),\"easeInOutCubic\"===e.easing&&(n=t<.5?4*t*t*t:(t-1)*(2*t-2)*(2*t-2)+1),\"easeInQuart\"===e.easing&&(n=t*t*t*t),\"easeOutQuart\"===e.easing&&(n=1- --t*t*t*t),\"easeInOutQuart\"===e.easing&&(n=t<.5?8*t*t*t*t:1-8*--t*t*t*t),\"easeInQuint\"===e.easing&&(n=t*t*t*t*t),\"easeOutQuint\"===e.easing&&(n=1+--t*t*t*t*t),\"easeInOutQuint\"===e.easing&&(n=t<.5?16*t*t*t*t*t:1+16*--t*t*t*t*t),e.customEasing&&(n=e.customEasing(t)),n||t},u=function(){return Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},c=function(e,t,n){var o=0;if(e.offsetParent)do{o+=e.offsetTop,e=e.offsetParent}while(e);return o=Math.max(o-t-n,0)},s=function(e){return e?a(e)+e.offsetTop:0},l=function(t,n,o){o||(t.focus(),document.activeElement.id!==t.id&&(t.setAttribute(\"tabindex\",\"-1\"),t.focus(),t.style.outline=\"none\"),e.scrollTo(0,n))},f=function(t){return!!(\"matchMedia\"in e&&e.matchMedia(\"(prefers-reduced-motion)\").matches)};return function(a,d){var m,h,g,p,v,b,y,S={};S.cancelScroll=function(){cancelAnimationFrame(y)},S.animateScroll=function(t,a,r){var f=o(m||n,r||{}),d=\"[object Number]\"===Object.prototype.toString.call(t),h=d||!t.tagName?null:t;if(d||h){var g=e.pageYOffset;f.header&&!p&&(p=document.querySelector(f.header)),v||(v=s(p));var b,y,E,I=d?t:c(h,v,parseInt(\"function\"==typeof f.offset?f.offset():f.offset,10)),O=I-g,A=u(),C=0,w=function(n,o){var r=e.pageYOffset;if(n==o||r==o||(g=A)return S.cancelScroll(),l(t,o,d),f.after(t,a),b=null,!0},Q=function(t){b||(b=t),C+=t-b,y=C/parseInt(f.speed,10),y=y>1?1:y,E=g+O*i(f,y),e.scrollTo(0,Math.floor(E)),w(E,I)||(e.requestAnimationFrame(Q),b=t)};0===e.pageYOffset&&e.scrollTo(0,0),f.before(t,a),S.cancelScroll(),e.requestAnimationFrame(Q)}};var E=function(e){h&&(h.id=h.getAttribute(\"data-scroll-id\"),S.animateScroll(h,g),h=null,g=null)},I=function(t){if(!f()&&0===t.button&&!t.metaKey&&!t.ctrlKey&&(g=t.target.closest(a))&&\"a\"===g.tagName.toLowerCase()&&!t.target.closest(m.ignore)&&g.hostname===e.location.hostname&&g.pathname===e.location.pathname&&/#/.test(g.href)){var n;try{n=r(decodeURIComponent(g.hash))}catch(e){n=r(g.hash)}if(\"#\"===n){t.preventDefault(),h=document.body;var o=h.id?h.id:\"smooth-scroll-top\";return h.setAttribute(\"data-scroll-id\",o),h.id=\"\",void(e.location.hash.substring(1)===o?E():e.location.hash=o)}h=document.querySelector(n),h&&(h.setAttribute(\"data-scroll-id\",h.id),h.id=\"\",g.hash===e.location.hash&&(t.preventDefault(),E()))}},O=function(e){b||(b=setTimeout((function(){b=null,v=s(p)}),66))};return S.destroy=function(){m&&(document.removeEventListener(\"click\",I,!1),e.removeEventListener(\"resize\",O,!1),S.cancelScroll(),m=null,h=null,g=null,p=null,v=null,b=null,y=null)},S.init=function(a){t&&(S.destroy(),m=o(n,a||{}),p=m.header?document.querySelector(m.header):null,v=s(p),document.addEventListener(\"click\",I,!1),e.addEventListener(\"hashchange\",E,!1),p&&e.addEventListener(\"resize\",O,!1))},S.init(d),S}}));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/smooth-scroll/dist/js/smooth-scroll.min.js\n// module id = 22\n// module chunks = 0","(window as any).onYouTubeIframeAPIReady = function () {\n const ytElement = document.getElementById(\"heroYoutube\");\n\n if (ytElement) {\n const videoId = ytElement.getAttribute(\"data-youtube-id\");\n\n var player = new YT.Player('heroYoutube', {\n //video id and playlist id will come from Episerver Youtube field\n videoId: videoId, //UBqAJJRMerM - venue YouTube Video ID // Player height (in px)\n playerVars: {\n autoplay: 1, // Auto-play the video on load\n controls: 0, // Hide buttons in player\n showinfo: 0, // Hide the video title\n rel: 0,\n modestbranding: 1, // Hide the Youtube Logo\n loop: 1, // Run the video in a loop\n fs: 0, // Hide the full screen button \n iv_load_policy: 3, // Hide the Video Annotations\n autohide: 0, // Hide video controls when playing\n playlist: videoId\n },\n events: {\n onReady: function (e) {\n e.target.mute();\n }\n }\n });\n }\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/youtube-hero.ts","import axios, { AxiosResponse } from 'axios';\nimport { nearestTagName } from './nearest-parent';\n\nexport class CurriculumDownload {\n private selectAllCheckbox: HTMLInputElement;\n private selectAllResourcesCheckbox: HTMLInputElement;\n private sections: HTMLCollectionOf;\n private images: HTMLCollectionOf;\n private downloadButton: HTMLButtonElement;\n private form: HTMLFormElement;\n private unique: HTMLInputElement;\n\n constructor() {\n this.selectAllCheckbox = document.getElementById(\"allSections\") as HTMLInputElement;\n this.selectAllResourcesCheckbox = document.getElementById(\"allResources\") as HTMLInputElement;\n this.sections = document.getElementsByClassName(\"curriculum-section-js\") as HTMLCollectionOf;\n this.images = document.getElementsByClassName(\"curriculum-image-js\") as HTMLCollectionOf;\n this.downloadButton = document.getElementsByClassName(\"btn-curriculum-download-js\")[0] as HTMLButtonElement;\n this.form = nearestTagName(this.downloadButton, \"form\") as HTMLFormElement;\n this.unique = document.getElementById(\"unique\") as HTMLInputElement;\n\n this.disableDownload();\n }\n\n private iterateSections(func: (section: HTMLInputElement) => any) {\n for (let i = 0; i < this.sections.length; ++i) {\n func(this.sections[i]);\n }\n }\n\n private iterateImages(func: (section: HTMLInputElement) => any) {\n for (let i = 0; i < this.images.length; ++i) {\n func(this.images[i]);\n }\n }\n\n private iterateCheckboxes(func: (section: HTMLInputElement) => any) {\n this.iterateSections(func);\n this.iterateImages(func);\n }\n\n setupListeners() {\n if (this.selectAllCheckbox != null) {\n this.selectAllCheckbox.addEventListener(\"change\", event => {\n this.checkAllSections(this.selectAllCheckbox.checked);\n this.checkDownloadButton();\n });\n }\n\n if (this.selectAllResourcesCheckbox != null) {\n this.selectAllResourcesCheckbox.addEventListener(\"change\", event => {\n this.checkAllResources(this.selectAllResourcesCheckbox.checked);\n this.checkDownloadButton();\n });\n }\n\n this.iterateCheckboxes(section => {\n if (section != null) {\n section.addEventListener(\"change\", event => {\n this.checkDownloadButton();\n });\n }\n });\n\n if (this.downloadButton != null) {\n this.downloadButton.addEventListener(\"click\", (evt: MouseEvent) => {\n this.submitDownloadRequest();\n });\n }\n }\n\n submitDownloadRequest() {\n\n this.disableDownload();\n this.downloadButton.innerText = \"Downloading...\";\n // We don't really care about the result, if it returns something, disable the download button.\n axios.get(`/umbraco/Surface/DownloadCurriculumSurface/CheckPdf?pageId=${this.downloadButton.getAttribute(\"data-page-id\")}&unique=${this.unique.getAttribute(\"value\")}`, { withCredentials: true }).then(() => {\n this.enableDownload();\n this.downloadButton.innerText = \"Download\";\n }).catch(() => {\n this.enableDownload();\n this.downloadButton.innerText = \"Download\";\n });\n this.form.submit();\n }\n\n checkAllSections(to: boolean) {\n this.iterateSections(section => {\n section.checked = to;\n });\n }\n\n checkAllResources(to: boolean) {\n this.iterateImages(section => {\n section.checked = to;\n });\n }\n\n checkDownloadButton() {\n let canDownload = false;\n\n this.iterateCheckboxes(section => {\n if (section.checked) {\n canDownload = true;\n }\n });\n\n if (canDownload)\n this.enableDownload();\n else\n this.disableDownload();\n }\n \n disableDownload() {\n if (this.downloadButton != null) {\n if (!this.downloadButton.getAttribute(\"disabled\"))\n this.downloadButton.setAttribute(\"disabled\", \"disabled\");\n }\n }\n\n enableDownload() {\n if (this.downloadButton != null) {\n if (this.downloadButton.getAttribute(\"disabled\"))\n this.downloadButton.removeAttribute(\"disabled\");\n }\n }\n}\n\nvar checkboxes = new CurriculumDownload();\ncheckboxes.setupListeners();\n\nexport default checkboxes;\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/curriculum-download.ts","module.exports = require('./lib/axios');\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/index.js\n// module id = 25\n// module chunks = 0","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(utils.merge(defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/axios.js\n// module id = 26\n// module chunks = 0","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer)\n}\n\nfunction isBuffer (obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)\n}\n\n// For Node v0.10 support. Remove this eventually.\nfunction isSlowBuffer (obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0))\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/is-buffer/index.js\n// module id = 27\n// module chunks = 0","'use strict';\n\nvar defaults = require('./../defaults');\nvar utils = require('./../utils');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = utils.merge({\n url: arguments[0]\n }, arguments[1]);\n }\n\n config = utils.merge(defaults, this.defaults, { method: 'get' }, config);\n config.method = config.method.toLowerCase();\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/Axios.js\n// module id = 28\n// module chunks = 0","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 29\n// module chunks = 0","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/normalizeHeaderName.js\n// module id = 30\n// module chunks = 0","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n // Note: status is not exposed by XDomainRequest\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/settle.js\n// module id = 31\n// module chunks = 0","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n return error;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/enhanceError.js\n// module id = 32\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n }\n\n if (!utils.isArray(val)) {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/buildURL.js\n// module id = 33\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/parseHeaders.js\n// module id = 34\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/isURLSameOrigin.js\n// module id = 35\n// module chunks = 0","'use strict';\n\n// btoa polyfill for IE<10 courtesy https://github.com/davidchambers/Base64.js\n\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nfunction E() {\n this.message = 'String contains an invalid character';\n}\nE.prototype = new Error;\nE.prototype.code = 5;\nE.prototype.name = 'InvalidCharacterError';\n\nfunction btoa(input) {\n var str = String(input);\n var output = '';\n for (\n // initialize result and counter\n var block, charCode, idx = 0, map = chars;\n // if the next str index does not exist:\n // change the mapping table to \"=\"\n // check if d has no fractional digits\n str.charAt(idx | 0) || (map = '=', idx % 1);\n // \"8 - idx % 1 * 8\" generates the sequence 2, 4, 6, 8\n output += map.charAt(63 & block >> 8 - idx % 1 * 8)\n ) {\n charCode = str.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new E();\n }\n block = block << 8 | charCode;\n }\n return output;\n}\n\nmodule.exports = btoa;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/btoa.js\n// module id = 36\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/cookies.js\n// module id = 37\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/InterceptorManager.js\n// module id = 38\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar isAbsoluteURL = require('./../helpers/isAbsoluteURL');\nvar combineURLs = require('./../helpers/combineURLs');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Support baseURL config\n if (config.baseURL && !isAbsoluteURL(config.url)) {\n config.url = combineURLs(config.baseURL, config.url);\n }\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers || {}\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/dispatchRequest.js\n// module id = 39\n// module chunks = 0","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/core/transformData.js\n// module id = 40\n// module chunks = 0","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/isAbsoluteURL.js\n// module id = 41\n// module chunks = 0","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/combineURLs.js\n// module id = 42\n// module chunks = 0","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/cancel/CancelToken.js\n// module id = 43\n// module chunks = 0","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/axios/lib/helpers/spread.js\n// module id = 44\n// module chunks = 0","export default function nearestParent(el: HTMLElement, className: string) {\n while (el && !el.classList.contains(className))\n el = el.parentElement\n\n return el;\n}\n\nexport function nearestTagName(el: HTMLElement, tagName: string) {\n while (el && el.tagName.toLowerCase() !== tagName.toLowerCase())\n el = el.parentElement\n\n return el;\n}\n\n\n// WEBPACK FOOTER //\n// ./node_modules/source-map-loader!./Static/javascript/modules/nearest-parent.ts","/* global NodeList, Element, define */\n\n(function (global) {\n 'use strict';\n\n var FOCUSABLE_ELEMENTS = ['a[href]', 'area[href]', 'input:not([disabled])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'iframe', 'object', 'embed', '[contenteditable]', '[tabindex]:not([tabindex^=\"-\"])'];\n var TAB_KEY = 9;\n var ESCAPE_KEY = 27;\n var focusedBeforeDialog;\n\n /**\n * Define the constructor to instantiate a dialog\n *\n * @constructor\n * @param {Element} node\n * @param {(NodeList | Element | string)} targets\n */\n function A11yDialog (node, targets) {\n // Prebind the functions that will be bound in addEventListener and\n // removeEventListener to avoid losing references\n this._show = this.show.bind(this);\n this._hide = this.hide.bind(this);\n this._maintainFocus = this._maintainFocus.bind(this);\n this._bindKeypress = this._bindKeypress.bind(this);\n\n // Keep a reference of the node on the instance\n this.node = node;\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n // Initialise everything needed for the dialog to work properly\n this.create(targets);\n }\n\n /**\n * Set up everything necessary for the dialog to be functioning\n *\n * @param {(NodeList | Element | string)} targets\n * @return {this}\n */\n A11yDialog.prototype.create = function (targets) {\n // Keep a collection of nodes to disable/enable when toggling the dialog\n this._targets = this._targets || collect(targets) || getSiblings(this.node);\n\n // Make sure the dialog element is disabled on load, and that the `shown`\n // property is synced with its value\n this.node.setAttribute('aria-hidden', true);\n this.shown = false;\n\n // Keep a collection of dialog openers, each of which will be bound a click\n // event listener to open the dialog\n this._openers = $$('[data-a11y-dialog-show=\"' + this.node.id + '\"]');\n this._openers.forEach(function (opener) {\n opener.addEventListener('click', this._show);\n }.bind(this));\n\n // Keep a collection of dialog closers, each of which will be bound a click\n // event listener to close the dialog\n this._closers = $$('[data-a11y-dialog-hide]', this.node)\n .concat($$('[data-a11y-dialog-hide=\"' + this.node.id + '\"]'));\n this._closers.forEach(function (closer) {\n closer.addEventListener('click', this._hide);\n }.bind(this));\n\n // Execute all callbacks registered for the `create` event\n this._fire('create');\n\n return this;\n };\n\n /**\n * Show the dialog element, disable all the targets (siblings), trap the\n * current focus within it, listen for some specific key presses and fire all\n * registered callbacks for `show` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.show = function (event) {\n // If the dialog is already open, abort\n if (this.shown) {\n return this;\n }\n\n this.shown = true;\n this.node.removeAttribute('aria-hidden');\n\n // Iterate over the targets to disable them by setting their `aria-hidden`\n // attribute to `true`; in case they already have this attribute, keep a\n // reference of their original value to be able to restore it later\n this._targets.forEach(function (target) {\n var original = target.getAttribute('aria-hidden');\n\n if (original) {\n target.setAttribute('data-a11y-dialog-original', original);\n }\n\n target.setAttribute('aria-hidden', 'true');\n });\n\n // Keep a reference to the currently focused element to be able to restore\n // it later, then set the focus to the first focusable child of the dialog\n // element\n focusedBeforeDialog = document.activeElement;\n setFocusToFirstItem(this.node);\n\n // Bind a focus event listener to the body element to make sure the focus\n // stays trapped inside the dialog while open, and start listening for some\n // specific key presses (TAB and ESC)\n document.body.addEventListener('focus', this._maintainFocus, true);\n document.addEventListener('keydown', this._bindKeypress);\n\n // Execute all callbacks registered for the `show` event\n this._fire('show', event);\n\n return this;\n };\n\n /**\n * Hide the dialog element, enable all the targets (siblings), restore the\n * focus to the previously active element, stop listening for some specific\n * key presses and fire all registered callbacks for `hide` event\n *\n * @param {Event} event\n * @return {this}\n */\n A11yDialog.prototype.hide = function (event) {\n // If the dialog is already closed, abort\n if (!this.shown) {\n return this;\n }\n\n this.shown = false;\n this.node.setAttribute('aria-hidden', 'true');\n\n // Iterate over the targets to enable them by remove their `aria-hidden`\n // attribute or resetting them to their initial value\n this._targets.forEach(function (target) {\n var original = target.getAttribute('data-a11y-dialog-original');\n\n if (original) {\n target.setAttribute('aria-hidden', original);\n target.removeAttribute('data-a11y-dialog-original');\n } else {\n target.removeAttribute('aria-hidden');\n }\n });\n\n // If their was a focused element before the dialog was opened, restore the\n // focus back to it\n if (focusedBeforeDialog) {\n focusedBeforeDialog.focus();\n }\n\n // Remove the focus event listener to the body element and stop listening\n // for specific key presses\n document.body.removeEventListener('focus', this._maintainFocus, true);\n document.removeEventListener('keydown', this._bindKeypress);\n\n // Execute all callbacks registered for the `hide` event\n this._fire('hide', event);\n\n return this;\n };\n\n /**\n * Destroy the current instance (after making sure the dialog has been hidden)\n * and remove all associated listeners from dialog openers and closers\n *\n * @return {this}\n */\n A11yDialog.prototype.destroy = function () {\n // Hide the dialog to avoid destroying an open instance\n this.hide();\n\n // Remove the click event listener from all dialog openers\n this._openers.forEach(function (opener) {\n opener.removeEventListener('click', this._show);\n }.bind(this));\n\n // Remove the click event listener from all dialog closers\n this._closers.forEach(function (closer) {\n closer.removeEventListener('click', this._hide);\n }.bind(this));\n\n // Execute all callbacks registered for the `destroy` event\n this._fire('destroy');\n\n // Keep an object of listener types mapped to callback functions\n this._listeners = {};\n\n return this;\n };\n\n /**\n * Register a new callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.on = function (type, handler) {\n if (typeof this._listeners[type] === 'undefined') {\n this._listeners[type] = [];\n }\n\n this._listeners[type].push(handler);\n\n return this;\n };\n\n /**\n * Unregister an existing callback for the given event type\n *\n * @param {string} type\n * @param {Function} handler\n */\n A11yDialog.prototype.off = function (type, handler) {\n var index = this._listeners[type].indexOf(handler);\n\n if (index > -1) {\n this._listeners[type].splice(index, 1);\n }\n\n return this;\n };\n\n /**\n * Iterate over all registered handlers for given type and call them all with\n * the dialog element as first argument, event as second argument (if any).\n *\n * @access private\n * @param {string} type\n * @param {Event} event\n */\n A11yDialog.prototype._fire = function (type, event) {\n var listeners = this._listeners[type] || [];\n\n listeners.forEach(function (listener) {\n listener(this.node, event);\n }.bind(this));\n };\n\n /**\n * Private event handler used when listening to some specific key presses\n * (namely ESCAPE and TAB)\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._bindKeypress = function (event) {\n // If the dialog is shown and the ESCAPE key is being pressed, prevent any\n // further effects from the ESCAPE key and hide the dialog\n if (this.shown && event.which === ESCAPE_KEY) {\n event.preventDefault();\n this.hide();\n }\n\n // If the dialog is shown and the TAB key is being pressed, make sure the\n // focus stays trapped within the dialog element\n if (this.shown && event.which === TAB_KEY) {\n trapTabKey(this.node, event);\n }\n };\n\n /**\n * Private event handler used when making sure the focus stays within the\n * currently open dialog\n *\n * @access private\n * @param {Event} event\n */\n A11yDialog.prototype._maintainFocus = function (event) {\n // If the dialog is shown and the focus is not within the dialog element,\n // move it back to its first focusable child\n if (this.shown && !this.node.contains(event.target)) {\n setFocusToFirstItem(this.node);\n }\n };\n\n /**\n * Convert a NodeList into an array\n *\n * @param {NodeList} collection\n * @return {Array}\n */\n function toArray (collection) {\n return Array.prototype.slice.call(collection);\n }\n\n /**\n * Query the DOM for nodes matching the given selector, scoped to context (or\n * the whole document)\n *\n * @param {String} selector\n * @param {Element} [context = document]\n * @return {Array}\n */\n function $$ (selector, context) {\n return toArray((context || document).querySelectorAll(selector));\n }\n\n /**\n * Return an array of Element based on given argument (NodeList, Element or\n * string representing a selector)\n *\n * @param {(NodeList | Element | string)} target\n * @return {Array}\n */\n function collect (target) {\n if (NodeList.prototype.isPrototypeOf(target)) {\n return toArray(target);\n }\n\n if (Element.prototype.isPrototypeOf(target)) {\n return [target];\n }\n\n if (typeof target === 'string') {\n return $$(target);\n }\n }\n\n /**\n * Set the focus to the first focusable child of the given element\n *\n * @param {Element} node\n */\n function setFocusToFirstItem (node) {\n var focusableChildren = getFocusableChildren(node);\n\n if (focusableChildren.length) {\n focusableChildren[0].focus();\n }\n }\n\n /**\n * Get the focusable children of the given element\n *\n * @param {Element} node\n * @return {Array}\n */\n function getFocusableChildren (node) {\n return $$(FOCUSABLE_ELEMENTS.join(','), node).filter(function (child) {\n return !!(child.offsetWidth || child.offsetHeight || child.getClientRects().length);\n });\n }\n\n /**\n * Trap the focus inside the given element\n *\n * @param {Element} node\n * @param {Event} event\n */\n function trapTabKey (node, event) {\n var focusableChildren = getFocusableChildren(node);\n var focusedItemIndex = focusableChildren.indexOf(document.activeElement);\n\n // If the SHIFT key is being pressed while tabbing (moving backwards) and\n // the currently focused item is the first one, move the focus to the last\n // focusable item from the dialog element\n if (event.shiftKey && focusedItemIndex === 0) {\n focusableChildren[focusableChildren.length - 1].focus();\n event.preventDefault();\n // If the SHIFT key is not being pressed (moving forwards) and the currently\n // focused item is the last one, move the focus to the first focusable item\n // from the dialog element\n } else if (!event.shiftKey && focusedItemIndex === focusableChildren.length - 1) {\n focusableChildren[0].focus();\n event.preventDefault();\n }\n }\n\n /**\n * Retrieve siblings from given element\n *\n * @param {Element} node\n * @return {Array}\n */\n function getSiblings (node) {\n var nodes = toArray(node.parentNode.childNodes);\n var siblings = nodes.filter(function (node) {\n return node.nodeType === 1;\n });\n\n siblings.splice(siblings.indexOf(node), 1);\n\n return siblings;\n }\n\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = A11yDialog;\n } else if (typeof define === 'function' && define.amd) {\n define('A11yDialog', [], function () {\n return A11yDialog;\n });\n } else if (typeof global === 'object') {\n global.A11yDialog = A11yDialog;\n }\n}(typeof global !== 'undefined' ? global : window));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/a11y-dialog/a11y-dialog.js\n// module id = 46\n// module chunks = 0"],"sourceRoot":""}